コード例 #1
0
            public bool isEmpty()
            {
                List <UnityEngine.GameObject> obsIn = new List <UnityEngine.GameObject>();

                obsIn.AddRange(combinedMesh.GetObjectsInCombined());
                for (int i = 0; i < gosToDelete.Count; i++)
                {
                    obsIn.Remove(gosToDelete[i]);
                }
                if (obsIn.Count == 0)
                {
                    return(true);
                }
                return(false);
            }
コード例 #2
0
            public bool isEmpty()
            {
                List <GameObject> obsIn = new List <GameObject>();

                obsIn.AddRange(combinedMesh.GetObjectsInCombined());
                for (int i = 0; i < gosToDelete.Count; i++)
                {
                    for (int j = 0; j < obsIn.Count; j++)
                    {
                        if (obsIn[j].GetInstanceID() == gosToDelete[i])
                        {
                            obsIn.RemoveAt(j);
                            break;
                        }
                    }
                }
                if (obsIn.Count == 0)
                {
                    return(true);
                }
                return(false);
            }
コード例 #3
0
ファイル: MB_Utility.cs プロジェクト: NerdDev/Hackmobile
    public static GameObject buildSceneMeshObject(GameObject root, MB2_MeshCombiner mom, Mesh m, bool createNewChild = false)
    {
        GameObject          mesh;
        MeshFilter          mf  = null;
        MeshRenderer        mr  = null;
        SkinnedMeshRenderer smr = null;
        Transform           mt  = null;

        if (!createNewChild)
        {
            foreach (Transform t in root.transform)
            {
                if (t.name.EndsWith("-mesh"))
                {
                    mt = t;
                }
            }
        }
        if (mt == null)
        {
            mesh = new GameObject(mom.name + "-mesh");
        }
        else
        {
            mesh = mt.gameObject;
        }
        if (mom.renderType == MB_RenderType.skinnedMeshRenderer)
        {
            smr = mesh.GetComponent <SkinnedMeshRenderer>();
            if (smr == null)
            {
                smr = mesh.AddComponent <SkinnedMeshRenderer>();
            }
        }
        else
        {
            mf = mesh.GetComponent <MeshFilter>();
            if (mf == null)
            {
                mf = mesh.AddComponent <MeshFilter>();
            }
            mr = mesh.GetComponent <MeshRenderer>();
            if (mr == null)
            {
                mr = mesh.AddComponent <MeshRenderer>();
            }
        }
        if (mom.textureBakeResults.doMultiMaterial)
        {
            Material[] sharedMats = new Material[mom.textureBakeResults.resultMaterials.Length];
            for (int i = 0; i < sharedMats.Length; i++)
            {
                sharedMats[i] = mom.textureBakeResults.resultMaterials[i].combinedMaterial;
            }
            if (mom.renderType == MB_RenderType.skinnedMeshRenderer)
            {
                smr.materials           = sharedMats;
                smr.bones               = mom.GetBones();
                smr.updateWhenOffscreen = true;                 //todo see if can remove
                //todo update bounds
            }
            else
            {
                mr.sharedMaterials = sharedMats;
            }
        }
        else
        {
            if (mom.renderType == MB_RenderType.skinnedMeshRenderer)
            {
                smr.material = mom.textureBakeResults.resultMaterial;
                smr.bones    = mom.GetBones();
            }
            else
            {
                mr.material = mom.textureBakeResults.resultMaterial;
            }
        }
        if (mom.renderType == MB_RenderType.skinnedMeshRenderer)
        {
            smr.sharedMesh    = m;
            smr.lightmapIndex = mom.GetLightmapIndex();
        }
        else
        {
            mf.mesh          = m;
            mr.lightmapIndex = mom.GetLightmapIndex();
        }
        if (mom.lightmapOption == MB2_LightmapOptions.preserve_current_lightmapping || mom.lightmapOption == MB2_LightmapOptions.generate_new_UV2_layout)
        {
            mesh.isStatic = true;
        }

        List <GameObject> gos = mom.GetObjectsInCombined();

        if (gos.Count > 0)
        {
            bool   tagsAreSame   = true;
            bool   layersAreSame = true;
            string tag           = gos[0].tag;
            int    layer         = gos[0].layer;
            for (int i = 0; i < gos.Count; i++)
            {
                if (!gos[i].tag.Equals(tag))
                {
                    tagsAreSame = false;
                }
                if (gos[i].layer != layer)
                {
                    layersAreSame = false;
                }
            }
            if (tagsAreSame)
            {
                root.tag = tag;
                mesh.tag = tag;
            }
            if (layersAreSame)
            {
                root.layer = layer;
                mesh.layer = layer;
            }
        }
        mesh.transform.parent = root.transform;
        return(mesh);
    }