Kasper Karlgren c84494a697 new files
2025-01-21 13:54:40 +01:00

98 lines
2.6 KiB
C#

// Distant Lands 2024
// COZY: Stylized Weather 3
// All code included in this file is protected under the Unity Asset Store Eula
using UnityEngine;
using UnityEngine.Rendering;
#if BUTO
using OccaSoftware.Buto.Runtime;
#endif
namespace DistantLands.Cozy
{
[ExecuteAlways]
public class CozyButoModule : CozyModule
{
#if BUTO
[SerializeField]
[CozySearchable("Buto", "profile", "volumetric fog")]
private ButoVolumetricFog fog;
[SerializeField]
private VolumeProfile volumeProfile;
[CozySearchable]
[Range(0, 2)] public float fogBrightnessMultiplier;
[CozySearchable]
[Range(0, 2)] public float fogDensityMultiplier;
void Awake()
{
TryFindFog();
}
void Update()
{
if (weatherSphere == null)
base.InitializeModule();
if (CozyWeather.FreezeUpdateInEditMode && !Application.isPlaying)
return;
if (fog)
{
fog.colorInfluence.Override(1);
fog.litColor.Override(weatherSphere.fogColor5 * fogBrightnessMultiplier);
fog.shadowedColor.Override(weatherSphere.fogColor5 * 0.5f * fogBrightnessMultiplier);
fog.fogDensity.Override(fogDensityMultiplier * 10 * weatherSphere.fogDensity);
}
else
{
TryFindFog();
}
}
void TryFindFog()
{
if (volumeProfile)
{
foreach (VolumeComponent component in volumeProfile.components)
{
if (component is ButoVolumetricFog)
{
fog = (ButoVolumetricFog)component;
return;
}
}
}
else
{
foreach (Volume vol in FindObjectsByType<Volume>(FindObjectsSortMode.None))
{
foreach (VolumeComponent component in vol.profile.components)
{
if (component is ButoVolumetricFog)
{
fog = (ButoVolumetricFog)component;
volumeProfile = vol.profile;
return;
}
}
}
}
Debug.Log("Could not find instance of Buto in the scene!");
}
#endif
}
}