MegaWarpEditor.cs 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. using UnityEngine;
  2. using UnityEditor;
  3. [CanEditMultipleObjects, CustomEditor(typeof(MegaWarp))]
  4. public class MegaWarpEditor : Editor
  5. {
  6. public Texture image;
  7. public bool showhelp = false;
  8. public bool showmodparams = true;
  9. public virtual Texture LoadImage() { return null; }
  10. public virtual string GetHelpString() { return "Warp Modifer by Chris West"; }
  11. public virtual bool Inspector() { return true; }
  12. public virtual bool DisplayCommon() { return true; }
  13. private MegaWarp src;
  14. private MegaUndo undoManager;
  15. static public void CreateWarp(string type, System.Type classtype)
  16. {
  17. Vector3 pos = Vector3.zero;
  18. if ( UnityEditor.SceneView.lastActiveSceneView != null )
  19. pos = UnityEditor.SceneView.lastActiveSceneView.pivot;
  20. GameObject go = new GameObject(type + " Warp");
  21. go.AddComponent(classtype);
  22. go.transform.position = pos;
  23. Selection.activeObject = go;
  24. }
  25. #if UNITY_5_1 || UNITY_5_2 || UNITY_5_3 || UNITY_5_4 || UNITY_5_5 || UNITY_5_6 || UNITY_2017 || UNITY_2018 || UNITY_2019 || UNITY_2020
  26. [DrawGizmo(GizmoType.NotInSelectionHierarchy | GizmoType.Pickable | GizmoType.InSelectionHierarchy)]
  27. #else
  28. [DrawGizmo(GizmoType.NotSelected | GizmoType.Pickable | GizmoType.SelectedOrChild)]
  29. #endif
  30. static void RenderGizmo(MegaWarp warp, GizmoType gizmoType)
  31. {
  32. if ( MegaModifiers.GlobalDisplay && warp.DisplayGizmo )
  33. {
  34. Color col = Color.white;
  35. #if UNITY_5_1 || UNITY_5_2 || UNITY_5_3 || UNITY_5_4 || UNITY_5_5 || UNITY_5_6 || UNITY_2017 || UNITY_2018 || UNITY_2019 || UNITY_2020
  36. if ( (gizmoType & GizmoType.NotInSelectionHierarchy) != 0 )
  37. #else
  38. if ( (gizmoType & GizmoType.NotSelected) != 0 )
  39. #endif
  40. {
  41. col.a = 0.5f;
  42. }
  43. else
  44. {
  45. if ( (gizmoType & GizmoType.Active) != 0 )
  46. {
  47. if ( warp.Enabled )
  48. col.a = 1.0f;
  49. else
  50. col.a = 0.75f;
  51. }
  52. else
  53. {
  54. if ( warp.Enabled )
  55. col.a = 0.5f;
  56. else
  57. col.a = 0.25f;
  58. }
  59. }
  60. warp.DrawGizmo(col);
  61. Gizmos.DrawIcon(warp.transform.position, warp.GetIcon(), false);
  62. }
  63. }
  64. private void OnEnable()
  65. {
  66. src = target as MegaWarp;
  67. undoManager = new MegaUndo(src, src.WarpName() + " change");
  68. }
  69. public void CommonModParamsBasic(MegaWarp mod)
  70. {
  71. mod.Enabled = EditorGUILayout.Toggle("Enabled", mod.Enabled);
  72. mod.DisplayGizmo = EditorGUILayout.Toggle("Display Gizmo", mod.DisplayGizmo);
  73. EditorGUILayout.BeginHorizontal();
  74. EditorGUILayout.LabelField("Gizmo Col");
  75. mod.GizCol1 = EditorGUILayout.ColorField(mod.GizCol1);
  76. mod.GizCol2 = EditorGUILayout.ColorField(mod.GizCol2);
  77. EditorGUILayout.EndHorizontal();
  78. //mod.steps = EditorGUILayout.IntField("Gizmo Detail", mod.steps);
  79. //if ( mod.steps < 1 )
  80. // mod.steps = 1;
  81. }
  82. public void CommonModParams(MegaWarp mod)
  83. {
  84. showmodparams = EditorGUILayout.Foldout(showmodparams, "Warp Common Params");
  85. if ( showmodparams )
  86. {
  87. EditorGUILayout.BeginVertical("Box");
  88. CommonModParamsBasic(mod);
  89. mod.Width = EditorGUILayout.FloatField("Width", mod.Width);
  90. mod.Height = EditorGUILayout.FloatField("Height", mod.Height);
  91. mod.Length = EditorGUILayout.FloatField("Length", mod.Length);
  92. mod.Decay = EditorGUILayout.FloatField("Decay", mod.Decay);
  93. EditorGUILayout.EndVertical();
  94. }
  95. }
  96. public virtual void DrawGUI()
  97. {
  98. MegaWarp mod = (MegaWarp)target;
  99. if ( DisplayCommon() )
  100. CommonModParams(mod);
  101. if ( GUI.changed )
  102. EditorUtility.SetDirty(target);
  103. if ( Inspector() )
  104. DrawDefaultInspector();
  105. }
  106. public virtual void DrawSceneGUI()
  107. {
  108. MegaWarp mod = (MegaWarp)target;
  109. if ( mod.Enabled && mod.DisplayGizmo && showmodparams )
  110. {
  111. }
  112. }
  113. public override void OnInspectorGUI()
  114. {
  115. undoManager.CheckUndo();
  116. DrawGUI();
  117. if ( GUI.changed )
  118. EditorUtility.SetDirty(target);
  119. undoManager.CheckDirty();
  120. }
  121. public void OnSceneGUI()
  122. {
  123. DrawSceneGUI();
  124. }
  125. }