7#include "../../third_party/imgui/imgui.h"
21 , m_canvasSize(canvasSize)
22 , m_canvasOffset(0.0f, 0.0f)
29 , m_middleMousePanEnabled(
true)
30 , m_scrollZoomEnabled(
true)
31 , m_scrollZoomSpeed(1.1f)
253 int pos = (position < 0) ? 0 : ((position > 3) ? 3 : position);
264 const std::vector<std::tuple<int, float, float, float, float>>& nodes,
346 if (
io.MouseWheel != 0.0f)
ICanvasEditor implementation for custom canvas with zoom support (PrefabCanvas)
ComponentTypeID GetComponentTypeID_Static()
static GridConfig GetStylePreset(GridStylePreset preset)
Get pre-configured grid style (VisualScript/Compact/Spacious)
static void RenderGrid(ImDrawList *drawList, const GridConfig &config)
Render a grid on the given ImDrawList.
GridStylePreset
Pre-configured grid styles matching professional editors.
Unified minimap renderer for standardized appearance.
void HandlePanning()
Handle middle-mouse panning.
virtual void SetMinimapPosition(int position) override
Set minimap position (corner)
void HandleZooming()
Handle scroll wheel zooming.
virtual CanvasGridRenderer::GridConfig GetGridConfig() const override
Get current grid configuration.
std::unique_ptr< CanvasMinimapRenderer > m_minimapRenderer
float ClampZoom(float zoom) const
Clamp zoom to valid range.
void UpdateMinimapNodes(const std::vector< std::tuple< int, float, float, float, float > > &nodes, float graphMinX, float graphMaxX, float graphMinY, float graphMaxY)
Update minimap with current graph data.
virtual float GetMinimapSize() const override
Get minimap size ratio.
virtual void EndRender() override
End rendering cycle.
virtual void RenderGrid(CanvasGridRenderer::GridStylePreset preset) override
Render grid.
virtual void BeginRender() override
Begin rendering cycle.
virtual void SetMinimapVisible(bool enabled) override
Enable/disable minimap.
bool m_middleMousePanEnabled
virtual bool IsPointInCanvas(const ImVec2 &screenPos) const override
Check if point is in canvas.
virtual void ZoomBy(float factor, const ImVec2 *zoomCenter=nullptr) override
Zoom by multiplier.
CustomCanvasEditor(const char *name, ImVec2 canvasScreenPos, ImVec2 canvasSize, float initialZoom=1.0f, float minZoom=0.1f, float maxZoom=3.0f)
Construct custom canvas editor with zoom support.
virtual bool IsMinimapVisible() const override
Check if minimap is visible.
virtual ImVec2 ScreenToCanvas(const ImVec2 &screenPos) const override
Transform screen space to canvas space.
virtual bool IsCanvasHovered() const override
Check if canvas is hovered.
virtual ImVec2 GridToEditor(const ImVec2 &gridPos) const override
Transform grid space to editor space.
virtual void SetZoom(float scale, const ImVec2 *zoomCenter=nullptr) override
Set zoom level directly.
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.
virtual void GetCanvasVisibleBounds(ImVec2 &outMin, ImVec2 &outMax) const override
Get canvas visible bounds in canvas space.
virtual void RenderMinimap() override
Render minimap overlay for custom canvas.
virtual void SetGridVisible(bool enabled) override
Set grid visibility.
void UpdateMinimapViewport(float viewMinX, float viewMaxX, float viewMinY, float viewMaxY, float graphMinX, float graphMaxX, float graphMinY, float graphMaxY)
Update minimap viewport from visible canvas area.
void UpdateInputState()
Update pan/zoom from current frame input.
virtual void SetMinimapSize(float scale) override
Set minimap size ratio.
virtual int GetMinimapPosition() const override
Get minimap position.
< Provides AssetID and INVALID_ASSET_ID
MinimapPosition
Screen corner positions for minimap overlay.
Configuration parameters for grid rendering.