示例#1
0
    public static IEnumerator AnalyzeMeshes(Vector3 cameraPosition, AnalyzerMeshData[] analyzerMeshData, List <int> dataToAnalyze, bool updateMeshFilter)
    {
        Initialize(analyzerMeshData, cameraPosition);
        GameObject visiblityTester = new GameObject();

        visiblityTester.name                     = "VisiblityTester";
        visiblityTesterMesh                      = visiblityTester.AddComponent <MeshFilter>();
        visiblityTesterMesh.sharedMesh           = new Mesh();
        visiblityTesterMesh.sharedMesh.vertices  = new Vector3[3];
        visiblityTesterMesh.sharedMesh.triangles = new int[] { 0, 1, 2 };
        visiblityTester.AddComponent <MeshRenderer>().material = Utilities.GetUnlitMaterial(Color.white);

        float startTime = Time.time;

        for (int i = 0; i < dataToAnalyze.Count; i++)
        {
            if (analyzerMeshData[dataToAnalyze[i]].AnalyzedMesh != null)
            {
                continue;
            }
            IEnumerator inum = AnalyzeMesh(analyzerMeshData[dataToAnalyze[i]], true, "Processing mesh: " + (i + 1) + "/" + dataToAnalyze.Count + "  ");
            while (inum.MoveNext())
            {
                yield return(null);
            }
        }
        SceneOptimizerEditor.GetInstance().StopAnalyzing();
        Debug.Log("Total Time: " + (Time.time - startTime) / 60 + " minutes");
    }
 static void OnOptimizeClick()
 {
     instance = (SceneOptimizerEditor)EditorWindow.GetWindow(typeof(SceneOptimizerEditor), true, "Scene Optimizer");
     instance.Initialize();
 }