MegaModifyGroupEditor.cs 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. using UnityEngine;
  2. using UnityEditor;
  3. [CanEditMultipleObjects, CustomEditor(typeof(MegaModifyGroup))]
  4. public class MegaModifyGroupEditor : Editor
  5. {
  6. Texture image;
  7. //bool showhelp = false;
  8. bool showorder = false;
  9. bool showmulti = false;
  10. bool showtargets = false;
  11. public override void OnInspectorGUI()
  12. {
  13. MegaModifyGroup mod = (MegaModifyGroup)target;
  14. //EditorGUIUtility.LookLikeInspector();
  15. MegaModifiers.GlobalDisplay = EditorGUILayout.Toggle("GlobalDisplayGizmos", MegaModifiers.GlobalDisplay);
  16. mod.Enabled = EditorGUILayout.Toggle("Enabled", mod.Enabled);
  17. mod.recalcnorms = EditorGUILayout.Toggle("Recalc Normals", mod.recalcnorms);
  18. MegaNormalMethod method = mod.NormalMethod;
  19. mod.NormalMethod = (MegaNormalMethod)EditorGUILayout.EnumPopup("Normal Method", mod.NormalMethod);
  20. mod.recalcbounds = EditorGUILayout.Toggle("Recalc Bounds", mod.recalcbounds);
  21. mod.recalcCollider = EditorGUILayout.Toggle("Recalc Collider", mod.recalcCollider);
  22. mod.recalcTangents = EditorGUILayout.Toggle("Recalc Tangents", mod.recalcTangents);
  23. //mod.DoLateUpdate = EditorGUILayout.Toggle("Do Late Update", mod.DoLateUpdate);
  24. mod.UpdateMode = (MegaUpdateMode)EditorGUILayout.EnumPopup("Update Mode", mod.UpdateMode);
  25. //mod.GrabVerts = EditorGUILayout.Toggle("Grab Verts", mod.GrabVerts);
  26. mod.DrawGizmos = EditorGUILayout.Toggle("Draw Gizmos", mod.DrawGizmos);
  27. if ( mod.NormalMethod != method && mod.NormalMethod == MegaNormalMethod.Mega )
  28. {
  29. mod.BuildNormalMapping(mod.mesh, false);
  30. }
  31. if ( GUILayout.Button("Threading Options") )
  32. showmulti = !showmulti;
  33. if ( showmulti )
  34. {
  35. MegaModifiers.ThreadingOn = EditorGUILayout.Toggle("Threading Enabled", MegaModifiers.ThreadingOn);
  36. mod.UseThreading = EditorGUILayout.Toggle("Thread This Object", mod.UseThreading);
  37. }
  38. #if !UNITY_5 && !UNITY_2017 && !UNITY_2018 && !UNITY_2019 && !UNITY_2020
  39. EditorGUIUtility.LookLikeControls();
  40. #endif
  41. if ( GUI.changed )
  42. EditorUtility.SetDirty(target);
  43. showorder = EditorGUILayout.Foldout(showorder, "Modifier Order");
  44. if ( showorder && mod.mods != null )
  45. {
  46. for ( int i = 0; i < mod.mods.Length; i++ )
  47. {
  48. EditorGUILayout.LabelField("", i.ToString() + " - " + mod.mods[i].ModName() + " " + mod.mods[i].Order);
  49. }
  50. }
  51. if ( GUILayout.Button("Targets") )
  52. showtargets = !showtargets;
  53. if ( showtargets )
  54. {
  55. if ( GUILayout.Button("Add Target") )
  56. {
  57. MegaModifierTarget targ = new MegaModifierTarget();
  58. mod.targets.Add(targ);
  59. }
  60. for ( int i = 0; i < mod.targets.Count; i++ )
  61. {
  62. EditorGUILayout.BeginHorizontal();
  63. mod.targets[i].go = (GameObject)EditorGUILayout.ObjectField("Target " + i, mod.targets[i].go, typeof(GameObject), true);
  64. if ( GUILayout.Button("Del") )
  65. {
  66. mod.targets.Remove(mod.targets[i]);
  67. i--;
  68. }
  69. EditorGUILayout.EndHorizontal();
  70. }
  71. }
  72. }
  73. }