private void DoOnExitActions(AI_StateController p_controller) { for (int i = 0; i < m_onExitActions.Length; ++i) { m_onExitActions[i].Act(p_controller); } }
private void CheckTransitions(AI_StateController p_controller, bool p_ignoreDelays) { for (int i = 0; i < m_transitions.Length; i++) { if (!p_ignoreDelays) { // Delay is valid test (min and max are valid) float transitionDelay = m_transitions[i].m_minimumDelayRetest; if (m_transitions[i].m_maximumDelayRetest > m_transitions[i].m_minimumDelayRetest) { float minimumDelay = m_transitions[i].m_minimumDelayRetest; float maxumimDelay = m_transitions[i].m_maximumDelayRetest; transitionDelay = minimumDelay + (maxumimDelay - minimumDelay) * p_controller.m_transitionsDelayCoefficient; } // If the dealy is valid : test if (transitionDelay > 0) { float currentCycle = Mathf.Repeat(p_controller.m_stateTimeElapsed, transitionDelay); float previousCycle = Mathf.Repeat(p_controller.m_stateTimeElapsed - Time.deltaTime, transitionDelay); // If the delay is not up yet : skip if (previousCycle < currentCycle) { continue; } } } // Decision test bool decisionSucceeded = m_transitions[i].m_decision.Decide(p_controller); if (decisionSucceeded && m_transitions[i].m_useTrueState) { p_controller.TransitionToState(m_transitions[i].m_trueState); } else if (!decisionSucceeded && m_transitions[i].m_useFalseState) { p_controller.TransitionToState(m_transitions[i].m_falseState); } } }
public override void Act(AI_StateController p_controller) { EndDeath(p_controller as StateController); }
public void EnterState(AI_StateController p_controller) { DoOnEnterActions(p_controller); CheckTransitions(p_controller, true); }
public void ExitState(AI_StateController p_controller) { DoOnExitActions(p_controller); }
public abstract void Act(AI_StateController p_controller);
public void UpdateState(AI_StateController p_controller) { DoActions(p_controller); CheckTransitions(p_controller, false); }
public override void Act(AI_StateController p_controller) { StateController controller = p_controller as StateController; controller.m_offsetChaseTarget = Vector3.zero; }
public override bool Decide(AI_StateController p_controller) { bool targetIsValid = IsValid(p_controller as StateController); return(targetIsValid); }
public override bool Decide(AI_StateController p_controller) { bool targetVisible = Look(p_controller as StateController); return(targetVisible); }
public override void Act(AI_StateController p_controller) { Chase(p_controller as StateController); }
public override void Act(AI_StateController p_controller) { Search(p_controller as StateController); }
public override void Act(AI_StateController p_controller) { Wander(p_controller as StateController); }
public abstract bool Decide(AI_StateController p_controller);