Olympe Engine 2.0
2D Game Engine with ECS Architecture
Loading...
Searching...
No Matches
EntityPrefabRenderer.h
Go to the documentation of this file.
1#pragma once
2
3#include "../IGraphRenderer.h"
4#include "PrefabCanvas.h"
7#include "../Utilities/ICanvasEditor.h"
8#include <memory>
9#include <string>
10
11namespace Olympe {
12
13/**
14 * @class EntityPrefabRenderer
15 * @brief Renderer adapter for Entity Prefab graphs.
16 *
17 * Implements IGraphRenderer interface for the TabManager,
18 * delegating rendering to PrefabCanvas with integrated component palette and property panel.
19 */
21{
22public:
25
26 void Render() override;
27 bool Load(const std::string& path) override;
28 bool Save(const std::string& path) override;
29 bool IsDirty() const override;
30 std::string GetGraphType() const override;
31 std::string GetCurrentPath() const override;
32
33 // Phase 35.0: Canvas state management
34 void SaveCanvasState() override;
35 void RestoreCanvasState() override;
36 std::string GetCanvasStateJSON() const override;
37 void SetCanvasStateJSON(const std::string& json) override;
38
39private:
43 std::unique_ptr<ICanvasEditor> m_canvasEditor; // NEW: Standardized canvas interface
44 std::string m_filePath;
45 bool m_isDirty = false;
46 float m_canvasPanelWidth = 0.75f; // 75% for canvas, 25% for side panel
47 int m_rightPanelTabSelection = 0; // 0 = ComponentPalette, 1 = PropertyPanel
48
49 // Canvas state snapshot (Phase 35.0)
51 {
52 float panX;
53 float panY;
54 float zoom;
56
57 // Phase 37 — Minimap toolbar controls
58 bool m_minimapVisible = true;
59 float m_minimapSize = 0.15f;
60 int m_minimapPosition = 1; // 0=TopLeft, 1=TopRight, 2=BottomLeft, 3=BottomRight
61
62 // Rendering methods
63 void RenderToolbar();
66};
67
68} // namespace Olympe
ComponentTypeID GetComponentTypeID_Static()
Definition ECS_Entity.h:56
Renderer adapter for Entity Prefab graphs.
bool Save(const std::string &path) override
Saves the current graph state to disk.
void SetCanvasStateJSON(const std::string &json) override
Restore canvas state from JSON string.
std::unique_ptr< ICanvasEditor > m_canvasEditor
bool IsDirty() const override
Returns true when the graph has unsaved changes.
void Render() override
Renders the graph canvas into the current ImGui child window.
ComponentPalettePanel m_componentPalette
bool Load(const std::string &path) override
Loads a graph from a file on disk.
std::string GetCanvasStateJSON() const override
Get canvas state as JSON string for persistence.
void RestoreCanvasState() override
Restore previously saved canvas viewport state Called when tab is reactivated.
void SaveCanvasState() override
Save the current canvas viewport state (pan, zoom, etc.) Called when tab is deactivated.
std::string GetCurrentPath() const override
Returns the last path successfully loaded/saved, or empty string.
std::string GetGraphType() const override
Returns the graph type string, e.g.
struct Olympe::EntityPrefabRenderer::CanvasState m_savedCanvasState
Polymorphic interface for all graph editor renderers.
< Provides AssetID and INVALID_ASSET_ID
nlohmann::json json