Files
butchers-games-test/Assets/Scripts/Toolkit/OHM/UnityToolkit/FSM/FiniteStateMachine.cs
T
Boris Nikolaev 5f1e94b653 add project files
2026-08-14 01:58:31 +03:00

49 lines
901 B
C#

using UnityEngine;
namespace OHM.UnityToolkit.FSM
{
public class FiniteStateMachine<StateType> where StateType : StateBase<StateType>
{
private float _currentStateStartTime;
public StateType CurrentState { get; private set; }
public void SetState(StateType state)
{
if (state == null)
{
return;
}
if (CurrentState != null)
{
CurrentState.Leave();
}
_currentStateStartTime = Time.time;
CurrentState = state;
state.Enter();
}
public void Update()
{
if (CurrentState == null)
{
return;
}
CurrentState.Update();
if (CurrentState == null || CurrentState.NextState == null)
{
return;
}
if (Time.time - _currentStateStartTime >= CurrentState.MaxDuration)
{
SetState(CurrentState.NextState as StateType);
}
}
public float GetCurrentStateDuration()
{
return Time.time - _currentStateStartTime;
}
}
}