summaryrefslogtreecommitdiff
path: root/Assets/Plugins/Editor
diff options
context:
space:
mode:
Diffstat (limited to 'Assets/Plugins/Editor')
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector.meta5
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/AdvancedInspector.XML1630
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/AdvancedInspector.XML.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/AdvancedInspector.dllbin0 -> 167936 bytes
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/AdvancedInspector.dll.meta33
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/AdvancedInspector.pdbbin0 -> 421376 bytes
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/AdvancedInspector.pdb.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/Examples.meta5
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/Examples/ExternalInspectorWindow.cs76
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/Examples/ExternalInspectorWindow.cs.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/ExtraGUI.meta5
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/ExtraGUI/ExtraGUI.cs196
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/ExtraGUI/ExtraGUI.cs.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/ExtraGUI/ExtraGUILayout.cs59
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/ExtraGUI/ExtraGUILayout.cs.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/FieldEditors.meta5
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/FieldEditors/AnimationCurveEditor.cs29
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/FieldEditors/AnimationCurveEditor.cs.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/FieldEditors/BooleanEditor.cs30
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/FieldEditors/BooleanEditor.cs.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/FieldEditors/BoundsEditor.cs134
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/FieldEditors/BoundsEditor.cs.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/FieldEditors/CharEditor.cs40
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/FieldEditors/CharEditor.cs.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/FieldEditors/ColorEditor.cs49
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/FieldEditors/ColorEditor.cs.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/FieldEditors/DateTimeEditor.cs69
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/FieldEditors/DateTimeEditor.cs.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/FieldEditors/EnumEditor.cs192
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/FieldEditors/EnumEditor.cs.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/FieldEditors/FloatEditor.cs208
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/FieldEditors/FloatEditor.cs.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/FieldEditors/GradientEditor.cs36
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/FieldEditors/GradientEditor.cs.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/FieldEditors/GuidEditor.cs25
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/FieldEditors/GuidEditor.cs.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/FieldEditors/IntegerEditor.cs195
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/FieldEditors/IntegerEditor.cs.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/FieldEditors/LayerMaskEditor.cs104
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/FieldEditors/LayerMaskEditor.cs.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/FieldEditors/MonoEditor.cs78
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/FieldEditors/MonoEditor.cs.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/FieldEditors/ObjectEditor.cs192
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/FieldEditors/ObjectEditor.cs.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/FieldEditors/QuaternionEditor.cs168
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/FieldEditors/QuaternionEditor.cs.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/FieldEditors/RangeEditor.cs109
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/FieldEditors/RangeEditor.cs.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/FieldEditors/RectEditor.cs165
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/FieldEditors/RectEditor.cs.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/FieldEditors/RigidbodyConstraints2DEditor.cs60
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/FieldEditors/RigidbodyConstraints2DEditor.cs.meta12
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/FieldEditors/RigidbodyConstraintsEditor.cs69
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/FieldEditors/RigidbodyConstraintsEditor.cs.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/FieldEditors/StringEditor.cs89
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/FieldEditors/StringEditor.cs.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/FieldEditors/TimeSpanEditor.cs98
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/FieldEditors/TimeSpanEditor.cs.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/FieldEditors/VectorEditor.cs208
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/FieldEditors/VectorEditor.cs.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UniToolsEditor.XML453
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UniToolsEditor.XML.meta4
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UniToolsEditor.dllbin0 -> 61440 bytes
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UniToolsEditor.dll.meta33
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UniToolsEditor.pdbbin0 -> 42496 bytes
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UniToolsEditor.pdb.meta4
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes.meta5
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/AnchoredJoint2DEditor.cs76
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/AnchoredJoint2DEditor.cs.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/AnimationEditor.cs85
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/AnimationEditor.cs.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/AnimatorEditor.cs117
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/AnimatorEditor.cs.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/BoxColliderEditor.cs70
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/BoxColliderEditor.cs.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/CameraEditor.cs268
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/CameraEditor.cs.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/CapsuleColliderEditor.cs165
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/CapsuleColliderEditor.cs.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/CharacterControllerEditor.cs151
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/CharacterControllerEditor.cs.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/CharacterJointEditor.cs33
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/CharacterJointEditor.cs.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/ClothEditor.cs37
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/ClothEditor.cs.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/ClothRendererEditor.cs26
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/ClothRendererEditor.cs.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/ColliderEditor.cs39
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/ColliderEditor.cs.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/ConstantForceEditor.cs29
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/ConstantForceEditor.cs.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/FixedJointEditor.cs20
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/FixedJointEditor.cs.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/HingeJoint2DEditor.cs69
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/HingeJoint2DEditor.cs.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/HingeJointEditor.cs84
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/HingeJointEditor.cs.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/Joint2DEditor.cs160
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/Joint2DEditor.cs.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/JointEditor.cs37
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/JointEditor.cs.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/LightEditor.cs351
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/LightEditor.cs.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/MeshColliderEditor.cs43
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/MeshColliderEditor.cs.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/MeshEditor.cs45
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/MeshEditor.cs.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/MeshFilterEditor.cs23
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/MeshFilterEditor.cs.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/MeshRendererEditor.cs20
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/MeshRendererEditor.cs.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/RendererEditor.cs53
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/RendererEditor.cs.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/Rigidbody2DEditor.cs43
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/Rigidbody2DEditor.cs.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/RigidbodyEditor.cs72
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/RigidbodyEditor.cs.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SkinnedMeshRendererEditor.cs36
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SkinnedMeshRendererEditor.cs.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SphereColliderEditor.cs76
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SphereColliderEditor.cs.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SpringJoint2DEditor.cs28
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SpringJoint2DEditor.cs.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SpringJointEditor.cs30
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SpringJointEditor.cs.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SpriteRendererEditor.cs36
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SpriteRendererEditor.cs.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes.meta5
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes/JointAngleLimits2D.cs25
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes/JointAngleLimits2D.cs.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes/JointDriveEditor.cs29
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes/JointDriveEditor.cs.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes/JointLimitsEditor.cs29
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes/JointLimitsEditor.cs.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes/JointMotor2DEditor.cs25
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes/JointMotor2DEditor.cs.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes/JointMotorEditor.cs27
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes/JointMotorEditor.cs.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes/JointSpringEditor.cs27
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes/JointSpringEditor.cs.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes/SoftJointLimitEditor.cs29
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes/SoftJointLimitEditor.cs.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes/WheelFrictionCurveEditor.cs31
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes/WheelFrictionCurveEditor.cs.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/TerrainColliderEditor.cs32
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/TerrainColliderEditor.cs.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/TextMeshEditor.cs49
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/TextMeshEditor.cs.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/TransformEditor.cs32
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/TransformEditor.cs.meta8
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/WheelColliderEditor.cs47
-rw-r--r--Assets/Plugins/Editor/AdvancedInspector/UnityTypes/WheelColliderEditor.cs.meta8
152 files changed, 8125 insertions, 0 deletions
diff --git a/Assets/Plugins/Editor/AdvancedInspector.meta b/Assets/Plugins/Editor/AdvancedInspector.meta
new file mode 100644
index 00000000..95d6ec65
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector.meta
@@ -0,0 +1,5 @@
+fileFormatVersion: 2
+guid: 5fc2dde4e518f4743be154c3078ef7c9
+folderAsset: yes
+DefaultImporter:
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/AdvancedInspector.XML b/Assets/Plugins/Editor/AdvancedInspector/AdvancedInspector.XML
new file mode 100644
index 00000000..a2386fed
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/AdvancedInspector.XML
@@ -0,0 +1,1630 @@
+<?xml version="1.0"?>
+<doc>
+ <assembly>
+ <name>AdvancedInspector</name>
+ </assembly>
+ <members>
+ <member name="T:AdvancedInspector.AdvancedInspectorControl">
+ <summary>
+ A collection of static method made to handle the drawing of the Advanced Inspector.
+ In most cases, you won't have to deal with this class.
+ </summary>
+ </member>
+ <member name="T:AdvancedInspector.IModal">
+ <summary>
+ This EditorWindow can recieve and send Toolbox inputs.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.IModal.ModalRequest(System.Boolean)">
+ <summary>
+ Called when the Toolbox shortcut is pressed.
+ The implementation should call CreateToolbox if the condition are right.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.IModal.ModalClosed(AdvancedInspector.ModalWindow)">
+ <summary>
+ Called when the associated toolbox is closed.
+ Only called when Ok/Cancel or Enter/Escape is pressed.
+ There's no reliable way of trapping the "click outside the popup" event.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.AdvancedInspectorControl.ModalRequest(System.Boolean)">
+ <summary>
+ IModal Implementation.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.AdvancedInspectorControl.ModalClosed(AdvancedInspector.ModalWindow)">
+ <summary>
+ IModal Implementation.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.AdvancedInspectorControl.Inspect(AdvancedInspector.InspectorEditor,System.Collections.Generic.List{AdvancedInspector.InspectorField},System.Boolean,System.Boolean)">
+ <summary>
+ Called by an Editor to have a collection of InspectorField to be displayed.
+ Uniformized entry point of inspector drawing.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.AdvancedInspectorControl.Inspect(AdvancedInspector.InspectorEditor,System.Collections.Generic.List{AdvancedInspector.InspectorField},System.Boolean,System.Boolean,System.Boolean)">
+ <summary>
+ Called by an Editor to have a collection of InspectorField to be displayed.
+ Uniformized entry point of inspector drawing.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.AdvancedInspectorControl.Inspect(AdvancedInspector.InspectorEditor,System.Collections.Generic.List{AdvancedInspector.InspectorField},System.Boolean,System.Boolean,System.Boolean,Separator)">
+ <summary>
+ Called by an Editor to have a collection of InspectorField to be displayed.
+ Uniformized entry point of inspector drawing.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.AdvancedInspectorControl.Draw(AdvancedInspector.InspectorEditor,AdvancedInspector.InspectorField,System.Collections.Generic.List{AdvancedInspector.InspectorField},System.Boolean,System.Boolean,System.Boolean)">
+ <summary>
+ Entry point of the inspection of a Property based editor.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.AdvancedInspectorControl.InitList(AdvancedInspector.InspectorField)">
+ <summary>
+ Unity doesn't always properly init it's array/list if a serialization reload didn't occur.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.AdvancedInspectorControl.DrawExpander(AdvancedInspector.InspectorField,AdvancedInspector.FieldEditor,System.Boolean)">
+ <summary>
+ Draw the arrow icon that allow to browse sub-object property.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.AdvancedInspectorControl.DrawIndexedControl(AdvancedInspector.InspectorField)">
+ <summary>
+ Draw the control of an sortable list.
+ Return true if a list has been modified and requires a redraw.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.AdvancedInspectorControl.DrawKeyedControl(AdvancedInspector.InspectorField)">
+ <summary>
+ Draw the - button for a Dictionary
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.AdvancedInspectorControl.DrawRestricted(AdvancedInspector.InspectorEditor,AdvancedInspector.InspectorField,System.Collections.Generic.IList{AdvancedInspector.DescriptorPair},UnityEngine.GUIStyle)">
+ <summary>
+ Draw the "Restricted" enum, which is a runtime list provide by a method.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.AdvancedInspectorControl.DrawDerived(AdvancedInspector.InspectorEditor,AdvancedInspector.InspectorField)">
+ <summary>
+ Draw the +/- icon to control the creation and deletion of user created object.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.AdvancedInspectorControl.DrawList(AdvancedInspector.InspectorEditor,AdvancedInspector.InspectorField)">
+ <summary>
+ Draw the + icon of a List
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.AdvancedInspectorControl.DrawDictionary(AdvancedInspector.InspectorEditor,AdvancedInspector.InspectorField)">
+ <summary>
+ Draw the + icon of a Dictionary
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.AdvancedInspectorControl.DrawLabel(AdvancedInspector.FieldEditor,AdvancedInspector.InspectorField,System.Boolean)">
+ <summary>
+ Draw the left side of a field, the label.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.AdvancedInspectorControl.GetWidth(AdvancedInspector.InspectorField)">
+ <summary>
+ Width of the label part.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.AdvancedInspectorControl.DrawHelp(AdvancedInspector.InspectorField,System.Boolean)">
+ <summary>
+ Draw the help box bellow the field.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.AdvancedInspectorControl.DrawClassHelp(System.Object[],System.Boolean)">
+ <summary>
+ Help box at the top or bottom of the whole inspector.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.AdvancedInspectorControl.ParseRuntimeAttributes(AdvancedInspector.IRuntimeAttribute,System.Type,System.Object[])">
+ <summary>
+ This method is invoked to build a list of proper delegate to invoke.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.AdvancedInspectorControl.GetDerived(System.Type)">
+ <summary>
+ Get the list of valid derivaton from a specific type.
+ Used to create derived object, should always be from ComponentMonoBehaviour but is not enforced.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.AdvancedInspectorControl.BoxStyle">
+ <summary>
+ Group box style
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.AdvancedInspectorControl.Suspended">
+ <summary>
+ When complex operation are performed, the Inspector blocks repaint.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.AdvancedInspectorControl.Level">
+ <summary>
+ Current complexity level.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.AdvancedInspectorControl.Sorting">
+ <summary>
+ How the fields are sorted.
+ </summary>
+ </member>
+ <member name="E:AdvancedInspector.AdvancedInspectorControl.SortingChanged">
+ <summary>
+ Raised if the inspector needs a redraw.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.AdvancedInspectorControl.Editor">
+ <summary>
+ Used for internal callback from a modal windows.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.AdvancedInspectorControl.Field">
+ <summary>
+ Used for internal callback from a modal windows.
+ </summary>
+ </member>
+ <member name="T:AdvancedInspector.AdvancedInspectorControl.InspectorSorting">
+ <summary>
+ Field sorting enum.
+ </summary>
+ </member>
+ <member name="F:AdvancedInspector.AdvancedInspectorControl.InspectorSorting.None">
+ <summary>
+ No sorting, using the order found in code.
+ </summary>
+ </member>
+ <member name="F:AdvancedInspector.AdvancedInspectorControl.InspectorSorting.Alpha">
+ <summary>
+ Alphabethic sorting A, B, C...
+ </summary>
+ </member>
+ <member name="F:AdvancedInspector.AdvancedInspectorControl.InspectorSorting.AntiAlpha">
+ <summary>
+ Anti-alphabethic sorting, C, B, A...
+ </summary>
+ </member>
+ <member name="T:AdvancedInspector.FieldEditor">
+ <summary>
+ When a specific type is encounter by the Inspector, we check if someone defined an field editor for it.
+ When it occurs, all the field drawing is left to the custom editor.
+ </summary>
+ </member>
+ <member name="F:AdvancedInspector.FieldEditor.MIN_FIELD_HEIGHT">
+ <summary>
+ Minimum field height
+ </summary>
+ </member>
+ <member name="F:AdvancedInspector.FieldEditor.BUTTON_HEIGHT">
+ <summary>
+ Button Height
+ </summary>
+ </member>
+ <member name="F:AdvancedInspector.FieldEditor.VECTOR_FIELD_WIDTH">
+ <summary>
+ Standard float-in-vector label width
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.FieldEditor.Draw(AdvancedInspector.InspectorField,UnityEngine.GUIStyle)">
+ <summary>
+ The draw call from the Inspector.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.FieldEditor.OnLabelDraw(AdvancedInspector.InspectorField,UnityEngine.Rect)">
+ <summary>
+ Called after the label is drawn.
+ Useful to add dragging modifier.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.FieldEditor.OnLabelClick(AdvancedInspector.InspectorField)">
+ <summary>
+ Event raised when someone click a label.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.FieldEditor.OnLabelDoubleClick(AdvancedInspector.InspectorField)">
+ <summary>
+ Event raised when someone double click a label.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.FieldEditor.OnLabelDragged(AdvancedInspector.InspectorField)">
+ <summary>
+ Fired when someone click and drag the label with modified key (control/shift/alt) pressed.
+ A normal drag performs a copy/paste.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.FieldEditor.OnContextualClick(AdvancedInspector.InspectorField,UnityEditor.GenericMenu)">
+ <summary>
+ Event raised when someone right-click a label.
+ The GenenicMenu is empty and can add new items in it.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.FieldEditor.GetValue(AdvancedInspector.InspectorField)">
+ <summary>
+ Get the value of a field.
+ Flag "Show Mixed Value" automaticly and return null if a multi-selection has different values.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.FieldEditor.Expandable">
+ <summary>
+ Override if you want to prevent a type from being expandable at any time.
+ Override the Expandable attributes.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.FieldEditor.EditDerived">
+ <summary>
+ If true and no fieldeditor is found for a specific type, this fieldeditor is used for the derived type.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.FieldEditor.EditedTypes">
+ <summary>
+ List of type this FieldEditor edit.
+ </summary>
+ </member>
+ <member name="T:AdvancedInspector.InspectorEditor">
+ <summary>
+ Base class of BehaviourEditor, ScriptableEditor and ExternalEditor.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorEditor.HasPreviewGUI">
+ <summary>
+ Preview is handled internally and is turned on and off using IPreview interface.
+ </summary>
+ </member>
+ <member name="F:AdvancedInspector.InspectorEditor.parent">
+ <summary>
+ In case of value type, we need to know the parent.
+ </summary>
+ </member>
+ <member name="F:AdvancedInspector.InspectorEditor.fields">
+ <summary>
+ List of fields held by this inspector.
+ </summary>
+ </member>
+ <member name="F:AdvancedInspector.InspectorEditor.refresh">
+ <summary>
+ When a value changed internally, this forces the fields to be refreshed.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorEditor.OnEnable">
+ <summary>
+ Unity's OnEnable.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorEditor.OnDisable">
+ <summary>
+ Unity's OnDisable
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorEditor.StartPicking(System.Action{UnityEngine.GameObject,System.Object},System.Object)">
+ <summary>
+ Start the Scene View picking tool.
+ Type can define the component we seek on a GameObject.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorEditor.StopPicking">
+ <summary>
+ Stop the picking tool before it has resolved.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorEditor.OnPreviewGUI(UnityEngine.Rect,UnityEngine.GUIStyle)">
+ <summary>
+ Preview Draw
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorEditor.OnSceneGUI">
+ <summary>
+ Override this method if you want to draw on the scene view.
+ Don't forget to call the base.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorEditor.OnPreviewSettings">
+ <summary>
+ Preview Settings
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorEditor.DataChanged">
+ <summary>
+ Data Changed, repaint.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorEditor.UseDefaultMargins">
+ <summary>
+ Unity's Default Margins. False if running in Advanced Inspector.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorEditor.OnInspectorGUI">
+ <summary>
+ Default Inspector entry point.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorEditor.DrawAdvancedInspector">
+ <summary>
+ Similar to "DrawDefaultInspector", except this is the Advanced one.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorEditor.RefreshFields">
+ <summary>
+ Force this field to rebuild the list of its children.
+ If you implement an editor specific to a type, you should only need to override this method.
+ Consider clearing existing fields before adding new one.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorEditor.Picking">
+ <summary>
+ Is the Inspector currently in picking mode?
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorEditor.Advanced">
+ <summary>
+ Return true if this editor is using advanced features.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorEditor.Instances">
+ <summary>
+ We use our own targets list because we can draw object not deriving from UnityEngine.Object.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorEditor.Fields">
+ <summary>
+ List of fields held by this inspector.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorEditor.Expandable">
+ <summary>
+ Override this if you implement your own inspector and doesn't want it to be expandable.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorEditor.TestForDefaultInspector">
+ <summary>
+ If true, will test if the type of in the inspector object has "AdvancedInspector" attributes.
+ Default; false;
+ </summary>
+ </member>
+ <member name="T:AdvancedInspector.BehaviourEditor">
+ <summary>
+ Behaviour Editor is the entry point for all MonoBehaviour in Advanced Inspector.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.BehaviourEditor.OnEnable">
+ <summary>
+ Unity's OnEnable.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.BehaviourEditor.TestForDefaultInspector">
+ <summary>
+ Should we check for the [AdvancedInspectorAttribute]?
+ </summary>
+ </member>
+ <member name="T:AdvancedInspector.ExternalEditor">
+ <summary>
+ Similar to a standard PropertyInspector, but can be called from outside the scope of a Inspector.
+ Useful to build your own EditorWindow with an integrated inspector.
+ Call the method Draw with a Rect of the region to draw on.
+ </summary>
+ </member>
+ <member name="T:AdvancedInspector.IControl">
+ <summary>
+ Define a control that can be drawn in an EditorWindow.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.IControl.Draw(UnityEngine.Rect)">
+ <summary>
+ Draw the control. Return if the parent EditorWindow should repaint the window.
+ </summary>
+ </member>
+ <member name="E:AdvancedInspector.IControl.RequestRepaint">
+ <summary>
+ In the event an internal process of the Control want a repaint of the window outside the Drawing scope.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.ExternalEditor.Draw(UnityEngine.Rect)">
+ <summary>
+ IControl implementation
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.ExternalEditor.Expandable">
+ <summary>
+ If false, the Inspector won't draw the expander and won't reserve space on the left of the labels.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.ExternalEditor.DraggableSeparator">
+ <summary>
+ Can the separator be dragged around?
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.ExternalEditor.DivisionSeparator">
+ <summary>
+ Where is the separator?
+ In PerPixel, the value is in pixel from the top or the left.
+ Otherwise, it's in %.
+ </summary>
+ </member>
+ <member name="E:AdvancedInspector.ExternalEditor.RequestRepaint">
+ <summary>
+ IControl implementation
+ </summary>
+ </member>
+ <member name="T:AdvancedInspector.ScriptableEditor">
+ <summary>
+ Scriptable Editor is the entry point for all ScriptableObject in Advanced Inspector.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.ScriptableEditor.OnEnable">
+ <summary>
+ Unity's OnEnable.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.ScriptableEditor.TestForDefaultInspector">
+ <summary>
+ Should we check for the [AdvancedInspectorAttribute]?
+ </summary>
+ </member>
+ <member name="T:AdvancedInspector.InspectorField">
+ <summary>
+ Pooled information about a PropertyInfo and translated for the Inspector.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorField.#ctor(AdvancedInspector.InspectorField)">
+ <summary>
+ This constructor is used as a duplication.
+ Note that this field is free and not parented to anything.
+ Use with great care!
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorField.#ctor(System.Type,System.Object[],System.Reflection.MemberInfo,System.Attribute[])">
+ <summary>
+ Entry point for a generic manually created field.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorField.#ctor(AdvancedInspector.InspectorField,System.Type,System.Object[],System.Reflection.MemberInfo,System.Attribute[])">
+ <summary>
+ Entry point for a generic manually created field.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorField.#ctor(AdvancedInspector.InspectorField,System.Int32,UnityEditor.SerializedProperty,System.Attribute[])">
+ <summary>
+ Entry point for a generic indexed serialized created field.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorField.#ctor(System.Type,System.Object[],UnityEditor.SerializedProperty,System.Attribute[])">
+ <summary>
+ Entry point for a generic serialized created field.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorField.#ctor(System.String)">
+ <summary>
+ Entry point for an empty field with no editor.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorField.#ctor(AdvancedInspector.GroupAttribute)">
+ <summary>
+ Entry point of a group.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorField.#ctor(AdvancedInspector.ToolbarAttribute)">
+ <summary>
+ Entry point of a toolbar.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorField.#ctor(AdvancedInspector.InspectorField,System.Object[],System.Int32,System.Attribute[])">
+ <summary>
+ Entry point for a indexed field.
+ You should not create this manually.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorField.#ctor(AdvancedInspector.InspectorField,System.Object[],System.Object,System.Attribute[])">
+ <summary>
+ Entry point of a Dictionary item.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorField.#ctor(System.Type)">
+ <summary>
+ Entry point for a non-member related field.
+ Useful to draw a single FieldEditor.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorField.#ctor(AdvancedInspector.InspectorField,UnityEngine.Object[],System.Object[],UnityEditor.SerializedProperty)">
+ <summary>
+ Script entry point.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorField.#ctor(UnityEngine.Object[],System.String)">
+ <summary>
+ Entry point for a Field created from a path and Object ids.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorField.#ctor(AdvancedInspector.InspectorField,UnityEngine.Object[],System.Object[],System.Reflection.MethodInfo)">
+ <summary>
+ Entry point for a method field. (Button)
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorField.#ctor(AdvancedInspector.InspectorField,UnityEngine.Object[],System.Object[],System.Reflection.MethodInfo,System.Attribute[])">
+ <summary>
+ Entry point for a method field. (Button)
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorField.#ctor(AdvancedInspector.InspectorField,UnityEngine.Object[],System.Object[],UnityEngine.Object,System.Reflection.FieldInfo)">
+ <summary>
+ Entry point for a standard field.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorField.#ctor(AdvancedInspector.InspectorField,UnityEngine.Object[],System.Object[],UnityEngine.Object,System.Reflection.FieldInfo,System.Boolean)">
+ <summary>
+ Entry point for a standard field.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorField.#ctor(AdvancedInspector.InspectorField,UnityEngine.Object[],System.Object[],UnityEngine.Object,System.Reflection.FieldInfo,System.Boolean,System.Attribute[])">
+ <summary>
+ Entry point for a standard field.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorField.#ctor(AdvancedInspector.InspectorField,UnityEngine.Object[],System.Object[],UnityEngine.Object,System.Reflection.PropertyInfo)">
+ <summary>
+ Entry point for a standard property.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorField.#ctor(AdvancedInspector.InspectorField,UnityEngine.Object[],System.Object[],UnityEngine.Object,System.Reflection.PropertyInfo,System.Boolean)">
+ <summary>
+ Entry point for a standard property.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorField.#ctor(AdvancedInspector.InspectorField,UnityEngine.Object[],System.Object[],UnityEngine.Object,System.Reflection.PropertyInfo,System.Boolean,System.Attribute[])">
+ <summary>
+ Entry point for a standard property.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorField.op_Equality(AdvancedInspector.InspectorField,AdvancedInspector.InspectorField)">
+ <summary>
+ Compares if two InspectorField contains the same data.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorField.op_Inequality(AdvancedInspector.InspectorField,AdvancedInspector.InspectorField)">
+ <summary>
+ Compares if two InspectorField contains the same data.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorField.Equals(System.Object)">
+ <summary>
+ Compares if two InspectorField contains the same data.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorField.GetHashCode">
+ <summary>
+ HashCode
+ </summary>
+ <returns></returns>
+ </member>
+ <member name="M:AdvancedInspector.InspectorField.CompareTo(System.Object)">
+ <summary>
+ IComparable implementation
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorField.CompareTo(AdvancedInspector.InspectorField)">
+ <summary>
+ IComparable implementation
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorField.AddAttribute(System.Attribute)">
+ <summary>
+ Force a new attribute to be added a runtime.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorField.GetAttribute``1">
+ <summary>
+ Get an attribute by type that was applied to the original item.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorField.GetAttribute(System.Type)">
+ <summary>
+ Get an attribute by type that was applied to the original item.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorField.GetAttributes``1">
+ <summary>
+ Get all the attributes by type that were applied to the original item.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorField.GetAttributes(System.Type)">
+ <summary>
+ Get all the attributes by type that were applied to the original item.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorField.HasAttribute``1">
+ <summary>
+ Return true if the memberinfo of this field is sporting that specific attribute type.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorField.HasAttribute(System.Type)">
+ <summary>
+ Return true if the memberinfo of this field is sporting that specific attribute type.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorField.Watch">
+ <summary>
+ Add this field to the watch list, which is displayed on the Watch window.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorField.Select">
+ <summary>
+ Force the selection of the serialized instances of this field.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorField.Save">
+ <summary>
+ Attempt to save this field value in play mode the next time it is stopped.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorField.Apply">
+ <summary>
+ Apply this field modification to its prefab parent.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorField.Revert">
+ <summary>
+ Revert any modification of this field and retreived the original value of its prefab parent.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorField.RecordObjects(System.String)">
+ <summary>
+ Record the object state for undo purpose.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorField.Copy">
+ <summary>
+ Copy the current value of this field to the clipboard.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorField.CanPaste(System.Object)">
+ <summary>
+ Return true if the passed value can be copied over this field.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorField.Paste">
+ <summary>
+ Paste the clipboard data to this field.
+ Careful, you should do a type test before.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorField.GetValue">
+ <summary>
+ The current value of this field.
+ If not a field, returns null.
+ If multi object, return null if all the value aren't the same.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorField.GetValue``1">
+ <summary>
+ The current value of this field.
+ If not a field, returns null.
+ If multi object, return null if all the value aren't the same.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorField.GetValue(System.Object)">
+ <summary>
+ The value of this field, based on a specific object instance.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorField.GetValue``1(System.Object)">
+ <summary>
+ The value of this field, based on a specific object instance.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorField.GetValues">
+ <summary>
+ Get all instances value.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorField.GetValues``1">
+ <summary>
+ Get all instances value.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorField.ResetToDefault">
+ <summary>
+ Reset this field to its default value.
+ Object = null
+ Value Type = default(T)
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorField.SetValue(System.Object)">
+ <summary>
+ Set the value of this field.
+ Support undo. When calling this, assume undo will be "Set Value MyField"
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorField.SetValue(System.Object,System.Object)">
+ <summary>
+ Set the value of this field, based on a specific object instance.
+ Does not support undo, should be recorded before calling.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorField.SetDirty">
+ <summary>
+ Flags the related serialized instance as dirty.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorField.RefreshFields">
+ <summary>
+ Reparse the internal sub-fields of this field.
+ Useful when a list or an object changed.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorField.SortFields">
+ <summary>
+ Sort all children fields.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorField.GetInfoByPath(UnityEngine.Object,System.String)">
+ <summary>
+ Get a MemberInfo from a serializable path.
+ The "Path" property from a InspectorField is a valid path.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorField.GetValueByPath(UnityEngine.Object,System.String)">
+ <summary>
+ Get a value from a serializable path.
+ The "Path" property from a InspectorField is a valid path.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorField.SetValueByPath(UnityEngine.Object,System.String,System.Object)">
+ <summary>
+ Set a value by a serializable path.
+ The "Path" property from a InspectorField is a valid path.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorField.GetIndexedProperties(AdvancedInspector.InspectorField,System.Collections.Generic.List{System.Collections.IList})">
+ <summary>
+ Return a list of indexed field. Work with List and Array.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorField.GetKeyedProperties(AdvancedInspector.InspectorField,System.Collections.Generic.List{System.Collections.IDictionary})">
+ <summary>
+ Return a list of keyed field. Work with IDictionary.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorField.GetMembers(AdvancedInspector.InspectorField,System.Object[])">
+ <summary>
+ Get fields from an object.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorField.GetMembers(AdvancedInspector.InspectorField,System.Object[],System.Boolean)">
+ <summary>
+ Get fields from an object.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorField.GetMembers(AdvancedInspector.InspectorField,System.Object[],System.Boolean,System.Boolean)">
+ <summary>
+ Get fields from an object. Bypass ignore Inspect and Expandable attributes.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorField.Instances">
+ <summary>
+ The object owning this specific field.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorField.SerializedInstances">
+ <summary>
+ The serialized object owning this specific field.
+ May not be the same as the instance, or even the currently Selected item in the Inspector.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorField.Prefab">
+ <summary>
+ The prefab parent to this object.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorField.Info">
+ <summary>
+ The member info of this field.
+ PropertyInfo, FieldInfo or MethodInfo. Otherwise null.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorField.Attributes">
+ <summary>
+ The attributes of this field, manually and by reflection.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorField.SerializedProperty">
+ <summary>
+ Used only for the Script object reference at the top, or hidden Unity property.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorField.GameObjects">
+ <summary>
+ Get the parents GameObjects in cases of components. Useful for undoes.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorField.Parent">
+ <summary>
+ The parent field in case of nesting.
+ Null if directly at the top.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorField.Fields">
+ <summary>
+ Subfields, such as field in an expandable object, or a list.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorField.InternalFields">
+ <summary>
+ Fields used for edition, are not drawn by the Inspector automaticly.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorField.Depth">
+ <summary>
+ Indentation depth of this field.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorField.InspectorType">
+ <summary>
+ Is this field a method, field, property or a group?
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorField.Undoable">
+ <summary>
+ External editor are sometimes used to browse non-Unity object.
+ Sadly, undo only works on valid Unity objects.
+ Also return false if one of the serializable parent became null or none.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorField.Type">
+ <summary>
+ The type of this field.
+ In most case, would return the FieldInfo.FieldType or PropertyInfo.PropertyType
+ In case of a group, it returns null.
+ If this field is flagged as Runtime-Resolved, it returns the type of the current value.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorField.BaseType">
+ <summary>
+ In case of a collection, returns the base type.
+ Ex.: int[] or List(int), base type if int.
+ In a dictionary, return the value type.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorField.KeyType">
+ <summary>
+ In case of a dictionary, returns the key type.
+ Return null otherwise.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorField.Inspect">
+ <summary>
+ The Inspect Attribute that made this field visible.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorField.Editor">
+ <summary>
+ The Override Editor assigned to this field.
+ No field can be drawn without one.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorField.Restrictor">
+ <summary>
+ A restrictor turns any field into a drop down list of specific choices.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorField.Group">
+ <summary>
+ Is this field part of a group?
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorField.Toolbar">
+ <summary>
+ Is this field part of a toolbar?
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorField.Tab">
+ <summary>
+ Is this field visibility controlled by a tab?
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorField.SelectedTab">
+ <summary>
+ In cases of tabs, this is the currently selected tab enum value.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorField.Descriptor">
+ <summary>
+ The Descriptor assigned to this field. Name, tooltip, icon, etc.
+ In case of multi-objects, there is no runtime invokation and the descriptor returned is the one on the member.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorField.Static">
+ <summary>
+ Returns true if the item inspected is static.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorField.ReadOnly">
+ <summary>
+ Readonly field cannot be edited.
+ In case of multi-objects, if any is readonly, all are.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorField.Animated">
+ <summary>
+ Is this field animated. Only works for fields, not property.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorField.Help">
+ <summary>
+ The Help data being drawn after the field.
+ Does not work in multi-object edition.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorField.Bypass">
+ <summary>
+ This field is a bypass field, and sub-field automaticly recieve that flag.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorField.Expandable">
+ <summary>
+ Can this field be expanded?
+ It display the arrow button.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorField.Expanded">
+ <summary>
+ Is this field open and displaying internal fields?
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorField.Erased">
+ <summary>
+ Was this field erased?
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorField.DisplayAsParent">
+ <summary>
+ Is this object display as being part of the parent?
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorField.CreateDerived">
+ <summary>
+ Can this object field display the "+" sign to create a derived object from the base type?
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorField.Name">
+ <summary>
+ Name of the label of that field.
+ Can be modified by Descriptor.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorField.FieldColor">
+ <summary>
+ The color of the editable field.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorField.BackgroundColor">
+ <summary>
+ The color of the background (ex.: Expandable box)
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorField.Priority">
+ <summary>
+ Priority of a field, used when sorting.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorField.Order">
+ <summary>
+ The order at which this field was found in the code.
+ If an indexed field, return the index.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorField.Label">
+ <summary>
+ If false, this field does not draw its label.
+ Useful for toolbar.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorField.Style">
+ <summary>
+ The specific style this field is draw with.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorField.Path">
+ <summary>
+ Internal path to this specific field.
+ Used to keep persistant data across selection.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorField.Hidden">
+ <summary>
+ Many thing can prevent a field from being drawn. Ex.: InspectAttribute can hide it.
+ If internal data from Unity return an exception on read, we skip it.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorField.Editable">
+ <summary>
+ Return false is any of the serialized parent have the hide flag "Not Editable".
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorField.Modified">
+ <summary>
+ Return true if the item is different from it's prefab parent.
+ Always return false if it's a non-value type and not a ref (UnityEngine.Object).
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorField.Mixed">
+ <summary>
+ Return true when editing multiple object that doesn't have the same value.
+ Always return true if they are objects and not the same instance.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorField.Similar">
+ <summary>
+ Return true if all instances are of the same type.
+ Which mean they are expandable even in multi-objects edition
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorField.Index">
+ <summary>
+ Index of the field in a list or array.
+ Return -1 if not part of a collection.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorField.IsList">
+ <summary>
+ Is this a collection? (array or list)
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorField.Key">
+ <summary>
+ When in a dictionary, the key of this value.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorField.IsDictionary">
+ <summary>
+ Is this a dictionary? (UDictionary)
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorField.Count">
+ <summary>
+ Returns the current number of children.
+ In case of list, returns the number of items in it.
+ In case of multiples list, return -1 if all list doesn't have the same number of items.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorField.OverloadToString">
+ <summary>
+ Test if the current type overload ToString properly.
+ </summary>
+ </member>
+ <member name="T:AdvancedInspector.InspectorType">
+ <summary>
+ Type of InspectorField.
+ </summary>
+ </member>
+ <member name="F:AdvancedInspector.InspectorType.None">
+ <summary>
+ Empty unset field
+ </summary>
+ </member>
+ <member name="F:AdvancedInspector.InspectorType.Field">
+ <summary>
+ Field containing a FieldInfo
+ </summary>
+ </member>
+ <member name="F:AdvancedInspector.InspectorType.Property">
+ <summary>
+ Field containing a PropertyInfo
+ </summary>
+ </member>
+ <member name="F:AdvancedInspector.InspectorType.Method">
+ <summary>
+ Field containing a MethodInfo
+ </summary>
+ </member>
+ <member name="F:AdvancedInspector.InspectorType.Serialized">
+ <summary>
+ The InspectorField is only a wrapper around a SerializedProperty object.
+ To use in case of hidden property in the Unity API.
+ </summary>
+ </member>
+ <member name="F:AdvancedInspector.InspectorType.Group">
+ <summary>
+ Field that is a group of other field.
+ </summary>
+ </member>
+ <member name="F:AdvancedInspector.InspectorType.Toolbar">
+ <summary>
+ Field that is drawn as a toolbar. (horizontal group)
+ </summary>
+ </member>
+ <member name="F:AdvancedInspector.InspectorType.Unlinked">
+ <summary>
+ Unlinked field just stores a value internally and is not bound to an object.
+ </summary>
+ </member>
+ <member name="F:AdvancedInspector.InspectorType.Script">
+ <summary>
+ The top field, the reference towards the original script.
+ </summary>
+ </member>
+ <member name="T:AdvancedInspector.InspectorPreferences">
+ <summary>
+ Handles the Advanced Inspector preferences.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorPreferences.IsDragControl(AdvancedInspector.InspectorPreferences.InspectorDragControl)">
+ <summary>
+ Returns true if the control is valid in the current Event context.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorPreferences.IsControl(AdvancedInspector.InspectorPreferences.InspectorModifierControl)">
+ <summary>
+ Returns true if the control is valid in the current Event context.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorPreferences.Style">
+ <summary>
+ The style collection used for the different element.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorPreferences.InspectDefaultItems">
+ <summary>
+ If true, all classes that do not have a Custom Editor are drawn by Advanced Inspector.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorPreferences.ValueScroll">
+ <summary>
+ The control for scrolling numbers.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorPreferences.CopyPaste">
+ <summary>
+ The control to copy-paste by drag.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorPreferences.MassExpand">
+ <summary>
+ The control modifier used when clicking on an expansion arrow. Expand/Collapse sub-nodes.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorPreferences.Contextual">
+ <summary>
+ Usually to open the contextual menu, you do Right-Click.
+ In some cases, people may not have access to a proper right-click, so they can do CTRL+Click for example.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorPreferences.ExtraIndentation">
+ <summary>
+ Extra indentation applied to boxes.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorPreferences.LargeCollection">
+ <summary>
+ The maximum number of displayed item in a collection. Trigger the large collection arrow display beyond that.
+ </summary>
+ </member>
+ <member name="T:AdvancedInspector.InspectorPreferences.InspectorDragControl">
+ <summary>
+ The accepted control that involves dragging.
+ </summary>
+ </member>
+ <member name="F:AdvancedInspector.InspectorPreferences.InspectorDragControl.None">
+ <summary>
+ The control is turned off.
+ </summary>
+ </member>
+ <member name="F:AdvancedInspector.InspectorPreferences.InspectorDragControl.Drag">
+ <summary>
+ Single drag.
+ </summary>
+ </member>
+ <member name="F:AdvancedInspector.InspectorPreferences.InspectorDragControl.AltDrag">
+ <summary>
+ Alt+Drag
+ </summary>
+ </member>
+ <member name="F:AdvancedInspector.InspectorPreferences.InspectorDragControl.ControlDrag">
+ <summary>
+ Control+Drag
+ </summary>
+ </member>
+ <member name="F:AdvancedInspector.InspectorPreferences.InspectorDragControl.ShiftDrag">
+ <summary>
+ Shift+Drag
+ </summary>
+ </member>
+ <member name="T:AdvancedInspector.InspectorPreferences.InspectorModifierControl">
+ <summary>
+ The modifier keys involded in non-dragging action.
+ </summary>
+ </member>
+ <member name="F:AdvancedInspector.InspectorPreferences.InspectorModifierControl.Alt">
+ <summary>
+ Alt Key
+ </summary>
+ </member>
+ <member name="F:AdvancedInspector.InspectorPreferences.InspectorModifierControl.Control">
+ <summary>
+ Control Key
+ </summary>
+ </member>
+ <member name="F:AdvancedInspector.InspectorPreferences.InspectorModifierControl.Shift">
+ <summary>
+ Shift Key
+ </summary>
+ </member>
+ <member name="T:AdvancedInspector.InspectorPreview">
+ <summary>
+ This class handles the rendering and input of the Preview zone.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorPreview.Targets">
+ <summary>
+ Object to be previewed
+ Supported type;
+ GameObject
+ Mesh
+ Material
+ Texture
+ </summary>
+ </member>
+ <member name="T:AdvancedInspector.InspectorStyle">
+ <summary>
+ The different internal style.
+ </summary>
+ </member>
+ <member name="F:AdvancedInspector.InspectorStyle.Empty">
+ <summary>
+ No boxes, no nothing. Clean, similar to Unity default.
+ </summary>
+ </member>
+ <member name="F:AdvancedInspector.InspectorStyle.Round">
+ <summary>
+ Round boxes.
+ </summary>
+ </member>
+ <member name="F:AdvancedInspector.InspectorStyle.Flat">
+ <summary>
+ Unity flat style
+ </summary>
+ </member>
+ <member name="T:AdvancedInspector.InspectorWrapper">
+ <summary>
+ A wrapper recongnized by the internal inspector so that non-UnityEngine.Object can be inspected.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorWrapper.Select(System.Object)">
+ <summary>
+ Force Unity's "Selection" to use a non-unity object.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorWrapper.IsSelected(System.Object)">
+ <summary>
+ Is this object selected by Unity's Selection?
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.InspectorWrapper.GetSelection``1">
+ <summary>
+ Get currenty Unity's Selection
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.InspectorWrapper.Tag">
+ <summary>
+ Object to Inspector
+ </summary>
+ </member>
+ <member name="T:Clipboard">
+ <summary>
+ A copy/paste buffer.
+ Does not use the System buffer, as it's limited to a string and Unity does not provide a uniformed string serialization.
+ </summary>
+ </member>
+ <member name="M:Clipboard.CreateInstance(System.Type)">
+ <summary>
+ Create an instance of type
+ Works with values, list, array, scriptableObject, string
+ Components are ignored.
+ </summary>
+ </member>
+ <member name="M:Clipboard.CreateInstance(UnityEngine.MonoBehaviour,System.Type)">
+ <summary>
+ Create an instance of type
+ Works with values, list, array, scriptableObject, string
+ Components are ignored.
+
+ The owner MonoBeahviour is used in case of the creation of a ComponentMonoBehaviour for its internal binding.
+ </summary>
+ </member>
+ <member name="M:Clipboard.Copy(System.Object)">
+ <summary>
+ Perform a deep copy if an object.
+ Does not perform copies of Components or GameObject
+ Values are returned as is (ex.: 14)
+ strings are cloned.
+ List/Array are enumerated and copied.
+ Everything else is deep copied by fields.
+ </summary>
+ </member>
+ <member name="M:Clipboard.TryConvertion(System.Type,System.Object@)">
+ <summary>
+ Test if the current clipboard data can be converted into a specific type.
+ Ex.: int to string
+ </summary>
+ </member>
+ <member name="M:Clipboard.TryConvertion``1(``0@)">
+ <summary>
+ Test if the current clipboard data can be converted into a specific type.
+ Ex.: int to string
+ </summary>
+ </member>
+ <member name="M:Clipboard.CanConvert(System.Type,System.Object)">
+ <summary>
+ Return true if an object is convertable to a type.
+ </summary>
+ </member>
+ <member name="P:Clipboard.Data">
+ <summary>
+ In case of any normal object, returns deep copy of that object.
+ In case of a Component, returns the original so you can apply it on a GameObject yourself (sorry)
+ In case of a UnityEngine.Object, create a new one and perforce a Serialization Copy.
+ </summary>
+ </member>
+ <member name="P:Clipboard.Type">
+ <summary>
+ Type of the current data in the clipboard.
+ </summary>
+ </member>
+ <member name="T:Separator">
+ <summary>
+ A separator holds two control side by side and divide them with a draggable line.
+ It can be horizontal or vertical.
+ </summary>
+ </member>
+ <member name="M:Separator.Draw(UnityEngine.Rect)">
+ <summary>
+ Draw the whole region holding the two control and the separator.
+ The separator pass down the proper region to Draw of the sub-controls.
+ Returns true if the window needs to be repainted.
+ </summary>
+ </member>
+ <member name="P:DragEventArgs.Target">
+ <summary>
+ Targeted object
+ </summary>
+ </member>
+ <member name="P:DragEventArgs.InBetween">
+ <summary>
+ Is on top of the target
+ </summary>
+ </member>
+ <member name="P:DragEventArgs.Dragged">
+ <summary>
+ Selecttion dragged
+ </summary>
+ </member>
+ <member name="T:EnumExtension">
+ <summary>
+ Extends Enum with some bitfields related method.
+ </summary>
+ </member>
+ <member name="M:EnumExtension.Append``1(System.Enum,``0)">
+ <summary>
+ Add a value to a bitfield.
+ </summary>
+ </member>
+ <member name="M:EnumExtension.Remove``1(System.Enum,``0)">
+ <summary>
+ Remove a value from a bitfield.
+ </summary>
+ </member>
+ <member name="M:EnumExtension.Has``1(System.Enum,``0)">
+ <summary>
+ Test if a bitfield has a value.
+ </summary>
+ </member>
+ <member name="M:EnumExtension.GetAttribute``1(System.Enum)">
+ <summary>
+ Gets an attribute on an enum field value
+ </summary>
+ <typeparam name="T">The type of the attribute you want to retrieve</typeparam>
+ <param name="enumVal">The enum value</param>
+ <returns>The attribute of type T that exists on the enum value</returns>
+ </member>
+ <member name="T:TypeExtension">
+ <summary>
+ Extends Enum with some bitfields related method.
+ </summary>
+ </member>
+ <member name="M:TypeExtension.GetBaseGenericType(System.Type)">
+ <summary>
+ Returns the nearest parent class that is generic.
+ </summary>
+ </member>
+ <member name="T:AdvancedInspector.DateTimeDialog">
+ <summary>
+ The DateTime dialog is a date picker that is day/week accurate.
+ </summary>
+ </member>
+ <member name="T:AdvancedInspector.ModalWindow">
+ <summary>
+ Define a popup window that return a result.
+ Base class for IModal implementation.
+ </summary>
+ </member>
+ <member name="F:AdvancedInspector.ModalWindow.TITLEBAR">
+ <summary>
+ Top title bar height
+ </summary>
+ </member>
+ <member name="F:AdvancedInspector.ModalWindow.owner">
+ <summary>
+ The object that invoked this modal.
+ </summary>
+ </member>
+ <member name="F:AdvancedInspector.ModalWindow.result">
+ <summary>
+ Internal modal result.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.ModalWindow.#ctor">
+ <summary>
+ Default constructor.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.ModalWindow.OnLostFocus">
+ <summary>
+ Invoked by Unity when the user click outside the window.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.ModalWindow.Cancel">
+ <summary>
+ Called when pressing Escape or Cancel.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.ModalWindow.Ok">
+ <summary>
+ Called when pressing Enter or Ok.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.ModalWindow.Exist``1">
+ <summary>
+ Does this specific modal type exist?
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.ModalWindow.OnGUI">
+ <summary>
+ Usually you should not override this.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.ModalWindow.Draw(UnityEngine.Rect)">
+ <summary>
+ Implement your draw items here.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.ModalWindow.Result">
+ <summary>
+ Result of this modal window.
+ </summary>
+ </member>
+ <member name="F:AdvancedInspector.DateTimeDialog.HEIGHT">
+ <summary>
+ Height of dialog
+ </summary>
+ </member>
+ <member name="F:AdvancedInspector.DateTimeDialog.WIDTH">
+ <summary>
+ Width of dialog
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.DateTimeDialog.Create(AdvancedInspector.IModal,System.DateTime,UnityEngine.Vector2)">
+ <summary>
+ Create this dialog.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.DateTimeDialog.Draw(UnityEngine.Rect)">
+ <summary>
+ Draw the dialog region.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.DateTimeDialog.Time">
+ <summary>
+ Modified DateTime if Result is Ok
+ </summary>
+ </member>
+ <member name="T:AdvancedInspector.Toolbox">
+ <summary>
+ The toolbox is a generic way of display a selection to the user.
+ Any EditorWindow that implement IToolbox will call it when CTRL+Q is request it.
+ It is up to the window to fill the content of the Toolbox.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.Toolbox.AddItem(System.Object,System.String,System.String,UnityEngine.Texture)">
+ <summary>
+ Add an item to the toolbox list.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.Toolbox.Create(AdvancedInspector.IModal,System.String,System.Collections.Generic.List{AdvancedInspector.DescriptorPair},UnityEngine.Vector2)">
+ <summary>
+ Create a toolbox for this IModal.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.Toolbox.Create(AdvancedInspector.IModal,System.String,System.Collections.Generic.List{AdvancedInspector.DescriptorPair},UnityEngine.Vector2,System.String)">
+ <summary>
+ Create a toolbox for this IModal.
+ </summary>
+ </member>
+ <member name="M:AdvancedInspector.Toolbox.Draw(UnityEngine.Rect)">
+ <summary>
+ IControl implementation
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.Toolbox.Items">
+ <summary>
+ List of items visible by this toolbox.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.Toolbox.Selection">
+ <summary>
+ The current selection.
+ </summary>
+ </member>
+ <member name="P:AdvancedInspector.Toolbox.Search">
+ <summary>
+ The search term entered in the search field.
+ </summary>
+ </member>
+ <member name="T:AdvancedInspector.WindowResult">
+ <summary>
+ Result returned by a Modal Window
+ </summary>
+ </member>
+ <member name="F:AdvancedInspector.WindowResult.None">
+ <summary>
+ No result, no action taken
+ </summary>
+ </member>
+ <member name="F:AdvancedInspector.WindowResult.Ok">
+ <summary>
+ Ok or Enter
+ </summary>
+ </member>
+ <member name="F:AdvancedInspector.WindowResult.Cancel">
+ <summary>
+ Cancel or Escape
+ </summary>
+ </member>
+ <member name="F:AdvancedInspector.WindowResult.Invalid">
+ <summary>
+ An error occured
+ </summary>
+ </member>
+ <member name="F:AdvancedInspector.WindowResult.LostFocus">
+ <summary>
+ User clicked outside the modal
+ </summary>
+ </member>
+ <member name="T:TreeView">
+ <summary>
+ A control that is a list of item that can be nested.
+ Support drag and drop, editing and sorting.
+ </summary>
+ </member>
+ <member name="M:TreeView.BuildVisibility">
+ <summary>
+ Refresh the list of visible item when the items list has changed.
+ </summary>
+ </member>
+ <member name="M:TreeView.BuildVisibility(System.Collections.Generic.List{TreeViewItem},System.Collections.Generic.List{TreeViewItem})">
+ <summary>
+ Refresh the list of visible item when the items list has changed.
+ </summary>
+ </member>
+ <member name="P:TreeView.Selection">
+ <summary>
+ Current selected tags.
+ </summary>
+ </member>
+ <member name="P:TreeView.Count">
+ <summary>
+ Number of visible nodes.
+ </summary>
+ </member>
+ </members>
+</doc>
diff --git a/Assets/Plugins/Editor/AdvancedInspector/AdvancedInspector.XML.meta b/Assets/Plugins/Editor/AdvancedInspector/AdvancedInspector.XML.meta
new file mode 100644
index 00000000..55a2b378
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/AdvancedInspector.XML.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: e96c4a7c78e365541b0512e981e9e981
+timeCreated: 1426031802
+licenseType: Store
+TextScriptImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/AdvancedInspector.dll b/Assets/Plugins/Editor/AdvancedInspector/AdvancedInspector.dll
new file mode 100644
index 00000000..86f31e26
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/AdvancedInspector.dll
Binary files differ
diff --git a/Assets/Plugins/Editor/AdvancedInspector/AdvancedInspector.dll.meta b/Assets/Plugins/Editor/AdvancedInspector/AdvancedInspector.dll.meta
new file mode 100644
index 00000000..196bd820
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/AdvancedInspector.dll.meta
@@ -0,0 +1,33 @@
+fileFormatVersion: 2
+guid: 09b9181468d6b774aa9b3e4e0654892d
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ defineConstraints: []
+ isPreloaded: 0
+ isOverridable: 0
+ isExplicitlyReferenced: 0
+ validateReferences: 1
+ platformData:
+ - first:
+ Any:
+ second:
+ enabled: 0
+ settings: {}
+ - first:
+ Editor: Editor
+ second:
+ enabled: 1
+ settings:
+ DefaultValueInitialized: true
+ - first:
+ Windows Store Apps: WindowsStoreApps
+ second:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/AdvancedInspector.pdb b/Assets/Plugins/Editor/AdvancedInspector/AdvancedInspector.pdb
new file mode 100644
index 00000000..7cfacf7d
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/AdvancedInspector.pdb
Binary files differ
diff --git a/Assets/Plugins/Editor/AdvancedInspector/AdvancedInspector.pdb.meta b/Assets/Plugins/Editor/AdvancedInspector/AdvancedInspector.pdb.meta
new file mode 100644
index 00000000..f65772af
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/AdvancedInspector.pdb.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 454ad4bbaca47654ba1ba02c97f6efab
+timeCreated: 1426031799
+licenseType: Store
+DefaultImporter:
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/Examples.meta b/Assets/Plugins/Editor/AdvancedInspector/Examples.meta
new file mode 100644
index 00000000..c595a197
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/Examples.meta
@@ -0,0 +1,5 @@
+fileFormatVersion: 2
+guid: bbde48e2fa9194d469ae2a4b99c3729a
+folderAsset: yes
+DefaultImporter:
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/Examples/ExternalInspectorWindow.cs b/Assets/Plugins/Editor/AdvancedInspector/Examples/ExternalInspectorWindow.cs
new file mode 100644
index 00000000..e1a7cdac
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/Examples/ExternalInspectorWindow.cs
@@ -0,0 +1,76 @@
+using UnityEngine;
+using UnityEditor;
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Linq;
+
+using AdvancedInspector;
+
+public class ExternalInspectorWindow : EditorWindow
+{
+ private ExternalEditor editor;
+
+ private GameObject go;
+ private Component component;
+
+ [MenuItem("Window/Advanced Insector Example")]
+ public static void Init()
+ {
+ ExternalInspectorWindow window = EditorWindow.GetWindow<ExternalInspectorWindow>();
+ window.wantsMouseMove = true;
+ window.editor = ExternalEditor.CreateInstance<ExternalEditor>();
+
+ window.editor.DraggableSeparator = false;
+ window.editor.DivisionSeparator = 150;
+ }
+
+ private void OnSelectionChange()
+ {
+ go = Selection.activeGameObject;
+ Repaint();
+ }
+
+ private void OnGUI()
+ {
+ if (go == null)
+ {
+ GUILayout.Label("Select a GameObject...");
+ component = null;
+ editor.Instances = new object[0];
+ }
+ else
+ {
+ Component[] components = go.GetComponents(typeof(Component));
+ GUIContent[] contents = new GUIContent[components.Length + 1];
+ contents[0] = new GUIContent("None");
+ int index = -1;
+ for (int i = 0; i < components.Length; i++)
+ {
+ contents[i + 1] = new GUIContent(components[i].GetType().Name);
+ if (components[i] == component)
+ index = i + 1;
+ }
+
+ EditorGUI.BeginChangeCheck();
+ index = EditorGUILayout.Popup(new GUIContent("Select a component: "), index, contents);
+ if (EditorGUI.EndChangeCheck())
+ {
+ if (index == 0)
+ {
+ component = null;
+ editor.Instances = new object[0];
+ }
+ else
+ {
+ component = components[index - 1];
+ editor.Instances = new object[] { component };
+ }
+ }
+ }
+
+ if (editor.Draw(new Rect(0, 16, position.width, position.height - 16)))
+ Repaint();
+ }
+}
diff --git a/Assets/Plugins/Editor/AdvancedInspector/Examples/ExternalInspectorWindow.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/Examples/ExternalInspectorWindow.cs.meta
new file mode 100644
index 00000000..a7870aa5
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/Examples/ExternalInspectorWindow.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: c9740780a68d7d744b5281622bbd706b
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/ExtraGUI.meta b/Assets/Plugins/Editor/AdvancedInspector/ExtraGUI.meta
new file mode 100644
index 00000000..8c84ce35
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/ExtraGUI.meta
@@ -0,0 +1,5 @@
+fileFormatVersion: 2
+guid: a52feea1ebf19884bb717531c7fd0cac
+folderAsset: yes
+DefaultImporter:
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/ExtraGUI/ExtraGUI.cs b/Assets/Plugins/Editor/AdvancedInspector/ExtraGUI/ExtraGUI.cs
new file mode 100644
index 00000000..4219fa75
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/ExtraGUI/ExtraGUI.cs
@@ -0,0 +1,196 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+using UnityEngine;
+using UnityEditor;
+
+using UniToolsEditor;
+
+namespace AdvancedInspector
+{
+ public static class ExtraGUI
+ {
+ private static Texture knob;
+
+ private static Texture Knob
+ {
+ get
+ {
+ if (knob == null)
+ {
+ knob = Helper.Load(EditorResources.Knob);
+ knob.filterMode = FilterMode.Trilinear;
+ }
+
+ return knob;
+ }
+ }
+
+ private static Texture knobBack;
+
+ private static Texture KnobBack
+ {
+ get
+ {
+ if (knobBack == null)
+ knobBack = Helper.Load(EditorResources.KnobBack);
+
+ return knobBack;
+ }
+ }
+
+ private static Vector2 mousePosition;
+
+ public static float FloatAngle(Rect rect, float value)
+ {
+ return FloatAngle(rect, value, -1, -1, -1);
+ }
+
+ public static float FloatAngle(Rect rect, float value, float snap)
+ {
+ return FloatAngle(rect, value, snap, -1, -1);
+ }
+
+ public static float FloatAngle(Rect rect, float value, float snap, float min, float max)
+ {
+ int id = GUIUtility.GetControlID(FocusType.Passive, rect);
+
+ Rect knobRect = new Rect(rect.x, rect.y, rect.height, rect.height);
+
+ float delta;
+ if (min != max)
+ delta = ((max - min) / 360);
+ else
+ delta = 1;
+
+ if (Event.current != null)
+ {
+ if (Event.current.type == EventType.MouseDown && knobRect.Contains(Event.current.mousePosition))
+ {
+ GUIUtility.hotControl = id;
+ mousePosition = Event.current.mousePosition;
+ }
+ else if (Event.current.type == EventType.MouseUp && GUIUtility.hotControl == id)
+ GUIUtility.hotControl = 0;
+ else if (Event.current.type == EventType.MouseDrag && GUIUtility.hotControl == id)
+ {
+ Vector2 move = mousePosition - Event.current.mousePosition;
+ value += delta * (-move.x - move.y);
+
+ if (snap > 0)
+ {
+ float mod = value % snap;
+
+ if (mod < (delta * 3) || Mathf.Abs(mod - snap) < (delta * 3))
+ value = Mathf.Round(value / snap) * snap;
+ }
+
+ mousePosition = Event.current.mousePosition;
+ GUI.changed = true;
+ }
+ }
+
+ GUI.DrawTexture(knobRect, KnobBack);
+ Matrix4x4 matrix = GUI.matrix;
+
+ if (min != max)
+ GUIUtility.RotateAroundPivot(value * (360 / (max - min)), knobRect.center);
+ else
+ GUIUtility.RotateAroundPivot(value, knobRect.center);
+
+ GUI.DrawTexture(knobRect, Knob);
+ GUI.matrix = matrix;
+
+ Rect label = new Rect(rect.x + rect.height + 9, rect.y + (rect.height / 2) - 9, rect.height, 18);
+ value = EditorGUI.FloatField(label, value);
+
+ if (min != max)
+ value = Mathf.Clamp(value, min, max);
+
+ return value;
+ }
+
+ public static int IntAngle(Rect rect, int value)
+ {
+ return IntAngle(rect, value, -1, -1, -1);
+ }
+
+ public static int IntAngle(Rect rect, int value, int snap)
+ {
+ return IntAngle(rect, value, snap, -1, -1);
+ }
+
+ public static int IntAngle(Rect rect, int value, int snap, int min, int max)
+ {
+ int id = GUIUtility.GetControlID(FocusType.Passive, rect);
+
+ Rect knobRect = new Rect(rect.x, rect.y, rect.height, rect.height);
+
+ int delta;
+ if (min != max)
+ delta = ((max - min) / 360);
+ else
+ delta = 1;
+
+ if (Event.current != null)
+ {
+ if (Event.current.type == EventType.MouseDown && knobRect.Contains(Event.current.mousePosition))
+ {
+ GUIUtility.hotControl = id;
+ mousePosition = Event.current.mousePosition;
+ }
+ else if (Event.current.type == EventType.MouseUp && GUIUtility.hotControl == id)
+ GUIUtility.hotControl = 0;
+ else if (Event.current.type == EventType.MouseDrag && GUIUtility.hotControl == id)
+ {
+ Vector2 move = mousePosition - Event.current.mousePosition;
+ value += delta * (-(int)move.x - (int)move.y);
+
+ if (snap > 0)
+ {
+ float mod = value % snap;
+
+ if (mod < (delta * 3) || Mathf.Abs(mod - snap) < (delta * 3))
+ value = (int)Mathf.Round(value / snap) * snap;
+ }
+
+ mousePosition = Event.current.mousePosition;
+ GUI.changed = true;
+ }
+ }
+
+ GUI.DrawTexture(knobRect, KnobBack);
+ Matrix4x4 matrix = GUI.matrix;
+
+ if (min != max)
+ GUIUtility.RotateAroundPivot(value * (360 / (max - min)), knobRect.center);
+ else
+ GUIUtility.RotateAroundPivot(value, knobRect.center);
+
+ GUI.DrawTexture(knobRect, Knob);
+ GUI.matrix = matrix;
+
+ Rect label = new Rect(rect.x + rect.height + 9, rect.y + (rect.height / 2) - 9, rect.height, 18);
+ value = EditorGUI.IntField(label, value);
+
+ if (min != max)
+ value = Mathf.Clamp(value, min, max);
+
+ return value;
+ }
+
+ public static int CycleButton(Rect rect, int selected, GUIContent[] contents, GUIStyle style)
+ {
+ if (GUI.Button(rect, contents[selected], style))
+ {
+ selected++;
+ if (selected >= contents.Length)
+ selected = 0;
+ }
+
+ return selected;
+ }
+ }
+}
diff --git a/Assets/Plugins/Editor/AdvancedInspector/ExtraGUI/ExtraGUI.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/ExtraGUI/ExtraGUI.cs.meta
new file mode 100644
index 00000000..82b25bc2
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/ExtraGUI/ExtraGUI.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: e020a2d8f59a2864999a0b1bce4e072e
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/ExtraGUI/ExtraGUILayout.cs b/Assets/Plugins/Editor/AdvancedInspector/ExtraGUI/ExtraGUILayout.cs
new file mode 100644
index 00000000..608a45f5
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/ExtraGUI/ExtraGUILayout.cs
@@ -0,0 +1,59 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+using UnityEngine;
+using UnityEditor;
+
+namespace AdvancedInspector
+{
+ public static class ExtraGUILayout
+ {
+ public static float FloatAngle(float value)
+ {
+ return FloatAngle(value, -1, -1, -1);
+ }
+
+ public static float FloatAngle(float value, float snap)
+ {
+ return FloatAngle(value, snap, -1, -1);
+ }
+
+ public static float FloatAngle(float value, float snap, float min, float max)
+ {
+ Rect rect = GUILayoutUtility.GetRect(128, 512, 32, 32);
+ rect.x += 8;
+ return ExtraGUI.FloatAngle(rect, value, snap, min, max);
+ }
+
+ public static int IntAngle(int value)
+ {
+ return IntAngle(value, -1, -1, -1);
+ }
+
+ public static int IntAngle(int value, int snap)
+ {
+ return IntAngle(value, snap, -1, -1);
+ }
+
+ public static int IntAngle(int value, int snap, int min, int max)
+ {
+ Rect rect = GUILayoutUtility.GetRect(128, 512, 32, 32);
+ rect.x += 8;
+ return ExtraGUI.IntAngle(rect, value, snap, min, max);
+ }
+
+ public static int CycleButton(int selected, GUIContent[] contents, GUIStyle style)
+ {
+ if (GUILayout.Button(contents[selected], style))
+ {
+ selected++;
+ if (selected >= contents.Length)
+ selected = 0;
+ }
+
+ return selected;
+ }
+ }
+}
diff --git a/Assets/Plugins/Editor/AdvancedInspector/ExtraGUI/ExtraGUILayout.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/ExtraGUI/ExtraGUILayout.cs.meta
new file mode 100644
index 00000000..37dfd46d
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/ExtraGUI/ExtraGUILayout.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 5a5c459bbc6263843ad47a5a586832ce
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/FieldEditors.meta b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors.meta
new file mode 100644
index 00000000..4977dd9e
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors.meta
@@ -0,0 +1,5 @@
+fileFormatVersion: 2
+guid: ab0ea0ba2acfe2e4ebd1654a33714ef2
+folderAsset: yes
+DefaultImporter:
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/AnimationCurveEditor.cs b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/AnimationCurveEditor.cs
new file mode 100644
index 00000000..e5514427
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/AnimationCurveEditor.cs
@@ -0,0 +1,29 @@
+using UnityEngine;
+using UnityEditor;
+using System;
+using System.Collections;
+
+namespace AdvancedInspector
+{
+ public class AnimationCurveEditor : FieldEditor
+ {
+ public override Type[] EditedTypes
+ {
+ get { return new Type[] { typeof(AnimationCurve) }; }
+ }
+
+ public override void Draw(InspectorField field, GUIStyle style)
+ {
+ AnimationCurve curve = GetValue(field) as AnimationCurve;
+ if (curve == null && !field.Mixed)
+ curve = new AnimationCurve();
+
+ EditorGUI.BeginChangeCheck();
+
+ AnimationCurve result = EditorGUILayout.CurveField(curve);
+
+ if (EditorGUI.EndChangeCheck())
+ field.SetValue(result);
+ }
+ }
+}
diff --git a/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/AnimationCurveEditor.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/AnimationCurveEditor.cs.meta
new file mode 100644
index 00000000..5a6ec81d
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/AnimationCurveEditor.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 175374f05b4f81243bd565df4b3842ac
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/BooleanEditor.cs b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/BooleanEditor.cs
new file mode 100644
index 00000000..f4d25a86
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/BooleanEditor.cs
@@ -0,0 +1,30 @@
+using UnityEngine;
+using UnityEditor;
+using System;
+using System.Collections;
+
+namespace AdvancedInspector
+{
+ public class BooleanEditor : FieldEditor
+ {
+ public override Type[] EditedTypes
+ {
+ get { return new Type[] { typeof(bool) }; }
+ }
+
+ public override void Draw(InspectorField field, GUIStyle style)
+ {
+ object value = GetValue(field);
+
+ EditorGUI.BeginChangeCheck();
+ bool result;
+ if (style != null)
+ result = EditorGUILayout.Toggle((bool)value, style);
+ else
+ result = EditorGUILayout.Toggle((bool)value);
+
+ if (EditorGUI.EndChangeCheck())
+ field.SetValue(result);
+ }
+ }
+} \ No newline at end of file
diff --git a/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/BooleanEditor.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/BooleanEditor.cs.meta
new file mode 100644
index 00000000..7013dc4e
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/BooleanEditor.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 3ed44e8dcffbde44eb2efd1c009248c6
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
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
diff --git a/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/BoundsEditor.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/BoundsEditor.cs.meta
new file mode 100644
index 00000000..a51cf2ca
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/BoundsEditor.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 1c18b641c92f5f44eb38e807d2feed74
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/CharEditor.cs b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/CharEditor.cs
new file mode 100644
index 00000000..2a82f0ea
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/CharEditor.cs
@@ -0,0 +1,40 @@
+using UnityEngine;
+using UnityEditor;
+using System;
+using System.Collections;
+
+namespace AdvancedInspector
+{
+ public class CharEditor : FieldEditor
+ {
+ public override Type[] EditedTypes
+ {
+ get { return new Type[] { typeof(char) }; }
+ }
+
+ public override void Draw(InspectorField field, GUIStyle style)
+ {
+ GUILayout.BeginHorizontal();
+
+ object value = GetValue(field);
+ string text = "";
+ if (value != null)
+ text = value.ToString();
+
+ EditorGUI.BeginChangeCheck();
+
+ string result = EditorGUILayout.TextField(text);
+
+ char c;
+ if (result.Length == 0)
+ c = '\0';
+ else
+ c = result[0];
+
+ if (EditorGUI.EndChangeCheck())
+ field.SetValue(c);
+
+ GUILayout.EndHorizontal();
+ }
+ }
+} \ No newline at end of file
diff --git a/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/CharEditor.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/CharEditor.cs.meta
new file mode 100644
index 00000000..e9be5d8b
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/CharEditor.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: b97d572b1c98e564f91d1a16c55cabc3
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/ColorEditor.cs b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/ColorEditor.cs
new file mode 100644
index 00000000..c8974082
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/ColorEditor.cs
@@ -0,0 +1,49 @@
+using UnityEngine;
+using UnityEditor;
+using System;
+using System.Collections;
+
+namespace AdvancedInspector
+{
+ public class ColorEditor : FieldEditor
+ {
+ public override bool Expandable
+ {
+ get { return false; }
+ }
+
+ public override Type[] EditedTypes
+ {
+ get { return new Type[] { typeof(Color), typeof(Color32) }; }
+ }
+
+ public override void Draw(InspectorField field, GUIStyle style)
+ {
+ object o = GetValue(field);
+ Type type = o.GetType();
+
+ Color color;
+ if (type == typeof(Color32))
+ {
+ Color32 color32 = (Color32)o;
+ color = color32;
+ }
+ else
+ color = (Color)o;
+
+ EditorGUI.BeginChangeCheck();
+ color = EditorGUILayout.ColorField(color);
+
+ if (EditorGUI.EndChangeCheck())
+ {
+ if (type == typeof(Color32))
+ {
+ Color32 color32 = color;
+ field.SetValue(color32);
+ }
+ else
+ field.SetValue(color);
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/ColorEditor.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/ColorEditor.cs.meta
new file mode 100644
index 00000000..e2813cf6
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/ColorEditor.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 95ebae573d4fa724eb1787d862581a82
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/DateTimeEditor.cs b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/DateTimeEditor.cs
new file mode 100644
index 00000000..de120b87
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/DateTimeEditor.cs
@@ -0,0 +1,69 @@
+using UnityEngine;
+using UnityEditor;
+using System;
+using System.Collections;
+
+using UniToolsEditor;
+
+namespace AdvancedInspector
+{
+ public class DateTimeEditor : FieldEditor, IModal
+ {
+ private InspectorField field;
+
+ public override Type[] EditedTypes
+ {
+ get { return new Type[] { typeof(DateTime) }; }
+ }
+
+ private static Texture calendar;
+
+ internal static Texture Calendar
+ {
+ get
+ {
+ if (calendar == null)
+ calendar = Helper.Load(EditorResources.Calendar);
+
+ return calendar;
+ }
+ }
+
+ public override void Draw(InspectorField field, GUIStyle style)
+ {
+ DateTime time = field.GetValue<DateTime>();
+ if (time == DateTime.MinValue)
+ time = DateTime.Now;
+
+ string title = time.ToString();
+ if (field.Mixed)
+ title = " - - - ";
+
+ EditorGUILayout.BeginHorizontal();
+ EditorGUILayout.Space();
+ if (GUILayout.Button(Calendar, GUIStyle.none, GUILayout.Width(18), GUILayout.Height(18)))
+ {
+ this.field = field;
+ DateTimeDialog.Create(this, time, GUIUtility.GUIToScreenPoint(Event.current.mousePosition));
+ }
+
+ TextAnchor anchor = GUI.skin.label.alignment;
+ GUI.skin.label.alignment = TextAnchor.MiddleLeft;
+ GUILayout.Label(title);
+ GUI.skin.label.alignment = anchor;
+
+ GUILayout.FlexibleSpace();
+ EditorGUILayout.EndHorizontal();
+ }
+
+ public void ModalRequest(bool shift) { }
+
+ public void ModalClosed(ModalWindow window)
+ {
+ if (window.Result != WindowResult.Ok)
+ return;
+
+ field.SetValue(((DateTimeDialog)window).Time);
+ }
+ }
+} \ No newline at end of file
diff --git a/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/DateTimeEditor.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/DateTimeEditor.cs.meta
new file mode 100644
index 00000000..f247aa3f
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/DateTimeEditor.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: e4176afc2bf64fb4cb22c40d470180a7
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/EnumEditor.cs b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/EnumEditor.cs
new file mode 100644
index 00000000..627aba7c
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/EnumEditor.cs
@@ -0,0 +1,192 @@
+using UnityEngine;
+using UnityEditor;
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Linq;
+
+namespace AdvancedInspector
+{
+ public class EnumEditor : FieldEditor
+ {
+ public override bool EditDerived
+ {
+ get { return true; }
+ }
+
+ public override bool Expandable
+ {
+ get { return false; }
+ }
+
+ public override Type[] EditedTypes
+ {
+ get { return new Type[] { typeof(Enum) }; }
+ }
+
+ public override void Draw(InspectorField field, GUIStyle style)
+ {
+ EnumAttribute display = field.GetAttribute<EnumAttribute>();
+
+ EditorGUI.showMixedValue = field.Mixed;
+
+ EditorGUI.BeginChangeCheck();
+
+ object result = null;
+ long value = Convert.ToInt64(GetValue(field));
+ if (display == null || !display.Masked)
+ {
+ if (display == null || display.Display == EnumDisplay.DropDown)
+ result = DrawDropDown(field.Type, value, style, false);
+ else if (display.Display == EnumDisplay.Button)
+ result = DrawEnum(field.Type, value, display.MaxItemsPerRow, style == null ? EditorStyles.toolbarButton : style);
+ else if (display.Display == EnumDisplay.Checkbox)
+ result = DrawEnum(field.Type, value, display.MaxItemsPerRow, style == null ? EditorStyles.toggle : style);
+ }
+ else
+ {
+ if (display == null || display.Display == EnumDisplay.DropDown)
+ result = DrawDropDown(field.Type, value, style, true);
+ else if (display.Display == EnumDisplay.Button)
+ result = DrawMasked(field.Type, value, display.MaxItemsPerRow, style == null ? EditorStyles.toolbarButton : style);
+ else if (display.Display == EnumDisplay.Checkbox)
+ result = DrawMasked(field.Type, value, display.MaxItemsPerRow, style == null ? EditorStyles.toggle : style);
+ }
+
+ if (EditorGUI.EndChangeCheck())
+ field.SetValue(result);
+ }
+
+ private int SelectedIndex(Array values, long value)
+ {
+ for (int i = 0; i < values.Length; i++)
+ if (Convert.ToInt64(values.GetValue(i)) == value)
+ return i;
+
+ return 0;
+ }
+
+ private string[] GetNames(Type type)
+ {
+ Array values = Enum.GetValues(type);
+ List<string> names = Enum.GetNames(type).ToList();
+
+ for (int i = 0; i < names.Count; i++)
+ {
+ DescriptorAttribute descriptor = ((Enum)values.GetValue(i)).GetAttribute<DescriptorAttribute>();
+ if (descriptor != null && !string.IsNullOrEmpty(descriptor.Name))
+ names[i] = descriptor.Name;
+ else
+ names[i] = ObjectNames.NicifyVariableName(names[i]);
+ }
+
+ return names.ToArray();
+ }
+
+ private object DrawDropDown(Type type, long value, GUIStyle style, bool masked)
+ {
+ string[] names = GetNames(type);
+ Array values = Enum.GetValues(type);
+
+ if (masked)
+ {
+ if (style == null)
+ value = EditorGUILayout.MaskField(Convert.ToInt32(value), names);
+ else
+ value = EditorGUILayout.MaskField(Convert.ToInt32(value), names, style);
+
+ return Enum.ToObject(type, value);
+ }
+ else
+ {
+ int selected = SelectedIndex(values, value);
+
+ if (style == null)
+ selected = EditorGUILayout.Popup(selected, names);
+ else
+ selected = EditorGUILayout.Popup(selected, names, style);
+
+ return Enum.ToObject(type, values.GetValue(selected));
+ }
+ }
+
+ private object DrawEnum(Type type, long value, int max, GUIStyle style)
+ {
+ if (max < 1)
+ max = 6;
+
+ string[] names = GetNames(type);
+ Array values = Enum.GetValues(type);
+
+ int rows = Mathf.CeilToInt((float)names.Length / (float)max);
+ int count = (names.Length / rows);
+ if (count * rows < names.Length)
+ count++;
+
+ int selected = SelectedIndex(values, value);
+
+ GUILayout.BeginVertical();
+
+ for (int i = 0; i < rows; i++)
+ {
+ GUILayout.BeginHorizontal();
+
+ for (int j = count * i; j < count * (i + 1); j++)
+ {
+ if (j >= names.Length)
+ break;
+
+ if (selected == j)
+ GUILayout.Toggle(true, names[j], style);
+ else if (GUILayout.Toggle(false, names[j], style))
+ selected = j;
+ }
+
+ GUILayout.EndHorizontal();
+ }
+
+ GUILayout.EndVertical();
+
+ return Enum.ToObject(type, values.GetValue(selected));
+ }
+
+ private object DrawMasked(Type type, long value, int max, GUIStyle style)
+ {
+ if (max < 1)
+ max = 6;
+
+ Array values = Enum.GetValues(type);
+ string[] names = GetNames(type);
+
+ int rows = Mathf.CeilToInt((float)names.Length / (float)max);
+ int count = (names.Length / rows);
+ if (count * rows < names.Length)
+ count++;
+
+ int result = 0;
+
+ GUILayout.BeginVertical();
+
+ for (int i = 0; i < rows; i++)
+ {
+ GUILayout.BeginHorizontal();
+
+ for (int j = count * i; j < count * (i + 1); j++)
+ {
+ if (j >= names.Length)
+ break;
+
+ int v = (int)values.GetValue(j);
+ if (GUILayout.Toggle(((int)value & v) == v, names[j], style))
+ result |= v;
+ }
+
+ GUILayout.EndHorizontal();
+ }
+
+ GUILayout.EndVertical();
+
+ return Enum.ToObject(type, result);
+ }
+ }
+} \ No newline at end of file
diff --git a/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/EnumEditor.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/EnumEditor.cs.meta
new file mode 100644
index 00000000..e8d95004
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/EnumEditor.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 60d56c7709f5e334c837239c33327bbd
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/FloatEditor.cs b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/FloatEditor.cs
new file mode 100644
index 00000000..d139c02f
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/FloatEditor.cs
@@ -0,0 +1,208 @@
+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
diff --git a/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/FloatEditor.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/FloatEditor.cs.meta
new file mode 100644
index 00000000..edfb7b23
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/FloatEditor.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 4724a82f5fd3d9e44a50d524deae4259
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/GradientEditor.cs b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/GradientEditor.cs
new file mode 100644
index 00000000..09910618
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/GradientEditor.cs
@@ -0,0 +1,36 @@
+using UnityEngine;
+using UnityEditor;
+using System;
+using System.Collections;
+using System.Reflection;
+
+namespace AdvancedInspector
+{
+ public class GradientEditor : FieldEditor
+ {
+ private static MethodInfo gradientField;
+
+ public GradientEditor()
+ {
+ // Because Unity does not expose this EditorGUI.
+ gradientField = typeof(EditorGUILayout).GetMethod("GradientField", BindingFlags.NonPublic | BindingFlags.Static, null, new Type[] { typeof(Gradient), typeof(GUILayoutOption).MakeArrayType() }, null);
+ }
+
+ public override Type[] EditedTypes
+ {
+ get { return new Type[] { typeof(Gradient) }; }
+ }
+
+ public override void Draw(InspectorField field, GUIStyle style)
+ {
+ object value = GetValue(field);
+
+ try
+ {
+ //Always throw "ExitGUIException"
+ gradientField.Invoke(null, new object[] { value, null });
+ }
+ catch (Exception) { }
+ }
+ }
+} \ No newline at end of file
diff --git a/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/GradientEditor.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/GradientEditor.cs.meta
new file mode 100644
index 00000000..275d4027
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/GradientEditor.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 96cba1c5f2f4273468699cb64ae8726e
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/GuidEditor.cs b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/GuidEditor.cs
new file mode 100644
index 00000000..43fd51c9
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/GuidEditor.cs
@@ -0,0 +1,25 @@
+using UnityEngine;
+using UnityEditor;
+using System;
+using System.Collections;
+
+namespace AdvancedInspector
+{
+ public class GuidEditor : FieldEditor
+ {
+ public override Type[] EditedTypes
+ {
+ get { return new Type[] { typeof(Guid) }; }
+ }
+
+ public override void Draw(InspectorField field, GUIStyle style)
+ {
+ // GetValue returns null if multi-selection and different values
+ Guid id = field.GetValue<Guid>();
+ if (id == Guid.Empty)
+ GUILayout.Label("GUID: --------------");
+ else
+ GUILayout.Label("GUID: " + id.ToString());
+ }
+ }
+} \ No newline at end of file
diff --git a/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/GuidEditor.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/GuidEditor.cs.meta
new file mode 100644
index 00000000..15843f11
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/GuidEditor.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 054dd34a1ddeb8b46848fcc673189bab
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/IntegerEditor.cs b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/IntegerEditor.cs
new file mode 100644
index 00000000..c88f59f2
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/IntegerEditor.cs
@@ -0,0 +1,195 @@
+using UnityEngine;
+using UnityEditor;
+using System;
+using System.Collections;
+
+namespace AdvancedInspector
+{
+ public class IntegerEditor : FieldEditor
+ {
+ public override Type[] EditedTypes
+ {
+ get { return new Type[] { typeof(int), typeof(byte), typeof(short), typeof(long), typeof(uint), typeof(ushort), typeof(ulong), typeof(sbyte) }; }
+ }
+
+ 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];
+ long value = Convert.ToInt64(result);
+ result = (long)Math.Round(value + (CalculateDragSensitivity(value) * HandleUtility.niceMouseDelta * 0.1f));
+
+ RangeValueAttribute rangeValue = field.GetAttribute<RangeValueAttribute>();
+ if (rangeValue != null)
+ result = Math.Min(Math.Max((long)result, (long)rangeValue.Min), (long)rangeValue.Max);
+
+ RangeAttribute range = field.GetAttribute<RangeAttribute>();
+ if (range != null)
+ result = Math.Min(Math.Max((long)result, (long)range.min), (long)range.max);
+
+ try
+ {
+ result = Convert.ChangeType(result, field.Type);
+ field.SetValue(result);
+ }
+ catch (Exception)
+ {
+ return;
+ }
+ }
+ }
+
+ private static double CalculateDragSensitivity(object value)
+ {
+ return Math.Max(1, Math.Pow(Math.Abs((long)value), 0.5d) * 0.03d);
+ }
+
+ public override void Draw(InspectorField field, GUIStyle style)
+ {
+ AngleAttribute angle = field.GetAttribute<AngleAttribute>();
+
+ RangeValueAttribute rangeValue = field.GetAttribute<RangeValueAttribute>();
+ RangeAttribute range = field.GetAttribute<RangeAttribute>();
+
+ if (range != null && rangeValue == null)
+ rangeValue = new RangeValueAttribute(range.min, range.max);
+
+ object result;
+ if (DrawIntegerNumber(GUIContent.none, field.GetValues(), rangeValue, angle, style, out result))
+ field.SetValue(result);
+ }
+
+ public static bool DrawInt(string label, int[] values, out int result, params GUILayoutOption[] options)
+ {
+ return DrawInt(label, values, null, out result, options);
+ }
+
+ public static bool DrawInt(string label, int[] values, GUIStyle style, out int 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 = DrawIntegerNumber(new GUIContent(label), genericValues, null, null, style, out genericResult, options);
+
+ try
+ {
+ result = (int)genericResult;
+ }
+ catch (Exception)
+ {
+ result = values[0];
+ return false;
+ }
+
+ return changed;
+ }
+
+ public static bool DrawIntegerNumber(GUIContent label, object[] values, RangeValueAttribute range, AngleAttribute angle, GUIStyle style, out object result, params GUILayoutOption[] options)
+ {
+ 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)
+ {
+ long value = Convert.ToInt64(result);
+ result = (long)Math.Round(value + (CalculateDragSensitivity(value) * HandleUtility.niceMouseDelta * 0.1f));
+ if (range != null)
+ result = Math.Min(Math.Max((long)result, (long)range.Min), (long)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.IntAngle((int)result, (int)angle.Snap, (int)range.Min, (int)range.Max);
+ else
+ result = ExtraGUILayout.IntAngle((int)result, (int)angle.Snap);
+ }
+ else
+ {
+ if (range != null)
+ result = EditorGUILayout.IntSlider((int)result, (int)range.Min, (int)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
diff --git a/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/IntegerEditor.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/IntegerEditor.cs.meta
new file mode 100644
index 00000000..21f570b6
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/IntegerEditor.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 2c1396463f395614b976eb98c848bfa5
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/LayerMaskEditor.cs b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/LayerMaskEditor.cs
new file mode 100644
index 00000000..a007f1b6
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/LayerMaskEditor.cs
@@ -0,0 +1,104 @@
+using UnityEngine;
+using UnityEditor;
+using System;
+using System.Collections;
+using System.Collections.Generic;
+
+namespace AdvancedInspector
+{
+ public class LayerMaskEditor : FieldEditor
+ {
+ private static List<string> names;
+ private static List<int> masks;
+
+ public override Type[] EditedTypes
+ {
+ get { return new Type[] { typeof(LayerMask) }; }
+ }
+
+ public override void Draw(InspectorField field, GUIStyle style)
+ {
+ names = new List<string>();
+ masks = new List<int>();
+
+ for (int i = 0; i < 32; i++)
+ {
+ string name = LayerMask.LayerToName(i);
+
+ if (!string.IsNullOrEmpty(name))
+ {
+ names.Add(name);
+ masks.Add(1 << i);
+ }
+ }
+
+ object value = field.GetValue();
+
+ bool isMask = value is LayerMask;
+
+ int mask;
+ if (isMask)
+ mask = (int)(LayerMask)value;
+ else
+ mask = (int)value;
+
+ int result;
+ if (DrawLayerMaskField(mask, style, out result))
+ {
+ if (isMask)
+ field.SetValue((LayerMask)result);
+ else
+ field.SetValue(result);
+ }
+ }
+
+ public static bool DrawLayerMaskField(int aMask, GUIStyle style, out int result)
+ {
+ int val = aMask;
+ int maskVal = 0;
+ for (int i = 0; i < names.Count; i++)
+ {
+ if (masks[i] != 0)
+ {
+ if ((val & masks[i]) == masks[i])
+ maskVal |= 1 << i;
+ }
+ else if (val == 0)
+ maskVal |= 1 << i;
+ }
+
+ EditorGUI.BeginChangeCheck();
+
+ int newMaskVal;
+ if (style != null)
+ newMaskVal = EditorGUILayout.MaskField(maskVal, names.ToArray(), style);
+ else
+ newMaskVal = EditorGUILayout.MaskField(maskVal, names.ToArray());
+
+ int changes = maskVal ^ newMaskVal;
+
+ for (int i = 0; i < masks.Count; i++)
+ {
+ if ((changes & (1 << i)) != 0)
+ {
+ if ((newMaskVal & (1 << i)) != 0)
+ {
+ if (masks[i] == 0)
+ {
+ val = 0;
+ break;
+ }
+ else
+ val |= masks[i];
+ }
+ else
+ val &= ~masks[i];
+ }
+ }
+
+ result = val;
+
+ return EditorGUI.EndChangeCheck();
+ }
+ }
+} \ No newline at end of file
diff --git a/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/LayerMaskEditor.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/LayerMaskEditor.cs.meta
new file mode 100644
index 00000000..404c93c3
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/LayerMaskEditor.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 8da80cb340d7b8b4b817f05fbae4e554
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/MonoEditor.cs b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/MonoEditor.cs
new file mode 100644
index 00000000..92083794
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/MonoEditor.cs
@@ -0,0 +1,78 @@
+using UnityEngine;
+using UnityEditor;
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Reflection;
+
+using UniToolsEditor;
+
+namespace AdvancedInspector
+{
+ public class MonoEditor : FieldEditor
+ {
+ public override bool EditDerived
+ {
+ get { return false; }
+ }
+
+ public override Type[] EditedTypes
+ {
+ get { return new Type[] { typeof(UnityEditor.MonoScript) }; }
+ }
+
+ public override void Draw(InspectorField field, GUIStyle style)
+ {
+ if (field.SerializedProperty == null || field.SerializedProperty.serializedObject == null)
+ return;
+
+ Type type = field.SerializedInstances[0].GetType();
+ if (typeof(ComponentMonoBehaviour).IsAssignableFrom(type))
+ GUILayout.Label(type.Name);
+ else
+ {
+ EditorGUI.BeginChangeCheck();
+
+ field.SerializedProperty.serializedObject.Update();
+ EditorGUILayout.PropertyField(field.SerializedProperty, new GUIContent(""));
+ field.SerializedProperty.serializedObject.ApplyModifiedProperties();
+
+ if (EditorGUI.EndChangeCheck())
+ {
+ if (field.Parent != null)
+ field.Parent.RefreshFields();
+ else
+ AdvancedInspectorControl.Editor.Instances = new object[] { field.SerializedProperty.serializedObject.targetObject };
+ }
+ }
+
+ DrawObjectSelector(field);
+ }
+
+ private void DrawObjectSelector(InspectorField field)
+ {
+ MonoBehaviour behaviour = field.GetValue() as MonoBehaviour;
+ if (behaviour == null)
+ return;
+
+ List<Component> components = new List<Component>(behaviour.gameObject.GetComponents(field.BaseType));
+ if (components.Count == 1)
+ return;
+
+ int index = components.IndexOf(behaviour);
+ string[] texts = new string[components.Count];
+
+ for (int i = 0; i < components.Count; i++)
+ texts[i] = i.ToString() + " : " + components[i].ToString();
+
+ EditorGUILayout.BeginHorizontal();
+ int selection = EditorGUILayout.Popup(index, texts);
+ EditorGUILayout.EndHorizontal();
+
+ if (selection == index)
+ return;
+
+ field.SetValue(components[selection]);
+ }
+ }
+} \ No newline at end of file
diff --git a/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/MonoEditor.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/MonoEditor.cs.meta
new file mode 100644
index 00000000..d796dee7
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/MonoEditor.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: b9fbe9f800efcf241b78c75454f58a12
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/ObjectEditor.cs b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/ObjectEditor.cs
new file mode 100644
index 00000000..ddfe8b55
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/ObjectEditor.cs
@@ -0,0 +1,192 @@
+using UnityEngine;
+using UnityEditor;
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Reflection;
+
+using UniToolsEditor;
+
+namespace AdvancedInspector
+{
+ public class ObjectEditor : FieldEditor
+ {
+ private static Texture picker;
+
+ private static Texture pickerPro;
+
+ private static Texture Picker
+ {
+ get
+ {
+ if (EditorGUIUtility.isProSkin)
+ {
+ if (pickerPro == null)
+ pickerPro = Helper.Load(EditorResources.PickerPro);
+
+ return pickerPro;
+ }
+ else
+ {
+ if (picker == null)
+ picker = Helper.Load(EditorResources.Picker);
+
+ return picker;
+ }
+ }
+ }
+
+ private static int s_ObjectFieldHash = "s_ObjectFieldHash".GetHashCode();
+ private static Type validator = null;
+ private static MethodInfo doObjectField = null;
+
+ public override bool EditDerived
+ {
+ get { return true; }
+ }
+
+ public override Type[] EditedTypes
+ {
+ get { return new Type[] { typeof(UnityEngine.Object) }; }
+ }
+
+ public override void Draw(InspectorField field, GUIStyle style)
+ {
+ if (field.GetAttribute<NoPicker>() != null)
+ {
+ object obj = field.GetValue();
+ if (field.Mixed)
+ GUILayout.Label("---");
+ else if (obj == null)
+ GUILayout.Label("None");
+ else if (field.OverloadToString)
+ GUILayout.Label(obj.ToString());
+ else if (field.Type != null)
+ GUILayout.Label(field.Type.Name);
+
+ return;
+ }
+
+ if (field.DisplayAsParent)
+ return;
+
+ if (validator == null)
+ validator = typeof(EditorGUI).GetNestedType("ObjectFieldValidator", BindingFlags.NonPublic);
+
+ if (doObjectField == null)
+ doObjectField = typeof(EditorGUI).GetMethod("DoObjectField", BindingFlags.NonPublic | BindingFlags.Static, null, new Type[] { typeof(Rect), typeof(Rect), typeof(int),
+ typeof(UnityEngine.Object), typeof(Type), typeof(SerializedProperty), validator, typeof(bool), typeof(GUIStyle) }, null);
+
+ DontAllowSceneObjectAttribute dontAllow = field.GetAttribute<DontAllowSceneObjectAttribute>(); ;
+
+ UnityEngine.Object value = (UnityEngine.Object)GetValue(field);
+
+ EditorGUILayout.BeginHorizontal();
+ EditorGUI.BeginChangeCheck();
+
+ Type type = field.Type;
+
+ UnityEngine.Object result = null;
+
+ if (type.IsInterface)
+ {
+ Rect position = EditorGUILayout.GetControlRect(false, 16f);
+ int id = GUIUtility.GetControlID(s_ObjectFieldHash, EditorGUIUtility.native, position);
+ Delegate validation = Delegate.CreateDelegate(validator, typeof(ObjectEditor).GetMethod("ValidateObjectFieldAssignment", BindingFlags.NonPublic | BindingFlags.Static));
+
+ result = doObjectField.Invoke(null, new object[] { position, position, id, value, type, null, validation, dontAllow == null, EditorStyles.objectField } ) as UnityEngine.Object;
+ }
+ else
+ result = EditorGUILayout.ObjectField(value, type, dontAllow == null);
+
+ if (EditorGUI.EndChangeCheck())
+ field.SetValue(result);
+
+ if (dontAllow == null && (field.Type == typeof(GameObject) ||
+ typeof(Component).IsAssignableFrom(field.Type) || field.Type.IsAssignableFrom(typeof(Component))))
+ if (GUILayout.Button(Picker, GUIStyle.none, GUILayout.Width(18), GUILayout.Height(18)))
+ InspectorEditor.StartPicking(Picked, field);
+
+ EditorGUILayout.EndHorizontal();
+
+ DrawObjectSelector(field);
+ }
+
+ private static UnityEngine.Object ValidateObjectFieldAssignment(UnityEngine.Object[] references, Type objType, SerializedProperty property)
+ {
+ if (references.Length > 0)
+ {
+ if (((references[0] != null) && (references[0].GetType() == typeof(GameObject))))
+ {
+ foreach (UnityEngine.Object obj in ((GameObject)references[0]).GetComponents(typeof(Component)))
+ {
+ if ((obj != null) && objType.IsAssignableFrom(obj.GetType()))
+ {
+ return obj;
+ }
+ }
+ }
+ }
+
+ return null;
+ }
+
+ private void Picked(GameObject go, object tag)
+ {
+ InspectorField field = tag as InspectorField;
+ if (field == null)
+ return;
+
+ if (field.Type == typeof(GameObject))
+ field.SetValue(go);
+ else if (typeof(Component).IsAssignableFrom(field.Type))
+ field.SetValue(go.GetComponent(field.Type));
+ }
+
+ public override void OnLabelDoubleClick(InspectorField field)
+ {
+ UnityEngine.Object target = field.GetValue() as UnityEngine.Object;
+ if (target == null)
+ return;
+
+ if (!string.IsNullOrEmpty(AssetDatabase.GetAssetPath(target)))
+ EditorGUIUtility.PingObject(target);
+ else
+ {
+ SceneView view = SceneView.lastActiveSceneView;
+ Quaternion rotation = view.camera.transform.rotation;
+
+ if (target is GameObject)
+ SceneView.lastActiveSceneView.LookAt(((GameObject)target).transform.position, rotation, 10);
+ else if (target is Component)
+ SceneView.lastActiveSceneView.LookAt(((Component)target).transform.position, rotation, 10);
+ }
+ }
+
+ private void DrawObjectSelector(InspectorField field)
+ {
+ MonoBehaviour behaviour = field.GetValue() as MonoBehaviour;
+ if (behaviour == null)
+ return;
+
+ List<Component> components = new List<Component>(behaviour.gameObject.GetComponents(field.BaseType));
+ if (components.Count == 1)
+ return;
+
+ int index = components.IndexOf(behaviour);
+ string[] texts = new string[components.Count];
+
+ for (int i = 0; i < components.Count; i++)
+ texts[i] = i.ToString() + " : " + components[i].ToString();
+
+ EditorGUILayout.BeginHorizontal();
+ int selection = EditorGUILayout.Popup(index, texts);
+ EditorGUILayout.EndHorizontal();
+
+ if (selection == index)
+ return;
+
+ field.SetValue(components[selection]);
+ }
+ }
+} \ No newline at end of file
diff --git a/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/ObjectEditor.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/ObjectEditor.cs.meta
new file mode 100644
index 00000000..b975cbcc
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/ObjectEditor.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 1c38d144247c0f9448c0c285b7c255fc
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/QuaternionEditor.cs b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/QuaternionEditor.cs
new file mode 100644
index 00000000..789ebbb6
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/QuaternionEditor.cs
@@ -0,0 +1,168 @@
+using UnityEngine;
+using UnityEditor;
+using System;
+using System.Collections;
+
+namespace AdvancedInspector
+{
+ public class QuaternionEditor : FieldEditor
+ {
+ public override bool Expandable
+ {
+ get { return false; }
+ }
+
+ public override Type[] EditedTypes
+ {
+ get { return new Type[] { typeof(Quaternion) }; }
+ }
+
+ public override void Draw(InspectorField field, GUIStyle style)
+ {
+ float width = EditorGUIUtility.labelWidth;
+ EditorGUIUtility.labelWidth = VECTOR_FIELD_WIDTH;
+
+ Quaternion[] values = field.GetValues<Quaternion>();
+ if (AdvancedInspectorControl.Level <= InspectorLevel.Advanced)
+ {
+ float[] x = new float[values.Length];
+ float[] y = new float[values.Length];
+ float[] z = new float[values.Length];
+
+ for (int i = 0; i < values.Length; i++)
+ {
+ Vector3 euler = values[i].eulerAngles;
+ x[i] = euler.x;
+ y[i] = euler.y;
+ z[i] = euler.z;
+ }
+
+ GUILayout.BeginHorizontal();
+
+ float result;
+ if (FloatEditor.DrawFloat("X", x, style, out result))
+ {
+ Undo.RecordObjects(field.SerializedInstances, "Edit " + field.Name + " X");
+
+ for (int i = 0; i < field.Instances.Length; i++)
+ {
+ Vector3 v = field.GetValue<Quaternion>(field.Instances[i]).eulerAngles;
+ v.x = result;
+ field.SetValue(field.Instances[i], Quaternion.Euler(v));
+ }
+ }
+
+ if (FloatEditor.DrawFloat("Y", y, style, out result))
+ {
+ Undo.RecordObjects(field.SerializedInstances, "Edit " + field.Name + " Y");
+
+ for (int i = 0; i < field.Instances.Length; i++)
+ {
+ Vector3 v = field.GetValue<Quaternion>(field.Instances[i]).eulerAngles;
+ v.y = result;
+ field.SetValue(field.Instances[i], Quaternion.Euler(v));
+ }
+ }
+
+ if (FloatEditor.DrawFloat("Z", z, style, out result))
+ {
+ Undo.RecordObjects(field.SerializedInstances, "Edit " + field.Name + " Z");
+
+ for (int i = 0; i < field.Instances.Length; i++)
+ {
+ Vector3 v = field.GetValue<Quaternion>(field.Instances[i]).eulerAngles;
+ v.z = result;
+ field.SetValue(field.Instances[i], Quaternion.Euler(v));
+ }
+ }
+
+ GUILayout.EndHorizontal();
+ }
+ else
+ {
+ float[] x = new float[values.Length];
+ float[] y = new float[values.Length];
+ float[] z = new float[values.Length];
+ float[] w = new float[values.Length];
+
+ for (int i = 0; i < values.Length; i++)
+ {
+ x[i] = values[i].x;
+ y[i] = values[i].y;
+ z[i] = values[i].z;
+ w[i] = values[i].w;
+ }
+
+ GUILayout.BeginHorizontal();
+
+ float result;
+ if (FloatEditor.DrawFloat("X", x, style, out result))
+ {
+ Undo.RecordObjects(field.SerializedInstances, "Edit " + field.Name + " X");
+
+ for (int i = 0; i < field.Instances.Length; i++)
+ {
+ Quaternion v = field.GetValue<Quaternion>(field.Instances[i]);
+ v.x = result;
+ field.SetValue(field.Instances[i], v);
+ }
+ }
+
+ if (FloatEditor.DrawFloat("Y", y, style, out result))
+ {
+ Undo.RecordObjects(field.SerializedInstances, "Edit " + field.Name + " Y");
+
+ for (int i = 0; i < field.Instances.Length; i++)
+ {
+ Quaternion v = field.GetValue<Quaternion>(field.Instances[i]);
+ v.y = result;
+ field.SetValue(field.Instances[i], v);
+ }
+ }
+
+ GUILayout.EndHorizontal();
+ GUILayout.BeginHorizontal();
+
+ if (FloatEditor.DrawFloat("Z", z, style, out result))
+ {
+ Undo.RecordObjects(field.SerializedInstances, "Edit " + field.Name + " Z");
+
+ for (int i = 0; i < field.Instances.Length; i++)
+ {
+ Quaternion v = field.GetValue<Quaternion>(field.Instances[i]);
+ v.z = result;
+ field.SetValue(field.Instances[i], v);
+ }
+ }
+
+ if (FloatEditor.DrawFloat("W", w, style, out result))
+ {
+ Undo.RecordObjects(field.SerializedInstances, "Edit " + field.Name + " W");
+
+ for (int i = 0; i < field.Instances.Length; i++)
+ {
+ Quaternion v = field.GetValue<Quaternion>(field.Instances[i]);
+ v.w = result;
+ field.SetValue(field.Instances[i], v);
+ }
+ }
+
+ GUILayout.EndHorizontal();
+ }
+
+ EditorGUIUtility.labelWidth = width;
+ }
+
+ public override void OnContextualClick(InspectorField field, GenericMenu menu)
+ {
+ menu.AddItem(new GUIContent("Identity"), false, Identity);
+
+ menu.AddSeparator("");
+ }
+
+ private void Identity()
+ {
+ AdvancedInspectorControl.Field.SetValue(Quaternion.identity);
+ }
+ }
+} \ No newline at end of file
diff --git a/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/QuaternionEditor.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/QuaternionEditor.cs.meta
new file mode 100644
index 00000000..96defe29
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/QuaternionEditor.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 4fd00569d2e889248bedf34a4e50c078
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/RangeEditor.cs b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/RangeEditor.cs
new file mode 100644
index 00000000..0f540c19
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/RangeEditor.cs
@@ -0,0 +1,109 @@
+using UnityEngine;
+using UnityEditor;
+using System;
+using System.Collections;
+
+namespace AdvancedInspector
+{
+ public class RangeIntEditor : FieldEditor
+ {
+ public override Type[] EditedTypes
+ {
+ get { return new Type[] { typeof(RangeInt) }; }
+ }
+
+ public override void Draw(InspectorField field, GUIStyle style)
+ {
+ RangeValueAttribute range = field.GetAttribute<RangeValueAttribute>();
+ if (range == null)
+ return;
+
+ EditorGUILayout.BeginHorizontal();
+
+ RangeInt[] ranges = field.GetValues<RangeInt>();
+
+ int[] mins = new int[ranges.Length];
+ int[] maxs = new int[ranges.Length];
+ int min = ranges[0].min;
+ int max = ranges[0].max;
+ bool different = false;
+
+ for (int i = 0; i < ranges.Length; i++)
+ {
+ mins[i] = ranges[i].min;
+ maxs[i] = ranges[i].max;
+ if (ranges[i].min != min || ranges[0].max != max)
+ different = true;
+ }
+
+ if (IntegerEditor.DrawInt("", mins, out min, GUILayout.Width(64)))
+ for (int i = 0; i < field.Instances.Length; i++)
+ field.SetValue(field.Instances[i], new RangeInt(min, ranges[i].max));
+
+ EditorGUI.BeginChangeCheck();
+ float fMin = min;
+ float fMax = max;
+ EditorGUI.showMixedValue = different;
+ EditorGUILayout.MinMaxSlider(ref fMin, ref fMax, range.Min, range.Max);
+ if (EditorGUI.EndChangeCheck() && min < max)
+ for (int i = 0; i < field.Instances.Length; i++)
+ field.SetValue(field.Instances[i], new RangeInt((int)fMin, (int)fMax));
+
+ if (IntegerEditor.DrawInt("", maxs, out max, GUILayout.Width(64)))
+ for (int i = 0; i < field.Instances.Length; i++)
+ field.SetValue(field.Instances[i], new RangeInt(ranges[i].min, max));
+
+ EditorGUILayout.EndHorizontal();
+ }
+ }
+
+ public class RangeFloatEditor : FieldEditor
+ {
+ public override Type[] EditedTypes
+ {
+ get { return new Type[] { typeof(RangeFloat) }; }
+ }
+
+ public override void Draw(InspectorField field, GUIStyle style)
+ {
+ RangeValueAttribute range = field.GetAttribute<RangeValueAttribute>();
+ if (range == null)
+ return;
+
+ EditorGUILayout.BeginHorizontal();
+
+ RangeFloat[] ranges = field.GetValues<RangeFloat>();
+
+ float[] mins = new float[ranges.Length];
+ float[] maxs = new float[ranges.Length];
+ float min = ranges[0].min;
+ float max = ranges[0].max;
+ bool different = false;
+
+ for (int i = 0; i < ranges.Length; i++)
+ {
+ mins[i] = ranges[i].min;
+ maxs[i] = ranges[i].max;
+ if (ranges[i].min != min || ranges[0].max != max)
+ different = true;
+ }
+
+ if (FloatEditor.DrawFloat("", mins, out min, GUILayout.Width(64)))
+ for (int i = 0; i < field.Instances.Length; i++)
+ field.SetValue(field.Instances[i], new RangeFloat(min, ranges[i].max));
+
+ EditorGUI.BeginChangeCheck();
+ EditorGUI.showMixedValue = different;
+ EditorGUILayout.MinMaxSlider(ref min, ref max, range.Min, range.Max);
+ if (EditorGUI.EndChangeCheck() && min < max)
+ for (int i = 0; i < field.Instances.Length; i++)
+ field.SetValue(field.Instances[i], new RangeFloat(min, max));
+
+ if (FloatEditor.DrawFloat("", maxs, out max, GUILayout.Width(64)))
+ for (int i = 0; i < field.Instances.Length; i++)
+ field.SetValue(field.Instances[i], new RangeFloat(ranges[i].min, max));
+
+ EditorGUILayout.EndHorizontal();
+ }
+ }
+} \ No newline at end of file
diff --git a/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/RangeEditor.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/RangeEditor.cs.meta
new file mode 100644
index 00000000..0701b335
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/RangeEditor.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 94080e99d0e3f994a8415cc19062dbde
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/RectEditor.cs b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/RectEditor.cs
new file mode 100644
index 00000000..ee3e61e4
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/RectEditor.cs
@@ -0,0 +1,165 @@
+using UnityEngine;
+using UnityEditor;
+using System;
+using System.Collections;
+
+namespace AdvancedInspector
+{
+ public class RectEditor : FieldEditor
+ {
+ public override bool Expandable
+ {
+ get { return false; }
+ }
+
+ public override Type[] EditedTypes
+ {
+ get { return new Type[] { typeof(Rect), typeof(RectOffset) }; }
+ }
+
+ public override void Draw(InspectorField field, GUIStyle style)
+ {
+ Type type = field.BaseType;
+
+ float labelWidth = EditorGUIUtility.labelWidth;
+ EditorGUIUtility.labelWidth = VECTOR_FIELD_WIDTH;
+
+ if (type == typeof(Rect))
+ {
+ Rect[] values = field.GetValues<Rect>();
+
+ float[] x = new float[values.Length];
+ float[] y = new float[values.Length];
+ float[] height = new float[values.Length];
+ float[] width = new float[values.Length];
+
+ for (int i = 0; i < values.Length; i++)
+ {
+ x[i] = values[i].x;
+ y[i] = values[i].y;
+ height[i] = values[i].height;
+ width[i] = values[i].width;
+ }
+
+ GUILayout.BeginHorizontal();
+ float result;
+ if (FloatEditor.DrawFloat("X", x, style, out result))
+ {
+ Undo.RecordObjects(field.SerializedInstances, "Edit " + field.Name + " X");
+
+ for (int i = 0; i < field.Instances.Length; i++)
+ {
+ values[i].x = result;
+ field.SetValue(field.Instances[i], values[i]);
+ }
+ }
+
+ if (FloatEditor.DrawFloat("Y", y, style, out result))
+ {
+ Undo.RecordObjects(field.SerializedInstances, "Edit " + field.Name + " Y");
+
+ for (int i = 0; i < field.Instances.Length; i++)
+ {
+ values[i].y = result;
+ field.SetValue(field.Instances[i], values[i]);
+ }
+ }
+ GUILayout.EndHorizontal();
+
+ GUILayout.BeginHorizontal();
+ if (FloatEditor.DrawFloat("W", width, style, out result))
+ {
+ Undo.RecordObjects(field.SerializedInstances, "Edit " + field.Name + " Width");
+
+ for (int i = 0; i < field.Instances.Length; i++)
+ {
+ values[i].width = result;
+ field.SetValue(field.Instances[i], values[i]);
+ }
+ }
+
+ if (FloatEditor.DrawFloat("H", height, style, out result))
+ {
+ Undo.RecordObjects(field.SerializedInstances, "Edit " + field.Name + " Height");
+
+ for (int i = 0; i < field.Instances.Length; i++)
+ {
+ values[i].height = result;
+ field.SetValue(field.Instances[i], values[i]);
+ }
+ }
+ GUILayout.EndHorizontal();
+ }
+ else if (type == typeof(RectOffset))
+ {
+ RectOffset[] values = field.GetValues<RectOffset>();
+
+ int[] left = new int[values.Length];
+ int[] right = new int[values.Length];
+ int[] top = new int[values.Length];
+ int[] bottom = new int[values.Length];
+
+ for (int i = 0; i < values.Length; i++)
+ {
+ left[i] = values[i].left;
+ right[i] = values[i].right;
+ top[i] = values[i].top;
+ bottom[i] = values[i].bottom;
+ }
+
+ GUILayout.BeginHorizontal();
+ int result;
+ if (IntegerEditor.DrawInt("L", left, style, out result))
+ {
+ Undo.RecordObjects(field.SerializedInstances, "Edit " + field.Name + " Left");
+
+ for (int i = 0; i < field.Instances.Length; i++)
+ {
+ values[i].left = result;
+ field.SetValue(field.Instances[i], values[i]);
+ }
+ }
+
+ if (IntegerEditor.DrawInt("R", right, style, out result))
+ {
+ Undo.RecordObjects(field.SerializedInstances, "Edit " + field.Name + " Right");
+
+ for (int i = 0; i < field.Instances.Length; i++)
+ {
+ values[i].right = result;
+ field.SetValue(field.Instances[i], values[i]);
+ }
+ }
+ GUILayout.EndHorizontal();
+
+ GUILayout.BeginHorizontal();
+ if (IntegerEditor.DrawInt("T", top, style, out result))
+ {
+ Undo.RecordObjects(field.SerializedInstances, "Edit " + field.Name + " Top");
+
+ for (int i = 0; i < field.Instances.Length; i++)
+ {
+ values[i].top = result;
+ field.SetValue(field.Instances[i], values[i]);
+ }
+ }
+
+ if (IntegerEditor.DrawInt("B", bottom, style, out result))
+ {
+ Undo.RecordObjects(field.SerializedInstances, "Edit " + field.Name + " Bottom");
+
+ for (int i = 0; i < field.Instances.Length; i++)
+ {
+ values[i].bottom = result;
+ field.SetValue(field.Instances[i], values[i]);
+ }
+ }
+ GUILayout.EndHorizontal();
+ }
+
+ EditorGUILayout.Space();
+
+ EditorGUIUtility.labelWidth = labelWidth;
+ }
+ }
+} \ No newline at end of file
diff --git a/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/RectEditor.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/RectEditor.cs.meta
new file mode 100644
index 00000000..aaf7d190
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/RectEditor.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: fccb35960df296244b543fc8b0adbb98
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/RigidbodyConstraints2DEditor.cs b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/RigidbodyConstraints2DEditor.cs
new file mode 100644
index 00000000..4e54cbaa
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/RigidbodyConstraints2DEditor.cs
@@ -0,0 +1,60 @@
+using UnityEngine;
+using UnityEditor;
+using System;
+using System.Collections;
+
+namespace AdvancedInspector
+{
+ public class RigidbodyConstraints2DEditor : FieldEditor
+ {
+ private const int LABEL_WIDTH = 96;
+ private const int TOGGLE_WIDTH = 28;
+
+ public override bool EditDerived
+ {
+ get { return false; }
+ }
+
+ public override bool Expandable
+ {
+ get { return true; }
+ }
+
+ public override Type[] EditedTypes
+ {
+ get { return new Type[] { typeof(RigidbodyConstraints2D) }; }
+ }
+
+ public override void Draw(InspectorField field, GUIStyle style)
+ {
+ field.Expandable = true;
+ if (!field.Expanded)
+ return;
+
+ EditorGUI.showMixedValue = field.Mixed;
+
+ EditorGUI.BeginChangeCheck();
+
+ RigidbodyConstraints2D value = (RigidbodyConstraints2D)GetValue(field);
+ int newValue = 0;
+
+ EditorGUILayout.BeginHorizontal();
+ GUILayout.Label("Freeze Position ", GUILayout.Width(LABEL_WIDTH));
+ if (GUILayout.Toggle(value.Has(RigidbodyConstraints2D.FreezePositionX), "X", GUILayout.Width(TOGGLE_WIDTH)))
+ newValue += (int)RigidbodyConstraints2D.FreezePositionX;
+
+ if (GUILayout.Toggle(value.Has(RigidbodyConstraints2D.FreezePositionY), "Y", GUILayout.Width(TOGGLE_WIDTH)))
+ newValue += (int)RigidbodyConstraints2D.FreezePositionY;
+ EditorGUILayout.EndHorizontal();
+
+ EditorGUILayout.BeginHorizontal();
+ GUILayout.Label("Freeze Rotation ", GUILayout.Width(LABEL_WIDTH));
+ if (GUILayout.Toggle(value.Has(RigidbodyConstraints2D.FreezeRotation), "Z", GUILayout.Width(TOGGLE_WIDTH)))
+ newValue += (int)RigidbodyConstraints2D.FreezeRotation;
+ EditorGUILayout.EndHorizontal();
+
+ if (EditorGUI.EndChangeCheck())
+ field.SetValue(Enum.ToObject(typeof(RigidbodyConstraints2D), newValue));
+ }
+ }
+} \ No newline at end of file
diff --git a/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/RigidbodyConstraints2DEditor.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/RigidbodyConstraints2DEditor.cs.meta
new file mode 100644
index 00000000..7e23526b
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/RigidbodyConstraints2DEditor.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 4d2541cd5af63614a837b0ad6801c1ed
+timeCreated: 1433909068
+licenseType: Store
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/RigidbodyConstraintsEditor.cs b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/RigidbodyConstraintsEditor.cs
new file mode 100644
index 00000000..781c92b8
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/RigidbodyConstraintsEditor.cs
@@ -0,0 +1,69 @@
+using UnityEngine;
+using UnityEditor;
+using System;
+using System.Collections;
+
+namespace AdvancedInspector
+{
+ public class RigidbodyConstraintsEditor : FieldEditor
+ {
+ private const int LABEL_WIDTH = 96;
+ private const int TOGGLE_WIDTH = 28;
+
+ public override bool EditDerived
+ {
+ get { return false; }
+ }
+
+ public override bool Expandable
+ {
+ get { return true; }
+ }
+
+ public override Type[] EditedTypes
+ {
+ get { return new Type[] { typeof(RigidbodyConstraints) }; }
+ }
+
+ public override void Draw(InspectorField field, GUIStyle style)
+ {
+ field.Expandable = true;
+ if (!field.Expanded)
+ return;
+
+ EditorGUI.showMixedValue = field.Mixed;
+
+ EditorGUI.BeginChangeCheck();
+
+ RigidbodyConstraints value = (RigidbodyConstraints)GetValue(field);
+ int newValue = 0;
+
+ EditorGUILayout.BeginHorizontal();
+ GUILayout.Label("Freeze Position ", GUILayout.Width(LABEL_WIDTH));
+ if (GUILayout.Toggle(value.Has(RigidbodyConstraints.FreezePositionX), "X", GUILayout.Width(TOGGLE_WIDTH)))
+ newValue += (int)RigidbodyConstraints.FreezePositionX;
+
+ if (GUILayout.Toggle(value.Has(RigidbodyConstraints.FreezePositionY), "Y", GUILayout.Width(TOGGLE_WIDTH)))
+ newValue += (int)RigidbodyConstraints.FreezePositionY;
+
+ if (GUILayout.Toggle(value.Has(RigidbodyConstraints.FreezePositionZ), "Z", GUILayout.Width(TOGGLE_WIDTH)))
+ newValue += (int)RigidbodyConstraints.FreezePositionZ;
+ EditorGUILayout.EndHorizontal();
+
+ EditorGUILayout.BeginHorizontal();
+ GUILayout.Label("Freeze Rotation ", GUILayout.Width(LABEL_WIDTH));
+ if (GUILayout.Toggle(value.Has(RigidbodyConstraints.FreezeRotationX), "X", GUILayout.Width(TOGGLE_WIDTH)))
+ newValue += (int)RigidbodyConstraints.FreezeRotationX;
+
+ if (GUILayout.Toggle(value.Has(RigidbodyConstraints.FreezeRotationY), "Y", GUILayout.Width(TOGGLE_WIDTH)))
+ newValue += (int)RigidbodyConstraints.FreezeRotationY;
+
+ if (GUILayout.Toggle(value.Has(RigidbodyConstraints.FreezeRotationZ), "Z", GUILayout.Width(TOGGLE_WIDTH)))
+ newValue += (int)RigidbodyConstraints.FreezeRotationZ;
+ EditorGUILayout.EndHorizontal();
+
+ if (EditorGUI.EndChangeCheck())
+ field.SetValue(Enum.ToObject(typeof(RigidbodyConstraints), newValue));
+ }
+ }
+} \ No newline at end of file
diff --git a/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/RigidbodyConstraintsEditor.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/RigidbodyConstraintsEditor.cs.meta
new file mode 100644
index 00000000..1121e382
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/RigidbodyConstraintsEditor.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 1aa0c3b940b87d14cbb9705339f378b3
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/StringEditor.cs b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/StringEditor.cs
new file mode 100644
index 00000000..573450d9
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/StringEditor.cs
@@ -0,0 +1,89 @@
+using UnityEngine;
+using UnityEditor;
+using System;
+using System.Collections;
+
+namespace AdvancedInspector
+{
+ public class StringEditor : FieldEditor
+ {
+ public override Type[] EditedTypes
+ {
+ get { return new Type[] { typeof(string) }; }
+ }
+
+ public override void Draw(InspectorField field, GUIStyle style)
+ {
+ GUILayout.BeginHorizontal();
+
+ float width = EditorGUIUtility.labelWidth;
+ EditorGUIUtility.labelWidth = 0;
+
+ TextFieldAttribute text = field.GetAttribute<TextFieldAttribute>();
+ MultilineAttribute multiline = field.GetAttribute<MultilineAttribute>();
+ TextAreaAttribute area = field.GetAttribute<TextAreaAttribute>();
+
+ object value = GetValue(field);
+
+ EditorGUI.BeginChangeCheck();
+ GUIUtility.GetControlID(field.Path.GetHashCode(), FocusType.Passive);
+
+ string result = "";
+ if ((text == null && multiline == null && area == null) || (text != null && text.Type == TextFieldType.Standard))
+ {
+ if (style != null)
+ result = EditorGUILayout.TextField((string)value, style);
+ else
+ result = EditorGUILayout.TextField((string)value);
+ }
+ else if (multiline != null || area != null || text.Type == TextFieldType.Area)
+ {
+ if (style != null)
+ result = EditorGUILayout.TextArea((string)value, style);
+ else
+ result = EditorGUILayout.TextArea((string)value);
+ }
+ else if (text.Type == TextFieldType.Password)
+ {
+ if (style != null)
+ result = EditorGUILayout.PasswordField((string)value, style);
+ else
+ result = EditorGUILayout.PasswordField((string)value);
+ }
+ else if (text.Type == TextFieldType.Tag)
+ {
+ if (style != null)
+ result = EditorGUILayout.TagField((string)value, style);
+ else
+ result = EditorGUILayout.TagField((string)value);
+ }
+ else if (text.Type == TextFieldType.File)
+ {
+ if (GUILayout.Button("...", GUILayout.Height(BUTTON_HEIGHT), GUILayout.Width(BUTTON_HEIGHT * 2)))
+ result = EditorUtility.OpenFilePanel(text.Title, text.Path, text.Extension);
+
+ if (field.Mixed)
+ GUILayout.Label("---");
+ else
+ GUILayout.Label((string)value);
+ }
+ else if (text.Type == TextFieldType.Folder)
+ {
+ if (GUILayout.Button("...", GUILayout.Height(BUTTON_HEIGHT), GUILayout.Width(BUTTON_HEIGHT * 2)))
+ result = EditorUtility.OpenFolderPanel(text.Title, "", "");
+
+ if (field.Mixed)
+ GUILayout.Label("---");
+ else
+ GUILayout.Label((string)value);
+ }
+
+ if (EditorGUI.EndChangeCheck())
+ field.SetValue(result);
+
+ EditorGUIUtility.labelWidth = width;
+
+ GUILayout.EndHorizontal();
+ }
+ }
+} \ No newline at end of file
diff --git a/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/StringEditor.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/StringEditor.cs.meta
new file mode 100644
index 00000000..4154c0d7
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/StringEditor.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 90da81dc74f23b44c85a60181928af9b
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/TimeSpanEditor.cs b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/TimeSpanEditor.cs
new file mode 100644
index 00000000..fa720ce7
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/TimeSpanEditor.cs
@@ -0,0 +1,98 @@
+using UnityEngine;
+using UnityEditor;
+using System;
+using System.Collections;
+
+namespace AdvancedInspector
+{
+ public class TimeSpanEditor : FieldEditor
+ {
+ private InspectorField field;
+
+ public override Type[] EditedTypes
+ {
+ get { return new Type[] { typeof(TimeSpan) }; }
+ }
+
+ public override void Draw(InspectorField field, GUIStyle style)
+ {
+ int[] days = new int[field.Instances.Length];
+ int[] hours = new int[field.Instances.Length];
+ int[] mins = new int[field.Instances.Length];
+ int[] secs = new int[field.Instances.Length];
+ for (int i = 0; i < field.Instances.Length; i++)
+ {
+ TimeSpan span = field.GetValue<TimeSpan>(field.Instances[i]);
+ days[i] = span.Days;
+ hours[i] = span.Hours;
+ mins[i] = span.Minutes;
+ secs[i] = span.Seconds;
+ }
+
+ float labelWidth = EditorGUIUtility.labelWidth;
+ EditorGUIUtility.labelWidth = 42;
+ GUILayout.BeginHorizontal();
+
+ int result;
+ if (IntegerEditor.DrawInt("Days", days, style, out result))
+ {
+ result = Mathf.Clamp(result, 0, int.MaxValue);
+ Undo.RecordObjects(field.SerializedInstances, "Edit " + field.Name + " Days");
+
+ for (int i = 0; i < field.Instances.Length; i++)
+ {
+ TimeSpan span = field.GetValue<TimeSpan>(field.Instances[i]);
+ span = new TimeSpan(result, span.Hours, span.Minutes, span.Seconds);
+ field.SetValue(field.Instances[i], span);
+ }
+ }
+
+ if (IntegerEditor.DrawInt("Hours", hours, style, out result))
+ {
+ result = Mathf.Clamp(result, 0, int.MaxValue);
+ Undo.RecordObjects(field.SerializedInstances, "Edit " + field.Name + " Hours");
+
+ for (int i = 0; i < field.Instances.Length; i++)
+ {
+ TimeSpan span = field.GetValue<TimeSpan>(field.Instances[i]);
+ span = new TimeSpan(span.Days, result, span.Minutes, span.Seconds);
+ field.SetValue(field.Instances[i], span);
+ }
+ }
+
+ GUILayout.EndHorizontal();
+ GUILayout.BeginHorizontal();
+
+ if (IntegerEditor.DrawInt("Mins", mins, style, out result))
+ {
+ result = Mathf.Clamp(result, 0, int.MaxValue);
+ Undo.RecordObjects(field.SerializedInstances, "Edit " + field.Name + " Minutes");
+
+ for (int i = 0; i < field.Instances.Length; i++)
+ {
+ TimeSpan span = field.GetValue<TimeSpan>(field.Instances[i]);
+ span = new TimeSpan(span.Days, span.Hours, result, span.Seconds);
+ field.SetValue(field.Instances[i], span);
+ }
+ }
+
+ if (IntegerEditor.DrawInt("Secs", secs, style, out result))
+ {
+ result = Mathf.Clamp(result, 0, int.MaxValue);
+ Undo.RecordObjects(field.SerializedInstances, "Edit " + field.Name + " Seconds");
+
+ for (int i = 0; i < field.Instances.Length; i++)
+ {
+ TimeSpan span = field.GetValue<TimeSpan>(field.Instances[i]);
+ span = new TimeSpan(span.Days, span.Hours, span.Minutes, result);
+ field.SetValue(field.Instances[i], span);
+ }
+ }
+
+ GUILayout.EndHorizontal();
+ EditorGUILayout.Space();
+
+ EditorGUIUtility.labelWidth = labelWidth;
+ }
+ }
+} \ No newline at end of file
diff --git a/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/TimeSpanEditor.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/TimeSpanEditor.cs.meta
new file mode 100644
index 00000000..e0d700c4
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/TimeSpanEditor.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: a8e1b583a89c0f2468b87c50783399f9
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/VectorEditor.cs b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/VectorEditor.cs
new file mode 100644
index 00000000..00b9bb3e
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/VectorEditor.cs
@@ -0,0 +1,208 @@
+using UnityEngine;
+using UnityEditor;
+using System;
+using System.Collections;
+
+namespace AdvancedInspector
+{
+ public class VectorEditor : FieldEditor
+ {
+ public override bool Expandable
+ {
+ get { return false; }
+ }
+
+ public override Type[] EditedTypes
+ {
+ get { return new Type[] { typeof(Vector2), typeof(Vector3), typeof(Vector4) }; }
+ }
+
+ public override void Draw(InspectorField field, GUIStyle style)
+ {
+ Type type = field.BaseType;
+
+ float width = EditorGUIUtility.labelWidth;
+ EditorGUIUtility.labelWidth = VECTOR_FIELD_WIDTH;
+
+ GUILayout.BeginHorizontal();
+ if (type == typeof(Vector2))
+ {
+ Vector2[] values = field.GetValues<Vector2>();
+
+ float[] x = new float[values.Length];
+ float[] y = new float[values.Length];
+
+ for (int i = 0; i < values.Length; i++)
+ {
+ x[i] = values[i].x;
+ y[i] = values[i].y;
+ }
+
+ float result;
+ if (FloatEditor.DrawFloat("X", x, style, out result))
+ {
+ Undo.RecordObjects(field.SerializedInstances, "Edit " + field.Name + " X");
+
+ for (int i = 0; i < field.Instances.Length; i++)
+ {
+ values[i].x = result;
+ field.SetValue(field.Instances[i], values[i]);
+ }
+ }
+
+ if (FloatEditor.DrawFloat("Y", y, style, out result))
+ {
+ Undo.RecordObjects(field.SerializedInstances, "Edit " + field.Name + " Y");
+
+ for (int i = 0; i < field.Instances.Length; i++)
+ {
+ values[i].y = result;
+ field.SetValue(field.Instances[i], values[i]);
+ }
+ }
+ }
+ else if (type == typeof(Vector3))
+ {
+ Vector3[] values = field.GetValues<Vector3>();
+
+ float[] x = new float[values.Length];
+ float[] y = new float[values.Length];
+ float[] z = new float[values.Length];
+
+ for (int i = 0; i < values.Length; i++)
+ {
+ x[i] = values[i].x;
+ y[i] = values[i].y;
+ z[i] = values[i].z;
+ }
+
+ float result;
+ if (FloatEditor.DrawFloat("X", x, style, out result))
+ {
+ Undo.RecordObjects(field.SerializedInstances, "Edit " + field.Name + " X");
+
+ for (int i = 0; i < field.Instances.Length; i++)
+ {
+ values[i].x = result;
+ field.SetValue(field.Instances[i], values[i]);
+ }
+ }
+
+ if (FloatEditor.DrawFloat("Y", y, style, out result))
+ {
+ Undo.RecordObjects(field.SerializedInstances, "Edit " + field.Name + " Y");
+
+ for (int i = 0; i < field.Instances.Length; i++)
+ {
+ values[i].y = result;
+ field.SetValue(field.Instances[i], values[i]);
+ }
+ }
+
+ if (FloatEditor.DrawFloat("Z", z, style, out result))
+ {
+ Undo.RecordObjects(field.SerializedInstances, "Edit " + field.Name + " Z");
+
+ for (int i = 0; i < field.Instances.Length; i++)
+ {
+ values[i].z = result;
+ field.SetValue(field.Instances[i], values[i]);
+ }
+ }
+ }
+ else if (type == typeof(Vector4))
+ {
+ Vector4[] values = field.GetValues<Vector4>();
+
+ float[] x = new float[values.Length];
+ float[] y = new float[values.Length];
+ float[] z = new float[values.Length];
+ float[] w = new float[values.Length];
+
+ for (int i = 0; i < values.Length; i++)
+ {
+ x[i] = values[i].x;
+ y[i] = values[i].y;
+ z[i] = values[i].z;
+ w[i] = values[i].w;
+ }
+
+ float result;
+ if (FloatEditor.DrawFloat("X", x, style, out result))
+ {
+ Undo.RecordObjects(field.SerializedInstances, "Edit " + field.Name + " X");
+
+ for (int i = 0; i < field.Instances.Length; i++)
+ {
+ values[i].x = result;
+ field.SetValue(field.Instances[i], values[i]);
+ }
+ }
+
+ if (FloatEditor.DrawFloat("Y", y, style, out result))
+ {
+ Undo.RecordObjects(field.SerializedInstances, "Edit " + field.Name + " Y");
+
+ for (int i = 0; i < field.Instances.Length; i++)
+ {
+ values[i].y = result;
+ field.SetValue(field.Instances[i], values[i]);
+ }
+ }
+
+ if (FloatEditor.DrawFloat("Z", z, style, out result))
+ {
+ Undo.RecordObjects(field.SerializedInstances, "Edit " + field.Name + " Z");
+
+ for (int i = 0; i < field.Instances.Length; i++)
+ {
+ values[i].z = result;
+ field.SetValue(field.Instances[i], values[i]);
+ }
+ }
+
+ if (FloatEditor.DrawFloat("W", w, style, out result))
+ {
+ Undo.RecordObjects(field.SerializedInstances, "Edit " + field.Name + " W");
+
+ for (int i = 0; i < field.Instances.Length; i++)
+ {
+ values[i].w = result;
+ field.SetValue(field.Instances[i], values[i]);
+ }
+ }
+ }
+ GUILayout.EndHorizontal();
+
+ EditorGUIUtility.labelWidth = width;
+ }
+
+ public override void OnContextualClick(InspectorField field, GenericMenu menu)
+ {
+ menu.AddItem(new GUIContent("Zero"), false, Zero);
+ menu.AddItem(new GUIContent("One"), false, One);
+
+ menu.AddSeparator("");
+ }
+
+ private void Zero()
+ {
+ if (AdvancedInspectorControl.Field.Type == typeof(Vector2))
+ AdvancedInspectorControl.Field.SetValue(Vector2.zero);
+ else if (AdvancedInspectorControl.Field.Type == typeof(Vector3))
+ AdvancedInspectorControl.Field.SetValue(Vector3.zero);
+ else if (AdvancedInspectorControl.Field.Type == typeof(Vector4))
+ AdvancedInspectorControl.Field.SetValue(Vector4.zero);
+ }
+
+ private void One()
+ {
+ if (AdvancedInspectorControl.Field.Type == typeof(Vector2))
+ AdvancedInspectorControl.Field.SetValue(Vector2.one);
+ else if (AdvancedInspectorControl.Field.Type == typeof(Vector3))
+ AdvancedInspectorControl.Field.SetValue(Vector3.one);
+ else if (AdvancedInspectorControl.Field.Type == typeof(Vector4))
+ AdvancedInspectorControl.Field.SetValue(Vector4.one);
+ }
+ }
+} \ No newline at end of file
diff --git a/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/VectorEditor.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/VectorEditor.cs.meta
new file mode 100644
index 00000000..79d8e5d8
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/FieldEditors/VectorEditor.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 851a4084094a34f439dc7c658c5343bb
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UniToolsEditor.XML b/Assets/Plugins/Editor/AdvancedInspector/UniToolsEditor.XML
new file mode 100644
index 00000000..51610453
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UniToolsEditor.XML
@@ -0,0 +1,453 @@
+<?xml version="1.0"?>
+<doc>
+ <assembly>
+ <name>UniToolsEditor</name>
+ </assembly>
+ <members>
+ <member name="T:UniToolsEditor.EditorResources">
+ <summary>
+ A strongly-typed resource class, for looking up localized strings, etc.
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.ResourceManager">
+ <summary>
+ Returns the cached ResourceManager instance used by this class.
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.Culture">
+ <summary>
+ Overrides the current thread's CurrentUICulture property for all
+ resource lookups using this strongly typed resource class.
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.Add">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.AlphaOrder">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.AntiAlphaOrder">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.Box_Empty">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.BoxFlat">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.BoxFlat_Pro">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.BoxFlat_Title">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.BoxFlat_TitlePro">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.BoxRound">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.BoxRound_Pro">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.BoxRound_Title">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.BoxRound_TitlePro">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.Calendar">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.Capsule">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.Check">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.Checkbox_Back_Idle">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.Checkbox_Back_Pressed">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.Checkbox_Check">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.CheckpointHead">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.CheckpointLine">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.CheckpointPersistant">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.ClipBackground">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.Connected">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.Cross">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.Cube">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.Cylinder">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.Delete">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.Directory">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.Disconnected">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.Drag">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.Drag_Light">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.Edit">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.EditorBackground">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.ExtendBot">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.ExtendBotPro">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.ExtendTop">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.ExtendTopPro">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.Favorited">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.File">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.FolderClosed">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.FolderOpen">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.Hidden">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.Hierarchy">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.Hourglass">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.Jump">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.Knob">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.KnobBack">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.Length">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.Locked">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.Logo">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.MoveDown">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.MoveEmpty">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.MoveUp">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.NoOrder">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.NotFavorited">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.Package">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.Picker">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.PickerCursor">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.PickerPro">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.PreviewLight1">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.PreviewLight2">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.PreviewLight3">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.Refresh">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.Save">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.SaveProject">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.SaveScene">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.Scene">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.ScrollDown">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.ScrollLeft">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.ScrollLeft_Light">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.ScrollRight">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.ScrollRight_Light">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.ScrollUp">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.SeparatorHorizontal">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.SeparatorVertical">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.Sphere">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.Unlocked">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.Visible">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="P:UniToolsEditor.EditorResources.White">
+ <summary>
+ Looks up a localized resource of type System.Byte[].
+ </summary>
+ </member>
+ <member name="T:UniToolsEditor.Helper">
+ <summary>
+ Collection of static helping method.
+ </summary>
+ </member>
+ <member name="M:UniToolsEditor.Helper.Load(System.String)">
+ <summary>
+ Load a binary file (ex.: from a .resx file) and covert it to a Unity Texture2D
+ This one is generally used when a non-editor script requires a texture.
+ It is requested by a the TextureRequest event.
+ </summary>
+ <param name="name">The name of the embedded resource.</param>
+ <returns>A UnityEngine.Texture</returns>
+ </member>
+ <member name="M:UniToolsEditor.Helper.Load(System.Byte[])">
+ <summary>
+ Load a binary file (ex.: from a .resx file) and covert it to a Unity Texture2D
+ </summary>
+ <param name="binary">The binary resources.</param>
+ <returns>A UnityEngine.Texture</returns>
+ </member>
+ <member name="M:UniToolsEditor.Helper.DrawColor(UnityEngine.Rect,UnityEngine.Color)">
+ <summary>
+ Similar to GUI.DrawTexture, but draw a color instead.
+ </summary>
+ <param name="rect">Region to draw.</param>
+ <param name="color">The color of the draw call.</param>
+ </member>
+ <member name="P:UniToolsEditor.Helper.White">
+ <summary>
+ A fully white texture.
+ Usually used by the DrawColor method.
+ </summary>
+ </member>
+ </members>
+</doc>
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UniToolsEditor.XML.meta b/Assets/Plugins/Editor/AdvancedInspector/UniToolsEditor.XML.meta
new file mode 100644
index 00000000..9a50f739
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UniToolsEditor.XML.meta
@@ -0,0 +1,4 @@
+fileFormatVersion: 2
+guid: 963a7470a10df4e46acea0b0b709948e
+TextScriptImporter:
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UniToolsEditor.dll b/Assets/Plugins/Editor/AdvancedInspector/UniToolsEditor.dll
new file mode 100644
index 00000000..93c50a83
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UniToolsEditor.dll
Binary files differ
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UniToolsEditor.dll.meta b/Assets/Plugins/Editor/AdvancedInspector/UniToolsEditor.dll.meta
new file mode 100644
index 00000000..9d4c7893
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UniToolsEditor.dll.meta
@@ -0,0 +1,33 @@
+fileFormatVersion: 2
+guid: 45d0940e8e0f52a44876009e88edec75
+PluginImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ iconMap: {}
+ executionOrder: {}
+ defineConstraints: []
+ isPreloaded: 0
+ isOverridable: 0
+ isExplicitlyReferenced: 0
+ validateReferences: 1
+ platformData:
+ - first:
+ Any:
+ second:
+ enabled: 0
+ settings: {}
+ - first:
+ Editor: Editor
+ second:
+ enabled: 1
+ settings:
+ DefaultValueInitialized: true
+ - first:
+ Windows Store Apps: WindowsStoreApps
+ second:
+ enabled: 0
+ settings:
+ CPU: AnyCPU
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UniToolsEditor.pdb b/Assets/Plugins/Editor/AdvancedInspector/UniToolsEditor.pdb
new file mode 100644
index 00000000..09f3307e
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UniToolsEditor.pdb
Binary files differ
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UniToolsEditor.pdb.meta b/Assets/Plugins/Editor/AdvancedInspector/UniToolsEditor.pdb.meta
new file mode 100644
index 00000000..ab678cfb
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UniToolsEditor.pdb.meta
@@ -0,0 +1,4 @@
+fileFormatVersion: 2
+guid: 6c3bf347a80d91c45a5aa19d41a1c61c
+DefaultImporter:
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes.meta b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes.meta
new file mode 100644
index 00000000..8a5877f3
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes.meta
@@ -0,0 +1,5 @@
+fileFormatVersion: 2
+guid: d41f8a83848329147be650112ba92e02
+folderAsset: yes
+DefaultImporter:
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/AnchoredJoint2DEditor.cs b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/AnchoredJoint2DEditor.cs
new file mode 100644
index 00000000..af18303f
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/AnchoredJoint2DEditor.cs
@@ -0,0 +1,76 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Reflection;
+
+using UnityEditor;
+using UnityEngine;
+
+namespace AdvancedInspector
+{
+ [CanEditMultipleObjects]
+ public class AnchoredJoint2DEditor : Joint2DEditor
+ {
+ private const float snapDistance = 0.13f;
+ private AnchoredJoint2D anchorJoint2D;
+
+ protected override void RefreshFields()
+ {
+ base.RefreshFields();
+ Type type = typeof(AnchoredJoint2D);
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("anchor"),
+ new DescriptorAttribute("Anchor", "The joint's anchor point on the object that has the joint component.", "http://docs.unity3d.com/ScriptReference/AnchoredJoint2D-anchor.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("connectedAnchor"),
+ new DescriptorAttribute("Connected Anchor", "The joint's anchor point on the second object (ie, the one which doesn't have the joint component).", "http://docs.unity3d.com/ScriptReference/AnchoredJoint2D-connectedAnchor.html")));
+ }
+
+ protected override void OnSceneGUI()
+ {
+ anchorJoint2D = (AnchoredJoint2D)target;
+ Vector3 v1 = TransformPoint(anchorJoint2D.transform, anchorJoint2D.anchor);
+ Vector3 v2 = anchorJoint2D.connectedAnchor;
+
+ if (anchorJoint2D.connectedBody)
+ v2 = TransformPoint(anchorJoint2D.connectedBody.transform, v2);
+
+ Vector3 v3 = v1 + (v2 - v1).normalized * HandleUtility.GetHandleSize(v1) * 0.1f;
+ Handles.color = Color.green;
+ Handles.DrawAAPolyLine(new Vector3[] { v3, v2 });
+
+ if (HandleAnchor(ref v2, true))
+ {
+ v2 = SnapToSprites(v2);
+ v2 = SnapToPoint(v2, v1, 0.13f);
+ if (anchorJoint2D.connectedBody)
+ v2 = InverseTransformPoint(anchorJoint2D.connectedBody.transform, v2);
+
+ Undo.RecordObject(anchorJoint2D, "Move Connected Anchor");
+ anchorJoint2D.connectedAnchor = v2;
+ }
+
+ if (HandleAnchor(ref v1, false))
+ {
+ v1 = SnapToSprites(v1);
+ v1 = SnapToPoint(v1, v2, 0.13f);
+
+ Undo.RecordObject(anchorJoint2D, "Move Anchor");
+ anchorJoint2D.anchor = InverseTransformPoint(anchorJoint2D.transform, v1);
+ }
+ }
+
+ private Vector3 SnapToSprites(Vector3 position)
+ {
+ SpriteRenderer component = anchorJoint2D.GetComponent<SpriteRenderer>();
+ position = SnapToSprite(component, position, 0.13f);
+
+ if (anchorJoint2D.connectedBody)
+ {
+ component = anchorJoint2D.connectedBody.GetComponent<SpriteRenderer>();
+ position = SnapToSprite(component, position, 0.13f);
+ }
+
+ return position;
+ }
+ }
+} \ No newline at end of file
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/AnchoredJoint2DEditor.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/AnchoredJoint2DEditor.cs.meta
new file mode 100644
index 00000000..e4bfde48
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/AnchoredJoint2DEditor.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 92274081a60084d499072975be2ef644
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/AnimationEditor.cs b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/AnimationEditor.cs
new file mode 100644
index 00000000..6a9783bf
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/AnimationEditor.cs
@@ -0,0 +1,85 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+
+using UnityEditor;
+using UnityEngine;
+
+namespace AdvancedInspector
+{
+ [CanEditMultipleObjects]
+ [CustomEditor(typeof(Animation), true)]
+ public class AnimationEditor : InspectorEditor
+ {
+ private static readonly int hash = "AnimationBoundsEditorHash".GetHashCode();
+ private object boxEditor;
+ private MethodInfo edit;
+ private MethodInfo set;
+ private Color handleColor = new Color(1, 1, 1, 0.6f);
+
+ protected override void OnEnable()
+ {
+ base.OnEnable();
+
+ Type box = TypeUtility.GetTypeByName("BoxEditor");
+ boxEditor = Activator.CreateInstance(box, true, hash);
+ edit = box.GetMethod("OnSceneGUI", new Type[] { typeof(Transform), typeof(Color), typeof(Vector3).MakeByRefType(), typeof(Vector3).MakeByRefType() });
+ set = box.GetMethod("SetAlwaysDisplayHandles");
+ }
+
+ protected override void RefreshFields()
+ {
+ Type type = typeof(Animation);
+ if (Instances == null || Instances.Length == 0)
+ return;
+
+ SerializedObject so = new SerializedObject(Instances.Cast<UnityEngine.Object>().ToArray());
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("clip"),
+ new DescriptorAttribute("Animation", "The default animation.", "http://docs.unity3d.com/ScriptReference/Animation-clip.html")));
+ fields.Add(new InspectorField(type, Instances, so.FindProperty("m_Animations"),
+ new DescriptorAttribute("Animations", "")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("playAutomatically"),
+ new DescriptorAttribute("Play Automatically", "Should the default animation clip (Animation.clip) automatically start playing on startup.", "http://docs.unity3d.com/ScriptReference/Animation-playAutomatically.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("animatePhysics"),
+ new DescriptorAttribute("Animate Physic", "When turned on, animations will be executed in the physics loop. This is only useful in conjunction with kinematic rigidbodies.", "http://docs.unity3d.com/ScriptReference/Animation-animatePhysics.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("cullingType"),
+ new DescriptorAttribute("Culling Type", "Controls culling of this Animation component.", "http://docs.unity3d.com/ScriptReference/Animation-cullingType.html")));
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("isPlaying"), new InspectAttribute(InspectorLevel.Advanced),
+ new DescriptorAttribute("Is Playing", "Are we playing any animations?", "http://docs.unity3d.com/ScriptReference/Animation-isPlaying.html")));
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("localBounds"), new InspectAttribute(InspectorLevel.Advanced),
+ new DescriptorAttribute("Bounds", "AABB of this Animation animation component in local space.", "http://docs.unity3d.com/ScriptReference/Animation-localBounds.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("wrapMode"), new InspectAttribute(InspectorLevel.Advanced),
+ new DescriptorAttribute("Wrap Mode", "How should time beyond the playback range of the clip be treated?", "http://docs.unity3d.com/ScriptReference/Animation-wrapMode.html")));
+
+ }
+
+ protected override void OnSceneGUI()
+ {
+ Animation animation = (Animation)target;
+
+ if ((animation != null) && ((animation.cullingType == AnimationCullingType.BasedOnClipBounds) || (animation.cullingType == AnimationCullingType.BasedOnUserBounds)))
+ {
+ set.Invoke(boxEditor, new object[] { animation.cullingType == AnimationCullingType.BasedOnUserBounds });
+ Bounds localBounds = animation.localBounds;
+ Vector3 center = localBounds.center;
+ Vector3 size = localBounds.size;
+
+ object[] arguments = new object[] { animation.transform, handleColor, center, size };
+
+ if ((bool)edit.Invoke(boxEditor, arguments))
+ {
+ center = (Vector3)arguments[2];
+ size = (Vector3)arguments[3];
+
+ Undo.RecordObject(animation, "Modified Animation bounds");
+ animation.localBounds = new Bounds(center, size);
+ }
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/AnimationEditor.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/AnimationEditor.cs.meta
new file mode 100644
index 00000000..2a887671
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/AnimationEditor.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 39152dbad278fc841bed6ccf81404831
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/AnimatorEditor.cs b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/AnimatorEditor.cs
new file mode 100644
index 00000000..eabe711c
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/AnimatorEditor.cs
@@ -0,0 +1,117 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Reflection;
+
+using UnityEditor;
+using UnityEngine;
+
+namespace AdvancedInspector
+{
+ [CanEditMultipleObjects]
+ [CustomEditor(typeof(Animator), true)]
+ public class AnimatorEditor : InspectorEditor
+ {
+ protected override void RefreshFields()
+ {
+ Type type = typeof(Animator);
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("runtimeAnimatorController"), new HelpAttribute(new HelpAttribute.HelpDelegate(HelpController)),
+ new DescriptorAttribute("Controller", "The runtime representation of AnimatorController that controls the Animator.", "http://docs.unity3d.com/ScriptReference/Animator-runtimeAnimatorController.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("avatar"),
+ new DescriptorAttribute("Avatar", "Gets/Sets the current Avatar.", "http://docs.unity3d.com/ScriptReference/Animator-avatar.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("applyRootMotion"),
+ new DescriptorAttribute("Apply Root Motion", "Should root motion be applied?", "http://docs.unity3d.com/ScriptReference/Animator-applyRootMotion.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("updateMode"),
+ new DescriptorAttribute("Update Mode", "Specifies the update mode of the Animator.", "http://docs.unity3d.com/ScriptReference/Animator-updateMode.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("cullingMode"),
+ new DescriptorAttribute("Culling Mode", "Controls culling of this Animator component.", "http://docs.unity3d.com/ScriptReference/Animator-cullingMode.html")));
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("fireEvents"), new InspectAttribute(InspectorLevel.Advanced),
+ new DescriptorAttribute("Fire Events", "If true, the animation track fires their event.", "")));
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("logWarnings"), new InspectAttribute(InspectorLevel.Advanced),
+ new DescriptorAttribute("Log Warnings", "Log Animator internal warnings.", "")));
+
+ InspectorField transform = new InspectorField("Transform");
+
+ transform.Fields.Add(new InspectorField(type, Instances, type.GetProperty("speed"), new InspectAttribute(InspectorLevel.Advanced),
+ new DescriptorAttribute("Speed", "The playback speed of the Animator. 1 is normal playback speed.", "http://docs.unity3d.com/ScriptReference/Animator-speed.html")));
+ transform.Fields.Add(new InspectorField(type, Instances, type.GetProperty("bodyPosition"), new InspectAttribute(InspectorLevel.Advanced), new ReadOnlyAttribute(),
+ new DescriptorAttribute("Body Position", "The position of the body center of mass.", "http://docs.unity3d.com/ScriptReference/Animator-bodyPosition.html")));
+ transform.Fields.Add(new InspectorField(type, Instances, type.GetProperty("rootPosition"), new InspectAttribute(InspectorLevel.Advanced), new ReadOnlyAttribute(),
+ new DescriptorAttribute("Root Position", "The root position, the position of the game object.", "http://docs.unity3d.com/ScriptReference/Animator-rootPosition.html")));
+ transform.Fields.Add(new InspectorField(type, Instances, type.GetProperty("bodyRotation"), new InspectAttribute(InspectorLevel.Advanced), new ReadOnlyAttribute(),
+ new DescriptorAttribute("Body Rotation", "The rotation of the body center of mass.", "http://docs.unity3d.com/ScriptReference/Animator-bodyRotation.html")));
+ transform.Fields.Add(new InspectorField(type, Instances, type.GetProperty("rootRotation"), new InspectAttribute(InspectorLevel.Advanced), new ReadOnlyAttribute(),
+ new DescriptorAttribute("Root Rotation", "The root rotation, the rotation of the game object.", "http://docs.unity3d.com/ScriptReference/Animator-rootRotation.html")));
+
+ transform.Fields.Add(new InspectorField(type, Instances, type.GetProperty("targetPosition"), new InspectAttribute(InspectorLevel.Debug),
+ new DescriptorAttribute("Target Position", "Returns the position of the target specified by SetTarget(AvatarTarget targetIndex, float targetNormalizedTime)).", "http://docs.unity3d.com/ScriptReference/Animator-targetPosition.html")));
+ transform.Fields.Add(new InspectorField(type, Instances, type.GetProperty("targetRotation"), new InspectAttribute(InspectorLevel.Debug),
+ new DescriptorAttribute("Target Rotation", "Returns the rotation of the target specified by SetTarget(AvatarTarget targetIndex, float targetNormalizedTime)).", "http://docs.unity3d.com/ScriptReference/Animator-targetRotation.html")));
+
+ transform.Fields.Add(new InspectorField(type, Instances, type.GetProperty("deltaPosition"), new InspectAttribute(InspectorLevel.Debug),
+ new DescriptorAttribute("Delta Position", "Gets the avatar delta position for the last evaluated frame.", "http://docs.unity3d.com/ScriptReference/Animator-deltaPosition.html")));
+ transform.Fields.Add(new InspectorField(type, Instances, type.GetProperty("deltaRotation"), new InspectAttribute(InspectorLevel.Debug),
+ new DescriptorAttribute("Delta Rotation", "Gets the avatar delta rotation for the last evaluated frame.", "http://docs.unity3d.com/ScriptReference/Animator-deltaRotation.html")));
+
+ transform.Fields.Add(new InspectorField(type, Instances, type.GetProperty("pivotPosition"), new InspectAttribute(InspectorLevel.Debug),
+ new DescriptorAttribute("Pivot Position", "Get the current position of the pivot.", "http://docs.unity3d.com/ScriptReference/Animator-pivotPosition.html")));
+ transform.Fields.Add(new InspectorField(type, Instances, type.GetProperty("pivotWeight"), new InspectAttribute(InspectorLevel.Debug),
+ new DescriptorAttribute("Pivot Weight", "Gets the pivot weight.", "http://docs.unity3d.com/ScriptReference/Animator-pivotWeight.html")));
+
+ InspectorField feet = new InspectorField("Feet");
+
+ feet.Fields.Add(new InspectorField(type, Instances, type.GetProperty("layersAffectMassCenter"), new InspectAttribute(InspectorLevel.Advanced),
+ new DescriptorAttribute("Layers Affect Mass Center", "", "")));
+ feet.Fields.Add(new InspectorField(type, Instances, type.GetProperty("feetPivotActive"), new InspectAttribute(InspectorLevel.Advanced),
+ new DescriptorAttribute("Feet Pivot", "Blends pivot point between body center of mass and feet pivot. At 0%, the blending point is body center of mass. At 100%, the blending point is feet pivot.", "http://docs.unity3d.com/ScriptReference/Animator-feetPivotActive.html")));
+ feet.Fields.Add(new InspectorField(type, Instances, type.GetProperty("stabilizeFeet"), new InspectAttribute(InspectorLevel.Advanced),
+ new DescriptorAttribute("Stabilize Feet", "Automatic stabilization of feet during transition and blending.", "http://docs.unity3d.com/ScriptReference/Animator-stabilizeFeet.html")));
+ feet.Fields.Add(new InspectorField(type, Instances, type.GetProperty("leftFeetBottomHeight"), new InspectAttribute(InspectorLevel.Debug),
+ new DescriptorAttribute("Left Feet Bottom Height", "Get left foot bottom height.", "http://docs.unity3d.com/ScriptReference/Animator-leftFeetBottomHeight.html")));
+ feet.Fields.Add(new InspectorField(type, Instances, type.GetProperty("rightFeetBottomHeight"), new InspectAttribute(InspectorLevel.Debug),
+ new DescriptorAttribute("Right Feet Bottom Height", "Get right foot bottom height.", "http://docs.unity3d.com/ScriptReference/Animator-rightFeetBottomHeight.html")));
+
+ InspectorField debug = new InspectorField("Debug");
+
+ debug.Fields.Add(new InspectorField(type, Instances, type.GetProperty("gravityWeight"), new InspectAttribute(InspectorLevel.Debug),
+ new DescriptorAttribute("Gravity Weight", "The current gravity weight based on current animations that are played.", "http://docs.unity3d.com/ScriptReference/Animator-gravityWeight.html")));
+ debug.Fields.Add(new InspectorField(type, Instances, type.GetProperty("hasRootMotion"), new InspectAttribute(InspectorLevel.Debug),
+ new DescriptorAttribute("Has Root Motion", "Returns true if the current rig has root motion.", "http://docs.unity3d.com/ScriptReference/Animator-hasRootMotion.html")));
+ debug.Fields.Add(new InspectorField(type, Instances, type.GetProperty("hasTransformHierarchy"), new InspectAttribute(InspectorLevel.Debug),
+ new DescriptorAttribute("Has Tranform Hierarchy", "Returns true if the object has a transform hierarchy.", "http://docs.unity3d.com/ScriptReference/Animator-hasTransformHierarchy.html")));
+ debug.Fields.Add(new InspectorField(type, Instances, type.GetProperty("humanScale"), new InspectAttribute(InspectorLevel.Debug),
+ new DescriptorAttribute("Human Scale", "Returns the scale of the current Avatar for a humanoid rig, (1 by default if the rig is generic).", "http://docs.unity3d.com/ScriptReference/Animator-humanScale.html")));
+ debug.Fields.Add(new InspectorField(type, Instances, type.GetProperty("isHuman"), new InspectAttribute(InspectorLevel.Debug),
+ new DescriptorAttribute("Is Human", "Returns true if the current rig is humanoid, false if it is generic.", "http://docs.unity3d.com/ScriptReference/Animator-isHuman.html")));
+ debug.Fields.Add(new InspectorField(type, Instances, type.GetProperty("isMatchingTarget"), new InspectAttribute(InspectorLevel.Debug),
+ new DescriptorAttribute("Is Matching Target", "If automatic matching is active.", "http://docs.unity3d.com/ScriptReference/Animator-isMatchingTarget.html")));
+ debug.Fields.Add(new InspectorField(type, Instances, type.GetProperty("isOptimizable"), new InspectAttribute(InspectorLevel.Debug),
+ new DescriptorAttribute("Is Optimizable", "Returns true if the current rig is optimizable with AnimatorUtility.OptimizeTransformHierarchy.", "http://docs.unity3d.com/ScriptReference/Animator-isOptimizable.html")));
+ debug.Fields.Add(new InspectorField(type, Instances, type.GetProperty("layerCount"), new InspectAttribute(InspectorLevel.Debug),
+ new DescriptorAttribute("Layer Count", "The AnimatorController layer count.", "http://docs.unity3d.com/ScriptReference/Animator-layerCount.html")));
+
+ fields.Add(transform);
+ fields.Add(feet);
+ fields.Add(debug);
+ }
+
+ private HelpAttribute HelpController()
+ {
+ foreach (object instance in Instances)
+ {
+ Animator animator = instance as Animator;
+
+ if (animator == null)
+ continue;
+
+ if (animator.runtimeAnimatorController == null)
+ return new HelpAttribute(HelpType.Error, "The Animator requires a controller to work.");
+ }
+
+ return null;
+ }
+ }
+} \ No newline at end of file
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/AnimatorEditor.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/AnimatorEditor.cs.meta
new file mode 100644
index 00000000..8ca688a1
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/AnimatorEditor.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: b9f314ed08707a14daa8524b1f18c511
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/BoxColliderEditor.cs b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/BoxColliderEditor.cs
new file mode 100644
index 00000000..99dffeb8
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/BoxColliderEditor.cs
@@ -0,0 +1,70 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Reflection;
+
+using UnityEditor;
+using UnityEngine;
+
+namespace AdvancedInspector
+{
+ [CanEditMultipleObjects]
+ [CustomEditor(typeof(BoxCollider), true)]
+ public class BoxColliderEditor : ColliderEditor
+ {
+ private static readonly int hash = "BoxColliderEditor".GetHashCode();
+ private object boxEditor;
+ private MethodInfo edit;
+
+ protected override void OnEnable()
+ {
+ base.OnEnable();
+
+ Type box = TypeUtility.GetTypeByName("BoxEditor");
+ boxEditor = Activator.CreateInstance(box, true, hash);
+ edit = box.GetMethod("OnSceneGUI", new Type[] { typeof(Transform), typeof(Color), typeof(Vector3).MakeByRefType(), typeof(Vector3).MakeByRefType() });
+ }
+
+ protected override void RefreshFields()
+ {
+ Type type = typeof(BoxCollider);
+
+ base.RefreshFields();
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("center"),
+ new DescriptorAttribute("Center", "The center of the box, measured in the object's local space.", "http://docs.unity3d.com/ScriptReference/BoxCollider-center.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("size"),
+ new DescriptorAttribute("Size", "The size of the box, measured in the object's local space.", "http://docs.unity3d.com/ScriptReference/BoxCollider-size.html")));
+ }
+
+ protected override void OnSceneGUI()
+ {
+ base.OnSceneGUI();
+
+ if (Event.current.type == EventType.Used)
+ return;
+
+ BoxCollider boxCollider = (BoxCollider)target;
+ Vector3 center = boxCollider.center;
+ Vector3 size = boxCollider.size;
+ Color color = ColliderHandleColor;
+
+ if (!boxCollider.enabled)
+ {
+ color = ColliderHandleColorDisabled;
+ }
+
+ object[] arguments = new object[] { boxCollider.transform, color, center, size };
+
+ if ((bool)edit.Invoke(boxEditor, arguments))
+ {
+ center = (Vector3)arguments[2];
+ size = (Vector3)arguments[3];
+
+ Undo.RecordObject(boxCollider, "Modified Box Collider");
+ boxCollider.center = center;
+ boxCollider.size = size;
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/BoxColliderEditor.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/BoxColliderEditor.cs.meta
new file mode 100644
index 00000000..09c7191b
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/BoxColliderEditor.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: f68ddc25c79b9d741b18bac5986fc4f4
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/CameraEditor.cs b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/CameraEditor.cs
new file mode 100644
index 00000000..03b2b55b
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/CameraEditor.cs
@@ -0,0 +1,268 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.IO;
+using System.Reflection;
+
+using UnityEditor;
+using UnityEngine;
+
+namespace AdvancedInspector
+{
+ [CanEditMultipleObjects]
+ [CustomEditor(typeof(Camera), true)]
+ public class CameraEditor : InspectorEditor
+ {
+ private Rect[] rects;
+ private Camera camera;
+
+ private SceneView view = null;
+
+ public Vector2 screenshotResolution = new Vector2();
+
+ protected override void RefreshFields()
+ {
+ Type type = typeof(Camera);
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("clearFlags"),
+ new DescriptorAttribute("Clear Flag", "How the camera clears the background.", "http://docs.unity3d.com/ScriptReference/Camera-clearFlags.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("backgroundColor"), new InspectAttribute(new InspectAttribute.InspectDelegate(ShowBackground)),
+ new DescriptorAttribute("Background Color", "The color with which the screen will be cleared.", "http://docs.unity3d.com/ScriptReference/Camera-backgroundColor.html")));
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("cullingMask"), new FieldEditorAttribute("LayerMaskEditor"),
+ new DescriptorAttribute("Culling Mask", "This is used to render parts of the scene selectively.", "http://docs.unity3d.com/ScriptReference/Camera-cullingMask.html")));
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("orthographic"), new RestrictAttribute(new RestrictAttribute.RestrictDelegate(Projection)),
+ new DescriptorAttribute("Orthographic", "Is the camera orthographic (true) or perspective (false)?", "http://docs.unity3d.com/ScriptReference/Camera-orthographic.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("orthographicSize"), new InspectAttribute(new InspectAttribute.InspectDelegate(IsOrthographic)),
+ new DescriptorAttribute("Size", "Camera's half-size when in orthographic mode.", "http://docs.unity3d.com/ScriptReference/Camera-orthographicSize.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("fieldOfView"), new InspectAttribute(new InspectAttribute.InspectDelegate(IsFieldOfView)),
+ new RangeValueAttribute(1, 179), new DescriptorAttribute("Field Of View", "The field of view of the camera in degrees.", "http://docs.unity3d.com/ScriptReference/Camera-fieldOfView.html")));
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("nearClipPlane"),
+ new DescriptorAttribute("Near Clip", "The near clipping plane distance.", "http://docs.unity3d.com/ScriptReference/Camera-nearClipPlane.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("farClipPlane"),
+ new DescriptorAttribute("Far Clip", "The far clipping plane distance.", "http://docs.unity3d.com/ScriptReference/Camera-farClipPlane.html")));
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("rect"),
+ new DescriptorAttribute("Viewport Rect", "Where on the screen is the camera rendered in normalized coordinates.", "http://docs.unity3d.com/ScriptReference/Camera-rect.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("depth"),
+ new DescriptorAttribute("Depth", "Camera's depth in the camera rendering order.", "http://docs.unity3d.com/ScriptReference/Camera-depth.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("renderingPath"), new HelpAttribute(new HelpAttribute.HelpDelegate(RenderingHelp)),
+ new DescriptorAttribute("Rendering Path", "Rendering path.", "http://docs.unity3d.com/ScriptReference/Camera-renderingPath.html")));
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("targetTexture"),
+ new DescriptorAttribute("Render Texture", "Destination render texture (Unity Pro only).", "http://docs.unity3d.com/ScriptReference/Camera-targetTexture.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("useOcclusionCulling"),
+ new DescriptorAttribute("Occlusion Culling", "Whether or not the Camera will use occlusion culling during rendering.", "http://docs.unity3d.com/ScriptReference/Camera-useOcclusionCulling.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("hdr"), new ReadOnlyAttribute(new ReadOnlyAttribute.ReadOnlyDelegate(IsHDRAvailable)),
+ new DescriptorAttribute("HDR", "High dynamic range rendering.", "http://docs.unity3d.com/ScriptReference/Camera-hdr.html")));
+
+ fields.Add(new InspectorField(null, new UnityEngine.Object[] { this }, new object[] { this }, this.GetType().GetMethod("TakeScreenshot"),
+ new Attribute[] { new InspectAttribute(InspectorLevel.Advanced) }));
+ fields.Add(new InspectorField(null, new UnityEngine.Object[] { this }, new object[] { this }, null, this.GetType().GetField("screenshotResolution"), false,
+ new Attribute[] { new InspectAttribute(InspectorLevel.Advanced) }));
+
+ // Debug
+ InspectorField debug = new InspectorField("Debug");
+ fields.Add(debug);
+
+ debug.Fields.Add(new InspectorField(type, Instances, type.GetProperty("aspect"), new InspectAttribute(InspectorLevel.Debug), new ReadOnlyAttribute(),
+ new DescriptorAttribute("Aspect Ratio", "The aspect ratio (width divided by height).", "http://docs.unity3d.com/ScriptReference/Camera-aspect.html")));
+ debug.Fields.Add(new InspectorField(type, Instances, type.GetProperty("clearStencilAfterLightingPass"), new InspectAttribute(InspectorLevel.Debug),
+ new DescriptorAttribute("Clear Stencil After Lighting", "Clear Stencil After Lighting Pass.")));
+ debug.Fields.Add(new InspectorField(type, Instances, type.GetProperty("depthTextureMode"), new InspectAttribute(InspectorLevel.Debug),
+ new DescriptorAttribute("Depth Texture Mode", "How and if camera generates a depth texture.", "http://docs.unity3d.com/ScriptReference/Camera-depthTextureMode.html")));
+ debug.Fields.Add(new InspectorField(type, Instances, type.GetProperty("eventMask"), new InspectAttribute(InspectorLevel.Debug),
+ new DescriptorAttribute("Event Mask", "Mask to select which layers can trigger events on the camera.", "http://docs.unity3d.com/ScriptReference/Camera-eventMask.html")));
+ debug.Fields.Add(new InspectorField(type, Instances, type.GetProperty("layerCullDistances"), new InspectAttribute(InspectorLevel.Debug), new CollectionAttribute(0),
+ new DescriptorAttribute("Layer Cull Distances", "Per-layer culling distances.", "http://docs.unity3d.com/ScriptReference/Camera-layerCullDistances.html")));
+ debug.Fields.Add(new InspectorField(type, Instances, type.GetProperty("layerCullSpherical"), new InspectAttribute(InspectorLevel.Debug),
+ new DescriptorAttribute("Layer Cull Spherical", "How to perform per-layer culling for a Camera.", "http://docs.unity3d.com/ScriptReference/Camera-layerCullSpherical.html")));
+ debug.Fields.Add(new InspectorField(type, Instances, type.GetProperty("pixelRect"), new InspectAttribute(InspectorLevel.Debug),
+ new DescriptorAttribute("Pixel Rect", "Where on the screen is the camera rendered in pixel coordinates.", "http://docs.unity3d.com/ScriptReference/Camera-pixelRect.html")));
+ debug.Fields.Add(new InspectorField(type, Instances, type.GetProperty("transparencySortMode"), new InspectAttribute(InspectorLevel.Debug),
+ new DescriptorAttribute("Transparency Sort Mode", "Transparent object sorting mode.", "http://docs.unity3d.com/ScriptReference/Camera-transparencySortMode.html")));
+
+ if (camera == null)
+ {
+ camera = EditorUtility.CreateGameObjectWithHideFlags("Preview Camera", HideFlags.HideAndDontSave, new Type[] { typeof(Camera) }).GetComponent<Camera>();
+ camera.enabled = false;
+ }
+
+ rects = new Rect[Instances.Length];
+
+ for (int i = 0; i < Instances.Length; i++)
+ rects[i] = new Rect(25, 25, 0, 0);
+ }
+
+ protected override void OnSceneGUI()
+ {
+ base.OnSceneGUI();
+
+ if (Event.current.type == EventType.Used)
+ return;
+
+ if (view != SceneView.currentDrawingSceneView)
+ InitPosition(SceneView.currentDrawingSceneView);
+
+ Handles.BeginGUI();
+
+ for (int i = 0; i < Instances.Length; i++)
+ {
+ Camera instance = Instances[i] as Camera;
+ rects[i] = GUILayout.Window(i, rects[i], DrawWindow, instance.name + " Preview");
+ }
+
+ Handles.EndGUI();
+ }
+
+ public void TakeScreenshot()
+ {
+ Camera camera = target as Camera;
+ if (camera == null)
+ return;
+
+ RenderTexture texture = RenderTexture.GetTemporary((int)screenshotResolution.x, (int)screenshotResolution.y);
+ camera.targetTexture = texture;
+ camera.Render();
+ camera.targetTexture = null;
+ RenderTexture.active = texture;
+
+ Texture2D image = new Texture2D((int)screenshotResolution.x, (int)screenshotResolution.y);
+ image.ReadPixels(new Rect(0, 0, (int)screenshotResolution.x, (int)screenshotResolution.y), 0, 0);
+ image.Apply();
+
+ RenderTexture.ReleaseTemporary(texture);
+ RenderTexture.active = null;
+
+ byte[] file = image.EncodeToPNG();
+
+ int count = 1;
+ string path;
+ while (true)
+ {
+ path = Application.dataPath + "/Screenshot_" + count.ToString() + ".png";
+ FileInfo info = new FileInfo(path);
+ if (!info.Exists)
+ break;
+
+ count++;
+ }
+
+ File.WriteAllBytes(path, file);
+ }
+
+ private void InitPosition(SceneView view)
+ {
+ this.view = view;
+
+ int offset = 45;
+ for (int i = 0; i < Instances.Length; i++)
+ {
+ Type gameView = TypeUtility.GetTypeByName("GameView");
+ MethodInfo info = gameView.GetMethod("GetSizeOfMainGameView", BindingFlags.Static | BindingFlags.NonPublic);
+ Vector2 camSize = (Vector2)info.Invoke(null, null);
+
+ int width = (int)(camSize.x * 0.25f);
+ int height = (int)(camSize.y * 0.25f);
+
+ rects[i] = new Rect(view.position.width - width - 25, view.position.height - height - offset, 0, 0);
+ offset += height + 35;
+ }
+ }
+
+ private void DrawWindow(int i)
+ {
+ Rect rect = SceneView.currentDrawingSceneView.camera.pixelRect;
+
+ Camera instance = Instances[i] as Camera;
+ Type gameView = TypeUtility.GetTypeByName("GameView");
+ MethodInfo info = gameView.GetMethod("GetSizeOfMainGameView", BindingFlags.Static | BindingFlags.NonPublic);
+ Vector2 camSize = (Vector2)info.Invoke(null, null);
+
+ int width = (int)(camSize.x * 0.25f);
+ int height = (int)(camSize.y * 0.25f);
+
+ camera.CopyFrom(instance);
+ camera.pixelRect = new Rect(rects[i].x + 5, rect.height - rects[i].y - (height), width, height);
+ camera.Render();
+ GUI.DragWindow();
+ GUI.Label(GUILayoutUtility.GetRect(width, height), "", GUIStyle.none);
+ }
+
+ private IList Projection()
+ {
+ List<object> list = new List<object>();
+ list.Add(new DescriptorPair(false, new DescriptorAttribute("Perspective", "")));
+ list.Add(new DescriptorPair(true, new DescriptorAttribute("Orthographic", "")));
+ return list;
+ }
+
+ private bool ShowBackground()
+ {
+ foreach (object instance in Instances)
+ {
+ Camera camera = instance as Camera;
+
+ if (camera == null)
+ continue;
+
+ if (camera.clearFlags == CameraClearFlags.Depth || camera.clearFlags == CameraClearFlags.Nothing)
+ return false;
+ }
+
+ return true;
+ }
+
+ private bool IsOrthographic()
+ {
+ foreach (object instance in Instances)
+ {
+ Camera camera = instance as Camera;
+ if (camera == null)
+ continue;
+
+ if (!camera.orthographic)
+ return false;
+ }
+
+ return true;
+ }
+
+ private bool IsFieldOfView()
+ {
+ foreach (object instance in Instances)
+ {
+ Camera camera = instance as Camera;
+ if (camera == null)
+ continue;
+
+ if (camera.orthographic)
+ return false;
+ }
+
+ return true;
+ }
+
+ private bool IsHDRAvailable()
+ {
+ return !UnityEditorInternal.InternalEditorUtility.HasPro();
+ }
+
+ private HelpAttribute RenderingHelp()
+ {
+ foreach (object instance in Instances)
+ {
+ Camera camera = instance as Camera;
+ if (camera == null)
+ return null;
+
+ if (camera.renderingPath == RenderingPath.DeferredLighting && !UnityEditorInternal.InternalEditorUtility.HasPro())
+ return new HelpAttribute(HelpType.Warning, "Deferred lighting requires Unity Pro.");
+ }
+
+ return null;
+ }
+ }
+} \ No newline at end of file
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/CameraEditor.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/CameraEditor.cs.meta
new file mode 100644
index 00000000..4aac20f8
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/CameraEditor.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 5065fd5b555113c46adf4c9bde73b526
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/CapsuleColliderEditor.cs b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/CapsuleColliderEditor.cs
new file mode 100644
index 00000000..cbfd761b
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/CapsuleColliderEditor.cs
@@ -0,0 +1,165 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Reflection;
+
+using UnityEditor;
+using UnityEngine;
+
+namespace AdvancedInspector
+{
+ [CanEditMultipleObjects]
+ [CustomEditor(typeof(CapsuleCollider), true)]
+ public class CapsuleColliderEditor : ColliderEditor
+ {
+ private int ControlID;
+
+ protected override void RefreshFields()
+ {
+ Type type = typeof(CapsuleCollider);
+
+ base.RefreshFields();
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("center"),
+ new DescriptorAttribute("Center", "The center of the capsule, measured in the object's local space.", "http://docs.unity3d.com/ScriptReference/CapsuleCollider-center.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("height"),
+ new DescriptorAttribute("Height", "The height of the capsule meased in the object's local space.", "http://docs.unity3d.com/ScriptReference/CapsuleCollider-height.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("radius"),
+ new DescriptorAttribute("Radius", "The radius of the sphere, measured in the object's local space.", "http://docs.unity3d.com/ScriptReference/CapsuleCollider-radius.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("direction"), new RestrictAttribute(new RestrictAttribute.RestrictDelegate(Direction)),
+ new DescriptorAttribute("Direction", "The direction of the capsule.", "http://docs.unity3d.com/ScriptReference/CapsuleCollider-direction.html")));
+ }
+
+ private List<DescriptorPair> Direction()
+ {
+ List<DescriptorPair> list = new List<DescriptorPair>();
+ foreach (AxisOrientation orientation in Enum.GetValues(typeof(AxisOrientation)))
+ list.Add(new DescriptorPair((int)orientation, new DescriptorAttribute(orientation.ToString(), "")));
+
+ return list;
+ }
+
+ private Vector3 CapsuleExtends(CapsuleCollider target)
+ {
+ return new Vector3(target.radius, target.height, target.radius) + target.center;
+ }
+
+ private Matrix4x4 CapsuleOrientation(CapsuleCollider target)
+ {
+ if (target.direction == (int)AxisOrientation.YAxis)
+ return Matrix4x4.TRS(target.transform.TransformPoint(target.center),
+ target.gameObject.transform.rotation, Vector3.one);
+ else if (target.direction == (int)AxisOrientation.XAxis)
+ return Matrix4x4.TRS(target.transform.TransformPoint(target.center),
+ target.transform.rotation * Quaternion.LookRotation(Vector3.up, Vector3.right), Vector3.one);
+ else
+ return Matrix4x4.TRS(target.transform.TransformPoint(target.center),
+ target.transform.rotation * Quaternion.LookRotation(Vector3.right, Vector3.forward), Vector3.one);
+ }
+
+ protected override void OnSceneGUI()
+ {
+ base.OnSceneGUI();
+
+ if (Event.current.type == EventType.Used)
+ return;
+
+ CapsuleCollider collider = (CapsuleCollider)target;
+
+ Color color = Handles.color;
+ if (collider.enabled)
+ Handles.color = ColliderHandleColor;
+ else
+ Handles.color = ColliderHandleColorDisabled;
+
+ bool enabled = GUI.enabled;
+ if (!Event.current.shift && GUIUtility.hotControl != ControlID)
+ {
+ GUI.enabled = false;
+ Handles.color = new Color(0f, 0f, 0f, 0.001f);
+ }
+
+ Vector3 capsuleExtents = CapsuleExtends(collider);
+ Matrix4x4 matrix = CapsuleOrientation(collider);
+
+ float y = capsuleExtents.y - collider.center.y - 1;
+ float x = capsuleExtents.x - collider.center.x;
+
+ int hotControl = GUIUtility.hotControl;
+ Vector3 localPos = Vector3.up * y;
+
+ float value = SizeHandle(localPos, Vector3.up, matrix);
+ if (!GUI.changed)
+ value = SizeHandle(-localPos, Vector3.down, matrix);
+
+ if (GUI.changed)
+ collider.height += value / y / collider.height;
+
+ value = SizeHandle(Vector3.left * x, Vector3.left, matrix);
+ if (!GUI.changed)
+ value = SizeHandle(-Vector3.left * x, -Vector3.left, matrix);
+
+ if (!GUI.changed)
+ value = SizeHandle(Vector3.forward * x, Vector3.forward, matrix);
+
+ if (!GUI.changed)
+ value = SizeHandle(-Vector3.forward * x, -Vector3.forward, matrix);
+
+ if (GUI.changed)
+ collider.radius += value / Mathf.Max(capsuleExtents.z / collider.radius, capsuleExtents.x / collider.radius);
+
+ if (hotControl != GUIUtility.hotControl && GUIUtility.hotControl != 0)
+ ControlID = GUIUtility.hotControl;
+
+ if (GUI.changed)
+ {
+ Undo.RecordObject(collider, "Edited Capsule Collider");
+ collider.radius = Mathf.Max(collider.radius, 0.001f);
+ collider.height = Mathf.Max(collider.height, 0.001f);
+ }
+
+ Handles.color = color;
+ GUI.enabled = enabled;
+ }
+
+ private float SizeHandle(Vector3 localPos, Vector3 localPullDir, Matrix4x4 matrix)
+ {
+ bool changed = GUI.changed;
+ GUI.changed = false;
+
+ Vector3 rhs = matrix.MultiplyVector(localPullDir);
+ Vector3 position = matrix.MultiplyPoint(localPos);
+ float handleSize = HandleUtility.GetHandleSize(position);
+
+ Color color = Handles.color;
+ float angle = Mathf.Cos(0.7853982f);
+
+ float dot;
+ if (Camera.current.orthographic)
+ dot = Vector3.Dot(-Camera.current.transform.forward, rhs);
+ else
+ dot = Vector3.Dot((Camera.current.transform.position - position).normalized, rhs);
+
+ if (dot < -angle)
+ Handles.color = new Color(Handles.color.r, Handles.color.g, Handles.color.b, Handles.color.a * 0.2f);
+
+ Vector3 point = Handles.Slider(position, rhs, handleSize * 0.03f, new Handles.DrawCapFunction(Handles.DotCap), 0f);
+
+ float result = 0f;
+ if (GUI.changed)
+ result = HandleUtility.PointOnLineParameter(point, position, rhs);
+
+ GUI.changed |= changed;
+ Handles.color = color;
+
+ return result;
+ }
+ }
+
+ public enum AxisOrientation
+ {
+ XAxis = 0,
+ YAxis = 1,
+ ZAxis = 2
+ }
+} \ No newline at end of file
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/CapsuleColliderEditor.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/CapsuleColliderEditor.cs.meta
new file mode 100644
index 00000000..f1ab81af
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/CapsuleColliderEditor.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: c1dcc8846c486e14cb8db81f231d4f59
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/CharacterControllerEditor.cs b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/CharacterControllerEditor.cs
new file mode 100644
index 00000000..6caab9a4
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/CharacterControllerEditor.cs
@@ -0,0 +1,151 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+
+using UnityEditor;
+using UnityEngine;
+
+namespace AdvancedInspector
+{
+ [CanEditMultipleObjects]
+ [CustomEditor(typeof(CharacterController), true)]
+ public class CharacterControllerEditor : InspectorEditor
+ {
+ private int controlID = -1;
+
+ private Color colliderHandleColor = new Color(145f, 244f, 139f, 210f) / 255f;
+ private Color colliderHandleColorDisabled = new Color(84f, 200f, 77f, 140f) / 255f;
+
+ protected override void RefreshFields()
+ {
+ Type type = typeof(CharacterController);
+ if (Instances == null || Instances.Length == 0)
+ return;
+
+ SerializedObject so = new SerializedObject(Instances.Cast<UnityEngine.Object>().ToArray());
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("slopeLimit"),
+ new DescriptorAttribute("Slope Limit", "The character controllers slope limit in degrees.", "http://docs.unity3d.com/ScriptReference/CharacterController-slopeLimit.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("stepOffset"),
+ new DescriptorAttribute("Step Offset", "The character controllers step offset in meters.", "http://docs.unity3d.com/ScriptReference/CharacterController-stepOffset.html")));
+ fields.Add(new InspectorField(type, Instances, so.FindProperty("m_SkinWidth"),
+ new DescriptorAttribute("Skin Width", "The thickness of the interpenetration of this capsule.", "")));
+ fields.Add(new InspectorField(type, Instances, so.FindProperty("m_MinMoveDistance"),
+ new DescriptorAttribute("Min Move Distance", "The smallest distance required for the character to move.", "")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("center"),
+ new DescriptorAttribute("Center", "The center of the character's capsule relative to the transform's position.", "http://docs.unity3d.com/ScriptReference/CharacterController-center.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("radius"),
+ new DescriptorAttribute("Radius", "The radius of the character's capsule.", "http://docs.unity3d.com/ScriptReference/CharacterController-radius.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("height"),
+ new DescriptorAttribute("Height", "The height of the character's capsule.", "http://docs.unity3d.com/ScriptReference/CharacterController-height.html")));
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("detectCollisions"), new InspectAttribute(InspectorLevel.Advanced),
+ new DescriptorAttribute("Detect Collisions", "Determines whether other rigidbodies or character controllers collide with this character controller (by default this is always enabled).", "http://docs.unity3d.com/ScriptReference/CharacterController-detectCollisions.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("isGrounded"), new InspectAttribute(InspectorLevel.Advanced),
+ new DescriptorAttribute("Is Grounded", "Was the CharacterController touching the ground during the last move?", "http://docs.unity3d.com/ScriptReference/CharacterController-isGrounded.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("collisionFlags"), new InspectAttribute(InspectorLevel.Advanced),
+ new DescriptorAttribute("Collision Flags", "What part of the capsule collided with the environment during the last CharacterController.Move call.", "http://docs.unity3d.com/ScriptReference/CharacterController-collisionFlags.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("velocity"), new InspectAttribute(InspectorLevel.Advanced),
+ new DescriptorAttribute("Velocity", "The current relative velocity of the Character (see notes).", "http://docs.unity3d.com/ScriptReference/CharacterController-velocity.html")));
+ }
+
+ protected override void OnSceneGUI()
+ {
+ bool flag = GUIUtility.hotControl == controlID;
+
+ CharacterController controller = (CharacterController)target;
+ Color color = Handles.color;
+
+ if (controller.enabled)
+ Handles.color = colliderHandleColor;
+ else
+ Handles.color = colliderHandleColorDisabled;
+
+ bool enabled = GUI.enabled;
+ if (!Event.current.shift && !flag)
+ {
+ GUI.enabled = false;
+ Handles.color = new Color(1f, 0f, 0f, 0.001f);
+ }
+
+ float height = controller.height * controller.transform.lossyScale.y;
+ float radius = controller.radius * Mathf.Max(controller.transform.lossyScale.x, controller.transform.lossyScale.z);
+
+ height = Mathf.Max(height, radius * 2f);
+
+ Matrix4x4 matrix = Matrix4x4.TRS(controller.transform.TransformPoint(controller.center), Quaternion.identity, Vector3.one);
+ Vector3 localPos = (Vector3.up * height) * 0.5f;
+
+ float size = SizeHandle(localPos, Vector3.up, matrix, true);
+ if (!GUI.changed)
+ size = SizeHandle(-localPos, Vector3.down, matrix, true);
+
+ size = SizeHandle((Vector3)(Vector3.left * radius), Vector3.left, matrix, true);
+ if (!GUI.changed)
+ size = SizeHandle((Vector3)(-Vector3.left * radius), -Vector3.left, matrix, true);
+
+ if (!GUI.changed)
+ size = SizeHandle((Vector3)(Vector3.forward * radius), Vector3.forward, matrix, true);
+
+ if (!GUI.changed)
+ size = SizeHandle((Vector3)(-Vector3.forward * radius), -Vector3.forward, matrix, true);
+
+ if (GUI.changed)
+ {
+ Undo.RecordObject(controller, "Character Controller Resize");
+
+ controller.radius += size / (radius / controller.radius);
+ controller.height += size / (height / controller.height);
+
+ controller.radius = Mathf.Max(controller.radius, 1E-05f);
+ controller.height = Mathf.Max(controller.height, 1E-05f);
+ }
+
+ int hotControl = GUIUtility.hotControl;
+ if ((hotControl != GUIUtility.hotControl) && (GUIUtility.hotControl != 0))
+ controlID = GUIUtility.hotControl;
+
+ Handles.color = color;
+ GUI.enabled = enabled;
+ }
+
+ private static float SizeHandle(Vector3 localPos, Vector3 localPullDir, Matrix4x4 matrix, bool isEdgeHandle)
+ {
+ Vector3 rhs = matrix.MultiplyVector(localPullDir);
+ Vector3 position = matrix.MultiplyPoint(localPos);
+ float handleSize = HandleUtility.GetHandleSize(position);
+ bool changed = GUI.changed;
+ GUI.changed = false;
+ Color color = Handles.color;
+
+ float edge = 0f;
+ if (isEdgeHandle)
+ edge = Mathf.Cos(0.7853982f);
+
+ float dot;
+
+ if (Camera.current.orthographic)
+ dot = Vector3.Dot(-Camera.current.transform.forward, rhs);
+ else
+ {
+ Vector3 vector4 = Camera.current.transform.position - position;
+ dot = Vector3.Dot(vector4.normalized, rhs);
+ }
+
+ if (dot < -edge)
+ Handles.color = new Color(Handles.color.r, Handles.color.g, Handles.color.b, Handles.color.a * 0.2f);
+
+ Vector3 point = Handles.Slider(position, rhs, handleSize * 0.03f, new Handles.DrawCapFunction(Handles.DotCap), 0f);
+
+ float distance = 0f;
+ if (GUI.changed)
+ distance = HandleUtility.PointOnLineParameter(point, position, rhs);
+
+ GUI.changed |= changed;
+ Handles.color = color;
+ return distance;
+ }
+ }
+} \ No newline at end of file
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/CharacterControllerEditor.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/CharacterControllerEditor.cs.meta
new file mode 100644
index 00000000..3a6a95fb
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/CharacterControllerEditor.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 9fc3a1df54ad5cf4a998c183ab2986a4
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/CharacterJointEditor.cs b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/CharacterJointEditor.cs
new file mode 100644
index 00000000..3cf6ad10
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/CharacterJointEditor.cs
@@ -0,0 +1,33 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Reflection;
+
+using UnityEditor;
+using UnityEngine;
+
+namespace AdvancedInspector
+{
+ [CanEditMultipleObjects]
+ [CustomEditor(typeof(CharacterJoint), true)]
+ public class CharacterJointEditor : JointEditor
+ {
+ protected override void RefreshFields()
+ {
+ base.RefreshFields();
+
+ Type type = typeof(CharacterJoint);
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("swingAxis"),
+ new DescriptorAttribute("Swing Axis", "The secondary axis around which the joint can rotate.", "http://docs.unity3d.com/ScriptReference/CharacterJoint-swingAxis.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("lowTwistLimit"), new ExpandableAttribute(),
+ new DescriptorAttribute("Low Twist Limit", "The lower limit around the primary axis of the character joint.", "http://docs.unity3d.com/ScriptReference/CharacterJoint-lowTwistLimit.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("highTwistLimit"), new ExpandableAttribute(),
+ new DescriptorAttribute("High Twist Limit", "The upper limit around the primary axis of the character joint.", "http://docs.unity3d.com/ScriptReference/CharacterJoint-highTwistLimit.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("swing1Limit"), new ExpandableAttribute(),
+ new DescriptorAttribute("Swing Limit 1", "The limit around the primary axis of the character joint.", "http://docs.unity3d.com/ScriptReference/CharacterJoint-swing1Limit.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("swing2Limit"), new ExpandableAttribute(),
+ new DescriptorAttribute("Swing Limit 2", "The limit around the primary axis of the character joint.", "http://docs.unity3d.com/ScriptReference/CharacterJoint-swing2Limit.html")));
+ }
+ }
+} \ No newline at end of file
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/CharacterJointEditor.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/CharacterJointEditor.cs.meta
new file mode 100644
index 00000000..625f6dd4
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/CharacterJointEditor.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 5f8b73519c149ad479e14abd44c0a416
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/ClothEditor.cs b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/ClothEditor.cs
new file mode 100644
index 00000000..4935a3a3
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/ClothEditor.cs
@@ -0,0 +1,37 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Reflection;
+
+using UnityEditor;
+using UnityEngine;
+
+namespace AdvancedInspector
+{
+ [CanEditMultipleObjects]
+ //[CustomEditor(typeof(Cloth), true)]
+ public class ClothEditor : InspectorEditor
+ {
+ protected override void RefreshFields()
+ {
+ Type type = typeof(Cloth);
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("bendingStiffness"),
+ new DescriptorAttribute("Bending Stiffness", "Is the collider a trigger?", "http://docs.unity3d.com/ScriptReference/Collider-isTrigger.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("stretchingStiffness"),
+ new DescriptorAttribute("Stretching Stiffness", "", "")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("damping"),
+ new DescriptorAttribute("Damping", "", "")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("thickness"),
+ new DescriptorAttribute("Thickness", "", "")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("useGravity"),
+ new DescriptorAttribute("Use Gravity", "", "")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("selfCollision"),
+ new DescriptorAttribute("Self Collision", "", "")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("externalAcceleration"),
+ new DescriptorAttribute("External Acceleration", "", "")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("randomAcceleration"),
+ new DescriptorAttribute("Random Acceleration", "", "")));
+ }
+ }
+} \ No newline at end of file
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/ClothEditor.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/ClothEditor.cs.meta
new file mode 100644
index 00000000..2d97e4f0
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/ClothEditor.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: ea3b75a7a50b8fd4285dc88b3a1b41f6
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/ClothRendererEditor.cs b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/ClothRendererEditor.cs
new file mode 100644
index 00000000..a5c4f0a1
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/ClothRendererEditor.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Reflection;
+
+using UnityEditor;
+using UnityEngine;
+
+#if UNITY_4_0 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_4 || UNITY_4_5 || UNITY_4_6
+namespace AdvancedInspector
+{
+ [CanEditMultipleObjects]
+ [CustomEditor(typeof(ClothRenderer), true)]
+ public class ClothRendererEditor : RendererEditor
+ {
+ protected override void RefreshFields()
+ {
+ base.RefreshFields();
+ Type type = typeof(ClothRenderer);
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("pauseWhenNotVisible"),
+ new DescriptorAttribute("Pause When Not Visible", "Should the cloth simulation be paused when the ClothRenderer is not visible?", "http://docs.unity3d.com/ScriptReference/ClothRenderer-pauseWhenNotVisible.html")));
+ }
+ }
+}
+#endif \ No newline at end of file
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/ClothRendererEditor.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/ClothRendererEditor.cs.meta
new file mode 100644
index 00000000..80e14e84
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/ClothRendererEditor.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: cd91353f928567e45b9f95d914376353
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/ColliderEditor.cs b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/ColliderEditor.cs
new file mode 100644
index 00000000..93dad847
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/ColliderEditor.cs
@@ -0,0 +1,39 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Reflection;
+
+using UnityEditor;
+using UnityEngine;
+
+namespace AdvancedInspector
+{
+ public abstract class ColliderEditor : InspectorEditor
+ {
+ public static Color ColliderHandleColor = new Color(0.57f, 0.96f, 0.54f, 0.82f);
+ public static Color ColliderHandleColorDisabled = new Color(0.33f, 0.78f, 0.3f, 0.55f);
+
+ protected override void RefreshFields()
+ {
+ Type type = typeof(Collider);
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("isTrigger"),
+ new DescriptorAttribute("Is Trigger", "Is the collider a trigger?", "http://docs.unity3d.com/ScriptReference/Collider-isTrigger.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("sharedMaterial"), new InspectAttribute(new InspectAttribute.InspectDelegate(IsNotTrigger)),
+ new DescriptorAttribute("Physic Material", "The shared physic material of this collider.", "http://docs.unity3d.com/ScriptReference/Collider-sharedMaterial.html")));
+ }
+
+ private bool IsNotTrigger()
+ {
+ for (int i = 0; i < Instances.Length; i++)
+ {
+ Collider collider = Instances[i] as Collider;
+
+ if (!collider.isTrigger)
+ return true;
+ }
+
+ return false;
+ }
+ }
+} \ No newline at end of file
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/ColliderEditor.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/ColliderEditor.cs.meta
new file mode 100644
index 00000000..06c6b96c
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/ColliderEditor.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 164d1d8ffdf5b86498399c42eac1eec2
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/ConstantForceEditor.cs b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/ConstantForceEditor.cs
new file mode 100644
index 00000000..aad051da
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/ConstantForceEditor.cs
@@ -0,0 +1,29 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Reflection;
+
+using UnityEditor;
+using UnityEngine;
+
+namespace AdvancedInspector
+{
+ [CanEditMultipleObjects]
+ [CustomEditor(typeof(ConstantForce), true)]
+ public class ConstantForceEditor : JointEditor
+ {
+ protected override void RefreshFields()
+ {
+ Type type = typeof(ConstantForce);
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("force"),
+ new DescriptorAttribute("Force", "The force applied to the rigidbody every frame.", "http://docs.unity3d.com/ScriptReference/ConstantForce-force.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("relativeForce"),
+ new DescriptorAttribute("Relative Force", "The force - relative to the rigid bodies coordinate system - applied every frame.", "http://docs.unity3d.com/ScriptReference/ConstantForce-relativeForce.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("torque"),
+ new DescriptorAttribute("Torque", "The torque applied to the rigidbody every frame.", "http://docs.unity3d.com/ScriptReference/ConstantForce-torque.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("relativeTorque"),
+ new DescriptorAttribute("Relative Torque", "The torque - relative to the rigid bodies coordinate system - applied every frame.", "http://docs.unity3d.com/ScriptReference/ConstantForce-relativeTorque.html")));
+ }
+ }
+} \ No newline at end of file
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/ConstantForceEditor.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/ConstantForceEditor.cs.meta
new file mode 100644
index 00000000..6b847cce
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/ConstantForceEditor.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 67132d5b321335c45ade534dfc5b466e
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/FixedJointEditor.cs b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/FixedJointEditor.cs
new file mode 100644
index 00000000..753a5da7
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/FixedJointEditor.cs
@@ -0,0 +1,20 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Reflection;
+
+using UnityEditor;
+using UnityEngine;
+
+namespace AdvancedInspector
+{
+ [CanEditMultipleObjects]
+ [CustomEditor(typeof(FixedJoint), true)]
+ public class FixedJointEditor : JointEditor
+ {
+ protected override void RefreshFields()
+ {
+ base.RefreshFields();
+ }
+ }
+}
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/FixedJointEditor.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/FixedJointEditor.cs.meta
new file mode 100644
index 00000000..3b953fd9
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/FixedJointEditor.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 1d710a6940dd6a8469c34b2076d239f6
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/HingeJoint2DEditor.cs b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/HingeJoint2DEditor.cs
new file mode 100644
index 00000000..eb23d53f
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/HingeJoint2DEditor.cs
@@ -0,0 +1,69 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Reflection;
+
+using UnityEditor;
+using UnityEngine;
+
+namespace AdvancedInspector
+{
+ [CanEditMultipleObjects]
+ [CustomEditor(typeof(HingeJoint2D), true)]
+ public class HingeJoint2DEditor : AnchoredJoint2DEditor
+ {
+ protected override void RefreshFields()
+ {
+ base.RefreshFields();
+ Type type = typeof(HingeJoint2D);
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("useLimits"),
+ new DescriptorAttribute("Use Limit", "Should limits be placed on the range of rotation?", "http://docs.unity3d.com/ScriptReference/HingeJoint2D-useLimits.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("limits"), new ExpandableAttribute(), new InspectAttribute(new InspectAttribute.InspectDelegate(UsesLimits)),
+ new DescriptorAttribute("Limits", "Limit of angular rotation on the joint.", "http://docs.unity3d.com/ScriptReference/HingeJoint2D-limits.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("useMotor"),
+ new DescriptorAttribute("Use Motor", "Should the joint be rotated automatically by a motor torque?", "http://docs.unity3d.com/ScriptReference/HingeJoint2D-useMotor.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("motor"), new ExpandableAttribute(), new InspectAttribute(new InspectAttribute.InspectDelegate(UsesMotor)),
+ new DescriptorAttribute("Motor", "Parameters for the motor force applied to the joint.", "http://docs.unity3d.com/ScriptReference/HingeJoint2D-motor.html")));
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("jointAngle"), new InspectAttribute(InspectorLevel.Advanced),
+ new DescriptorAttribute("Angle", "The current joint angle with respect to the reference angle.", "http://docs.unity3d.com/ScriptReference/HingeJoint2D-jointAngle.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("jointSpeed"), new InspectAttribute(InspectorLevel.Advanced),
+ new DescriptorAttribute("Speed", "The current joint speed.", "http://docs.unity3d.com/ScriptReference/HingeJoint2D-jointSpeed.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("limitState"), new InspectAttribute(InspectorLevel.Advanced),
+ new DescriptorAttribute("Limit State", "Gets the state of the joint limit.", "http://docs.unity3d.com/ScriptReference/HingeJoint2D-limitState.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("referenceAngle"), new InspectAttribute(InspectorLevel.Advanced),
+ new DescriptorAttribute("Reference Angle", "The angle referenced between the two bodies used as the constraint for the joint.", "http://docs.unity3d.com/ScriptReference/HingeJoint2D-referenceAngle.html")));
+ }
+
+ private bool UsesLimits()
+ {
+ foreach (object instance in Instances)
+ {
+ HingeJoint2D hinge = instance as HingeJoint2D;
+ if (hinge == null)
+ continue;
+
+ if (hinge.useLimits)
+ return true;
+ }
+
+ return false;
+ }
+
+ private bool UsesMotor()
+ {
+ foreach (object instance in Instances)
+ {
+ HingeJoint2D hinge = instance as HingeJoint2D;
+ if (hinge == null)
+ continue;
+
+ if (hinge.useMotor)
+ return true;
+ }
+
+ return false;
+ }
+ }
+} \ No newline at end of file
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/HingeJoint2DEditor.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/HingeJoint2DEditor.cs.meta
new file mode 100644
index 00000000..799d168d
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/HingeJoint2DEditor.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: a080a881e1bc867428d443b192d7c91a
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/HingeJointEditor.cs b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/HingeJointEditor.cs
new file mode 100644
index 00000000..a1c47ee5
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/HingeJointEditor.cs
@@ -0,0 +1,84 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Reflection;
+
+using UnityEditor;
+using UnityEngine;
+
+namespace AdvancedInspector
+{
+ [CanEditMultipleObjects]
+ [CustomEditor(typeof(HingeJoint), true)]
+ public class HingeJointEditor : JointEditor
+ {
+ protected override void RefreshFields()
+ {
+ base.RefreshFields();
+ Type type = typeof(HingeJoint);
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("useLimits"),
+ new DescriptorAttribute("Use Limits", "Limit of angular rotation on the joint.", "http://docs.unity3d.com/ScriptReference/HingeJoint2D-limits.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("limits"), new ExpandableAttribute(), new InspectAttribute(new InspectAttribute.InspectDelegate(UsesLimits)),
+ new DescriptorAttribute("Limits", "Should the joint be rotated automatically by a motor torque?", "http://docs.unity3d.com/ScriptReference/HingeJoint2D-useMotor.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("useMotor"),
+ new DescriptorAttribute("Use Motor", "Parameters for the motor force applied to the joint.", "http://docs.unity3d.com/ScriptReference/HingeJoint2D-motor.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("motor"), new ExpandableAttribute(), new InspectAttribute(new InspectAttribute.InspectDelegate(UsesMotor)),
+ new DescriptorAttribute("Motor", "Parameters for the motor force applied to the joint.", "http://docs.unity3d.com/ScriptReference/HingeJoint2D-motor.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("useSpring"),
+ new DescriptorAttribute("Use Spring", "Parameters for the motor force applied to the joint.", "http://docs.unity3d.com/ScriptReference/HingeJoint2D-motor.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("spring"), new ExpandableAttribute(), new InspectAttribute(new InspectAttribute.InspectDelegate(UsesSpring)),
+ new DescriptorAttribute("Spring", "Parameters for the motor force applied to the joint.", "http://docs.unity3d.com/ScriptReference/HingeJoint2D-motor.html")));
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("angle"), new InspectAttribute(InspectorLevel.Advanced),
+ new DescriptorAttribute("Angle", "Should limits be placed on the range of rotation?", "http://docs.unity3d.com/ScriptReference/HingeJoint2D-useLimits.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("velocity"), new InspectAttribute(InspectorLevel.Advanced),
+ new DescriptorAttribute("Velocity", "The current joint angle with respect to the reference angle.", "http://docs.unity3d.com/ScriptReference/HingeJoint2D-jointAngle.html")));
+ }
+
+ private bool UsesLimits()
+ {
+ foreach (object instance in Instances)
+ {
+ HingeJoint hinge = instance as HingeJoint;
+ if (hinge == null)
+ continue;
+
+ if (hinge.useLimits)
+ return true;
+ }
+
+ return false;
+ }
+
+ private bool UsesMotor()
+ {
+ foreach (object instance in Instances)
+ {
+ HingeJoint hinge = instance as HingeJoint;
+ if (hinge == null)
+ continue;
+
+ if (hinge.useMotor)
+ return true;
+ }
+
+ return false;
+ }
+
+ private bool UsesSpring()
+ {
+ foreach (object instance in Instances)
+ {
+ HingeJoint hinge = instance as HingeJoint;
+ if (hinge == null)
+ continue;
+
+ if (hinge.useSpring)
+ return true;
+ }
+
+ return false;
+ }
+ }
+} \ No newline at end of file
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/HingeJointEditor.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/HingeJointEditor.cs.meta
new file mode 100644
index 00000000..38d52e78
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/HingeJointEditor.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 908add4326cc5094aad042216c8ffe74
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/Joint2DEditor.cs b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/Joint2DEditor.cs
new file mode 100644
index 00000000..d0df6821
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/Joint2DEditor.cs
@@ -0,0 +1,160 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Reflection;
+
+using UnityEditor;
+using UnityEngine;
+
+namespace AdvancedInspector
+{
+ [CanEditMultipleObjects]
+ public class Joint2DEditor : InspectorEditor
+ {
+ public static GUIStyle anchor = null;
+ public static GUIStyle anchorActive = null;
+ public static GUIStyle connectedAnchor = null;
+ public static GUIStyle connectedAnchorActive = null;
+
+ protected override void RefreshFields()
+ {
+ Type type = typeof(Joint2D);
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("enableCollision"),
+ new DescriptorAttribute("Enable Collision", "Should rigid bodies connected with this joint collide?", "http://docs.unity3d.com/ScriptReference/Joint2D-enableCollision.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("connectedBody"),
+ new DescriptorAttribute("Connected Body", "The Rigidbody2D object to which the other end of the joint is attached (ie, the object without the joint component).", "http://docs.unity3d.com/ScriptReference/Joint2D-connectedBody.html")));
+ }
+
+ protected bool HandleAnchor(ref Vector3 position, bool isConnectedAnchor)
+ {
+ if (anchor == null)
+ {
+ anchor = "U2D.pivotDot";
+ anchorActive = "U2D.pivotDotActive";
+ connectedAnchor = "U2D.dragDot";
+ connectedAnchorActive = "U2D.dragDotActive";
+ }
+
+ Handles.DrawCapFunction drawFunc = (!isConnectedAnchor) ? new Handles.DrawCapFunction(AnchorCap) : new Handles.DrawCapFunction(ConnectedAnchorCap);
+ int id = this.target.GetInstanceID() + ((!isConnectedAnchor) ? 0 : 1);
+ EditorGUI.BeginChangeCheck();
+ position = Handles.Slider2D(id, position, Vector3.back, Vector3.right, Vector3.up, 0f, drawFunc, Vector2.zero);
+ return EditorGUI.EndChangeCheck();
+ }
+
+ public static void AnchorCap(int controlID, Vector3 position, Quaternion rotation, float size)
+ {
+ if (controlID == GUIUtility.keyboardControl)
+ DrawCap(controlID, position, anchorActive);
+ else
+ DrawCap(controlID, position, anchor);
+ }
+
+ public static void ConnectedAnchorCap(int controlID, Vector3 position, Quaternion rotation, float size)
+ {
+ if (controlID == GUIUtility.keyboardControl)
+ DrawCap(controlID, position, connectedAnchorActive);
+
+ else
+ DrawCap(controlID, position, connectedAnchor);
+ }
+
+ private static void DrawCap(int controlID, Vector3 position, GUIStyle guiStyle)
+ {
+ if (Event.current.type != EventType.Repaint)
+ {
+ return;
+ }
+ Handles.BeginGUI();
+ position = HandleUtility.WorldToGUIPoint(position);
+ float fixedWidth = guiStyle.fixedWidth;
+ float fixedHeight = guiStyle.fixedHeight;
+ Rect position2 = new Rect(position.x - fixedWidth / 2f, position.y - fixedHeight / 2f, fixedWidth, fixedHeight);
+ guiStyle.Draw(position2, GUIContent.none, controlID);
+ Handles.EndGUI();
+ }
+
+ public static void DrawAALine(Vector3 start, Vector3 end)
+ {
+ Handles.DrawAAPolyLine(new Vector3[] { start, end });
+ }
+
+ public static void DrawDistanceGizmo(Vector3 anchor, Vector3 connectedAnchor, float distance)
+ {
+ Vector3 normalized = (anchor - connectedAnchor).normalized;
+ Vector3 vector = connectedAnchor + normalized * distance;
+ Vector3 vector2 = Vector3.Cross(normalized, Vector3.forward);
+ vector2 *= HandleUtility.GetHandleSize(connectedAnchor) * 0.16f;
+ Handles.color = Color.green;
+ DrawAALine(anchor, vector);
+ DrawAALine(connectedAnchor + vector2, connectedAnchor - vector2);
+ DrawAALine(vector + vector2, vector - vector2);
+ }
+
+ private static Matrix4x4 GetAnchorSpaceMatrix(Transform transform)
+ {
+ return Matrix4x4.TRS(transform.position, Quaternion.Euler(0f, 0f, transform.rotation.eulerAngles.z), transform.lossyScale);
+ }
+
+ protected static Vector3 TransformPoint(Transform transform, Vector3 position)
+ {
+ return GetAnchorSpaceMatrix(transform).MultiplyPoint(position);
+ }
+
+ protected static Vector3 InverseTransformPoint(Transform transform, Vector3 position)
+ {
+ return GetAnchorSpaceMatrix(transform).inverse.MultiplyPoint(position);
+ }
+
+ protected static Vector3 SnapToSprite(SpriteRenderer spriteRenderer, Vector3 position, float snapDistance)
+ {
+ if (spriteRenderer == null)
+ return position;
+
+ snapDistance = HandleUtility.GetHandleSize(position) * snapDistance;
+ float num = spriteRenderer.sprite.bounds.size.x / 2f;
+ float num2 = spriteRenderer.sprite.bounds.size.y / 2f;
+
+ Vector2[] array = new Vector2[]
+ {
+ new Vector2(-num, -num2),
+ new Vector2(0f, -num2),
+ new Vector2(num, -num2),
+ new Vector2(-num, 0f),
+ new Vector2(0f, 0f),
+ new Vector2(num, 0f),
+ new Vector2(-num, num2),
+ new Vector2(0f, num2),
+ new Vector2(num, num2)
+ };
+
+ Vector2[] array2 = array;
+ for (int i = 0; i < array2.Length; i++)
+ {
+ Vector2 v = array2[i];
+ Vector3 vector = spriteRenderer.transform.TransformPoint(v);
+ if (Vector2.Distance(position, vector) <= snapDistance)
+ return vector;
+ }
+
+ return position;
+ }
+
+ protected static Vector3 SnapToPoint(Vector3 position, Vector3 snapPosition, float snapDistance)
+ {
+ snapDistance = HandleUtility.GetHandleSize(position) * snapDistance;
+ return (Vector3.Distance(position, snapPosition) > snapDistance) ? position : snapPosition;
+ }
+
+ protected static Vector2 RotateVector2(Vector2 direction, float angle)
+ {
+ float f = 0.0174532924f * -angle;
+ float cos = Mathf.Cos(f);
+ float sin = Mathf.Sin(f);
+ float x = direction.x * cos - direction.y * sin;
+ float y = direction.x * sin + direction.y * cos;
+ return new Vector2(x, y);
+ }
+ }
+} \ No newline at end of file
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/Joint2DEditor.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/Joint2DEditor.cs.meta
new file mode 100644
index 00000000..8b26bc9f
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/Joint2DEditor.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 83502c096c3da4e41a24f0c5dd3245e9
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/JointEditor.cs b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/JointEditor.cs
new file mode 100644
index 00000000..e86c9518
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/JointEditor.cs
@@ -0,0 +1,37 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Reflection;
+
+using UnityEditor;
+using UnityEngine;
+
+namespace AdvancedInspector
+{
+ [CanEditMultipleObjects]
+ //[CustomEditor(typeof(Joint), true)]
+ public class JointEditor : InspectorEditor
+ {
+ protected override void RefreshFields()
+ {
+ Type type = typeof(Joint);
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("connectedBody"),
+ new DescriptorAttribute("Connected Body", "A reference to another rigidbody this joint connects to.", "http://docs.unity3d.com/ScriptReference/Joint-connectedBody.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("anchor"),
+ new DescriptorAttribute("Anchor", "The Position of the anchor around which the joints motion is constrained.", "http://docs.unity3d.com/ScriptReference/Joint-anchor.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("axis"),
+ new DescriptorAttribute("Axis", "The Direction of the axis around which the body is constrained.", "http://docs.unity3d.com/ScriptReference/Joint-axis.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("autoConfigureConnectedAnchor"),
+ new DescriptorAttribute("Auto Configure Anchor", "Should the connectedAnchor be calculated automatically?", "http://docs.unity3d.com/ScriptReference/Joint-autoConfigureConnectedAnchor.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("connectedAnchor"),
+ new DescriptorAttribute("Connected Anchor", "Position of the anchor relative to the connected Rigidbody.", "http://docs.unity3d.com/ScriptReference/Joint-connectedAnchor.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("breakForce"),
+ new DescriptorAttribute("Break Force", "The force that needs to be applied for this joint to break.", "http://docs.unity3d.com/ScriptReference/Joint-breakForce.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("breakTorque"),
+ new DescriptorAttribute("Break Torque", "The torque that needs to be applied for this joint to break.", "http://docs.unity3d.com/ScriptReference/Joint-breakTorque.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("enableCollision"),
+ new DescriptorAttribute("Enable Collision", "Enable collision between bodies connected with the joint.", "http://docs.unity3d.com/ScriptReference/Joint-enableCollision.html")));
+ }
+ }
+} \ No newline at end of file
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/JointEditor.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/JointEditor.cs.meta
new file mode 100644
index 00000000..410ccaa6
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/JointEditor.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: e4194aa8c25a02c48951516e3e30ac9a
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/LightEditor.cs b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/LightEditor.cs
new file mode 100644
index 00000000..b4efe4a2
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/LightEditor.cs
@@ -0,0 +1,351 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+
+using UnityEditor;
+using UnityEngine;
+
+namespace AdvancedInspector
+{
+ [CanEditMultipleObjects]
+ [CustomEditor(typeof(Light), true)]
+ public class LightEditor : InspectorEditor
+ {
+ private static Color disabledLightColor = new Color(0.5f, 0.45f, 0.2f, 0.5f);
+ private static Color lightColor = new Color(0.95f, 0.95f, 0.5f, 0.5f);
+
+ private SerializedProperty m_Lightmapping;
+
+ protected override void RefreshFields()
+ {
+ Type type = typeof(Light);
+ if (Instances == null || Instances.Length == 0)
+ return;
+
+ SerializedObject so = new SerializedObject(Instances.Cast<UnityEngine.Object>().ToArray());
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("type"),
+ new HelpAttribute(new HelpAttribute.HelpDelegate(HelpLightType)),
+ new DescriptorAttribute("Type", "The type of the light.", "http://docs.unity3d.com/ScriptReference/Light-type.html")));
+
+ m_Lightmapping = so.FindProperty("m_Lightmapping");
+ fields.Add(new InspectorField(type, Instances, m_Lightmapping,
+ new InspectAttribute(new InspectAttribute.InspectDelegate(IsNotArea)),
+ new RestrictAttribute(new RestrictAttribute.RestrictDelegate(Baking)),
+ new DescriptorAttribute("Baking", "How the light is handled versus lightmaps.")));
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("range"),
+ new InspectAttribute(new InspectAttribute.InspectDelegate(IsPointOrSpot)),
+ new DescriptorAttribute("Range", "The range of the light.", "http://docs.unity3d.com/ScriptReference/Light-range.html")));
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("spotAngle"),
+ new InspectAttribute(new InspectAttribute.InspectDelegate(IsSpot)),
+ new DescriptorAttribute("Spot Angle", "The angle of the light's spotlight cone in degrees.", "http://docs.unity3d.com/ScriptReference/Light-spotAngle.html")));
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("areaSize"),
+ new InspectAttribute(new InspectAttribute.InspectDelegate(IsArea)),
+ new DescriptorAttribute("Area Size", "The size of the area light. Editor only.", "http://docs.unity3d.com/ScriptReference/Light-areaSize.html")));
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("color"),
+ new DescriptorAttribute("Color", "The color of the light.", "http://docs.unity3d.com/ScriptReference/Light-color.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("intensity"),
+ new RangeValueAttribute(0f, 8f),
+ new DescriptorAttribute("Intensity", "The Intensity of a light is multiplied with the Light color.", "http://docs.unity3d.com/ScriptReference/Light-intensity.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("bounceIntensity"),
+ new RangeValueAttribute(0f, 8f), new HelpAttribute(new HelpAttribute.HelpDelegate(HelpBouncedGI)),
+ new DescriptorAttribute("Bounce Intensity", "The multiplier that defines the strength of the bounce lighting.", "http://docs.unity3d.com/ScriptReference/Light-bounceIntensity.html")));
+
+
+
+ //Acts like a group
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("shadows"),
+ new InspectAttribute(new InspectAttribute.InspectDelegate(IsNotArea)),
+ new HelpAttribute(new HelpAttribute.HelpDelegate(HelpShadowPro)),
+ new DescriptorAttribute("Shadow Type", "How this light casts shadows", "http://docs.unity3d.com/ScriptReference/Light-shadows.html")));
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("shadowStrength"),
+ new InspectAttribute(new InspectAttribute.InspectDelegate(HasShadow)),
+ new DescriptorAttribute("Strength", "How this light casts shadows.", "http://docs.unity3d.com/ScriptReference/Light-shadowStrength.html")));
+ fields.Add(new InspectorField(type, Instances, so.FindProperty("m_Shadows.m_Resolution"),
+ new InspectAttribute(new InspectAttribute.InspectDelegate(HasShadow)),
+ new DescriptorAttribute("Resolution", "The shadow's resolution.")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("shadowBias"),
+ new InspectAttribute(new InspectAttribute.InspectDelegate(HasShadow)),
+ new DescriptorAttribute("Bias", "Shadow mapping bias.", "http://docs.unity3d.com/ScriptReference/Light-shadowBias.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("shadowNormalBias"),
+ new InspectAttribute(new InspectAttribute.InspectDelegate(HasShadow)),
+ new DescriptorAttribute("Normal Bias", "Shadow mapping normal-based bias.", "http://docs.unity3d.com/ScriptReference/Light-shadowNormalBias.html")));
+
+ fields.Add(new InspectorField(type, Instances, so.FindProperty("m_DrawHalo"),
+ new DescriptorAttribute("Draw Halo", "Draw a halo around the light. Now work with the Halo class.")));
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("cookie"),
+ new DescriptorAttribute("Cookie", "The cookie texture projected by the light.", "http://docs.unity3d.com/ScriptReference/Light-cookie.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("cookieSize"),
+ new InspectAttribute(new InspectAttribute.InspectDelegate(IsDirectional)),
+ new DescriptorAttribute("Cookie Size", "The size of a directional light's cookie.", "http://docs.unity3d.com/ScriptReference/Light-cookieSize.html")));
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("flare"),
+ new DescriptorAttribute("Flare", "The flare asset to use for this light.", "http://docs.unity3d.com/ScriptReference/Light-flare.html")));
+
+ fields.Add(new InspectorField(type, Instances, so.FindProperty("m_RenderMode"),
+ new DescriptorAttribute("Render Mode", "The rendering path for the lights.")));
+
+ fields.Add(new InspectorField(type, Instances, so.FindProperty("m_CullingMask"),
+ new HelpAttribute(new HelpAttribute.HelpDelegate(HelpSceneLighting)),
+ new DescriptorAttribute("Culling Mask", "The object that are affected or ignored by the light.")));
+ }
+
+ private IList Baking()
+ {
+ return new DescriptorPair[] { new DescriptorPair(4, "Realtime", ""), new DescriptorPair(2, "Baked", ""), new DescriptorPair(1, "Mixed", "") };
+ }
+
+ public bool IsPointOrSpot()
+ {
+ if (IsPoint() || IsSpot())
+ return true;
+
+ return false;
+ }
+
+ public bool IsPoint()
+ {
+ return ((Light)Instances[0]).type == LightType.Point;
+ }
+
+ public bool IsSpot()
+ {
+ return ((Light)Instances[0]).type == LightType.Spot;
+ }
+
+ public bool IsDirectional()
+ {
+ return ((Light)Instances[0]).type == LightType.Directional;
+ }
+
+ public bool IsNotArea()
+ {
+ return !IsArea();
+ }
+
+ public bool IsArea()
+ {
+ return ((Light)Instances[0]).type == LightType.Area;
+ }
+
+ public bool HasShadow()
+ {
+ Light light = (Light)Instances[0];
+ return IsNotArea() && (light.shadows == LightShadows.Hard || light.shadows == LightShadows.Soft);
+ }
+
+ public bool IsSoft()
+ {
+ return ((Light)Instances[0]).shadows == LightShadows.Soft;
+ }
+
+ public bool DoesAnyCameraUseDeferred()
+ {
+ Camera[] allCameras = Camera.allCameras;
+ for (int i = 0; i < allCameras.Length; i++)
+ if (allCameras[i].actualRenderingPath == RenderingPath.DeferredLighting)
+ return true;
+
+ return false;
+ }
+
+ public HelpAttribute HelpBouncedGI()
+ {
+ if (((Light)Instances[0]).bounceIntensity > 0 && IsPointOrSpot() && m_Lightmapping.intValue != 2)
+ return new HelpAttribute(HelpType.Warning, "Currently realtime indirect bounce light shadowing for spot and point lights is not supported.");
+
+ return null;
+ }
+
+ public HelpAttribute HelpShadowPro()
+ {
+ if (HasShadow() && IsPointOrSpot() && !UnityEditorInternal.InternalEditorUtility.HasPro())
+ return new HelpAttribute(HelpType.Warning, "Real time shadow for point and spot lights requires Unity Pro.");
+
+ return null;
+ }
+
+ public HelpAttribute HelpLightType()
+ {
+ if (IsArea() && !UnityEditorInternal.InternalEditorUtility.HasPro())
+ return new HelpAttribute(HelpType.Warning, "Area lights require Unity Pro.");
+
+ return null;
+ }
+
+ public HelpAttribute HelpSceneLighting()
+ {
+ if (SceneView.currentDrawingSceneView != null && !SceneView.currentDrawingSceneView.m_SceneLighting)
+ return new HelpAttribute(HelpType.Warning, "One of your scene views has lighting disable, please keep this in mind when editing lighting.");
+
+ return null;
+ }
+
+ protected override void OnSceneGUI()
+ {
+ base.OnSceneGUI();
+
+ if (Event.current.type == EventType.Used)
+ return;
+
+ Light light = (Light)target;
+ Color color = Handles.color;
+
+ if (light.enabled)
+ Handles.color = lightColor;
+ else
+ Handles.color = disabledLightColor;
+
+ float range = light.range;
+ switch (light.type)
+ {
+ case LightType.Spot:
+ {
+ Color color2 = Handles.color;
+ color2.a = Mathf.Clamp01(color.a * 2f);
+ Handles.color = color2;
+ Vector2 angleAndRange = new Vector2(light.spotAngle, light.range);
+ angleAndRange = ConeHandle(light.transform.rotation, light.transform.position, angleAndRange, 1f, 1f, true);
+ if (GUI.changed)
+ {
+ Undo.RecordObject(light, "Adjust Spot Light");
+ light.spotAngle = angleAndRange.x;
+ light.range = Mathf.Max(angleAndRange.y, 0.01f);
+ }
+
+ break;
+ }
+
+ case LightType.Point:
+ {
+ range = Handles.RadiusHandle(Quaternion.identity, light.transform.position, range, true);
+ if (GUI.changed)
+ {
+ Undo.RecordObject(light, "Adjust Point Light");
+ light.range = range;
+ }
+
+ break;
+ }
+
+ case LightType.Area:
+ {
+ EditorGUI.BeginChangeCheck();
+ Vector2 vector2 = RectHandles(light.transform.rotation, light.transform.position, light.areaSize);
+ if (EditorGUI.EndChangeCheck())
+ {
+ Undo.RecordObject(light, "Adjust Area Light");
+ light.areaSize = vector2;
+ }
+
+ break;
+ }
+ }
+ Handles.color = color;
+ }
+
+ private Vector2 ConeHandle(Quaternion rotation, Vector3 position, Vector2 angleAndRange, float angleScale, float rangeScale, bool handlesOnly)
+ {
+ float x = angleAndRange.x;
+ float y = angleAndRange.y;
+ float r = y * rangeScale;
+
+ Vector3 forward = rotation * Vector3.forward;
+ Vector3 up = rotation * Vector3.up;
+ Vector3 right = rotation * Vector3.right;
+
+ bool changed = GUI.changed;
+ GUI.changed = false;
+ r = SizeSlider(position, forward, r);
+ if (GUI.changed)
+ y = Mathf.Max(0f, r / rangeScale);
+
+ GUI.changed |= changed;
+ changed = GUI.changed;
+ GUI.changed = false;
+
+ float angle = (r * Mathf.Tan((0.01745329f * x) / 2f)) * angleScale;
+ angle = SizeSlider(position + (forward * r), up, angle);
+ angle = SizeSlider(position + (forward * r), -up, angle);
+ angle = SizeSlider(position + (forward * r), right, angle);
+ angle = SizeSlider(position + (forward * r), -right, angle);
+
+ if (GUI.changed)
+ x = Mathf.Clamp((57.29578f * Mathf.Atan(angle / (r * angleScale))) * 2f, 0f, 179f);
+
+ GUI.changed |= changed;
+ if (!handlesOnly)
+ {
+ Handles.DrawLine(position, (Vector3)((position + (forward * r)) + (up * angle)));
+ Handles.DrawLine(position, (Vector3)((position + (forward * r)) - (up * angle)));
+ Handles.DrawLine(position, (Vector3)((position + (forward * r)) + (right * angle)));
+ Handles.DrawLine(position, (Vector3)((position + (forward * r)) - (right * angle)));
+ Handles.DrawWireDisc(position + ((Vector3)(r * forward)), forward, angle);
+ }
+
+ return new Vector2(x, y);
+ }
+
+ private Vector2 RectHandles(Quaternion rotation, Vector3 position, Vector2 size)
+ {
+ Vector3 forward = (Vector3)(rotation * Vector3.forward);
+ Vector3 up = (Vector3)(rotation * Vector3.up);
+ Vector3 right = (Vector3)(rotation * Vector3.right);
+
+ float radiusX = 0.5f * size.x;
+ float radiusY = 0.5f * size.y;
+
+ Vector3 v1 = (position + (up * radiusY)) + (right * radiusX);
+ Vector3 v2 = (position - (up * radiusY)) + (right * radiusX);
+ Vector3 v3 = (position - (up * radiusY)) - (right * radiusX);
+ Vector3 v4 = (position + (up * radiusY)) - (right * radiusX);
+
+ Handles.DrawLine(v1, v2);
+ Handles.DrawLine(v2, v3);
+ Handles.DrawLine(v3, v4);
+ Handles.DrawLine(v4, v1);
+
+ Color color = Handles.color;
+ color.a = Mathf.Clamp01(color.a * 2f);
+ Handles.color = color;
+
+ radiusY = SizeSlider(position, up, radiusY);
+ radiusY = SizeSlider(position, -up, radiusY);
+ radiusX = SizeSlider(position, right, radiusX);
+ radiusX = SizeSlider(position, -right, radiusX);
+
+ if (((Tools.current != Tool.Move) && (Tools.current != Tool.Scale)) || Tools.pivotRotation != PivotRotation.Local)
+ Handles.DrawLine(position, position + forward);
+
+ size.x = 2f * radiusX;
+ size.y = 2f * radiusY;
+
+ return size;
+ }
+
+ private float SizeSlider(Vector3 p, Vector3 direction, float radius)
+ {
+ Vector3 position = p + (direction * radius);
+ float handleSize = HandleUtility.GetHandleSize(position);
+
+ bool changed = GUI.changed;
+ GUI.changed = false;
+
+ position = Handles.Slider(position, direction, handleSize * 0.03f, new Handles.DrawCapFunction(Handles.DotCap), 0f);
+
+ if (GUI.changed)
+ radius = Vector3.Dot(position - p, direction);
+
+ GUI.changed |= changed;
+ return radius;
+ }
+ }
+}
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/LightEditor.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/LightEditor.cs.meta
new file mode 100644
index 00000000..b6532a8e
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/LightEditor.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: eebe3cc40d780b84e8af810e11b0d210
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/MeshColliderEditor.cs b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/MeshColliderEditor.cs
new file mode 100644
index 00000000..901a3d78
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/MeshColliderEditor.cs
@@ -0,0 +1,43 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Reflection;
+
+using UnityEditor;
+using UnityEngine;
+
+namespace AdvancedInspector
+{
+ [CanEditMultipleObjects]
+ [CustomEditor(typeof(MeshCollider), true)]
+ public class MeshColliderEditor : ColliderEditor
+ {
+ protected override void RefreshFields()
+ {
+ Type type = typeof(MeshCollider);
+
+ base.RefreshFields();
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("convex"),
+ new DescriptorAttribute("Convex", "Use a convex collider from the mesh.", "http://docs.unity3d.com/ScriptReference/MeshCollider-convex.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("sharedMesh"), new HelpAttribute(new HelpAttribute.HelpDelegate(HelpMesh)),
+ new DescriptorAttribute("Mesh", "The mesh object used for collision detection.", "http://docs.unity3d.com/ScriptReference/MeshCollider-sharedMesh.html")));
+ }
+
+ private HelpAttribute HelpMesh()
+ {
+ foreach (object instance in Instances)
+ {
+ MeshCollider collider = instance as MeshCollider;
+
+ if (collider == null)
+ continue;
+
+ if (collider.sharedMesh == null)
+ return new HelpAttribute(HelpType.Error, "The Mesh Collider requires a Mesh to work.");
+ }
+
+ return null;
+ }
+ }
+} \ No newline at end of file
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/MeshColliderEditor.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/MeshColliderEditor.cs.meta
new file mode 100644
index 00000000..dabc1f67
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/MeshColliderEditor.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 84ba51c5c587f614e8ebc91d7f72209c
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/MeshEditor.cs b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/MeshEditor.cs
new file mode 100644
index 00000000..dbc63dc7
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/MeshEditor.cs
@@ -0,0 +1,45 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Reflection;
+
+using UnityEditor;
+using UnityEngine;
+
+namespace AdvancedInspector
+{
+ [CanEditMultipleObjects]
+ [CustomEditor(typeof(Mesh), true)]
+ public class MeshEditor : InspectorEditor
+ {
+ protected override void RefreshFields()
+ {
+ Type type = typeof(Mesh);
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("subMeshCount"),
+ new DescriptorAttribute("Sub Mesh Count", "The number of submeshes. Every material has a separate triangle list.", "http://docs.unity3d.com/ScriptReference/Mesh-subMeshCount.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("vertices"),
+ new DescriptorAttribute("Vertices", "Returns a copy of the vertex positions or assigns a new vertex positions array.", "http://docs.unity3d.com/ScriptReference/Mesh-vertices.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("triangles"),
+ new DescriptorAttribute("Triangles", "An array containing all triangles in the mesh.", "http://docs.unity3d.com/ScriptReference/Mesh-triangles.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("uv"),
+ new DescriptorAttribute("UV", "The base texture coordinates of the mesh.", "http://docs.unity3d.com/ScriptReference/Mesh-uv.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("uv2"),
+ new DescriptorAttribute("UV2", "The second texture coordinate set of the mesh, if present.", "http://docs.unity3d.com/ScriptReference/Mesh-uv2.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("uv3"),
+ new DescriptorAttribute("UV3", "The third texture coordinate set of the mesh, if present.", "http://docs.unity3d.com/ScriptReference/Mesh-uv3.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("uv4"),
+ new DescriptorAttribute("UV4", "The fourth texture coordinate set of the mesh, if present.", "http://docs.unity3d.com/ScriptReference/Mesh-uv4.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("boneWeights"),
+ new DescriptorAttribute("Bone Weight", "The bone weights of each vertex.", "http://docs.unity3d.com/ScriptReference/Mesh-boneWeights.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("colors"),
+ new DescriptorAttribute("Colors", "Vertex colors of the mesh.", "http://docs.unity3d.com/ScriptReference/Mesh-colors.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("normals"),
+ new DescriptorAttribute("Normals", "The normals of the mesh.", "http://docs.unity3d.com/ScriptReference/Mesh-normals.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("tangents"),
+ new DescriptorAttribute("Tangents", "The tangents of the mesh.", "http://docs.unity3d.com/ScriptReference/Mesh-tangents.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("bounds"),
+ new DescriptorAttribute("Bounds", "The bounding volume of the mesh.", "http://docs.unity3d.com/ScriptReference/Mesh-bounds.html")));
+ }
+ }
+} \ No newline at end of file
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/MeshEditor.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/MeshEditor.cs.meta
new file mode 100644
index 00000000..5c0453c9
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/MeshEditor.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 01fd2f5ffcf96cb4fbea0525b8abac31
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/MeshFilterEditor.cs b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/MeshFilterEditor.cs
new file mode 100644
index 00000000..b74e76a5
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/MeshFilterEditor.cs
@@ -0,0 +1,23 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Reflection;
+
+using UnityEditor;
+using UnityEngine;
+
+namespace AdvancedInspector
+{
+ [CanEditMultipleObjects]
+ [CustomEditor(typeof(MeshFilter), true)]
+ public class MeshFilterEditor : InspectorEditor
+ {
+ protected override void RefreshFields()
+ {
+ Type type = typeof(MeshFilter);
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("sharedMesh"), new ExpandableAttribute(),
+ new DescriptorAttribute("Mesh", "Returns the shared mesh of the mesh filter.", "http://docs.unity3d.com/ScriptReference/MeshFilter-sharedMesh.html")));
+ }
+ }
+} \ No newline at end of file
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/MeshFilterEditor.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/MeshFilterEditor.cs.meta
new file mode 100644
index 00000000..f65f8840
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/MeshFilterEditor.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: d593b3a6858817e44a554bfc7b09e8bc
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/MeshRendererEditor.cs b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/MeshRendererEditor.cs
new file mode 100644
index 00000000..049ff62c
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/MeshRendererEditor.cs
@@ -0,0 +1,20 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Reflection;
+
+using UnityEditor;
+using UnityEngine;
+
+namespace AdvancedInspector
+{
+ [CanEditMultipleObjects]
+ [CustomEditor(typeof(MeshRenderer), true)]
+ public class MeshRendererEditor : RendererEditor
+ {
+ protected override void RefreshFields()
+ {
+ base.RefreshFields();
+ }
+ }
+}
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/MeshRendererEditor.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/MeshRendererEditor.cs.meta
new file mode 100644
index 00000000..9864e12f
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/MeshRendererEditor.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 4c5a0dded0d6c1d4891ba69e2a80bf19
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/RendererEditor.cs b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/RendererEditor.cs
new file mode 100644
index 00000000..08c4ac1c
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/RendererEditor.cs
@@ -0,0 +1,53 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Reflection;
+
+using UnityEditor;
+using UnityEngine;
+
+namespace AdvancedInspector
+{
+ [CanEditMultipleObjects]
+ //[CustomEditor(typeof(Renderer), true)]
+ public class RendererEditor : InspectorEditor
+ {
+ protected override void RefreshFields()
+ {
+ Type type = typeof(Renderer);
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("shadowCastingMode"),
+ new DescriptorAttribute("Cast Shadows", "Does this object cast shadows?", "http://docs.unity3d.com/ScriptReference/Renderer-shadowCastingMode.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("receiveShadows"),
+ new DescriptorAttribute("Receive Shadows", "Does this object receive shadows?", "http://docs.unity3d.com/ScriptReference/Renderer-receiveShadows.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("useLightProbes"),
+ new DescriptorAttribute("Use Light Probes", "Use light probes for this Renderer.", "http://docs.unity3d.com/ScriptReference/Renderer-useLightProbes.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("probeAnchor"), new InspectAttribute(new InspectAttribute.InspectDelegate(IsUsingLightProbe)),
+ new DescriptorAttribute("Probes Anchor", "If set, Renderer will use this Transform's position to find the interpolated light probe.", "http://docs.unity3d.com/ScriptReference/Renderer-lightProbeAnchor.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("sharedMaterials"),
+ new DescriptorAttribute("Materials", "All the shared materials of this object.", "http://docs.unity3d.com/ScriptReference/Renderer-sharedMaterials.html")));
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("isPartOfStaticBatch"),
+ new DescriptorAttribute("Static Batched", "Has this renderer been statically batched with any other renderers?", "http://docs.unity3d.com/ScriptReference/Renderer-isPartOfStaticBatch.html"), new InspectAttribute(InspectorLevel.Debug)));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("isVisible"),
+ new DescriptorAttribute("Is Visible", "Is this renderer visible in any camera? (Read Only)", "http://docs.unity3d.com/ScriptReference/Renderer-isVisible.html"), new InspectAttribute(InspectorLevel.Debug)));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("lightmapIndex"),
+ new DescriptorAttribute("Lightmap Index", "The index of the lightmap applied to this renderer.", "http://docs.unity3d.com/ScriptReference/Renderer-lightmapIndex.html"), new InspectAttribute(InspectorLevel.Debug)));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("sortingLayerID"),
+ new DescriptorAttribute("Sorting Layer ID", "ID of the Renderer's sorting layer.", "http://docs.unity3d.com/ScriptReference/Renderer-sortingLayerID.html"), new InspectAttribute(InspectorLevel.Debug)));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("sortingLayerName"),
+ new DescriptorAttribute("Sorting Layer Name", "Name of the Renderer's sorting layer.", "http://docs.unity3d.com/ScriptReference/Renderer-sortingLayerName.html"), new InspectAttribute(InspectorLevel.Debug)));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("sortingOrder"),
+ new DescriptorAttribute("Sorting Order", "Renderer's order within a sorting layer.", "http://docs.unity3d.com/ScriptReference/Renderer-sortingOrder.html"), new InspectAttribute(InspectorLevel.Debug)));
+ }
+
+ private bool IsUsingLightProbe()
+ {
+ for (int i = 0; i < Instances.Length; i++)
+ if (!((Renderer)Instances[i]).useLightProbes)
+ return false;
+
+ return true;
+ }
+ }
+}
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/RendererEditor.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/RendererEditor.cs.meta
new file mode 100644
index 00000000..f2217be6
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/RendererEditor.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: ce4ec5cace74bb249aca3027a18d293a
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/Rigidbody2DEditor.cs b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/Rigidbody2DEditor.cs
new file mode 100644
index 00000000..18a5c850
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/Rigidbody2DEditor.cs
@@ -0,0 +1,43 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Reflection;
+
+using UnityEditor;
+using UnityEngine;
+
+namespace AdvancedInspector
+{
+ [CanEditMultipleObjects]
+ [CustomEditor(typeof(Rigidbody2D), true)]
+ public class Rigidbody2DEditor : InspectorEditor
+ {
+ protected override void RefreshFields()
+ {
+ Type type = typeof(Rigidbody2D);
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("mass"),
+ new DescriptorAttribute("Mass", "The mass of the rigidbody", "https://docs.unity3d.com/Documentation/ScriptReference/Rigidbody-mass.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("drag"),
+ new DescriptorAttribute("Linear Drag", "Coefficient of drag.", "http://docs.unity3d.com/ScriptReference/Rigidbody2D-drag.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("angularDrag"),
+ new DescriptorAttribute("Angular Drag", "Coefficient of angular drag.", "http://docs.unity3d.com/ScriptReference/Rigidbody2D-angularDrag.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("gravityScale"),
+ new DescriptorAttribute("Gravity Scale", "The degree to which this object is affected by gravity.", "http://docs.unity3d.com/ScriptReference/Rigidbody2D-gravityScale.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("isKinematic"),
+ new DescriptorAttribute("Is Kinematic", "Should this rigidbody be taken out of physics control?", "http://docs.unity3d.com/ScriptReference/Rigidbody2D-isKinematic.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("interpolation"),
+ new DescriptorAttribute("Interpolation", "Physics interpolation used between updates.", "http://docs.unity3d.com/ScriptReference/Rigidbody2D-interpolation.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("sleepMode"),
+ new DescriptorAttribute("Sleep Mode", "The sleep state that the rigidbody will initially be in.", "http://docs.unity3d.com/ScriptReference/Rigidbody2D-sleepMode.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("collisionDetectionMode"),
+ new DescriptorAttribute("Collision Detection", "The method used by the physics engine to check if two objects have collided.", "http://docs.unity3d.com/ScriptReference/Rigidbody2D-collisionDetectionMode.html")));
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("constraints"),
+ new DescriptorAttribute("Constraints", "Controls which degrees of freedom are allowed for the simulation of this Rigidbody2D.", "http://docs.unity3d.com/ScriptReference/Rigidbody2D-constraints.html")));
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("velocity"), new InspectAttribute(InspectorLevel.Advanced),
+ new DescriptorAttribute("Velocity", "Linear velocity of the rigidbody.", "http://docs.unity3d.com/ScriptReference/Rigidbody2D-velocity.html")));
+ }
+ }
+} \ No newline at end of file
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/Rigidbody2DEditor.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/Rigidbody2DEditor.cs.meta
new file mode 100644
index 00000000..f12a6d7c
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/Rigidbody2DEditor.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: d0bb3c1cf8af559429a6595132875d69
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/RigidbodyEditor.cs b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/RigidbodyEditor.cs
new file mode 100644
index 00000000..c2d95781
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/RigidbodyEditor.cs
@@ -0,0 +1,72 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Reflection;
+
+using UnityEditor;
+using UnityEngine;
+
+namespace AdvancedInspector
+{
+ [CanEditMultipleObjects]
+ [CustomEditor(typeof(Rigidbody), true)]
+ public class RigidbodyEditor : InspectorEditor
+ {
+ protected override void RefreshFields()
+ {
+ Type type = typeof(Rigidbody);
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("mass"),
+ new DescriptorAttribute("Mass", "The mass of the rigidbody", "https://docs.unity3d.com/Documentation/ScriptReference/Rigidbody-mass.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("drag"),
+ new DescriptorAttribute("Drag", "The drag of the object", "https://docs.unity3d.com/Documentation/ScriptReference/Rigidbody-drag.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("angularDrag"),
+ new DescriptorAttribute("Angular Drag", "The angular drag of the object", "https://docs.unity3d.com/Documentation/ScriptReference/Rigidbody-angularDrag.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("useGravity"),
+ new DescriptorAttribute("Use Gravity", "Is the object affected by world gravity", "https://docs.unity3d.com/Documentation/ScriptReference/Rigidbody-useGravity.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("isKinematic"),
+ new DescriptorAttribute("Is Kinematic", "If true, physic does not drive this object, used for animation", "https://docs.unity3d.com/Documentation/ScriptReference/Rigidbody-isKinematic.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("interpolation"),
+ new DescriptorAttribute("Interpolation", "Interpolation allows you to smooth out the effect of running physics at a fixed frame rate", "https://docs.unity3d.com/Documentation/ScriptReference/Rigidbody-interpolation.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("collisionDetectionMode"),
+ new DescriptorAttribute("Collision Detection", "How collision are detected", "https://docs.unity3d.com/Documentation/ScriptReference/Rigidbody-collisionDetectionMode.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("constraints"), new EnumAttribute(true),
+ new DescriptorAttribute("Constraints", "Controls which degrees of freedom are allowed for the simulation of this Rigidbody", "https://docs.unity3d.com/Documentation/ScriptReference/Rigidbody-constraints.html")));
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("centerOfMass"), new InspectAttribute(InspectorLevel.Advanced),
+ new DescriptorAttribute("Center of Mass", "In essence, the pivot around which the object spins", "https://docs.unity3d.com/Documentation/ScriptReference/Rigidbody-centerOfMass.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("freezeRotation"), new InspectAttribute(InspectorLevel.Advanced),
+ new DescriptorAttribute("Freeze Rotation", "Controls whether physics will change the rotation of the object", "https://docs.unity3d.com/Documentation/ScriptReference/Rigidbody-freezeRotation.html")));
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("inertiaTensor"), new InspectAttribute(InspectorLevel.Advanced),
+ new DescriptorAttribute("Inertia Tensor", "The diagonal inertia tensor of mass relative to the center of mass", "https://docs.unity3d.com/Documentation/ScriptReference/Rigidbody-inertiaTensor.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("inertiaTensorRotation"), new InspectAttribute(InspectorLevel.Advanced),
+ new DescriptorAttribute("Inertia Tensor Rotation", "The rotation of the inertia tensor", "https://docs.unity3d.com/Documentation/ScriptReference/Rigidbody-inertiaTensorRotation.html")));
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("maxAngularVelocity"), new InspectAttribute(InspectorLevel.Advanced),
+ new DescriptorAttribute("Max Angular Velocity", "The maximimum angular velocity of the rigidbody. (Default 7) range { 0, infinity }", "https://docs.unity3d.com/Documentation/ScriptReference/Rigidbody-maxAngularVelocity.html")));
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("sleepThreshold"), new InspectAttribute(InspectorLevel.Advanced),
+ new DescriptorAttribute("Sleep Threshold", "The mass-normalized energy threshold, below which objects start going to sleep.", "http://docs.unity3d.com/ScriptReference/Rigidbody-sleepThreshold.html")));
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("solverIterationCount"), new InspectAttribute(InspectorLevel.Advanced),
+ new DescriptorAttribute("Solver Iteration Count", "Allows you to override the solver iteration count per rigidbody", "https://docs.unity3d.com/Documentation/ScriptReference/Rigidbody-solverIterationCount.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("useConeFriction"), new InspectAttribute(InspectorLevel.Advanced),
+ new DescriptorAttribute("Use Cone Friction", "Force cone friction to be used for this rigidbody", "https://docs.unity3d.com/Documentation/ScriptReference/Rigidbody-useConeFriction.html")));
+
+ InspectorField debug = new InspectorField("Debug");
+ fields.Add(debug);
+
+ debug.Fields.Add(new InspectorField(type, Instances, type.GetProperty("position"), new ReadOnlyAttribute(), new InspectAttribute(InspectorLevel.Debug),
+ new DescriptorAttribute("Position", "The position of the rigidbody", "https://docs.unity3d.com/Documentation/ScriptReference/Rigidbody-position.html")));
+ debug.Fields.Add(new InspectorField(type, Instances, type.GetProperty("rotation"), new ReadOnlyAttribute(), new InspectAttribute(InspectorLevel.Debug),
+ new DescriptorAttribute("Rotation", "The rotation of the rigidbody", "https://docs.unity3d.com/Documentation/ScriptReference/Rigidbody-rotation.html")));
+ debug.Fields.Add(new InspectorField(type, Instances, type.GetProperty("velocity"), new ReadOnlyAttribute(), new InspectAttribute(InspectorLevel.Debug),
+ new DescriptorAttribute("Velocity", "The velocity of the rigidbody", "https://docs.unity3d.com/Documentation/ScriptReference/Rigidbody-velocity.html")));
+ debug.Fields.Add(new InspectorField(type, Instances, type.GetProperty("angularVelocity"), new ReadOnlyAttribute(), new InspectAttribute(InspectorLevel.Debug),
+ new DescriptorAttribute("Angular Velocity", "The rotation velocity of the rigidbody", "https://docs.unity3d.com/Documentation/ScriptReference/Rigidbody-angularVelocity.html")));
+ debug.Fields.Add(new InspectorField(type, Instances, type.GetProperty("worldCenterOfMass"), new InspectAttribute(InspectorLevel.Debug),
+ new DescriptorAttribute("World Center of Mass", "The center of mass of the rigidbody in world space", "https://docs.unity3d.com/Documentation/ScriptReference/Rigidbody-worldCenterOfMass.html")));
+ }
+ }
+} \ No newline at end of file
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/RigidbodyEditor.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/RigidbodyEditor.cs.meta
new file mode 100644
index 00000000..be1230bf
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/RigidbodyEditor.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 1d67a22510eb1e240abe8ebec8839fa4
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SkinnedMeshRendererEditor.cs b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SkinnedMeshRendererEditor.cs
new file mode 100644
index 00000000..a030be92
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SkinnedMeshRendererEditor.cs
@@ -0,0 +1,36 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Reflection;
+
+using UnityEditor;
+using UnityEngine;
+
+namespace AdvancedInspector
+{
+ [CanEditMultipleObjects]
+ [CustomEditor(typeof(SkinnedMeshRenderer), true)]
+ public class SkinnedMeshRendererEditor : RendererEditor
+ {
+ protected override void RefreshFields()
+ {
+ base.RefreshFields();
+ Type type = typeof(SkinnedMeshRenderer);
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("quality"),
+ new DescriptorAttribute("Quality", "The maximum number of bones affecting a single vertex.", "http://docs.unity3d.com/ScriptReference/SkinnedMeshRenderer-quality.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("updateWhenOffscreen"),
+ new DescriptorAttribute("Update Off Screen", "If enabled, the Skinned Mesh will be updated when offscreen. If disabled, this also disables updating animations.", "http://docs.unity3d.com/ScriptReference/SkinnedMeshRenderer-updateWhenOffscreen.html")));
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("sharedMesh"),
+ new DescriptorAttribute("Mesh", "The mesh used for skinning.", "http://docs.unity3d.com/ScriptReference/SkinnedMeshRenderer-sharedMesh.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("rootBone"),
+ new DescriptorAttribute("Root", "The root boot of the skeletton hierarchy.")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("bones"),
+ new CollectionAttribute(-1), new DescriptorAttribute("Bones", "The bones used to skin the mesh.", "http://docs.unity3d.com/ScriptReference/SkinnedMeshRenderer-bones.html"), new InspectAttribute(InspectorLevel.Advanced)));
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("localBounds"),
+ new DescriptorAttribute("Bounds", "AABB of this Skinned Mesh in its local space.", "http://docs.unity3d.com/ScriptReference/SkinnedMeshRenderer-localBounds.html"), new InspectAttribute(InspectorLevel.Advanced)));
+ }
+ }
+} \ No newline at end of file
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SkinnedMeshRendererEditor.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SkinnedMeshRendererEditor.cs.meta
new file mode 100644
index 00000000..b8af0844
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SkinnedMeshRendererEditor.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: e89a2246ecd24504bafbbe834d56c265
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SphereColliderEditor.cs b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SphereColliderEditor.cs
new file mode 100644
index 00000000..16f0b519
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SphereColliderEditor.cs
@@ -0,0 +1,76 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Reflection;
+
+using UnityEditor;
+using UnityEngine;
+
+namespace AdvancedInspector
+{
+ [CanEditMultipleObjects]
+ [CustomEditor(typeof(SphereCollider), true)]
+ public class SphereColliderEditor : ColliderEditor
+ {
+ private int ControlID = -1;
+
+ protected override void RefreshFields()
+ {
+ Type type = typeof(SphereCollider);
+
+ base.RefreshFields();
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("center"),
+ new DescriptorAttribute("Center", "The center of the sphere, measured in the object's local space.", "http://docs.unity3d.com/ScriptReference/SphereCollider-center.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("radius"),
+ new DescriptorAttribute("Radius", "The radius of the sphere, measured in the object's local space.", "http://docs.unity3d.com/ScriptReference/SphereCollider-radius.html")));
+ }
+
+ protected override void OnSceneGUI()
+ {
+ base.OnSceneGUI();
+
+ if (Event.current.type == EventType.Used)
+ return;
+
+ SphereCollider collider = (SphereCollider)target;
+ Color color = Handles.color;
+
+ if (collider.enabled)
+ Handles.color = ColliderHandleColor;
+ else
+ Handles.color = ColliderHandleColorDisabled;
+
+ bool enabled = GUI.enabled;
+ if (!Event.current.shift && GUIUtility.hotControl != ControlID)
+ {
+ GUI.enabled = false;
+ Handles.color = new Color(0f, 0f, 0f, 0.001f);
+ }
+
+ Vector3 lossyScale = collider.transform.lossyScale;
+ float x = Mathf.Abs(lossyScale.x);
+
+ float scale = Mathf.Max(Mathf.Max(x, Mathf.Abs(lossyScale.y)), Mathf.Abs(lossyScale.z));
+ float radius = Mathf.Max(Mathf.Abs(scale * collider.radius), 0.001f);
+
+ Vector3 position = collider.transform.TransformPoint(collider.center);
+ Quaternion rotation = collider.transform.rotation;
+
+ int hotControl = GUIUtility.hotControl;
+ float value = Handles.RadiusHandle(rotation, position, radius, true);
+
+ if (GUI.changed)
+ {
+ Undo.RecordObject(collider, "Edited Sphere Collider");
+ collider.radius = value / scale;
+ }
+
+ if (hotControl != GUIUtility.hotControl && GUIUtility.hotControl != 0)
+ ControlID = GUIUtility.hotControl;
+
+ Handles.color = color;
+ GUI.enabled = enabled;
+ }
+ }
+} \ No newline at end of file
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SphereColliderEditor.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SphereColliderEditor.cs.meta
new file mode 100644
index 00000000..ecfce56a
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SphereColliderEditor.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: c593d1bebd359cc4c8a9ab8af4ab926d
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SpringJoint2DEditor.cs b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SpringJoint2DEditor.cs
new file mode 100644
index 00000000..c297b985
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SpringJoint2DEditor.cs
@@ -0,0 +1,28 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Reflection;
+
+using UnityEditor;
+using UnityEngine;
+
+namespace AdvancedInspector
+{
+ [CanEditMultipleObjects]
+ [CustomEditor(typeof(SpringJoint2D), true)]
+ public class SpringJoint2DEditor : AnchoredJoint2DEditor
+ {
+ protected override void RefreshFields()
+ {
+ base.RefreshFields();
+ Type type = typeof(SpringJoint2D);
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("dampingRatio"),
+ new DescriptorAttribute("Damping Ratio", "The amount by which the spring force is reduced in proportion to the movement speed.", "http://docs.unity3d.com/ScriptReference/SpringJoint2D-dampingRatio.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("distance"),
+ new DescriptorAttribute("Distance", "The distance the spring will try to keep between the two objects.", "http://docs.unity3d.com/ScriptReference/SpringJoint2D-distance.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("frequency"),
+ new DescriptorAttribute("Frequency", "The frequency at which the spring oscillates around the distance distance between the objects.", "http://docs.unity3d.com/ScriptReference/SpringJoint2D-frequency.html")));
+ }
+ }
+} \ No newline at end of file
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SpringJoint2DEditor.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SpringJoint2DEditor.cs.meta
new file mode 100644
index 00000000..7b6300b5
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SpringJoint2DEditor.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: d4b19f118a5c41a43b3069f11a4c8490
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SpringJointEditor.cs b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SpringJointEditor.cs
new file mode 100644
index 00000000..445095ed
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SpringJointEditor.cs
@@ -0,0 +1,30 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Reflection;
+
+using UnityEditor;
+using UnityEngine;
+
+namespace AdvancedInspector
+{
+ [CanEditMultipleObjects]
+ [CustomEditor(typeof(SpringJoint), true)]
+ public class SpringJointEditor : JointEditor
+ {
+ protected override void RefreshFields()
+ {
+ base.RefreshFields();
+ Type type = typeof(SpringJoint);
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("damper"),
+ new DescriptorAttribute("Damper", "The damper force used to dampen the spring force.", "http://docs.unity3d.com/ScriptReference/SpringJoint-damper.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("spring"),
+ new DescriptorAttribute("Spring", "The spring force used to keep the two objects together.", "http://docs.unity3d.com/ScriptReference/SpringJoint-spring.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("minDistance"),
+ new DescriptorAttribute("Minimum Distance", "The minimum distance between the bodies relative to their initial distance.", "http://docs.unity3d.com/ScriptReference/SpringJoint-minDistance.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("maxDistance"),
+ new DescriptorAttribute("Maximum Distance", "The maximum distance between the bodies relative to their initial distance.", "http://docs.unity3d.com/ScriptReference/SpringJoint-maxDistance.html")));
+ }
+ }
+} \ No newline at end of file
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SpringJointEditor.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SpringJointEditor.cs.meta
new file mode 100644
index 00000000..89f200fd
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SpringJointEditor.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: ef55a4c43739280438783fe3c0648c60
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SpriteRendererEditor.cs b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SpriteRendererEditor.cs
new file mode 100644
index 00000000..6ee4f9ee
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SpriteRendererEditor.cs
@@ -0,0 +1,36 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Reflection;
+
+using UnityEditor;
+using UnityEngine;
+
+namespace AdvancedInspector
+{
+ //Under construction. Unity's editor has multiple internal method and classes used for this editor.
+ /*[CanEditMultipleObjects]
+ //[CustomEditor(typeof(SpriteRenderer), true)]
+ public class SpriteRendererEditor : RendererEditor
+ {
+ protected override void RefreshFields()
+ {
+ Type type = typeof(SpriteRenderer);
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("subMeshCount"),
+ new DescriptorAttribute("Sub Mesh Count", "The number of submesh this mesh has.")));
+ }
+
+ private void IsMaterialUsingFixedFunction(out bool vertex, out bool fragment)
+ {
+ vertex = false;
+ fragment = false;
+ Material sharedMaterial = (base.target as SpriteRenderer).sharedMaterial;
+ if (sharedMaterial != null)
+ {
+ vertex = ShaderUtil.GetVertexModel(sharedMaterial.shader) == ShaderUtil.ShaderModel.None;
+ fragment = ShaderUtil.GetFragmentModel(sharedMaterial.shader) == ShaderUtil.ShaderModel.None;
+ }
+ }
+ }*/
+} \ No newline at end of file
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SpriteRendererEditor.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SpriteRendererEditor.cs.meta
new file mode 100644
index 00000000..23399f70
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SpriteRendererEditor.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 1e7e1c25afd649e429c7ebc946213e1b
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes.meta b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes.meta
new file mode 100644
index 00000000..65799e90
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes.meta
@@ -0,0 +1,5 @@
+fileFormatVersion: 2
+guid: 17d10043e438a1b4a957506dd467ac9d
+folderAsset: yes
+DefaultImporter:
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes/JointAngleLimits2D.cs b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes/JointAngleLimits2D.cs
new file mode 100644
index 00000000..ee057444
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes/JointAngleLimits2D.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Reflection;
+
+using UnityEditor;
+using UnityEngine;
+
+namespace AdvancedInspector
+{
+ [CanEditMultipleObjects]
+ [CustomEditor(typeof(JointAngleLimits2D), true)]
+ public class JointAngleLimits2DEditor : InspectorEditor
+ {
+ protected override void RefreshFields()
+ {
+ Type type = typeof(JointAngleLimits2D);
+
+ fields.Add(new InspectorField(parent, type, Instances, type.GetProperty("min"),
+ new DescriptorAttribute("Lower Angle", "Lower angular limit of rotation.", "http://docs.unity3d.com/ScriptReference/JointAngleLimits2D-min.html")));
+ fields.Add(new InspectorField(parent, type, Instances, type.GetProperty("max"),
+ new DescriptorAttribute("Upper Angle", "Upper angular limit of rotation.", "http://docs.unity3d.com/ScriptReference/JointAngleLimits2D-max.html")));
+ }
+ }
+} \ No newline at end of file
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes/JointAngleLimits2D.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes/JointAngleLimits2D.cs.meta
new file mode 100644
index 00000000..da5932a3
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes/JointAngleLimits2D.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 1931b05fa3c73e043b6c0808c650582e
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes/JointDriveEditor.cs b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes/JointDriveEditor.cs
new file mode 100644
index 00000000..99b097d2
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes/JointDriveEditor.cs
@@ -0,0 +1,29 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Reflection;
+
+using UnityEditor;
+using UnityEngine;
+
+namespace AdvancedInspector
+{
+ [CanEditMultipleObjects]
+ [CustomEditor(typeof(JointDrive), true)]
+ public class JointDriveEditor : InspectorEditor
+ {
+ protected override void RefreshFields()
+ {
+ Type type = typeof(JointDrive);
+
+ fields.Add(new InspectorField(parent, type, Instances, type.GetProperty("maximumForce"),
+ new DescriptorAttribute("Maximum Force", "Amount of force applied to push the object toward the defined direction.", "http://docs.unity3d.com/ScriptReference/JointDrive-maximumForce.html")));
+ fields.Add(new InspectorField(parent, type, Instances, type.GetProperty("mode"),
+ new DescriptorAttribute("Mode", "Whether the drive should attempt to reach position, velocity, both or nothing.", "http://docs.unity3d.com/ScriptReference/JointDrive-mode.html")));
+ fields.Add(new InspectorField(parent, type, Instances, type.GetProperty("positionDamper"),
+ new DescriptorAttribute("Position Damper", "Resistance strength against the Position Spring. Only used if mode includes Position.", "http://docs.unity3d.com/ScriptReference/JointDrive-positionDamper.html")));
+ fields.Add(new InspectorField(parent, type, Instances, type.GetProperty("positionSpring"),
+ new DescriptorAttribute("Position Spring", "Strength of a rubber-band pull toward the defined direction. Only used if mode includes Position.", "http://docs.unity3d.com/ScriptReference/JointDrive-positionSpring.html")));
+ }
+ }
+} \ No newline at end of file
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes/JointDriveEditor.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes/JointDriveEditor.cs.meta
new file mode 100644
index 00000000..b7aeab71
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes/JointDriveEditor.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: ecf97e5de8d75dc48abf82579a240c2b
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes/JointLimitsEditor.cs b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes/JointLimitsEditor.cs
new file mode 100644
index 00000000..834679eb
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes/JointLimitsEditor.cs
@@ -0,0 +1,29 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Reflection;
+
+using UnityEditor;
+using UnityEngine;
+
+namespace AdvancedInspector
+{
+ [CanEditMultipleObjects]
+ [CustomEditor(typeof(JointLimits), true)]
+ public class JointLimitsEditor : InspectorEditor
+ {
+ protected override void RefreshFields()
+ {
+ Type type = typeof(JointLimits);
+
+ fields.Add(new InspectorField(parent, type, Instances, type.GetProperty("min"),
+ new DescriptorAttribute("Minimum", "The lower limit of the joint.", "http://docs.unity3d.com/ScriptReference/JointLimits-min.html")));
+ fields.Add(new InspectorField(parent, type, Instances, type.GetProperty("minBounce"),
+ new DescriptorAttribute("Minimum Bounce", "The bounciness of the joint when hitting the lower limit of the joint.", "http://docs.unity3d.com/ScriptReference/JointLimits-minBounce.html")));
+ fields.Add(new InspectorField(parent, type, Instances, type.GetProperty("max"),
+ new DescriptorAttribute("Maximum", "The upper limit of the joint.", "http://docs.unity3d.com/ScriptReference/JointLimits-max.html")));
+ fields.Add(new InspectorField(parent, type, Instances, type.GetProperty("maxBounce"),
+ new DescriptorAttribute("Maximum Bounce", "The bounciness of the joint when hitting the upper limit of the joint.", "http://docs.unity3d.com/ScriptReference/JointLimits-maxBounce.html")));
+ }
+ }
+} \ No newline at end of file
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes/JointLimitsEditor.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes/JointLimitsEditor.cs.meta
new file mode 100644
index 00000000..3a19c9c0
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes/JointLimitsEditor.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 6604bae731e21cc428c2af5fe4345816
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes/JointMotor2DEditor.cs b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes/JointMotor2DEditor.cs
new file mode 100644
index 00000000..7878455f
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes/JointMotor2DEditor.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Reflection;
+
+using UnityEditor;
+using UnityEngine;
+
+namespace AdvancedInspector
+{
+ [CanEditMultipleObjects]
+ [CustomEditor(typeof(JointMotor2D), true)]
+ public class JointMotor2DEditor : InspectorEditor
+ {
+ protected override void RefreshFields()
+ {
+ Type type = typeof(JointMotor2D);
+
+ fields.Add(new InspectorField(parent, type, Instances, type.GetProperty("maxMotorTorque"),
+ new DescriptorAttribute("Maximum Motor Torque", "The maximum force that can be applied to the Rigidbody2D at the joint to attain the target speed.", "http://docs.unity3d.com/ScriptReference/JointMotor2D-maxMotorTorque.html")));
+ fields.Add(new InspectorField(parent, type, Instances, type.GetProperty("motorSpeed"),
+ new DescriptorAttribute("Motor Speed", "The desired speed for the Rigidbody2D to reach as it moves with the joint.", "http://docs.unity3d.com/ScriptReference/JointMotor2D-motorSpeed.html")));
+ }
+ }
+} \ No newline at end of file
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes/JointMotor2DEditor.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes/JointMotor2DEditor.cs.meta
new file mode 100644
index 00000000..5cd76dec
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes/JointMotor2DEditor.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: df584c85589b426428f18a1db8819468
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes/JointMotorEditor.cs b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes/JointMotorEditor.cs
new file mode 100644
index 00000000..aa08051f
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes/JointMotorEditor.cs
@@ -0,0 +1,27 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Reflection;
+
+using UnityEditor;
+using UnityEngine;
+
+namespace AdvancedInspector
+{
+ [CanEditMultipleObjects]
+ [CustomEditor(typeof(JointMotor), true)]
+ public class JointMotorEditor : InspectorEditor
+ {
+ protected override void RefreshFields()
+ {
+ Type type = typeof(JointMotor);
+
+ fields.Add(new InspectorField(parent, type, Instances, type.GetProperty("force"),
+ new DescriptorAttribute("Force", "The motor will apply a force.", "http://docs.unity3d.com/ScriptReference/JointMotor-force.html")));
+ fields.Add(new InspectorField(parent, type, Instances, type.GetProperty("freeSpin"),
+ new DescriptorAttribute("Free Spin", "If freeSpin is enabled the motor will only accelerate but never slow down.", "http://docs.unity3d.com/ScriptReference/JointMotor-freeSpin.html")));
+ fields.Add(new InspectorField(parent, type, Instances, type.GetProperty("targetVelocity"),
+ new DescriptorAttribute("Target Velocity", "The motor will apply a force up to force to achieve targetVelocity.", "http://docs.unity3d.com/ScriptReference/JointMotor-targetVelocity.html")));
+ }
+ }
+} \ No newline at end of file
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes/JointMotorEditor.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes/JointMotorEditor.cs.meta
new file mode 100644
index 00000000..9d3377d6
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes/JointMotorEditor.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: edad1525ab08563449869286171570fe
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes/JointSpringEditor.cs b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes/JointSpringEditor.cs
new file mode 100644
index 00000000..925489e4
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes/JointSpringEditor.cs
@@ -0,0 +1,27 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Reflection;
+
+using UnityEditor;
+using UnityEngine;
+
+namespace AdvancedInspector
+{
+ [CanEditMultipleObjects]
+ [CustomEditor(typeof(JointSpring), true)]
+ public class JointSpringEditor : InspectorEditor
+ {
+ protected override void RefreshFields()
+ {
+ Type type = typeof(JointSpring);
+
+ fields.Add(new InspectorField(parent, type, Instances, type.GetField("damper"),
+ new DescriptorAttribute("Damper", "The damper force uses to dampen the spring.", "http://docs.unity3d.com/ScriptReference/JointSpring-damper.html")));
+ fields.Add(new InspectorField(parent, type, Instances, type.GetField("spring"),
+ new DescriptorAttribute("Spring", "The spring forces used to reach the target position.", "http://docs.unity3d.com/ScriptReference/JointSpring-spring.html")));
+ fields.Add(new InspectorField(parent, type, Instances, type.GetField("targetPosition"),
+ new DescriptorAttribute("Target Position", "The target position the joint attempts to reach.", "http://docs.unity3d.com/ScriptReference/JointSpring-targetPosition.html")));
+ }
+ }
+} \ No newline at end of file
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes/JointSpringEditor.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes/JointSpringEditor.cs.meta
new file mode 100644
index 00000000..22e7faa5
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes/JointSpringEditor.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 78cd38f97873b494696f3b39efb6be6b
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes/SoftJointLimitEditor.cs b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes/SoftJointLimitEditor.cs
new file mode 100644
index 00000000..216b85ae
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes/SoftJointLimitEditor.cs
@@ -0,0 +1,29 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Reflection;
+
+using UnityEditor;
+using UnityEngine;
+
+namespace AdvancedInspector
+{
+ [CanEditMultipleObjects]
+ [CustomEditor(typeof(SoftJointLimit), true)]
+ public class SoftJointLimitEditor : InspectorEditor
+ {
+ protected override void RefreshFields()
+ {
+ Type type = typeof(SoftJointLimit);
+
+ fields.Add(new InspectorField(parent, type, Instances, type.GetProperty("bounciness"),
+ new DescriptorAttribute("Bounciness", "When the joint hits the limit, it can be made to bounce off it.", "http://docs.unity3d.com/ScriptReference/SoftJointLimit-bounciness.html")));
+ fields.Add(new InspectorField(parent, type, Instances, type.GetProperty("damper"),
+ new DescriptorAttribute("Damper", "If spring is greater than zero, the limit is soft.", "http://docs.unity3d.com/ScriptReference/SoftJointLimit-damper.html")));
+ fields.Add(new InspectorField(parent, type, Instances, type.GetProperty("limit"),
+ new DescriptorAttribute("Limit", "The limit position/angle of the joint.", "http://docs.unity3d.com/ScriptReference/SoftJointLimit-limit.html")));
+ fields.Add(new InspectorField(parent, type, Instances, type.GetProperty("spring"),
+ new DescriptorAttribute("Spring", "If greater than zero, the limit is soft. The spring will pull the joint back.", "http://docs.unity3d.com/ScriptReference/SoftJointLimit-spring.html")));
+ }
+ }
+} \ No newline at end of file
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes/SoftJointLimitEditor.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes/SoftJointLimitEditor.cs.meta
new file mode 100644
index 00000000..b87ed17f
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes/SoftJointLimitEditor.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 394fe629fc2ed3344b6393d22fd84d6e
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes/WheelFrictionCurveEditor.cs b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes/WheelFrictionCurveEditor.cs
new file mode 100644
index 00000000..7fefbdf9
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes/WheelFrictionCurveEditor.cs
@@ -0,0 +1,31 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Reflection;
+
+using UnityEditor;
+using UnityEngine;
+
+namespace AdvancedInspector
+{
+ [CanEditMultipleObjects]
+ [CustomEditor(typeof(WheelFrictionCurve), true)]
+ public class WheelFrictionCurveEditor : InspectorEditor
+ {
+ protected override void RefreshFields()
+ {
+ Type type = typeof(WheelFrictionCurve);
+
+ fields.Add(new InspectorField(parent, type, Instances, type.GetProperty("extremumSlip"),
+ new DescriptorAttribute("Extremum Slip", "")));
+ fields.Add(new InspectorField(parent, type, Instances, type.GetProperty("extremumValue"),
+ new DescriptorAttribute("Extremum Value", "")));
+ fields.Add(new InspectorField(parent, type, Instances, type.GetProperty("asymptoteSlip"),
+ new DescriptorAttribute("Asymptote Slip", "")));
+ fields.Add(new InspectorField(parent, type, Instances, type.GetProperty("asymptoteValue"),
+ new DescriptorAttribute("Asymptote Value", "")));
+ fields.Add(new InspectorField(parent, type, Instances, type.GetProperty("stiffness"),
+ new DescriptorAttribute("Stiffness", "")));
+ }
+ }
+} \ No newline at end of file
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes/WheelFrictionCurveEditor.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes/WheelFrictionCurveEditor.cs.meta
new file mode 100644
index 00000000..a0590680
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/SubTypes/WheelFrictionCurveEditor.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 88effe38dc3d6ed46a367906af5bc842
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/TerrainColliderEditor.cs b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/TerrainColliderEditor.cs
new file mode 100644
index 00000000..d2c41a48
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/TerrainColliderEditor.cs
@@ -0,0 +1,32 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+
+using UnityEditor;
+using UnityEngine;
+
+namespace AdvancedInspector
+{
+ [CanEditMultipleObjects]
+ [CustomEditor(typeof(TerrainCollider), true)]
+ public class TerrainColliderEditor : InspectorEditor
+ {
+ protected override void RefreshFields()
+ {
+ Type type = typeof(TerrainCollider);
+ if (Instances == null || Instances.Length == 0)
+ return;
+
+ SerializedObject so = new SerializedObject(Instances.Cast<UnityEngine.Object>().ToArray());
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("isTrigger"),
+ new DescriptorAttribute("Is Trigger", "Is the collider a trigger?", "http://docs.unity3d.com/ScriptReference/Collider-isTrigger.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("terrainData"),
+ new DescriptorAttribute("Terrain Data", "The terrain that stores the heightmap.", "http://docs.unity3d.com/ScriptReference/TerrainCollider-terrainData.html")));
+ fields.Add(new InspectorField(type, Instances, so.FindProperty("m_EnableTreeColliders"),
+ new DescriptorAttribute("Create Tree Colliders", "", "")));
+ }
+ }
+} \ No newline at end of file
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/TerrainColliderEditor.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/TerrainColliderEditor.cs.meta
new file mode 100644
index 00000000..e6ff5f46
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/TerrainColliderEditor.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: e47c360e7747b4840891bf1f1c1dbad4
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/TextMeshEditor.cs b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/TextMeshEditor.cs
new file mode 100644
index 00000000..3f955169
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/TextMeshEditor.cs
@@ -0,0 +1,49 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Reflection;
+
+using UnityEditor;
+using UnityEngine;
+
+namespace AdvancedInspector
+{
+ [CanEditMultipleObjects]
+ [CustomEditor(typeof(TextMesh), true)]
+ public class TextMeshEditor : InspectorEditor
+ {
+ protected override void RefreshFields()
+ {
+ Type type = typeof(TextMesh);
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("text"), new TextFieldAttribute(TextFieldType.Area),
+ new DescriptorAttribute("Text", "The text that is displayed.", "http://docs.unity3d.com/ScriptReference/TextMesh-text.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("font"),
+ new DescriptorAttribute("Font", "The Font used.", "http://docs.unity3d.com/ScriptReference/TextMesh-font.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("color"),
+ new DescriptorAttribute("Color", "The color used to render the text.", "http://docs.unity3d.com/ScriptReference/TextMesh-color.html")));
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("fontSize"),
+ new DescriptorAttribute("Font Size", "The font size to use (for dynamic fonts).", "http://docs.unity3d.com/ScriptReference/TextMesh-fontSize.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("characterSize"),
+ new DescriptorAttribute("Character Size", "The size of each character (This scales the whole text).", "http://docs.unity3d.com/ScriptReference/TextMesh-characterSize.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("tabSize"),
+ new DescriptorAttribute("Tab Size", "How much space will be inserted for a tab '\t' character. This is a multiplum of the 'spacebar' character offset.", "http://docs.unity3d.com/ScriptReference/TextMesh-tabSize.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("lineSpacing"),
+ new DescriptorAttribute("Line Spacing", "How much space will be in-between lines of text.", "http://docs.unity3d.com/ScriptReference/TextMesh-lineSpacing.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("offsetZ"),
+ new DescriptorAttribute("Z Offset", "How far should the text be offset from the transform.position.z when drawing.", "http://docs.unity3d.com/ScriptReference/TextMesh-offsetZ.html")));
+
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("fontStyle"),
+ new DescriptorAttribute("Font Style", "The font style to use (for dynamic fonts).", "http://docs.unity3d.com/ScriptReference/TextMesh-fontStyle.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("anchor"),
+ new DescriptorAttribute("Anchor", "Which point of the text shares the position of the Transform.", "http://docs.unity3d.com/ScriptReference/TextMesh-anchor.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("alignment"),
+ new DescriptorAttribute("Alignment", "How lines of text are aligned (Left, Right, Center).", "http://docs.unity3d.com/ScriptReference/TextMesh-alignment.html")));
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("richText"),
+ new DescriptorAttribute("Rich Text", "Enable HTML-style tags for Text Formatting Markup.", "http://docs.unity3d.com/ScriptReference/TextMesh-richText.html")));
+ }
+ }
+} \ No newline at end of file
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/TextMeshEditor.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/TextMeshEditor.cs.meta
new file mode 100644
index 00000000..aee5baa7
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/TextMeshEditor.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 1943876aa3c70a848aeadef8f6a6b46b
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/TransformEditor.cs b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/TransformEditor.cs
new file mode 100644
index 00000000..3cea991f
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/TransformEditor.cs
@@ -0,0 +1,32 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Reflection;
+
+using UnityEditor;
+using UnityEngine;
+
+namespace AdvancedInspector
+{
+ [CanEditMultipleObjects]
+ [CustomEditor(typeof(Transform), true)]
+ public class TransformEditor : InspectorEditor
+ {
+ protected override void RefreshFields()
+ {
+ Type type = typeof(Transform);
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("localPosition"),
+ new DescriptorAttribute("Position", "Position of the transform relative to the parent transform.", "http://docs.unity3d.com/ScriptReference/Transform-localPosition.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("localEulerAngles"),
+ new DescriptorAttribute("Rotation", "The rotation of the transform relative to the parent transform's rotation.", "http://docs.unity3d.com/ScriptReference/Transform-localRotation.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("localScale"),
+ new DescriptorAttribute("Scale", "The scale of the transform relative to the parent.", "http://docs.unity3d.com/ScriptReference/Transform-localScale.html")));
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("position"), new InspectAttribute(InspectorLevel.Advanced),
+ new DescriptorAttribute("World Position", "The position of the transform in world space.", "http://docs.unity3d.com/ScriptReference/Transform-position.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("rotation"), new InspectAttribute(InspectorLevel.Advanced),
+ new DescriptorAttribute("World Rotation", "The rotation of the transform in world space stored as a Quaternion.", "http://docs.unity3d.com/ScriptReference/Transform-rotation.html")));
+ }
+ }
+}
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/TransformEditor.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/TransformEditor.cs.meta
new file mode 100644
index 00000000..51386f31
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/TransformEditor.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: e4a8fde3da56bf6439cd4b5a39090868
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/WheelColliderEditor.cs b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/WheelColliderEditor.cs
new file mode 100644
index 00000000..dd84d871
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/WheelColliderEditor.cs
@@ -0,0 +1,47 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Reflection;
+
+using UnityEditor;
+using UnityEngine;
+
+namespace AdvancedInspector
+{
+ [CanEditMultipleObjects]
+ [CustomEditor(typeof(WheelCollider), true)]
+ public class WheelColliderEditor : ColliderEditor
+ {
+ protected override void RefreshFields()
+ {
+ Type type = typeof(WheelCollider);
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("mass"),
+ new DescriptorAttribute("Mass", "The mass of the wheel. Must be larger than zero.", "http://docs.unity3d.com/ScriptReference/WheelCollider-mass.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("radius"),
+ new DescriptorAttribute("Radius", "The radius of the wheel, measured in local space.", "http://docs.unity3d.com/ScriptReference/WheelCollider-radius.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("suspensionDistance"),
+ new DescriptorAttribute("Suspension Distance", "Maximum extension distance of wheel suspension, measured in local space.", "http://docs.unity3d.com/ScriptReference/WheelCollider-suspensionDistance.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("center"),
+ new DescriptorAttribute("Center", "The center of the wheel, measured in the object's local space.", "http://docs.unity3d.com/ScriptReference/WheelCollider-center.html")));
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("suspensionSpring"), new BypassAttribute(),
+ new DescriptorAttribute("Suspension Spring", "The parameters of wheel's suspension. The suspension attempts to reach a target position.", "http://docs.unity3d.com/ScriptReference/WheelCollider-suspensionSpring.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("forwardFriction"),
+ new DescriptorAttribute("Forward Friction", "Properties of tire friction in the direction the wheel is pointing in.", "http://docs.unity3d.com/ScriptReference/WheelCollider-forwardFriction.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("sidewaysFriction"),
+ new DescriptorAttribute("Sideways Friction", "Properties of tire friction in the sideways direction.", "http://docs.unity3d.com/ScriptReference/WheelCollider-sidewaysFriction.html")));
+
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("brakeTorque"), new InspectAttribute(InspectorLevel.Advanced),
+ new DescriptorAttribute("Brake Torque", "Brake torque. Must be positive.", "http://docs.unity3d.com/ScriptReference/WheelCollider-brakeTorque.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("motorTorque"), new InspectAttribute(InspectorLevel.Advanced),
+ new DescriptorAttribute("Motor Torque", "Motor torque on the wheel axle. Positive or negative depending on direction.", "http://docs.unity3d.com/ScriptReference/WheelCollider-motorTorque.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("steerAngle"), new InspectAttribute(InspectorLevel.Advanced),
+ new DescriptorAttribute("Steer Angle", "Steering angle in degrees, always around the local y-axis.", "http://docs.unity3d.com/ScriptReference/WheelCollider-steerAngle.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("isGrounded"), new InspectAttribute(InspectorLevel.Advanced),
+ new DescriptorAttribute("Is Grounded", "Indicates whether the wheel currently collides with something (Read Only).", "http://docs.unity3d.com/ScriptReference/WheelCollider-isGrounded.html")));
+ fields.Add(new InspectorField(type, Instances, type.GetProperty("rpm"), new InspectAttribute(InspectorLevel.Advanced),
+ new DescriptorAttribute("RPM", "Current wheel axle rotation speed, in rotations per minute (Read Only).", "http://docs.unity3d.com/ScriptReference/WheelCollider-rpm.html")));
+ }
+ }
+} \ No newline at end of file
diff --git a/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/WheelColliderEditor.cs.meta b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/WheelColliderEditor.cs.meta
new file mode 100644
index 00000000..1d401583
--- /dev/null
+++ b/Assets/Plugins/Editor/AdvancedInspector/UnityTypes/WheelColliderEditor.cs.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: b26718886a14c964687ac19bab859614
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData: