public override BehaviourStatus Run(AITree tree, DataContext dataContext, BehaviourStatus status) { switch (status) { case BehaviourStatus.Call: if (count == subNodes.Count) { return(BehaviourStatus.Failure); } tree.Call(subNodes[count]); return(BehaviourStatus.Running); case BehaviourStatus.Success: return(BehaviourStatus.Success); case BehaviourStatus.Failure: count++; return(Run(tree, dataContext, BehaviourStatus.Call)); case BehaviourStatus.Running: throw new InvalidRunningCommand(); default: throw new System.NotImplementedException(); } }
public override BehaviourStatus Run(AITree tree, DataContext dataContext, BehaviourStatus current) { if (current == BehaviourStatus.Call) { tree.Call(subNode); } return(BehaviourStatus.Running); }
public override BehaviourStatus Run(AITree tree, DataContext dataContext, BehaviourStatus current) { try { IQStack <object> qStack = dataContext[qStackName] as IQStack <object>; dataContext[varName] = qStack.Peek(); return(BehaviourStatus.Success); } catch { return(BehaviourStatus.Failure); } }
public override BehaviourStatus Init(AITree tree, DataContext dataContext) { try { subNode = AIResourceManager.GetTree(subTree); if (subNode == null) { return(BehaviourStatus.Failure); } else { return(BehaviourStatus.Success); } } catch { return(BehaviourStatus.Failure); } }
public override BehaviourStatus Run(AITree tree, DataContext dataContext, BehaviourStatus current) { if (current == BehaviourStatus.Call) { tree.Call(subNode); } else { Debug.Log(name + ": " + current); } if (current == BehaviourStatus.Call) { return(BehaviourStatus.Running); } else { return(current); } }
public override BehaviourStatus Run(AITree tree, DataContext dataContext, BehaviourStatus current) { try { IQStack <object> qStack = dataContext[qStackName] as IQStack <object>; if (qStack is LoopList <object> ) { dataContext[varName] = ((LoopList <object>)qStack).PopRemove(); } else { dataContext[varName] = qStack.Pop(); } return(BehaviourStatus.Success); } catch { return(BehaviourStatus.Failure); } }
public override BehaviourStatus Run(AITree tree, DataContext dataContext, BehaviourStatus current) { switch (current) { case BehaviourStatus.Success: return(BehaviourStatus.Failure); case BehaviourStatus.Failure: return(BehaviourStatus.Success); case BehaviourStatus.Call: tree.Call(subNode); return(BehaviourStatus.Running); case BehaviourStatus.Running: throw new InvalidRunningCommand(); default: throw new System.NotImplementedException(); } }
public override BehaviourStatus Init(AITree tree, DataContext dataContext) { return(BehaviourStatus.Success); }
public override BehaviourStatus Run(AITree tree, DataContext dataContext, BehaviourStatus current) { return(BehaviourStatus.Success); }
public override BehaviourStatus Run(AITree tree, DataContext dataContext, BehaviourStatus current) { tree.Log(dataContext[varName].ToString()); return(BehaviourStatus.Success); }
/// <summary> /// This is called when this node is placed on the callstack, before it's executed the first time. /// Use this for initialization. /// </summary> /// <param name="tree"></param> /// <param name="dataContext"></param> /// <returns></returns> public abstract BehaviourStatus Init(AITree tree, DataContext dataContext);
/// <summary> /// This is called whenever this AI node executes. /// </summary> /// <param name="tree"></param> /// <param name="dataContext"></param> /// <param name="current"></param> /// <returns></returns> public abstract BehaviourStatus Run(AITree tree, DataContext dataContext, BehaviourStatus current);