BehaviorTree.ParallelNode.UpdateInternal C# (CSharp) Method

UpdateInternal() protected method

protected UpdateInternal ( object rInput, object rOutput ) : NodeRunningStatus
rInput object
rOutput object
return NodeRunningStatus
        protected override NodeRunningStatus UpdateInternal(object rInput, object rOutput)
        {
            int rFinishedChildChount = 0;

            for ( int i = 0; i < mChildrenCount; i++ )
            {
                var rNode = mChildren[i];

                if(mFinishCondition == ParallelFinishCondition.OR)
                {
                    if(mChildrenStatus[i] == NodeRunningStatus.Executing)
                    {
                        mChildrenStatus[i] = rNode.Update(rInput, rOutput);
                    }

                    if(mChildrenStatus[i] != NodeRunningStatus.Executing)
                    {
                        for( int j = 0; j < BehaviorTreeNode._maxChildNodeCount; j++)
                        {
                            mChildrenStatus[i] = NodeRunningStatus.Executing;
                        }
                        return NodeRunningStatus.Finish;
                    }
                }
                else if(mFinishCondition == ParallelFinishCondition.AND)
                {
                    if (mChildrenStatus[i] == NodeRunningStatus.Executing)
                    {
                        mChildrenStatus[i] = rNode.Update(rInput, rOutput);
                    }
                    if (mChildrenStatus[i] != NodeRunningStatus.Executing)
                    {
                        rFinishedChildChount++;
                    }
                }
            }

            if (rFinishedChildChount == mChildrenCount)
            {
                for (int i = 0; i < BehaviorTreeNode._maxChildNodeCount; i++)
                {
                    mChildrenStatus[i] = NodeRunningStatus.Executing;
                }

                return NodeRunningStatus.Finish;
            }

            return NodeRunningStatus.Executing;
        }