53 lines
1.3 KiB
C#
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();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|