Files
simian/include/Application.h
2026-03-08 12:14:50 +13:00

54 lines
1.4 KiB
C++

#pragma once
#include "scripting/ScriptEngine.h"
#include "HotReload.h"
#include "gui/GuiManager.h"
#include "raylib.h"
#include "ShaderManager.h"
#include "ModelManager.h"
#include "MaterialManager.h"
#include "InputManager.h"
#include <entt.hpp>
class Application {
public:
Application();
~Application();
bool Initialize(int argc, char* argv[]);
void Run();
void Shutdown();
void RequestShutdown() { queueShutdown = true; }
bool IsEditorEnabled() const { return enableEditor; }
bool HasScriptCompilationError() const { return scriptCompilationError; }
private:
ScriptEngine scriptEngine;
HotReload* hotReload;
bool scriptCompilationError;
FILE* logFile;
GuiManager guiManager;
bool enableEditor;
bool queueShutdown = false;
RenderTexture2D renderTexture; // renderTexture for Raylib rendering
// ECS
entt::registry registry;
// Resource managers
ShaderManager shaderManager;
ModelManager modelManager;
MaterialManager materialManager;
InputManager inputManager;
static const int WINDOW_WIDTH = 1280;
static const int WINDOW_HEIGHT = 720;
static const int TARGET_FPS = 60;
static const char* WINDOW_TITLE;
static const char* SCRIPT_FILE;
void Update(float deltaTime);
void UpdateSystems(float deltaTime);
void RenderScene();
void Draw();
};