Skip to content

Latest commit

 

History

History
236 lines (170 loc) · 12.4 KB

README.md

File metadata and controls

236 lines (170 loc) · 12.4 KB

ElgKismetEditorWidget

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.

Kew_SelectWindow

It support all functionlity needed to recreate the MyBlueprint window inside Editor Utility Widget.
KEW_myBP

Setup

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.

Window to select Editor 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.

Setup Kismet Editor Widgets
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.
Select window

BPEditor Context

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.

Events

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

Bind graph events
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 regulare widgets. Drag detected setup
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.

Example can be found in EW_NodeList and EW_NodeInfo.

kew_nodeinfo

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.

img

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.
kew_node_nodes
kew_bes_base

ElgBESGraphPin nodes

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

Variables

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.

BPEditor Context nodes

From the BPEditor context you can get variables in the blueprint, create new variables or remove one. kew_var_context

ElgBESGraphVariableMember nodes

With ElgBESGraphVariableMember object you can remove, change name, duplicate, change type, set replicationType etc. kew_var_node_set
kew_var_node_get

Functions

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.

BPEditor Context nodes

From the BPEditor context you can get functions in the blueprint, create new function or override functions one. kew_func_context

ElgBESGraphFunction nodes

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

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. kew_local_var_nodes
kew_var_base
kew_bes_base

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.
kew_func_pin_nodes
kew_bes_base_pin_edit
kew_bes_base

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.

Example can be found in EW_InterfaceList.

BPEditor Context nodes

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

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

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. kew_interface_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.
kew_macro_context

Macros

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.

BPEditor Context nodes

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

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. kew_macro_nodes
kew_bes_base

ElgBESGraphMacroPin nodes

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

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.

Example can be found in EW_UberGrapsList.

BPEditor Context nodes

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

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.
kew_uber_nodes
kew_event_context

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

Example can be found in EW_EventDispatcherList.

BPEditor Context nodes

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

ElgBESGraphEventDispatcher nodes

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

ElgBESGraphEventDispatcherPin nodes

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

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.

Example can be found in EW_WidgetTree.

BPEditor Context nodes

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

kew_widget_context

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.

kew_widget_nodes
kew_bes_base

ElgBESGraphWidgetVariable nodes

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

kew_bes_base_var

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.

kew_pin_selector
kew_pin_selector_nodes