您最多选择25个主题
主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
59 行
1.8 KiB
59 行
1.8 KiB
using UnityEngine;
|
|
using System.Collections.Generic;
|
|
using UnityEngine.Rendering.HighDefinition;
|
|
|
|
public class LightAnimationManager : MonoBehaviour
|
|
{
|
|
private HDAdditionalLightData additionalLightData;
|
|
private MaterialEmissionOverride matBlockHandler;
|
|
private float _oldValue;
|
|
|
|
//private LightEventAnimation[] lightAnimations;
|
|
private List<LightEventAnimation> lightAnimations = new List<LightEventAnimation>();
|
|
|
|
private void OnEnable()
|
|
{
|
|
//lightAnimations = GetComponents<LightEventAnimation>();
|
|
if (gameObject.GetComponent<HDAdditionalLightData>())
|
|
additionalLightData = gameObject.GetComponent<HDAdditionalLightData>();
|
|
else if (gameObject.GetComponent<MaterialEmissionOverride>())
|
|
matBlockHandler = gameObject.GetComponent<MaterialEmissionOverride>();
|
|
}
|
|
|
|
public void RegisterEvent(LightEventAnimation lightEvent)
|
|
{
|
|
lightAnimations.Add(lightEvent);
|
|
}
|
|
|
|
void Update()
|
|
{
|
|
if (additionalLightData == null && matBlockHandler == null)
|
|
return;
|
|
if (lightAnimations.Count <= 0)
|
|
return;
|
|
var currentValue = 1.0f;
|
|
foreach (var lightAnimator in lightAnimations)
|
|
{
|
|
currentValue *= lightAnimator.getCurrentValue();
|
|
}
|
|
//if( _oldValue != currentValue )
|
|
//{
|
|
if (matBlockHandler != null)
|
|
matBlockHandler.emissiveDimmer = currentValue;
|
|
else if (additionalLightData != null)
|
|
additionalLightData.lightDimmer = currentValue;
|
|
|
|
_oldValue = currentValue;
|
|
//}
|
|
}
|
|
|
|
public void SetDimmer(float dimmer)
|
|
{
|
|
OnEnable();
|
|
|
|
if (matBlockHandler != null)
|
|
matBlockHandler.emissiveDimmer = dimmer;
|
|
if (additionalLightData != null)
|
|
additionalLightData.lightDimmer = dimmer;
|
|
}
|
|
}
|