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,193 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
namespace Enviro
{
[Serializable]
public class EnviroFlatClouds
{
// Cirrus
public bool useCirrusClouds = true;
public Texture2D cirrusCloudsTex;
[Range(0f,1f)]
public float cirrusCloudsAlpha;
[Range(0f,2f)]
public float cirrusCloudsColorPower;
[Range(0f,1f)]
public float cirrusCloudsCoverage;
[GradientUsage(true)]
public Gradient cirrusCloudsColor;
[Range(0f,1f)]
public float cirrusCloudsWindIntensity = 0.5f;
// Flat Clouds
public bool useFlatClouds = true;
public Texture2D flatCloudsBaseTex;
public Texture2D flatCloudsDetailTex;
[GradientUsage(true)]
public Gradient flatCloudsLightColor;
[GradientUsage(true)]
public Gradient flatCloudsAmbientColor;
[Range(0f,2f)]
public float flatCloudsLightIntensity = 1.0f;
[Range(0f,2f)]
public float flatCloudsAmbientIntensity = 1.0f;
[Range(0f,2f)]
public float flatCloudsShadowIntensity = 0.6f;
[Range(1,12)]
public float flatCloudsShadowSteps = 8;
[Range(0f,1f)]
public float flatCloudsHGPhase = 0.6f;
[Range(0f,2f)]
public float flatCloudsCoverage = 1f;
[Range(0f,2f)]
public float flatCloudsDensity = 1f;
public float flatCloudsAltitude = 10f;
public bool flatCloudsTonemapping;
public float flatCloudsBaseTiling = 4f;
public float flatCloudsDetailTiling = 10f;
[Range(0f,1f)]
public float flatCloudsWindIntensity = 0.2f;
[Range(0f,1f)]
public float flatCloudsDetailWindIntensity = 0.5f;
}
[Serializable]
public class EnviroFlatCloudsModule : EnviroModule
{
public Enviro.EnviroFlatClouds settings;
public EnviroFlatCloudsModule preset;
[HideInInspector]
public bool showCirrusCloudsControls;
[HideInInspector]
public bool show2DCloudsControls;
[HideInInspector]
public Vector2 cloudFlatBaseAnim;
[HideInInspector]
public Vector2 cloudFlatDetailAnim;
[HideInInspector]
public Vector2 cirrusAnim;
// Update Method
public override void UpdateModule ()
{
if(!active)
return;
if(EnviroManager.instance == null)
return;
UpdateWind ();
if(settings.useCirrusClouds)
{
Shader.SetGlobalFloat("_CirrusClouds",1f);
if(settings.cirrusCloudsTex != null)
Shader.SetGlobalTexture("_CirrusCloudMap",settings.cirrusCloudsTex);
Shader.SetGlobalFloat("_CirrusCloudAlpha",settings.cirrusCloudsAlpha);
Shader.SetGlobalFloat("_CirrusCloudCoverage",settings.cirrusCloudsCoverage);
Shader.SetGlobalFloat("_CirrusCloudColorPower",settings.cirrusCloudsColorPower);
Shader.SetGlobalColor("_CirrusCloudColor",settings.cirrusCloudsColor.Evaluate(EnviroManager.instance.solarTime));
Shader.SetGlobalVector("_CirrusCloudAnimation", new Vector4(cirrusAnim.x, cirrusAnim.y, 0f, 0f));
}
else
{
Shader.SetGlobalFloat("_CirrusClouds",0f);
}
if(settings.useFlatClouds)
{
Shader.SetGlobalFloat("_FlatClouds",1f);
if(settings.flatCloudsBaseTex != null)
Shader.SetGlobalTexture("_FlatCloudsBaseTexture",settings.flatCloudsBaseTex);
if(settings.flatCloudsDetailTex != null)
Shader.SetGlobalTexture("_FlatCloudsDetailTexture",settings.flatCloudsDetailTex);
//_FlatCloudsAnimation;
Shader.SetGlobalColor("_FlatCloudsLightColor", settings.flatCloudsLightColor.Evaluate(EnviroManager.instance.solarTime));
Shader.SetGlobalColor("_FlatCloudsAmbientColor", settings.flatCloudsAmbientColor.Evaluate(EnviroManager.instance.solarTime));
Vector3 lightDirection = Vector3.forward;
if(EnviroManager.instance.Objects.directionalLight != null)
lightDirection = EnviroManager.instance.Objects.directionalLight.transform.forward;
Shader.SetGlobalVector("_FlatCloudsLightDirection",lightDirection);
Shader.SetGlobalVector("_FlatCloudsLightingParams",new Vector4(settings.flatCloudsLightIntensity * 10f, settings.flatCloudsAmbientIntensity, settings.flatCloudsShadowIntensity,settings.flatCloudsHGPhase));
Shader.SetGlobalVector("_FlatCloudsParams",new Vector4(settings.flatCloudsCoverage, settings.flatCloudsDensity * 5f, settings.flatCloudsAltitude,settings.flatCloudsShadowSteps));
Shader.SetGlobalVector("_FlatCloudsTiling",new Vector4(settings.flatCloudsBaseTiling, settings.flatCloudsDetailTiling, 0f,0f));
Shader.SetGlobalVector("_FlatCloudsAnimation", new Vector4(cloudFlatBaseAnim.x, cloudFlatBaseAnim.y, cloudFlatDetailAnim.x, cloudFlatDetailAnim.y));
}
else
{
Shader.SetGlobalFloat("_FlatClouds",0f);
}
}
//Save and Load
public void LoadModuleValues ()
{
if(preset != null)
{
settings = JsonUtility.FromJson<Enviro.EnviroFlatClouds>(JsonUtility.ToJson(preset.settings));
}
else
{
Debug.Log("Please assign a saved module to load from!");
}
}
private void UpdateWind ()
{
if(EnviroManager.instance.Environment != null)
{
cloudFlatBaseAnim += new Vector2(((EnviroManager.instance.Environment.Settings.windSpeed * EnviroManager.instance.Environment.Settings.windDirectionX) * settings.flatCloudsWindIntensity) * Time.deltaTime * 0.01f, ((EnviroManager.instance.Environment.Settings.windSpeed * EnviroManager.instance.Environment.Settings.windDirectionY) * settings.flatCloudsWindIntensity) * Time.deltaTime * 0.01f);
cloudFlatDetailAnim += new Vector2(((EnviroManager.instance.Environment.Settings.windSpeed * EnviroManager.instance.Environment.Settings.windDirectionX) * settings.flatCloudsDetailWindIntensity) * Time.deltaTime * 0.1f, ((EnviroManager.instance.Environment.Settings.windSpeed * EnviroManager.instance.Environment.Settings.windDirectionY) * settings.flatCloudsDetailWindIntensity) * Time.deltaTime * 0.1f);
cirrusAnim += new Vector2(((EnviroManager.instance.Environment.Settings.windSpeed * EnviroManager.instance.Environment.Settings.windDirectionX) * settings.cirrusCloudsWindIntensity) * Time.deltaTime * 0.01f, ((EnviroManager.instance.Environment.Settings.windSpeed * EnviroManager.instance.Environment.Settings.windDirectionY) * settings.cirrusCloudsWindIntensity) * Time.deltaTime * 0.01f);
}
else
{
cloudFlatBaseAnim += new Vector2(settings.flatCloudsWindIntensity * Time.deltaTime * 0.01f,settings.flatCloudsWindIntensity * Time.deltaTime * 0.01f);
cloudFlatDetailAnim += new Vector2(settings.flatCloudsDetailWindIntensity * Time.deltaTime * 0.1f,settings.flatCloudsDetailWindIntensity * Time.deltaTime * 0.1f);
cirrusAnim += new Vector2(settings.cirrusCloudsWindIntensity * Time.deltaTime * 0.01f,settings.cirrusCloudsWindIntensity * Time.deltaTime * 0.01f);
}
cirrusAnim = EnviroHelper.PingPong(cirrusAnim);
cloudFlatBaseAnim = EnviroHelper.PingPong(cloudFlatBaseAnim);
cloudFlatDetailAnim = EnviroHelper.PingPong(cloudFlatDetailAnim);
}
public void SaveModuleValues ()
{
#if UNITY_EDITOR
EnviroFlatCloudsModule t = ScriptableObject.CreateInstance<EnviroFlatCloudsModule>();
t.name = "Flat Clouds Preset";
t.settings = JsonUtility.FromJson<Enviro.EnviroFlatClouds>(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 (EnviroFlatCloudsModule module)
{
module.settings = JsonUtility.FromJson<Enviro.EnviroFlatClouds>(JsonUtility.ToJson(settings));
#if UNITY_EDITOR
UnityEditor.EditorUtility.SetDirty(module);
UnityEditor.AssetDatabase.SaveAssets();
#endif
}
}
}

View File

@@ -0,0 +1,18 @@
fileFormatVersion: 2
guid: b982c9fba9faf3a43bf4a9e7ced867d7
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/FlatClouds/EnviroFlatCloudsModule.cs
uploadId: 660896

View File

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

View File

@@ -0,0 +1,133 @@
%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: b982c9fba9faf3a43bf4a9e7ced867d7, type: 3}
m_Name: Default Flat Clouds Preset
m_EditorClassIdentifier:
showModuleInspector: 0
showSaveLoad: 0
active: 1
settings:
useCirrusClouds: 1
cirrusCloudsTex: {fileID: 2800000, guid: 75c66597a85001644b2de40147b8d196, type: 3}
cirrusCloudsAlpha: 0.5
cirrusCloudsColorPower: 1
cirrusCloudsCoverage: 0.5
cirrusCloudsColor:
serializedVersion: 2
key0: {r: 0, g: 0, b: 0, a: 1}
key1: {r: 0, g: 0, b: 0, a: 1}
key2: {r: 1, g: 0.18127085, b: 0, a: 0.9843137}
key3: {r: 0.91764706, g: 0.78431374, b: 0.6431373, a: 0.9843137}
key4: {r: 0.91764706, g: 0.8627451, b: 0.80784315, a: 0.9843137}
key5: {r: 0.4627451, g: 0.9843137, b: 0.83137256, a: 0.9843137}
key6: {r: 0.4627451, g: 0.9843137, b: 0.83137256, a: 0.9843137}
key7: {r: 0.4627451, g: 0.9843137, b: 0.83137256, a: 0.9843137}
ctime0: 0
ctime1: 29696
ctime2: 31641
ctime3: 36700
ctime4: 65535
ctime5: 0
ctime6: 0
ctime7: 0
atime0: 0
atime1: 65535
atime2: 0
atime3: 0
atime4: 0
atime5: 0
atime6: 0
atime7: 0
m_Mode: 0
m_NumColorKeys: 5
m_NumAlphaKeys: 2
cirrusCloudsWindIntensity: 0.5
useFlatClouds: 0
flatCloudsBaseTex: {fileID: 2800000, guid: d178a8cc601a00f48914c0bfd42c77d5, type: 3}
flatCloudsDetailTex: {fileID: 2800000, guid: 2e0e351a1a0d49545a3dd0264e7ac2d9, type: 3}
flatCloudsLightColor:
serializedVersion: 2
key0: {r: 0, g: 0, b: 0, a: 1}
key1: {r: 0.12615699, g: 0.13726778, b: 0.1981132, a: 1}
key2: {r: 1, g: 0.18127085, b: 0, a: 0}
key3: {r: 0.91764706, g: 0.78431374, b: 0.6431373, a: 0}
key4: {r: 0.91764706, g: 0.8627451, b: 0.80784315, a: 0}
key5: {r: 0, g: 0, b: 0, a: 0}
key6: {r: 0, g: 0, b: 0, a: 0}
key7: {r: 0, g: 0, b: 0, a: 0}
ctime0: 0
ctime1: 29696
ctime2: 31641
ctime3: 36700
ctime4: 65535
ctime5: 0
ctime6: 0
ctime7: 0
atime0: 0
atime1: 65535
atime2: 0
atime3: 0
atime4: 0
atime5: 0
atime6: 0
atime7: 0
m_Mode: 0
m_NumColorKeys: 5
m_NumAlphaKeys: 2
flatCloudsAmbientColor:
serializedVersion: 2
key0: {r: 0, g: 0, b: 0, a: 1}
key1: {r: 0.06781771, g: 0.07401677, b: 0.11320752, a: 1}
key2: {r: 0.17319329, g: 0.2085657, b: 0.26415092, a: 0}
key3: {r: 0.23535956, g: 0.28180525, b: 0.4056604, a: 0}
key4: {r: 0, g: 0, b: 0, a: 0}
key5: {r: 0, g: 0, b: 0, a: 0}
key6: {r: 0, g: 0, b: 0, a: 0}
key7: {r: 0, g: 0, b: 0, a: 0}
ctime0: 0
ctime1: 29491
ctime2: 33539
ctime3: 65535
ctime4: 0
ctime5: 0
ctime6: 0
ctime7: 0
atime0: 0
atime1: 65535
atime2: 0
atime3: 0
atime4: 0
atime5: 0
atime6: 0
atime7: 0
m_Mode: 0
m_NumColorKeys: 4
m_NumAlphaKeys: 2
flatCloudsLightIntensity: 0.478
flatCloudsAmbientIntensity: 0.969
flatCloudsShadowIntensity: 0.6
flatCloudsShadowSteps: 8
flatCloudsHGPhase: 0.8
flatCloudsCoverage: 1.189
flatCloudsDensity: 1
flatCloudsAltitude: 1
flatCloudsTonemapping: 0
flatCloudsBaseTiling: 1
flatCloudsDetailTiling: 10
flatCloudsWindIntensity: 1
flatCloudsDetailWindIntensity: 0.5
preset: {fileID: 0}
showCirrusCloudsControls: 0
show2DCloudsControls: 0
cloudFlatBaseAnim: {x: 0, y: 0}
cloudFlatDetailAnim: {x: 0, y: 0}
cirrusAnim: {x: 0, y: 0}

View File

@@ -0,0 +1,16 @@
fileFormatVersion: 2
guid: 0fcdd472bd6a8ec429fc1e9bc978c4fa
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/FlatClouds/Preset/Default
Flat Clouds Preset.asset
uploadId: 660896