Grindstone Game Engine
v0.2.0
An open source game engine and toolkit.
Toggle main menu visibility
Loading...
Searching...
No Matches
EditorManager.hpp
1
#pragma once
2
3
#include "pch.hpp"
4
5
#include <entt/entt.hpp>
6
#include <Common/Logging.hpp>
7
#include <Common/Utilities/ModuleLoading.hpp>
8
9
#include "EngineCore/EngineCore.hpp"
10
#include "Commands/CommandList.hpp"
11
#include "Importers/ImporterManager.hpp"
12
#include "ScriptBuilder/CSharpBuildManager.hpp"
13
#include "AssetTemplateRegistry.hpp"
14
#include "FileManager.hpp"
15
#include "AssetRegistry.hpp"
16
#include "GitManager.hpp"
17
#include "Selection.hpp"
18
#include "TaskSystem.hpp"
19
#include "ThumbnailManager.hpp"
20
21
namespace
Grindstone {
22
class
WorldContextSet
;
23
}
24
25
namespace
Grindstone::Events {
26
struct
BaseEvent
;
27
}
28
29
namespace
Grindstone::Editor {
30
class
IEditor
;
31
32
namespace
ImguiEditor {
33
class
ImguiEditor
;
34
}
35
36
enum class
ManipulationMode {
37
Translate,
38
Rotate,
39
Scale
40
};
41
42
enum class
PlayMode {
43
Editor,
44
Play,
45
Pause
46
};
47
48
class
Manager {
49
public
:
50
Manager() =
default
;
51
static
Manager& GetInstance();
52
static
void
SetInstance(
Grindstone::Editor::Manager
* editorManager);
53
Grindstone::Importers::ImporterManager
& GetImporterManager();
54
ImguiEditor::ImguiEditor
& GetImguiEditor();
55
virtual
AssetRegistry
& GetAssetRegistry();
56
virtual
CommandList
& GetCommandList();
57
virtual
GitManager
& GetGitManager();
58
virtual
Selection
& GetSelection();
59
virtual
TaskSystem
& GetTaskSystem();
60
virtual
AssetTemplateRegistry
& GetAssetTemplateRegistry();
61
virtual
Grindstone::Editor::ThumbnailManager
& GetThumbnailManager();
62
ScriptBuilder::CSharpBuildManager
& GetCSharpBuildManager();
63
static
FileManager
& GetFileManager();
64
static
EngineCore
& GetEngineCore();
65
bool
Initialize(std::filesystem::path projectPath);
66
void
InitializeQuitCommands();
67
~Manager();
68
void
Run();
69
// Begin to set PlayMode at end of frame.
70
void
SetPlayMode(PlayMode newPlayMode);
71
PlayMode GetPlayMode()
const
;
72
const
std::filesystem::path& GetProjectPath()
const
;
73
const
std::filesystem::path& GetAssetsPath()
const
;
74
const
std::filesystem::path& GetCompiledAssetsPath()
const
;
75
const
std::filesystem::path& GetEngineBinariesPath()
const
;
76
bool
OnKeyPress(
Grindstone::Events::BaseEvent
* ev);
77
bool
OnTryQuit(
Grindstone::Events::BaseEvent
* ev);
78
bool
OnForceQuit(
Grindstone::Events::BaseEvent
* ev);
79
ManipulationMode manipulationMode = ManipulationMode::Translate;
80
bool
isManipulatingInWorldSpace =
false
;
81
private
:
82
bool
LoadEngine();
83
bool
SetupImguiEditor();
84
85
// Actually change the PlayMode, to be used only by SetPlayMode.
86
void
TransferPlayMode(PlayMode newPlayMode);
87
private
:
88
std::filesystem::path projectPath;
89
std::filesystem::path assetsPath;
90
std::filesystem::path compiledAssetsPath;
91
std::filesystem::path engineBinariesPath;
92
bool
shouldClose =
false
;
93
EngineCore
* engineCore =
nullptr
;
94
Grindstone::Assets::AssetLoader
* assetLoader =
nullptr
;
95
ImguiEditor::ImguiEditor
* imguiEditor =
nullptr
;
96
ScriptBuilder::CSharpBuildManager
csharpBuildManager;
97
CommandList
commandList;
98
// Current PlayMode - should we update objects? And how?
99
PlayMode playMode = PlayMode::Editor;
100
// Play Mode that will be set at end of frame
101
PlayMode newPlayMode = PlayMode::Editor;
102
Selection
selection;
103
FileManager
fileManager;
104
TaskSystem
taskSystem;
105
AssetRegistry
assetRegistry;
106
GitManager
gitManager;
107
AssetTemplateRegistry
assetTemplateRegistry;
108
Grindstone::Utilities::Modules::Handle engineCoreLibraryHandle;
109
Grindstone::Importers::ImporterManager
importerManager;
110
Grindstone::WorldContextSet
* runtimeWorldContext =
nullptr
;
111
Grindstone::WorldContextSet
* editorWorldContext =
nullptr
;
112
Grindstone::Editor::ThumbnailManager
thumbnailManager;
113
};
114
}
Grindstone::Assets::AssetLoader
Definition
AssetLoader.hpp:32
Grindstone::Editor::AssetRegistry
Definition
AssetRegistry.hpp:15
Grindstone::Editor::AssetTemplateRegistry
Definition
AssetTemplateRegistry.hpp:10
Grindstone::Editor::CommandList
Definition
CommandList.hpp:20
Grindstone::Editor::FileManager
Definition
FileManager.hpp:8
Grindstone::Editor::GitManager
Definition
GitManager.hpp:15
Grindstone::Editor::IEditor
Definition
IEditor.hpp:7
Grindstone::Editor::ImguiEditor::ImguiEditor
Definition
ImguiEditor.hpp:52
Grindstone::Editor::Manager
Definition
EditorManager.hpp:48
Grindstone::Editor::ScriptBuilder::CSharpBuildManager
Definition
CSharpBuildManager.hpp:9
Grindstone::Editor::Selection
Definition
Selection.hpp:10
Grindstone::Editor::TaskSystem
Definition
TaskSystem.hpp:30
Grindstone::Editor::ThumbnailManager
Definition
ThumbnailManager.hpp:18
Grindstone::EngineCore
Definition
EngineCore.hpp:59
Grindstone::Importers::ImporterManager
Definition
ImporterManager.hpp:13
Grindstone::WorldContextSet
Definition
WorldContextSet.hpp:11
Grindstone::Events::BaseEvent
Definition
BaseEvent.hpp:7
sources
code
Editor
EditorManager.hpp
Generated by
1.17.0