![]() |
Olympe Engine 2.0
2D Game Engine with ECS Architecture
|
Stateless helper class for rendering VS nodes via ImNodes. More...
#include <VisualScriptNodeRenderer.h>
Static Public Member Functions | |
| static void | RenderNode (int nodeUID, int nodeID, int graphID, const std::string &nodeName, TaskNodeType type, bool hasBreakpoint, bool isActive, const std::vector< std::string > &execInputPins, const std::vector< std::string > &execOutputPins, const std::vector< std::pair< std::string, VariableType > > &dataInputPins, const std::vector< std::pair< std::string, VariableType > > &dataOutputPins, const std::unordered_set< int > &connectedAttrIDs={}) |
| Renders a complete VS node (title + exec pins + data pins). | |
| static void | RenderNode (int nodeUID, int nodeID, int graphID, const TaskNodeDefinition &def, bool hasBreakpoint, bool isActive, const std::vector< std::string > &execInputPins, const std::vector< std::string > &execOutputPins, const std::vector< std::pair< std::string, VariableType > > &dataInputPins, const std::vector< std::pair< std::string, VariableType > > &dataOutputPins, void(*onAddPin)(int nodeID, void *userData), void *onAddPinUserData, void(*onRemovePin)(int nodeID, int dynamicPinIndex, void *userData)=nullptr, void *onRemovePinUserData=nullptr, const std::unordered_set< int > &connectedAttrIDs={}) |
| Extended RenderNode with inline parameter display and optional Add[+]/Remove[-] callbacks. | |
| static void | RenderBreakpointIndicator (int nodeUID) |
| Renders a breakpoint indicator (red circle) next to a node. | |
| static void | RenderActiveNodeGlow (int nodeUID) |
| Renders a "currently executing" glow overlay around a node. | |
Private Member Functions | |
| VisualScriptNodeRenderer ()=delete | |
Stateless helper class for rendering VS nodes via ImNodes.
All methods are static — this class has no instance state. The renderer pushes/pops ImNodes colour styles and delegates actual node/pin calls to ImNodes directly.
Definition at line 88 of file VisualScriptNodeRenderer.h.
|
privatedelete |
Renders a "currently executing" glow overlay around a node.
| nodeUID | Global ImNodes node UID. |
Definition at line 906 of file VisualScriptNodeRenderer.cpp.
References GetComponentTypeID_Static().
Here is the call graph for this function:Renders a breakpoint indicator (red circle) next to a node.
Must be called inside an ImNodes::BeginNodeEditor() … EndNodeEditor() scope, and after ImNodes::EndNode() so that GetNodeEditorSpacePos() is valid.
| nodeUID | Global ImNodes node UID. |
Definition at line 892 of file VisualScriptNodeRenderer.cpp.
References GetComponentTypeID_Static().
Here is the call graph for this function:
|
static |
Renders a complete VS node (title + exec pins + data pins).
Must be called inside an ImNodes::BeginNodeEditor() … EndNodeEditor() scope.
| nodeUID | Global ImNodes node UID. |
| nodeID | Graph-local node ID (for breakpoint lookup). |
| graphID | Graph ID (for breakpoint lookup). |
| nodeName | Display name. |
| type | Node type (determines style). |
| hasBreakpoint | Whether a breakpoint is set on this node. |
| isActive | Whether this node is currently executing (debug). |
| execInputPins | Names of exec-in pins (usually just {"In"}). |
| execOutputPins | Names of exec-out pins (e.g. {"True","False"}). |
| dataInputPins | (name, type) pairs for data-in pins. |
| dataOutputPins | (name, type) pairs for data-out pins. |
Definition at line 318 of file VisualScriptNodeRenderer.cpp.
References GetComponentTypeID_Static(), Olympe::GetDataPinColor(), Olympe::GetExecPinColor(), Olympe::GetNodeStyle(), Olympe::GetNodeTitleColor(), and Olympe::GetNodeTitleHoveredColor().
Here is the call graph for this function:
|
static |
Extended RenderNode with inline parameter display and optional Add[+]/Remove[-] callbacks.
Displays key parameters inline in the node body (between title bar and pins). For VSSequence and Switch nodes, renders a [+] button below the last exec-out pin that invokes onAddPin(nodeID, onAddPinUserData). For each dynamic exec-out pin (all but the base pin), renders a [-] button inline that invokes onRemovePin(nodeID, dynamicPinIndex, onRemovePinUserData).
| nodeUID | Global ImNodes node UID. |
| nodeID | Graph-local node ID. |
| graphID | Graph ID (breakpoint lookup). |
| def | Full node definition (for inline parameter display). |
| hasBreakpoint | Whether a breakpoint is set on this node. |
| isActive | Whether this node is executing (debug). |
| execInputPins | Names of exec-in pins. |
| execOutputPins | Names of exec-out pins (includes dynamic ones for VSSequence/Switch). |
| dataInputPins | (name, type) pairs for data-in pins. |
| dataOutputPins | (name, type) pairs for data-out pins. |
| onAddPin | Optional callback invoked when user clicks [+] on a VSSequence/Switch. Receives the nodeID and onAddPinUserData. Pass nullptr to disable. |
| onAddPinUserData | User data passed to onAddPin. |
| onRemovePin | Optional callback invoked when user clicks [-] on a dynamic pin. Receives nodeID, 0-based dynamic pin index, and onRemovePinUserData. Pass nullptr to disable. |
| onRemovePinUserData | User data passed to onRemovePin. |
Definition at line 486 of file VisualScriptNodeRenderer.cpp.
References Olympe::And, Olympe::AtomicTask, Olympe::TaskNodeDefinition::AtomicTaskID, Olympe::TaskNodeDefinition::BBKey, Olympe::Branch, Olympe::BuildConditionExpressionString(), Olympe::CalculateNodeMinimumWidth(), Olympe::TaskNodeDefinition::ConditionID, Olympe::TaskNodeDefinition::conditionOperandRefs, Olympe::TaskNodeDefinition::conditionRefs, Olympe::MathOpOperand::Const, Olympe::MathOpOperand::constValue, Olympe::SystemColors::DATA_PIN_COLOR, Olympe::Delay, Olympe::TaskNodeDefinition::DelaySeconds, Olympe::TaskNodeDefinition::DynamicExecOutputPins, Olympe::TaskNodeDefinition::dynamicPins, Olympe::AtomicTaskUIRegistry::Get(), Olympe::GetBBValue, GetComponentTypeID_Static(), Olympe::GetDataPinColor(), Olympe::GetExecPinColor(), Olympe::GetNodeStyle(), Olympe::GetNodeTitleColor(), Olympe::GetNodeTitleHoveredColor(), Olympe::AtomicTaskUIRegistry::GetTaskSpec(), Olympe::MathOpRef::leftOperand, Olympe::Literal, Olympe::MathOp, Olympe::MathOpRef::mathOperator, Olympe::TaskNodeDefinition::mathOpRef, Olympe::MathOpOperand::mode, Olympe::TaskNodeDefinition::NodeName, Olympe::TaskNodeDefinition::Parameters, Olympe::MathOpOperand::Pin, Olympe::MathOpRef::rightOperand, Olympe::SetBBValue, Olympe::SubGraph, Olympe::TaskNodeDefinition::SubGraphPath, Olympe::Switch, Olympe::TaskNodeDefinition::switchCases, Olympe::TaskNodeDefinition::Type, Olympe::MathOpOperand::Variable, Olympe::MathOpOperand::variableName, Olympe::VSSequence, and Olympe::While.
Here is the call graph for this function: