SolarSim
Loading...
Searching...
No Matches
engine.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <memory>
4#include <optional>
5#include <engine/window.hpp>
6#include <engine/renderer.hpp>
9#include "scene/entity.hpp"
10
11namespace solarsim {
12 struct Registry;
13
17 class Engine {
18 public:
19 Engine(const Engine&) = delete;
20 Engine& operator=(const Engine&) = delete;
21
26 static Engine& get() {
27 static Engine instance;
28 return instance;
29 }
30
36 void run();
37
38 // System accessors
39
41 const Window& window() const { return m_window; }
43 Window& window() { return m_window; }
45 const Renderer& renderer() const { return m_renderer; }
48
50 const InputSystem& inputManager() const { return m_inputSystem; }
54 const PhysicsSystem& physicsSystem() const { return m_physicsSystem; }
57
65 static std::optional<Entity> getPrimaryCamera(Registry& registry);
66 private:
67 Engine();
68 ~Engine();
69
73 void init();
74
79
84 };
85}
static std::optional< Entity > getPrimaryCamera(Registry &registry)
Find the primary camera entity in the registry.
Definition engine.cpp:156
Renderer m_renderer
Definition engine.hpp:78
InputSystem & inputManager()
Definition engine.hpp:52
void run()
Start the main game loop.
Definition engine.cpp:129
void init()
Initialize all engine subsystems.
Definition engine.cpp:40
~Engine()
Definition engine.cpp:33
Window m_window
Definition engine.hpp:76
PhysicsSystem & physicsSystem()
Definition engine.hpp:56
static Engine & get()
Get the singleton engine instance.
Definition engine.hpp:26
Engine & operator=(const Engine &)=delete
const PhysicsSystem & physicsSystem() const
Definition engine.hpp:54
const InputSystem & inputManager() const
Definition engine.hpp:50
const Window & window() const
Definition engine.hpp:41
Renderer & renderer()
Definition engine.hpp:47
const Renderer & renderer() const
Definition engine.hpp:45
PhysicsSystem m_physicsSystem
Definition engine.hpp:83
Window & window()
Definition engine.hpp:43
Engine()
Definition engine.cpp:24
InputSystem m_inputSystem
Definition engine.hpp:81
Engine(const Engine &)=delete
Handles user input processing and mouse/keyboard state management.
Definition input_system.hpp:9
Handles physics simulation including gravity and N-body dynamics.
Definition physics_system.hpp:10
Manages entities and their components in the ECS.
Definition registry.hpp:16
Handles all rendering operations and graphics state.
Definition renderer.hpp:17
Manages window creation, events, and GLFW context.
Definition window.hpp:13
Definition engine.cpp:23