summaryrefslogtreecommitdiff
path: root/UnityCollection/Assets/Tools/EditorGUIHelper
diff options
context:
space:
mode:
Diffstat (limited to 'UnityCollection/Assets/Tools/EditorGUIHelper')
-rw-r--r--UnityCollection/Assets/Tools/EditorGUIHelper/Editor/EditorGUIHelper.cs166
-rw-r--r--UnityCollection/Assets/Tools/EditorGUIHelper/Editor/EditorGUIHelperSetUp.cs9
-rw-r--r--UnityCollection/Assets/Tools/EditorGUIHelper/Editor/EditorGUIHelperSetUp.cs.meta (renamed from UnityCollection/Assets/Tools/EditorGUIHelper/Examples/Editor/RotationLimitAngleInspector.cs.meta)2
-rw-r--r--UnityCollection/Assets/Tools/EditorGUIHelper/Editor/EditorHandlesHelper.cs68
-rw-r--r--UnityCollection/Assets/Tools/EditorGUIHelper/Editor/EditorHandlesHelper.cs.meta2
-rw-r--r--UnityCollection/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends.meta (renamed from UnityCollection/Assets/Tools/EditorGUIHelper/Examples/Editor.meta)2
-rw-r--r--UnityCollection/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends/InspectorExt.cs64
-rw-r--r--UnityCollection/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends/InspectorExt.cs.meta11
-rw-r--r--UnityCollection/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends/MeshRendererInspector.cs80
-rw-r--r--UnityCollection/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends/MeshRendererInspector.cs.meta11
-rw-r--r--UnityCollection/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends/SkinnedMeshRendererInspector.cs132
-rw-r--r--UnityCollection/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends/SkinnedMeshRendererInspector.cs.meta11
-rw-r--r--UnityCollection/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends/TransformInspector.cs50
-rw-r--r--UnityCollection/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends/TransformInspector.cs.meta11
-rw-r--r--UnityCollection/Assets/Tools/EditorGUIHelper/Examples/CustomHandles.unity251
-rw-r--r--UnityCollection/Assets/Tools/EditorGUIHelper/Examples/Editor/RotationLimitAngleInspector.cs27
-rw-r--r--UnityCollection/Assets/Tools/EditorGUIHelper/Icons.meta8
-rw-r--r--UnityCollection/Assets/Tools/EditorGUIHelper/Icons/Bounds.pngbin0 -> 243 bytes
-rw-r--r--UnityCollection/Assets/Tools/EditorGUIHelper/Icons/Bounds.png.meta92
-rw-r--r--UnityCollection/Assets/Tools/EditorGUIHelper/MinMaxSliderAttribute/Editor.meta2
-rw-r--r--UnityCollection/Assets/Tools/EditorGUIHelper/MinMaxSliderAttribute/Editor/MinMaxSliderDrawer.cs.meta2
-rw-r--r--UnityCollection/Assets/Tools/EditorGUIHelper/MinMaxSliderAttribute/MinMaxSliderAttribute.cs.meta2
22 files changed, 963 insertions, 40 deletions
diff --git a/UnityCollection/Assets/Tools/EditorGUIHelper/Editor/EditorGUIHelper.cs b/UnityCollection/Assets/Tools/EditorGUIHelper/Editor/EditorGUIHelper.cs
index 3ccde08..78528b7 100644
--- a/UnityCollection/Assets/Tools/EditorGUIHelper/Editor/EditorGUIHelper.cs
+++ b/UnityCollection/Assets/Tools/EditorGUIHelper/Editor/EditorGUIHelper.cs
@@ -1,13 +1,175 @@
-using System.Collections;
+using System;
+using System.Reflection;
+using System.Collections;
using System.Collections.Generic;
using UnityEngine;
+using UnityEditor;
+
+public static class ToolsHelper
+{
+ static FieldInfo s_Hidden;
+ static ToolsHelper()
+ {
+ Type type = typeof(Tools);
+ s_Hidden = type.GetField("s_Hidden", BindingFlags.NonPublic | BindingFlags.Static);
+ }
+
+ // hide default handles
+ public static bool Hidden
+ {
+ get
+ {
+ return ((bool)s_Hidden.GetValue(null));
+ }
+ set
+ {
+ s_Hidden.SetValue(null, value);
+ }
+ }
+}
public static class EditorGUIHelper
{
+ #region methods
+ delegate void DrawPropertiesExcludingDelegate(SerializedObject obj, params string[] propertyToExclude);
+ static DrawPropertiesExcludingDelegate DrawPropertiesExcluding;
+ #endregion
+
+ #region Styles
+ static GUIStyle s_EditToolButtonStyle;
+ #endregion
+
static EditorGUIHelper()
{
+ SetupMethods();
+ SetupGUIStyles();
+ }
+ static void SetupMethods()
+ {
+ DrawPropertiesExcluding = GetMethod<DrawPropertiesExcludingDelegate>(typeof(Editor), "DrawPropertiesExcluding", BindingFlags.Static | BindingFlags.NonPublic);
}
+ static void SetupGUIStyles()
+ {
+ s_EditToolButtonStyle = new GUIStyle("Button");
+ s_EditToolButtonStyle.padding = new RectOffset(0, 0, 0, 0);
+ s_EditToolButtonStyle.margin = new RectOffset(0, 0, 0, 0);
+ }
-}
+ private static T GetMethod<T>(Type type, string name) where T : Delegate
+ {
+ var method = type.GetMethod(name);
+ T del = (T)Delegate.CreateDelegate(typeof(T), method);
+ return del;
+ }
+
+ private static T GetMethod<T>(Type type, string name, BindingFlags flag) where T : Delegate
+ {
+ var method = type.GetMethod(name, flag);
+ T del = (T)Delegate.CreateDelegate(typeof(T), method);
+ return del;
+ }
+
+ // 绘制默认inspector但不显示script
+ public static bool DrawDefaultInspectorWithoutScriptField(this Editor Inspector)
+ {
+ EditorGUI.BeginChangeCheck();
+ Inspector.serializedObject.Update();
+ SerializedProperty Iterator = Inspector.serializedObject.GetIterator();
+ Iterator.NextVisible(true);
+ while (Iterator.NextVisible(false))
+ {
+ EditorGUILayout.PropertyField(Iterator, true);
+ }
+ Inspector.serializedObject.ApplyModifiedProperties();
+ return (EditorGUI.EndChangeCheck());
+ }
+
+ // 绘制默认inspector,但是不显示field
+ public static void DrawDefaultInspectorWithoutField(SerializedObject obj, string field)
+ {
+ EditorGUI.BeginChangeCheck();
+ DrawPropertiesExcluding(obj, field);
+ if (EditorGUI.EndChangeCheck())
+ obj.ApplyModifiedProperties();
+ }
+
+ // 控制tools开启的toggle
+ public static bool DrawToolsToggle(this Editor caller, string label, GUIContent icon, bool toggle)
+ {
+ Rect controlRect = EditorGUILayout.GetControlRect(true, 20f, new GUILayoutOption[0]);
+ Rect position = new Rect(controlRect.xMin + EditorGUIUtility.labelWidth, controlRect.yMin, 33f, 20f);
+ GUIContent content = new GUIContent(label);
+ Vector2 vector = GUI.skin.label.CalcSize(content);
+ Rect position2 = new Rect(controlRect.xMin, controlRect.yMin + (controlRect.height - vector.y) * 0.5f, vector.x, controlRect.height);
+ int instanceID = caller.GetInstanceID();
+ GUI.Label(position2, label);
+ toggle = GUI.Toggle(position, toggle, icon, s_EditToolButtonStyle);
+ return toggle;
+ }
+
+ // 控制tools开启的toggle
+ public static bool DrawToolsToggle(this Editor caller, string label, bool toggle)
+ {
+ Rect controlRect = EditorGUILayout.GetControlRect(true, 20f, new GUILayoutOption[0]);
+ Rect position = new Rect(controlRect.xMin + EditorGUIUtility.labelWidth, controlRect.yMin, 33f, 20f);
+ GUIContent content = new GUIContent(label);
+ Vector2 vector = GUI.skin.label.CalcSize(content);
+ Rect position2 = new Rect(controlRect.xMin, controlRect.yMin + (controlRect.height - vector.y) * 0.5f, vector.x, controlRect.height);
+ int instanceID = caller.GetInstanceID();
+ GUI.Label(position2, label);
+ toggle = GUI.Toggle(position, toggle, "");
+ return toggle;
+ }
+
+ // label content
+ public static void LabelField (string label, string content)
+ {
+ Rect controlRect = EditorGUILayout.GetControlRect(true, 20f, new GUILayoutOption[0]);
+ Vector2 vector = GUI.skin.label.CalcSize(new GUIContent(label));
+ EditorGUI.LabelField(new Rect(controlRect.xMin, controlRect.yMin, vector.x, 20f), label);
+ vector = GUI.skin.label.CalcSize(new GUIContent(content));
+ EditorGUI.LabelField(new Rect(controlRect.xMin + EditorGUIUtility.labelWidth, controlRect.yMin, vector.x, 20f), content);
+ }
+
+ // 靠右的label
+ public static void LabelFieldRight(string content)
+ {
+ Rect controlRect = EditorGUILayout.GetControlRect(true, 20f, new GUILayoutOption[0]);
+ Vector2 vector = GUI.skin.label.CalcSize(new GUIContent(content));
+ EditorGUI.LabelField(new Rect(controlRect.xMin + EditorGUIUtility.labelWidth, controlRect.yMin, vector.x, 20f), content);
+ }
+
+ public static bool Button(string label, string content, int width)
+ {
+ Rect controlRect = EditorGUILayout.GetControlRect(true, 20f, new GUILayoutOption[0]);
+ Vector2 vector = GUI.skin.label.CalcSize(new GUIContent(label));
+ EditorGUI.LabelField(new Rect(controlRect.xMin, controlRect.yMin, vector.x, 20f), label);
+ return GUI.Button(new Rect(controlRect.xMin + EditorGUIUtility.labelWidth, controlRect.yMin, width, 20f), content);
+ }
+
+ // label button tip
+ public static bool Button(string label, string content, int width, string tip)
+ {
+ Rect controlRect = EditorGUILayout.GetControlRect(true, 20f, new GUILayoutOption[0]);
+ Vector2 vector = GUI.skin.label.CalcSize(new GUIContent(label));
+ EditorGUI.LabelField(new Rect(controlRect.xMin, controlRect.yMin, vector.x, 20f), label);
+ bool clicked = GUI.Button(new Rect(controlRect.xMin + EditorGUIUtility.labelWidth, controlRect.yMin, width, 20f), content);
+ EditorGUI.LabelField(new Rect(controlRect.xMin + EditorGUIUtility.labelWidth + width + 5, controlRect.yMin, vector.x, 20f), tip);
+ return clicked;
+ }
+
+ // 按钮是图形而不是对勾的toggle
+ public static bool ToggleButton(string label, bool value, GUIContent button)
+ {
+ Rect controlRect = EditorGUILayout.GetControlRect(true, 20f, new GUILayoutOption[0]);
+ Rect position = new Rect(controlRect.xMin + EditorGUIUtility.labelWidth, controlRect.yMin, 33f, 20f);
+ GUIContent content = new GUIContent(label);
+ Vector2 vector = GUI.skin.label.CalcSize(content);
+ Rect position2 = new Rect(controlRect.xMin, controlRect.yMin + (controlRect.height - vector.y) * 0.5f, vector.x, controlRect.height);
+ GUI.Label(position2, label);
+ value = GUI.Toggle(position, value, button, s_EditToolButtonStyle);
+ return value;
+ }
+} \ No newline at end of file
diff --git a/UnityCollection/Assets/Tools/EditorGUIHelper/Editor/EditorGUIHelperSetUp.cs b/UnityCollection/Assets/Tools/EditorGUIHelper/Editor/EditorGUIHelperSetUp.cs
new file mode 100644
index 0000000..c1e41ea
--- /dev/null
+++ b/UnityCollection/Assets/Tools/EditorGUIHelper/Editor/EditorGUIHelperSetUp.cs
@@ -0,0 +1,9 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public static class EditorGUIHelperSetUp
+{
+ public static string root = "Assets/Tools/EditorGUIHelper/";
+
+} \ No newline at end of file
diff --git a/UnityCollection/Assets/Tools/EditorGUIHelper/Examples/Editor/RotationLimitAngleInspector.cs.meta b/UnityCollection/Assets/Tools/EditorGUIHelper/Editor/EditorGUIHelperSetUp.cs.meta
index 9ff0c8e..b3dae74 100644
--- a/UnityCollection/Assets/Tools/EditorGUIHelper/Examples/Editor/RotationLimitAngleInspector.cs.meta
+++ b/UnityCollection/Assets/Tools/EditorGUIHelper/Editor/EditorGUIHelperSetUp.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: ead887cac09c8ff47a9dff8eab8acd44
+guid: 334ea7a2b183f99489eff2b84c8231e6
MonoImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/UnityCollection/Assets/Tools/EditorGUIHelper/Editor/EditorHandlesHelper.cs b/UnityCollection/Assets/Tools/EditorGUIHelper/Editor/EditorHandlesHelper.cs
index 4bf4b8f..3b2d648 100644
--- a/UnityCollection/Assets/Tools/EditorGUIHelper/Editor/EditorHandlesHelper.cs
+++ b/UnityCollection/Assets/Tools/EditorGUIHelper/Editor/EditorHandlesHelper.cs
@@ -13,15 +13,50 @@ public static class EditorHandlesHelper
static float s_ValueDrag;
static float s_ScaleDrawLength;
+ // style
+ static GUIStyle s_StyleBlackLabel;
+ static GUIStyle s_StyleWhiteLabel;
+ static Dictionary<int/*color*/, GUIStyle> s_StyleLabels;
+
static EditorHandlesHelper()
{
s_ValueScaleHandleHash = "ValueScaleHandleHash".GetHashCode();
+
+ SetupStyles();
+ }
+
+ static void SetupStyles()
+ {
+ s_StyleBlackLabel = new GUIStyle();
+ s_StyleBlackLabel.normal.textColor = Color.black;
+ s_StyleWhiteLabel = new GUIStyle();
+ s_StyleWhiteLabel.normal.textColor = Color.white;
+ s_StyleLabels = new Dictionary<int, GUIStyle>();
}
#region 单一handle
+ // 箭头
+ public static void Arrow(Vector3 position, Vector3 direction, float length = 1f, float arrowSize = 0.1f, bool dotted = false)
+ {
+ direction = direction.normalized;
+ if(!dotted)
+ Handles.DrawLine(position, position + direction * length);
+ else
+ Handles.DrawDottedLine(position, position + direction * length,1f);
+ Handles.ConeHandleCap(0, position + direction * length, Quaternion.LookRotation(direction, Vector3.up), arrowSize, EventType.Repaint);
+ }
+
+ // 控制数值的箭头
+ public static float ScaleValue(float value, Vector3 position, Vector3 direction, float length, Handles.CapFunction capFunc, Quaternion capRot, float size, float snap = 0)
+ {
+ Handles.DrawLine(position, position + direction * length);
+ value = ScaleValue(value, position + direction, capRot, size, capFunc, snap);
+ return value;
+ }
+
// 控制数值的handle
- public static float ScaleValueHandle(float value, Vector3 position, Quaternion rotation, float size, Handles.CapFunction capFunc, float snap)
+ public static float ScaleValue(float value, Vector3 position, Quaternion rotation, float size, Handles.CapFunction capFunc, float snap)
{
int controlID = GUIUtility.GetControlID(s_ValueScaleHandleHash, FocusType.Keyboard);
int id = controlID;
@@ -90,10 +125,41 @@ public static class EditorHandlesHelper
return value;
}
+ // 带背景的label
+ public static void Label(Vector3 position, string label, Color textColor)
+ {
+ GUIStyle textStyle = TryGetLabelStyleOrCreate(textColor);
+ Handles.Label(position, label, textStyle);
+ }
+
+ public static void WireCube(Vector3 position, Vector3 size, Color col)
+ {
+ Color c = Handles.color;
+ Handles.color = col;
+ Handles.DrawWireCube(position, size);
+ Handles.color = c;
+ }
+
#endregion
#region 复合handle
+ #endregion
+
+ #region 内部方法
+
+ static GUIStyle TryGetLabelStyleOrCreate(Color color)
+ {
+ GUIStyle style;
+ if (!s_StyleLabels.TryGetValue(color.GetHashCode(), out style))
+ {
+ style = new GUIStyle();
+ style.normal.textColor = color;
+ s_StyleLabels.Add(color.GetHashCode(), style);
+ }
+ return style;
+ }
+
#endregion
}
diff --git a/UnityCollection/Assets/Tools/EditorGUIHelper/Editor/EditorHandlesHelper.cs.meta b/UnityCollection/Assets/Tools/EditorGUIHelper/Editor/EditorHandlesHelper.cs.meta
index 9214902..5980e0b 100644
--- a/UnityCollection/Assets/Tools/EditorGUIHelper/Editor/EditorHandlesHelper.cs.meta
+++ b/UnityCollection/Assets/Tools/EditorGUIHelper/Editor/EditorHandlesHelper.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 769f17c75b56df84ba523a8dcfa021dc
+guid: f833debbd4598444b9fee62250e36306
MonoImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/UnityCollection/Assets/Tools/EditorGUIHelper/Examples/Editor.meta b/UnityCollection/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends.meta
index f0bcd1b..02796be 100644
--- a/UnityCollection/Assets/Tools/EditorGUIHelper/Examples/Editor.meta
+++ b/UnityCollection/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: 95936c00fcd584241aa27d9ae4a92411
+guid: d44acfdfc914b8a46858adb3b8a43a7d
folderAsset: yes
DefaultImporter:
externalObjects: {}
diff --git a/UnityCollection/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends/InspectorExt.cs b/UnityCollection/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends/InspectorExt.cs
new file mode 100644
index 0000000..8ec839d
--- /dev/null
+++ b/UnityCollection/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends/InspectorExt.cs
@@ -0,0 +1,64 @@
+using System;
+using System.Reflection;
+using UnityEngine;
+using UnityEditor;
+
+public abstract class InspectorExt : Editor
+{
+ protected Editor defaultEditor;
+
+ protected abstract string defaultEditorName { get; }
+
+ bool s_MoreInfo = true;
+ static readonly GUIContent more = EditorGUIUtility.TrTextContent("More Information", null, (Texture2D)null);
+
+ public virtual void OnEnable()
+ {
+ defaultEditor = Editor.CreateEditor(targets, Type.GetType(defaultEditorName));
+ if(defaultEditor == null)
+ Debug.LogError("No such editor class \""+ defaultEditorName + "\"");
+ TryInvokeDefaultMethod("OnEnable");
+ }
+
+ public virtual void OnDisable()
+ {
+ //When OnDisable is called, the default editor we created should be destroyed to avoid memory leakage.
+ //Also, make sure to call any required methods like OnDisable
+ TryInvokeDefaultMethod("OnDisable");
+ DestroyImmediate(defaultEditor);
+
+ s_MoreInfo = true;
+ }
+
+ public override void OnInspectorGUI()
+ {
+ if (defaultEditor)
+ defaultEditor.OnInspectorGUI();
+ }
+
+ public virtual void OnSceneGUI ()
+ {
+ TryInvokeDefaultMethod("OnSceneGUI");
+ }
+
+ protected bool BeginMore()
+ {
+ s_MoreInfo = EditorGUILayout.BeginFoldoutHeaderGroup(s_MoreInfo, more, null, null, null);
+ return s_MoreInfo;
+ }
+
+ protected void EndMore()
+ {
+ EditorGUILayout.EndFoldoutHeaderGroup();
+ }
+
+ protected void TryInvokeDefaultMethod(string method, BindingFlags flag = BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public)
+ {
+ MethodInfo disableMethod = defaultEditor.GetType().GetMethod(method, flag);
+ if (disableMethod != null)
+ {
+ disableMethod.Invoke(defaultEditor, null);
+ }
+ }
+
+} \ No newline at end of file
diff --git a/UnityCollection/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends/InspectorExt.cs.meta b/UnityCollection/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends/InspectorExt.cs.meta
new file mode 100644
index 0000000..33a6747
--- /dev/null
+++ b/UnityCollection/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends/InspectorExt.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 0ac8e9c82eb57e5489438cd41fa88ba5
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/UnityCollection/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends/MeshRendererInspector.cs b/UnityCollection/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends/MeshRendererInspector.cs
new file mode 100644
index 0000000..8a639d6
--- /dev/null
+++ b/UnityCollection/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends/MeshRendererInspector.cs
@@ -0,0 +1,80 @@
+using System;
+using System.Reflection;
+using UnityEngine;
+using UnityEditor;
+
+// չmeshrender editorʾ
+// sortingLayer
+// sortingOrder
+// bounds
+[CustomEditor(typeof(MeshRenderer), true)]
+[CanEditMultipleObjects]
+public class MeshRendererInspector : InspectorExt
+{
+ MeshRenderer renderer;
+
+ bool s_ShowBounds = false;
+
+ string s_BoundsIconPath = EditorGUIHelperSetUp.root + "Icons/bounds.png";
+ GUIContent s_BoundsIcon;
+
+ protected override string defaultEditorName => "UnityEditor.MeshRendererEditor, UnityEditor";
+
+ public override void OnEnable()
+ {
+ base.OnEnable();
+ renderer = target as MeshRenderer;
+ Setup();
+ }
+
+ public override void OnDisable()
+ {
+ base.OnDisable();
+ Setup();
+ }
+
+ void Setup()
+ {
+ s_ShowBounds = false;
+ if(s_BoundsIcon == null)
+ s_BoundsIcon = EditorGUIUtility.IconContent(s_BoundsIconPath);
+ }
+
+ public sealed override void OnInspectorGUI()
+ {
+ base.OnInspectorGUI();
+
+ if (BeginMore())
+ {
+ string sortingLayer = renderer.sortingLayerName;
+ string[] layers = new string[SortingLayer.layers.Length];
+ int index = 0;
+ for (int i = 0; i < layers.Length; ++i)
+ {
+ layers[i] = SortingLayer.layers[i].name;
+ if (sortingLayer == layers[i])
+ index = i;
+ }
+ index = EditorGUILayout.Popup("Sorting Layer", index, layers);
+ renderer.sortingLayerName = layers[index];
+ renderer.sortingOrder = EditorGUILayout.IntField("Sorting Order", renderer.sortingOrder);
+ s_ShowBounds = EditorGUIHelper.ToggleButton("Show Bounds", s_ShowBounds, s_BoundsIcon);
+ }
+ EndMore();
+ }
+
+ public override void OnSceneGUI ()
+ {
+ base.OnSceneGUI();
+ if (s_ShowBounds)
+ {
+ Vector3 center = renderer.bounds.center;
+ float radius = renderer.bounds.extents.magnitude;
+ Handles.color = Color.white;
+ EditorHandlesHelper.WireCube(center, renderer.bounds.size, Color.blue);
+ Handles.color = Color.white;
+ EditorHandlesHelper.Label(center, "bounds:" + renderer.bounds.size,Color.blue);
+ }
+ }
+
+} \ No newline at end of file
diff --git a/UnityCollection/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends/MeshRendererInspector.cs.meta b/UnityCollection/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends/MeshRendererInspector.cs.meta
new file mode 100644
index 0000000..764508e
--- /dev/null
+++ b/UnityCollection/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends/MeshRendererInspector.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 4a54e71946e679847a74bc44ae85768f
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/UnityCollection/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends/SkinnedMeshRendererInspector.cs b/UnityCollection/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends/SkinnedMeshRendererInspector.cs
new file mode 100644
index 0000000..e4859b9
--- /dev/null
+++ b/UnityCollection/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends/SkinnedMeshRendererInspector.cs
@@ -0,0 +1,132 @@
+using System;
+using System.Reflection;
+using UnityEngine;
+using UnityEditor;
+
+// sortingLayer
+// sortingOrder
+// bounds
+// bonecount
+[CustomEditor(typeof(SkinnedMeshRenderer), true)]
+[CanEditMultipleObjects]
+public class SkinnedMeshRendererInspector : InspectorExt
+{
+ protected override string defaultEditorName => "UnityEditor.SkinnedMeshRendererEditor, UnityEditor";
+
+ SkinnedMeshRenderer renderer;
+
+ string s_BoundsIconPath = EditorGUIHelperSetUp.root + "Icons/bounds.png";
+ GUIContent s_BoundsIcon;
+
+ bool s_ShowBounds = false;
+
+ public override void OnEnable()
+ {
+ base.OnEnable();
+ renderer = target as SkinnedMeshRenderer;
+ if (s_BoundsIcon == null)
+ s_BoundsIcon = EditorGUIUtility.IconContent(s_BoundsIconPath);
+ s_ShowBounds = false;
+ }
+
+ public override void OnDisable()
+ {
+ base.OnDisable();
+ s_ShowBounds = false;
+ }
+
+ public override void OnInspectorGUI()
+ {
+ base.OnInspectorGUI();
+
+ if (renderer == null)
+ return;
+
+ if(BeginMore())
+ {
+ string sortingLayer = renderer.sortingLayerName;
+ string[] layers = new string[SortingLayer.layers.Length];
+ int index = 0;
+ for (int i = 0; i < layers.Length; ++i)
+ {
+ layers[i] = SortingLayer.layers[i].name;
+ if (sortingLayer == layers[i])
+ index = i;
+ }
+ index = EditorGUILayout.Popup("Sorting Layer", index, layers);
+ renderer.sortingLayerName = layers[index];
+ renderer.sortingOrder = EditorGUILayout.IntField("Sorting Order", renderer.sortingOrder);
+ s_ShowBounds = EditorGUIHelper.ToggleButton("Show Bounds", s_ShowBounds, s_BoundsIcon);
+ Transform bone0 = renderer.bones != null && renderer.bones.Length > 0 ? renderer.bones[0] : null;
+ GUI.enabled = false;
+ EditorGUILayout.ObjectField("Bones[0]", bone0, typeof(Transform), true);
+ GUI.enabled = true;
+ //EditorGUIHelper.LabelField("Bone Count", GetBoneCount(bone0).ToString());
+ EditorGUIHelper.LabelField("Bones Length", renderer.bones.Length.ToString());
+
+ // Mesh info
+ Mesh mesh = renderer.sharedMesh;
+ if(mesh)
+ {
+ EditorGUIHelper.LabelField("Mesh Info", "Vertex Count (VBO): " + mesh.vertexCount);
+ EditorGUIHelper.LabelFieldRight("Topology Count (IBO): " + mesh.triangles.Length);
+ EditorGUIHelper.LabelFieldRight("Possible Triangles Count: " + mesh.triangles.Length / 3);
+ EditorGUIHelper.LabelFieldRight("SubMesh Count: " + mesh.subMeshCount);
+ EditorGUIHelper.LabelFieldRight("Attributes: " + GetAttributesEnabled());
+ }
+ }
+ EndMore();
+ }
+
+
+ private int GetBoneCount(Transform root)
+ {
+ if (root == null)
+ return 0;
+ int childCount = root.childCount;
+ for (int i = 0; i < root.childCount; ++i)
+ {
+ childCount += GetBoneCount(root.GetChild(i));
+ }
+ return childCount;
+ }
+
+ public override void OnSceneGUI()
+ {
+ base.OnSceneGUI();
+ if (s_ShowBounds)
+ {
+ Vector3 center = renderer.bounds.center;
+ float radius = renderer.bounds.extents.magnitude;
+ Handles.color = Color.white;
+ EditorHandlesHelper.WireCube(center, renderer.bounds.size, Color.blue);
+ Handles.color = Color.white;
+ EditorHandlesHelper.Label(center, "bounds:" + renderer.bounds.size, Color.blue);
+ }
+ }
+
+ private string GetAttributesEnabled()
+ {
+ if (renderer == null)
+ return "";
+ string attr = "";
+ Mesh mesh = renderer.sharedMesh;
+ if (mesh.vertices.Length > 0) attr += "[position] ";
+ if (mesh.normals.Length > 0) attr += "[normal] ";
+ if (mesh.tangents.Length > 0) attr += "[tangent] ";
+ if (mesh.colors.Length > 0) attr += "[color] ";
+ if (mesh.uv.Length > 0) attr += "[uv1] ";
+ if (mesh.uv2.Length > 0) attr += "[uv2] ";
+ if (mesh.uv3.Length > 0) attr += "[uv3] ";
+ if (mesh.uv4.Length > 0) attr += "[uv4] ";
+#if UNITY_2019 || UNITY_2020 || UNITY_2021
+ if (mesh.uv5.Length > 0) attr += "[uv5] ";
+ if (mesh.uv6.Length > 0) attr += "[uv6] ";
+ if (mesh.uv7.Length > 0) attr += "[uv7] ";
+ if (mesh.uv8.Length > 0) attr += "[uv8] ";
+#endif
+ if (mesh.boneWeights.Length > 0) attr += "[boneWeights] ";
+ return attr;
+ }
+
+}
diff --git a/UnityCollection/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends/SkinnedMeshRendererInspector.cs.meta b/UnityCollection/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends/SkinnedMeshRendererInspector.cs.meta
new file mode 100644
index 0000000..5d0e921
--- /dev/null
+++ b/UnityCollection/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends/SkinnedMeshRendererInspector.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: e27c6d4aff57a454292d44ec5fab325f
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/UnityCollection/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends/TransformInspector.cs b/UnityCollection/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends/TransformInspector.cs
new file mode 100644
index 0000000..c475a8c
--- /dev/null
+++ b/UnityCollection/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends/TransformInspector.cs
@@ -0,0 +1,50 @@
+//https://forum.unity.com/threads/extending-instead-of-replacing-built-in-inspectors.407612/
+using System;
+using System.Reflection;
+using UnityEngine;
+using UnityEditor;
+
+[CustomEditor(typeof(Transform), true)]
+[CanEditMultipleObjects]
+public class TransformInspector : InspectorExt
+{
+ Transform transform;
+
+ bool s_ShowInformation = false;
+
+ protected override string defaultEditorName => "UnityEditor.TransformInspector, UnityEditor";
+
+ public override void OnEnable()
+ {
+ base.OnEnable();
+ transform = target as Transform;
+ s_ShowInformation = false;
+ }
+
+ public override void OnDisable()
+ {
+ base.OnDisable();
+ s_ShowInformation = false;
+ }
+
+ public override void OnInspectorGUI()
+ {
+ EditorGUILayout.LabelField("Local Space", EditorStyles.boldLabel);
+ defaultEditor.OnInspectorGUI();
+
+ if(BeginMore())
+ {
+ //
+ EditorGUILayout.LabelField("World Space", EditorStyles.boldLabel);
+
+ GUI.enabled = false;
+
+ EditorGUILayout.Vector3Field("Position", transform.position);
+ EditorGUILayout.Vector3Field("Rotation", transform.rotation.ToEuler() * Mathf.Rad2Deg);
+ EditorGUILayout.Vector3Field("Scale", transform.lossyScale);
+
+ GUI.enabled = true;
+ }
+ EndMore();
+ }
+} \ No newline at end of file
diff --git a/UnityCollection/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends/TransformInspector.cs.meta b/UnityCollection/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends/TransformInspector.cs.meta
new file mode 100644
index 0000000..bd8715e
--- /dev/null
+++ b/UnityCollection/Assets/Tools/EditorGUIHelper/Editor/InspectorExtends/TransformInspector.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 96be6f39599da8249ac5d7ab713e15ce
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/UnityCollection/Assets/Tools/EditorGUIHelper/Examples/CustomHandles.unity b/UnityCollection/Assets/Tools/EditorGUIHelper/Examples/CustomHandles.unity
index 9abe0be..85c5f27 100644
--- a/UnityCollection/Assets/Tools/EditorGUIHelper/Examples/CustomHandles.unity
+++ b/UnityCollection/Assets/Tools/EditorGUIHelper/Examples/CustomHandles.unity
@@ -206,13 +206,106 @@ Transform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 316520961}
- m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
+ m_LocalRotation: {x: 0.82503605, y: -0.35501626, z: -0.15873699, w: 0.40997747}
m_LocalPosition: {x: 0, y: 3, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
- m_RootOrder: 1
- m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 145.682, y: 42.03499, z: 60.095993}
+--- !u!1 &1008144745
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1008144749}
+ - component: {fileID: 1008144748}
+ - component: {fileID: 1008144747}
+ - component: {fileID: 1008144746}
+ m_Layer: 0
+ m_Name: Cube (1)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!65 &1008144746
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1008144745}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
+ m_Enabled: 1
+ serializedVersion: 2
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &1008144747
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1008144745}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+--- !u!33 &1008144748
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1008144745}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!4 &1008144749
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1008144745}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: -4.13, y: 3.36, z: 0.7656574}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 4
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1033041003
GameObject:
m_ObjectHideFlags: 0
@@ -323,8 +416,158 @@ Transform:
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
- m_RootOrder: 2
+ m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1369722875
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1369722879}
+ - component: {fileID: 1369722878}
+ - component: {fileID: 1369722877}
+ - component: {fileID: 1369722876}
+ m_Layer: 0
+ m_Name: Cube (2)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!65 &1369722876
+BoxCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1369722875}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
+ m_Enabled: 1
+ serializedVersion: 2
+ m_Size: {x: 1, y: 1, z: 1}
+ m_Center: {x: 0, y: 0, z: 0}
+--- !u!23 &1369722877
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1369722875}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 2
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_ReceiveGI: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 1
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+--- !u!33 &1369722878
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1369722875}
+ m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!4 &1369722879
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1369722875}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: -4.13, y: 3.36, z: 0.7656574}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 0}
+ m_RootOrder: 5
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1001 &1673605013
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ m_TransformParent: {fileID: 0}
+ m_Modifications:
+ - target: {fileID: 1875505553876386, guid: 66f8cfa9c9939fb4888c87f2dfed3803, type: 3}
+ propertyPath: m_Name
+ value: Rifle Mech
+ objectReference: {fileID: 0}
+ - target: {fileID: 4064544105661534, guid: 66f8cfa9c9939fb4888c87f2dfed3803, type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4064544105661534, guid: 66f8cfa9c9939fb4888c87f2dfed3803, type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4064544105661534, guid: 66f8cfa9c9939fb4888c87f2dfed3803, type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4064544105661534, guid: 66f8cfa9c9939fb4888c87f2dfed3803, type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4064544105661534, guid: 66f8cfa9c9939fb4888c87f2dfed3803, type: 3}
+ propertyPath: m_LocalRotation.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4064544105661534, guid: 66f8cfa9c9939fb4888c87f2dfed3803, type: 3}
+ propertyPath: m_LocalRotation.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4064544105661534, guid: 66f8cfa9c9939fb4888c87f2dfed3803, type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 4064544105661534, guid: 66f8cfa9c9939fb4888c87f2dfed3803, type: 3}
+ propertyPath: m_RootOrder
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 4064544105661534, guid: 66f8cfa9c9939fb4888c87f2dfed3803, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4064544105661534, guid: 66f8cfa9c9939fb4888c87f2dfed3803, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4064544105661534, guid: 66f8cfa9c9939fb4888c87f2dfed3803, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 66f8cfa9c9939fb4888c87f2dfed3803, type: 3}
--- !u!1 &1760453184
GameObject:
m_ObjectHideFlags: 0
diff --git a/UnityCollection/Assets/Tools/EditorGUIHelper/Examples/Editor/RotationLimitAngleInspector.cs b/UnityCollection/Assets/Tools/EditorGUIHelper/Examples/Editor/RotationLimitAngleInspector.cs
deleted file mode 100644
index 344f1de..0000000
--- a/UnityCollection/Assets/Tools/EditorGUIHelper/Examples/Editor/RotationLimitAngleInspector.cs
+++ /dev/null
@@ -1,27 +0,0 @@
-using System.Collections;
-using System.Collections.Generic;
-using UnityEngine;
-using UnityEditor;
-
-[CustomEditor(typeof(RotationLimitAngle))]
-public class RotationLimitAngleInspector : Editor
-{
-
- void OnSceneGUI()
- {
- RotationLimitAngle script = target as RotationLimitAngle;
- if (script == null)
- return;
- Vector3 axis = script.axis.normalized;
- Vector3 v = new Vector3(axis.y, axis.z, axis.x);
- Vector3 cross = Vector3.Cross(axis, v).normalized;
- Quaternion minRotation = Quaternion.AngleAxis(script.min, axis);
- float min = script.min;
- min = EditorHandlesHelper.ScaleValueHandle(min
- , script.transform.position + minRotation * cross
- , Quaternion.AngleAxis(script.min, axis) * Quaternion.LookRotation(Vector3.up)
- , 0.5f
- , Handles.CylinderHandleCap, -10);
- script.min = Mathf.Clamp(min, 0, 360);
- }
-} \ No newline at end of file
diff --git a/UnityCollection/Assets/Tools/EditorGUIHelper/Icons.meta b/UnityCollection/Assets/Tools/EditorGUIHelper/Icons.meta
new file mode 100644
index 0000000..1aa955d
--- /dev/null
+++ b/UnityCollection/Assets/Tools/EditorGUIHelper/Icons.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 9314c9f4c2c8e8a489be132162fad72c
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/UnityCollection/Assets/Tools/EditorGUIHelper/Icons/Bounds.png b/UnityCollection/Assets/Tools/EditorGUIHelper/Icons/Bounds.png
new file mode 100644
index 0000000..da89632
--- /dev/null
+++ b/UnityCollection/Assets/Tools/EditorGUIHelper/Icons/Bounds.png
Binary files differ
diff --git a/UnityCollection/Assets/Tools/EditorGUIHelper/Icons/Bounds.png.meta b/UnityCollection/Assets/Tools/EditorGUIHelper/Icons/Bounds.png.meta
new file mode 100644
index 0000000..0c49770
--- /dev/null
+++ b/UnityCollection/Assets/Tools/EditorGUIHelper/Icons/Bounds.png.meta
@@ -0,0 +1,92 @@
+fileFormatVersion: 2
+guid: 834cfc1a7caf00b4e83e749591e84459
+TextureImporter:
+ internalIDToNameTable: []
+ externalObjects: {}
+ serializedVersion: 11
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 1
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: -1
+ aniso: -1
+ mipBias: -100
+ wrapU: -1
+ wrapV: -1
+ wrapW: -1
+ nPOTScale: 1
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 0
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 0
+ spriteTessellationDetail: -1
+ textureType: 0
+ textureShape: 1
+ singleChannelComponent: 0
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ applyGammaDecoding: 0
+ platformSettings:
+ - serializedVersion: 3
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ physicsShape: []
+ bones: []
+ spriteID:
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/UnityCollection/Assets/Tools/EditorGUIHelper/MinMaxSliderAttribute/Editor.meta b/UnityCollection/Assets/Tools/EditorGUIHelper/MinMaxSliderAttribute/Editor.meta
index 1af64de..0fbfc05 100644
--- a/UnityCollection/Assets/Tools/EditorGUIHelper/MinMaxSliderAttribute/Editor.meta
+++ b/UnityCollection/Assets/Tools/EditorGUIHelper/MinMaxSliderAttribute/Editor.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: b775fb7e3290d804d8520dc75023beca
+guid: fbe331826f9610d4b8bfba6374b10098
folderAsset: yes
DefaultImporter:
externalObjects: {}
diff --git a/UnityCollection/Assets/Tools/EditorGUIHelper/MinMaxSliderAttribute/Editor/MinMaxSliderDrawer.cs.meta b/UnityCollection/Assets/Tools/EditorGUIHelper/MinMaxSliderAttribute/Editor/MinMaxSliderDrawer.cs.meta
index 894a325..7efaf04 100644
--- a/UnityCollection/Assets/Tools/EditorGUIHelper/MinMaxSliderAttribute/Editor/MinMaxSliderDrawer.cs.meta
+++ b/UnityCollection/Assets/Tools/EditorGUIHelper/MinMaxSliderAttribute/Editor/MinMaxSliderDrawer.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: e5809f5684a7a0b4c904bbbaa597b4ec
+guid: 2418136676909034b8638efdc91a215e
MonoImporter:
externalObjects: {}
serializedVersion: 2
diff --git a/UnityCollection/Assets/Tools/EditorGUIHelper/MinMaxSliderAttribute/MinMaxSliderAttribute.cs.meta b/UnityCollection/Assets/Tools/EditorGUIHelper/MinMaxSliderAttribute/MinMaxSliderAttribute.cs.meta
index 92c7392..ca58275 100644
--- a/UnityCollection/Assets/Tools/EditorGUIHelper/MinMaxSliderAttribute/MinMaxSliderAttribute.cs.meta
+++ b/UnityCollection/Assets/Tools/EditorGUIHelper/MinMaxSliderAttribute/MinMaxSliderAttribute.cs.meta
@@ -1,5 +1,5 @@
fileFormatVersion: 2
-guid: ad7028c6eedb19e47ab5d455a06e48f5
+guid: 293fbbe23cf64d94885e043ab4f2aa0d
MonoImporter:
externalObjects: {}
serializedVersion: 2