![]() |
Olympe Engine 2.0
2D Game Engine with ECS Architecture
|
NodeGraphPanel - ImGui/ImNodes panel for node graph editing Provides visual editor for behavior trees and state machines. More...
#include <NodeGraphPanel.h>
Collaboration diagram for Olympe::NodeGraphPanel:Public Member Functions | |
| NodeGraphPanel () | |
| ~NodeGraphPanel () | |
| void | Initialize () |
| void | Shutdown () |
| void | Render () |
| void | RenderContent () |
| void | RenderGraphTabs () |
| void | RenderGraph () |
| void | RenderContextMenu () |
| void | RenderNodeProperties () |
| void | RenderNodeEditModal () |
| void | HandleKeyboardShortcuts () |
| void | HandleNodeInteractions (int graphID) |
| void | RenderSubgraphTabBar () |
| Renders the subgraph-aware tab bar above the graph canvas. | |
| void | OpenSubgraphTab (const std::string &subgraphUUID, const std::string &displayName) |
Opens (or focuses) the subgraph identified by subgraphUUID in a new tab. | |
| void | CloseSubgraphTab (int index) |
Closes the tab at index. | |
| void | CreateEmptySubgraph (const std::string &name) |
| Creates an empty subgraph, inserts it into the active blueprint's data.subgraphs dict, and opens it in a new tab. | |
| const GraphTab * | GetActiveTab () const |
| Returns the GraphTab for the currently active tab. | |
| std::string | GetActiveSubgraphUUID () const |
| Returns the subgraph UUID for the active tab, or empty string if the root graph is active. | |
| void | RenderNodePinsAndContent (GraphNode *node, int globalNodeUID, int graphID, const std::unordered_set< int > &connectedAttrIDs={}) |
| Render a single node with a coloured title bar, icon, and typed pins. | |
| void | RenderTypedPin (int attrId, const char *label, bool isInput, bool isExec, const std::unordered_set< int > &connectedAttrIDs={}) |
| Render a single typed attribute pin using ImDrawList shapes. | |
| void | RenderActiveLinks (NodeGraph *graph, int graphID) |
| Overlay glow-coloured lines on links that connect to/from the active debug node, giving a visual "active link" indicator. | |
| void | RenderConnectionIndices (NodeGraph *graph, int graphID) |
| Render execution indices (1, 2, 3, ...n) on connection lines for Sequence and Selector nodes based on child Y-position ordering. | |
| void | CreateNewNode (const char *nodeType, float x, float y) |
| void | SyncNodePositionsFromImNodes (int graphID) |
| int | GlobalUIDToLocalNodeID (int globalUID, int graphID) const |
Static Public Member Functions | |
| static void | SetActiveDebugNode (int localNodeId) |
| Set the local node ID that is currently executing. | |
Public Attributes | |
| int | m_SelectedNodeId = -1 |
| int | m_SelectedLinkId = -1 |
| bool | m_ShowContextMenu = false |
| float | m_ContextMenuPosX = 0.0f |
| float | m_ContextMenuPosY = 0.0f |
| bool | m_SuppressGraphTabs = false |
| When true, RenderGraphTabs() is skipped (used by BehaviorTreeRenderer) | |
| bool | m_ShowNodeEditModal = false |
| GraphNode * | m_EditingNode = nullptr |
| int | m_EditingNodeId = -1 |
| char | m_NodeNameBuffer [256] |
| bool | m_NodeDragStarted = false |
| int | m_DraggedNodeId = -1 |
| float | m_DragStartX = 0.0f |
| float | m_DragStartY = 0.0f |
| char | m_ContextMenuSearch [128] |
| bool | m_ShowMinimap = true |
| When true the built-in ImNodes minimap is rendered in the bottom-right corner of the node editor canvas. | |
| bool | m_SnapToGrid = false |
| When true node positions are rounded to the nearest grid cell on move. | |
| float | m_SnapGridSize = 16.0f |
| Grid cell size in canvas units used when snap-to-grid is enabled. | |
Private Attributes | |
| EditorAutosaveManager | m_autosave |
| Async autosave manager – persists node positions without blocking the UI. | |
| std::unordered_set< int > | m_positionedNodes |
| Tracks which global node UIDs have already had their ImNodes position initialised. | |
| int | m_lastActiveGraphId = -1 |
| Graph ID that was active last frame; used to detect graph switches so m_positionedNodes can be cleared. | |
| std::vector< GraphTab > | m_SubgraphTabs |
| Ordered list of open subgraph tabs. Index 0 is always the root graph. | |
| int | m_ActiveSubgraphTabIndex = 0 |
| Index into m_SubgraphTabs of the currently visible tab. | |
| char | m_NewSubgraphNameBuffer [128] |
| Buffer used by the "New SubGraph" name input popup. | |
| ImNodesEditorContext * | m_imnodesContext = nullptr |
| Dedicated imnodes rendering context for this panel instance. | |
| std::unique_ptr< class ImNodesCanvasEditor > | m_canvasEditor |
| Canvas editor adapter for minimap support (Phase 36) Abstracts imnodes minimap rendering through ICanvasEditor interface. | |
Static Private Attributes | |
| static int | s_ActiveDebugNodeId = -1 |
| Backing storage for SetActiveDebugNode: the local node ID currently executing (-1 = none). | |
NodeGraphPanel - ImGui/ImNodes panel for node graph editing Provides visual editor for behavior trees and state machines.
Definition at line 54 of file NodeGraphPanel.h.
| Olympe::NodeGraphPanel::NodeGraphPanel | ( | ) |
Definition at line 76 of file NodeGraphPanel.cpp.
References m_ActiveSubgraphTabIndex, m_ContextMenuSearch, m_NewSubgraphNameBuffer, m_NodeNameBuffer, and m_SubgraphTabs.
| Olympe::NodeGraphPanel::~NodeGraphPanel | ( | ) |
Definition at line 87 of file NodeGraphPanel.cpp.
Closes the tab at index.
The root tab (index 0) cannot be closed.
Definition at line 2091 of file NodeGraphPanel.cpp.
References GetComponentTypeID_Static(), m_ActiveSubgraphTabIndex, and m_SubgraphTabs.
Referenced by RenderSubgraphTabBar().
Here is the call graph for this function:
Here is the caller graph for this function:Creates an empty subgraph, inserts it into the active blueprint's data.subgraphs dict, and opens it in a new tab.
| name | Human-readable name for the new subgraph. |
Definition at line 2108 of file NodeGraphPanel.cpp.
References GetComponentTypeID_Static(), and OpenSubgraphTab().
Referenced by RenderSubgraphTabBar().
Here is the call graph for this function:
Here is the caller graph for this function:Definition at line 1678 of file NodeGraphPanel.cpp.
References Olympe::BlueprintEditor::Get(), Olympe::NodeGraphManager::Get(), Olympe::NodeGraphManager::GetActiveGraph(), Olympe::NodeGraphManager::GetActiveGraphId(), Olympe::BlueprintEditor::GetCommandStack(), GetComponentTypeID_Static(), and m_SelectedNodeId.
Referenced by RenderContextMenu(), and RenderGraph().
Here is the call graph for this function:
Here is the caller graph for this function:| std::string Olympe::NodeGraphPanel::GetActiveSubgraphUUID | ( | ) | const |
Returns the subgraph UUID for the active tab, or empty string if the root graph is active.
Definition at line 2136 of file NodeGraphPanel.cpp.
References GetActiveTab(), and GetComponentTypeID_Static().
Here is the call graph for this function:Returns the GraphTab for the currently active tab.
Definition at line 2126 of file NodeGraphPanel.cpp.
References m_ActiveSubgraphTabIndex, and m_SubgraphTabs.
Referenced by GetActiveSubgraphUUID().
Here is the caller graph for this function:Definition at line 175 of file NodeGraphPanel.h.
References GetComponentTypeID_Static().
Referenced by HandleNodeInteractions(), and RenderGraph().
Here is the call graph for this function:
Here is the caller graph for this function:| void Olympe::NodeGraphPanel::HandleKeyboardShortcuts | ( | ) |
Definition at line 1726 of file NodeGraphPanel.cpp.
References Olympe::NodeGraphClipboard::CopySelectedNodes(), Olympe::Blueprint::CommandStack::ExecuteCommand(), Olympe::BlueprintEditor::Get(), Olympe::NodeGraphManager::Get(), Olympe::NodeGraphClipboard::Get(), Olympe::NodeGraphManager::GetActiveGraph(), Olympe::NodeGraphManager::GetActiveGraphId(), Olympe::BlueprintEditor::GetCommandStack(), GetComponentTypeID_Static(), m_ShowMinimap, m_SnapGridSize, m_SnapToGrid, Olympe::NodeGraphClipboard::PasteNodes(), Olympe::BlueprintEditor::Redo(), and Olympe::BlueprintEditor::Undo().
Referenced by RenderContent().
Here is the call graph for this function:
Here is the caller graph for this function:Definition at line 1176 of file NodeGraphPanel.cpp.
References Olympe::BT_Action, Olympe::TaskSpec::displayName, Olympe::AtomicTaskUIRegistry::Get(), Olympe::BlueprintEditor::Get(), Olympe::NodeGraphManager::Get(), Olympe::EditorContext::Get(), Olympe::NodeGraphManager::GetActiveGraph(), Olympe::BlueprintEditor::GetCommandStack(), GetComponentTypeID_Static(), Olympe::InspectorPanel::GetInstance(), Olympe::AtomicTaskUIRegistry::GetTaskSpec(), GlobalUIDToLocalNodeID(), and m_SelectedNodeId.
Referenced by RenderGraph().
Here is the call graph for this function:
Here is the caller graph for this function:| void Olympe::NodeGraphPanel::Initialize | ( | ) |
Definition at line 91 of file NodeGraphPanel.cpp.
References Olympe::EditorAutosaveManager::Init(), m_autosave, and m_imnodesContext.
Referenced by Olympe::TabManager::CreateNewTab(), Olympe::BlueprintEditorGUI::Initialize(), Olympe::BehaviorTreeDebugWindow::InitNodeGraphDebugMode(), and Olympe::TabManager::OpenFileInTab().
Here is the call graph for this function:
Here is the caller graph for this function:| void Olympe::NodeGraphPanel::OpenSubgraphTab | ( | const std::string & | subgraphUUID, |
| const std::string & | displayName | ||
| ) |
Opens (or focuses) the subgraph identified by subgraphUUID in a new tab.
Called on double-click of a BT_SubGraph node.
| subgraphUUID | UUID key in data.subgraphs. |
| displayName | Name shown on the tab. |
Definition at line 2069 of file NodeGraphPanel.cpp.
References GetComponentTypeID_Static(), m_ActiveSubgraphTabIndex, and m_SubgraphTabs.
Referenced by CreateEmptySubgraph().
Here is the call graph for this function:
Here is the caller graph for this function:| void Olympe::NodeGraphPanel::Render | ( | ) |
Definition at line 119 of file NodeGraphPanel.cpp.
References RenderContent().
Here is the call graph for this function:Overlay glow-coloured lines on links that connect to/from the active debug node, giving a visual "active link" indicator.
Must be called AFTER ImNodes::EndNodeEditor() so that node screen-space positions are valid.
| graph | Active NodeGraph. |
| graphID | Active graph ID. |
Definition at line 1356 of file NodeGraphPanel.cpp.
References GetComponentTypeID_Static(), and s_ActiveDebugNodeId.
Referenced by RenderGraph().
Here is the call graph for this function:
Here is the caller graph for this function:Render execution indices (1, 2, 3, ...n) on connection lines for Sequence and Selector nodes based on child Y-position ordering.
Phase 38: Y-Axis positional execution ordering - indices auto-calculated from GetChildrenSortedByY() which sorts children by editorPosY.
Must be called AFTER ImNodes::EndNodeEditor() so that node screen-space positions are valid.
| graph | Active NodeGraph. |
| graphID | Active graph ID. |
Definition at line 1415 of file NodeGraphPanel.cpp.
References Olympe::BT_Selector, Olympe::BT_Sequence, and GetComponentTypeID_Static().
Referenced by RenderGraph().
Here is the call graph for this function:
Here is the caller graph for this function:| void Olympe::NodeGraphPanel::RenderContent | ( | ) |
Definition at line 126 of file NodeGraphPanel.cpp.
References Olympe::BlueprintEditor::Get(), Olympe::NodeGraphManager::Get(), Olympe::EntityInspectorManager::Get(), Olympe::NodeGraphManager::GetActiveGraph(), Olympe::NodeGraphManager::GetActiveGraphId(), GetComponentTypeID_Static(), Olympe::EntityInspectorManager::GetEntityInfo(), Olympe::BlueprintEditor::GetSelectedEntity(), HandleKeyboardShortcuts(), Olympe::NodeGraph::HasFilepath(), m_autosave, m_canvasEditor, m_SnapGridSize, m_SnapToGrid, m_SuppressGraphTabs, RenderGraph(), RenderGraphTabs(), RenderNodeEditModal(), s_ActiveDebugNodeId, SyncNodePositionsFromImNodes(), and Olympe::EditorAutosaveManager::Tick().
Referenced by Render(), and Olympe::BehaviorTreeRenderer::RenderLayoutWithTabs().
Here is the call graph for this function:
Here is the caller graph for this function:| void Olympe::NodeGraphPanel::RenderContextMenu | ( | ) |
Definition at line 1521 of file NodeGraphPanel.cpp.
References Olympe::Comment, CreateNewNode(), Olympe::NodeGraphManager::Get(), Olympe::EnumCatalogManager::Get(), Olympe::AtomicTaskRegistry::Get(), Olympe::EnumCatalogManager::GetActionTypes(), Olympe::NodeGraphManager::GetActiveGraph(), Olympe::NodeGraph::GetAllNodes(), Olympe::AtomicTaskRegistry::GetAllTaskIDs(), GetComponentTypeID_Static(), Olympe::EnumCatalogManager::GetConditionTypes(), Olympe::EnumCatalogManager::GetDecoratorTypes(), m_ContextMenuPosX, m_ContextMenuPosY, m_ContextMenuSearch, and Olympe::GraphNode::parameters.
Here is the call graph for this function:| void Olympe::NodeGraphPanel::RenderGraph | ( | ) |
Definition at line 551 of file NodeGraphPanel.cpp.
References Olympe::GraphNode::actionType, Olympe::AtomicTask, Olympe::Branch, Olympe::BT_Action, Olympe::BT_Condition, Olympe::BT_Decorator, Olympe::BT_OnEvent, Olympe::SystemColors::BT_ROOT_NODE_COLOR, Olympe::BT_Selector, Olympe::BT_Sequence, Olympe::GraphNode::conditionType, CreateNewNode(), Olympe::GraphNode::decoratorType, Olympe::Delay, Olympe::DoOnce, Olympe::EntryPoint, Olympe::Blueprint::CommandStack::ExecuteCommand(), Olympe::ForEach, Olympe::GraphLink::fromNode, Olympe::BlueprintEditor::Get(), Olympe::NodeGraphManager::Get(), Olympe::EditorContext::Get(), Olympe::EnumCatalogManager::Get(), Olympe::NodeStyleRegistry::Get(), Olympe::NodeGraphManager::GetActiveGraph(), Olympe::NodeGraphManager::GetActiveGraphId(), Olympe::GetBBValue, Olympe::BlueprintEditor::GetCommandStack(), GetComponentTypeID_Static(), Olympe::NodeGraphManager::GetGraph(), Olympe::NodeStyleRegistry::GetStyle(), GlobalUIDToLocalNodeID(), HandleNodeInteractions(), Olympe::NodeStyle::headerColor, Olympe::NodeStyle::headerHoveredColor, Olympe::NodeStyle::headerSelectedColor, m_autosave, m_canvasEditor, m_ContextMenuPosX, m_ContextMenuPosY, m_imnodesContext, m_lastActiveGraphId, m_positionedNodes, m_SelectedLinkId, m_SelectedNodeId, m_SnapGridSize, m_SnapToGrid, Olympe::MathOp, Olympe::GraphNode::name, RenderActiveLinks(), RenderConnectionIndices(), RenderNodePinsAndContent(), s_ActiveDebugNodeId, Olympe::EditorAutosaveManager::ScheduleSave(), Olympe::SetBBValue, Olympe::SubGraph, Olympe::Switch, Olympe::SystemColors::ToImU32_ABGR(), Olympe::NodeGraph::ToJson(), Olympe::VSSequence, and Olympe::While.
Referenced by RenderContent(), and Olympe::BehaviorTreeDebugWindow::RenderNodeGraphDebugPanel().
Here is the call graph for this function:
Here is the caller graph for this function:| void Olympe::NodeGraphPanel::RenderGraphTabs | ( | ) |
Definition at line 383 of file NodeGraphPanel.cpp.
References Olympe::NodeGraphManager::CloseGraph(), Olympe::NodeGraphManager::CreateGraph(), Olympe::NodeGraphManager::Get(), Olympe::NodeGraphManager::GetActiveGraphId(), Olympe::NodeGraphManager::GetAllGraphIds(), GetComponentTypeID_Static(), Olympe::NodeGraphManager::GetGraph(), Olympe::NodeGraphManager::GetGraphName(), and Olympe::NodeGraphManager::SetActiveGraph().
Referenced by RenderContent().
Here is the call graph for this function:
Here is the caller graph for this function:| void Olympe::NodeGraphPanel::RenderNodeEditModal | ( | ) |
Definition at line 1808 of file NodeGraphPanel.cpp.
References Olympe::BT_Action, Olympe::BT_Condition, Olympe::BT_Decorator, Olympe::EnumCatalogManager::FindActionType(), Olympe::EnumCatalogManager::FindConditionType(), Olympe::NodeGraphManager::Get(), Olympe::EnumCatalogManager::Get(), Olympe::EnumCatalogManager::GetActionTypes(), Olympe::NodeGraphManager::GetActiveGraph(), GetComponentTypeID_Static(), Olympe::EnumCatalogManager::GetConditionTypes(), Olympe::EnumCatalogManager::GetDecoratorTypes(), m_EditingNodeId, m_NodeNameBuffer, m_ShowNodeEditModal, Olympe::NodeTypeToString(), and Olympe::CatalogType::parameters.
Referenced by RenderContent().
Here is the call graph for this function:
Here is the caller graph for this function:| void Olympe::NodeGraphPanel::RenderNodePinsAndContent | ( | GraphNode * | node, |
| int | globalNodeUID, | ||
| int | graphID, | ||
| const std::unordered_set< int > & | connectedAttrIDs = {} |
||
| ) |
Render a single node with a coloured title bar, icon, and typed pins.
Called from RenderGraph() for every node in the active graph.
| node | Pointer to the graph node to render. |
| globalNodeUID | ImNodes global unique ID for the node. |
| graphID | Active graph ID (used for debug-highlight check). |
| connectedAttrIDs | Set of connected attribute IDs (for filled/outlined shapes). |
Definition at line 1276 of file NodeGraphPanel.cpp.
References Olympe::BT_Action, Olympe::BT_Condition, Olympe::BT_Decorator, Olympe::BT_OnEvent, Olympe::BT_Root, Olympe::BT_Selector, Olympe::BT_Sequence, Olympe::Comment, Olympe::NodeGraphManager::Get(), Olympe::NodeStyleRegistry::Get(), Olympe::NodeGraphManager::GetActiveGraph(), GetComponentTypeID_Static(), Olympe::NodeStyleRegistry::GetStyle(), Olympe::NodeStyle::icon, Olympe::NodeGraph::MarkDirty(), Olympe::NodeTypeToString(), and RenderTypedPin().
Referenced by RenderGraph().
Here is the call graph for this function:
Here is the caller graph for this function:| void Olympe::NodeGraphPanel::RenderNodeProperties | ( | ) |
Definition at line 1720 of file NodeGraphPanel.cpp.
| void Olympe::NodeGraphPanel::RenderSubgraphTabBar | ( | ) |
Renders the subgraph-aware tab bar above the graph canvas.
Shows one tab per open subgraph plus the root graph. A "+ New SubGraph" button at the end creates an empty subgraph and opens it.
Definition at line 2000 of file NodeGraphPanel.cpp.
References CloseSubgraphTab(), CreateEmptySubgraph(), Olympe::GraphTab::displayName, GetComponentTypeID_Static(), m_ActiveSubgraphTabIndex, m_NewSubgraphNameBuffer, and m_SubgraphTabs.
Here is the call graph for this function:| void Olympe::NodeGraphPanel::RenderTypedPin | ( | int | attrId, |
| const char * | label, | ||
| bool | isInput, | ||
| bool | isExec, | ||
| const std::unordered_set< int > & | connectedAttrIDs = {} |
||
| ) |
Render a single typed attribute pin using ImDrawList shapes.
| attrId | ImNodes attribute ID. |
| label | Text label shown next to the pin. |
| isInput | True for input (left) attribute; false for output (right). |
| isExec | True to use the exec (triangle) pin shape; false for data (circle). |
| connectedAttrIDs | Set of connected attribute IDs (for filled/outlined shapes). |
Definition at line 1248 of file NodeGraphPanel.cpp.
References GetComponentTypeID_Static().
Referenced by RenderNodePinsAndContent().
Here is the call graph for this function:
Here is the caller graph for this function:Set the local node ID that is currently executing.
Pass -1 to clear the highlight. The value is stored in a static so it is visible to all panel instances and to the WorldBridge callback.
Definition at line 71 of file NodeGraphPanel.cpp.
References GetComponentTypeID_Static(), and s_ActiveDebugNodeId.
Referenced by Olympe::BehaviorTreeDebugWindow::RenderNodeGraphDebugPanel(), and Olympe::WorldBridge_RegisterTaskCallback().
Here is the call graph for this function:
Here is the caller graph for this function:| void Olympe::NodeGraphPanel::Shutdown | ( | ) |
Definition at line 106 of file NodeGraphPanel.cpp.
References Olympe::EditorAutosaveManager::Flush(), m_autosave, and m_imnodesContext.
Referenced by Olympe::BlueprintEditorGUI::Shutdown(), and Olympe::BehaviorTreeDebugWindow::ShutdownNodeGraphDebugMode().
Here is the call graph for this function:
Here is the caller graph for this function:Definition at line 1153 of file NodeGraphPanel.cpp.
References Olympe::NodeGraphManager::Get(), Olympe::NodeGraph::GetAllNodes(), GetComponentTypeID_Static(), and Olympe::NodeGraphManager::GetGraph().
Referenced by RenderContent().
Here is the call graph for this function:
Here is the caller graph for this function:
|
private |
Index into m_SubgraphTabs of the currently visible tab.
Definition at line 260 of file NodeGraphPanel.h.
Referenced by CloseSubgraphTab(), GetActiveTab(), NodeGraphPanel(), OpenSubgraphTab(), and RenderSubgraphTabBar().
|
private |
Async autosave manager – persists node positions without blocking the UI.
Definition at line 241 of file NodeGraphPanel.h.
Referenced by Initialize(), RenderContent(), RenderGraph(), and Shutdown().
|
private |
Canvas editor adapter for minimap support (Phase 36) Abstracts imnodes minimap rendering through ICanvasEditor interface.
Definition at line 279 of file NodeGraphPanel.h.
Referenced by RenderContent(), and RenderGraph().
| float Olympe::NodeGraphPanel::m_ContextMenuPosX = 0.0f |
Definition at line 196 of file NodeGraphPanel.h.
Referenced by RenderContextMenu(), and RenderGraph().
| float Olympe::NodeGraphPanel::m_ContextMenuPosY = 0.0f |
Definition at line 197 of file NodeGraphPanel.h.
Referenced by RenderContextMenu(), and RenderGraph().
| char Olympe::NodeGraphPanel::m_ContextMenuSearch[128] |
Definition at line 215 of file NodeGraphPanel.h.
Referenced by NodeGraphPanel(), and RenderContextMenu().
| int Olympe::NodeGraphPanel::m_DraggedNodeId = -1 |
Definition at line 210 of file NodeGraphPanel.h.
| float Olympe::NodeGraphPanel::m_DragStartX = 0.0f |
Definition at line 211 of file NodeGraphPanel.h.
| float Olympe::NodeGraphPanel::m_DragStartY = 0.0f |
Definition at line 212 of file NodeGraphPanel.h.
Definition at line 204 of file NodeGraphPanel.h.
| int Olympe::NodeGraphPanel::m_EditingNodeId = -1 |
Definition at line 205 of file NodeGraphPanel.h.
Referenced by RenderNodeEditModal().
|
private |
Dedicated imnodes rendering context for this panel instance.
Prevents viewport state collision with other graph renderers.
Definition at line 271 of file NodeGraphPanel.h.
Referenced by Initialize(), RenderGraph(), and Shutdown().
|
private |
Graph ID that was active last frame; used to detect graph switches so m_positionedNodes can be cleared.
Definition at line 250 of file NodeGraphPanel.h.
Referenced by RenderGraph().
|
private |
Buffer used by the "New SubGraph" name input popup.
Definition at line 263 of file NodeGraphPanel.h.
Referenced by NodeGraphPanel(), and RenderSubgraphTabBar().
Definition at line 209 of file NodeGraphPanel.h.
| char Olympe::NodeGraphPanel::m_NodeNameBuffer[256] |
Definition at line 206 of file NodeGraphPanel.h.
Referenced by NodeGraphPanel(), and RenderNodeEditModal().
|
private |
Tracks which global node UIDs have already had their ImNodes position initialised.
Prevents SetNodeGridSpacePos() from overriding user drags on subsequent frames. Cleared whenever the active graph changes.
Definition at line 246 of file NodeGraphPanel.h.
Referenced by RenderGraph().
| int Olympe::NodeGraphPanel::m_SelectedLinkId = -1 |
Definition at line 194 of file NodeGraphPanel.h.
Referenced by RenderGraph().
| int Olympe::NodeGraphPanel::m_SelectedNodeId = -1 |
Definition at line 193 of file NodeGraphPanel.h.
Referenced by CreateNewNode(), Olympe::BehaviorTreeRenderer::HandleKeyboardShortcuts(), HandleNodeInteractions(), RenderGraph(), and Olympe::BehaviorTreeRenderer::RenderRightPanelTabs().
Definition at line 195 of file NodeGraphPanel.h.
When true the built-in ImNodes minimap is rendered in the bottom-right corner of the node editor canvas.
Definition at line 223 of file NodeGraphPanel.h.
Referenced by HandleKeyboardShortcuts().
Definition at line 203 of file NodeGraphPanel.h.
Referenced by RenderNodeEditModal().
| float Olympe::NodeGraphPanel::m_SnapGridSize = 16.0f |
Grid cell size in canvas units used when snap-to-grid is enabled.
Definition at line 233 of file NodeGraphPanel.h.
Referenced by HandleKeyboardShortcuts(), RenderContent(), and RenderGraph().
When true node positions are rounded to the nearest grid cell on move.
Definition at line 230 of file NodeGraphPanel.h.
Referenced by HandleKeyboardShortcuts(), RenderContent(), and RenderGraph().
|
private |
Ordered list of open subgraph tabs. Index 0 is always the root graph.
Definition at line 257 of file NodeGraphPanel.h.
Referenced by CloseSubgraphTab(), GetActiveTab(), NodeGraphPanel(), OpenSubgraphTab(), and RenderSubgraphTabBar().
When true, RenderGraphTabs() is skipped (used by BehaviorTreeRenderer)
Definition at line 200 of file NodeGraphPanel.h.
Referenced by RenderContent(), and Olympe::BehaviorTreeRenderer::RenderLayoutWithTabs().
|
staticprivate |
Backing storage for SetActiveDebugNode: the local node ID currently executing (-1 = none).
Shared across all panel instances.
Definition at line 238 of file NodeGraphPanel.h.
Referenced by RenderActiveLinks(), RenderContent(), RenderGraph(), and SetActiveDebugNode().