TerraForge3D  2.3.1
3D Terrain And Landscape Generator
Module.h
1#pragma once
2#include <string>
3#include <unordered_map>
4#include <iostream>
5
6
8
10
15{
16 std::string name;
17 std::string authorName;
18 std::string versionString;
19 std::string briefDescription;
20 std::string website;
21 std::string contact;
22 std::string description;
25};
26
28
39class Module
40{
41public:
43
46 Module(std::string uid, ApplicationState *appState);
47
49
52 ~Module();
53
55
58 void Update();
59
61
64 void RenderImGui(void *imguiContext);
65
66
68
71 virtual void OnInstall();
72
74
77 virtual void OnLoad() = 0;
78
80
83 virtual void OnUpdate() = 0;
84
86
91 virtual void OnImGuiRender() = 0;
92
94
97 virtual void OnUnload() = 0;
98
100
103 virtual void OnUninstall();
104
105public:
106 std::string uid;
111};
112
113#ifdef TERR3D_WIN32
114#define TERR3D_MODULE_API __declspec(dllexport)
115#else
116#define TERR3D_MODULE_API
117#endif
118
119#define MAKE_MODULE_ENTRYPOINT(module) \
120 extern "C" { \
121 Module* TERR3D_MODULE_API GetModule(char* uid, ApplicationState* appState) \
122 { \
123 std::string moduleUID = std::string(uid); \
124 return new module(moduleUID, appState); \
125 } \
126 }
virtual void OnInstall()
OnInstall.
Definition: Module.cpp:29
void Update()
Module Update Function.
Definition: Module.cpp:18
void RenderImGui(void *imguiContext)
Module ImGui Render Function.
Definition: Module.cpp:23
void * nativeHandle
Definition: Module.h:109
Module(std::string uid, ApplicationState *appState)
Module Constructor.
Definition: Module.cpp:7
virtual void OnLoad()=0
OnLoad.
virtual void OnUpdate()=0
OnUpdate.
bool isEnabled
Definition: Module.h:110
ApplicationState * appState
Definition: Module.h:108
~Module()
Module Destructor.
Definition: Module.cpp:13
virtual void OnUninstall()
OnUninstall.
Definition: Module.cpp:33
std::string uid
Definition: Module.h:106
virtual void OnUnload()=0
OnUnload.
virtual void OnImGuiRender()=0
OnImGuiRender.
ModuleInfo info
Definition: Module.h:107
Module Info.
Definition: Module.h:40
Module Info.
Definition: Module.h:15
std::string contact
Definition: Module.h:21
std::string versionString
Definition: Module.h:18
int versionMin
Definition: Module.h:23
std::string briefDescription
Definition: Module.h:19
std::string website
Definition: Module.h:20
std::string description
Definition: Module.h:22
std::string name
Definition: Module.h:16
std::string authorName
Definition: Module.h:17
int versionMax
Definition: Module.h:24