r2mods/ilspy_dump/ror2_csproj/EntityStates.VoidRaidCrab.J.../PreDeathState.cs

70 lines
1.4 KiB
C#
Raw Normal View History

2024-10-04 07:26:37 +00:00
using System.Collections.Generic;
using UnityEngine;
namespace EntityStates.VoidRaidCrab.Joint;
public class PreDeathState : BaseState
{
[SerializeField]
public float minDuration;
[SerializeField]
public string joint1Name;
[SerializeField]
public string joint2Name;
[SerializeField]
public string joint3Name;
[SerializeField]
public GameObject jointEffectPrefab;
public bool canProceed;
private List<GameObject> jointEffects = new List<GameObject>();
public override void OnEnter()
{
base.OnEnter();
canProceed = false;
jointEffects.Clear();
ChildLocator modelChildLocator = GetModelChildLocator();
if ((bool)modelChildLocator)
{
SpawnJointEffect(joint1Name, modelChildLocator);
SpawnJointEffect(joint2Name, modelChildLocator);
SpawnJointEffect(joint3Name, modelChildLocator);
}
}
public override void OnExit()
{
base.OnExit();
foreach (GameObject jointEffect in jointEffects)
{
Object.Destroy(jointEffect);
}
jointEffects.Clear();
}
public override void FixedUpdate()
{
base.FixedUpdate();
if (base.isAuthority && base.fixedAge > minDuration && canProceed)
{
outer.SetNextState(new DeathState());
}
}
private void SpawnJointEffect(string jointName, ChildLocator childLocator)
{
Transform transform = childLocator.FindChild(jointName);
if ((bool)transform)
{
GameObject item = Object.Instantiate(jointEffectPrefab, transform);
jointEffects.Add(item);
}
}
}