private IEnumerator ComputeMeshWithVertices(float fAmount) { foreach (KeyValuePair <GameObject, Material[]> pair in m_objectMaterials) { MeshSimplify meshSimplify = pair.Key.GetComponent <MeshSimplify>(); MeshFilter meshFilter = pair.Key.GetComponent <MeshFilter>(); SkinnedMeshRenderer skin = pair.Key.GetComponent <SkinnedMeshRenderer>(); if (meshSimplify && (meshFilter != null || skin != null)) { Mesh newMesh = null; if (meshFilter != null) { newMesh = Mesh.Instantiate(meshFilter.sharedMesh); } else if (skin != null) { newMesh = Mesh.Instantiate(skin.sharedMesh); } if (meshSimplify.GetMeshSimplifier() != null) { meshSimplify.GetMeshSimplifier().CoroutineEnded = false; StartCoroutine(meshSimplify.GetMeshSimplifier().ComputeMeshWithVertexCount(pair.Key, newMesh, Mathf.RoundToInt(fAmount * meshSimplify.GetMeshSimplifier().GetOriginalMeshUniqueVertexCount()), meshSimplify.name, Progress)); while (meshSimplify.GetMeshSimplifier().CoroutineEnded == false) { yield return(null); } if (meshFilter != null) { meshFilter.mesh = newMesh; } else if (skin != null) { skin.sharedMesh = newMesh; } meshSimplify.m_simplifiedMesh = newMesh; } } } m_strLastTitle = ""; m_strLastMessage = ""; m_nLastProgress = 0; }
void SetHideFlagsRecursive(GameObject root, GameObject gameObject, bool bRecurseIntoChildren) { MeshSimplify meshSimplify = gameObject.GetComponent <MeshSimplify>(); if (meshSimplify && meshSimplify.GetMeshSimplifier()) { meshSimplify.GetMeshSimplifier().hideFlags = HideFlags.HideInInspector; } if (bRecurseIntoChildren) { for (int nChild = 0; nChild < gameObject.transform.childCount; nChild++) { SetHideFlagsRecursive(root, gameObject.transform.GetChild(nChild).gameObject, true); } } }
private IEnumerator ComputeMeshWithVertices(float fAmount) { Simplifier.CoroutineFrameMiliseconds = 20; foreach (KeyValuePair <GameObject, Material[]> pair in m_objectMaterials) { MeshSimplify meshSimplify = pair.Key.GetComponent <MeshSimplify>(); MeshFilter meshFilter = pair.Key.GetComponent <MeshFilter>(); SkinnedMeshRenderer skin = pair.Key.GetComponent <SkinnedMeshRenderer>(); if (meshSimplify == null) { meshSimplify = pair.Key.AddComponent <MeshSimplify>(); meshSimplify.m_meshSimplifyRoot = m_selectedMeshSimplify; m_selectedMeshSimplify.m_listDependentChildren.Add(meshSimplify); } if (meshSimplify.MeshSimplifier == null) { meshSimplify.MeshSimplifier = meshSimplify.gameObject.AddComponent <Simplifier>(); meshSimplify.MeshSimplifier.hideFlags = HideFlags.HideInInspector; meshSimplify.ConfigureSimplifier(); } if (meshSimplify && MeshSimplify.HasValidMeshData(pair.Key)) { Mesh newMesh = null; if (meshFilter != null) { newMesh = Mesh.Instantiate(meshFilter.sharedMesh); } else if (skin != null) { newMesh = Mesh.Instantiate(skin.sharedMesh); } if (meshSimplify.HasData() == false) { meshSimplify.GetMeshSimplifier().CoroutineEnded = false; StartCoroutine(meshSimplify.GetMeshSimplifier().ProgressiveMesh(pair.Key, meshFilter != null ? meshFilter.sharedMesh : skin.sharedMesh, null, meshSimplify.name, Progress)); while (meshSimplify.GetMeshSimplifier().CoroutineEnded == false) { yield return(null); } } if (meshSimplify.GetMeshSimplifier() != null) { meshSimplify.GetMeshSimplifier().CoroutineEnded = false; StartCoroutine(meshSimplify.GetMeshSimplifier().ComputeMeshWithVertexCount(pair.Key, newMesh, Mathf.RoundToInt(fAmount * meshSimplify.GetMeshSimplifier().GetOriginalMeshUniqueVertexCount()), meshSimplify.name, Progress)); while (meshSimplify.GetMeshSimplifier().CoroutineEnded == false) { yield return(null); } if (meshFilter != null) { meshFilter.mesh = newMesh; } else if (skin != null) { skin.sharedMesh = newMesh; } meshSimplify.m_simplifiedMesh = newMesh; } } } m_bFinished = true; }