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(); }