コード例 #1
0
    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;
    }
コード例 #2
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);
            }
        }
    }
コード例 #3
0
    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;
    }