legatt 0f26b7423d Minor TODOs completed
- Rename states -> regions
- Threads unregistering from Logger
- Remove unnecessary references for primitive arguments in functions
- Marking classes as final for optimization
- Remove typo in Materials implementation file name
- Move some modules to partitions
2026-02-11 03:28:33 +03:00

58 lines
1.3 KiB
C++

module;
#include <GLFW/glfw3.h>
export module Engine;
export import Render;
export import Input;
export import AssetManager;
export import Client;
import utils;
export
{
class Engine
{
public:
inline static GLFWwindow *window;
inline static ee_engine::IInput *input;
inline static AssetManager *assetManager;
inline static ee_engine::IRenderer *renderer;
inline static Client *client;
static void Shutdown()
{
if (input != nullptr)
Deallocate(input);
if (renderer != nullptr)
{
renderer->Shutdown();
Deallocate(renderer);
}
renderer = nullptr;
WaitThreadShutdown(assetManager);
WaitThreadShutdown(client);
glfwDestroyWindow(window);
glfwTerminate();
}
template <ee_utils::IThreadedWorker T>
static void WaitThreadShutdown(T* &thread)
{
if (thread != nullptr)
{
thread->Shutdown();
while(thread->isRunning.load()) {}
Deallocate(thread);
}
thread = nullptr;
}
private:
Engine();
};
}