summaryrefslogtreecommitdiff
path: root/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/BoundsEditor.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Assets/Plugins/Editor/AdvancedInspector/FieldEditors/BoundsEditor.cs')
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/FieldEditors/BoundsEditor.cs134
1 files changed, 134 insertions, 0 deletions
diff --git a/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/BoundsEditor.cs b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/BoundsEditor.cs
new file mode 100644
index 00000000..773201e1
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/BoundsEditor.cs
@@ -0,0 +1,134 @@
+using UnityEngine;
+using UnityEditor;
+using System;
+using System.Collections;
+
+namespace AdvancedInspector
+{
+ public class BoundsEditor : FieldEditor
+ {
+ public override bool Expandable
+ {
+ get { return false; }
+ }
+
+ public override Type[] EditedTypes
+ {
+ get { return new Type[] { typeof(Bounds) }; }
+ }
+
+ public override void Draw(InspectorField field, GUIStyle style)
+ {
+ float labelWidth = EditorGUIUtility.labelWidth;
+ EditorGUIUtility.labelWidth = VECTOR_FIELD_WIDTH;
+
+ Bounds[] values = field.GetValues<Bounds>();
+
+ float[] centerX = new float[values.Length];
+ float[] centerY = new float[values.Length];
+ float[] centerZ = new float[values.Length];
+ float[] extendX = new float[values.Length];
+ float[] extendY = new float[values.Length];
+ float[] extendZ = new float[values.Length];
+
+ for (int i = 0; i < values.Length; i++)
+ {
+ centerX[i] = values[i].center.x;
+ centerY[i] = values[i].center.y;
+ centerZ[i] = values[i].center.z;
+ extendX[i] = values[i].extents.x;
+ extendY[i] = values[i].extents.y;
+ extendZ[i] = values[i].extents.z;
+ }
+
+ GUILayout.BeginHorizontal();
+ float result;
+ EditorGUILayout.LabelField("Center: ", GUILayout.Width(48));
+ if (FloatEditor.DrawFloat("X", centerX, style, out result))
+ {
+ Undo.RecordObjects(field.SerializedInstances, "Edit " + field.Name + " Center X");
+
+ for (int i = 0; i < field.Instances.Length; i++)
+ {
+ Vector3 center = values[i].center;
+ center.x = result;
+ values[i].center = center;
+ field.SetValue(field.Instances[i], values[i]);
+ }
+ }
+
+ if (FloatEditor.DrawFloat("Y", centerY, style, out result))
+ {
+ Undo.RecordObjects(field.SerializedInstances, "Edit " + field.Name + " Center Y");
+
+ for (int i = 0; i < field.Instances.Length; i++)
+ {
+ Vector3 center = values[i].center;
+ center.y = result;
+ values[i].center = center;
+ field.SetValue(field.Instances[i], values[i]);
+ }
+ }
+
+ if (FloatEditor.DrawFloat("Z", centerZ, style, out result))
+ {
+ Undo.RecordObjects(field.SerializedInstances, "Edit " + field.Name + " Center Z");
+
+ for (int i = 0; i < field.Instances.Length; i++)
+ {
+ Vector3 center = values[i].center;
+ center.z = result;
+ values[i].center = center;
+ field.SetValue(field.Instances[i], values[i]);
+ }
+ }
+ GUILayout.EndHorizontal();
+
+ GUILayout.BeginHorizontal();
+ EditorGUILayout.LabelField("Extend: ", GUILayout.Width(48));
+ if (FloatEditor.DrawFloat("X", extendX, style, out result))
+ {
+ Undo.RecordObjects(field.SerializedInstances, "Edit " + field.Name + " Extend X");
+
+ for (int i = 0; i < field.Instances.Length; i++)
+ {
+ Vector3 extents = values[i].extents;
+ extents.x = result;
+ values[i].extents = extents;
+ field.SetValue(field.Instances[i], values[i]);
+ }
+ }
+
+ if (FloatEditor.DrawFloat("Y", extendY, style, out result))
+ {
+ Undo.RecordObjects(field.SerializedInstances, "Edit " + field.Name + " Extend Y");
+
+ for (int i = 0; i < field.Instances.Length; i++)
+ {
+ Vector3 extents = values[i].extents;
+ extents.y = result;
+ values[i].extents = extents;
+ field.SetValue(field.Instances[i], values[i]);
+ }
+ }
+
+ if (FloatEditor.DrawFloat("Z", extendZ, style, out result))
+ {
+ Undo.RecordObjects(field.SerializedInstances, "Edit " + field.Name + " Extend Z");
+
+ for (int i = 0; i < field.Instances.Length; i++)
+ {
+ Vector3 extents = values[i].extents;
+ extents.z = result;
+ values[i].extents = extents;
+ field.SetValue(field.Instances[i], values[i]);
+ }
+ }
+ GUILayout.EndHorizontal();
+
+ EditorGUILayout.Space();
+
+ EditorGUIUtility.labelWidth = labelWidth;
+ }
+ }
+} \ No newline at end of file