Exemple #1
0
 public void traverse(ObjectDelegate del, List <QuadNode> queue, bool movementChange)
 {
     for (int a = 0; a < dict.Count; a++)
     {
         InPlay obj = dict.ElementAt(a);
         del(obj);
         if (movementChange && !AdditionalMath.contains(Area, obj.getRekt()))
         {
             if (parent != null)
             {
                 dict.Remove(obj);
                 parent.add(obj);
             }
         }
         for (int x = 0; x < 2; x++)
         {
             for (int y = 0; y < 2; y++)
             {
                 if (movementChange && AdditionalMath.contains(innerQuads[x, y], obj.getRekt()))
                 {
                     if (children[x, y] == null)
                     {
                         children[x, y] = new QuadNode(this, innerQuads[x, y], minimum, quadLevel + 1);
                     }
                     children[x, y].add(obj);
                     dict.Remove(obj);
                 }
             }
         }
     }
     for (int x = 0; x < 2; x++)
     {
         for (int y = 0; y < 2; y++)
         {
             if (children[x, y] != null)
             {
                 queue.Add(children[x, y]);
             }
         }
     }
 }
Exemple #2
0
        public QuadNode(QuadNode daddy, RectangleF area, double min, int nome)
        {
            quadLevel        = nome;
            minimum          = min;
            parent           = daddy;
            innerQuads[0, 0] = (new RectangleF(0, area.Height, area.Width / 2, area.Height / 2));
            innerQuads[0, 1] = (new RectangleF(area.Width / 2, area.Height, area.Width / 2, area.Height / 2));
            innerQuads[1, 0] = (new RectangleF(0, area.Height / 2, area.Width / 2, area.Height / 2));
            innerQuads[1, 1] = (new RectangleF(area.Width / 2, area.Height / 2, area.Width / 2, area.Height / 2));

            /*if((area.Height/2) * (area.Width / 2) < min)
             * {
             *    for (int x = 0; x < 2; x++)
             *    {
             *        for (int y = 0; y < 2; y++)
             *        {
             *            children[x, y] = new QuadNode(this, innerQuads[x, y], minimum);
             *        }
             *    }
             * }*/
            Area = area;
        }
Exemple #3
0
 public QuadTree(RectangleF screen, int minimumDepth)
 {
     wholeArea = screen;
     rootNode  = new QuadNode(null, wholeArea, minimumDepth, 1, "root");
 }
Exemple #4
0
 public void quadCollisions(QuadNode node)
 {
     node.collisions();
 }