Olympe Engine 2.0
2D Game Engine with ECS Architecture
Loading...
Searching...
No Matches
Static Public Member Functions | Private Member Functions | List of all members
Olympe::VisualScriptNodeRenderer Class Reference

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
 

Detailed Description

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.

Constructor & Destructor Documentation

◆ VisualScriptNodeRenderer()

Olympe::VisualScriptNodeRenderer::VisualScriptNodeRenderer ( )
privatedelete

Member Function Documentation

◆ RenderActiveNodeGlow()

void Olympe::VisualScriptNodeRenderer::RenderActiveNodeGlow ( int  nodeUID)
static

Renders a "currently executing" glow overlay around a node.

Parameters
nodeUIDGlobal ImNodes node UID.

Definition at line 906 of file VisualScriptNodeRenderer.cpp.

References GetComponentTypeID_Static().

+ Here is the call graph for this function:

◆ RenderBreakpointIndicator()

void Olympe::VisualScriptNodeRenderer::RenderBreakpointIndicator ( int  nodeUID)
static

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.

Parameters
nodeUIDGlobal ImNodes node UID.

Definition at line 892 of file VisualScriptNodeRenderer.cpp.

References GetComponentTypeID_Static().

+ Here is the call graph for this function:

◆ RenderNode() [1/2]

void Olympe::VisualScriptNodeRenderer::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 = {} 
)
static

Renders a complete VS node (title + exec pins + data pins).

Must be called inside an ImNodes::BeginNodeEditor() … EndNodeEditor() scope.

Parameters
nodeUIDGlobal ImNodes node UID.
nodeIDGraph-local node ID (for breakpoint lookup).
graphIDGraph ID (for breakpoint lookup).
nodeNameDisplay name.
typeNode type (determines style).
hasBreakpointWhether a breakpoint is set on this node.
isActiveWhether this node is currently executing (debug).
execInputPinsNames of exec-in pins (usually just {"In"}).
execOutputPinsNames of exec-out pins (e.g. {"True","False"}).
dataInputPins(name, type) pairs for data-in pins.
dataOutputPins(name, type) pairs for data-out pins.
Note
Tooltip display is handled by the caller after EndNodeEditor() because ImNodes::IsNodeHovered() requires ImNodesScope_None.

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:

◆ RenderNode() [2/2]

void Olympe::VisualScriptNodeRenderer::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(*)(int nodeID, void *userData onAddPin,
void onAddPinUserData,
void(*)(int nodeID, int dynamicPinIndex, void *userData onRemovePin = nullptr,
void onRemovePinUserData = nullptr,
const std::unordered_set< int > &  connectedAttrIDs = {} 
)
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).

Parameters
nodeUIDGlobal ImNodes node UID.
nodeIDGraph-local node ID.
graphIDGraph ID (breakpoint lookup).
defFull node definition (for inline parameter display).
hasBreakpointWhether a breakpoint is set on this node.
isActiveWhether this node is executing (debug).
execInputPinsNames of exec-in pins.
execOutputPinsNames 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.
onAddPinOptional callback invoked when user clicks [+] on a VSSequence/Switch. Receives the nodeID and onAddPinUserData. Pass nullptr to disable.
onAddPinUserDataUser data passed to onAddPin.
onRemovePinOptional callback invoked when user clicks [-] on a dynamic pin. Receives nodeID, 0-based dynamic pin index, and onRemovePinUserData. Pass nullptr to disable.
onRemovePinUserDataUser 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:

The documentation for this class was generated from the following files: