Exemple #1
0
        internal static void InternalTempChangeToPlatform(int index)
        {
            if (!GetCurrentEnvironment().name.StartsWith("Menu"))
            {
                platformSpawned = true;
            }
            Plugin.Log("switching to " + Instance.GetPlatform(index));
            // Hide current Platform
            activePlatform.gameObject.SetActive(false);
            int oldIndex = platformIndex;

            // Increment index
            platformIndex = index % platforms.Length;

            // Save active platform
            activePlatform = currentPlatform;

            platformIndex = oldIndex;

            // Show new platform
            activePlatform.gameObject.SetActive(true);

            // Hide environment for new platform
            Instance.StartCoroutine(HideForPlatformAfterOneFrame(activePlatform));

            // Update lightSwitchEvent TubeLight references
            TubeLightManager.UpdateEventTubeLightList();
        }
Exemple #2
0
 void TransitionFinalize(ScenesTransitionSetupDataSO ignored1, DiContainer ignored2)
 {
     try {
         if (!GetCurrentEnvironment().name.StartsWith("Menu"))
         {
             try {
                 FindManager();
                 if (!Resources.FindObjectsOfTypeAll <PlayerDataModel>()[0].playerData.overrideEnvironmentSettings.overrideEnvironments)
                 {
                     InternalTempChangeToPlatform();
                     PlatformLoader.AddManagers();
                     SpawnCustomLights();
                     Instance.StartCoroutine(ReplaceAllMaterialsAfterOneFrame());
                     EnvironmentArranger.RearrangeEnvironment();
                     TubeLightManager.CreateAdditionalLightSwitchControllers();
                 }
             } catch (ManagerNotFoundException e) {
                 Plugin.Log(e);
             }
         }
         else
         {
             Heart.SetActive(showHeart);
             Heart.GetComponent <LightWithId>().ColorWasSet(Color.magenta);
         }
     } catch (EnvironmentSceneNotFoundException e) {
         Plugin.Log(e);
     }
 }
        private void HandleGameSceneLoaded()
        {
            gameEnvHider.FindEnvironment();
            gameEnvHider.HideObjectsForPlatform(currentPlatform);

            EnvironmentArranger.RearrangeEnvironment();
            TubeLightManager.CreateAdditionalLightSwitchControllers();
        }
Exemple #4
0
        private void Awake()
        {
            var prefab = Resources.FindObjectsOfTypeAll <TubeBloomPrePassLight>().First(x => x.name == "Neon");

            TubeLight[] localDescriptors = GetComponentsInChildren <TubeLight>(true);

            if (localDescriptors == null)
            {
                return;
            }

            TubeLight tl = this;

            tubeBloomLight = Instantiate(prefab);
            tubeBloomLight.transform.SetParent(tl.transform);
            tubeBloomLight.transform.localRotation = Quaternion.identity;
            tubeBloomLight.transform.localPosition = Vector3.zero;
            tubeBloomLight.transform.localScale    = new Vector3(1 / tl.transform.lossyScale.x, 1 / tl.transform.lossyScale.y, 1 / tl.transform.lossyScale.z);

            if (tl.GetComponent <MeshFilter>().mesh.vertexCount == 0)
            {
                tl.GetComponent <MeshRenderer>().enabled = false;
            }
            else
            {
                // swap for MeshBloomPrePassLight
                tubeBloomLight.gameObject.SetActive(false);
                MeshBloomPrePassLight meshbloom = ReflectionUtil.CopyComponent(tubeBloomLight, typeof(TubeBloomPrePassLight), typeof(MeshBloomPrePassLight), tubeBloomLight.gameObject) as MeshBloomPrePassLight;
                meshbloom.Init(tl.GetComponent <Renderer>());
                tubeBloomLight.gameObject.SetActive(true);
                Destroy(tubeBloomLight);
                tubeBloomLight = meshbloom;
            }

            tubeBloomLight.SetPrivateField("_width", tl.width * 2);
            tubeBloomLight.SetPrivateField("_length", tl.length);
            tubeBloomLight.SetPrivateField("_center", tl.center);
            tubeBloomLight.SetPrivateField("_transform", tubeBloomLight.transform);
            var parabox = tubeBloomLight.GetComponentInChildren <ParametricBoxController>();

            tubeBloomLight.SetPrivateField("_parametricBoxController", parabox);
            var parasprite = tubeBloomLight.GetComponentInChildren <Parametric3SliceSpriteController>();

            tubeBloomLight.SetPrivateField("_dynamic3SliceSprite", parasprite);
            parasprite.Init();
            parasprite.GetComponent <MeshRenderer>().enabled = false;

            tubeBloomLight.color = tl.color * 0.9f;

            var prop = typeof(BSLight).GetField("_ID", BindingFlags.NonPublic | BindingFlags.Instance);

            prop.SetValue(tubeBloomLight, (int)tl.lightsID);

            //tubeBloomLight.InvokePrivateMethod("OnDisable", new object[0]);
            tubeBloomLight.Refresh();
            TubeLightManager.UpdateEventTubeLightList();
        }
Exemple #5
0
        private void HandleGameSceneLoaded()
        {
            TubeLightManager.FixUnregisterErrors();

            gameEnvHider.FindEnvironment();
            gameEnvHider.HideObjectsForPlatform(currentPlatform);

            EnvironmentArranger.RearrangeEnvironment();
            TubeLightManager.CreateAdditionalLightSwitchControllers();

            //SceneDumper.DumpScene();
            TubeLightManager.UpdateEventTubeLightList();
        }
Exemple #6
0
        private void SceneManagerOnActiveSceneChanged(Scene arg0, Scene arg1)
        {
            envHider.FindEnvironment();
            envHider.HideObjectsForPlatform(currentPlatform);

            if (SceneManager.GetActiveScene().name == "GameCore")
            {
                EnvironmentArranger.RearrangeEnvironment();
                TubeLightManager.CreateAdditionalLightSwitchControllers();
                TubeLightManager.UpdateEventTubeLightList();
            }
            Camera.main.cullingMask &= ~(1 << CameraVisibilityManager.OnlyInThirdPerson);
            Camera.main.cullingMask |= 1 << CameraVisibilityManager.OnlyInHeadset;
        }
Exemple #7
0
        internal static void InternalTempChangeToPlatform(int index)
        {
            // Hide current Platform
            currentPlatform.gameObject.SetActive(false);
            int oldIndex = platformIndex;

            // Increment index
            platformIndex = index % platforms.Length;

            // Show new platform
            currentPlatform.gameObject.SetActive(true);

            // Hide environment for new platform
            Instance.StartCoroutine(HideForPlatformAfterOneFrame(currentPlatform));

            // Update lightSwitchEvent TubeLight references
            TubeLightManager.UpdateEventTubeLightList();
            platformIndex = oldIndex;
        }
        internal void TempChangeToPlatform(int index)
        {
            // Hide current Platform
            currentPlatform.gameObject.SetActive(false);
            int oldIndex = platformIndex;

            // Increment index
            platformIndex = index % platforms.Length;

            // Show new platform
            currentPlatform.gameObject.SetActive(true);

            // Hide environment for new platform
            menuEnvHider.HideObjectsForPlatform(currentPlatform);
            gameEnvHider.HideObjectsForPlatform(currentPlatform);

            // Update lightSwitchEvent TubeLight references
            TubeLightManager.UpdateEventTubeLightList();
            platformIndex = oldIndex;
        }
Exemple #9
0
        public void ChangeToPlatform(int index)
        {
            // Hide current Platform
            currentPlatform.gameObject.SetActive(false);

            // Increment index
            platformIndex = index % platforms.Length;

            // Save path into ModPrefs
            ModPrefs.SetString(CustomFloorPlugin.PluginName, "CustomPlatformPath", currentPlatform.platName + currentPlatform.platAuthor);

            // Show new platform
            currentPlatform.gameObject.SetActive(true);

            // Hide environment for new platform
            envHider.HideObjectsForPlatform(currentPlatform);

            // Update lightSwitchEvent TubeLight references
            TubeLightManager.UpdateEventTubeLightList();
        }
Exemple #10
0
        internal void SetPlatform(int index)
        {
            // Hide current Platform
            currentPlatform.gameObject.SetActive(false);

            // Increment index
            platformIndex = index % platforms.Length;

            // Save path into ModPrefs
            Plugin.config.SetString("Data", "CustomPlatformPath", currentPlatform.platName + currentPlatform.platAuthor);

            // Show new platform
            currentPlatform.gameObject.SetActive(true);

            // Hide environment for new platform
            EnvHider.HideObjectsForPlatform(currentPlatform);

            // Update lightSwitchEvent TubeLight references
            TubeLightManager.UpdateEventTubeLightList();
        }
        public void ChangeToPlatform(int index)
        {
            // Hide current Platform
            platforms.ElementAt(platformIndex).gameObject.SetActive(false);

            // Increment index
            platformIndex = index % platforms.Count;

            // Save path into ModPrefs
            ModPrefs.SetString(CustomFloorPlugin.PluginName, "CustomPlatformPath", bundlePaths.ElementAt(platformIndex));

            CustomPlatform newPlaform = platforms.ElementAt(platformIndex);

            // Show new platform
            newPlaform.gameObject.SetActive(true);

            // Hide environment for new platform
            envHider.HideObjectsForPlatform(newPlaform);

            // Update lightSwitchEvent TubeLight references
            TubeLightManager.UpdateEventTubeLightList();
        }
        public void ChangeToPlatform(int index)
        {
            // Hide current Platform
            platforms.ElementAt(platformIndex).gameObject.SetActive(false);

            // Increment index
            platformIndex = index % platforms.Count;

            // Save path into PlayerPrefs
            PlayerPrefs.SetString("CustomPlatformPath", bundlePaths.ElementAt(platformIndex));

            CustomPlatform newPlaform = platforms.ElementAt(platformIndex);

            // Show new platform
            newPlaform.gameObject.SetActive(true);

            // Hide environment for new platform
            StartCoroutine(envHider.WaitForPlatformAndHideObjects(platforms.ElementAt(platformIndex)));

            // Update lightSwitchEvent TubeLight references
            TubeLightManager.UpdateEventTubeLightList();
        }
        private void AddManagers(GameObject go, GameObject root)
        {
            // Replace materials for this object
            MaterialSwapper.ReplaceMaterialsForGameObject(go);

            // Add a tube light manager if there are tube light descriptors
            if (go.GetComponentInChildren <TubeLight>(true) != null)
            {
                TubeLightManager tlm = root.GetComponent <TubeLightManager>();
                if (tlm == null)
                {
                    tlm = root.AddComponent <TubeLightManager>();
                }
                tlm.CreateTubeLights(go);
            }

            // Rotation effect manager
            if (go.GetComponentInChildren <RotationEventEffect>(true) != null)
            {
                RotationEventEffectManager rotManager = root.GetComponent <RotationEventEffectManager>();
                if (rotManager == null)
                {
                    rotManager = root.AddComponent <RotationEventEffectManager>();
                }
                rotManager.CreateEffects(go);
            }

            // Add a trackRing controller if there are track ring descriptors
            if (go.GetComponentInChildren <TrackRings>(true) != null)
            {
                foreach (TrackRings trackRings in go.GetComponentsInChildren <TrackRings>(true))
                {
                    GameObject ringPrefab = trackRings.trackLaneRingPrefab;

                    // Add managers to prefabs (nesting)
                    AddManagers(ringPrefab, root);
                }

                TrackRingsManagerSpawner trms = root.GetComponent <TrackRingsManagerSpawner>();
                if (trms == null)
                {
                    trms = root.AddComponent <TrackRingsManagerSpawner>();
                }
                trms.CreateTrackRings(go);
            }

            // Add spectrogram manager
            if (go.GetComponentInChildren <Spectrogram>(true) != null)
            {
                foreach (Spectrogram spec in go.GetComponentsInChildren <Spectrogram>(true))
                {
                    GameObject colPrefab = spec.columnPrefab;
                    AddManagers(colPrefab, root);
                }

                SpectrogramColumnManager specManager = go.GetComponent <SpectrogramColumnManager>();
                if (specManager == null)
                {
                    specManager = go.AddComponent <SpectrogramColumnManager>();
                }
                specManager.CreateColumns(go);
            }

            if (go.GetComponentInChildren <SpectrogramMaterial>(true) != null)
            {
                // Add spectrogram materials manager
                SpectrogramMaterialManager specMatManager = go.GetComponent <SpectrogramMaterialManager>();
                if (specMatManager == null)
                {
                    specMatManager = go.AddComponent <SpectrogramMaterialManager>();
                }
                specMatManager.UpdateMaterials();
            }


            if (go.GetComponentInChildren <SpectrogramAnimationState>(true) != null)
            {
                // Add spectrogram animation state manager
                SpectrogramAnimationStateManager specAnimManager = go.GetComponent <SpectrogramAnimationStateManager>();
                if (specAnimManager == null)
                {
                    specAnimManager = go.AddComponent <SpectrogramAnimationStateManager>();
                }
                specAnimManager.UpdateAnimationStates();
            }

            // Add Song event manager
            if (go.GetComponentInChildren <SongEventHandler>(true) != null)
            {
                foreach (SongEventHandler handler in go.GetComponentsInChildren <SongEventHandler>())
                {
                    SongEventManager manager = handler.gameObject.AddComponent <SongEventManager>();
                    manager._songEventHandler = handler;
                }
            }

            // Add EventManager
            if (go.GetComponentInChildren <EventManager>(true) != null)
            {
                foreach (EventManager em in go.GetComponentsInChildren <EventManager>())
                {
                    PlatformEventManager pem = em.gameObject.AddComponent <PlatformEventManager>();
                    pem._EventManager = em;
                }
            }
        }