Files
BH3/Assets/Scripts/Assembly-CSharp/MoleMole/MonoEffectPluginKeyMeshes.cs
2025-08-13 09:26:42 +08:00

79 lines
1.6 KiB
C#

using UnityEngine;
namespace MoleMole
{
public class MonoEffectPluginKeyMeshes : BaseMonoEffectPlugin
{
[Header("Drag consequent key transforms into this.")]
public Transform[] keyedTransforms;
[Header("How many frames does the keyed transform last")]
public int[] keyedFrames;
private float[] _keyedTime;
private float _timer;
private int _curKey;
protected override void Awake()
{
base.Awake();
_timer = 0f;
float num = 0f;
_keyedTime = new float[keyedFrames.Length];
for (int i = 0; i < _keyedTime.Length; i++)
{
num += (float)keyedFrames[i] * (1f / 60f);
_keyedTime[i] = num;
}
}
public override void Setup()
{
for (int i = 0; i < keyedTransforms.Length; i++)
{
keyedTransforms[i].gameObject.SetActive(false);
}
_curKey = 0;
keyedTransforms[_curKey].gameObject.SetActive(true);
_timer = 0f;
}
protected void Update()
{
if (_curKey >= _keyedTime.Length)
{
return;
}
_timer += Time.deltaTime * _effect.TimeScale;
int curKey = _curKey;
while (_timer > _keyedTime[_curKey])
{
_curKey++;
if (_curKey == _keyedTime.Length)
{
keyedTransforms[_keyedTime.Length - 1].gameObject.SetActive(false);
return;
}
}
if (curKey != _curKey)
{
keyedTransforms[curKey].gameObject.SetActive(false);
keyedTransforms[_curKey].gameObject.SetActive(true);
}
}
public override bool IsToBeRemove()
{
return _curKey >= _keyedTime.Length;
}
public override void SetDestroy()
{
keyedTransforms[_curKey].gameObject.SetActive(false);
_curKey = _keyedTime.Length;
}
}
}