ElgKismetEditorWidget - Editor Widgets in the Blueprint Editor

ElgKismetEditorWidget is a Free Unreal Engine 5.0 editor only plugin to make it possible to use Editor Utility Widgets inside the Blueprint Editor.

The plugin add basic graph events like OnGraphCompiled, OnNodeSelectionChanged, OnFocusGraphChanged and more.
It also add nodes to create/edit/remove Variables, Functions, Macros, EventDispatchers, EventGraph .
https://github.com/ElgSoft/ElgKismetEditorWidget

It support all functionality needed to recreate the My Blueprint window inside Editor Utility Widget.

To open Editor widgets inside the Blueprint Graph you can use the EditorWidgetViewer window and select any EditorWidget and it will be open inside that widget.

image

The other way is to register the Editor Widgets in Kismet Editor Widgets section in Project Settings…
Add the Tab label, description and alignment with in the tab.

This will make that Editor Widget get it’s own item in the Window list and you can dock the Editor Utility Widget inside the graph and it will be saved.

Another example of tool you can do is list the WidgetTree and change what variable that are exposed without having to switch to the Designer View.

Blueprint Editor

Thru the KismetEditorWidget Context (BPEditor) you can open built in windows like Find, Find and Replace and Class Defaults.
Select things in the MyBlueprint window or clear any selection.
Log Messages to the compiler log and more.

Events

You can bind events so you can react when the graph change or node selection change.

Events that are exposed in the plugin are:

  • OnEditorRefresh
  • OnFocusGraphChanged - changed tab
  • OnGraphChanged
  • OnGraphCompiled
  • OnNodeSelectionChanged

Drag and drop

The plugin support drag and drop, so you can drop a function from a Editor Widget to a graph, if you drop it on a pin it will try to connect the nodes.
Variables can be drop as Get or Set node.

The drag and drop is setup the same way you would do with regular widgets.

Object that support drag and drop to the graph/nodes/pins:

  • Variable
  • VariablePin
  • Function
  • Macro
  • LocalVariable
  • EventDispatcher
  • InterfaceFunction
  • WidgetVariable

Nodes

You can get all the nodes in the blueprint/graph or what node(s) that are selected.
Or you can get inspect a node and check what type of K2Node it is, it’s member info (class and method name) or info about how many pin(s) it has and what type of pin it is. With pins you can break any connection or connect pin on different nodes.
A node is represented by a ElgBESGraphNode object. And each pin on a node is represented by a ElgBESGraphPin object.
image

BPEditor Context nodes

From the BPEditor context you can get event when the selection of nodes change, get the currently selected nodes, all the nodes in the blueprint/specific graph/function or select nodes.

ElgBESGraphNode nodes

With ElgBESGraphNode object you can select it, check if the node is connected to anything, position in the graph, the member info, the pin ElgBESGraphPin objects.

ElgBESGraphFunction nodes

With a ElgBESGraphFunction object you can create local variable, get local variables, get or add pins to the function.

ElgBESGraphVariableLocal nodes

With the ElgBESGraphVariableLocal object you can remove, change the name, change type, duplicate, set category and set the default value. You can also get all the basic info about the variable, the default value, category, data type and icon

ElgBESGraphFunctionPin nodes

You can add new Input/Output pins, or access existing pin to change the order the pins are listed, change the name, change data type, promote it to a variable.
image

Interface

The plugin give you access to quary what interfaces the blueprint has or you can add or remove interface.
The interface is represented by a ElgBESGraphInterface object, and each function the interface has is a ElgBESGraphInterfaceFunction , and each pin on the function are ElgBESGraphFunctionPin objects.

BPEditor Context nodes

Nodes to add/remove a interface, and get implemented interfaces objects ElgBESGraphInterface

ElgBESGraphInterface nodes

From ElgBESGraphInterface object you can get what functions, ElgBESGraphInterfaceFunction,the interface has, get some info about the function or check if the function has been implemented in the blueprint or not.

ElgBESGraphInterfaceFunction nodes

From ElgBESGraphInterfaceFunction object you have nodes to implement the function/event, open the function. Or you can use it to get access to the pins of the function, ElgBESGraphFunctionPin.
As the functions are inherited from from the interface you can’t add/remove pins or rename the function.

ElgBESGraphFunctionPin nodes

On the EgBESGraphFunctionPin object you can get the name, direction, data type or promote it to a variable.
The pins are read only as they are inherited from the interface.
image

Macros

The plugin give you access to query what macros the blueprint has or you can add or remove macros.
The macro is represented by a ElgBESGraphMacro object, and each pin on the macro are ElgBESGraphMacroPin objects.

BPEditor Context nodes

From the BPEditor context you can create new macros or get access to existing macros in the blueprint.

ElgBESGraphMacro nodes

From ElgBESGraphMacro object you can open the macro, duplicate it or remove it. Or you can use it to get access to the pins of the macro, ElgBESGraphMacroPin

ElgBESGraphMacroPin nodes

On the ElgBESGraphMacroPin object you can get or set the name, direction, data type.

UberGraphs

The plugin give you access to UberGraphs (EventGraph) the blueprint has or you can add or remove macros.
The macro is represented by a ElgBESGraphUber object.

BPEditor Context nodes

From the BPEditor context you can create new UberGraphs or get access to existing graphs in the blueprint.

ElgBESGraphUber nodes

From ElgBESGraphUber object you can open the graph, remove it (as long as it’s not the default Event Graph) or get all the nodes that it has.

EventDispatcher

The plugin give you access to EventDispatchers the blueprint has or you can add or remove EventDispatchers.
The EventDispatcher is represented by a ElgBESGraphEventDispatcher object and each pin are a ElgBESGraphEventDispatcherPin.

BPEditor Context nodes

From the BPEditor context you can create new EventDispatcher or get access to existing EventDispatcher in the blueprint.

ElgBESGraphEventDispatcher nodes

From ElgBESGraphEventDispatcher object you can open the graph, remove it (as long as it’s not the default Event Graph).

ElgBESGraphEventDispatcherPin nodes

From ElgBESGraphEventDispatcherPin object you can change the pin order, remove, change name or change data type.

Widgets

The plugin give you access to Widgets that a WidgetBlueprint or EditorUtilityWidget has. You can
Widget is represented by a ElgBESGraphWidget object and if exposed as a variable is a ElgBESGraphWidgetVariable.

BPEditor Context nodes

From the BPEditor context you can access any widgets that has been placed in the designer mode.
image

ElgBESGraphWidget nodes

From ElgBESGraphWidget object check if the widget is exposed as a variable or set that if it should be a variable, same as tick the “Is Variable” inside the Designer.

ElgBESGraphWidgetVariable nodes

From ElgBESGraphWidgetVariable object you can set the category, get the data type.

PinTypeSelectorWidget

The plugin add a new widget that can be used to select pin data type. Comes with Event for when the type change and nodes to get and set the data type.
image

https://github.com/ElgSoft/ElgKismetEditorWidget