public AivoTreeStatus Tick(float timeTick, T context)
        {
            var nodesToSearch = _nodes;
            int i             = 0;

            sucesses = 0;
            failures = 0;
            foreach (TreeNode <T> node in nodesToSearch)
            {
                if (indicesToSkip.Contains(i))
                {
                    ++i;
                    continue;
                }
                AivoTreeStatus status = node.Tick(timeTick, context);
                if (status == AivoTreeStatus.Failure)
                {
                    //indicesToSkip.Add(i);
                    ++failures;
                }
                if (status == AivoTreeStatus.Success)
                {
                    //indicesToSkip.Add(i);
                    ++sucesses;
                }
                ++i;

                //Termination Conditions
                if (sucesses >= sucessesNeeded)
                {
                    UnityEngine.Debug.Log("Parallel Node Succeeded. Successes: " + sucesses + " and Failures: " + failures + ". Successes Needed: " + sucessesNeeded);
                    Reset();
                    return(AivoTreeStatus.Success);
                }
                if (failures >= failuresNeeded || indicesToSkip.Count >= nodesToSearch.Length)
                {
                    UnityEngine.Debug.Log("Parallel Node Failed. Successes: " + sucesses + " and Failures: " + failures);
                    Reset();
                    return(AivoTreeStatus.Failure);
                }
            }

            UnityEngine.Debug.Log("Parallel Node is Running. Successes: " + sucesses + " and Failures: " + failures + ". Successes Needed: " + sucessesNeeded);
            return(AivoTreeStatus.Running);
        }
Ejemplo n.º 2
0
 public LogNode(bool needLog, string logMsg = "node tick", AivoTreeStatus targetStatus = AivoTreeStatus.Success)
 {
     this.needLog      = needLog;
     this.logMsg       = logMsg;
     this.targetStatus = targetStatus;
 }
Ejemplo n.º 3
0
 public AlwaysNode(TreeNode <T> node, AivoTreeStatus targetStatus)
 {
     this.node         = node;
     this.targetStatus = targetStatus;
 }