Editor Extensions

Hi guys,

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 -

  1. 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.

  1. 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.

I would even buy this just to learn from, but I didnt get what you are actually selling here :smiley:
I can see you did some cool stuff, but I dont get what it is

My plugin will not only contain many examples of several types of advanced editor tools that you can work on, but also an automation system that will make the tool creation simpler. For example I know how landscape edmode is created, but every time I want to create or expand my custom edmode I need to follow lots of steps , so I was thinking it would have been awesome if I can just create additional features to my edmode by just tweaking few parameters within the edtior itself

It would be very awesome if we could create an EdMode just by tweaking some parameters. Especially, if creating an EdMode like this would be possible somewhere in the code:



myEdMode = EdModeCreator.Add("My Ed Mode Tool").Icon(myTexture).OnSelected(someObject, &MyEdMode::OnSelected);
firstCategory = myEdMode.AddCategory("Some Action Category").Icon(...);
firstCategory.AddAction("Draw").Icon(...).OnExecute(someObject, &MyEdMode::OnDraw);


I think you get the idea? I just tell the extension the most important stuff and it deals with registering the EdMode and creating all the widgets by itself.

And maybe you can make use of template parameters to automate some stuff. Or you could have the user implement a certain interface/derive from a certain class… Whatever is needed for a rough setup. But I wouldn’t want to have to create a new class for every category, action and EdMode… That is something the extension should deal with.

Edit:
So basically, you would have to create some classes that store the relevant description information for every editor component required and then you would have widget classes, that can create the appropriate widgets based on these description classes. Next you would have some sort of framework that would register and instantiate everything thats needed. The user would only need to fill out these description classes…
You should also provide some general tooling that would make it easier to create advanced things like dialog windows etc. where everything you need to do is to provide the content widget and context, maybe? (I know creating dialog windows is quite easy, but there could be more complex things)

Edit2:
And I would like to have some documentation/explanations of the things that we need to be aware of during editor development as opposed to game development. At least, if there is things we need to know in order to code reliably.

Yes, nice ideas. That’s the dream actually. I am currently automating the creation of custom editor asset that you can create by right clicking in the content browser. I have achieved the result to my satisfaction, but the challenging stuff is yet to be done - finding a way to automate the custom editor creation, with custom viewports and all. If that is achievable, edmode automation will be a piece of cake. :smiley:

This is a video demonstration of how to create a custom asset from within the editor. Obviously this will be thoroughly documented once completed, so that you can modify and extend upon the base templates that is being generated for you via this tool,