Olympe Engine 2.0
2D Game Engine with ECS Architecture
Loading...
Searching...
No Matches
EditorContext.h
Go to the documentation of this file.
1/**
2 * @file EditorContext.h
3 * @brief Editor mode and capabilities management
4 * @author Olympe Engine - NodeGraph Core v2.0
5 * @date 2025-02-19
6 *
7 * @details
8 * Manages editor context (mode and capabilities) for node graph editors.
9 * Inspired by Unreal Engine's editor mode system.
10 */
11
12#pragma once
13
14namespace Olympe
15{
16namespace NodeGraph
17{
18
19/**
20 * @enum EditorMode
21 * @brief Mode d'édition du graphe
22 */
23enum class EditorMode
24{
25 Editor, // Édition complète (CRUD)
26 Visualizer, // Visualisation seule (read-only)
27 Debug // Debug runtime (read-only + highlighting)
28};
29
30/**
31 * @struct EditorCapabilities
32 * @brief Capacités disponibles selon le mode
33 */
35{
36 bool canCreateNodes = false;
37 bool canDeleteNodes = false;
38 bool canMoveNodes = false;
39 bool canConnectPins = false;
40 bool canEditProperties = false;
41 bool canUndo = false;
42 bool canRedo = false;
43 bool canSave = false;
44 bool showRuntimeState = false;
45};
46
47/**
48 * @class EditorContext
49 * @brief Contexte d'édition pour un graphe
50 *
51 * Defines what operations are allowed based on the current mode:
52 * - Editor: Full CRUD operations
53 * - Visualizer: Read-only view
54 * - Debug: Read-only + runtime state visualization
55 */
57{
58public:
59 /**
60 * @brief Créer un contexte en mode édition
61 */
63
64 /**
65 * @brief Créer un contexte en mode visualisation
66 */
68
69 /**
70 * @brief Créer un contexte en mode debug
71 */
73
74 /**
75 * @brief Obtenir le mode actuel
76 */
77 EditorMode GetMode() const { return m_mode; }
78
79 /**
80 * @brief Obtenir les capacités
81 */
83
84 /**
85 * @brief Vérifier si une action est autorisée
86 */
89 bool CanMoveNodes() const { return m_capabilities.canMoveNodes; }
92 bool CanUndo() const { return m_capabilities.canUndo; }
93 bool CanRedo() const { return m_capabilities.canRedo; }
94 bool CanSave() const { return m_capabilities.canSave; }
96
97private:
99
100 EditorMode m_mode = EditorMode::Editor;
102};
103
104} // namespace NodeGraph
105} // namespace Olympe
Contexte d'édition pour un graphe.
const EditorCapabilities & GetCapabilities() const
Obtenir les capacités.
static EditorContext CreateVisualizer()
Créer un contexte en mode visualisation.
bool CanCreateNodes() const
Vérifier si une action est autorisée.
EditorMode GetMode() const
Obtenir le mode actuel.
static EditorContext CreateDebugger()
Créer un contexte en mode debug.
static EditorContext CreateEditor()
Créer un contexte en mode édition.
EditorMode
Mode d'édition du graphe.
< Provides AssetID and INVALID_ASSET_ID
Capacités disponibles selon le mode.