add weather and time

This commit is contained in:
XuGaoFeng
2026-05-09 09:10:52 +08:00
parent 48e0dea5e1
commit 0ca1b49fa7
639 changed files with 121558 additions and 102 deletions

View File

@@ -0,0 +1,160 @@
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
}
}
}