34#include "audio/AudioManager.h"
36#include "graphics/GraphicsAPI.h"
41#include "graphics/Texture.h"
42#include "input/InputManager.h"
43#include "io/FileSystem.h"
44#include "physics/PhysicsManager.h"
45#include "render/RenderQueue.h"
48#include "scene/Scene.h"
86 bool Init(
int width,
int height);
180 std::unique_ptr<Application> m_application;
181 std::chrono::steady_clock::time_point m_lastTimePoint;
182 GLFWwindow *m_window =
nullptr;
185 std::unique_ptr<RendererBackend> m_rendererBackend;
194 std::unique_ptr<Scene> m_currentScene;
196 float m_timeScale = 1.0F;
197 bool m_paused =
false;
199 float m_fpsSmoothed = 0.0F;
200 float m_fpsRefreshTimer = 0.0F;
201 float m_fpsDisplayed = 0.0F;
In-game ImGui overlay: hierarchy, inspector, console, stats.
Pool-allocated CPU particles drawn as additive billboards.
Three.js-style pixel-art post-pass.
Per-frame renderer tuning knobs (PSX-style pixelation, fog, ambient).
Offscreen FBO with colour, view-normal and depth attachments.
Interface that every runnable game or lab must implement.
Global audio backend wrapper.
ImGui-based in-game editor overlay.
Singleton façade that drives the full engine lifecycle.
GraphicsAPI & GetGraphicsAPI()
Returns the low-level OpenGL wrapper used for all draw calls.
SpriteRenderer & GetSpriteRenderer()
Returns the 2D sprite/font renderer. Queue draw calls during Application::Update().
RenderQueue & GetRenderQueue()
Returns the per-frame command queue that batches and issues draw calls.
PostProcess & GetPostProcess()
Outline / highlight post-pass; tunables exposed via the Editor render panel.
Scene * GetScene()
Returns the currently active scene, or nullptr if none is set.
InputManager & GetInputManager()
Returns the InputManager that tracks keyboard and mouse state.
Editor & GetEditor()
ImGui-based editor overlay.
FileSystem & GetFileSystem()
Returns the file system helper for asset-relative path resolution.
bool IsPaused() const
When true, deltaTime is forced to 0.0 (Application::Update still runs).
void SetScene(Scene *scene)
Replace the active scene (takes ownership).
bool Init(int width, int height)
Initialise the window, OpenGL context, and subsystems.
void Run()
Enter the blocking main loop.
float GetTimeScale() const
Game-time multiplier applied to deltaTime each frame (1.0 = realtime).
Application * GetApplication()
Returns a raw pointer to the active application (owned by the engine).
AudioManager & GetAudioManager()
static Engine & GetInstance()
Returns the single Engine instance (created on first call).
RenderSettings & GetRenderSettings()
Mutable render settings edited by the Editor's Render panel.
void SetPaused(bool paused)
void SetApplication(Application *app)
Transfer ownership of the application to the engine.
void DrawLoadingScreen(const char *message, float progress=-1.0F)
Engine & operator=(Engine &&)=delete
TextureManager & GetTextureManager()
Returns the TextureManager that caches loaded textures by path.
ParticleSystem & GetParticleSystem()
Returns the global particle pool. Emitter components push particles via Spawn().
Engine(const Engine &)=delete
void SetTimeScale(float scale)
void UpdateLoadingProgress(float progress, const char *message)
Update the loading panel mid-load (single swap). Cheap to call per step.
PhysicsManager & GetPhysicsManager()
RenderTarget & GetSceneTarget()
Offscreen low-res render target (only active when RenderSettings::useInternalRes is true).
void Destroy()
Shut down the application and release all GL resources.
Engine & operator=(const Engine &)=delete
Resolves asset paths and loads files into memory.
OpenGL 3.3 Core Profile abstraction layer.
Owns the Bullet btDiscreteDynamicsWorld and all auxiliary collision structures (broadphase,...
Accumulates RenderCommands during Update and draws them in one pass.
Offscreen FBO with MRT colour + sampleable depth for low-resolution rendering.
Container for the entire game object graph.
Path-keyed cache that prevents the same image from being uploaded twice.