This repository has been archived on 2025-04-11. You can view files and clone it, but cannot push or open issues or pull requests.
project-undercover/Project Undercover/Assets/Scripts/CharacterStateMachine/Interfaces/State.cs
2017-10-03 04:15:13 -05:00

60 lines
No EOL
1.4 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[CreateAssetMenu(menuName = "CharacterStateMachine/State")]
public class State : ScriptableObject
{
public Action[] actions;
public Transition[] transitions;
public void UpdateState(StateController controller)
{
DoActions(controller);
CheckTransitions(controller);
}
public void DoStartActions(StateController controller)
{
for (int i = 0; i < actions.Length; i++)
{
actions[i].StartAct(controller);
}
}
private void DoActions(StateController controller)
{
for (int i = 0; i < actions.Length; i++)
{
actions[i].Act(controller);
}
}
public void DoEndActions(StateController controller)
{
for (int i = 0; i < actions.Length; i++)
{
actions[i].EndAct(controller);
}
}
private void CheckTransitions(StateController controller)
{
for (int i = 0; i < transitions.Length; i++)
{
bool decisionSucceeded = transitions[i].decision.Decide(controller);
if (decisionSucceeded)
{
controller.TransitionToState(transitions[i].trueState);
}
else
{
controller.TransitionToState(transitions[i].falseState);
}
}
}
}