public void Generate() { Generate(source, ref mesh, channel, threshold, border); #if UNITY_EDITOR if (P3dHelper.IsAsset(this) == true) { var assets = AssetDatabase.LoadAllAssetsAtPath(AssetDatabase.GetAssetPath(this)); for (var i = 0; i < assets.Length; i++) { var assetMesh = assets[i] as Mesh; if (assetMesh != null && assetMesh != mesh) { DestroyImmediate(assetMesh, true); } } if (P3dHelper.IsAsset(mesh) == false) { AssetDatabase.AddObjectToAsset(mesh, this); } } #endif #if UNITY_EDITOR if (P3dHelper.IsAsset(this) == true) { P3dHelper.ReimportAsset(this); } #endif }
public void Generate() { #if UNITY_EDITOR Undo.RecordObject(this, "Generate Seam Fix"); #endif if (meshes != null) { foreach (var pair in meshes) { if (pair.Source != null) { if (pair.Output == null) { pair.Output = new Mesh(); } pair.Output.name = pair.Source.name + " (Fixed Seams)"; Generate(pair.Source, pair.Output, coord, threshold, border); } else { DestroyImmediate(pair.Output); pair.Output = null; } } } #if UNITY_EDITOR if (P3dHelper.IsAsset(this) == true) { var assets = AssetDatabase.LoadAllAssetsAtPath(AssetDatabase.GetAssetPath(this)); for (var i = 0; i < assets.Length; i++) { var assetMesh = assets[i] as Mesh; if (assetMesh != null) { if (meshes == null || meshes.Exists(p => p.Output == assetMesh) == false) { DestroyImmediate(assetMesh, true); } } } if (meshes != null) { foreach (var pair in meshes) { if (pair.Output != null && P3dHelper.IsAsset(pair.Output) == false) { AssetDatabase.AddObjectToAsset(pair.Output, this); AssetDatabase.SaveAssets(); } } } } if (P3dHelper.IsAsset(this) == true) { P3dHelper.ReimportAsset(this); } EditorUtility.SetDirty(this); #endif }
public void Generate() { if (source != null) { if (mesh == null) { mesh = new Mesh(); } mesh.Clear(false); insertions.Clear(); mesh.name = source.name + " (Fixed Seams)"; mesh.bindposes = source.bindposes; mesh.bounds = source.bounds; mesh.subMeshCount = source.subMeshCount; source.GetBoneWeights(boneWeights); source.GetColors(colors); source.GetNormals(normals); source.GetTangents(tangents); source.GetUVs(0, coords0); source.GetUVs(1, coords1); source.GetUVs(2, coords2); source.GetUVs(3, coords3); source.GetVertices(positions); DoGenerate(); mesh.boneWeights = boneWeights.ToArray(); mesh.SetColors(colors); mesh.SetNormals(normals); mesh.SetTangents(tangents); mesh.SetUVs(0, coords0); mesh.SetUVs(1, coords1); mesh.SetUVs(2, coords2); mesh.SetUVs(3, coords3); if (source.blendShapeCount > 0) { var tempDeltaVertices = new Vector3[source.vertexCount]; var tempDeltaNormals = new Vector3[source.vertexCount]; var tempDeltaTangents = new Vector3[source.vertexCount]; for (var i = 0; i < source.blendShapeCount; i++) { var shapeName = source.GetBlendShapeName(i); var frameCount = source.GetBlendShapeFrameCount(i); for (var j = 0; j < frameCount; j++) { source.GetBlendShapeFrameVertices(i, j, tempDeltaVertices, tempDeltaNormals, tempDeltaTangents); deltaVertices.Clear(); deltaNormals.Clear(); deltaTangents.Clear(); deltaVertices.AddRange(tempDeltaVertices); deltaNormals.AddRange(tempDeltaNormals); deltaTangents.AddRange(tempDeltaTangents); for (var k = 0; k < insertions.Count; k++) { var insertion = insertions[k]; deltaVertices.Add(deltaVertices[insertion]); deltaNormals.Add(deltaNormals[insertion]); deltaTangents.Add(deltaTangents[insertion]); } mesh.AddBlendShapeFrame(shapeName, source.GetBlendShapeFrameWeight(i, j), deltaVertices.ToArray(), deltaNormals.ToArray(), deltaTangents.ToArray()); } } } #if UNITY_EDITOR if (P3dHelper.IsAsset(this) == true) { var assets = AssetDatabase.LoadAllAssetsAtPath(AssetDatabase.GetAssetPath(this)); for (var i = 0; i < assets.Length; i++) { var assetMesh = assets[i] as Mesh; if (assetMesh != null && assetMesh != mesh) { DestroyImmediate(assetMesh, true); } } if (P3dHelper.IsAsset(mesh) == false) { AssetDatabase.AddObjectToAsset(mesh, this); } } #endif } #if UNITY_EDITOR if (P3dHelper.IsAsset(this) == true) { P3dHelper.ReimportAsset(this); } #endif }
public void Generate() { if (source != null) { if (mesh == null) { mesh = new Mesh(); } mesh.Clear(false); mesh.name = source.name + " (Copied Coords)"; mesh.bindposes = source.bindposes; mesh.bounds = source.bounds; mesh.subMeshCount = source.subMeshCount; source.GetBoneWeights(boneWeights); source.GetColors(colors); source.GetNormals(normals); source.GetTangents(tangents); source.GetUVs(0, coords0); source.GetUVs(1, coords1); source.GetUVs(2, coords2); source.GetUVs(3, coords3); source.GetVertices(positions); mesh.SetVertices(positions); for (var i = 0; i < source.subMeshCount; i++) { source.GetTriangles(indices, i); mesh.SetTriangles(indices, i); } mesh.boneWeights = boneWeights.ToArray(); mesh.SetColors(colors); mesh.SetNormals(normals); mesh.SetTangents(tangents); mesh.SetUVs(0, GetCoords(first)); mesh.SetUVs(1, GetCoords(second)); mesh.SetUVs(2, GetCoords(third)); mesh.SetUVs(3, GetCoords(fourth)); if (source.blendShapeCount > 0) { var deltaVertices = new Vector3[source.vertexCount]; var deltaNormals = new Vector3[source.vertexCount]; var deltaTangents = new Vector3[source.vertexCount]; for (var i = 0; i < source.blendShapeCount; i++) { var shapeName = source.GetBlendShapeName(i); var frameCount = source.GetBlendShapeFrameCount(i); for (var j = 0; j < frameCount; j++) { source.GetBlendShapeFrameVertices(i, j, deltaVertices, deltaNormals, deltaTangents); mesh.AddBlendShapeFrame(shapeName, source.GetBlendShapeFrameWeight(i, j), deltaVertices, deltaNormals, deltaTangents); } } } #if UNITY_EDITOR if (P3dHelper.IsAsset(this) == true) { var assets = UnityEditor.AssetDatabase.LoadAllAssetsAtPath(UnityEditor.AssetDatabase.GetAssetPath(this)); for (var i = 0; i < assets.Length; i++) { var assetMesh = assets[i] as Mesh; if (assetMesh != null && assetMesh != mesh) { DestroyImmediate(assetMesh, true); } } if (P3dHelper.IsAsset(mesh) == false) { UnityEditor.AssetDatabase.AddObjectToAsset(mesh, this); UnityEditor.AssetDatabase.SaveAssets(); } } #endif } #if UNITY_EDITOR if (P3dHelper.IsAsset(this) == true) { P3dHelper.ReimportAsset(this); } #endif }
public void Generate() { if (source != null) { if (mesh == null) { mesh = new Mesh(); } mesh.Clear(false); mesh.name = source.name + " (Fixed Seams)"; mesh.bindposes = source.bindposes; mesh.bounds = source.bounds; mesh.subMeshCount = source.subMeshCount; source.GetBoneWeights(boneWeights); source.GetColors(colors); source.GetNormals(normals); source.GetTangents(tangents); source.GetUVs(0, coords0); source.GetUVs(1, coords1); source.GetUVs(2, coords2); source.GetUVs(3, coords3); source.GetVertices(positions); DoGenerate(); mesh.boneWeights = boneWeights.ToArray(); mesh.SetColors(colors); mesh.SetNormals(normals); mesh.SetTangents(tangents); mesh.SetUVs(0, coords0); mesh.SetUVs(1, coords1); mesh.SetUVs(2, coords2); mesh.SetUVs(3, coords3); #if UNITY_EDITOR if (P3dHelper.IsAsset(this) == true) { var assets = AssetDatabase.LoadAllAssetsAtPath(AssetDatabase.GetAssetPath(this)); for (var i = 0; i < assets.Length; i++) { var assetMesh = assets[i] as Mesh; if (assetMesh != null && assetMesh != mesh) { DestroyImmediate(assetMesh, true); } } if (P3dHelper.IsAsset(mesh) == false) { AssetDatabase.AddObjectToAsset(mesh, this); } } #endif } #if UNITY_EDITOR if (P3dHelper.IsAsset(this) == true) { P3dHelper.ReimportAsset(this); } #endif }