#ifndef _ENGINE_H #define _ENGINE_H #include "shader.h" static const std::string COMBINE_BUFFER = "_rt_FullFrameBuffer"; static const std::string MIPMAPPED_BUFFER = "_rt_MipMappedFrameBuffer"; namespace Mauri { struct View { f32 width = 0.f; f32 height = 0.f; s32 ortho_width; s32 ortho_height; vec2 texel_size; vec2 texel_half_size; f32 scale; vec2 camera_pos; vec2 cursor_pos; f32 adjusted_width; f32 adjusted_height; auto center(f32 buffer_width, f32 buffer_height) -> void; auto center_scale_viewport() -> void; auto center_viewport(f32 buffer_width, f32 buffer_height) -> void; auto default_viewport(f32 buffer_width, f32 buffer_height) -> void; }; class Scene; class Engine { public: Engine(Scene *scene, f32 rate, bool audio); ~Engine(); Scene *scene; f32 rate; f32 time; bool audio_enabled; View view; mat4x4 default_mat; mat4x4 default_mat_inverse; RenderObject *default_object; RenderObject *flipped_object; RenderObject *fullscreen_object; Shader *shader; RenderShader *render_shader; Framebuffer *combine_buffer; std::vector framebuffers; auto create_framebuffer(const std::string &name, f32 width, f32 height, f32 scale) -> void; auto get_framebuffer(const std::string &name) -> Framebuffer *; auto get_framebuffer_texture(const std::string &name) -> Texture *; auto update() -> void; auto draw() -> void; auto run() -> void; }; } // namespace Mauri #endif // _ENGINE_H