From 9a17f2141ba461d05fb3eb541dc924cd0c04442c Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Wed, 7 Apr 2021 22:21:37 +0200 Subject: [PATCH] Add lock for Gameplay Globals access --- Source/Engine/Engine/GameplayGlobals.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/Source/Engine/Engine/GameplayGlobals.cpp b/Source/Engine/Engine/GameplayGlobals.cpp index e8e08444f..f945832cc 100644 --- a/Source/Engine/Engine/GameplayGlobals.cpp +++ b/Source/Engine/Engine/GameplayGlobals.cpp @@ -59,6 +59,7 @@ GameplayGlobals::GameplayGlobals(const SpawnParams& params, const AssetInfo* inf Dictionary GameplayGlobals::GetValues() const { + ScopeLock lock(Locker); Dictionary result; for (auto& e : Variables) result.Add(e.Key, e.Value.Value); @@ -67,7 +68,8 @@ Dictionary GameplayGlobals::GetValues() const void GameplayGlobals::SetValues(const Dictionary& values) { - for (auto& e : Variables) + ScopeLock lock(Locker); + for (auto& e : values) { bool hasKey = false; for (auto& q : values) @@ -97,6 +99,7 @@ void GameplayGlobals::SetValues(const Dictionary& values) Dictionary GameplayGlobals::GetDefaultValues() const { + ScopeLock lock(Locker); Dictionary result; for (auto& e : Variables) result.Add(e.Key, e.Value.DefaultValue); @@ -105,7 +108,8 @@ Dictionary GameplayGlobals::GetDefaultValues() const void GameplayGlobals::SetDefaultValues(const Dictionary& values) { - for (auto& e : Variables) + ScopeLock lock(Locker); + for (auto& e : values) { bool hasKey = false; for (auto& q : values) @@ -135,12 +139,14 @@ void GameplayGlobals::SetDefaultValues(const Dictionary& values Variant GameplayGlobals::GetValue(const StringView& name) const { + ScopeLock lock(Locker); auto e = Variables.TryGet(name); return e ? e->Value : Variant::Zero; } void GameplayGlobals::SetValue(const StringView& name, const Variant& value) { + ScopeLock lock(Locker); auto e = Variables.TryGet(name); if (e) { @@ -150,6 +156,7 @@ void GameplayGlobals::SetValue(const StringView& name, const Variant& value) void GameplayGlobals::ResetValues() { + ScopeLock lock(Locker); for (auto& e : Variables) { e.Value.Value = e.Value.DefaultValue;