Refactor scene objects initialization to call OnAwake before all OnStart

#520
This commit is contained in:
Wojtek Figat
2022-07-17 17:05:59 +02:00
parent 9aff782907
commit 3239150a61
14 changed files with 59 additions and 114 deletions

View File

@@ -430,7 +430,7 @@ bool PrefabInstanceData::SynchronizePrefabInstances(Array<PrefabInstanceData>& p
for (int32 i = existingObjectsCount; i < sceneObjects->Count(); i++)
{
SceneObject* obj = sceneObjects.Value->At(i);
obj->PostLoad();
obj->Initialize();
}
// Synchronize existing objects logic with deserialized state (fire events)
@@ -470,8 +470,6 @@ bool PrefabInstanceData::SynchronizePrefabInstances(Array<PrefabInstanceData>& p
if (Script* script = dynamic_cast<Script*>(obj))
{
if (Editor::IsPlayMode || script->_executeInEditor)
script->OnAwake();
if (script->GetParent() && !script->_wasEnableCalled && script->GetParent()->IsActiveInHierarchy() && script->GetParent()->GetScene())
script->Enable();
}
@@ -1010,7 +1008,7 @@ bool Prefab::ApplyAllInternal(Actor* targetActor, bool linkTargetActorObjectToPr
auto obj = sceneObjects.Value->At(i);
if (obj)
{
obj->PostLoad();
obj->Initialize();
}
}