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,101 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
namespace Enviro
{
[Serializable]
public class EnviroSkyQualitySettings
{
public EnviroSky.SkyMode skyMode = EnviroSky.SkyMode.Normal;
}
[Serializable]
public class EnviroVolumetricCloudsQualitySettings
{
public bool volumetricClouds = true;
public bool lightningSupport = true;
public bool variableBottomNoise = false;
public int downsampling = 4;
public int stepsLayer1 = 128;
public float blueNoiseIntensity = 1f;
public float reprojectionBlendTime = 10f;
public float lodDistance = 0.25f;
}
[Serializable]
public class EnviroFlatCloudsQualitySettings
{
public bool cirrusClouds = true;
public bool flatClouds = true;
public int flatCloudsShadowSteps = 8;
}
[Serializable]
public class EnviroAuroraQualitySettings
{
public bool aurora = true;
[Range(6,32)]
public int steps = 32;
}
[Serializable]
public class EnviroEffectsQualitySettings
{
[Range(0f,2f)]
public float particeEmissionRateModifier = 1f;
}
[Serializable]
public class EnviroFogQualitySettings
{
public bool fog = true;
public EnviroFogSettings.FogQualityMode fogQualityMode = EnviroFogSettings.FogQualityMode.Normal;
public bool volumetrics = true;
public bool unityFog = false;
public EnviroFogSettings.Quality quality;
[Range(16,96)]
public int steps = 32;
}
[Serializable]
public class EnviroQuality : ScriptableObject
{
//Inspector
public bool showEditor, showSky, showVolumeClouds, showFog, showFlatClouds, showEffects, showAurora;
public EnviroSkyQualitySettings skyOverride;
public EnviroVolumetricCloudsQualitySettings volumetricCloudsOverride;
public EnviroFogQualitySettings fogOverride;
public EnviroFlatCloudsQualitySettings flatCloudsOverride;
public EnviroAuroraQualitySettings auroraOverride;
public EnviroEffectsQualitySettings effectsOverride;
}
public class EnviroQualityCreation
{
#if UNITY_EDITOR
[UnityEditor.MenuItem("Assets/Create/Enviro3/Quality")]
#endif
public static EnviroQuality CreateMyAsset()
{
EnviroQuality wpreset = ScriptableObject.CreateInstance<EnviroQuality>();
#if UNITY_EDITOR
// Create and save the new profile with unique name
string path = UnityEditor.AssetDatabase.GetAssetPath (UnityEditor.Selection.activeObject);
if (path == "")
{
path = EnviroHelper.assetPath;
}
string assetPathAndName = UnityEditor.AssetDatabase.GenerateUniqueAssetPath (path + "/New " + "Quality" + ".asset");
UnityEditor.AssetDatabase.CreateAsset (wpreset, assetPathAndName);
UnityEditor.AssetDatabase.SaveAssets ();
UnityEditor.AssetDatabase.Refresh();
#endif
return wpreset;
}
}
}

View File

@@ -0,0 +1,18 @@
fileFormatVersion: 2
guid: cfcd10a1b99270a488a19072f6176530
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 236601
packageName: Enviro 3 - Sky and Weather
packageVersion: 3.1.2
assetPath: Assets/Enviro 3 - Sky and Weather/Scripts/Runtime/Modules/Quality/EnviroQuality.cs
uploadId: 660896

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
}
}
}

View File

@@ -0,0 +1,18 @@
fileFormatVersion: 2
guid: 456bf221b186fde4096dcf2c1841b35a
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 236601
packageName: Enviro 3 - Sky and Weather
packageVersion: 3.1.2
assetPath: Assets/Enviro 3 - Sky and Weather/Scripts/Runtime/Modules/Quality/EnviroQualityModule.cs
uploadId: 660896

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: c0fd49af59609e246bc7e5be19f334f3
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,27 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 456bf221b186fde4096dcf2c1841b35a, type: 3}
m_Name: Default Quality Module Preset
m_EditorClassIdentifier:
showModuleInspector: 0
showSaveLoad: 0
active: 1
Settings:
defaultQuality: {fileID: 11400000, guid: 60e887b1524da0a4a8f1318ef102e22a, type: 2}
Qualities:
- {fileID: 11400000, guid: a002704085c17f1439758fcee25df529, type: 2}
- {fileID: 11400000, guid: 2e0aaa075bca92245a9e8300b7eace9c, type: 2}
- {fileID: 11400000, guid: 60e887b1524da0a4a8f1318ef102e22a, type: 2}
- {fileID: 11400000, guid: e653a1dee3c47bb42a13eba46069720c, type: 2}
- {fileID: 11400000, guid: ce2712a713d73094fa9c2775886f182d, type: 2}
preset: {fileID: 0}
showQualityControls: 0

View File

@@ -0,0 +1,16 @@
fileFormatVersion: 2
guid: 87fc95b058753524e807e3f229e77c2f
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 236601
packageName: Enviro 3 - Sky and Weather
packageVersion: 3.1.2
assetPath: Assets/Enviro 3 - Sky and Weather/Scripts/Runtime/Modules/Quality/Preset/Default
Quality Module Preset.asset
uploadId: 660896