This is an 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.
It also add nodes to create/edit/remove Variables, Functions, Macros, EventDispatchers, EventGraph.
It support all functionlity needed to recreate the MyBlueprint 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.
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.
Thru the KismetEditorWidget Context (BPEditor) you can open built in windows like Native Code Generation Tool, 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.
Example can be found in EW_BPEditor.
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
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 regulare widgets.
Object that support drag and drop to the graph/nodes/pins:
Variable
VariablePin
Function
Macro
LocalVariable
EventDispatcher
InterfaceFunction
WidgetVariable
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.
Example can be found in EW_NodeList and EW_NodeInfo.
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.
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.
With ElgBESGraphPin object you get what type it is, if it's connected, break it's link, link it to another pin or if it's a data pin promote it to a variable.
You can create, modify or remove variables in the blueprint. A member variable is represented by a ElgBESGraphVariableMember object.
Example can be found in EW_VariableList and EW_VarInheritedList.
From the BPEditor context you can get variables in the blueprint, create new variables or remove one.
With ElgBESGraphVariableMember object you can remove, change name, duplicate, change type, set replicationType etc.
The plugin expose functionality to work with the functions in a blueprint. You can get/set the Category, if the function is pure, if it should be deprecated and more. Or add/remove/edit local variables or it's pins.
A function is represented by a ElgBESGraphFunction object. Each pin in the function is is represented by a ElgBESGraphFunctionPin object. Local variables in a function is represented by a ElgBESGraphVariableLocal object.
Example can be found in EW_FunctionList.
From the BPEditor context you can get functions in the blueprint, create new function or override functions one.
With a ElgBESGraphFunction object you can create local vaiable, get local variables, get or add pins to the function.
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.
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.
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.
Example can be found in EW_InterfaceList.
Nodes to add/remove a interface, and get implemented interfaces objects ElgBESGraphInterface.
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.
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.
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.
The plugin give you access to quary 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.
Example can be found in EW_MacroList.
From the BPEditor context you can create new macros or get access to existing macros in the blueprint.
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.
On the ElgBESGraphMacroPin object you can get or set the name, direction, data type.
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.
Example can be found in EW_UberGrapsList.
From the BPEditor context you can create new UberGraphs or get access to existing graphs in the blueprint.
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.
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
Example can be found in EW_EventDispatcherList.
From the BPEditor context you can create new EventDispatcher or get access to existing EventDispatcher in the blueprint.
From ElgBESGraphEventDispatcher object you can open the graph, remove it (as long as it's not the default Event Graph).
From ElgBESGraphEventDispatcherPin object you can change the pin order, remove, change name or change data type.
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.
Example can be found in EW_WidgetTree.
From the BPEditor context you can access any widgets that has been placed in the designer mode.
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.
From ElgBESGraphWidgetVariable object you can set the category, get the data type.
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.