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;