Guest User

Untitled

a guest
Nov 20th, 2017
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.87 KB | None | 0 0
  1. #if UNITY_EDITOR
  2. using UnityEngine;
  3. using UnityEditor;
  4.  
  5. public class MeshTopologyModifier : MonoBehaviour
  6. {
  7.  
  8. [SerializeField] SkinnedMeshRenderer[] m_skinned;
  9. [SerializeField] MeshFilter[] m_filters;
  10.  
  11. private void Reset()
  12. {
  13. SetAll();
  14. }
  15.  
  16. [ContextMenu("Go")]
  17. void Go()
  18. {
  19. for (int i = 0; i < m_skinned.Length; i++)
  20. {
  21. var mesh = CopyMesh(m_skinned[i].sharedMesh);
  22. Modify(mesh);
  23. m_skinned[i].sharedMesh = mesh;
  24. }
  25. for (int i = 0; i < m_filters.Length; i++)
  26. {
  27. var mesh = CopyMesh(m_filters[i].sharedMesh);
  28. Modify(mesh);
  29. m_filters[i].sharedMesh = mesh;
  30. }
  31. }
  32.  
  33. [ContextMenu("Set All")]
  34. void SetAll()
  35. {
  36. m_skinned = GetComponentsInChildren<SkinnedMeshRenderer>();
  37. m_filters = GetComponentsInChildren<MeshFilter>();
  38. }
  39.  
  40. void Modify(Mesh mesh)
  41. {
  42. int vert = mesh.vertices.Length;
  43. int[] indecies = new int[vert];
  44. for (int i = 0; i < vert; i++)
  45. {
  46. indecies[i] = i;
  47. }
  48. for (int i = 0; i < mesh.subMeshCount; i++)
  49. {
  50. mesh.SetIndices(indecies, MeshTopology.Points, i);
  51. }
  52. }
  53.  
  54. static Mesh CopyMesh(Mesh mesh)
  55. {
  56. Mesh newmesh = new Mesh();
  57. newmesh.vertices = mesh.vertices;
  58. if (mesh.triangles.Length != 0) newmesh.triangles = mesh.triangles;
  59. newmesh.uv = mesh.uv;
  60. newmesh.normals = mesh.normals;
  61. newmesh.colors = mesh.colors;
  62. newmesh.tangents = mesh.tangents;
  63. if (mesh.boneWeights != null) newmesh.boneWeights = mesh.boneWeights;
  64. if (mesh.bindposes != null) newmesh.bindposes = mesh.bindposes;
  65. AssetDatabase.CreateAsset(newmesh, string.Format("{0}_{1}_{2}", AssetDatabase.GetAssetPath(mesh), mesh.name, "copy.asset"));
  66. return newmesh;
  67. }
  68. }
  69. #endif
Add Comment
Please, Sign In to add comment