160 lines
6.7 KiB
C#
160 lines
6.7 KiB
C#
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 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(EnviroManager.instance == null)
|
|
return;
|
|
|
|
if(Settings.defaultQuality != null)
|
|
{
|
|
if(EnviroManager.instance.Sky != null)
|
|
{
|
|
EnviroManager.instance.Sky.Settings.skyMode = Settings.defaultQuality.skyOverride.skyMode;
|
|
}
|
|
|
|
if(EnviroManager.instance.VolumetricClouds != null)
|
|
{
|
|
EnviroManager.instance.VolumetricClouds.settingsQuality.volumetricClouds = Settings.defaultQuality.volumetricCloudsOverride.volumetricClouds;
|
|
EnviroManager.instance.VolumetricClouds.settingsQuality.lightningSupport = Settings.defaultQuality.volumetricCloudsOverride.lightningSupport;
|
|
EnviroManager.instance.VolumetricClouds.settingsQuality.variableBottomNoise = Settings.defaultQuality.volumetricCloudsOverride.variableBottomNoise;
|
|
EnviroManager.instance.VolumetricClouds.settingsQuality.downsampling = Settings.defaultQuality.volumetricCloudsOverride.downsampling;
|
|
EnviroManager.instance.VolumetricClouds.settingsQuality.stepsLayer1 = Settings.defaultQuality.volumetricCloudsOverride.stepsLayer1;
|
|
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.fogQualityMode = Settings.defaultQuality.fogOverride.fogQualityMode;
|
|
EnviroManager.instance.Fog.Settings.volumetrics = Settings.defaultQuality.fogOverride.volumetrics;
|
|
EnviroManager.instance.Fog.Settings.unityFog = Settings.defaultQuality.fogOverride.unityFog;
|
|
EnviroManager.instance.Fog.Settings.quality = Settings.defaultQuality.fogOverride.quality;
|
|
EnviroManager.instance.Fog.Settings.steps = Settings.defaultQuality.fogOverride.steps;
|
|
}
|
|
|
|
if(EnviroManager.instance.FlatClouds != null)
|
|
{
|
|
EnviroManager.instance.FlatClouds.settings.useFlatClouds = Settings.defaultQuality.flatCloudsOverride.flatClouds;
|
|
EnviroManager.instance.FlatClouds.settings.useCirrusClouds = Settings.defaultQuality.flatCloudsOverride.cirrusClouds;
|
|
EnviroManager.instance.FlatClouds.settings.flatCloudsShadowSteps = Settings.defaultQuality.flatCloudsOverride.flatCloudsShadowSteps;
|
|
|
|
|
|
}
|
|
|
|
if(EnviroManager.instance.Aurora != null)
|
|
{
|
|
EnviroManager.instance.Aurora.Settings.useAurora = Settings.defaultQuality.auroraOverride.aurora;
|
|
EnviroManager.instance.Aurora.Settings.auroraSteps = Settings.defaultQuality.auroraOverride.steps;
|
|
}
|
|
|
|
if(EnviroManager.instance.Effects != null)
|
|
{
|
|
EnviroManager.instance.Effects.Settings.particeEmissionRateModifier = Settings.defaultQuality.effectsOverride.particeEmissionRateModifier;
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
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(EnviroHelper.assetPath + "/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
|
|
}
|
|
}
|
|
} |