MeshTextureNumberingUnit registMesh(MeshFilter mf, Mesh srcMesh, Material[] srcMats) { var meshKey = srcMesh.GetInstanceID().ToString() + ":"; for (var i = 0; i < srcMats.Length; i++) { meshKey += (srcMats[i].mainTexture != null ? srcMats[i].mainTexture.GetInstanceID().ToString() : "") + ":"; } if (meshInfos.ContainsKey(meshKey)) { mf.sharedMesh = meshInfos[meshKey].dscMesh; return(null); } else { var dstMesh = new Mesh(); var mi = new MeshTextureNumberingUnit(srcMesh, dstMesh, srcMats); meshInfos[meshKey] = mi; mf.sharedMesh = dstMesh; return(mi); } }
Vector2[] getUvs(Mesh srcMesh, MeshTextureNumberingUnit mi, Rect[] rects) { var uvs = new Vector2[srcMesh.vertexCount]; Debug.Log(mi.ids.Length); for (var i = 0; i < mi.ids.Length; i++) { convertUvs(srcMesh.GetTriangles(i), rects[mi.ids[i]], srcMesh.uv, uvs); } return(uvs); }
Vector2[] getUvs(Mesh srcMesh, MeshTextureNumberingUnit mi, Rect[] rects) { var uvs = new Vector2[srcMesh.vertexCount]; for (var i = 0; i < mi.ids.Length; i++) { if (srcMesh.subMeshCount > i) { convertUvs(srcMesh.GetTriangles(i), rects[mi.ids[i].texId], srcMesh.uv, uvs); } } return(uvs); }
Color32[] getColors(Mesh srcMesh, MeshTextureNumberingUnit mi) { var colors = srcMesh.colors32; //Debug.Log(colors.Length); if (mi.hasOverridedPalletId) { if (colors.Length == 0) { colors = new Color32[srcMesh.vertexCount]; } for (var i = 0; i < mi.ids.Length; i++) { overridePalletId(srcMesh.GetTriangles(i), mi.ids[i].palletId, colors); } } return(colors); }
Mesh registMesh(Mesh srcMesh, Texture2D srcTex, int id) { Mesh dstMesh; var meshKey = ((long)srcMesh.GetInstanceID() << 32) + (long)srcTex.GetInstanceID(); //((long)srcMesh.GetInstanceID() << 32) | (long)srcTex.GetInstanceID(); if (meshInfos.ContainsKey(meshKey)) { dstMesh = meshInfos[meshKey].dscMesh; } else { dstMesh = new Mesh(); var mi = new MeshTextureNumberingUnit(srcMesh, dstMesh, id); meshInfos[meshKey] = mi; } return(dstMesh); }
MeshTextureNumberingUnit registMesh(MeshFilter mf, Mesh srcMesh, Material[] srcMats) { // "meshId/texId@paretId:texId@paretId:..." var meshKey = srcMesh.GetInstanceID().ToString() + "/"; for (var i = 0; i < srcMats.Length; i++) { var texId = srcMats[i].mainTexture != null ? srcMats[i].mainTexture.GetInstanceID().ToString() : ""; var palletId = srcMats[i].HasProperty(spidPalletId) ? ((int)srcMats[i].GetFloat(spidPalletId)).ToString() : ""; meshKey += texId + "@" + palletId + ":"; } if (meshInfos.ContainsKey(meshKey)) { mf.sharedMesh = meshInfos[meshKey].dscMesh; return(null); } else { var dstMesh = new Mesh(); var mi = new MeshTextureNumberingUnit(srcMesh, dstMesh, srcMats); meshInfos[meshKey] = mi; mf.sharedMesh = dstMesh; return(mi); } }