Grindstone Game Engine
v0.2.0
An open source game engine and toolkit.
Toggle main menu visibility
Loading...
Searching...
No Matches
Interface.hpp
1
#pragma once
2
3
#include "../pch.hpp"
4
5
#include <cstdint>
6
#include <functional>
7
8
#include <Common/Display/Display.hpp>
9
#include <Common/Graphics/Core.hpp>
10
#include <Common/Logging.hpp>
11
#include <Common/ResourcePipeline/AssetType.hpp>
12
#include <Common/Window/Window.hpp>
13
#include <EngineCore/AssetRenderer/BaseAssetRenderer.hpp>
14
#include <EngineCore/Assets/AssetImporter.hpp>
15
#include <EngineCore/ECS/ComponentFunctions.hpp>
16
#include <EngineCore/ECS/ComponentRegistrar.hpp>
17
#include <EngineCore/ECS/SystemFactory.hpp>
18
#include <EngineCore/ECS/SystemRegistrar.hpp>
19
#include <EngineCore/Logger.hpp>
20
#include <EngineCore/WorldContext/WorldContext.hpp>
21
22
namespace
Grindstone {
23
namespace
Memory::AllocatorCore {
24
struct
AllocatorState
;
25
}
26
27
namespace
GraphicsAPI {
28
class
Core
;
29
}
30
31
namespace
ECS {
32
class
SystemRegistrar
;
33
}
34
35
class
CvarSystem
;
36
class
WindowManager
;
37
class
DisplayManager
;
38
class
BaseAssetRenderer
;
39
40
namespace
Plugins {
41
class
Manager;
42
43
class
IEditorInterface
{
44
public
:
45
virtual
~IEditorInterface
() {}
46
};
47
48
class
ENGINE_CORE_API
Interface
{
49
public
:
50
virtual
void
SetEditorInterface(
Grindstone::Plugins::IEditorInterface
* editorInterface);
51
virtual
Grindstone::Plugins::IEditorInterface
* GetEditorInterface()
const
;
52
53
virtual
EngineCore
* GetEngineCore();
54
virtual
GraphicsAPI::Core
* GetGraphicsCore();
55
virtual
void
RegisterGraphicsCore(
Grindstone::GraphicsAPI::Core
* core);
56
virtual
void
RegisterWindowManager(
Grindstone::WindowManager
*);
57
virtual
void
RegisterDisplayManager(
Grindstone::DisplayManager
*);
58
virtual
Window
* CreateDisplayWindow(
Window::CreateInfo
&);
59
virtual
Display
GetMainDisplay();
60
virtual
uint8_t CountDisplays();
61
virtual
void
EnumerateDisplays(
Display
* displays);
62
virtual
void
RegisterSystem(
const
char
* name, ECS::SystemFactory factory);
63
virtual
void
RegisterEditorSystem(
const
char
* name, ECS::SystemFactory factory);
64
virtual
void
UnregisterSystem(
const
char
* name);
65
virtual
void
UnregisterEditorSystem(
const
char
* name);
66
virtual
void
RegisterAssetRenderer(
BaseAssetRenderer
* assetRenderer);
67
virtual
void
UnregisterAssetRenderer(
BaseAssetRenderer
* assetRenderer);
68
virtual
void
RegisterAssetType(AssetType assetType,
const
char
* typeName,
AssetImporter
* assetImporter);
69
virtual
void
UnregisterAssetType(AssetType assetType);
70
virtual
void
SetReloadCsharpCallback(std::function<
void
()> callback);
71
virtual
Grindstone::HashedString::HashMap* GetHashedStringMap()
const
;
72
virtual
Grindstone::Logger::LoggerState
* GetLoggerState()
const
;
73
virtual
Grindstone::Memory::AllocatorCore::AllocatorState
* GetAllocatorState()
const
;
74
virtual
Grindstone::CvarSystem
* GetCvarSystem()
const
;
75
virtual
void
RegisterWorldContextFactory(
Grindstone::HashedString
contextName,
Grindstone::UniquePtr<Grindstone::WorldContext>
(*FactoryFn)());
76
virtual
void
UnregisterWorldContextFactory(
Grindstone::HashedString
contextName);
77
78
template
<
typename
ClassType>
79
void
RegisterWorldContextFactory(
Grindstone::HashedString
contextName) {
80
RegisterWorldContextFactory(contextName, Grindstone::WorldContext::Create<ClassType>);
81
}
82
83
template
<
typename
ClassType>
84
void
RegisterComponent(Grindstone::ECS::SetupComponentFn setupComponentFn =
nullptr
, Grindstone::ECS::DestroyComponentFn destroyComponentFn =
nullptr
) {
85
componentRegistrar->RegisterComponent<ClassType>(setupComponentFn, destroyComponentFn);
86
}
87
88
template
<
typename
T>
89
void
UnregisterComponent() {
90
componentRegistrar->UnregisterComponent<T>();
91
}
92
93
ECS::ComponentRegistrar
* componentRegistrar =
nullptr
;
94
ECS::SystemRegistrar
* systemRegistrar =
nullptr
;
95
private
:
96
Grindstone::Plugins::IEditorInterface
* editorInterface =
nullptr
;
97
Grindstone::Window
* (*windowFactoryFn)(
Grindstone::Window::CreateInfo
&) =
nullptr
;
98
Grindstone::Display
(*getMainDisplayFn)() =
nullptr
;
99
uint8_t (*countDisplaysFn)() =
nullptr
;
100
void (*enumerateDisplaysFn)(
Grindstone::Display
*) =
nullptr
;
101
};
102
}
103
}
Grindstone::AssetImporter
Definition
AssetImporter.hpp:11
Grindstone::BaseAssetRenderer
Definition
BaseAssetRenderer.hpp:23
Grindstone::CvarSystem
Definition
Cvars.hpp:42
Grindstone::DisplayManager
Definition
DisplayManager.hpp:8
Grindstone::ECS::ComponentRegistrar
Definition
ComponentRegistrar.hpp:18
Grindstone::ECS::SystemRegistrar
Definition
SystemRegistrar.hpp:12
Grindstone::EngineCore
Definition
EngineCore.hpp:59
Grindstone::GraphicsAPI::Core
Definition
Core.hpp:41
Grindstone::HashedString
Definition
HashedString.hpp:9
Grindstone::Plugins::IEditorInterface
Definition
Interface.hpp:43
Grindstone::Plugins::Interface
Definition
Interface.hpp:48
Grindstone::UniquePtr
Definition
UniquePtr.hpp:7
Grindstone::WindowManager
Definition
WindowManager.hpp:7
Grindstone::Window
Definition
Window.hpp:12
Grindstone::Display
Definition
Display.hpp:6
Grindstone::Logger::LoggerState
Definition
Logger.hpp:14
Grindstone::Memory::AllocatorCore::AllocatorState
Definition
MemoryAllocator.hpp:9
Grindstone::Window::CreateInfo
Definition
Window.hpp:20
sources
code
EngineCore
PluginSystem
Interface.hpp
Generated by
1.17.0