BITKit/Packages/Runtime/Animator/AnimatorStateHelper.cs

34 lines
1.2 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace BITKit
{
public class AnimatorStateHelper : StateMachineBehaviour
{
public string stateName;
IGenericEvent<string> genericEvent;
public override void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
EnsureValid(animator);
genericEvent?.Invoke<string>(Constant.Animation.OnPlay, stateName);
}
public override void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
EnsureValid(animator);
genericEvent?.Invoke<AnimatorStateInfo>(stateName, stateInfo);
}
public override void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
EnsureValid(animator);
genericEvent?.Invoke<string>(Constant.Animation.OnPlayEnd, stateName);
genericEvent?.Invoke<AnimatorStateInfo>(stateName, new());
}
void EnsureValid(Animator animator)
{
if (genericEvent is null)
{
genericEvent = animator.GetComponent<IGenericEvent<string>>();
}
}
}
}