// Reports a success if the child succeeds and a failure if the child fails. // repeates evaluation of child the number of times set in constructor - 1 // so that it can return the last state on the last evaluation // Running reports as running public override NodeStates Evaluate() { m_currRepeatNumber = 0; for (int i = 0; i < m_repeatNumber - 1; i++) { m_node.Evaluate(); m_currRepeatNumber++; } switch (m_node.Evaluate()) { case NodeStates.FAILURE: m_nodeState = NodeStates.FAILURE; return(m_nodeState); case NodeStates.SUCCESS: m_nodeState = NodeStates.SUCCESS; return(m_nodeState); case NodeStates.RUNNING: m_nodeState = NodeStates.RUNNING; return(m_nodeState); } m_nodeState = NodeStates.SUCCESS; return(m_nodeState); }
// Reports a success if the child succeeds and a failure if the child fail. // Running reports as running // adds one to number of times evaluate, if it is greater or equal to the number of // times asked to evaluate than just returns what you have chosen in contructor and // doesn't evaluate child node public override NodeStates Evaluate() { if (m_numTimesHasEvaluated < m_numTimesToEvaluate) { switch (m_node.Evaluate()) { case NodeStates.FAILURE: m_nodeState = NodeStates.FAILURE; m_numTimesHasEvaluated++; return(m_nodeState); case NodeStates.SUCCESS: m_nodeState = NodeStates.SUCCESS; m_numTimesHasEvaluated++; return(m_nodeState); case NodeStates.RUNNING: m_nodeState = NodeStates.RUNNING; //m_numTimesHasEvaluated++; return(m_nodeState); } } m_nodeState = m_StateToReturn; return(m_nodeState); }
// Continues to keep evaluating child node indefinitely. // Untill the user sets repeat to false // then it reports a success public override NodeStates Evaluate() { while (m_repeat) { m_node.Evaluate(); } m_nodeState = NodeStates.SUCCESS; return(m_nodeState); }
// Reports a success if the child fails and a failure if the child succeeds. // Running reports as running public override NodeStates Evaluate() { switch (m_node.Evaluate()) { case NodeStates.FAILURE: m_nodeState = NodeStates.SUCCESS; return(m_nodeState); case NodeStates.SUCCESS: m_nodeState = NodeStates.FAILURE; return(m_nodeState); case NodeStates.RUNNING: m_nodeState = NodeStates.RUNNING; return(m_nodeState); } m_nodeState = NodeStates.SUCCESS; return(m_nodeState); }
// Reports the node state chosen by the user no matter what the child reports. // Running reports as running public override NodeStates Evaluate() { if (m_node != null) { switch (m_node.Evaluate()) { case NodeStates.FAILURE: m_nodeState = m_StateToChange; return(m_nodeState); case NodeStates.SUCCESS: m_nodeState = m_StateToChange; return(m_nodeState); case NodeStates.RUNNING: m_nodeState = NodeStates.RUNNING; return(m_nodeState); } } m_nodeState = m_StateToChange; return(m_nodeState); }
// keeps repeating the evaluation of its child until the child reports a failure // Reports a fail once done. public override NodeStates Evaluate() { bool failed = false; while (!failed) { switch (m_node.Evaluate()) { case NodeStates.FAILURE: failed = true; break; case NodeStates.SUCCESS: continue; case NodeStates.RUNNING: continue; } m_currRepeatNumber++; } m_nodeState = NodeStates.FAILURE; return(m_nodeState); }
public void Evaluate() { root.Evaluate(); }