From 99c1eebe7007df3b6b0b8c1c5a2625cc6a031e79 Mon Sep 17 00:00:00 2001 From: Kah Wei Date: Mon, 27 Feb 2023 12:57:37 +0800 Subject: [PATCH] Fixed behaviour of script Awake() and Start() not getting called as intended (first frame that object is active) --- SHADE_Managed/src/Scripts/ScriptStore.cxx | 18 ++++++++++++------ SHADE_Managed/src/Scripts/ScriptStore.hxx | 1 + 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/SHADE_Managed/src/Scripts/ScriptStore.cxx b/SHADE_Managed/src/Scripts/ScriptStore.cxx index 62bfc383..aba63eb2 100644 --- a/SHADE_Managed/src/Scripts/ScriptStore.cxx +++ b/SHADE_Managed/src/Scripts/ScriptStore.cxx @@ -482,11 +482,20 @@ namespace SHADE { SAFE_NATIVE_CALL_BEGIN // Clear the awake queue - for each (Script^ script in awakeList) + for each (Script ^ script in awakeList) { - script->Awake(); + if (script->Owner.IsActiveInHierarchy) + { + script->Awake(); + } + else + { + inactiveAwakeList.Add(script); + } } awakeList.Clear(); + awakeList.UnionWith(%inactiveAwakeList); + inactiveAwakeList.Clear(); // Clear the start queue for each (Script^ script in startList) @@ -501,10 +510,7 @@ namespace SHADE } } startList.Clear(); - for each (Script ^ script in startList) - { - startList.Add(script); - } + startList.UnionWith(%inactiveStartList); inactiveStartList.Clear(); SAFE_NATIVE_CALL_END_N("SHADE_Managed.ScriptStore") diff --git a/SHADE_Managed/src/Scripts/ScriptStore.hxx b/SHADE_Managed/src/Scripts/ScriptStore.hxx index e59e3a7f..4734b474 100644 --- a/SHADE_Managed/src/Scripts/ScriptStore.hxx +++ b/SHADE_Managed/src/Scripts/ScriptStore.hxx @@ -353,6 +353,7 @@ namespace SHADE /*-----------------------------------------------------------------------------*/ static ScriptDictionary scripts; static ScriptSet awakeList; + static ScriptSet inactiveAwakeList; static ScriptSet startList; static ScriptSet inactiveStartList; static ScriptSet disposalQueue; -- 2.40.1