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); }
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); }
public void SetTriggerTraverser(TriggerTraverser traverser) { this.overrideTraverser = traverser; }