예제 #1
0
    private void PaintQuadtree <T> (IQuadtree <T> tree)
    {
        Vector2 center = new Vector2(tree.Region.center.x, tree.Region.center.y);

        if (tree.IsLeaf)
        {
            Gizmos.color = Color.green;
            Vector2 size = new Vector2(
                tree.Region.halfRegionSize.x * 2f,
                tree.Region.halfRegionSize.y * 2f
                );
            if (paintQuadtreeDepths)
            {
                Handles.Label(center, tree.Depth.ToString());
            }
            Gizmos.DrawWireCube(center, size);
        }
        else
        {
            for (QQuadrant quadrant = QQuadrant.NorthEast; quadrant < QQuadrant.NumberOfQuadrants; ++quadrant)
            {
                PaintQuadtree(tree.GetChild(quadrant));
            }
        }
    }
예제 #2
0
 /// <summary>
 /// Collision Detector
 /// </summary>
 /// <param name="_em">Reference to Entity Manager</param>
 /// <param name="_screenSize">Size of game viewport</param>
 public Collision_Manager(IEntity_Manager _em)
 {
     mCollidables   = new Dictionary <int, ICollidable>();
     mEntityManager = _em;
     mQuadtree      = new Quadtree(0, new Rectangle(Global.Camera.Position.ToPoint(), new Point(Global.Camera.ViewPortWidth, Global.Camera.ViewPortHeight)));
     //mQuadtree = new Quadtree(0, new Rectangle(new Point (0,0), new Point(5000,5000)));
 }
예제 #3
0
    private void CreateQuadtree()
    {
        QVector2D origin   = new QVector2D(quadtreeOrigin.x, quadtreeOrigin.y);
        QVector2D halfSize = new QVector2D(quadtreeHalfSize.x, quadtreeHalfSize.y);
        QRegion   region   = new QRegion(origin, halfSize);

        switch (quadtreeType)
        {
        case QuadtreeType.RegionQuadtree:
            quadtree = new RegionQuadtree <byte> (quadtreeMaxDepth, region, RED);
            break;

        case QuadtreeType.PointQuadtree:
            quadtree = new PointQuadtree <byte> (quadtreeMaxDepth, region);
            break;

        case QuadtreeType.PointRegionQuadtree:
            quadtree = new PointRegionQuadtree <byte> (quadtreeMaxDepth, quadtreeBucketSize, region);
            break;
        }
    }