private void UpdateDamagePP() { float num = 0f; float weight = PostProcessManager.Get().GetWeight(PostProcessManager.Effect.Blood); if (PlayerConditionModule.Get().IsHPCriticalLevel()) { num = CJTools.Math.GetProportionalClamp(0f, 1f, PlayerConditionModule.Get().GetHP(), PlayerConditionModule.Get().m_CriticalLevel, 0f); } if (this.m_LastDamageTime > 0f && Time.time - this.m_LastDamageTime < this.m_DamageEffectDuration) { num = 1f; } if (PlayerInjuryModule.Get().GetAllInjuriesOfState(InjuryState.Bleeding).Count > 0) { num = 1f; } if (weight > 0f && Time.time - this.m_LastDamageTime >= this.m_DamageEffectDuration) { num = Mathf.Max(num, weight - Time.deltaTime * 0.5f); } num = (Player.Get().m_DreamPPActive ? 0f : num); if (num != weight) { PostProcessManager.Get().SetWeight(PostProcessManager.Effect.Blood, num); } }
private void ToggleUI() { SetUIVisible(!uiVisible); if (uiVisible) { // Fetch components attached to MainCamera List <Component> cameraComponents = new List <Component>(32); CameraManager.Get().m_MainCamera.GetComponents <Component>(cameraComponents); for (int i = cameraComponents.Count - 1; i >= 0; i--) { Component component = cameraComponents[i]; if (!component || excludedComponents.Contains(component.GetType()) || !(component is Behaviour)) { cameraComponents.RemoveAt(i); } //ModAPI.Log.Write( "COMPONENT: " + component ); } skyComponent = TOD_Sky.Instance; components = cameraComponents.ToArray(); postProcessing = PostProcessManager.Get() ? PostProcessManager.Get().GetComponentsInChildren <PostProcessVolume>() : new PostProcessVolume[0]; } }
public void HideMenu() { if (this.m_CurrentScreen) { this.m_CurrentScreen.Hide(); if (this.m_CurrentScreen.ShouldPauseGame()) { MainLevel.Instance.Pause(false); } } foreach (Type key in this.m_Screens.Keys) { this.m_Screens[key].m_ActiveMenuOption = null; } this.m_CurrentScreen = null; this.m_PreviousScreens.Clear(); Player.Get().UnblockMoves(); Player.Get().UnblockRotation(); CursorManager.Get().SetCursor(CursorManager.TYPE.Normal); if (this.m_CursorVisible) { CursorManager.Get().ShowCursor(false, false); this.m_CursorVisible = false; } this.m_OutlineCamera.enabled = true; PostProcessManager.Get().SetWeight(PostProcessManager.Effect.InGameMenu, 0f); InputsManager.Get().m_OmitMouseUp = true; }
public void Show(IYesNoDialogOwner owner, DialogWindowType type, string label = "label", string description = "description", bool change_effect = true) { this.m_DialogType = type; this.m_DW.m_LabelText.text = label; this.m_DW.m_DescriptionText.text = description; if (type == DialogWindowType.YesNo) { this.m_DW.m_Button1.gameObject.SetActive(true); this.m_DW.m_Button2.gameObject.SetActive(true); this.m_DW.m_Button3.gameObject.SetActive(false); } if (type == DialogWindowType.Ok) { this.m_DW.m_Button1.gameObject.SetActive(false); this.m_DW.m_Button2.gameObject.SetActive(false); this.m_DW.m_Button3.gameObject.SetActive(true); } base.gameObject.SetActive(true); this.m_Screen = owner; this.m_MainCanvasObject = GameObject.Find("MainMenuCanvas"); if (this.m_MainCanvasObject != null) { this.m_MainCanvas = this.m_MainCanvasObject.GetComponent <Canvas>(); this.m_MainCanvas.enabled = false; } this.m_ChangeEffect = change_effect; if (this.m_ChangeEffect) { PostProcessManager.Get().SetWeight(PostProcessManager.Effect.InGameMenu, 1f); } if (this.m_Screen is MainMenuScreen) { Time.timeScale = 0.5f; } }
private void Close() { base.gameObject.SetActive(false); this.SetCanvasActive(true); UIAudioPlayer.Play(UIAudioPlayer.UISoundType.Click); if (this.m_ChangeEffect) { PostProcessManager.Get().SetWeight(PostProcessManager.Effect.InGameMenu, 0f); } MenuScreen menuScreen = this.m_Screen as MenuScreen; if (menuScreen != null && !menuScreen.m_IsIngame) { Time.timeScale = 1f; } EventSystem current = EventSystem.current; if (current != null) { current.SetSelectedGameObject(null); } InputsManager.Get().UnregisterReceiver(this); IYesNoDialogOwner screen = this.m_Screen; if (screen == null) { return; } screen.OnCloseDialog(); }
public override void OnAnimEvent(AnimEventID id) { base.OnAnimEvent(id); if (id == AnimEventID.DemoHitReaction) { PostProcessManager.Get().SetWeight(PostProcessManager.Effect.Blood, 1f); } }
public void Show(IYesNoDialogOwner owner, DialogWindowType type, string label = "label", string description = "description", bool change_effect = true) { this.m_DialogType = type; this.m_DW.m_LabelText.text = label; this.m_DW.m_DescriptionText.text = description; if (GreenHellGame.IsPadControllerActive()) { this.m_DW.m_Button1.gameObject.SetActive(false); this.m_DW.m_Button2.gameObject.SetActive(false); this.m_DW.m_Button3.gameObject.SetActive(false); if (type == DialogWindowType.YesNo) { this.m_DW.m_PadButton1.gameObject.SetActive(true); this.m_DW.m_PadButton2.gameObject.SetActive(true); this.m_DW.m_PadButton3.gameObject.SetActive(false); } else if (type == DialogWindowType.Ok) { this.m_DW.m_PadButton1.gameObject.SetActive(false); this.m_DW.m_PadButton2.gameObject.SetActive(false); this.m_DW.m_PadButton3.gameObject.SetActive(true); } } else { this.m_DW.m_PadButton1.gameObject.SetActive(false); this.m_DW.m_PadButton2.gameObject.SetActive(false); this.m_DW.m_PadButton3.gameObject.SetActive(false); if (type == DialogWindowType.YesNo) { this.m_DW.m_Button1.gameObject.SetActive(true); this.m_DW.m_Button2.gameObject.SetActive(true); this.m_DW.m_Button3.gameObject.SetActive(false); } else if (type == DialogWindowType.Ok) { this.m_DW.m_Button1.gameObject.SetActive(false); this.m_DW.m_Button2.gameObject.SetActive(false); this.m_DW.m_Button3.gameObject.SetActive(true); } } base.gameObject.SetActive(true); this.m_Screen = owner; this.SetCanvasActive(false); this.m_ChangeEffect = change_effect; if (this.m_ChangeEffect) { PostProcessManager.Get().SetWeight(PostProcessManager.Effect.InGameMenu, 1f); } MenuScreen menuScreen = this.m_Screen as MenuScreen; if (menuScreen != null && !menuScreen.m_IsIngame) { Time.timeScale = 0.5f; } InputsManager.Get().RegisterReceiver(this); }
private void UpdateDreamPP() { float num = Player.Get().m_DreamPPActive ? 1f : 0f; if (PostProcessManager.Get().GetWeight(PostProcessManager.Effect.Dream) != num) { PostProcessManager.Get().SetWeight(PostProcessManager.Effect.Dream, num); } }
private void UpdateDebugDofPP() { float num = this.m_DebugDofPP ? 1f : 0f; if (PostProcessManager.Get().GetWeight(PostProcessManager.Effect.DebugDof) != num) { PostProcessManager.Get().SetWeight(PostProcessManager.Effect.DebugDof, num); } }
private void UpdateNotepadPP() { float num = Player.Get().GetComponent <NotepadController>().IsActive() ? 1f : 0f; float weight = PostProcessManager.Get().GetWeight(PostProcessManager.Effect.Notepad); if (weight != num) { PostProcessManager.Get().SetWeight(PostProcessManager.Effect.Notepad, weight + (num - weight) * Time.deltaTime * 2f); } }
private void UpdateSanityPP() { float proportionalClamp = CJTools.Math.GetProportionalClamp(0f, 1f, (float)PlayerSanityModule.Get().m_Sanity / 100f, 1f, 0f); float weight = PostProcessManager.Get().GetWeight(PostProcessManager.Effect.Sanity); if (weight != proportionalClamp) { PostProcessManager.Get().SetWeight(PostProcessManager.Effect.Sanity, weight + (proportionalClamp - weight) * Time.deltaTime * 2f); } }
private void UpdateLowEnergyPP() { float num = (PlayerConditionModule.Get().m_Energy >= 10f) ? 0f : 1f; float weight = PostProcessManager.Get().GetWeight(PostProcessManager.Effect.LowEnergy); if (weight != num) { PostProcessManager.Get().SetWeight(PostProcessManager.Effect.LowEnergy, weight + (num - weight) * Time.deltaTime * 2f); } }
private void UpdateUnderwaterPP() { float num = Player.Get().IsCameraUnderwater() ? 1f : 0f; num = (Player.Get().m_DreamPPActive ? 0f : num); if (PostProcessManager.Get().GetWeight(PostProcessManager.Effect.Underwater) != num) { PostProcessManager.Get().SetWeight(PostProcessManager.Effect.Underwater, num); } }
public void Update() { if (!this.m_EndDemo && Input.GetKey(KeyCode.RightControl) && Input.GetKeyDown(KeyCode.G)) { PlayableDirector cutscene = CutscenesManager.Get().GetCutscene("DemoEnd_Cutscene"); cutscene.transform.rotation = Player.Get().transform.rotation; cutscene.transform.position = Player.Get().transform.position; Item currentItem = Player.Get().GetCurrentItem(Hand.Right); if (currentItem != null) { Player.Get().SetWantedItem(Hand.Right, null, true); InventoryBackpack.Get().InsertItem(currentItem, null, null, true, true, true, true, true); } currentItem = Player.Get().GetCurrentItem(Hand.Left); if (currentItem != null) { Player.Get().SetWantedItem(Hand.Left, null, true); InventoryBackpack.Get().InsertItem(currentItem, null, null, true, true, true, true, true); } Player.Get().BlockMoves(); Player.Get().BlockRotation(); PlayableDirector cutscene2 = CutscenesManager.Get().GetCutscene("DemoEnd_Cutscene"); this.m_CutsceneDuration = (float)cutscene2.duration - 4.5f; CutscenesManager.Get().PlayCutscene("DemoEnd_Cutscene"); this.m_StartCutsceneTime = Time.time; this.m_EndDemo = true; Player.Get().StartController(PlayerControllerType.PlayerCutscene); } if (this.m_EndDemo) { if (!this.m_FirstHit && Time.time - this.m_StartCutsceneTime >= this.m_FirstHitTime) { PostProcessManager.Get().SetWeight(PostProcessManager.Effect.Blood, 1f); PlayerConditionModule.Get().DecreaseEnergy(PlayerConditionModule.Get().GetEnergy() * 0.5f); this.m_FirstHit = true; } if (!this.m_SecondHit && Time.time - this.m_StartCutsceneTime >= this.m_SecondHitTime) { PostProcessManager.Get().SetWeight(PostProcessManager.Effect.Blood, 1f); HUDManager.Get().SetActiveGroup(HUDManager.HUDGroup.TwitchDemo); HUDEndDemo.Get().gameObject.SetActive(false); this.m_SecondHit = true; } if (this.m_SecondHit) { PostProcessManager.Get().SetWeight(PostProcessManager.Effect.Blood, 1f); } if (Time.time - this.m_StartCutsceneTime >= this.m_CutsceneDuration) { HUDManager.Get().ShowDemoEnd(); this.m_EndDemo = true; } } }
private void UpdateSanityPP() { float num = CJTools.Math.GetProportionalClamp(0f, 1f, (float)PlayerSanityModule.Get().m_Sanity / 100f, 1f, 0f); num = (Player.Get().m_DreamPPActive ? 0f : num); float weight = PostProcessManager.Get().GetWeight(PostProcessManager.Effect.Sanity); if (weight != num) { PostProcessManager.Get().SetWeight(PostProcessManager.Effect.Sanity, weight + (num - weight) * Time.deltaTime * 2f); } }
private void UpdateGamePP() { float num = (!Player.Get().GetComponent <NotepadController>().IsActive()) ? 1f : 0f; num = (((float)PlayerSanityModule.Get().m_Sanity >= 10f) ? num : 0f); float weight = PostProcessManager.Get().GetWeight(PostProcessManager.Effect.Game); if (weight != num) { PostProcessManager.Get().SetWeight(PostProcessManager.Effect.Game, weight + (num - weight) * Time.deltaTime * 2f); } }
private void UpdateLowHPPP() { float num = (PlayerConditionModule.Get().m_HP < 10f) ? 1f : 0f; num = (Player.Get().m_DreamPPActive ? 0f : num); float weight = PostProcessManager.Get().GetWeight(PostProcessManager.Effect.LowHP); if (weight != num) { PostProcessManager.Get().SetWeight(PostProcessManager.Effect.LowHP, weight + (num - weight) * Time.deltaTime * 2f); } }
public override void OnTakeDamage(DamageInfo info) { base.OnTakeDamage(info); if (info.m_Blocked) { return; } if (info.m_DamageType != DamageType.Insects && info.m_DamageType != DamageType.Cut && info.m_DamageType != DamageType.Thrust && info.m_DamageType != DamageType.None) { this.m_LastDamageTime = Time.time; PostProcessManager.Get().SetWeight(PostProcessManager.Effect.Blood, 1f); } }
private void UpdateGamePP() { float num = Player.Get().GetComponent <NotepadController>().IsActive() ? 0f : 1f; num = (((float)PlayerSanityModule.Get().m_Sanity < 10f) ? 0f : num); num = (Player.Get().IsCameraUnderwater() ? 0f : num); num = (Player.Get().m_DreamPPActive ? 0f : num); float weight = PostProcessManager.Get().GetWeight(PostProcessManager.Effect.Game); if (weight != num) { PostProcessManager.Get().SetWeight(PostProcessManager.Effect.Game, weight + (num - weight) * Time.deltaTime * 2f); } }
private void UpdatePoisonPP() { float num = 0f; PlayerDiseasesModule playerDiseasesModule = PlayerDiseasesModule.Get(); int num2 = (!playerDiseasesModule.GetDisease(ConsumeEffect.FoodPoisoning).IsActive()) ? 0 : playerDiseasesModule.GetDisease(ConsumeEffect.FoodPoisoning).m_Level; if ((float)num2 > 0f) { num = CJTools.Math.GetProportionalClamp(0f, 1f, (float)num2, 0f, this.m_PoisonLevelToMaxEffect); } float weight = PostProcessManager.Get().GetWeight(PostProcessManager.Effect.Poison); if (weight != num) { PostProcessManager.Get().SetWeight(PostProcessManager.Effect.Poison, weight + (num - weight) * Time.deltaTime * 2f); } }
private void Close() { base.gameObject.SetActive(false); this.m_MainCanvasObject = GameObject.Find("MainMenuCanvas"); if (this.m_MainCanvasObject != null) { this.m_MainCanvas = this.m_MainCanvasObject.GetComponent <Canvas>(); this.m_MainCanvas.enabled = true; } if (this.m_ChangeEffect) { PostProcessManager.Get().SetWeight(PostProcessManager.Effect.InGameMenu, 0f); } if (this.m_Screen is MainMenuScreen) { Time.timeScale = 1f; } }
public void HideMenu() { if (this.m_CurrentScreen) { this.m_CurrentScreen.Hide(); if (this.m_CurrentScreen.ShouldPauseGame()) { MainLevel.Instance.Pause(false); } } this.m_CurrentScreen = null; this.m_PrevoiusScreen = null; Player.Get().UnblockMoves(); Player.Get().UnblockRotation(); CursorManager.Get().SetCursor(CursorManager.TYPE.Normal); CursorManager.Get().ShowCursor(false); this.m_OutlineCamera.enabled = true; PostProcessManager.Get().SetWeight(PostProcessManager.Effect.InGameMenu, 0f); }
public void ShowScreen(Type screen_type) { if (LoadingScreen.Get().m_Active) { return; } if (!this.m_Initialized) { this.Init(); } MenuScreen menuScreen = null; this.m_Screens.TryGetValue(screen_type, out menuScreen); if (!menuScreen) { DebugUtils.Assert("[MenuInGameManager::ShowScreen] Can't find screen " + screen_type.ToString() + "!", true, DebugUtils.AssertType.Info); return; } if (menuScreen == this.m_CurrentScreen) { return; } PostProcessManager.Get().SetWeight(PostProcessManager.Effect.InGameMenu, 1f); this.m_OutlineCamera.enabled = false; this.m_PrevoiusScreen = this.m_CurrentScreen; if (this.m_CurrentScreen) { this.m_CurrentScreen.Hide(); } else { Player.Get().BlockMoves(); Player.Get().BlockRotation(); CursorManager.Get().ShowCursor(true); if (menuScreen.ShouldPauseGame()) { MainLevel.Instance.Pause(true); } } menuScreen.Show(); this.m_CurrentScreen = menuScreen; }
public override void Update() { base.Update(); if (this.m_Active && MainLevel.Instance.m_TODSky.Cycle.GameTime - this.m_StartTime >= this.m_Duration) { this.m_Active = false; } float weight = PostProcessManager.Get().GetWeight(PostProcessManager.Effect.Coca); if (this.m_Active && weight < 1f) { PostProcessManager.Get().SetWeight(PostProcessManager.Effect.Coca, weight + Time.deltaTime * 3f); } else if (!this.m_Active && weight > 0f) { PostProcessManager.Get().SetWeight(PostProcessManager.Effect.Coca, weight - Time.deltaTime * 3f); } if (this.m_Active && this.m_IncreaseEnergyPerSec > 0f) { PlayerConditionModule.Get().IncreaseEnergy(this.m_IncreaseEnergyPerSec * Time.deltaTime); } }
public static void SaveScreenshot(string save_name) { string text = save_name + ".png"; float weight = PostProcessManager.Get().GetWeight(PostProcessManager.Effect.InGameMenu); PostProcessManager.Get().SetWeight(PostProcessManager.Effect.InGameMenu, 0f); Camera main = Camera.main; Transform transform = Camera.main.gameObject.transform.FindDeepChild("HorizonCamera"); Camera camera = (transform != null) ? transform.GetComponent <Camera>() : null; Texture2D texture2D = new Texture2D(SaveGame.s_ScreenshotWidth, SaveGame.s_ScreenshotHeight, TextureFormat.RGB24, false); RenderTexture temporary = RenderTexture.GetTemporary(SaveGame.s_ScreenshotWidth, SaveGame.s_ScreenshotHeight, 24, RenderTextureFormat.ARGB32); RenderTexture active = RenderTexture.active; RenderTexture.active = temporary; Camera camera2 = GreenHellGame.Instance.gameObject.AddComponent <Camera>(); if (camera2 == null || camera == null) { if (camera2) { UnityEngine.Object.Destroy(camera2); } RenderTexture.active = active; RenderTexture.ReleaseTemporary(temporary); return; } camera2.CopyFrom(camera); SaveGame.RenderCamera(camera2, temporary); camera2.CopyFrom(main); SaveGame.RenderCamera(camera2, temporary); UnityEngine.Object.Destroy(camera2); texture2D.ReadPixels(new Rect(0f, 0f, (float)SaveGame.s_ScreenshotWidth, (float)SaveGame.s_ScreenshotHeight), 0, 0); RenderTexture.active = active; RenderTexture.ReleaseTemporary(temporary); byte[] data = texture2D.EncodeToPNG(); Debug.Log(string.Format("Took screenshot to: {0}", text)); PostProcessManager.Get().SetWeight(PostProcessManager.Effect.InGameMenu, weight); GreenHellGame.Instance.m_RemoteStorage.FileWrite(text, data); }
private void InterpolatePP() { PostProcessManager.Effect effect = this.m_PPInterpolatorObjects[0].m_Effect; float b = Player.Get().transform.position.Distance(this.m_PPInterpolatorObjects[0].transform.position); PostProcessManager.Effect effect2 = this.m_PPInterpolatorObjects[1].m_Effect; float b2 = Player.Get().transform.position.Distance(this.m_PPInterpolatorObjects[1].transform.position); float proportionalClamp = CJTools.Math.GetProportionalClamp(0f, 1f, b, this.m_PPInterpolatorObjects[0].m_MaxRadius, this.m_PPInterpolatorObjects[0].m_Radius); float proportionalClamp2 = CJTools.Math.GetProportionalClamp(0f, 1f, b2, this.m_PPInterpolatorObjects[1].m_MaxRadius, this.m_PPInterpolatorObjects[1].m_Radius); PostProcessManager.Get().SetWeight(effect, proportionalClamp); PostProcessManager.Get().SetWeight(effect2, proportionalClamp2); PostProcessManager.Get().SetWeight(this.m_DefaultEffect, 1f - (proportionalClamp + proportionalClamp2)); for (int i = 0; i < 12; i++) { PostProcessManager.Effect effect3 = (PostProcessManager.Effect)i; if (effect3 != effect && effect3 != effect2 && effect3 != this.m_DefaultEffect) { PostProcessManager.Get().SetWeight(effect3, 0f); } } }
public void ShowScreen(Type screen_type) { if (LoadingScreen.Get().m_Active) { return; } if (!this.m_Initialized) { this.Init(); } MenuScreen menuScreen = null; this.m_Screens.TryGetValue(screen_type, out menuScreen); if (!menuScreen) { DebugUtils.Assert("[MenuInGameManager::ShowScreen] Can't find screen " + screen_type.ToString() + "!", true, DebugUtils.AssertType.Info); return; } if (menuScreen == this.m_CurrentScreen) { return; } PostProcessManager.Get().SetWeight(PostProcessManager.Effect.InGameMenu, 1f); this.m_OutlineCamera.enabled = false; if (this.m_PreviousScreens.Contains(screen_type)) { while (this.m_PreviousScreens.Peek() != screen_type) { this.m_PreviousScreens.Pop(); } } else { this.m_PreviousScreens.Push(screen_type); } if (this.m_CurrentScreen) { this.m_CurrentScreen.Hide(); } else { Player.Get().BlockMoves(); Player.Get().BlockRotation(); if (GreenHellGame.IsPCControllerActive() || menuScreen.IsDebugScreen()) { CursorManager.Get().ShowCursor(true, false); this.m_CursorVisible = true; } if (menuScreen.ShouldPauseGame()) { MainLevel.Instance.Pause(true); } } menuScreen.Show(); this.m_CurrentScreen = menuScreen; if (GreenHellGame.IsPadControllerActive() && screen_type == typeof(MenuInGame)) { foreach (Type type in this.m_Screens.Keys) { if (screen_type != type) { this.m_Screens[type].m_ActiveMenuOption = null; } } } }
private void LoadSettings() { // Must be invoked from OnGUI if (!uiVisible) { return; } string saveFilePath = SaveFilePath; if (!File.Exists(saveFilePath)) { return; } SaveData saveData = null; using (FileStream stream = new FileStream(saveFilePath, FileMode.Open, FileAccess.Read)) { saveData = (SaveData) new XmlSerializer(typeof(SaveData)).Deserialize(stream); } if (saveData == null) { return; } numberFieldStrValues.Clear(); numberFieldUpdateStrValues.Clear(); if (saveData.DisabledCameraComponents != null) { for (int i = 0; i < components.Length; i++) { Behaviour component = components[i] as Behaviour; if (component && Array.IndexOf(saveData.DisabledCameraComponents, component.GetType().FullName) >= 0) { component.enabled = false; } } } if (saveData.AntiAliasingMode.HasValue) { PostProcessLayer ppLayer = CameraManager.Get().m_MainCamera.GetComponent <PostProcessLayer>(); if (ppLayer) { ppLayer.antialiasingMode = saveData.AntiAliasingMode.Value; } } if (saveData.DisabledPostProcessingFX != null) { PostProcessVolume mainPP = PostProcessManager.Get().GetVolume(PostProcessManager.Effect.Game); if (mainPP && mainPP.profile) { List <PostProcessEffectSettings> mainPP_FX = mainPP.profile.settings; for (int i = 0; i < mainPP_FX.Count; i++) { if (Array.IndexOf(saveData.DisabledPostProcessingFX, mainPP_FX[i].name) >= 0) { mainPP_FX[i].enabled.value = false; } } } } if (saveData.DisabledPostProcessingVolumes != null) { for (int i = 0; i < postProcessing.Length; i++) { PostProcessVolume pp = postProcessing[i]; if (pp && Array.IndexOf(saveData.DisabledPostProcessingVolumes, pp.name) >= 0) { pp.enabled = false; } } } if (skyComponent) { if (saveData.DayAmbientIntensity.HasValue) { skyComponent.Day.AmbientMultiplier = saveData.DayAmbientIntensity.Value; } if (saveData.NightAmbientIntensity.HasValue) { skyComponent.Night.AmbientMultiplier = saveData.NightAmbientIntensity.Value; } if (saveData.LightSaturation.HasValue) { skyComponent.Ambient.Saturation = saveData.LightSaturation.Value; } } if (saveData.AnisotropicFiltering.HasValue) { QualitySettings.anisotropicFiltering = saveData.AnisotropicFiltering.Value; } if (saveData.LODDistanceMultiplier.HasValue) { QualitySettings.lodBias = saveData.LODDistanceMultiplier.Value; } if (saveData.LODAggressiveness.HasValue) { QualitySettings.maximumLODLevel = saveData.LODAggressiveness.Value; } if (saveData.MaximumPixelLights.HasValue) { QualitySettings.pixelLightCount = saveData.MaximumPixelLights.Value; } if (saveData.Shadows.HasValue) { QualitySettings.shadows = saveData.Shadows.Value; } if (saveData.SoftParticles.HasValue) { QualitySettings.softParticles = saveData.SoftParticles.Value; } if (saveData.SoftVegetation.HasValue) { QualitySettings.softVegetation = saveData.SoftVegetation.Value; } if (saveData.AnimatedSkinQuality.HasValue) { QualitySettings.skinWeights = saveData.AnimatedSkinQuality.Value; } GUIUtility.ExitGUI(); }
private void SaveSettings() { // Must be invoked from OnGUI if (!uiVisible) { return; } SaveData saveData = new SaveData(); List <string> disabledCameraComponents = new List <string>(components.Length); for (int i = 0; i < components.Length; i++) { Behaviour component = components[i] as Behaviour; if (component && !component.enabled) { disabledCameraComponents.Add(component.GetType().FullName); } } saveData.DisabledCameraComponents = disabledCameraComponents.ToArray(); PostProcessLayer ppLayer = CameraManager.Get().m_MainCamera.GetComponent <PostProcessLayer>(); if (ppLayer) { saveData.AntiAliasingMode = ppLayer.antialiasingMode; } PostProcessVolume mainPP = PostProcessManager.Get().GetVolume(PostProcessManager.Effect.Game); if (mainPP && mainPP.profile) { List <PostProcessEffectSettings> mainPP_FX = mainPP.profile.settings; List <string> disabledPostProcessingFX = new List <string>(mainPP_FX.Count); for (int i = 0; i < mainPP_FX.Count; i++) { if (!mainPP_FX[i].enabled) { disabledPostProcessingFX.Add(mainPP_FX[i].name); } } saveData.DisabledPostProcessingFX = disabledPostProcessingFX.ToArray(); } List <string> disabledPostProcessingVolumes = new List <string>(postProcessing.Length); for (int i = 0; i < postProcessing.Length; i++) { PostProcessVolume pp = postProcessing[i]; if (pp && !pp.enabled) { disabledPostProcessingVolumes.Add(pp.name); } } saveData.DisabledPostProcessingVolumes = disabledPostProcessingVolumes.ToArray(); if (skyComponent) { saveData.DayAmbientIntensity = skyComponent.Day.AmbientMultiplier; saveData.NightAmbientIntensity = skyComponent.Night.AmbientMultiplier; saveData.LightSaturation = skyComponent.Ambient.Saturation; } saveData.AnisotropicFiltering = QualitySettings.anisotropicFiltering; saveData.LODDistanceMultiplier = QualitySettings.lodBias; saveData.LODAggressiveness = QualitySettings.maximumLODLevel; saveData.MaximumPixelLights = QualitySettings.pixelLightCount; saveData.Shadows = QualitySettings.shadows; saveData.SoftParticles = QualitySettings.softParticles; saveData.SoftVegetation = QualitySettings.softVegetation; saveData.AnimatedSkinQuality = QualitySettings.skinWeights; string saveFilePath = SaveFilePath; Directory.CreateDirectory(Path.GetDirectoryName(saveFilePath)); using (TextWriter stream = new StreamWriter(saveFilePath)) { new XmlSerializer(typeof(SaveData)).Serialize(stream, saveData); } }
private void WindowOnGUI(int id) { numberFieldIndex = 0; GUILayout.BeginVertical(GUI.skin.box); GUILayout.BeginHorizontal(GUILayout.Height(40f)); // Show save & load buttons at the top left corner if (GUILayout.Button("SAVE", GUILayout.Width(100f), GUILayout.Height(40f))) { SaveSettings(); GUI.FocusControl(null); // Release keyboard focus from TextFields } if (GUILayout.Button("LOAD", GUILayout.Width(100f), GUILayout.Height(40f))) { LoadSettings(); GUI.FocusControl(null); // Release keyboard focus from TextFields } GUILayout.FlexibleSpace(); // Show a close button at the top right corner if (GUILayout.Button("X", GUILayout.Width(40f), GUILayout.Height(40f))) { SetUIVisible(false); GUI.FocusControl(null); // Release keyboard focus from TextFields } GUILayout.EndHorizontal(); GUILayout.Space(5f); scrollPos = GUILayout.BeginScrollView(scrollPos); // Allow toggling components attached to MainCamera GUILayout.Space(15f); GUILayout.Label("= CAMERA COMPONENTS ="); for (int i = 0; i < components.Length; i++) { Behaviour component = components[i] as Behaviour; if (!component) { continue; } bool wasEnabled = component.enabled; bool isEnabled = GUILayout.Toggle(wasEnabled, component.GetType().FullName); if (isEnabled != wasEnabled) { component.enabled = isEnabled; } } // Allow toggling main post processing volume's effects GUILayout.Space(15f); GUILayout.Label("= POST PROCESSING ="); bool _guiEnabled = GUI.enabled; PostProcessLayer ppLayer = CameraManager.Get().m_MainCamera.GetComponent <PostProcessLayer>(); if (ppLayer) { if (!ppLayer.enabled) { GUILayout.Box("Camera's PostProcessLayer component must be enabled to modify these values.", wordWrappingBoxStyle); GUI.enabled = false; } GUILayout.BeginHorizontal(); GUILayout.Label("Anti Aliasing: ", GUILayout.ExpandWidth(false)); ppLayer.antialiasingMode = (PostProcessLayer.Antialiasing)GUILayout.Toolbar((int)ppLayer.antialiasingMode, antiAliasingModes); GUILayout.EndHorizontal(); } PostProcessVolume mainPP = PostProcessManager.Get().GetVolume(PostProcessManager.Effect.Game); if (mainPP && mainPP.profile) { bool _guiEnabled2 = GUI.enabled; if (!mainPP.enabled) { GUI.enabled = true; GUILayout.Box("Game post processing volume must be enabled to modify these values.", wordWrappingBoxStyle); GUI.enabled = false; } List <PostProcessEffectSettings> mainPP_FX = mainPP.profile.settings; for (int i = 0; i < mainPP_FX.Count; i++) { mainPP_FX[i].enabled.value = GUILayout.Toggle(mainPP_FX[i].enabled.value, mainPP_FX[i].name.Replace("(Clone)", "")); } GUI.enabled = _guiEnabled2; } // Allow toggling post processing volumes (has no effect if PostProcessLayer is disabled in CAMERA COMPONENTS) if (postProcessing.Length > 0) { GUILayout.Space(15f); GUILayout.Label("= POST PROCESSING VOLUMES ="); for (int i = 0; i < postProcessing.Length; i++) { PostProcessVolume pp = postProcessing[i]; if (!pp) { continue; } bool wasEnabled = pp.enabled; bool isEnabled = GUILayout.Toggle(wasEnabled, pp.name.Replace("PostProcess_", "")); if (isEnabled != wasEnabled) { pp.enabled = isEnabled; } } } GUI.enabled = _guiEnabled; // Allow changing light intensity if (skyComponent) { GUILayout.Space(15f); GUILayout.Label("= LIGHTING SETTINGS ="); skyComponent.Day.AmbientMultiplier = FloatField("Day Ambient Intensity: ", skyComponent.Day.AmbientMultiplier); skyComponent.Night.AmbientMultiplier = FloatField("Night Ambient Intensity: ", skyComponent.Night.AmbientMultiplier); skyComponent.Ambient.Saturation = FloatField("Light Saturation: ", skyComponent.Ambient.Saturation); } // Allow changing QualitySettings parameters GUILayout.Space(15f); GUILayout.Label("= QUALITY SETTINGS ="); bool aniso = GUILayout.Toggle(QualitySettings.anisotropicFiltering != AnisotropicFiltering.Disable, "Anisotrophic Filtering"); if (!aniso) { QualitySettings.anisotropicFiltering = AnisotropicFiltering.Disable; } else if (QualitySettings.anisotropicFiltering == AnisotropicFiltering.Disable) { QualitySettings.anisotropicFiltering = AnisotropicFiltering.Enable; } QualitySettings.lodBias = Mathf.Max(0.01f, FloatField("LOD Distance Multiplier: ", QualitySettings.lodBias)); QualitySettings.maximumLODLevel = IntField("LOD Aggressiveness: ", QualitySettings.maximumLODLevel); QualitySettings.pixelLightCount = Mathf.Max(0, IntField("Maximum Pixel Lights: ", QualitySettings.pixelLightCount)); bool shadows = GUILayout.Toggle(QualitySettings.shadows != ShadowQuality.Disable, "Shadows"); if (!shadows) { QualitySettings.shadows = ShadowQuality.Disable; } else if (QualitySettings.shadows == ShadowQuality.Disable) { QualitySettings.shadows = ShadowQuality.All; } QualitySettings.softParticles = GUILayout.Toggle(QualitySettings.softParticles, "Soft Particles"); QualitySettings.softVegetation = GUILayout.Toggle(QualitySettings.softVegetation, "Soft Vegetation"); int skinWeights = Mathf.Max(1, IntField("Animated Skin Quality: ", (int)QualitySettings.skinWeights)); if (skinWeights == 1) { QualitySettings.skinWeights = SkinWeights.OneBone; } else if (skinWeights == 2) { QualitySettings.skinWeights = SkinWeights.TwoBones; } else if (skinWeights <= 4) { QualitySettings.skinWeights = SkinWeights.FourBones; } else { QualitySettings.skinWeights = SkinWeights.Unlimited; } GUILayout.EndScrollView(); GUILayout.EndVertical(); GUI.DragWindow(); }