Files
pgs/Assets/Scripts/LightIntensityController.cs
2026-02-21 16:58:22 -08:00

53 lines
1.3 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine.Experimental.Rendering.Universal;
using UnityEngine;
public class LightIntensityController : MonoBehaviour
{
public enum LIUpdatePolicy {
Update,
FixedUpdate,
LateUpdate
};
[SerializeField] public LIUpdatePolicy updatePolicy;
[SerializeField] public bool oscillateIntensity;
[SerializeField] public float intensityAverage;
[SerializeField] public float oscillationAmplitude;
[SerializeField] public float oscillationPeriod;
[SerializeField] private Light2D light2DController;
// Start is called before the first frame update
void Start()
{
light2DController = GetComponent<Light2D>();
}
void SetIntensity() {
light2DController.intensity =
intensityAverage +
Mathf.Sin(Time.time / oscillationPeriod) * oscillationAmplitude;
}
private void Update() {
if (oscillateIntensity && updatePolicy == LIUpdatePolicy.Update) {
SetIntensity();
}
}
void FixedUpdate() {
if (oscillateIntensity && updatePolicy == LIUpdatePolicy.FixedUpdate) {
SetIntensity();
}
}
private void LateUpdate() {
if (updatePolicy == LIUpdatePolicy.LateUpdate) {
SetIntensity();
}
}
}