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;