示例#1
0
        void OnSceneLoaded(OWScene originalScene, OWScene scene)
        {
            var isSolarSystem = scene == OWScene.SolarSystem;
            var isEye         = scene == OWScene.EyeOfTheUniverse;
            var isPostCredits = scene == OWScene.PostCreditsScene;

            // The GameObject associated with this ModBehaviour is set to persist between scene loads.
            // Some modules need to be restarted on every scene load.
            // This GameObject is for them.
            var nonPersistentObject = new GameObject();

            if (isSolarSystem || isEye)
            {
                Common.InitGame();
                nonPersistentObject.AddComponent <EffectFixes>();
                nonPersistentObject.AddComponent <PlayerBodyPosition>();
                nonPersistentObject.AddComponent <Dialogue>();
                nonPersistentObject.AddComponent <Hands>();
                nonPersistentObject.AddComponent <FeetMarker>();
                nonPersistentObject.AddComponent <InputPrompts>();
                nonPersistentObject.AddComponent <HelmetHUD>();
                //nonPersistentObject.AddComponent<VRTutorial>();
                if (isSolarSystem)
                {
                    nonPersistentObject.AddComponent <ShipTools>();
                    nonPersistentObject.AddComponent <SolarSystemMap>();
                }
            }
            else if (isPostCredits)
            {
                nonPersistentObject.AddComponent <PostCreditsScene>();
            }

            nonPersistentObject.AddComponent <Menus>();
        }
 private void OnSceneLoaded(OWScene oldScene, OWScene newScene, bool isInUniverse)
 {
     if (IsInitialized)
     {
         SafeUninit();
     }
 }
        public override async UniTask BuildWorldObjects(OWScene scene, CancellationToken ct)
        {
            // wait for all late initializers (which includes nomai text) to finish
            await UniTask.WaitUntil(() => LateInitializerManager.isDoneInitializing, cancellationToken : ct);

            QSBWorldSync.Init <QSBNomaiText, NomaiText>(typeof(GhostWallText));
        }
示例#4
0
 private void OnSceneLoad(OWScene originalScene, OWScene loadScene)
 {
     if (IsSceneRelevant(loadScene))
     {
         SetupBehaviour();
     }
 }
示例#5
0
 public static void Rebuild(OWScene scene)
 {
     foreach (var manager in _managers)
     {
         manager.RebuildWorldObjects(scene);
     }
 }
示例#6
0
 private void OnSceneLoaded(OWScene originalScene, OWScene scene)
 {
     if (scene == OWScene.SolarSystem || scene == OWScene.EyeOfTheUniverse)
     {
         _isSolarSystemLoaded = true;
         SpawnAtInitialPoint();
     }
 }
 public override async UniTask BuildWorldObjects(OWScene scene, CancellationToken ct)
 {
     QSBWorldSync.Init <QSBCharacterAnimController, CharacterAnimController>();
     QSBWorldSync.Init <QSBTravelerController, TravelerController>();
     QSBWorldSync.Init <QSBSolanumController, NomaiConversationManager>();
     QSBWorldSync.Init <QSBSolanumAnimController, SolanumAnimController>();
     QSBWorldSync.Init <QSBHearthianRecorderEffects, HearthianRecorderEffects>();
     QSBWorldSync.Init <QSBTravelerEyeController, TravelerEyeController>();
 }
示例#8
0
        private void OnUniverseSceneLoad(OWScene oldScene, OWScene newScene)
        {
            _isSetUp = true;
            var obj = QSBWorldSync.GetUnityObjects <SleepTimerUI>().First();

            _canvas         = obj._canvas;
            _text           = obj._text;
            _canvas.enabled = false;
        }
示例#9
0
        private void OnCompleteSceneLoad(OWScene oldScene, OWScene newScene)
        {
            var universe = newScene == OWScene.SolarSystem || newScene == OWScene.EyeOfTheUniverse;

            if (universe)
            {
                PlaceMarkers();
            }
        }
示例#10
0
        private void OnUniverseSceneLoad(OWScene scene)
        {
            _isSetUp = true;
            var obj = Resources.FindObjectsOfTypeAll <SleepTimerUI>()[0];

            _canvas         = obj.GetValue <Canvas>("_canvas");
            _text           = obj.GetValue <Text>("_text");
            _canvas.enabled = false;
        }
 public override async UniTask BuildWorldObjects(OWScene scene, CancellationToken ct)
 {
     QSBWorldSync.Init <QSBCharacterTrigger, CharacterAnimController>(x => x.playerTrackingZone);
     QSBWorldSync.Init <QSBSolanumTrigger, NomaiConversationManager>(x => x._watchPlayerVolume);
     QSBWorldSync.Init <QSBShrineTrigger, QuantumShrine>(x => x._triggerVolume);
     QSBWorldSync.Init <QSBVesselCageTrigger, VesselWarpController>(x => x._cageTrigger);
     QSBWorldSync.Init <QSBInflationTrigger, CosmicInflationController>(x => x._smokeSphereTrigger);
     QSBWorldSync.Init <QSBMaskZoneTrigger, MaskZoneController>(x => x._maskZoneTrigger);
     QSBWorldSync.Init <QSBEyeShuttleTrigger, EyeShuttleController>(x => x._shuttleVolume);
 }
        public override async UniTask BuildWorldObjects(OWScene scene, CancellationToken ct)
        {
            // wait for all late initializers (which includes meteor launchers) to finish
            await UniTask.WaitUntil(() => LateInitializerManager.isDoneInitializing, cancellationToken : ct);

            WhiteHoleVolume = QSBWorldSync.GetUnityObjects <WhiteHoleVolume>().First();
            QSBWorldSync.Init <QSBMeteorLauncher, MeteorLauncher>();
            QSBWorldSync.Init <QSBMeteor, MeteorController>();
            QSBWorldSync.Init <QSBFragment, FragmentIntegrity>();
        }
示例#13
0
 private void OnSceneLoaded(OWScene scene, bool isInUniverse)
 {
     _elevators = Resources.FindObjectsOfTypeAll <Elevator>().ToList();
     for (var id = 0; id < _elevators.Count; id++)
     {
         var qsbElevator = WorldRegistry.GetObject <QSBElevator>(id) ?? new QSBElevator();
         qsbElevator.Init(_elevators[id], id);
         WorldRegistry.AddObject(qsbElevator);
     }
 }
        private void OnSceneLoaded(OWScene scene, bool isInUniverse)
        {
            var geyserControllers = Resources.FindObjectsOfTypeAll <GeyserController>();

            for (var id = 0; id < geyserControllers.Length; id++)
            {
                var qsbGeyser = WorldRegistry.GetObject <QSBGeyser>(id) ?? new QSBGeyser();
                qsbGeyser.Init(geyserControllers[id], id);
                WorldRegistry.AddObject(qsbGeyser);
            }
        }
示例#15
0
 private void OnSceneLoaded(OWScene scene, bool isInUniverse)
 {
     if (isInUniverse)
     {
         Init();
     }
     else
     {
         _state = State.NotLoaded;
     }
 }
 private void OnSceneLoaded(OWScene scene, bool isInUniverse)
 {
     if (isInUniverse)
     {
         Init();
     }
     else
     {
         Reset();
     }
 }
 public override async UniTask BuildWorldObjects(OWScene scene, CancellationToken ct)
 {
     QSBWorldSync.Init <QSBProbeLauncher, ProbeLauncher>(typeof(PlayerProbeLauncher));
     if (scene == OWScene.SolarSystem)
     {
         QSBWorldSync.Init <QSBProbeLauncher, ProbeLauncher>(new[]
         {
             QSBWorldSync.GetUnityObjects <ShipCockpitController>().First().GetShipProbeLauncher()
         });
     }
 }
示例#18
0
        private void OnSceneLoaded(OWScene scene, bool isInUniverse)
        {
            var sectors = Resources.FindObjectsOfTypeAll <Sector>().ToList();

            for (var id = 0; id < sectors.Count; id++)
            {
                var qsbSector = WorldRegistry.GetObject <QSBSector>(id) ?? new QSBSector();
                qsbSector.Init(sectors[id], id);
                WorldRegistry.AddObject(qsbSector);
            }
            IsReady = WorldRegistry.GetObjects <QSBSector>().Any();
        }
示例#19
0
        private void OnSceneLoaded(OWScene oldScene, OWScene newScene)
        {
            if (newScene == OWScene.SolarSystem)
            {
                Projector = QSBWorldSync.GetUnityObjects <SatelliteSnapshotController>().First();
                Projector._loopingSource.spatialBlend = 1f;
                Projector._oneShotSource.spatialBlend = 1f;

                Projector._snapshotTexture = SatelliteCameraSnapshot;
                Projector._satelliteCamera.targetTexture = Projector._snapshotTexture;
            }
        }
示例#20
0
 protected override void RebuildWorldObjects(OWScene scene)
 {
     DebugLog.DebugWrite("Rebuilding OWItems...", MessageType.Warning);
     QSBWorldSync.Init <QSBScrollSocket, ScrollSocket>();
     QSBWorldSync.Init <QSBScrollItem, ScrollItem>();
     QSBWorldSync.Init <QSBSharedStoneSocket, SharedStoneSocket>();
     QSBWorldSync.Init <QSBSharedStone, SharedStone>();
     QSBWorldSync.Init <QSBWarpCoreSocket, WarpCoreSocket>();
     QSBWorldSync.Init <QSBWarpCoreItem, WarpCoreItem>();
     QSBWorldSync.Init <QSBNomaiConversationStoneSocket, NomaiConversationStoneSocket>();
     QSBWorldSync.Init <QSBNomaiConversationStone, NomaiConversationStone>();
 }
示例#21
0
 protected override void RebuildWorldObjects(OWScene scene)
 {
     foreach (var streaming in Resources.FindObjectsOfTypeAll <NomaiRemoteCameraStreaming>())
     {
         streaming.gameObject.AddComponent <CustomNomaiRemoteCameraStreaming>();
     }
     foreach (var camera in Resources.FindObjectsOfTypeAll <NomaiRemoteCamera>())
     {
         camera.gameObject.AddComponent <CustomNomaiRemoteCamera>();
     }
     foreach (var platform in Resources.FindObjectsOfTypeAll <NomaiRemoteCameraPlatform>())
     {
         platform.gameObject.AddComponent <CustomNomaiRemoteCameraPlatform>();
     }
 }
示例#22
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 void OnUniverseSceneLoaded(OWScene oldScene, OWScene newScene)
        {
            if (!QSBCore.IsInMultiplayer)
            {
                return;
            }

            if (PlayerTransformSync.LocalInstance == null)
            {
                DebugLog.ToConsole($"Error - Tried to run OnUniverseSceneLoaded when PlayerTransformSync.LocalInstance was null!", OWML.Common.MessageType.Error);
                return;
            }

            QSBPlayerManager.ShowAllPlayers();
            QSBPlayerManager.LocalPlayer.UpdateStatesFromObjects();
        }
 protected override void RebuildWorldObjects(OWScene scene)
 {
     DebugLog.DebugWrite("Rebuilding quantum objects...", MessageType.Warning);
     QSBWorldSync.Init <QSBQuantumState, QuantumState>();
     QSBWorldSync.Init <QSBSocketedQuantumObject, SocketedQuantumObject>();
     QSBWorldSync.Init <QSBMultiStateQuantumObject, MultiStateQuantumObject>();
     QSBWorldSync.Init <QSBQuantumSocket, QuantumSocket>();
     QSBWorldSync.Init <QSBQuantumShuffleObject, QuantumShuffleObject>();
     QSBWorldSync.Init <QSBQuantumMoon, QuantumMoon>();
     QSBWorldSync.Init <QSBEyeProxyQuantumMoon, EyeProxyQuantumMoon>();
     if (scene == OWScene.SolarSystem)
     {
         Shrine = Resources.FindObjectsOfTypeAll <QuantumShrine>().First();
     }
     IsReady = true;
 }
        private void OnSceneLoaded(OWScene oldScene, OWScene newScene, bool isInUniverse)
        {
            _hasWokenUp = false;
            if (isInUniverse)
            {
                if (newScene == OWScene.EyeOfTheUniverse)
                {
                    _hasWokenUp = true;
                }

                Init();
            }
            else
            {
                CurrentState = State.NotLoaded;
            }
        }
        public override async UniTask BuildWorldObjects(OWScene scene, CancellationToken ct)
        {
            foreach (var streaming in QSBWorldSync.GetUnityObjects <NomaiRemoteCameraStreaming>().SortDeterministic())
            {
                streaming.gameObject.AddComponent <CustomNomaiRemoteCameraStreaming>();
            }

            foreach (var camera in QSBWorldSync.GetUnityObjects <NomaiRemoteCamera>().SortDeterministic())
            {
                camera.gameObject.AddComponent <CustomNomaiRemoteCamera>();
            }

            foreach (var platform in QSBWorldSync.GetUnityObjects <NomaiRemoteCameraPlatform>().SortDeterministic())
            {
                platform.gameObject.AddComponent <CustomNomaiRemoteCameraPlatform>();
            }
        }
示例#27
0
        public override async UniTask BuildWorldObjects(OWScene scene, CancellationToken ct)
        {
            DebugLog.DebugWrite("Building OWItems...", MessageType.Info);

            // Items
            QSBWorldSync.Init <QSBDreamLanternItem, DreamLanternItem>();
            QSBWorldSync.Init <QSBNomaiConversationStone, NomaiConversationStone>();
            QSBWorldSync.Init <QSBScrollItem, ScrollItem>();
            QSBWorldSync.Init <QSBSharedStone, SharedStone>();
            QSBWorldSync.Init <QSBSimpleLanternItem, SimpleLanternItem>();
            QSBWorldSync.Init <QSBSlideReelItem, SlideReelItem>();
            QSBWorldSync.Init <QSBVisionTorchItem, VisionTorchItem>();
            QSBWorldSync.Init <QSBWarpCoreItem, WarpCoreItem>();

            // Sockets
            QSBWorldSync.Init <QSBItemSocket, OWItemSocket>();
        }
示例#28
0
        public override async UniTask BuildWorldObjects(OWScene scene, CancellationToken ct)
        {
            DebugLog.DebugWrite("Building quantum objects...", MessageType.Info);
            QSBWorldSync.Init <QSBQuantumState, QuantumState>();
            QSBWorldSync.Init <QSBSocketedQuantumObject, SocketedQuantumObject>();
            QSBWorldSync.Init <QSBMultiStateQuantumObject, MultiStateQuantumObject>();
            QSBWorldSync.Init <QSBQuantumSocket, QuantumSocket>();
            QSBWorldSync.Init <QSBQuantumShuffleObject, QuantumShuffleObject>();
            QSBWorldSync.Init <QSBQuantumMoon, QuantumMoon>();
            QSBWorldSync.Init <QSBEyeProxyQuantumMoon, EyeProxyQuantumMoon>();
            QSBWorldSync.Init <QSBQuantumSkeletonTower, QuantumSkeletonTower>();
            if (scene == OWScene.SolarSystem)
            {
                Shrine = QSBWorldSync.GetUnityObjects <QuantumShrine>().First();
            }

            UpdateFromDebugSetting();
        }
示例#29
0
        private void OnSceneLoaded(OWScene oldScene, OWScene newScene, bool inUniverse)
        {
            if (newScene != OWScene.EyeOfTheUniverse)
            {
                return;
            }

            var mapController = QSBWorldSync.GetUnityObjects <GalaxyMapController>().First();
            var map           = mapController._interactVolume.gameObject;

            map.SetActive(false);
            Tree = map.AddComponent <QSBCharacterDialogueTree>();
            Tree._xmlCharacterDialogueAsset = QSBCore.TextAssetsBundle.LoadAsset <TextAsset>("Assets/TextAssets/GalaxyMap.txt");
            Tree._attentionPoint            = map.transform;
            Tree._attentionPointOffset      = new Vector3(0, 1, 0);
            Tree._turnOffFlashlight         = true;
            Tree._turnOnFlashlight          = true;
            map.SetActive(true);
        }
示例#30
0
 protected override void RebuildWorldObjects(OWScene scene)
 {
     DebugLog.DebugWrite("Rebuilding sectors...", MessageType.Warning);
     if (QSBSceneManager.CurrentScene == OWScene.SolarSystem)
     {
         var timeLoopRing = GameObject.Find("TimeLoopRing_Body");
         if (timeLoopRing != null)
         {
             if (timeLoopRing.GetComponent <FakeSector>() == null)
             {
                 timeLoopRing.AddComponent <FakeSector>().AttachedSector = GameObject.Find("Sector_TimeLoopInterior").GetComponent <Sector>();
             }
         }
         else
         {
             DebugLog.ToConsole($"Error - TimeLoopRing_Body not found!", MessageType.Error);
         }
     }
     QSBWorldSync.Init <QSBSector, Sector>();
     IsReady = QSBWorldSync.GetWorldObjects <QSBSector>().Any();
 }