Ejemplo n.º 1
0
        private static void OnCompleteSceneLoad(OWScene oldScene, OWScene newScene)
        {
            DebugLog.DebugWrite($"COMPLETE SCENE LOAD ({oldScene} -> {newScene})", MessageType.Info);
            if (QSBCore.IsInMultiplayer)
            {
                WorldObjectManager.Rebuild(newScene);
            }
            var universe = InUniverse(newScene);

            OnSceneLoaded?.SafeInvoke(newScene, universe);
            if (universe)
            {
                OnUniverseSceneLoaded?.SafeInvoke(newScene);
            }
        }
        private static void OnCompleteSceneLoad(OWScene oldScene, OWScene newScene)
        {
            DebugLog.DebugWrite($"COMPLETE SCENE LOAD ({oldScene} -> {newScene})", MessageType.Info);
            QSBWorldSync.RemoveWorldObjects();
            var universe = InUniverse(newScene);

            if (QSBCore.IsInMultiplayer && universe)
            {
                // So objects have time to be deleted, made, whatever
                Delay.RunNextFrame(() => QSBWorldSync.BuildWorldObjects(newScene).Forget());
            }

            OnSceneLoaded?.SafeInvoke(oldScene, newScene, universe);
            if (universe)
            {
                OnUniverseSceneLoaded?.SafeInvoke(oldScene, newScene);
            }

            if (newScene == OWScene.TitleScreen && QSBCore.IsInMultiplayer)
            {
                QSBNetworkManager.singleton.StopHost();
            }
        }