diff options
Diffstat (limited to 'src/crepe/api')
| -rw-r--r-- | src/crepe/api/Config.h | 2 | ||||
| -rw-r--r-- | src/crepe/api/ParticleEmitter.cpp | 5 | ||||
| -rw-r--r-- | src/crepe/api/ParticleEmitter.h | 31 | ||||
| -rw-r--r-- | src/crepe/api/Rigidbody.h | 2 | 
4 files changed, 23 insertions, 17 deletions
| diff --git a/src/crepe/api/Config.h b/src/crepe/api/Config.h index 6472270..cd27343 100644 --- a/src/crepe/api/Config.h +++ b/src/crepe/api/Config.h @@ -53,7 +53,7 @@ struct Config final {  		 *  		 * Gravity value of game.  		 */ -		double gravity = 1; +		float gravity = 1;  	} physics;  	//! default window settings diff --git a/src/crepe/api/ParticleEmitter.cpp b/src/crepe/api/ParticleEmitter.cpp index 90b77a0..1cfdceb 100644 --- a/src/crepe/api/ParticleEmitter.cpp +++ b/src/crepe/api/ParticleEmitter.cpp @@ -1,10 +1,11 @@  #include "ParticleEmitter.h" +#include "api/Sprite.h"  using namespace crepe; -ParticleEmitter::ParticleEmitter(game_object_id_t game_object_id, const Data & data) +ParticleEmitter::ParticleEmitter(game_object_id_t game_object_id, const Sprite & sprite, const Data & data)  	: Component(game_object_id), -	  data(data) { +	  sprite(sprite), data(data) {  	for (size_t i = 0; i < this->data.max_particles; i++) {  		this->data.particles.emplace_back();  	} diff --git a/src/crepe/api/ParticleEmitter.h b/src/crepe/api/ParticleEmitter.h index b83fd61..48c7625 100644 --- a/src/crepe/api/ParticleEmitter.h +++ b/src/crepe/api/ParticleEmitter.h @@ -1,5 +1,6 @@  #pragma once +#include <cmath>  #include <vector>  #include "Component.h" @@ -26,15 +27,18 @@ public:  	 */  	struct Boundary {  		//! boundary width (midpoint is emitter location) -		double width = 0.0; +		float width = INFINITY;  		//! boundary height (midpoint is emitter location) -		double height = 0.0; +		float height = INFINITY;  		//! boundary offset from particle emitter location  		vec2 offset;  		//! reset on exit or stop velocity and set max postion  		bool reset_on_exit = false;  	}; +	//! sprite reference of displayed sprite +	const Sprite & sprite; +  	/**  	 * \brief Holds parameters that control particle emission.  	 * @@ -45,29 +49,30 @@ public:  		//! position of the emitter  		vec2 position;  		//! maximum number of particles -		const unsigned int max_particles = 0; +		const unsigned int max_particles = 256;  		//! rate of particle emission per update (Lowest value = 0.001 any lower is ignored) -		double emission_rate = 0; +		float emission_rate = 1; +		//! Saves time left over from last update event. +		float spawn_accumulator  = 0;  		//! min speed of the particles -		double min_speed = 0; +		float min_speed = 1;  		//! min speed of the particles -		double max_speed = 0; +		float max_speed = 2;  		//! min angle of particle emission -		double min_angle = 0; +		float min_angle = 0;  		//! max angle of particle emission -		double max_angle = 0; +		float max_angle = 0;  		//! begin Lifespan of particle (only visual) -		double begin_lifespan = 0.0; +		float begin_lifespan = 0.0;  		//! end Lifespan of particle -		double end_lifespan = 0.0; +		float end_lifespan = 10.0;  		//! force over time (physics)  		vec2 force_over_time;  		//! particle boundary  		Boundary boundary;  		//! collection of particles  		std::vector<Particle> particles; -		//! sprite reference -		const Sprite & sprite; +		  	};  public: @@ -75,7 +80,7 @@ public:  	 * \param game_object_id  Identifier for the game object using this emitter.  	 * \param data            Configuration data defining particle properties.  	 */ -	ParticleEmitter(game_object_id_t game_object_id, const Data & data); +	ParticleEmitter(game_object_id_t game_object_id, const Sprite & sprite,const Data & data);  public:  	//! Configuration data for particle emission settings. diff --git a/src/crepe/api/Rigidbody.h b/src/crepe/api/Rigidbody.h index 40c6bf1..f641fff 100644 --- a/src/crepe/api/Rigidbody.h +++ b/src/crepe/api/Rigidbody.h @@ -79,7 +79,7 @@ public:  		//! Linear velocity of the object (speed and direction).  		vec2 linear_velocity;  		//! Maximum linear velocity of the object. This limits the object's speed. -		vec2 max_linear_velocity = {INFINITY, INFINITY}; +		float max_linear_velocity = INFINITY;  		//! Linear velocity coefficient. This scales the object's velocity for adjustment or damping.  		vec2 linear_velocity_coefficient = {1, 1};  		//! \} |