123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- using UnityEngine;
- using UnityEditor;
- [CanEditMultipleObjects, CustomEditor(typeof(MegaWarp))]
- public class MegaWarpEditor : Editor
- {
- public Texture image;
- public bool showhelp = false;
- public bool showmodparams = true;
- public virtual Texture LoadImage() { return null; }
- public virtual string GetHelpString() { return "Warp Modifer by Chris West"; }
- public virtual bool Inspector() { return true; }
- public virtual bool DisplayCommon() { return true; }
- private MegaWarp src;
- private MegaUndo undoManager;
- static public void CreateWarp(string type, System.Type classtype)
- {
- Vector3 pos = Vector3.zero;
- if ( UnityEditor.SceneView.lastActiveSceneView != null )
- pos = UnityEditor.SceneView.lastActiveSceneView.pivot;
- GameObject go = new GameObject(type + " Warp");
- go.AddComponent(classtype);
- go.transform.position = pos;
- Selection.activeObject = go;
- }
- #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
- [DrawGizmo(GizmoType.NotInSelectionHierarchy | GizmoType.Pickable | GizmoType.InSelectionHierarchy)]
- #else
- [DrawGizmo(GizmoType.NotSelected | GizmoType.Pickable | GizmoType.SelectedOrChild)]
- #endif
- static void RenderGizmo(MegaWarp warp, GizmoType gizmoType)
- {
- if ( MegaModifiers.GlobalDisplay && warp.DisplayGizmo )
- {
- Color col = Color.white;
- #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
- if ( (gizmoType & GizmoType.NotInSelectionHierarchy) != 0 )
- #else
- if ( (gizmoType & GizmoType.NotSelected) != 0 )
- #endif
- {
- col.a = 0.5f;
- }
- else
- {
- if ( (gizmoType & GizmoType.Active) != 0 )
- {
- if ( warp.Enabled )
- col.a = 1.0f;
- else
- col.a = 0.75f;
- }
- else
- {
- if ( warp.Enabled )
- col.a = 0.5f;
- else
- col.a = 0.25f;
- }
- }
- warp.DrawGizmo(col);
- Gizmos.DrawIcon(warp.transform.position, warp.GetIcon(), false);
- }
- }
- private void OnEnable()
- {
- src = target as MegaWarp;
- undoManager = new MegaUndo(src, src.WarpName() + " change");
- }
- public void CommonModParamsBasic(MegaWarp mod)
- {
- mod.Enabled = EditorGUILayout.Toggle("Enabled", mod.Enabled);
- mod.DisplayGizmo = EditorGUILayout.Toggle("Display Gizmo", mod.DisplayGizmo);
- EditorGUILayout.BeginHorizontal();
- EditorGUILayout.LabelField("Gizmo Col");
- mod.GizCol1 = EditorGUILayout.ColorField(mod.GizCol1);
- mod.GizCol2 = EditorGUILayout.ColorField(mod.GizCol2);
- EditorGUILayout.EndHorizontal();
- //mod.steps = EditorGUILayout.IntField("Gizmo Detail", mod.steps);
- //if ( mod.steps < 1 )
- // mod.steps = 1;
- }
- public void CommonModParams(MegaWarp mod)
- {
- showmodparams = EditorGUILayout.Foldout(showmodparams, "Warp Common Params");
- if ( showmodparams )
- {
- EditorGUILayout.BeginVertical("Box");
- CommonModParamsBasic(mod);
- mod.Width = EditorGUILayout.FloatField("Width", mod.Width);
- mod.Height = EditorGUILayout.FloatField("Height", mod.Height);
- mod.Length = EditorGUILayout.FloatField("Length", mod.Length);
- mod.Decay = EditorGUILayout.FloatField("Decay", mod.Decay);
- EditorGUILayout.EndVertical();
- }
- }
- public virtual void DrawGUI()
- {
- MegaWarp mod = (MegaWarp)target;
- if ( DisplayCommon() )
- CommonModParams(mod);
- if ( GUI.changed )
- EditorUtility.SetDirty(target);
- if ( Inspector() )
- DrawDefaultInspector();
- }
- public virtual void DrawSceneGUI()
- {
- MegaWarp mod = (MegaWarp)target;
- if ( mod.Enabled && mod.DisplayGizmo && showmodparams )
- {
- }
- }
- public override void OnInspectorGUI()
- {
- undoManager.CheckUndo();
- DrawGUI();
- if ( GUI.changed )
- EditorUtility.SetDirty(target);
- undoManager.CheckDirty();
- }
- public void OnSceneGUI()
- {
- DrawSceneGUI();
- }
- }
|