diff --git a/Source/Engine/Level/Level.cpp b/Source/Engine/Level/Level.cpp index a95b8070f..5f1432d31 100644 --- a/Source/Engine/Level/Level.cpp +++ b/Source/Engine/Level/Level.cpp @@ -1064,6 +1064,7 @@ bool Level::loadScene(rapidjson_flax::Value& data, int32 engineBuild, Scene** ou } } } + prefabSyncData.InitNewObjects(); } // /\ all above this has to be done on an any thread diff --git a/Source/Engine/Level/SceneObjectsFactory.cpp b/Source/Engine/Level/SceneObjectsFactory.cpp index a46edf070..985da6c29 100644 --- a/Source/Engine/Level/SceneObjectsFactory.cpp +++ b/Source/Engine/Level/SceneObjectsFactory.cpp @@ -403,6 +403,15 @@ SceneObjectsFactory::PrefabSyncData::PrefabSyncData(Array& sceneOb { } +void SceneObjectsFactory::PrefabSyncData::InitNewObjects() +{ + for (int32 i = 0; i < NewObjects.Count(); i++) + { + SceneObject* obj = SceneObjects[InitialCount + i]; + obj->Initialize(); + } +} + void SceneObjectsFactory::SetupPrefabInstances(Context& context, const PrefabSyncData& data) { PROFILE_CPU_NAMED("SetupPrefabInstances"); diff --git a/Source/Engine/Level/SceneObjectsFactory.h b/Source/Engine/Level/SceneObjectsFactory.h index b1a9b8a9d..86fd5364a 100644 --- a/Source/Engine/Level/SceneObjectsFactory.h +++ b/Source/Engine/Level/SceneObjectsFactory.h @@ -78,6 +78,7 @@ public: ISerializeModifier* Modifier; PrefabSyncData(Array& sceneObjects, const ISerializable::DeserializeStream& data, ISerializeModifier* modifier); + void InitNewObjects(); private: struct NewObj