NcEngine
EditorContext.h
Go to the documentation of this file.
1
5#pragma once
6
7#include "ncengine/ecs/Ecs.h"
8#include "ncengine/input/Input.h"
11
12namespace nc
13{
14struct SystemEvents;
15
16namespace ui::editor
17{
20{
21 input::KeyCode toggleEditor = input::KeyCode::Tilde;
22 input::KeyCode openNewSceneDialog = input::KeyCode::F1;
23 input::KeyCode openSaveSceneDialog = input::KeyCode::F2;
24 input::KeyCode openLoadSceneDialog = input::KeyCode::F3;
25 input::KeyCode toggleEditorCamera = input::KeyCode::F5;
26
27 input::KeyCode translateMode = input::KeyCode::T;
28 input::KeyCode rotateMode = input::KeyCode::R;
29 input::KeyCode scaleMode = input::KeyCode::S;
30};
31
33enum class OpenState
34{
35 Closed, // Editor was closed this frame
36 ClosePersisted, // Editor remains closed
37 Opened, // Editor was opened this frame
38 OpenPersisted // Editor remains open
39};
40
43{
44 // General game state
45 ecs::Ecs world;
46 ModuleProvider modules;
47 SystemEvents* events = nullptr;
48
49 // Mutable state (for internal use)
50 Entity selectedEntity = Entity::Null();
51 OpenState openState = OpenState::Closed;
52 ImVec2 dimensions = ImVec2{};
53 bool rebuildStaticsOnTransformWrite = true;
54
55 // Immutable state
56 const Entity objectBucket = Entity::Null();
57 const Entity editorCamera = Entity::Null();
58 const EditorHotkeys hotkeys = EditorHotkeys{};
59};
60} // namespace ui::editor
61} // namespace nc
OpenState
Signals editor open and close events.
Definition: EditorContext.h:34
Identifies an object in the registry.
Definition: Entity.h:18
static constexpr auto Null() noexcept
Construct a null Entity.
Definition: Entity.h:61
Provides access to registered Modules.
Definition: ModuleProvider.h:15
Interface for higher-level entity and component operations with optional type access restriction.
Definition: Ecs.h:18
Signals for internal engine events.
Definition: Events.h:14
State for the editor.
Definition: EditorContext.h:43
Hotkeys for the editor.
Definition: EditorContext.h:20