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

#include <ImNodesCanvasEditor.h>

+ Inheritance diagram for Olympe::ImNodesCanvasEditor:
+ Collaboration diagram for Olympe::ImNodesCanvasEditor:

Public Member Functions

 ImNodesCanvasEditor (const char *name, ImVec2 canvasScreenPos, ImVec2 canvasSize, ImNodesEditorContext *imnodesContext=nullptr)
 Construct imnodes-based canvas editor.
 
virtual ~ImNodesCanvasEditor ()=default
 
virtual void BeginRender () override
 Begin rendering cycle (calls ImNodes::BeginNodeEditor)
 
virtual void EndRender () override
 End rendering cycle (calls ImNodes::EndNodeEditor)
 
virtual ImVec2 ScreenToCanvas (const ImVec2 &screenPos) const override
 Transform screen space to canvas space.
 
virtual ImVec2 CanvasToScreen (const ImVec2 &canvasPos) const override
 Transform canvas space to screen space.
 
virtual ImVec2 EditorToGrid (const ImVec2 &editorPos) const override
 Transform editor space to grid space (removes pan)
 
virtual ImVec2 GridToEditor (const ImVec2 &gridPos) const override
 Transform grid space to editor space (adds pan)
 
virtual ImVec2 GetPan () const override
 Get current pan offset.
 
virtual void SetPan (const ImVec2 &offset) override
 Set pan offset.
 
virtual void PanBy (const ImVec2 &delta) override
 Pan by delta.
 
virtual void ResetPan () override
 Reset pan to origin.
 
virtual float GetZoom () const override
 Get current zoom level.
 
virtual void SetZoom (float scale, const ImVec2 *zoomCenter=nullptr) override
 Set zoom level (no-op for imnodes)
 
virtual void ZoomBy (float factor, const ImVec2 *zoomCenter=nullptr) override
 Zoom by multiplier (no-op for imnodes)
 
virtual ImVec2 GetZoomLimits () const override
 Get zoom limits.
 
virtual void ResetZoom () override
 Reset zoom to 1.0x (no-op, already 1.0f)
 
virtual void ResetView () override
 Reset view to defaults (pan only, zoom already 1.0f)
 
virtual CanvasGridRenderer::GridConfig GetGridConfig () const override
 Get current grid configuration.
 
virtual void RenderGrid (CanvasGridRenderer::GridStylePreset preset) override
 Render grid.
 
virtual void SetGridVisible (bool enabled) override
 Set grid visibility.
 
virtual bool IsGridVisible () const override
 Check if grid is visible.
 
virtual ImVec2 GetCanvasScreenPos () const override
 Get canvas screen position.
 
virtual ImVec2 GetCanvasSize () const override
 Get canvas size.
 
virtual void SetCanvasScreenPos (const ImVec2 &screenPos) override
 Set canvas screen position (call each frame to update)
 
virtual void SetCanvasSize (const ImVec2 &size) override
 Set canvas size (call each frame to update)
 
virtual void GetCanvasVisibleBounds (ImVec2 &outMin, ImVec2 &outMax) const override
 Get canvas visible bounds in canvas space.
 
virtual bool IsPointInCanvas (const ImVec2 &screenPos) const override
 Check if point is in canvas.
 
virtual bool IsCanvasHovered () const override
 Check if canvas is hovered.
 
virtual const charGetCanvasName () const override
 Get canvas name.
 
virtual void RenderMinimap () override
 Render minimap overlay.
 
virtual void SetMinimapVisible (bool enabled) override
 Enable/disable minimap rendering.
 
virtual bool IsMinimapVisible () const override
 Check if minimap is visible.
 
virtual void SetMinimapSize (float scale) override
 Set minimap size scale.
 
virtual float GetMinimapSize () const override
 Get minimap size scale.
 
virtual void SetMinimapPosition (int position) override
 Set minimap position.
 
virtual int GetMinimapPosition () const override
 Get minimap position.
 
virtual void UpdateMinimapNodes (const std::vector< std::tuple< int, float, float, float, float > > &nodes, float graphMinX, float graphMaxX, float graphMinY, float graphMaxY) override
 Update minimap nodes (no-op for imnodes)
 
virtual void UpdateMinimapViewport (float viewMinX, float viewMaxX, float viewMinY, float viewMaxY, float graphMinX, float graphMaxX, float graphMinY, float graphMaxY) override
 Update minimap viewport (no-op for imnodes)
 
- Public Member Functions inherited from Olympe::ICanvasEditor
virtual ~ICanvasEditor ()=default
 

Private Attributes

std::string m_name
 
ImVec2 m_canvasScreenPos
 
ImVec2 m_canvasSize
 
ImNodesEditorContextm_imnodesContext
 
bool m_gridVisible
 
bool m_minimapVisible = true
 
float m_minimapSize = 0.15f
 
int m_minimapPosition = ImNodesMiniMapLocation_BottomRight
 

Detailed Description

Definition at line 39 of file ImNodesCanvasEditor.h.

Constructor & Destructor Documentation

◆ ImNodesCanvasEditor()

Olympe::ImNodesCanvasEditor::ImNodesCanvasEditor ( const char name,
ImVec2  canvasScreenPos,
ImVec2  canvasSize,
ImNodesEditorContext imnodesContext = nullptr 
)

Construct imnodes-based canvas editor.

Parameters
nameIdentifier for this editor (e.g., "VisualScript")
canvasScreenPosTop-left corner of canvas on screen (pixels)
canvasSizeWidth/height of canvas area (pixels)
imnodesContextOptional ImNodes context (nullptr = use current)

Definition at line 11 of file ImNodesCanvasEditor.cpp.

◆ ~ImNodesCanvasEditor()

virtual Olympe::ImNodesCanvasEditor::~ImNodesCanvasEditor ( )
virtualdefault

Member Function Documentation

◆ BeginRender()

void Olympe::ImNodesCanvasEditor::BeginRender ( )
overridevirtual

Begin rendering cycle (calls ImNodes::BeginNodeEditor)

Implements Olympe::ICanvasEditor.

Definition at line 29 of file ImNodesCanvasEditor.cpp.

References m_imnodesContext.

◆ CanvasToScreen()

ImVec2 Olympe::ImNodesCanvasEditor::CanvasToScreen ( const ImVec2 canvasPos) const
overridevirtual

Transform canvas space to screen space.

For imnodes (zoom=1.0): screen = canvas + pan + canvasScreenPos

Implements Olympe::ICanvasEditor.

Definition at line 62 of file ImNodesCanvasEditor.cpp.

References GetComponentTypeID_Static(), GetPan(), and m_canvasScreenPos.

+ Here is the call graph for this function:

◆ EditorToGrid()

ImVec2 Olympe::ImNodesCanvasEditor::EditorToGrid ( const ImVec2 editorPos) const
overridevirtual

Transform editor space to grid space (removes pan)

For imnodes: grid = editor - pan

Implements Olympe::ICanvasEditor.

Definition at line 69 of file ImNodesCanvasEditor.cpp.

References GetComponentTypeID_Static(), and GetPan().

+ Here is the call graph for this function:

◆ EndRender()

void Olympe::ImNodesCanvasEditor::EndRender ( )
overridevirtual

End rendering cycle (calls ImNodes::EndNodeEditor)

Implements Olympe::ICanvasEditor.

Definition at line 41 of file ImNodesCanvasEditor.cpp.

◆ GetCanvasName()

virtual const char * Olympe::ImNodesCanvasEditor::GetCanvasName ( ) const
inlineoverridevirtual

Get canvas name.

Returns
Stored canvas name

Implements Olympe::ICanvasEditor.

Definition at line 272 of file ImNodesCanvasEditor.h.

References m_name.

◆ GetCanvasScreenPos()

virtual ImVec2 Olympe::ImNodesCanvasEditor::GetCanvasScreenPos ( ) const
inlineoverridevirtual

Get canvas screen position.

Returns
Stored canvasScreenPos

Implements Olympe::ICanvasEditor.

Definition at line 222 of file ImNodesCanvasEditor.h.

References m_canvasScreenPos.

◆ GetCanvasSize()

virtual ImVec2 Olympe::ImNodesCanvasEditor::GetCanvasSize ( ) const
inlineoverridevirtual

Get canvas size.

Returns
Stored canvasSize

Implements Olympe::ICanvasEditor.

Definition at line 228 of file ImNodesCanvasEditor.h.

References m_canvasSize.

◆ GetCanvasVisibleBounds()

void Olympe::ImNodesCanvasEditor::GetCanvasVisibleBounds ( ImVec2 outMin,
ImVec2 outMax 
) const
overridevirtual

Get canvas visible bounds in canvas space.

Parameters
outMinTop-left corner of visible area
outMaxBottom-right corner of visible area

Implements Olympe::ICanvasEditor.

Definition at line 154 of file ImNodesCanvasEditor.cpp.

References GetComponentTypeID_Static(), m_canvasScreenPos, m_canvasSize, and ScreenToCanvas().

+ Here is the call graph for this function:

◆ GetGridConfig()

CanvasGridRenderer::GridConfig Olympe::ImNodesCanvasEditor::GetGridConfig ( ) const
overridevirtual

Get current grid configuration.

Returns
GridConfig from CanvasGridRenderer with current pan/zoom

Implements Olympe::ICanvasEditor.

Definition at line 112 of file ImNodesCanvasEditor.cpp.

References GetComponentTypeID_Static(), GetPan(), Olympe::CanvasGridRenderer::GetStylePreset(), m_canvasScreenPos, m_canvasSize, and Olympe::CanvasGridRenderer::Style_VisualScript.

+ Here is the call graph for this function:

◆ GetMinimapPosition()

virtual int Olympe::ImNodesCanvasEditor::GetMinimapPosition ( ) const
inlineoverridevirtual

Get minimap position.

Returns
Current ImNodesMiniMapLocation value

Implements Olympe::ICanvasEditor.

Definition at line 318 of file ImNodesCanvasEditor.h.

References m_minimapPosition.

◆ GetMinimapSize()

virtual float Olympe::ImNodesCanvasEditor::GetMinimapSize ( ) const
inlineoverridevirtual

Get minimap size scale.

Returns
Current size multiplier

Implements Olympe::ICanvasEditor.

Definition at line 306 of file ImNodesCanvasEditor.h.

References m_minimapSize.

◆ GetPan()

ImVec2 Olympe::ImNodesCanvasEditor::GetPan ( ) const
overridevirtual

Get current pan offset.

Returns
EditorContextGetPanning() from imnodes

Implements Olympe::ICanvasEditor.

Definition at line 87 of file ImNodesCanvasEditor.cpp.

Referenced by CanvasToScreen(), EditorToGrid(), GetGridConfig(), GridToEditor(), PanBy(), RenderGrid(), and ScreenToCanvas().

+ Here is the caller graph for this function:

◆ GetZoom()

virtual float Olympe::ImNodesCanvasEditor::GetZoom ( ) const
inlineoverridevirtual

Get current zoom level.

Returns
Always 1.0f (imnodes doesn't support zoom)

Implements Olympe::ICanvasEditor.

Definition at line 139 of file ImNodesCanvasEditor.h.

◆ GetZoomLimits()

virtual ImVec2 Olympe::ImNodesCanvasEditor::GetZoomLimits ( ) const
inlineoverridevirtual

Get zoom limits.

Returns
{1.0f, 1.0f} (fixed, no zoom support)

Implements Olympe::ICanvasEditor.

Definition at line 167 of file ImNodesCanvasEditor.h.

References GetComponentTypeID_Static().

+ Here is the call graph for this function:

◆ GridToEditor()

ImVec2 Olympe::ImNodesCanvasEditor::GridToEditor ( const ImVec2 gridPos) const
overridevirtual

Transform grid space to editor space (adds pan)

For imnodes: editor = grid + pan

Implements Olympe::ICanvasEditor.

Definition at line 76 of file ImNodesCanvasEditor.cpp.

References GetComponentTypeID_Static(), and GetPan().

+ Here is the call graph for this function:

◆ IsCanvasHovered()

bool Olympe::ImNodesCanvasEditor::IsCanvasHovered ( ) const
overridevirtual

Check if canvas is hovered.

Returns
Result of ImNodes::IsEditorHovered()

Implements Olympe::ICanvasEditor.

Definition at line 177 of file ImNodesCanvasEditor.cpp.

◆ IsGridVisible()

virtual bool Olympe::ImNodesCanvasEditor::IsGridVisible ( ) const
inlineoverridevirtual

Check if grid is visible.

Returns
True if grid will be rendered

Implements Olympe::ICanvasEditor.

Definition at line 212 of file ImNodesCanvasEditor.h.

References m_gridVisible.

◆ IsMinimapVisible()

virtual bool Olympe::ImNodesCanvasEditor::IsMinimapVisible ( ) const
inlineoverridevirtual

Check if minimap is visible.

Returns
True if minimap will be rendered

Implements Olympe::ICanvasEditor.

Definition at line 294 of file ImNodesCanvasEditor.h.

References m_minimapVisible.

◆ IsPointInCanvas()

bool Olympe::ImNodesCanvasEditor::IsPointInCanvas ( const ImVec2 screenPos) const
overridevirtual

Check if point is in canvas.

Parameters
screenPosPosition in screen space
Returns
True if within canvas bounds

Implements Olympe::ICanvasEditor.

Definition at line 165 of file ImNodesCanvasEditor.cpp.

References GetComponentTypeID_Static(), m_canvasScreenPos, and m_canvasSize.

+ Here is the call graph for this function:

◆ PanBy()

void Olympe::ImNodesCanvasEditor::PanBy ( const ImVec2 delta)
overridevirtual

Pan by delta.

Implements Olympe::ICanvasEditor.

Definition at line 97 of file ImNodesCanvasEditor.cpp.

References GetComponentTypeID_Static(), GetPan(), and SetPan().

+ Here is the call graph for this function:

◆ RenderGrid()

void Olympe::ImNodesCanvasEditor::RenderGrid ( CanvasGridRenderer::GridStylePreset  preset)
overridevirtual

Render grid.

Parameters
presetStyle preset (typically Style_VisualScript)

Implements Olympe::ICanvasEditor.

Definition at line 128 of file ImNodesCanvasEditor.cpp.

References GetComponentTypeID_Static(), GetPan(), Olympe::CanvasGridRenderer::GetStylePreset(), m_canvasScreenPos, m_canvasSize, m_gridVisible, and Olympe::CanvasGridRenderer::RenderGrid().

+ Here is the call graph for this function:

◆ RenderMinimap()

void Olympe::ImNodesCanvasEditor::RenderMinimap ( )
overridevirtual

Render minimap overlay.

Calls ImNodes::MiniMap() with configured size and position

Implements Olympe::ICanvasEditor.

Definition at line 186 of file ImNodesCanvasEditor.cpp.

References GetComponentTypeID_Static(), m_minimapPosition, m_minimapSize, and m_minimapVisible.

+ Here is the call graph for this function:

◆ ResetPan()

void Olympe::ImNodesCanvasEditor::ResetPan ( )
overridevirtual

Reset pan to origin.

Implements Olympe::ICanvasEditor.

Definition at line 103 of file ImNodesCanvasEditor.cpp.

References GetComponentTypeID_Static(), and SetPan().

Referenced by ResetView().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ResetView()

virtual void Olympe::ImNodesCanvasEditor::ResetView ( )
inlineoverridevirtual

Reset view to defaults (pan only, zoom already 1.0f)

Implements Olympe::ICanvasEditor.

Definition at line 180 of file ImNodesCanvasEditor.h.

References ResetPan().

+ Here is the call graph for this function:

◆ ResetZoom()

virtual void Olympe::ImNodesCanvasEditor::ResetZoom ( )
inlineoverridevirtual

Reset zoom to 1.0x (no-op, already 1.0f)

Implements Olympe::ICanvasEditor.

Definition at line 172 of file ImNodesCanvasEditor.h.

◆ ScreenToCanvas()

ImVec2 Olympe::ImNodesCanvasEditor::ScreenToCanvas ( const ImVec2 screenPos) const
overridevirtual

Transform screen space to canvas space.

For imnodes (zoom=1.0): canvas = screen - canvasScreenPos - pan

Implements Olympe::ICanvasEditor.

Definition at line 54 of file ImNodesCanvasEditor.cpp.

References GetComponentTypeID_Static(), GetPan(), and m_canvasScreenPos.

Referenced by GetCanvasVisibleBounds().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SetCanvasScreenPos()

virtual void Olympe::ImNodesCanvasEditor::SetCanvasScreenPos ( const ImVec2 screenPos)
inlineoverridevirtual

Set canvas screen position (call each frame to update)

Parameters
screenPosTop-left corner position in screen space

Required for minimap coordinate calculations each frame

Implements Olympe::ICanvasEditor.

Definition at line 235 of file ImNodesCanvasEditor.h.

References GetComponentTypeID_Static(), and m_canvasScreenPos.

+ Here is the call graph for this function:

◆ SetCanvasSize()

virtual void Olympe::ImNodesCanvasEditor::SetCanvasSize ( const ImVec2 size)
inlineoverridevirtual

Set canvas size (call each frame to update)

Parameters
sizeWidth and height in screen space

Required for minimap rendering calculations each frame

Implements Olympe::ICanvasEditor.

Definition at line 242 of file ImNodesCanvasEditor.h.

References m_canvasSize.

◆ SetGridVisible()

void Olympe::ImNodesCanvasEditor::SetGridVisible ( bool  enabled)
overridevirtual

Set grid visibility.

Parameters
enabledTrue to show grid

Implements Olympe::ICanvasEditor.

Definition at line 145 of file ImNodesCanvasEditor.cpp.

References m_gridVisible.

◆ SetMinimapPosition()

void Olympe::ImNodesCanvasEditor::SetMinimapPosition ( int  position)
overridevirtual

Set minimap position.

Parameters
positionImNodesMiniMapLocation enum value

Implements Olympe::ICanvasEditor.

Definition at line 207 of file ImNodesCanvasEditor.cpp.

References m_minimapPosition.

◆ SetMinimapSize()

void Olympe::ImNodesCanvasEditor::SetMinimapSize ( float  scale)
overridevirtual

Set minimap size scale.

Parameters
scaleSize multiplier (0.1f to 0.3f typical)

Implements Olympe::ICanvasEditor.

Definition at line 201 of file ImNodesCanvasEditor.cpp.

References GetComponentTypeID_Static(), and m_minimapSize.

+ Here is the call graph for this function:

◆ SetMinimapVisible()

void Olympe::ImNodesCanvasEditor::SetMinimapVisible ( bool  enabled)
overridevirtual

Enable/disable minimap rendering.

Parameters
enabledTrue to show minimap

Implements Olympe::ICanvasEditor.

Definition at line 196 of file ImNodesCanvasEditor.cpp.

References m_minimapVisible.

◆ SetPan()

void Olympe::ImNodesCanvasEditor::SetPan ( const ImVec2 offset)
overridevirtual

Set pan offset.

Parameters
offsetNew pan offset

Calls EditorContextResetPanning()

Implements Olympe::ICanvasEditor.

Definition at line 92 of file ImNodesCanvasEditor.cpp.

References GetComponentTypeID_Static().

Referenced by PanBy(), and ResetPan().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ SetZoom()

virtual void Olympe::ImNodesCanvasEditor::SetZoom ( float  scale,
const ImVec2 zoomCenter = nullptr 
)
inlineoverridevirtual

Set zoom level (no-op for imnodes)

This is a no-op because imnodes doesn't expose zoom control. If zoom is needed, use CustomCanvasEditor instead.

Implements Olympe::ICanvasEditor.

Definition at line 146 of file ImNodesCanvasEditor.h.

References GetComponentTypeID_Static().

+ Here is the call graph for this function:

◆ UpdateMinimapNodes()

virtual void Olympe::ImNodesCanvasEditor::UpdateMinimapNodes ( const std::vector< std::tuple< int, float, float, float, float > > &  nodes,
float  graphMinX,
float  graphMaxX,
float  graphMinY,
float  graphMaxY 
)
inlineoverridevirtual

Update minimap nodes (no-op for imnodes)

ImNodes manages minimap data internally, so this is unused

Implements Olympe::ICanvasEditor.

Definition at line 324 of file ImNodesCanvasEditor.h.

References GetComponentTypeID_Static().

+ Here is the call graph for this function:

◆ UpdateMinimapViewport()

virtual void Olympe::ImNodesCanvasEditor::UpdateMinimapViewport ( float  viewMinX,
float  viewMaxX,
float  viewMinY,
float  viewMaxY,
float  graphMinX,
float  graphMaxX,
float  graphMinY,
float  graphMaxY 
)
inlineoverridevirtual

Update minimap viewport (no-op for imnodes)

ImNodes manages minimap viewport internally, so this is unused

Implements Olympe::ICanvasEditor.

Definition at line 336 of file ImNodesCanvasEditor.h.

References GetComponentTypeID_Static().

+ Here is the call graph for this function:

◆ ZoomBy()

virtual void Olympe::ImNodesCanvasEditor::ZoomBy ( float  factor,
const ImVec2 zoomCenter = nullptr 
)
inlineoverridevirtual

Zoom by multiplier (no-op for imnodes)

Implements Olympe::ICanvasEditor.

Definition at line 156 of file ImNodesCanvasEditor.h.

References GetComponentTypeID_Static().

+ Here is the call graph for this function:

Member Data Documentation

◆ m_canvasScreenPos

ImVec2 Olympe::ImNodesCanvasEditor::m_canvasScreenPos
private

◆ m_canvasSize

ImVec2 Olympe::ImNodesCanvasEditor::m_canvasSize
private

◆ m_gridVisible

bool Olympe::ImNodesCanvasEditor::m_gridVisible
private

Definition at line 350 of file ImNodesCanvasEditor.h.

Referenced by IsGridVisible(), RenderGrid(), and SetGridVisible().

◆ m_imnodesContext

ImNodesEditorContext* Olympe::ImNodesCanvasEditor::m_imnodesContext
private

Definition at line 349 of file ImNodesCanvasEditor.h.

Referenced by BeginRender().

◆ m_minimapPosition

int Olympe::ImNodesCanvasEditor::m_minimapPosition = ImNodesMiniMapLocation_BottomRight
private

Definition at line 355 of file ImNodesCanvasEditor.h.

Referenced by GetMinimapPosition(), RenderMinimap(), and SetMinimapPosition().

◆ m_minimapSize

float Olympe::ImNodesCanvasEditor::m_minimapSize = 0.15f
private

Definition at line 354 of file ImNodesCanvasEditor.h.

Referenced by GetMinimapSize(), RenderMinimap(), and SetMinimapSize().

◆ m_minimapVisible

bool Olympe::ImNodesCanvasEditor::m_minimapVisible = true
private

Definition at line 353 of file ImNodesCanvasEditor.h.

Referenced by IsMinimapVisible(), RenderMinimap(), and SetMinimapVisible().

◆ m_name

std::string Olympe::ImNodesCanvasEditor::m_name
private

Definition at line 346 of file ImNodesCanvasEditor.h.

Referenced by GetCanvasName().


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