예제 #1
0
        private static void WalkTree(Composite root, object rootContext = null)
        {
            // This function is meant as an EXAMPLE ONLY!
            // It is not the best way to handle walking the tree, but will suffice for simple usages.

            // Start must always be called first. Typically the root behavior will have a null context. Change if needed.
            root.Start(rootContext);

            // Run the tree forever...
            while (true)
            {
                try
                {
                    root.Tick(null);
                }
                catch (ThreadAbortException)
                {
                    // Assuming we wanted this, make the tree stop walking, regardless of where it is.
                    break;
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex);
                    // Handle this exception, either stop the tree, or just eat it and continue.
                }


                // If we're still running the current composite, then we don't need to reset, we want the tree to pick up
                // where it left off last tick.
                if (root.LastStatus != RunStatus.Running)
                {
                    // Reset the tree, and begin the execution all over...
                    root.Stop(rootContext);
                    root.Start(rootContext);
                }

                // Change/remove, do whatever you want. This is an example remember!
                Thread.Sleep(10);
            }

            root.Stop(rootContext);
        }
예제 #2
0
 public void Stop()
 {
     tree.Stop(null);
 }