Ejemplo n.º 1
0
    void PopulateOctree(List <GameObject> gameObjects)
    {
        GameObject curGO;
        MeshFilter curMeshFilter;

        Triangle[] curTris;
        APAOctree  finalNode;

        for (int i = 0; i < gameObjects.Count; i++)
        {
            curGO = gameObjects[i];
            if (curGO == null || curGO.name.Contains("Combined Mesh") || curGO.name == null)
            {
                continue;
            }

            curMeshFilter = curGO.GetComponent <MeshFilter>();
            if (!curMeshFilter)
            {
                continue;
            }

            curTris = new Triangle[] { };
            curTris = GetTriangles(curGO);

            for (int k = 0; k < curTris.Length; k++)
            {
                finalNode = octree.IndexTriangle(curTris[k]);
                finalNode.AddTriangle(curTris[k]);
            }
        }

        Debug.Log("Created APAOctree Database");
        Debug.Log("Total Indexed Triangles: " + GetTriangleCount(octree));
    }
    IEnumerator PopulateOctree(CallbackMethod del)
    {
        GameObject[] gameObjects = GameObject.FindObjectsOfType(typeof(GameObject)) as GameObject[];

        GameObject curGO;

        Triangle[] curTris       = new Triangle[] {};
        MeshFilter curMeshFilter = null;
        APAOctree  finalNode;

        for (int i = 0; i < gameObjects.Length; i++)
        {
            curGO = gameObjects [i];
            if (curGO == null || curGO.name.Contains("Combined Mesh") || curGO.name == null || curGO.layer != LayerMask.NameToLayer("Raycast"))
            {
                continue;
            }

            curMeshFilter = curGO.GetComponent <MeshFilter>();
            if (!curMeshFilter)
            {
                continue;
            }
            curTris = new Triangle[] {};
            curTris = GetTriangles(curGO);
            for (int k = 0; k < curTris.Length; k++)
            {
                finalNode = octree.IndexTriangle(curTris[k]);
                finalNode.AddTriangle(curTris[k]);
            }

            if (i % objectsPerChunk == 1)
            {
                yield return(0);
            }
        }

        del();
        Debug.Log("Created Database");
        Debug.Log("Total Indexed Triangles: " + GetTriangleCount(octree));
    }