Exemple #1
0
 private void Query(object searchBounds,
                    AbstractNode node, ArrayList matches)
 {
     for (IEnumerator i = node.ChildBoundables.GetEnumerator(); i.MoveNext();)
     {
         IBoundable childBoundable = (IBoundable)i.Current;
         if (!GetIntersectsOp().Intersects(childBoundable.Bounds, searchBounds))
         {
             continue;
         }
         AbstractNode abstractNode = childBoundable as AbstractNode;
         if (abstractNode != null)
         {
             Query(searchBounds, abstractNode, matches);
         }
         else
         {
             ItemBoundable objItem = childBoundable as ItemBoundable;
             if (objItem != null)
             {
                 matches.Add(objItem.Item);
             }
             else
             {
                 Debug.Assert(false, "Should never reach here");
             }
         }
     }
 }
Exemple #2
0
        private bool RemoveItem(AbstractNode node, object item)
        {
            IBoundable childToRemove = null;

            for (IEnumerator i = node.ChildBoundables.GetEnumerator(); i.MoveNext();)
            {
                ItemBoundable childBoundable = i.Current as ItemBoundable;
                if (childBoundable != null)
                {
                    if (childBoundable.Item == item)
                    {
                        childToRemove = childBoundable;
                    }
                }
            }
            if (childToRemove != null)
            {
                node.ChildBoundables.Remove(childToRemove);
                return(true);
            }
            return(false);
        }