Grindstone Game Engine
v0.2.0
An open source game engine and toolkit.
Toggle main menu visibility
Loading...
Searching...
No Matches
CSharpManager.hpp
1
#pragma once
2
3
#include <entt/entt.hpp>
4
5
#include <EngineCore/ECS/ComponentFunctions.hpp>
6
#include <Common/Buffer.hpp>
7
8
namespace
Grindstone
{
9
class
EngineCore
;
10
using
AssemblyHash = int;
11
12
namespace
ECS
{
13
class
Entity
;
14
}
15
16
namespace
Scripting::CSharp
{
17
struct
ScriptComponent
;
18
struct
ScriptClass
;
19
20
enum class
InspectorFieldType {
21
Unknown,
22
Entity,
23
Component,
24
Float, Float2, Float3, Float4,
25
Int, Bool, String,
26
Quaternion,
27
Color
28
};
29
30
struct
FieldMetaData
{
31
using
SetterCallback = void(*)(
void
* componentPtr,
void
* valuePtr);
32
std::string name;
33
std::string displayName;
34
InspectorFieldType fieldType;
35
uint32_t valueArenaOffset;
36
uint32_t valueArenaSize;
37
SetterCallback setterCallback =
nullptr
;
38
};
39
40
class
CSharpManager
{
41
public
:
42
struct
AssemblyData
{
43
AssemblyHash assemblyHash;
44
};
45
46
static
CSharpManager
& GetInstance();
47
void
Cleanup();
48
virtual
void
Initialize();
49
virtual
bool
LoadAssembly(
const
char
* path,
AssemblyData
& outAssemblyData);
50
virtual
bool
LoadAssemblyIntoMap(
const
std::string& assemblyIdentifier);
51
virtual
void
SetupComponent(
Grindstone::WorldContextSet
& cxtSet, entt::entity entity,
ScriptComponent
& component);
52
virtual
void
DestroyComponent(
Grindstone::WorldContextSet
& cxtSet, entt::entity entity,
ScriptComponent
& component);
53
void
RegisterComponents();
54
void
RegisterComponent(
const
Grindstone::String& csharpClass,
ECS::ComponentFunctions
& fns);
55
void
CallCreateComponent(
SceneManagement::Scene
* scene, entt::entity entityHandle);
56
void
CallHasComponent(
SceneManagement::Scene
* scene, entt::entity entityHandle);
57
void
CallRemoveComponent(
SceneManagement::Scene
* scene, entt::entity entityHandle);
58
void
QueueReload();
59
void
PerformReload();
60
void
Update(entt::registry& registry);
61
void
EditorUpdate(entt::registry& registry);
62
virtual
std::pair<Grindstone::Buffer, std::vector<FieldMetaData>> GetFieldMetaData(
ScriptComponent
& component);
63
private
:
64
void
LoadAssemblyClasses();
65
void
CallFunctionInComponent(
ScriptComponent
& scriptComponent,
size_t
fnOffset);
66
void
CallConstructorInComponent(
ScriptComponent
& scriptComponent);
67
void
CallAttachComponentInComponent(
ScriptComponent
& scriptComponent);
68
void
CallStartInComponent(
ScriptComponent
& scriptComponent);
69
void
CallUpdateInComponent(
ScriptComponent
& scriptComponent);
70
void
CallEditorUpdateInComponent(
ScriptComponent
& scriptComponent);
71
void
CallDeleteInComponent(
ScriptComponent
& scriptComponent);
72
ScriptClass
* SetupClass(
const
char
* assemblyName,
const
char
* namespaceName,
const
char
* className);
73
74
std::map<std::string, AssemblyData> assemblies;
75
std::map<std::string, ScriptClass*> classMetaData;
76
AssemblyData
grindstoneCoreDll;
77
bool
isReloadQueued =
false
;
78
79
// std::map<MonoType*, ECS::CreateComponentFn> createComponentFuncs;
80
// std::map<MonoType*, ECS::TryGetComponentFn> tryGetComponentFuncs;
81
// std::map<MonoType*, ECS::HasComponentFn> hasComponentFuncs;
82
// std::map<MonoType*, ECS::RemoveComponentFn> removeComponentFuncs;
83
};
84
}
85
}
Grindstone::ECS::ComponentFunctions
Definition
ComponentFunctions.hpp:22
Grindstone::ECS::Entity
Definition
Entity.hpp:15
Grindstone::EngineCore
Definition
EngineCore.hpp:60
Grindstone::SceneManagement::Scene
Definition
Scene.hpp:21
Grindstone::Scripting::CSharp::CSharpManager
Definition
CSharpManager.hpp:40
Grindstone::WorldContextSet
Definition
WorldContextSet.hpp:11
Grindstone::ECS
Definition
ComponentInspector.hpp:11
Grindstone::Scripting::CSharp
Definition
ScriptComponent.hpp:7
Grindstone
Definition
ArchiveContentFile.hpp:8
Grindstone::Scripting::CSharp::CSharpManager::AssemblyData
Definition
CSharpManager.hpp:42
Grindstone::Scripting::CSharp::FieldMetaData
Definition
CSharpManager.hpp:30
Grindstone::Scripting::CSharp::ScriptClass
Definition
ScriptClass.hpp:17
Grindstone::Scripting::CSharp::ScriptComponent
Definition
ScriptComponent.hpp:8
plugins
Grindstone.Script.CSharp
include
CSharpManager.hpp
Generated by
1.17.0