Odin Inspector Version 0.9.0.5

Highlights

  • Added support for viewing dictionaries in the editor, and added support for applying prefab modifications to dictionaries. Only the following key types are supported as of right now: string, char, byte, sbyte, short, ushort, int, uint, long, ulong, float, double and decimal. Support for more key types may be added later.
  • AssetListAttribute now works on non-array and list type properties. Checkout an example in the Odin Attributes Overview scene.

Additions

  • Fixed an issue where compiled assemblies were referencing the wrong version number which caused build errors.
  • AssetLists has become a lot faster at searching for relevant assets. It now also searches for your assets over time and shows a searching indicator in the inspector, so it doesn't cause lag spikes.
  • Error and warning messages now includes a context menu for copying the message.
  • When inheriting from SerializedMonoBehaviour, SerializedScriptableObject etc.. A message is shown in the inspector explaining the current state of the serialization protocol. The message includes a button to remove the message
  • permanently.
  • ObjectFields for nullable non-unity objects, has gotten a foldout and can now be expanded and collapsed.
  • Added tooltips to most Odin Preference options.
  • InlineEditor now supports drawing previews for components.
  • AssetList can now be given a custom filter method.
  • Implemented drawer for Rect.
  • Added [HideMonoScript] attribute and added "ShowMonoScriptInEditor" to the general drawer config, to control displaying of the Script property in the inspector.
  • DelayedGUIPainter.Begin now takes an optional boolean parameter that indicates whether to draw or hide the GUI.
  • Added the DrawWithUnity attribute, which forces the property to be drawn as it would normally be in Unity.
  • Implemented drawer for Gradients.
  • EventExtensions with handy and commonly used event methods.
  • Window > Odin Inspector > About .
  • Added RectExtensions
  • Added link to issue tracker to About window.
  • Added HideInEditorMode attribute.
  • Added HideInPlayMode attribute.

Fixes

  • Fixed an issue where OdinSceneValidator would sometimes validate the scene multiple times.
  • Fixed a lot of small GUI spacing issues.
  • Fixed a bug where InlineEditorModes.GUIAndPreview would also draw the header.
  • DetailedInfoBox attribute is no longer drawn for list elements.
  • Playmode tint should now work with all Odin GUI.
  • "Reset to default" now works in Editor Types config window.
  • Fixed issue where some of Unity's types, such as GUIStyle and RectOffset, would show as having no drawers, and have no child properties defined. In these cases, properties represented by unmanaged internal Unity members are now
  • extracted from Unity and shown properly in Odin, often as aliased "ghost" members that have no managed representation.
  • Color and Color32's custom context menu for copying values has been moved into the general context menu system, and no longer overrides Odin's default context menu.
  • Windows like Advanced Odin Preferences, and open object new inspector, now opens correctly at the center of the Unity Editor.
  • Fixed a bug where dragging an asset to the last index in a list would result in it being the second last index.
  • Fixed a bug where ObjectFields did not indicate when different objects was selected.
  • Fixed Editor Types error where the intended editor of a type could not be changed again after it had been set once.
  • Reference path conflicts are now handled properly in the inspector.
  • Bounds property "m_Extent" now properly maps to Bounds member "m_Extents".
  • SirenixEditorGUI.ToolbarToggle no longer looks out of place.
  • Removed horrible hack from SirenixEditorGUI.ToolbarButton.
  • Odin no longer incorrectly guesses that Unity will serialize multi-dimensional arrays.
  • Fixed issue where TabGroup was redrawing constantly.
  • Minor spelling errors.

Changes

  • Renamed InspectorDrawerAttribute to OdinDrawerAttribute.
  • Removed unused attribute ConfigDisplayNameAttribute
  • OdinSceneValidator now only validates components drawn by Odin.
  • InspectorPropertyGroupDrawer has been renamed to OdinGroupDrawer
  • Methods in all custom drawers no longer takes GUILayoutOption[] as an optional parameter, since it was never being used.
  • HideLabelAttributeDrawer has gotten a much higher priority.
  • ShowLabels on the ListDrawerSettingsAttribute has been renamed to ShowIndexLabels, and the behavior in the inspector matches its name.
  • Changed ColorPalette and ColorPaletteColorPicker to be internal instead of public. We will make an update at some point, exposing all ColorPalettes preferences so you can add, delete and change color palettes from a script.
  • All demo scenes have been updated.
  • InlineEditor no longer draws the MonoScript selector when drawing the GUI.
  • AssetList can now be given a comma separated list of tags.
  • AssetList can now be given a comma separated list of layers.
  • ValidateInput attribute is no longer applied to list elements.
  • Odin is now actually capable of drawing most of Unity's types that have no custom editors with the proper inspector.
  • Changed defaults so that Odin will, by default, *not* draw any of Unity's types. This is an opt-in feature.
  • Optimized the PropertyTree's value scan behaviour - children properties for types derived from UnityEngine.Object are no longer evaluated.
  • Properties backed by Unity serialization are now shallow copied by default, not deep copied.
  • Renamed GUIConfig to GUIContext.
  • Renamed IControlConfig to IControlContext.
  • Remaned GUIHelper get config functions to context.
  • Removed GUIHelper.DelayedGUIDrawer.
  • InlineEditor no longer supports multi-object editing since we can't garentee that the editor supports it.
  • TabGroup no longer hides the label if it only contains one property.
  • ButtonAttribute.Name set is now private. Use Button("Name here") instead of Button(Name = "Name here") now.
  • Removed strongly typed generic overloads of PropertyTree.Create due to the confusion they were creating.
  • Grouped Odin Preferences and Odin Scene Validator under Window > Odin Inspector.

Odin Inspector Version 0.9.0.4

Highlights

  • Added a new InlineEditor attribute which displays an editor for any Unity object inline in the inspector. Check it out in the attributes overview demo scene.
  • Added support for Unity 5.6

Additions

  • Added a Bounds drawer for drawing Unity's Bounds struct
  • Added better feedback for when a user declares invalid [OnInspectorGUI] and [Button] methods.
  • Added ShowDrawerChain attribute to help debugging which drawers are being used for any given property, and in what order each property is called.
  • Added GUIStyle drawer

Fixes

  • GuessIfUnityWillSerialize now always returns true for Unity object types, even if they're abstract.
  • Button methods can now have a return type without causing invalid IL exceptions.
  • When multiple objects in the hierarchy are selected, and you are adding a new instance to an Odin serialized list, it will now give each selected list a unique instance of an object, instead of the same reference.
  • When lists are serialized by Unity, Odin will no longer present the user with the instance creator that has support for polymorphism. Instead the only viable type is created automatically by inserting a null value. Since Unity doesn't support null, Unity will automatically create the correct instance.
  • Fixed a rare case where SlideRects lost the ability to gain focus.
  • It no longer breaks the inspector when errors occur in methods referenced from attributes.
  • Fixed an issue where the paste context menu item was disabled when it shouldn't be.
  • Fixed various small layout issues, where some fields would have a 4px offset.
  • The DisplayAsString attribute now works for list-elements as well.
  • Removed the "Not Serialized" label from the instance creator window since Odin by default serializes everything regardless of the System.Serializable attribute.
  • Property methods that are overridden and need to have aliases created are now handled correctly and in a far more solid way. Note that aliases are explicitly not created for abstract or virtual methods which have override implementations in derived types.
  • SerializedBehaviour now derives from Behaviour instead of MonoBehaviour, as intended.
  • Fixed potential infinite loop during deserialization. Deserialization should now be far more resistant to breaking in this way, due to the changes made.
  • Fixed rare case where there would be a serialization layout data mismatch.
  • Serialization logging and error handling settings are now actually used.
  • Corrected reflection name lookups for internal Unity members whose names have changed in 5.6.
  • Added support for Unity custom PropertyDrawers to draw generic type definitions, so we can draw Unity's new ExposedReferencePropertyDrawer in 5.6.
  • ExitGUIExceptions are now also rethrown when they are an exception's inner exception.
  • Fixed compiler warnings in source code.
  • Fixed an issue where a (recoverable) data layout mismatch would rarely occur when skipping complex data structures with no metadata.
  • ObjectFields now handles special "Unity null" cases.
  • PropertyValueEntry.GetValueOverride() now correctly identifies destroyed Unity objects as a NullReference.
  • Fixed a bug where NullableReferenceDrawer would draw the special object-picker if a Unity object was serialized with Odin.

Changes

  • Applying the [OdinSerialize] attribute to any field now forces Odin to serialize the value, regardless of whether Unity will also serialize the value.
  • Demo folder was moved from Plugins/Sirenix/Odin Inspector to Plugins/Sirenix/Demos/Odin Inspector
  • The list drawer has gotten new, prettier icons.
  • Made SerializedStateMachineBehaviour abstract.
  • UnityVersion.cs is now statically initialized at editor load, to ensure it is not initialized later at an illegal time.
  • Renamed IsUnityNull to SafeIsUnityNull
  • Updated the demo scene

Odin Inspector Version 0.9.0.3

Highlights

  • Added link.xml to prevent code stripping from affecting relevant Odin assemblies. This means serialization is now supported on most platforms. If you succeed or fail in building properly to any specific platform please, let us know. This has only been tested on WebGL so far.

Fixes

  • Fixed a bug where the context menu for Clear list would be wrongly disabled.
  • Fixed rare occasion where Unity's "Failed to load inspected type" error would still show up when deleting a script.
  • Fixed infinite loop that sometimes occurred when skipping an entry during deserialization.
  • Fixed issue where InfoBox would not draw for null object fields.
  • Fixed issue where SirenixEditorFields.DelayedTextField would take a value from a seemingly random other field.
  • Fixed issue where [Required] would always show an error box for all non-unity objects.
  • Fixed issue where properties drawn by custom Unity PropertyDrawers were drawn twice when they used EditorGUI.PropertyField or EditorGUILayout.PropertyField with their own property as argument.
  • Right-clicking property context highlight now works again.
  • Object pickers can now be initialized outside a GUI context.
  • Fixed an issue where ToggleGroup didn't show an error message when referencing a property not part of the group.

Added

  • Added link.xml to prevent code stripping from affecting relevant Odin assemblies. This means serialization is now supported on most platforms. If you succeed or fail in building properly to any specific platform please, let us know. This has only been tested on WebGL so far.
  • Added SerializedStateMachineBehaviour, which can be inherited from if you wish Odin serialization support for a StateMachineBehaviour.
  • Added "Change Type" to right-click context menu for reference types serialized by Odin.
  • Added DetailedInfoBoxAttribute to display an info box with a hideable details .
  • ListDrawerSettingsAttribute now has showLabels option to enfores toggles for list elements.
  • SirenixAssembliesPath added to SirenixAssetPaths.

Changes

  • Open in new inspector shortcut on ObjectFields are now always enabled.
  • Renamed EnabledIf to EnableIf to match DisableIf, ShowIf and HideIf.
  • Renamed VisibleIfAttribute to ShowIfAttribute and added HideIfAttribute.
  • Renamed Property Configs to Property Contexts everywhere.
  • Removed option to enable or disable paging globally. Paging is now always enabled for lists and dictionaries (dictionaries are not yet supported, but will be soon).
  • Context menu for changing types and set to null are now shown as disabled if property is marked read-only.
  • Removed option to disable paging while lists are collapsed; this is now always the case.
  • [Required] will now mark a string property as missing if the string is empty.
  • Added default group name to ButtonGroup.
  • Removed label from BoxGroup. Group name will now be used instead.
  • BoxGroup label is now oriented to the left, instead of centered, by default.
  • Default number of items shown per page in lists has been increased from 8 to 15.
  • Boolean drawer no longer has an expanded clickable area when no label is drawn.
  • Active GUI Icons are now less bright.
  • All data formatters now use the same SkipEntry logic.

Odin Inspector Version 0.9.0.2

Highlights

  • Added a new window found in “Window > Odin Scene Validator”, which scans all open scenes for errors, warnings and missing references.

Fixes

  • Fixed a crash that occurred when applying PrefabModifications that change an array's length.
  • Fixed issue where property children would not be properly updated when a list length was changed by something other than inserting or removing an element, which would throw errors upon inserting list elements.
  • Fixed issue where custom Unity PropertyDrawers for PropertyAttributes weren't found and drawn in the inspector like other drawers.
  • Fixed issue where Unity's own PropertyDrawers and DecoratorDrawers weren't found and used in the inspector where applicable.
  • Fixed issue with ToggleGroup being unintuitive to use and updated examples accordingly.
  • Prefab modifications are now properly removed when parent values and list lengths change that make the modification paths invalid.
  • Fixed newly introduced compiler warnings and errors that occur when using Odin as source files.

Added

  • DrawerPriorityAttribute now works on custom Unity PropertyDrawers and DecoratorDrawers.
  • Added DrawerIsNotLocatableAttribute, which indicates that the DrawerLocator will not find this drawer, whether it has an InspectorDrawerAttribute defined or not.
  • Added IsChildOf and IsParentOf methods to InspectorProperty.

Changes

  • Prefab modifications can no longer have internal references to each other, making them more impervious to merge changes.
  • Removed prefab path resolution failure warning. There are cases where a modification path cannot be resolved for entirely legitimate, okay reasons.

Odin Inspector Version 0.9.0.1

Highlights

  • Added "Odin Attributes Overview" scene; a scene which contains examples of how to use all of Odin's attributes.
  • Added SirenixEditorFields.
  • Added the TabGroup attribute.
  • Added the ColorPalette attribute.

Fixes

  • Fixed an issue that caused a stack overflow when drawing a single property with multiple instances of the same attribute drawn by an attribute drawer with the DrawProperty behaviour.
  • Fixed an issue where the menu text in the Odin Preferences window would be cut off in some projects.
  • Fixed an issue where all drawn properties had unintended padding beneath them.
  • Fixed an issue where ValidateInput did nothing if no message was specified.
  • Fixed various spelling errors.

Changes

  • TitleAttribute no longer applies to list elements.
  • Demo folder is now located inside the Odin Inspector folder.