diff options
| author | heavydemon21 <nielsstunnebrink1@gmail.com> | 2024-11-20 15:16:06 +0100 | 
|---|---|---|
| committer | heavydemon21 <nielsstunnebrink1@gmail.com> | 2024-11-20 15:16:06 +0100 | 
| commit | a0f39be4510665614d25d23d88fe1d0f0b5cc740 (patch) | |
| tree | b5a82723490bab97c40e8774a176293fae670e6a /src/crepe | |
| parent | a01c2dc46daeffa0a5c92230d1513047a072c04d (diff) | |
rendering system bug
Diffstat (limited to 'src/crepe')
| -rw-r--r-- | src/crepe/system/RenderSystem.cpp | 29 | ||||
| -rw-r--r-- | src/crepe/system/RenderSystem.h | 12 | 
2 files changed, 20 insertions, 21 deletions
| diff --git a/src/crepe/system/RenderSystem.cpp b/src/crepe/system/RenderSystem.cpp index bc5422d..c599729 100644 --- a/src/crepe/system/RenderSystem.cpp +++ b/src/crepe/system/RenderSystem.cpp @@ -1,6 +1,8 @@  #include <algorithm>  #include <cassert>  #include <cmath> +#include <functional> +#include <iostream>  #include <stdexcept>  #include <vector> @@ -48,8 +50,6 @@ RenderSystem::sort(std::vector<std::reference_wrapper<Sprite>> & objs) {  	return sorted_objs;  } - -  void RenderSystem::update() {  	this->clear_screen();  	this->update_camera(); @@ -57,43 +57,42 @@ void RenderSystem::update() {  	this->present_screen();  } -bool RenderSystem::render_particle(const Sprite & sprite, const double & scale) const { +bool RenderSystem::render_particle(const Sprite & sprite, const double & scale) {  	ComponentManager & mgr = this->component_manager; -	auto emitters = mgr.get_components_by_id<ParticleEmitter>(sprite.game_object_id); +	vector<reference_wrapper<ParticleEmitter>> emitters +		= mgr.get_components_by_id<ParticleEmitter>(sprite.game_object_id);  	bool rendering_particles = false;  	for (const ParticleEmitter & em : emitters) { +		cout << &em.data.sprite << " " << &sprite << endl;  		if (!(&em.data.sprite == &sprite)) continue;  		rendering_particles = true;  		if (!em.active) continue; -  		for (const Particle & p : em.data.particles) {  			if (!p.active) continue; -			this->context.draw_particle(sprite, p.position, p.angle, scale, *this->curr_cam); +			this->context.draw_particle(sprite, p.position, p.angle, scale, +										*this->curr_cam_ref);  		}  	}  	return rendering_particles;  } -void RenderSystem::render_normal(const Sprite & sprite, const Transform & tm) const { - -	ComponentManager & mgr = this->component_manager; - -	this->context.draw(sprite, tm, *this->curr_cam); +void RenderSystem::render_normal(const Sprite & sprite, const Transform & tm) { +	this->context.draw(sprite, tm, *this->curr_cam_ref);  } -void RenderSystem::render() const { +void RenderSystem::render() {  	ComponentManager & mgr = this->component_manager;  	vector<reference_wrapper<Sprite>> sprites = mgr.get_components_by_type<Sprite>(); -	vector<reference_wrapper<Sprite>> sorted_sprites = this->sort(sprites); +	//vector<reference_wrapper<Sprite>> sorted_sprites = this->sort(sprites); -	for (const Sprite & sprite : sorted_sprites) { +	for (const Sprite & sprite : sprites) {  		if (!sprite.active) continue; -		const Transform & transform +		Transform & transform  			= mgr.get_components_by_id<Transform>(sprite.game_object_id).front().get();  		bool rendered_particles = this->render_particle(sprite, transform.scale); diff --git a/src/crepe/system/RenderSystem.h b/src/crepe/system/RenderSystem.h index b9033fb..0393f2f 100644 --- a/src/crepe/system/RenderSystem.h +++ b/src/crepe/system/RenderSystem.h @@ -31,16 +31,16 @@ public:  private:  	//! Clears the screen in preparation for rendering. -	void clear_screen(); +	void clear_screen() ;  	//! Presents the rendered frame to the display. -	void present_screen(); +	void present_screen() ;  	//! Updates the active camera used for rendering.  	void update_camera();  	//! Renders the whole screen -	void render() const; +	void render() ;  	/**  	 * \brief Renders all the particles on the screen from a given sprite. @@ -49,7 +49,7 @@ private:  	 * \param tm the Transform component for scale  	 * \return true if particles have been rendered  	 */ -	bool render_particle(const Sprite & sprite, const double & scale) const; +	bool render_particle(const Sprite & sprite, const double & scale) ;  	/**  	 * \brief renders a sprite with a Transform component on the screen  @@ -57,7 +57,7 @@ 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); +	void render_normal(const Sprite & sprite, const Transform & tm) ;  	/**  	 * \brief sort a vector sprite objects with @@ -66,7 +66,7 @@ private:  	 * \return returns a sorted reference vector  	 */  	std::vector<std::reference_wrapper<Sprite>> -	sort(std::vector<std::reference_wrapper<Sprite>> & objs); +	sort(std::vector<std::reference_wrapper<Sprite>> & objs) ;  	/**  	 * \todo Include color handling for sprites. |