123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using System;
- namespace Enviro
- {
- [Serializable]
- public class EnviroQualities
- {
- public EnviroQuality defaultQuality;
- public List<EnviroQuality> Qualities = new List<EnviroQuality>();
- }
- [Serializable]
- public class EnviroQualityModule : EnviroModule
- {
- public Enviro.EnviroQualities Settings = new EnviroQualities();
- public EnviroQualityModule preset;
- public bool showQualityControls;
-
- public override void Enable()
- {
- base.Enable();
- //Make sure that we always have at least one quality profile!
- if(Settings.defaultQuality == null)
- {
- if(Settings.Qualities.Count > 0)
- {
- Settings.defaultQuality = Settings.Qualities[0];
- }
- else
- {
- CreateNewQuality();
- Settings.defaultQuality = Settings.Qualities[0];
- }
- }
- }
- public override void UpdateModule ()
- {
- if(Settings.defaultQuality != null)
- {
- if(EnviroManager.instance.VolumetricClouds != null)
- {
- EnviroManager.instance.VolumetricClouds.settingsQuality.volumetricClouds = Settings.defaultQuality.volumetricCloudsOverride.volumetricClouds;
- EnviroManager.instance.VolumetricClouds.settingsGlobal.dualLayer = Settings.defaultQuality.volumetricCloudsOverride.dualLayer;
- EnviroManager.instance.VolumetricClouds.settingsQuality.downsampling = Settings.defaultQuality.volumetricCloudsOverride.downsampling;
- EnviroManager.instance.VolumetricClouds.settingsQuality.stepsLayer1 = Settings.defaultQuality.volumetricCloudsOverride.stepsLayer1;
- EnviroManager.instance.VolumetricClouds.settingsQuality.stepsLayer2 = Settings.defaultQuality.volumetricCloudsOverride.stepsLayer2;
- EnviroManager.instance.VolumetricClouds.settingsQuality.blueNoiseIntensity = Settings.defaultQuality.volumetricCloudsOverride.blueNoiseIntensity;
- EnviroManager.instance.VolumetricClouds.settingsQuality.reprojectionBlendTime = Settings.defaultQuality.volumetricCloudsOverride.reprojectionBlendTime;
- EnviroManager.instance.VolumetricClouds.settingsQuality.lodDistance = Settings.defaultQuality.volumetricCloudsOverride.lodDistance;
- }
- if(EnviroManager.instance.Fog != null)
- {
- EnviroManager.instance.Fog.Settings.fog = Settings.defaultQuality.fogOverride.fog;
- EnviroManager.instance.Fog.Settings.volumetrics = Settings.defaultQuality.fogOverride.volumetrics;
- EnviroManager.instance.Fog.Settings.quality = Settings.defaultQuality.fogOverride.quality;
- EnviroManager.instance.Fog.Settings.steps = Settings.defaultQuality.fogOverride.steps;
- }
- }
- }
-
- public void CleanupQualityList()
- {
- for (int i = 0; i < Settings.Qualities.Count; i++)
- {
- if(Settings.Qualities[i] == null)
- Settings.Qualities.RemoveAt(i);
- }
- }
-
- //Add new or assigned quality
- public void CreateNewQuality()
- {
- EnviroQuality quality = EnviroQualityCreation.CreateMyAsset();
- Settings.Qualities.Add(quality);
- }
- /// Removes the quality from the list.
- public void RemoveQuality(EnviroQuality quality)
- {
- Settings.Qualities.Remove(quality);
- }
- //Save and Load
- public void LoadModuleValues ()
- {
- if(preset != null)
- {
- Settings = JsonUtility.FromJson<Enviro.EnviroQualities>(JsonUtility.ToJson(preset.Settings));
- }
- else
- {
- Debug.Log("Please assign a saved module to load from!");
- }
- }
- public void SaveModuleValues ()
- {
- #if UNITY_EDITOR
- EnviroQualityModule t = ScriptableObject.CreateInstance<EnviroQualityModule>();
- t.name = "Quality Module Preset";
- t.Settings = JsonUtility.FromJson<Enviro.EnviroQualities>(JsonUtility.ToJson(Settings));
-
- string assetPathAndName = UnityEditor.AssetDatabase.GenerateUniqueAssetPath("Assets/Enviro 3" + "/New " + t.name + ".asset");
- UnityEditor.AssetDatabase.CreateAsset(t, assetPathAndName);
- UnityEditor.AssetDatabase.SaveAssets();
- UnityEditor.AssetDatabase.Refresh();
- #endif
- }
- public void SaveModuleValues (EnviroQualityModule module)
- {
- module.Settings = JsonUtility.FromJson<Enviro.EnviroQualities>(JsonUtility.ToJson(Settings));
- #if UNITY_EDITOR
- UnityEditor.EditorUtility.SetDirty(module);
- UnityEditor.AssetDatabase.SaveAssets();
- #endif
- }
- }
- }
|