diff --git a/QSB/QSBSceneManager.cs b/QSB/QSBSceneManager.cs index 57209b3d..4e573846 100644 --- a/QSB/QSBSceneManager.cs +++ b/QSB/QSBSceneManager.cs @@ -18,13 +18,13 @@ public static class QSBSceneManager public static event Action OnUniverseSceneLoaded; /// - /// runs before the scene is changed - /// and objects are destroyed + /// runs before the scene is changed. + /// happens before OnDestroy. /// public static event LoadManager.SceneLoadEvent OnPreSceneLoad; /// - /// runs after the scene has changewd - /// and objects are awakened and started + /// runs after the scene is changed. + /// happens after Awake, but before Start. /// public static event LoadManager.SceneLoadEvent OnPostSceneLoad; @@ -38,11 +38,10 @@ public static class QSBSceneManager OnPreSceneLoad?.SafeInvoke(originalScene, loadScene); }; LoadManager.OnCompleteSceneLoad += (originalScene, loadScene) => - Delay.RunNextFrame(() => - { - DebugLog.DebugWrite($"POST SCENE LOAD ({originalScene} -> {loadScene})", MessageType.Info); - OnPostSceneLoad?.SafeInvoke(originalScene, loadScene); - }); + { + DebugLog.DebugWrite($"POST SCENE LOAD ({originalScene} -> {loadScene})", MessageType.Info); + OnPostSceneLoad?.SafeInvoke(originalScene, loadScene); + }; DebugLog.DebugWrite("Scene Manager ready.", MessageType.Success); } diff --git a/QSB/WorldSync/QSBWorldSync.cs b/QSB/WorldSync/QSBWorldSync.cs index 04976328..e8d06f73 100644 --- a/QSB/WorldSync/QSBWorldSync.cs +++ b/QSB/WorldSync/QSBWorldSync.cs @@ -187,7 +187,9 @@ public static class QSBWorldSync { if (QSBCore.IsInMultiplayer && loadScene.IsUniverseScene()) { - BuildWorldObjects(loadScene).Forget(); + // So objects have time to be deleted, made, whatever + // I.E. wait until Start has been called + Delay.RunNextFrame(() => BuildWorldObjects(loadScene).Forget()); } };