//Runs all its children, when they're all done running, regardless of result, return success, if one is in process, wait until next tick
 override public BTN_State Tick()
 {
     while (activeChild < childrenNodes.Count)
     {
         BTN_State childState = childrenNodes[activeChild].Tick();
         if (childState == BTN_State.Process)
         {
             return(BTN_State.Process);
         }
     }
     return(BTN_State.Success);
 }
 //Runs all its children, when they're all done running, regardless of result, return success, if one is in process, wait until next tick
 override public BTN_State Tick()
 {
     while (activeChild < childrenNodes.Count)
     {
         BTN_State childState = childrenNodes[activeChild].Tick();
         if (childState == BTN_State.Process)
         {
             return(BTN_State.Process);
         }
         else
         {
             activeChild = 0;
             return(childState == BTN_State.Failure ? BTN_State.Success : BTN_State.Failure);
         }
     }
     activeChild = 0;
     return(BTN_State.Success);
 }
    override public BTN_State Tick()
    {
        //Keep running children until one succeeds, if one is in process, we wait for the next Tick
        while (activeChild < childrenNodes.Count)
        {
            BTN_State childState = childrenNodes[activeChild].Tick();
            switch (childState)
            {
            case BTN_State.Success:
                return(BTN_State.Success);

            case BTN_State.Process:
                return(BTN_State.Process);

            case BTN_State.Failure:
                activeChild++;
                break;
            }
        }
        activeChild = 0;
        return(BTN_State.Failure);
    }