6#include "./../../vector.h"
8#include "../../Source/third_party/imgui/imgui.h"
13 class ComponentNodeRenderer;
35 void Update(
float deltaTime);
58 void AddComponentNode(
const std::string& componentType,
const std::string& componentName,
float x,
float y);
ComponentTypeID GetComponentTypeID_Static()
Abstract interface for canvas editors with unified pan/zoom/grid management.
void CompleteConnection(NodeId targetNodeId)
NodeId m_connectionSourceNodeId
void Update(float deltaTime)
Vector m_contextMenuConnectionMousePos
void OnKeyUp(int keyCode)
EntityPrefabGraphDocument * GetDocument() const
void HandleNodeDragStart(NodeId nodeId, float x, float y)
ICanvasEditor * m_canvasEditor
void SetSnapToGrid(bool snap)
void HandlePanStart(float x, float y)
void SetShowDebugInfo(bool show)
bool IsCreatingConnection() const
bool GetShowDebugInfo() const
Vector m_selectionRectEnd
std::unique_ptr< ComponentNodeRenderer > m_renderer
int m_contextMenuConnectionIndex
bool IsNodeDragging() const
void AcceptComponentDropAtScreenPos(const std::string &componentType, const std::string &componentName, float screenX, float screenY)
void StartConnectionCreation(NodeId sourceNodeId)
int m_hoveredConnectionIndex
void SelectNodesInRectangle(const Vector &rectStart, const Vector &rectEnd, bool addToSelection=false)
void HandleNodeDrag(float x, float y)
void RenderSelectionRectangle()
ImVec2 GetCanvasScreenPos() const
void SetCanvasOffset(const Vector &offset)
void SetGridEnabled(bool enabled)
float GetCanvasZoom() const
void CancelConnectionCreation()
void RenderSelectionBox()
void HandleConnectionCreation(float x, float y)
void OnMouseUp(int button, float x, float y)
void SelectNodeAt(float x, float y, bool addToSelection=false)
void RenderConnectionPreview()
void RenderConnectionContextMenu()
void OnMouseMove(float x, float y)
Vector m_selectionRectStart
void SnapNodePositionToGrid(Vector &position)
bool IsGridEnabled() const
void Initialize(EntityPrefabGraphDocument *document)
void UpdateNodePositions()
void SetCanvasZoom(float zoom)
Vector m_connectionPreviewEnd
Vector GetCanvasOffset() const
void DeleteSelectedNodes()
Vector ScreenToCanvas(float screenX, float screenY) const
Vector m_contextMenuMousePos
void HandlePan(float x, float y)
EntityPrefabGraphDocument * m_document
bool IsSnapToGridEnabled() const
CanvasInteractionMode m_interactionMode
void HandleConnectionEnd(float x, float y)
bool m_isSelectingRectangle
void SetGridSpacing(float spacing)
void OnMouseDown(int button, float x, float y)
Vector CanvasToScreen(float canvasX, float canvasY) const
void AddComponentNode(const std::string &componentType, const std::string &componentName, float x, float y)
CanvasInteractionMode GetInteractionMode() const
void SetCanvasEditor(ICanvasEditor *canvasEditor)
NodeId m_contextMenuNodeId
bool m_isCreatingConnection
void OnKeyDown(int keyCode)
void ZoomCanvas(float zoomDelta, float centerX, float centerY)
void PanCanvas(float deltaX, float deltaY)
NodeId GetNodeAtPosition(float x, float y)
float GetGridSpacing() const
bool m_showConnectionContextMenu
NodeId GetConnectionSourceNode() const
void OnMouseScroll(float delta)
< Provides AssetID and INVALID_ASSET_ID
const NodeId InvalidNodeId