52 lines
990 B
C#
52 lines
990 B
C#
|
using System;
|
||
|
using UnityEngine;
|
||
|
|
||
|
namespace RoR2;
|
||
|
|
||
|
public class FlickerLight : MonoBehaviour
|
||
|
{
|
||
|
public Light light;
|
||
|
|
||
|
public Wave[] sinWaves;
|
||
|
|
||
|
private float initialLightIntensity;
|
||
|
|
||
|
private float workingLightIntensity;
|
||
|
|
||
|
private float stopwatch;
|
||
|
|
||
|
private float randomPhase;
|
||
|
|
||
|
private void Start()
|
||
|
{
|
||
|
initialLightIntensity = light.intensity;
|
||
|
workingLightIntensity = initialLightIntensity;
|
||
|
randomPhase = UnityEngine.Random.Range(0f, MathF.PI * 2f);
|
||
|
for (int i = 0; i < sinWaves.Length; i++)
|
||
|
{
|
||
|
sinWaves[i].cycleOffset += randomPhase;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
private void OnEnable()
|
||
|
{
|
||
|
workingLightIntensity = initialLightIntensity;
|
||
|
}
|
||
|
|
||
|
private void Update()
|
||
|
{
|
||
|
stopwatch += Time.deltaTime;
|
||
|
float num = workingLightIntensity;
|
||
|
for (int i = 0; i < sinWaves.Length; i++)
|
||
|
{
|
||
|
num *= 1f + sinWaves[i].Evaluate(stopwatch);
|
||
|
}
|
||
|
light.intensity = num;
|
||
|
}
|
||
|
|
||
|
public void UpdateLightIntensityMultiplier(float multiplier)
|
||
|
{
|
||
|
workingLightIntensity = initialLightIntensity * multiplier;
|
||
|
}
|
||
|
}
|