MegaWaveMeshEditor.cs 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. using UnityEngine;
  2. using UnityEditor;
  3. [CanEditMultipleObjects, CustomEditor(typeof(MegaWaveMesh))]
  4. public class MegaWaveMeshEditor : Editor
  5. {
  6. [MenuItem("GameObject/Create Other/MegaShape/Wave Mesh")]
  7. static void CreateWaveMesh()
  8. {
  9. Vector3 pos = Vector3.zero;
  10. if ( UnityEditor.SceneView.lastActiveSceneView != null )
  11. pos = UnityEditor.SceneView.lastActiveSceneView.pivot;
  12. GameObject go = new GameObject("Wave Mesh");
  13. MeshFilter mf = go.AddComponent<MeshFilter>();
  14. mf.sharedMesh = new Mesh();
  15. MeshRenderer mr = go.AddComponent<MeshRenderer>();
  16. Material[] mats = new Material[1];
  17. mr.sharedMaterials = mats;
  18. MegaWaveMesh pm = go.AddComponent<MegaWaveMesh>();
  19. pm.mesh = mf.sharedMesh;
  20. go.transform.position = pos;
  21. Selection.activeObject = go;
  22. pm.Rebuild();
  23. }
  24. static bool showwave1 = true;
  25. static bool showwave2 = true;
  26. static bool showwave3 = true;
  27. public override void OnInspectorGUI()
  28. {
  29. MegaWaveMesh mod = (MegaWaveMesh)target;
  30. //bool rebuild = DrawDefaultInspector();
  31. #if !UNITY_5 && !UNITY_2017 && !UNITY_2018 && !UNITY_2019 && !UNITY_2020
  32. EditorGUIUtility.LookLikeControls();
  33. #endif
  34. #if false
  35. DrawDefaultInspector();
  36. public float Width = 1.0f;
  37. public float Height = 1.0f;
  38. public float Length = 0.0f;
  39. public int WidthSegs = 1;
  40. public bool GenUVs = true;
  41. public bool recalcBounds = false;
  42. public bool recalcNormals = false;
  43. public float mspeed = 1.0f;
  44. public float flex = 1.0f;
  45. public float amp = 0.0f;
  46. public float wave = 1.0f;
  47. public float phase = 0.0f;
  48. public float mtime = 0.0f;
  49. public float speed = 1.0f;
  50. float dist = 0.0f;
  51. float time = 0.0f;
  52. public float flex1 = 1.0f;
  53. public float amp1 = 0.0f;
  54. public float wave1 = 1.0f;
  55. public float phase1 = 0.0f;
  56. public float mtime1 = 0.0f;
  57. public float speed1 = 1.0f;
  58. float dist1 = 0.0f;
  59. float time1 = 0.0f;
  60. public float flex2 = 1.0f;
  61. public float amp2 = 0.0f;
  62. public float wave2 = 1.0f;
  63. public float phase2 = 0.0f;
  64. public float mtime2 = 0.0f;
  65. public float speed2 = 1.0f;
  66. float dist2 = 0.0f;
  67. float time2 = 0.0f;
  68. public float amount = 1.0f;
  69. #endif
  70. mod.Width = EditorGUILayout.FloatField("Width", mod.Width);
  71. mod.Length = EditorGUILayout.FloatField("Length", mod.Length);
  72. mod.Height = EditorGUILayout.FloatField("Height", mod.Height);
  73. mod.WidthSegs = EditorGUILayout.IntField("Width Segs", mod.WidthSegs);
  74. mod.linkOffset = EditorGUILayout.Toggle("Link Scroll", mod.linkOffset);
  75. mod.offset = EditorGUILayout.FloatField("Offset", mod.offset);
  76. mod.recalcBounds = EditorGUILayout.Toggle("Recalc Bounds", mod.recalcBounds);
  77. mod.recalcNormals = EditorGUILayout.Toggle("Recalc Normals", mod.recalcNormals);
  78. mod.recalcCollider = EditorGUILayout.BeginToggleGroup("Recalc Collider", mod.recalcCollider);
  79. mod.colwidth = EditorGUILayout.FloatField("Collider Width", mod.colwidth);
  80. mod.smooth = EditorGUILayout.Toggle("Smooth", mod.smooth);
  81. EditorGUILayout.EndToggleGroup();
  82. mod.amount = EditorGUILayout.FloatField("Overall Amount", mod.amount);
  83. mod.mspeed = EditorGUILayout.FloatField("Overall Speed", mod.mspeed);
  84. mod.GenUVs = EditorGUILayout.BeginToggleGroup("Gen UVs", mod.GenUVs);
  85. mod.UVOffset = EditorGUILayout.Vector2Field("UV Offset", mod.UVOffset);
  86. mod.UVScale = EditorGUILayout.Vector2Field("UV Scale", mod.UVScale);
  87. EditorGUILayout.EndToggleGroup();
  88. EditorGUILayout.BeginVertical();
  89. showwave1 = EditorGUILayout.Foldout(showwave1, "Wave 1");
  90. //EditorGUILayout.LabelField("Wave 1");
  91. if ( showwave1 )
  92. {
  93. mod.flex = EditorGUILayout.FloatField("Flex", mod.flex);
  94. mod.amp = EditorGUILayout.FloatField("Amplitude", mod.amp);
  95. mod.wave = EditorGUILayout.FloatField("Wave Len", mod.wave);
  96. mod.phase = EditorGUILayout.FloatField("Phase", mod.phase);
  97. mod.mtime = EditorGUILayout.FloatField("Time", mod.mtime);
  98. mod.speed = EditorGUILayout.FloatField("Speed", mod.speed);
  99. }
  100. EditorGUILayout.EndVertical();
  101. EditorGUILayout.Separator();
  102. EditorGUILayout.BeginVertical();
  103. showwave2 = EditorGUILayout.Foldout(showwave2, "Wave 2");
  104. if ( showwave2 )
  105. {
  106. mod.flex1 = EditorGUILayout.FloatField("Flex", mod.flex1);
  107. mod.amp1 = EditorGUILayout.FloatField("Amplitude", mod.amp1);
  108. mod.wave1 = EditorGUILayout.FloatField("Wave Len", mod.wave1);
  109. mod.phase1 = EditorGUILayout.FloatField("Phase", mod.phase1);
  110. mod.mtime1 = EditorGUILayout.FloatField("Time", mod.mtime1);
  111. mod.speed1 = EditorGUILayout.FloatField("Speed", mod.speed1);
  112. }
  113. EditorGUILayout.EndVertical();
  114. EditorGUILayout.Separator();
  115. EditorGUILayout.BeginVertical();
  116. showwave3 = EditorGUILayout.Foldout(showwave3, "Wave 3");
  117. if ( showwave3 )
  118. {
  119. mod.flex2 = EditorGUILayout.FloatField("Flex", mod.flex2);
  120. mod.amp2 = EditorGUILayout.FloatField("Amplitude", mod.amp2);
  121. mod.wave2 = EditorGUILayout.FloatField("Wave Len", mod.wave2);
  122. mod.phase2 = EditorGUILayout.FloatField("Phase", mod.phase2);
  123. mod.mtime2 = EditorGUILayout.FloatField("Time", mod.mtime2);
  124. mod.speed2 = EditorGUILayout.FloatField("Speed", mod.speed2);
  125. }
  126. EditorGUILayout.EndVertical();
  127. #if false
  128. mod.Width = EditorGUILayout.FloatField("Width", mod.Width);
  129. mod.Length = EditorGUILayout.FloatField("Length", mod.Length);
  130. mod.Height = EditorGUILayout.FloatField("Height", mod.Height);
  131. mod.WidthSegs = EditorGUILayout.IntField("Width Segs", mod.WidthSegs);
  132. mod.LengthSegs = EditorGUILayout.IntField("Length Segs", mod.LengthSegs);
  133. mod.HeightSegs = EditorGUILayout.IntField("Height Segs", mod.HeightSegs);
  134. mod.genUVs = EditorGUILayout.Toggle("Gen UVs", mod.genUVs);
  135. mod.rotate = EditorGUILayout.FloatField("Rotate", mod.rotate);
  136. mod.PivotBase = EditorGUILayout.Toggle("Pivot Base", mod.PivotBase);
  137. mod.PivotEdge = EditorGUILayout.Toggle("Pivot Edge", mod.PivotEdge);
  138. mod.tangents = EditorGUILayout.Toggle("Tangents", mod.tangents);
  139. mod.optimize = EditorGUILayout.Toggle("Optimize", mod.optimize);
  140. #endif
  141. if ( GUI.changed ) //rebuild )
  142. mod.Rebuild();
  143. }
  144. }