示例#1
0
        public static void TempChangeToPlatform(int index)
        {
            Plugin.Log();
            Plugin.Log(index);

            if (kyleBuffer != null)
            {
                errBuffer = index;
                throw new StackedRequestsException();
            }
            else
            {
                kyleBuffer = index;
            }
            try {
                if (!GetCurrentEnvironment().name.StartsWith("Menu") && platformSpawned)
                {
                    DestroyCustomLights();
                    InternalTempChangeToPlatform();
                    PlatformLoader.AddManagers();
                    SpawnCustomLights();
                    Instance.StartCoroutine(ReplaceAllMaterialsAfterOneFrame());
                    EnvironmentArranger.RearrangeEnvironment();
                }
            } catch (EnvironmentSceneNotFoundException e) {
                IPA.Logging.Logger.Level L = IPA.Logging.Logger.Level.Warning;
                Plugin.Log("TempChangeToPlatform was called out of place. Please send me a bug report.", L);
                Plugin.Log(e, L);
            }
        }
示例#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);
     }
 }
            /// <summary>
            /// Changes to a specific <see cref="CustomPlatform"/>
            /// </summary>
            /// <param name="index">The index of the new <see cref="CustomPlatform"/> in the list <see cref="AllPlatforms"/></param>
            internal static void InternalChangeToPlatform(int index)
            {
                Log("Switching to " + AllPlatforms[index].name);
                if (!GetCurrentEnvironment().name.StartsWith("Menu", STR_INV))
                {
                    platformSpawned = true;
                }
                activePlatform?.gameObject.SetActive(false);
                NotifyPlatform(activePlatform, NotifyType.Disable);
                DestroyCustomObjects();

                if (index != 0)
                {
                    activePlatform = AllPlatforms[index % AllPlatforms.Count];
                    activePlatform.gameObject.SetActive(true);
                    AddManagers(activePlatform);
                    NotifyPlatform(activePlatform, NotifyType.Enable);
                    SpawnCustomObjects();
                    EnvironmentArranger.RearrangeEnvironment();
                    MaterialSwapper.ReplaceMaterials(activePlatform.gameObject);
                }
                else
                {
                    activePlatform = null;
                }
                EnvironmentHider.HideObjectsForPlatform(AllPlatforms[index]);
            }
        private void HandleGameSceneLoaded()
        {
            gameEnvHider.FindEnvironment();
            gameEnvHider.HideObjectsForPlatform(currentPlatform);

            EnvironmentArranger.RearrangeEnvironment();
            TubeLightManager.CreateAdditionalLightSwitchControllers();
        }
示例#5
0
        private void HandleGameSceneLoaded()
        {
            TubeLightManager.FixUnregisterErrors();

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

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

            //SceneDumper.DumpScene();
            TubeLightManager.UpdateEventTubeLightList();
        }
示例#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;
        }
示例#7
0
        private static void CreateSettingsUI()
        {
            var subMenu = SettingsUI.CreateSubMenu("Platforms");

            var feetMenu = subMenu.AddBool("Always Show Feet");

            feetMenu.GetValue += delegate
            {
                return(EnvironmentHider.showFeetOverride);
            };
            feetMenu.SetValue += delegate(bool value)
            {
                EnvironmentHider.showFeetOverride = value;
                Plugin.config.SetBool("Settings", "AlwaysShowFeet", EnvironmentHider.showFeetOverride);
            };

            var environment = subMenu.AddList("Environment Override", EnvironmentSceneOverrider.OverrideModes());

            environment.GetValue += delegate
            {
                return((float)EnvironmentSceneOverrider.overrideMode);
            };
            environment.SetValue += delegate(float value)
            {
                EnvironmentSceneOverrider.overrideMode = (EnvironmentSceneOverrider.EnvOverrideMode)value;
                EnvironmentSceneOverrider.OverrideEnvironmentScene();
                Plugin.config.SetInt("Settings", "EnvironmentOverrideMode", (int)EnvironmentSceneOverrider.overrideMode);
            };
            environment.FormatValue += delegate(float value) { return(EnvironmentSceneOverrider.Name((EnvironmentSceneOverrider.EnvOverrideMode)value)); };

            var arrangement = subMenu.AddList("Environment Arrangement", EnvironmentArranger.RepositionModes());

            arrangement.GetValue += delegate
            {
                return((float)EnvironmentArranger.arrangement);
            };
            arrangement.SetValue += delegate(float value)
            {
                EnvironmentArranger.arrangement = (EnvironmentArranger.Arrangement)value;
                Plugin.config.SetInt("Settings", "EnvironmentArrangement", (int)EnvironmentArranger.arrangement);
            };
            arrangement.FormatValue += delegate(float value) { return(EnvironmentArranger.Name((EnvironmentArranger.Arrangement)value)); };
        }