Files
HydraV3/HydraEngine/source/engine/HydraEngine.h
T
2026-07-25 16:40:34 +01:00

105 lines
3.3 KiB
C++

#ifndef HYDRAENGINE
#define HYDRAENGINE
#include "HydraObject.h"
#include "../windowmanager/HydraRenderSettings.h"
#include <GLMIncludes.h>
class HydraTaskScheduler;
class HydraGameProxy;
class HydraWindowManager;
class HydraInputManager;
class HydraRenderer;
class HydraECS;
class HydraActorManager;
class HydraCamera;
class HydraBufferManager;
class HydraVertexBufferManager;
class HydraMeshManager;
class HydraMeshSystem;
class HydraRenderSystem;
class HydraTransformSystem;
class HydraMaterialSystem;
class HydraPipeline;
class HydraTextureBufferManager;
class HydraMaterialBufferManager;
class HydraLightBufferManager;
class HydraLightSystem;
class HydraShadowSourceSystem;
class CLASS_DEFINE HydraEngine : public HydraObject
{
public:
static HydraEngine *GetInstance()
{
static HydraEngine instance;
return &instance;
}
HydraTaskScheduler* const TaskScheduler();
void InitialiseGame(HydraGameProxy* game);
void Start();
bool KeyPressed(HYDRA_KEY_CODES key);
glm::vec2 MouseChange();
void Exit();
HydraWindowManager* const WindowManager();
HydraRenderSettings RenderSettings();
HydraInputManager* const InputManager();
HydraRenderer* const Renderer();
HydraECS* const ECS();
HydraActorManager* const ActorManager();
HydraCamera* const Camera();
HydraBufferManager* const BufferManager();
HydraVertexBufferManager* const VertexBufferManager();
HydraMeshManager* const MeshManager();
HydraPipeline* const Pipeline();
HydraTextureBufferManager* const TextureBufferManager();
HydraMaterialBufferManager* const MaterialBufferManager();
HydraLightBufferManager* const LightBufferManager();
void PossessPlayer(HydraID actor_id);
HydraID GetPossessedPlayer();
float GetDeltaT();
uint32_t GetLightCount();
private:
void _CreateManagers();
void _InitialiseManagers();
void _InitialiseSystems();
void _UpdateSystems();
void _GameLoop();
void _Shutdown();
class HydraGameProxy* m_game = nullptr;
HydraTaskScheduler* m_task_scheduler = nullptr;
HydraWindowManager* m_window_manager = nullptr;
HydraInputManager* m_input_manager = nullptr;
HydraRenderer* m_renderer = nullptr;
HydraECS* m_ecs = nullptr;
HydraActorManager* m_actor_manager = nullptr;
HydraCamera* m_camera = nullptr;
HydraBufferManager* m_buffer_manager = nullptr;
HydraVertexBufferManager* m_vertex_buffer_manager = nullptr;
HydraMeshManager* m_mesh_manager = nullptr;
HydraRenderSettings m_render_settings;
HydraPipeline* m_pipeline = nullptr;
HydraPipeline* m_deferred_pipeline = nullptr;
HydraTextureBufferManager* m_texture_buffer_manager = nullptr;
HydraMaterialBufferManager* m_material_buffer_manager = nullptr;
HydraLightBufferManager* m_light_buffer_manager = nullptr;
std::shared_ptr<HydraMeshSystem> m_mesh_system;
std::shared_ptr<HydraTransformSystem> m_transform_system;
std::shared_ptr<HydraRenderSystem> m_render_system;
std::shared_ptr<HydraMaterialSystem> m_material_system;
std::shared_ptr<HydraLightSystem> m_light_system;
std::shared_ptr<HydraShadowSourceSystem> m_shadow_system;
bool m_running = true;
float m_delta_t = 0.0f;
float m_fixed_delta_t = 0.0f;
HydraID m_possessed_actor_id = INVALID_HYDRA_ID;
};
#endif /* HYDRAENGINE */