diff options
Diffstat (limited to 'src/crepe/system/RenderSystem.h')
| -rw-r--r-- | src/crepe/system/RenderSystem.h | 34 | 
1 files changed, 24 insertions, 10 deletions
| diff --git a/src/crepe/system/RenderSystem.h b/src/crepe/system/RenderSystem.h index 8841f72..b9033fb 100644 --- a/src/crepe/system/RenderSystem.h +++ b/src/crepe/system/RenderSystem.h @@ -1,21 +1,24 @@  #pragma once -#include "api/Camera.h" -#include "api/Sprite.h" -#include "api/Transform.h" +#include <functional> +#include <vector> + +#include "facade/SDLContext.h"  #include "System.h"  #include <cmath>  namespace crepe { +class Camera; +class Sprite; +  /**   * \class RenderSystem   * \brief Manages rendering operations for all game objects.   * - * RenderSystem is responsible for rendering sprites, clearing and presenting the screen, and - * managing the active camera. It functions as a singleton, providing centralized rendering - * services for the application. + * RenderSystem is responsible for rendering, clearing and presenting the screen, and + * managing the active camera.    */  class RenderSystem : public System {  public: @@ -28,10 +31,10 @@ public:  private:  	//! Clears the screen in preparation for rendering. -	void clear_screen() const; +	void clear_screen();  	//! Presents the rendered frame to the display. -	void present_screen() const; +	void present_screen();  	//! Updates the active camera used for rendering.  	void update_camera(); @@ -54,7 +57,16 @@ private:  	 * \param sprite  the sprite component that holds all the data  	 * \param tm the Transform component that holds the position,rotation and scale   	 */ -	void render_normal(const Sprite & sprite, const Transform & tm) const; +	void render_normal(const Sprite & sprite, const Transform & tm); + +	/** +	 * \brief sort a vector sprite objects with +	 * +	 * \param objs the vector that will do a sorting algorithm on  +	 * \return returns a sorted reference vector +	 */ +	std::vector<std::reference_wrapper<Sprite>> +	sort(std::vector<std::reference_wrapper<Sprite>> & objs);  	/**  	 * \todo Include color handling for sprites. @@ -67,8 +79,10 @@ private:  private:  	//! Pointer to the current active camera for rendering -	Camera * curr_cam = nullptr; +	Camera * curr_cam_ref = nullptr;  	// TODO: needs a better solution + +	SDLContext & context = SDLContext::get_instance();  };  } // namespace crepe |