From c5f145786f4c6d2fe4bea831dfc16e52228920a5 Mon Sep 17 00:00:00 2001 From: chai <215380520@qq.com> Date: Sun, 19 May 2024 16:05:01 +0800 Subject: * move --- Thronefall_1_0/GameCode/TimesensitiveLight.cs | 68 +++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 Thronefall_1_0/GameCode/TimesensitiveLight.cs (limited to 'Thronefall_1_0/GameCode/TimesensitiveLight.cs') diff --git a/Thronefall_1_0/GameCode/TimesensitiveLight.cs b/Thronefall_1_0/GameCode/TimesensitiveLight.cs new file mode 100644 index 0000000..158fa2b --- /dev/null +++ b/Thronefall_1_0/GameCode/TimesensitiveLight.cs @@ -0,0 +1,68 @@ +using System.Collections; +using UnityEngine; + +[RequireComponent(typeof(Light))] +public class TimesensitiveLight : MonoBehaviour, DayNightCycle.IDaytimeSensitive +{ + public float dayIntensity = 1f; + + public float nightIntensity; + + public float blendTime = 3f; + + private Light target; + + public void OnDawn_AfterSunrise() + { + } + + public void OnDawn_BeforeSunrise() + { + StopAllCoroutines(); + StartCoroutine(BlendToDay(blendTime)); + } + + public void OnDusk() + { + StopAllCoroutines(); + StartCoroutine(BlendToNight(blendTime)); + } + + private void Start() + { + target = GetComponent(); + DayNightCycle.Instance.RegisterDaytimeSensitiveObject(this); + if (DayNightCycle.Instance.CurrentTimestate == DayNightCycle.Timestate.Day) + { + StartCoroutine(BlendToDay(0f)); + } + else + { + StartCoroutine(BlendToNight(0f)); + } + } + + private IEnumerator BlendToNight(float duration) + { + float timer = 0f; + while (timer <= duration) + { + timer += Time.deltaTime; + target.intensity = Mathf.Lerp(dayIntensity, nightIntensity, Mathf.InverseLerp(0f, duration, timer)); + yield return null; + } + target.intensity = nightIntensity; + } + + private IEnumerator BlendToDay(float duration) + { + float timer = 0f; + while (timer <= duration) + { + timer += Time.deltaTime; + target.intensity = Mathf.Lerp(nightIntensity, dayIntensity, Mathf.InverseLerp(0f, duration, timer)); + yield return null; + } + target.intensity = dayIntensity; + } +} -- cgit v1.1-26-g67d0