Fixed a bug in AssemblyUtilities.GetAssemblyPath() which would, in some cases return an incorrect path to the given assembly, if the path contained any special characters. This would result in a lot of strange things to happen such as various settings in "Tools > Odin Inspector > Preferences" showing blank pages.
We've added a lot of new features and made a few changes to OdinMenuTrees such as; filtering menu items, toggling their visibility, drawing a search field which works with keyboard menu navigation, automatically drawing a scroll view, and highlighting menu item etc...
With these new changes, OdinMenuTrees are now used for a wide range of features throughout Odin, such as the new Enum dropdowns and Odin Selectors.
Added and replaced Unity's enum dropdown. You can still get the old enum drawer back in the Odin Inspector preferences window.
Odin Selector is a new class that combines Odin Editor Windows and OdinMenuTrees to draw feature-rich and flexible selector popups. OdinSelectors can be drawn anywhere; as a drop-down, in an EditorWindow, or inline directly in the inspector. We've included a few new selectors to start off with; EnumSelector, GenericSelector, and TypeSelector. These sort of popup are super easy to make yourself. Take a look at the documentation for OdinSelector's to learn more. We've also included a ScriptableObjectCreator which is located in the new sample project.
We've added a new tool for those utilizing Odin's serialization system, inheriting from classes such as SerializedMonoBehaviour or SerializedScriptableObject, that can help you get an overview of which members are serialized, and which are not.
The tool will tell you why a member is serialized by Unity, why it's serialized by Odin, or why it is not serialized at all. It will help you to debug your scripts, avoid common pitfalls, such as values not being serialized, not showing up in the inspector, disappearing between reloads or having both Unity and Odin serializing the same value.
When relevant, the window will also make good practices suggestions, so you can get the most out of using the Odin serializer.
We've added our first sample project to Odin which is available from the getting started guide (The getting started guide can now also be found in Tool > Odin Inspector > Getting started). The intention of these sample projects is to give you inspiration, ideas, and tips and tricks to improve your workflow.
This time we've made an RPG editor that allows you to create characters, items, and edit inventories. This project showcases Odin Editor Windows, Odin Selectors, various attribute combinations, and custom drawers to build a feature-rich editor window for managing scriptable objects.
We wanted to take the opportunity to tell you a bit about the future of Odin Inspector. As some of you are aware, we recently pitched, that the next patch - 1.0.7 - would bring improvements to the validation system included in Odin. But due to the strong interest in the features of Odin 1.1 we've decided to put 1.0.7 on hold for now, and go straight to 1.1, which we have been working on for quite some time and will start beta-testing of very soon.
In Odin Inspector patch 1.1, we've completely rewritten how the property tree works internally. Properties are now lazily evaluated, which means that Odin doesn't care how much data you throw at it, it will only do processing on the properties you're looking at, which is currently not the case. This will vastly increase editor performance.
It will also introduce attribute and property resolvers and locators. Much more on that later, but this means that attributes and properties can come from anywhere. This will open up a world of new possibilities! You'll be able to add attributes to members you don't own the code for, you would be able to put all attributes on the types and have them be applied globally for all members of that type, ShowInInspector will work on static members as well. We could even at some point, go as far as to create an editor to make editors, meaning you wouldn't even have to put attributes on your members, you could just right-click a property in the inspector, and customize it. Adjust the range slider, drag and drop them around to change the order etc...
You can sign up for beta testing by sending us a mail with your Odin invoice Id included from our contact form.
We've implemented a new getting started guide to help you get going. It will pop-up automatically when you first import Odin. The wizard itself is a scriptable object located in the Plugins/Sirenix/ folder if you want to find it again at a later time.
We've implemented a new Odin Upgrader that will make your update experience to 1.0.6.0 straightforward and painless. It will delete files that are no longer being used, and delete it self once it is done.
Icons are now embedded in the source-code, which means there is no longer a sprite-sheet filled with icons that annoys you in Unity's asset selector window.
All demos are now located in separate Unity packages, which needs to be imported. This can be easily achieved in the new getting started wizard, which gives you an overview of all availble demos.
This was done so we more easily can modify and add demos over time, without cluttering up your project with unnecessary code. This window will pop up when you Import Odin.
Changes in the new Unity version broke a few things in Odin, but this has been addressed and Odin now officially supports Unity 2018.1.
The long awaited editor window features are finally here!
You can now use Odin to rapidly create custom Editor Windows to help organize your project and game data. Make sure to check out the examples!
Inherit from OdinEditorWindow instead of EditorWindow. This will enable you to render fields, properties and methods and make editor windows using attributes, without writing any custom editor code. This features was also there before, but it is now drastically improved.
Odin Editor Windows are not limited to drawing themselves; you can override GetTarget() or GetTargets() to make them display scriptable objects, components or any arbitrary types (except value types like structs).
Derive from OdinMenuEditorWindow to create windows that inspect a custom tree of target objects, with automatic support for multiselection and more. These are great for organizing your project neatly, and escaping the confusing, massive project view hierarchy that often exists in very large projects. For example, Odin itself uses one of these to draw its preferences window.
You can call OdinEditorWindow.InspectObject(myObj) to quickly pop up an editor window for any given object. This is a great way to quickly debug objects or make custom editor windows on the spot!
Clicking the inspect object pen opens a new inspector window for you right where you need it. Now you can also right click the pen, to open a pop-up style inspector that will close itself when it loses focus.
We have a lot of attributes by now, and it was getting hard to find the examples you needed in the attributes demo overview scene. We've organized the scene to provide a better overview.
Referencing members using the $ sign in attributes such as LabelText, Title, FoldoutGroup etc. is no longer restricted to only members that return a string. ToString() is now used on non-string values.
Fixed a bug in serialization that was introduced in patch 1.0.5.3, that would cause all but the first serialized dictionary with the same comparer instance to become null upon deserialization. This fix is backwards compatible with dictionary data saved both before and in patch 1.0.5.3 - all dictionary data will be deserialized properly, regardless of the nature of the saved comparer data. We apologize deeply for this inconvenience, and promise to do better in the future.