MIF_E31221263/Assets/Scripts/Enemy/FSM/FSMState.cs

40 lines
933 B
C#

using System;
[Serializable]
public class FSMState
{
public string ID;
public FSMAction[] Actions;
public FSMTransition[] Transitions;
public void UpdateState(EnemyBrain enemyBrain)
{
ExecuteActions();
ExecuteTransitions(enemyBrain);
}
private void ExecuteActions()
{
for (int i = 0; i < Actions.Length; i++)
{
Actions[i].Act();
}
}
private void ExecuteTransitions(EnemyBrain enemyBrain)
{
if (Transitions == null || Transitions.Length <= 0) return;
for (int i = 0; i < Transitions.Length; i++)
{
bool value = Transitions[i].Decision.Decide();
if (value)
{
enemyBrain.ChangeState(Transitions[i].TrueState);
}
else
{
enemyBrain.ChangeState(Transitions[i].FalseState);
}
}
}
}