Having 4.5 years of expereince with Unreal Engine, I guess I have understood this much that creating an editor extension, digging through the source code to understand the underlying architecture, and using the same codebase to create your own customizable tool, is very very tricky and usually takes to lots of patience and experiments before you can get it right.
I agree over the years several tutorials have been created just to help you out with the basics of tools creation, but one still will find it extremely difficult to create some advanced tool, like a custom editor viewport which displays selectable static meshes, as desired, or an edmode similar to how the Landscape edmode has been created.
Over the years , with lots of hard word and dedication, I have learnt the following things in terms of custom tool creation -
- Creating custom Edmode, similar to how landscape mode works, divided into Modes and Tools(Sub-modes), and using a combination of Details panel and Slate widgets to display a set of tools based on the user selection. This covers - adding commands and binding them with specific functionalities, creating details panel, creating toolbar and menubar, hiding specific tools based on user selection, creating custom slate icons to make your controls look distinct
2.Creating Custom Asset, that can be created directly from content browser. This includes - creating and registering a new asset type, creating corresponding factory, creating custom optional slate window that is displayed when the asset is being created( like in Datattable asset creation), custom editor, similar to static mesh editor , material editor, or most of the tools within UE4, adding custom viewport that can contain multiple selectable static mesh actors, creating commands and binding them with corresponding functionalities, building toolbar and menu bar, arranging several tabs as desired, adding details panel.
- Creating Details Customizations for our Details panel. This covers - Hiding and editing categories and properties, adding custom slate controls, changing the values of the corresponding properties with the slate controls, applying filters for specific types of properties, like if you have a UStaitcMesh in your details panel , but you want only meshes from a certail folder to appear, you can apply the logic in your details customization class.
4.Adding custom menu options when you right click in your content browser, either in empty space, or in certain types of assets, or in specific folders.
5.Creating custom UMG control. You might find limitations of UMG to help you create a certain type of tools you so desperately need in your project at runtime, like the ColorBlock. If you have solid hands on experience with Slate Controls, nothing is stopping you from creating your own UMG control within hours.
I believe that Unreal truely doesn’t have any limitations. If there is a feature you find lacking in Unreal editor, make that feature yourself, it is not difficult if you are accustomed to the codebase. So I have thought of craeting an Editor Extension plugin, which makes the task of making custom tools pretty straight forward and easy, without digging the source code too deeply.
I just started, and I hope that you will definitely find this useful once I complete this.