diff options
Diffstat (limited to 'Assets/Plugins/Editor/AdvancedInspector/FieldEditors/FloatEditor.cs')
-rw-r--r-- | Assets/Plugins/Editor/AdvancedInspector/FieldEditors/FloatEditor.cs | 208 |
1 files changed, 0 insertions, 208 deletions
diff --git a/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/FloatEditor.cs b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/FloatEditor.cs deleted file mode 100644 index d139c02f..00000000 --- a/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/FloatEditor.cs +++ /dev/null @@ -1,208 +0,0 @@ -using UnityEngine; -using UnityEditor; -using System; -using System.Collections; - -namespace AdvancedInspector -{ - public class FloatEditor : FieldEditor - { - public override Type[] EditedTypes - { - get { return new Type[] { typeof(float), typeof(decimal), typeof(double) }; } - } - - public override void OnLabelDraw(InspectorField field, Rect rect) - { - if (InspectorPreferences.IsDragControl(InspectorPreferences.ValueScroll)) - EditorGUIUtility.AddCursorRect(rect, MouseCursor.ResizeHorizontal); - } - - public override void OnLabelClick(InspectorField field) - { - EditorGUIUtility.SetWantsMouseJumping(1); - } - - public override void OnLabelDragged(InspectorField field) - { - if (InspectorPreferences.IsDragControl(InspectorPreferences.ValueScroll)) - { - object result = field.GetValues()[0]; - double sensitivity = CalculateDragSensitivity(result); - result = Convert.ToDouble(result) + (double)(sensitivity * HandleUtility.niceMouseDelta); - - RangeValueAttribute rangeValue = field.GetAttribute<RangeValueAttribute>(); - if (rangeValue != null) - result = Math.Min(Math.Max((double)result, rangeValue.Min), rangeValue.Max); - - RangeAttribute range = field.GetAttribute<RangeAttribute>(); - if (range != null) - result = Math.Min(Math.Max((double)result, range.min), range.max); - - try - { - result = Convert.ChangeType(result, field.Type); - field.SetValue(result); - } - catch (Exception) - { - return; - } - } - } - - private static double CalculateDragSensitivity(object value) - { - double number = Convert.ToDouble(value); - - if (!double.IsInfinity(number) && !double.IsNaN(number)) - return (Math.Max(1d, Math.Pow(Math.Abs(number), 0.5d)) * 0.03d); - - return 0d; - } - - public override void Draw(InspectorField field, GUIStyle style) - { - RangeValueAttribute rangeValue = field.GetAttribute<RangeValueAttribute>(); - RangeAttribute range = field.GetAttribute<RangeAttribute>(); - - if (range != null && rangeValue == null) - rangeValue = new RangeValueAttribute(range.min, range.max); - - AngleAttribute angle = field.GetAttribute<AngleAttribute>(); - - object result; - if (DrawFloatingNumber(new GUIContent(""), field.GetValues(), rangeValue, angle, style, out result)) - field.SetValue(result); - } - - public static bool DrawFloat(string label, float[] values, out float result, params GUILayoutOption[] options) - { - return DrawFloat(label, values, null, null, null, out result, options); - } - - public static bool DrawFloat(string label, float[] values, GUIStyle style, out float result, params GUILayoutOption[] options) - { - return DrawFloat(label, values, null, null, style, out result, options); - } - - public static bool DrawFloat(string label, float[] values, RangeValueAttribute range, AngleAttribute angle, GUIStyle style, out float result, params GUILayoutOption[] options) - { - object genericResult; - object[] genericValues = new object[values.Length]; - for (int i = 0; i < values.Length; i++) - genericValues[i] = values[i]; - - bool changed = DrawFloatingNumber(new GUIContent(label), genericValues, range, angle, style, out genericResult, options); - - try - { - result = (float)genericResult; - } - catch (Exception) - { - result = values[0]; - return false; - } - - return changed; - } - - public static bool DrawFloatingNumber(GUIContent label, object[] values, RangeValueAttribute range, AngleAttribute angle, GUIStyle style, out object result, params GUILayoutOption[] options) - { - result = 0; - - EditorGUI.showMixedValue = false; - result = values[0]; - Type type = result.GetType(); - for (int i = 1; i < values.Length; i++) - { - if (values[i].Equals(result)) - continue; - - EditorGUI.showMixedValue = true; - break; - } - - EditorGUI.BeginChangeCheck(); - EditorGUILayout.BeginHorizontal(); - - if (!string.IsNullOrEmpty(label.text)) - { - int size = (int)GUI.skin.label.CalcSize(label).x; - if (size > 4) - size = Mathf.Max(size, 15); - - GUILayout.Label(label, GUI.skin.label, GUILayout.Width(size)); - - Event e = Event.current; - Rect labelRect = GUILayoutUtility.GetLastRect(); - int id = EditorGUIUtility.GetControlID(FocusType.Passive, labelRect); - - if (InspectorPreferences.IsDragControl(InspectorPreferences.ValueScroll)) - { - if (e.type == EventType.Repaint) - { - EditorGUIUtility.AddCursorRect(labelRect, MouseCursor.ResizeHorizontal); - } - else if (e.type == EventType.MouseDown && labelRect.Contains(e.mousePosition) && e.button == 0) - { - GUIUtility.hotControl = id; - GUIUtility.keyboardControl = id; - EditorGUIUtility.SetWantsMouseJumping(1); - e.Use(); - } - else if (e.type == EventType.MouseDrag && GUIUtility.hotControl == id) - { - double sensitivity = CalculateDragSensitivity(result); - result = Convert.ToDecimal(result) + (decimal)(sensitivity * HandleUtility.niceMouseDelta); - - if (range != null) - result = Math.Min(Math.Max((double)result, (double)range.Min), (double)range.Max); - - GUI.changed = true; - e.Use(); - } - else if (e.type == EventType.MouseUp && GUIUtility.hotControl == id) - { - GUIUtility.hotControl = 0; - EditorGUIUtility.SetWantsMouseJumping(0); - e.Use(); - } - } - } - - if (angle != null) - { - if (range != null) - result = ExtraGUILayout.FloatAngle((float)result, angle.Snap, range.Min, range.Max); - else - result = ExtraGUILayout.FloatAngle((float)result, angle.Snap); - } - else - { - if (range != null) - result = EditorGUILayout.Slider((float)result, range.Min, range.Max, options); - else - { - if (style != null) - result = EditorGUILayout.TextField(result.ToString(), style, options); - else - result = EditorGUILayout.TextField(result.ToString(), options); - } - } - - try - { - result = Convert.ChangeType(result, type); - } - catch (Exception) - { - return false; - } - - EditorGUILayout.EndHorizontal(); - return EditorGUI.EndChangeCheck(); - } - } -}
\ No newline at end of file |