コード例 #1
0
ファイル: RunTriggerNode.cs プロジェクト: FoeFear/shellcore
 public override int Traverse()
 {
     if (TriggerManager.instance)
     {
         if (threadMode)
         {
             var traverser = new TriggerTraverser(triggerName, Canvas, null, null);
             TriggerManager.instance.traversers.Add(traverser);
             traverser.StartQuest();
             return(0);
         }
         else
         {
             var node      = outputKnobs[0].connections.Count > 0 ? outputKnobs[0].connections[0]?.body : null;
             var traverser = new TriggerTraverser(triggerName, Canvas, Canvas.Traversal as Traverser, node);
             TriggerManager.instance.traversers.Add(traverser);
             traverser.StartQuest();
             return(-1);
         }
     }
     else
     {
         Debug.LogWarning("No trigger manager instance. What");
     }
     return(0);
 }
コード例 #2
0
        public override bool Calculate()
        {
            for (int i = 0; i < groups.Count; i++)
            {
                if (groups[i].input.connected())
                {
                    int completed      = 0;
                    int conditionCount = 0;
                    for (int j = 0; j < groups[i].input.connections.Count; j++)
                    {
                        if (groups[i].input.connections[j].body is ICondition condition)
                        {
                            conditionCount++;
                            if (condition.State == ConditionState.Completed)
                            {
                                completed++;
                            }
                        }
                    }

                    if (completed == conditionCount)
                    {
                        Debug.Log("All conditions passed!");
                        allConditionsPassed = true;
                        // Tell all condition nodes to unsub
                        DeInit();
                        // Continue to next node
                        if (overrideTraverser == null && groups[i].output.connected())
                        {
                            TaskManager.Instance.setNode(groups[i].output);
                        }
                        else if (groups[i].output.connected())
                        {
                            overrideTraverser.SetNode(groups[i].output.connections[0].body);
                            overrideTraverser = null;
                        }

                        return(true);
                    }
                }
            }

            return(true);
        }
コード例 #3
0
 public void SetTriggerTraverser(TriggerTraverser traverser)
 {
     this.overrideTraverser = traverser;
 }