From e846c64d6f927879cb8a095e62d773a8d7b3c9f4 Mon Sep 17 00:00:00 2001 From: chai Date: Thu, 15 Oct 2020 07:24:10 +0800 Subject: *ability system --- .../Editor/AdvancedInspector/AdvancedInspector.XML | 1630 ++++++++++++++++++++ 1 file changed, 1630 insertions(+) create mode 100644 Assets/Plugins/Editor/AdvancedInspector/AdvancedInspector.XML (limited to 'Assets/Plugins/Editor/AdvancedInspector/AdvancedInspector.XML') 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 @@ + + + + AdvancedInspector + + + + + 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. + + + + + This EditorWindow can recieve and send Toolbox inputs. + + + + + Called when the Toolbox shortcut is pressed. + The implementation should call CreateToolbox if the condition are right. + + + + + 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. + + + + + IModal Implementation. + + + + + IModal Implementation. + + + + + Called by an Editor to have a collection of InspectorField to be displayed. + Uniformized entry point of inspector drawing. + + + + + Called by an Editor to have a collection of InspectorField to be displayed. + Uniformized entry point of inspector drawing. + + + + + Called by an Editor to have a collection of InspectorField to be displayed. + Uniformized entry point of inspector drawing. + + + + + Entry point of the inspection of a Property based editor. + + + + + Unity doesn't always properly init it's array/list if a serialization reload didn't occur. + + + + + Draw the arrow icon that allow to browse sub-object property. + + + + + Draw the control of an sortable list. + Return true if a list has been modified and requires a redraw. + + + + + Draw the - button for a Dictionary + + + + + Draw the "Restricted" enum, which is a runtime list provide by a method. + + + + + Draw the +/- icon to control the creation and deletion of user created object. + + + + + Draw the + icon of a List + + + + + Draw the + icon of a Dictionary + + + + + Draw the left side of a field, the label. + + + + + Width of the label part. + + + + + Draw the help box bellow the field. + + + + + Help box at the top or bottom of the whole inspector. + + + + + This method is invoked to build a list of proper delegate to invoke. + + + + + Get the list of valid derivaton from a specific type. + Used to create derived object, should always be from ComponentMonoBehaviour but is not enforced. + + + + + Group box style + + + + + When complex operation are performed, the Inspector blocks repaint. + + + + + Current complexity level. + + + + + How the fields are sorted. + + + + + Raised if the inspector needs a redraw. + + + + + Used for internal callback from a modal windows. + + + + + Used for internal callback from a modal windows. + + + + + Field sorting enum. + + + + + No sorting, using the order found in code. + + + + + Alphabethic sorting A, B, C... + + + + + Anti-alphabethic sorting, C, B, A... + + + + + 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. + + + + + Minimum field height + + + + + Button Height + + + + + Standard float-in-vector label width + + + + + The draw call from the Inspector. + + + + + Called after the label is drawn. + Useful to add dragging modifier. + + + + + Event raised when someone click a label. + + + + + Event raised when someone double click a label. + + + + + Fired when someone click and drag the label with modified key (control/shift/alt) pressed. + A normal drag performs a copy/paste. + + + + + Event raised when someone right-click a label. + The GenenicMenu is empty and can add new items in it. + + + + + Get the value of a field. + Flag "Show Mixed Value" automaticly and return null if a multi-selection has different values. + + + + + Override if you want to prevent a type from being expandable at any time. + Override the Expandable attributes. + + + + + If true and no fieldeditor is found for a specific type, this fieldeditor is used for the derived type. + + + + + List of type this FieldEditor edit. + + + + + Base class of BehaviourEditor, ScriptableEditor and ExternalEditor. + + + + + Preview is handled internally and is turned on and off using IPreview interface. + + + + + In case of value type, we need to know the parent. + + + + + List of fields held by this inspector. + + + + + When a value changed internally, this forces the fields to be refreshed. + + + + + Unity's OnEnable. + + + + + Unity's OnDisable + + + + + Start the Scene View picking tool. + Type can define the component we seek on a GameObject. + + + + + Stop the picking tool before it has resolved. + + + + + Preview Draw + + + + + Override this method if you want to draw on the scene view. + Don't forget to call the base. + + + + + Preview Settings + + + + + Data Changed, repaint. + + + + + Unity's Default Margins. False if running in Advanced Inspector. + + + + + Default Inspector entry point. + + + + + Similar to "DrawDefaultInspector", except this is the Advanced one. + + + + + 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. + + + + + Is the Inspector currently in picking mode? + + + + + Return true if this editor is using advanced features. + + + + + We use our own targets list because we can draw object not deriving from UnityEngine.Object. + + + + + List of fields held by this inspector. + + + + + Override this if you implement your own inspector and doesn't want it to be expandable. + + + + + If true, will test if the type of in the inspector object has "AdvancedInspector" attributes. + Default; false; + + + + + Behaviour Editor is the entry point for all MonoBehaviour in Advanced Inspector. + + + + + Unity's OnEnable. + + + + + Should we check for the [AdvancedInspectorAttribute]? + + + + + 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. + + + + + Define a control that can be drawn in an EditorWindow. + + + + + Draw the control. Return if the parent EditorWindow should repaint the window. + + + + + In the event an internal process of the Control want a repaint of the window outside the Drawing scope. + + + + + IControl implementation + + + + + If false, the Inspector won't draw the expander and won't reserve space on the left of the labels. + + + + + Can the separator be dragged around? + + + + + Where is the separator? + In PerPixel, the value is in pixel from the top or the left. + Otherwise, it's in %. + + + + + IControl implementation + + + + + Scriptable Editor is the entry point for all ScriptableObject in Advanced Inspector. + + + + + Unity's OnEnable. + + + + + Should we check for the [AdvancedInspectorAttribute]? + + + + + Pooled information about a PropertyInfo and translated for the Inspector. + + + + + This constructor is used as a duplication. + Note that this field is free and not parented to anything. + Use with great care! + + + + + Entry point for a generic manually created field. + + + + + Entry point for a generic manually created field. + + + + + Entry point for a generic indexed serialized created field. + + + + + Entry point for a generic serialized created field. + + + + + Entry point for an empty field with no editor. + + + + + Entry point of a group. + + + + + Entry point of a toolbar. + + + + + Entry point for a indexed field. + You should not create this manually. + + + + + Entry point of a Dictionary item. + + + + + Entry point for a non-member related field. + Useful to draw a single FieldEditor. + + + + + Script entry point. + + + + + Entry point for a Field created from a path and Object ids. + + + + + Entry point for a method field. (Button) + + + + + Entry point for a method field. (Button) + + + + + Entry point for a standard field. + + + + + Entry point for a standard field. + + + + + Entry point for a standard field. + + + + + Entry point for a standard property. + + + + + Entry point for a standard property. + + + + + Entry point for a standard property. + + + + + Compares if two InspectorField contains the same data. + + + + + Compares if two InspectorField contains the same data. + + + + + Compares if two InspectorField contains the same data. + + + + + HashCode + + + + + + IComparable implementation + + + + + IComparable implementation + + + + + Force a new attribute to be added a runtime. + + + + + Get an attribute by type that was applied to the original item. + + + + + Get an attribute by type that was applied to the original item. + + + + + Get all the attributes by type that were applied to the original item. + + + + + Get all the attributes by type that were applied to the original item. + + + + + Return true if the memberinfo of this field is sporting that specific attribute type. + + + + + Return true if the memberinfo of this field is sporting that specific attribute type. + + + + + Add this field to the watch list, which is displayed on the Watch window. + + + + + Force the selection of the serialized instances of this field. + + + + + Attempt to save this field value in play mode the next time it is stopped. + + + + + Apply this field modification to its prefab parent. + + + + + Revert any modification of this field and retreived the original value of its prefab parent. + + + + + Record the object state for undo purpose. + + + + + Copy the current value of this field to the clipboard. + + + + + Return true if the passed value can be copied over this field. + + + + + Paste the clipboard data to this field. + Careful, you should do a type test before. + + + + + 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. + + + + + 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. + + + + + The value of this field, based on a specific object instance. + + + + + The value of this field, based on a specific object instance. + + + + + Get all instances value. + + + + + Get all instances value. + + + + + Reset this field to its default value. + Object = null + Value Type = default(T) + + + + + Set the value of this field. + Support undo. When calling this, assume undo will be "Set Value MyField" + + + + + Set the value of this field, based on a specific object instance. + Does not support undo, should be recorded before calling. + + + + + Flags the related serialized instance as dirty. + + + + + Reparse the internal sub-fields of this field. + Useful when a list or an object changed. + + + + + Sort all children fields. + + + + + Get a MemberInfo from a serializable path. + The "Path" property from a InspectorField is a valid path. + + + + + Get a value from a serializable path. + The "Path" property from a InspectorField is a valid path. + + + + + Set a value by a serializable path. + The "Path" property from a InspectorField is a valid path. + + + + + Return a list of indexed field. Work with List and Array. + + + + + Return a list of keyed field. Work with IDictionary. + + + + + Get fields from an object. + + + + + Get fields from an object. + + + + + Get fields from an object. Bypass ignore Inspect and Expandable attributes. + + + + + The object owning this specific field. + + + + + The serialized object owning this specific field. + May not be the same as the instance, or even the currently Selected item in the Inspector. + + + + + The prefab parent to this object. + + + + + The member info of this field. + PropertyInfo, FieldInfo or MethodInfo. Otherwise null. + + + + + The attributes of this field, manually and by reflection. + + + + + Used only for the Script object reference at the top, or hidden Unity property. + + + + + Get the parents GameObjects in cases of components. Useful for undoes. + + + + + The parent field in case of nesting. + Null if directly at the top. + + + + + Subfields, such as field in an expandable object, or a list. + + + + + Fields used for edition, are not drawn by the Inspector automaticly. + + + + + Indentation depth of this field. + + + + + Is this field a method, field, property or a group? + + + + + 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. + + + + + 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. + + + + + 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. + + + + + In case of a dictionary, returns the key type. + Return null otherwise. + + + + + The Inspect Attribute that made this field visible. + + + + + The Override Editor assigned to this field. + No field can be drawn without one. + + + + + A restrictor turns any field into a drop down list of specific choices. + + + + + Is this field part of a group? + + + + + Is this field part of a toolbar? + + + + + Is this field visibility controlled by a tab? + + + + + In cases of tabs, this is the currently selected tab enum value. + + + + + 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. + + + + + Returns true if the item inspected is static. + + + + + Readonly field cannot be edited. + In case of multi-objects, if any is readonly, all are. + + + + + Is this field animated. Only works for fields, not property. + + + + + The Help data being drawn after the field. + Does not work in multi-object edition. + + + + + This field is a bypass field, and sub-field automaticly recieve that flag. + + + + + Can this field be expanded? + It display the arrow button. + + + + + Is this field open and displaying internal fields? + + + + + Was this field erased? + + + + + Is this object display as being part of the parent? + + + + + Can this object field display the "+" sign to create a derived object from the base type? + + + + + Name of the label of that field. + Can be modified by Descriptor. + + + + + The color of the editable field. + + + + + The color of the background (ex.: Expandable box) + + + + + Priority of a field, used when sorting. + + + + + The order at which this field was found in the code. + If an indexed field, return the index. + + + + + If false, this field does not draw its label. + Useful for toolbar. + + + + + The specific style this field is draw with. + + + + + Internal path to this specific field. + Used to keep persistant data across selection. + + + + + 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. + + + + + Return false is any of the serialized parent have the hide flag "Not Editable". + + + + + 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). + + + + + 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. + + + + + Return true if all instances are of the same type. + Which mean they are expandable even in multi-objects edition + + + + + Index of the field in a list or array. + Return -1 if not part of a collection. + + + + + Is this a collection? (array or list) + + + + + When in a dictionary, the key of this value. + + + + + Is this a dictionary? (UDictionary) + + + + + 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. + + + + + Test if the current type overload ToString properly. + + + + + Type of InspectorField. + + + + + Empty unset field + + + + + Field containing a FieldInfo + + + + + Field containing a PropertyInfo + + + + + Field containing a MethodInfo + + + + + The InspectorField is only a wrapper around a SerializedProperty object. + To use in case of hidden property in the Unity API. + + + + + Field that is a group of other field. + + + + + Field that is drawn as a toolbar. (horizontal group) + + + + + Unlinked field just stores a value internally and is not bound to an object. + + + + + The top field, the reference towards the original script. + + + + + Handles the Advanced Inspector preferences. + + + + + Returns true if the control is valid in the current Event context. + + + + + Returns true if the control is valid in the current Event context. + + + + + The style collection used for the different element. + + + + + If true, all classes that do not have a Custom Editor are drawn by Advanced Inspector. + + + + + The control for scrolling numbers. + + + + + The control to copy-paste by drag. + + + + + The control modifier used when clicking on an expansion arrow. Expand/Collapse sub-nodes. + + + + + 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. + + + + + Extra indentation applied to boxes. + + + + + The maximum number of displayed item in a collection. Trigger the large collection arrow display beyond that. + + + + + The accepted control that involves dragging. + + + + + The control is turned off. + + + + + Single drag. + + + + + Alt+Drag + + + + + Control+Drag + + + + + Shift+Drag + + + + + The modifier keys involded in non-dragging action. + + + + + Alt Key + + + + + Control Key + + + + + Shift Key + + + + + This class handles the rendering and input of the Preview zone. + + + + + Object to be previewed + Supported type; + GameObject + Mesh + Material + Texture + + + + + The different internal style. + + + + + No boxes, no nothing. Clean, similar to Unity default. + + + + + Round boxes. + + + + + Unity flat style + + + + + A wrapper recongnized by the internal inspector so that non-UnityEngine.Object can be inspected. + + + + + Force Unity's "Selection" to use a non-unity object. + + + + + Is this object selected by Unity's Selection? + + + + + Get currenty Unity's Selection + + + + + Object to Inspector + + + + + 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. + + + + + Create an instance of type + Works with values, list, array, scriptableObject, string + Components are ignored. + + + + + 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. + + + + + 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. + + + + + Test if the current clipboard data can be converted into a specific type. + Ex.: int to string + + + + + Test if the current clipboard data can be converted into a specific type. + Ex.: int to string + + + + + Return true if an object is convertable to a type. + + + + + 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. + + + + + Type of the current data in the clipboard. + + + + + A separator holds two control side by side and divide them with a draggable line. + It can be horizontal or vertical. + + + + + 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. + + + + + Targeted object + + + + + Is on top of the target + + + + + Selecttion dragged + + + + + Extends Enum with some bitfields related method. + + + + + Add a value to a bitfield. + + + + + Remove a value from a bitfield. + + + + + Test if a bitfield has a value. + + + + + Gets an attribute on an enum field value + + The type of the attribute you want to retrieve + The enum value + The attribute of type T that exists on the enum value + + + + Extends Enum with some bitfields related method. + + + + + Returns the nearest parent class that is generic. + + + + + The DateTime dialog is a date picker that is day/week accurate. + + + + + Define a popup window that return a result. + Base class for IModal implementation. + + + + + Top title bar height + + + + + The object that invoked this modal. + + + + + Internal modal result. + + + + + Default constructor. + + + + + Invoked by Unity when the user click outside the window. + + + + + Called when pressing Escape or Cancel. + + + + + Called when pressing Enter or Ok. + + + + + Does this specific modal type exist? + + + + + Usually you should not override this. + + + + + Implement your draw items here. + + + + + Result of this modal window. + + + + + Height of dialog + + + + + Width of dialog + + + + + Create this dialog. + + + + + Draw the dialog region. + + + + + Modified DateTime if Result is Ok + + + + + 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. + + + + + Add an item to the toolbox list. + + + + + Create a toolbox for this IModal. + + + + + Create a toolbox for this IModal. + + + + + IControl implementation + + + + + List of items visible by this toolbox. + + + + + The current selection. + + + + + The search term entered in the search field. + + + + + Result returned by a Modal Window + + + + + No result, no action taken + + + + + Ok or Enter + + + + + Cancel or Escape + + + + + An error occured + + + + + User clicked outside the modal + + + + + A control that is a list of item that can be nested. + Support drag and drop, editing and sorting. + + + + + Refresh the list of visible item when the items list has changed. + + + + + Refresh the list of visible item when the items list has changed. + + + + + Current selected tags. + + + + + Number of visible nodes. + + + + -- cgit v1.1-26-g67d0