Training Stream - Extending the Editor - Jan. 20th, 2015

Engine Programmer walks us through a project designed to show how to add custom functionality to the editor. The project is still up in the air so tell us what kinds of editor extensions you would like to see. Wondering how to add customizations in the Details panel? Don’t know where to begin to create your own menu or dialog? Let us know by posting below!

Tuesday, Jan. 20th @ 3:30PM - 5:00PM ET - Countdown]



  • Engine Programmer
  • Community Manager

Feel free to ask any questions on the topic in the thread below, and remember, while we try to give attention to all inquiries, it’s not always possible to answer everyone’s questions as they come up. This is especially true for off-topic requests, as it’s rather likely that we don’t have the appropriate person around to answer. Thanks for understanding!

This is exactly what I was waiting for!! :slight_smile:

Making customizations to the editor panel for creating custom tools would be awesome!
Buttons, textbox, dropdown menu, radio button, check box, sliders, tabs, group box. :)))

I would like how to learn more about creating extensions to blueprints. Custom panels, nodes, pins.
I figured out pins on my own, and to some degree nodes. But haven’t yet tried panels.

If there would be talk about property display customization, I would like to learn how to customize complex properties:

struct FMyStruct

struct FAnotherStruct

Customizing simple structs (which contains only base types) is fairly straight forward. But customizing complex ones is always bit problematic.

Yeaaa this is what I was waiting for :smiley: :smiley:

I only want to know if we can add some stuff without modding the source

in this weird face place :wink:

Thanks a lot

I too wish to know about custom pins.

How can I program my own data types so that if I expose them to blueprints, the editor won’t crash, for example, I’d like to expose one of my c++ classes as a datatype for use in blueprints as a pin type.

How SHOULD i convert a regular c++ 11 class to UE4 ? Are there specific things I should worry about ? Can I just create wrapper functions and keep the original class in the source then just call the original source from UE4 functions ?

Tutorial i have written about pins:

In general you need USTRUCT() to be able to customize it as pin.

You can’t customize UObjects as pins.

You know I searched and searched yet couldn’t find this. Thanks mate.

I would like see how to create Custom Assets & (Graph-)Editors, if that fits in the Scope of this Livestream. I currently try to figure that out myself and can open an editor for my AssetType but fail to fill that window correctly (may be or of an “I can’t Slate yet”-Issue).

[suggestion/question] can i(or Epic) create “drop down list” type control for all BP nods with sockets names, because for now i think it is a little annoying enter socket name by hands---- for example i create on my character(skeletal mesh) 6 sockets with different names, and after some time later when i need use them try remember this names, but i always forgot and must go back to persona and see on this names… so if all bp nods with sockets names have drop down list with all available sockets for current mesh, sprite, skeletal mesh and go on… its be a right directional

PS need add ability using dropdown list, but with saving ability by enter names by hands

this picture show what i meen

PS sorry for bad English

Like this ? I have create it, but it is in PR list for quite some time. If you want it integrated you can comment on this PR.

don’t have access to this link(((( … and what is PR -----Preview Notes?

PS where i can comment? about +1 to integrate this feature to engine?

Pull Request. I created this, because typing socket names started to be really annoying. It allow you select sockets from any skeleta mesh in defaults or as blueprint pin.

Can I ask how to make it so that the little eye icon in the scene outliner actually disables actor creation when playing? Right now it basically toggles visibility in the editor, but invisible objects still get created. Calling set actor hidden in game on them simply hides the rendering part and leaves the actual actor in place (so you get collisions still etc).

what I’d like to do, is extend the scene outliner to have a further checkbox against actors that enables/disables them while playing, such that running a game in PIE etc does not spawn those actors when the box is unchecked.

Dont know the scope of this stream, but i whould realy like to know.
[Q] The steps taken from a blank project > Plugin > To That plugin Implemented in the editor.

Also this may be a bit off topic but, what qustion should i be asking my self.
[Q] When I am wondering if code should be included in the Private/Public include paths and/or Dependecy Moduls.
In your build file YourProject.Build.cs

Looking forward to this stream. :D!

  1. Any chance you can show us how to edit geometry through code? A simple tute on how to move a single vertex?

  2. Is it possible to allow C++ users to access static functions in a plugin, not just blueprint users?

[Question] How can i access the assets in Content Browser and change their settings using a custom dialog window?

Waiting for this one to begin :slight_smile:

I’m interested in this kind of thing, especially the dialog part. Maybe this sound stupid but i’d like to know how to add an option to change the text color in just the words i chose to, ie tha majority of RPGs out there have that: A dialog system where important terms/words/locations and so on have a different color than the rest of the text.
If you can show how to do that in editor menus or dialogs i think it should be pretty similar to add to a dialog system in game?
Sorry if this is non-sense :rolleyes:

In-game, this is a function of Slate. It’s coming for UMG as well, but wrapping it is very low on the priority totem pole, unfortunately. I hate saying this, but this is something you’ll have to do yourself through the source or ask a Slate guru to do it for you. This, regrettably, is not me. :slight_smile:

Register a class deriving from IDetailCustomization with the PropertyEditorModule:

	FPropertyEditorModule& PropertyModule = FModuleManager::LoadModuleChecked<FPropertyEditorModule>("PropertyEditor");
	PropertyModule.RegisterCustomClassLayout("BaseEditorTool", FOnGetDetailCustomizationInstance::CreateStatic(&FBaseEditorToolCustomization::MakeInstance));


And you can add arbitrary widgets (anything Slate has to offer) to a category by doing something like:

	// Create a commands category
	IDetailCategoryBuilder& Category = DetailBuilder.EditCategory("Commands");

		.OnClicked(FOnClicked::CreateStatic(&FBaseEditorToolCustomization::ExecuteToolCommand, &DetailBuilder, Function))


If you want to show properties for a node when it is selected, you can override ShouldShowNodeProperties() on the node to return true. Then the details panel in the BP editor will show the exposed properties on the node when it is selected. You can further customize the results by registering a details panel customization for your node class.