Cozy Wather + buld systeme
This commit is contained in:
@@ -0,0 +1,96 @@
|
||||
// Distant Lands 2025
|
||||
// COZY: Stylized Weather 3
|
||||
// All code included in this file is protected under the Unity Asset Store Eula
|
||||
|
||||
using System;
|
||||
using UnityEngine;
|
||||
#if THE_VISUAL_ENGINE
|
||||
using TheVisualEngine;
|
||||
#elif THE_VEGETATION_ENGINE
|
||||
using TheVegetationEngine;
|
||||
#endif
|
||||
|
||||
namespace DistantLands.Cozy
|
||||
{
|
||||
|
||||
[ExecuteAlways]
|
||||
public class CozyPureNatureModule : CozyModule
|
||||
{
|
||||
|
||||
public enum UpdateFrequency { everyFrame, onAwake, viaScripting }
|
||||
public UpdateFrequency updateFrequency;
|
||||
|
||||
private CozyWindModule wind;
|
||||
|
||||
|
||||
[Tooltip("Base wind animate the trunks")]
|
||||
[Range(0f, 5f)]
|
||||
public float baseWindPower = 3f;
|
||||
[Tooltip("Base wind animate the trunks")]
|
||||
public float baseWindSpeed = 1f;
|
||||
|
||||
[Tooltip("Bursts are managed by a moving World-Space noise that multiply the base wind speed and power")]
|
||||
[Range(0f, 10f)]
|
||||
public float burstsPower = 0.5f;
|
||||
[Tooltip("Speed of the Bursts noise")]
|
||||
public float burstsSpeed = 5f;
|
||||
[Tooltip("Size of the Bursts noise in Word-Space")]
|
||||
public float burstsScale = 10f;
|
||||
|
||||
[Tooltip("Micro wind animate the leaves")]
|
||||
[Range(0f, 1f)]
|
||||
public float microPower = 0.1f;
|
||||
[Tooltip("Micro wind animate the leaves")]
|
||||
public float microSpeed = 1f;
|
||||
[Tooltip("Micro wind animate the leaves")]
|
||||
public float microFrequency = 3f;
|
||||
|
||||
public float renderDistance = 30f;
|
||||
|
||||
public override void InitializeModule()
|
||||
{
|
||||
if (!enabled)
|
||||
return;
|
||||
|
||||
SetupModule(new Type[1] { typeof(CozyWindModule) });
|
||||
wind = weatherSphere.GetModule<CozyWindModule>();
|
||||
base.InitializeModule();
|
||||
|
||||
if (updateFrequency != UpdateFrequency.viaScripting)
|
||||
UpdateIntegration();
|
||||
|
||||
}
|
||||
|
||||
|
||||
// Update is called once per frame
|
||||
public override void CozyUpdateLoop()
|
||||
{
|
||||
if (CozyWeather.FreezeUpdateInEditMode && !Application.isPlaying)
|
||||
return;
|
||||
|
||||
if (updateFrequency == UpdateFrequency.everyFrame)
|
||||
UpdateIntegration();
|
||||
}
|
||||
|
||||
public void UpdateIntegration()
|
||||
{
|
||||
|
||||
UpdateWind();
|
||||
|
||||
}
|
||||
|
||||
void UpdateWind()
|
||||
{
|
||||
Shader.SetGlobalFloat("WindPower", baseWindPower * wind.windAmount);
|
||||
Shader.SetGlobalFloat("WindSpeed", baseWindSpeed * wind.windSpeed);
|
||||
Shader.SetGlobalFloat("WindBurstsPower", burstsPower * wind.windGusting);
|
||||
Shader.SetGlobalFloat("WindBurstsSpeed", burstsSpeed * wind.windSpeed);
|
||||
Shader.SetGlobalFloat("WindBurstsScale", burstsScale);
|
||||
Shader.SetGlobalFloat("MicroPower", microPower * wind.windGusting);
|
||||
Shader.SetGlobalFloat("MicroSpeed", microSpeed * wind.windSpeed);
|
||||
Shader.SetGlobalFloat("MicroFrequency", microFrequency);
|
||||
Shader.SetGlobalFloat("GrassRenderDist", renderDistance);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user