69 Engine(
const EngineConfig &config,
const std::function<std::shared_ptr<IAudio>()> &audioFactory,
70 const std::function<std::shared_ptr<INetwork>()> &networkFactory,
71 const std::function<std::shared_ptr<IRenderer>()> &rendererFactory,
72 const std::function<std::shared_ptr<IShaderIR>()> &shaderIRFactory,
73 const std::vector<std::function<std::shared_ptr<IShaderFrontend>()>> &shaderFrontendFactories,
74 const std::function<std::shared_ptr<IWindow>()> &windowFactory);
97 const std::vector<float> &vertices)
const;
104 void update(std::array<float, 10> &fpsBuffer,
int &fpsIndex);
122 std::unique_ptr<utl::Clock>
m_clock =
nullptr;
135 const std::string &iconPath)
const;
141 void initShaders(
const std::vector<ShaderSourceDesc> &shaderSources)
const;
This file contains the camera class declaration.
This file contains the Clock class.
This file contains the audio abstract class.
This file contains the network interface.
This file contains the Renderer interface.
This file contains the ShaderManager class declaration.
void update(std::array< float, 10 > &fpsBuffer, int &fpsIndex)
const std::unique_ptr< Camera > & getCamera() const
std::unique_ptr< Camera > m_camera
const std::unique_ptr< utl::Clock > & getClock()
const std::unique_ptr< ShaderManager > & getShaderManager() const
std::shared_ptr< IRenderer > m_rendererPlugin
const std::shared_ptr< INetwork > & getNetwork() const
std::shared_ptr< IAudio > m_audioPlugin
void initializeRenderResources(const std::vector< ShaderSourceDesc > &shaderSources, const std::vector< float > &vertices) const
Initialize render resources.
Engine & operator=(Engine &&)=delete
std::unique_ptr< utl::Clock > m_clock
void initShaders(const std::vector< ShaderSourceDesc > &shaderSources) const
Initialize shaders.
const std::shared_ptr< IAudio > & getAudio() const
const std::shared_ptr< IWindow > & getWindow() const
void initWindow(const std::string &windowName, const WindowSize &windowSize, const std::string &iconPath) const
Initialize the window.
std::unique_ptr< ShaderManager > m_shaderManager
const std::shared_ptr< IRenderer > & getRenderer() const
void stop()
Stop the engine.
std::shared_ptr< IWindow > m_windowPlugin
std::shared_ptr< INetwork > m_networkPlugin
Engine(const Engine &)=delete
Engine & operator=(const Engine &)=delete
Engine(const EngineConfig &config, const std::function< std::shared_ptr< IAudio >()> &audioFactory, const std::function< std::shared_ptr< INetwork >()> &networkFactory, const std::function< std::shared_ptr< IRenderer >()> &rendererFactory, const std::function< std::shared_ptr< IShaderIR >()> &shaderIRFactory, const std::vector< std::function< std::shared_ptr< IShaderFrontend >()> > &shaderFrontendFactories, const std::function< std::shared_ptr< IWindow >()> &windowFactory)
constexpr auto NEAR_PLANE
constexpr auto MOVE_SPEED
constexpr auto LOOK_SPEED
constexpr auto CLEAR_COLOR_B
constexpr auto CLEAR_COLOR_A
constexpr auto CLEAR_COLOR_R
constexpr auto FRAME_RATE_LIMIT
constexpr auto CLEAR_COLOR_G
constexpr auto FULLSCREEN
constexpr uint16_t HEIGHT
Struct for engine configuration.
Color renderer_clear_color
glm::vec3 camera_rotation
uint16_t renderer_frame_rate_limit
glm::vec3 camera_position
glm::vec3 camera_direction
float audio_master_volume
std::string window_icon_path