Ejemplo n.º 1
0
 //----------------------------------------------------------------------------------------------------------------
 // - Attach Two Nodes In Order
 //----------------------------------------------------------------------------------------------------------------
 public void Attach(IsometricBufferNode node)
 {
     // Child nodes are drawn below (before) parent nodes
     if (Compare(Target, node.Target))
     {
         Children.Add(node);
     }
     else
     {
         node.Children.Add(this);
     }
 }
Ejemplo n.º 2
0
        //--------------------------------------------------------------------------------------------------------------------
        // - Depth-first Topological Traversal (Recursive)
        //--------------------------------------------------------------------------------------------------------------------
        private void TopologicalTraverse(IsometricBufferNode current)
        {
            // Mark the current node as visited
            current.Visited = true;

            // Traverse each non-visited child
            foreach (IsometricBufferNode child in current.Children)
            {
                if (!child.Visited)
                {
                    TopologicalTraverse(child);
                }
            }

            // Push current node's target object onto the back of the sorted drawing queue
            SortedObjects.AddLast(current.Target);
        }
Ejemplo n.º 3
0
        //--------------------------------------------------------------------------------------------------------------------
        // - Remove Object From Buffer
        //--------------------------------------------------------------------------------------------------------------------
        public void Remove(IsometricObject obj)
        {
            IsometricBufferNode node = Nodes.FirstOrDefault(n => n.Target == obj);

            node?.Dispose();
        }