コード例 #1
0
    private void BuildQuadtree(BoxCollider[] colliders)
    {
        CreateQuadtree();

        Stopwatch treeBuildingStopwatch = Stopwatch.StartNew();

        foreach (BoxCollider bc in colliders)
        {
            QVector2D point = new QVector2D(bc.transform.position.x, bc.transform.position.y);
            byte      data  = GetZeroOrOne();
            quadtree.InsertPoint(point, data);
            bc.GetComponent <Renderer> ().material.color = (data == RED) ? Color.red : Color.yellow;
        }
        treeBuildingStopwatch.Stop();
        UnityEngine.Debug.Log("Time spent building the quadtree: " + treeBuildingStopwatch.Elapsed);
    }
コード例 #2
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;
        }
    }