void traverse(Behavior child) { Console.WriteLine(child.ToString()); if (child.HasChild) { foreach (Behavior b in child.Children) { traverse(b); } } }
public void BuildTreeManually() { /* root = new Node<Behavior>(new Behavior("root", "root")); Node<Behavior> idle = root.AddChild((new Behavior("Idle",""))); idle.AddChild(new Behavior("", "Use Computer")); idle.AddChild(new Behavior("", "Patrol")); Node<Behavior> Incoming = root.AddChild((new Behavior("Incoming Projectile", ""))); Incoming.AddChild((new Behavior("", "Evade"))); Node<Behavior> combat = root.AddChild((new Behavior("Combat", ""))); Node<Behavior> Melee = combat.AddChild((new Behavior("Melee", ""))); Melee.AddChild((new Behavior("", "Flee"))); Melee.AddChild((new Behavior("", "Attack"))); Node<Behavior> Ranged = combat.AddChild((new Behavior("Ranged", ""))); Ranged.AddChild((new Behavior("", "Weapon 1"))); Ranged.AddChild((new Behavior("", "Weapon 2"))); Ranged.AddChild((new Behavior("", "Weapon 3"))); */ root = new Behavior("root", "root"); Behavior idle = root.AddChild((new Behavior("Idle", ""))); idle.AddChild(new Behavior("", "Use Computer")); idle.AddChild(new Behavior("", "Patrol")); Behavior Incoming = root.AddChild((new Behavior("Incoming Projectile", ""))); Incoming.AddChild((new Behavior("", "Evade"))); Behavior combat = root.AddChild((new Behavior("Combat", ""))); Behavior Melee = combat.AddChild((new Behavior("Melee", ""))); Melee.AddChild((new Behavior("", "Flee"))); Melee.AddChild((new Behavior("", "Attack"))); Behavior Ranged = combat.AddChild((new Behavior("Ranged", ""))); Ranged.AddChild((new Behavior("", "Weapon 1"))); Ranged.AddChild((new Behavior("", "Weapon 2"))); Ranged.AddChild((new Behavior("", "Weapon 3"))); }
Behavior search(Behavior child,string Value) { if (child.behavior == Value) { return child; } else if (child.HasChild) { foreach (Behavior b in child.Children) { Behavior temp = search(b, Value); if (temp != null) { // Console.WriteLine(temp); if (temp.behavior == Value) { return temp; } } } } return null; }
Behavior Response(Behavior parent) { if (parent.HasChild) { Random ran = new Random (); int num = ran.Next (parent.Children.Count); return parent.Children [num]; } return null; }
public Behavior AddChild(Behavior b) { Children.Add(b); return(b); }
public Behavior AddChild(Behavior b) { Children.Add(b); return b; }
/// <summary> /// Ends a sequence or selector. /// </summary> /// <returns>Behavior Tree builder state</returns> public BehaviorTreeBuilder End() { m_currentNode = parentNodeStack.Pop(); return(this); }