105 lines
3.3 KiB
C++
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 */
|