aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/crepe/Particle.h3
-rw-r--r--src/crepe/api/ParticleEmitter.cpp6
-rw-r--r--src/crepe/api/ParticleEmitter.h5
-rw-r--r--src/crepe/system/ParticleSystem.cpp10
-rw-r--r--src/crepe/system/ParticleSystem.h1
-rw-r--r--src/example/game.cpp31
-rw-r--r--src/example/rendering_particle.cpp1
-rw-r--r--src/test/ParticleTest.cpp48
8 files changed, 53 insertions, 52 deletions
diff --git a/src/crepe/Particle.h b/src/crepe/Particle.h
index 0170117..ee0cd66 100644
--- a/src/crepe/Particle.h
+++ b/src/crepe/Particle.h
@@ -41,7 +41,8 @@ public:
* \param velocity The initial velocity of the particle.
* \param angle The angle of the particle's trajectory or orientation.
*/
- void reset(unsigned int lifespan, const vec2 & position, const vec2 & velocity, float angle);
+ void reset(unsigned int lifespan, const vec2 & position, const vec2 & velocity,
+ float angle);
/**
* \brief Updates the particle's state.
*
diff --git a/src/crepe/api/ParticleEmitter.cpp b/src/crepe/api/ParticleEmitter.cpp
index 1e9cfaa..4f54bbd 100644
--- a/src/crepe/api/ParticleEmitter.cpp
+++ b/src/crepe/api/ParticleEmitter.cpp
@@ -3,9 +3,11 @@
using namespace crepe;
-ParticleEmitter::ParticleEmitter(game_object_id_t game_object_id, const Sprite & sprite, const Data & data)
+ParticleEmitter::ParticleEmitter(game_object_id_t game_object_id, const Sprite & sprite,
+ const Data & data)
: Component(game_object_id),
- sprite(sprite), data(data) {
+ sprite(sprite),
+ data(data) {
for (size_t i = 0; i < this->data.max_particles; i++) {
this->particles.emplace_back();
}
diff --git a/src/crepe/api/ParticleEmitter.h b/src/crepe/api/ParticleEmitter.h
index 5b8e8e3..be970f5 100644
--- a/src/crepe/api/ParticleEmitter.h
+++ b/src/crepe/api/ParticleEmitter.h
@@ -78,18 +78,19 @@ 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 Sprite & sprite,const Data & data);
+ ParticleEmitter(game_object_id_t game_object_id, const Sprite & sprite, const Data & data);
public:
//! Configuration data for particle emission settings.
Data data;
+
private:
//! Only ParticleSystem can move and read particles
friend ParticleSystem;
//! Only RenderSystem can read particles
friend RenderSystem;
//! Saves time left over from last update event.
- float spawn_accumulator = 0;
+ float spawn_accumulator = 0;
//! collection of particles
std::vector<Particle> particles;
};
diff --git a/src/crepe/system/ParticleSystem.cpp b/src/crepe/system/ParticleSystem.cpp
index f98f245..31a4e9e 100644
--- a/src/crepe/system/ParticleSystem.cpp
+++ b/src/crepe/system/ParticleSystem.cpp
@@ -31,8 +31,8 @@ void ParticleSystem::update() {
while (emitter.spawn_accumulator >= 1.0) {
this->emit_particle(emitter, transform);
emitter.spawn_accumulator -= 1.0;
- }
-
+ }
+
// Update all particles
for (Particle & particle : emitter.particles) {
if (particle.active) {
@@ -49,9 +49,11 @@ void ParticleSystem::emit_particle(ParticleEmitter & emitter, const Transform &
constexpr float DEG_TO_RAD = M_PI / 180.0;
vec2 initial_position = emitter.data.position + transform.position;
- float random_angle = this->generate_random_angle(emitter.data.min_angle, emitter.data.max_angle);
+ float random_angle
+ = this->generate_random_angle(emitter.data.min_angle, emitter.data.max_angle);
- float random_speed = this->generate_random_speed(emitter.data.min_speed, emitter.data.max_speed);
+ float random_speed
+ = this->generate_random_speed(emitter.data.min_speed, emitter.data.max_speed);
float angle_radians = random_angle * DEG_TO_RAD;
vec2 velocity
diff --git a/src/crepe/system/ParticleSystem.h b/src/crepe/system/ParticleSystem.h
index 95a2bd5..154521d 100644
--- a/src/crepe/system/ParticleSystem.h
+++ b/src/crepe/system/ParticleSystem.h
@@ -23,7 +23,6 @@ public:
void update() override;
private:
-
/**
* \brief Emits a particle from the specified emitter based on its emission properties.
*
diff --git a/src/example/game.cpp b/src/example/game.cpp
index 279648e..2d25153 100644
--- a/src/example/game.cpp
+++ b/src/example/game.cpp
@@ -261,24 +261,23 @@ public:
= false;
Asset img5{"asset/texture/square.png"};
-
-
GameObject particle = mgr.new_object(
"Name", "Tag", vec2{screen_size_width / 2, screen_size_height / 2}, 0, 1);
- auto & particle_image = particle.add_component<Sprite>(img5, Sprite::Data{.size = {5, 5},});
- auto & test = particle.add_component<ParticleEmitter>(particle_image,ParticleEmitter::Data{
- .position = {0, 0},
- .max_particles = 256,
- .emission_rate = 50,
- .min_speed = 10,
- .max_speed = 20,
- .min_angle = -20,
- .max_angle = 20,
- .begin_lifespan = 0,
- .end_lifespan = 5,
- }
- );
-
+ auto & particle_image = particle.add_component<Sprite>(img5, Sprite::Data{
+ .size = {5, 5},
+ });
+ auto & test
+ = particle.add_component<ParticleEmitter>(particle_image, ParticleEmitter::Data{
+ .position = {0, 0},
+ .max_particles = 256,
+ .emission_rate = 50,
+ .min_speed = 10,
+ .max_speed = 20,
+ .min_angle = -20,
+ .max_angle = 20,
+ .begin_lifespan = 0,
+ .end_lifespan = 5,
+ });
}
string get_name() const { return "scene1"; }
diff --git a/src/example/rendering_particle.cpp b/src/example/rendering_particle.cpp
index 2b5c041..add43f4 100644
--- a/src/example/rendering_particle.cpp
+++ b/src/example/rendering_particle.cpp
@@ -17,7 +17,6 @@
using namespace crepe;
using namespace std;
-
class TestScene : public Scene {
public:
diff --git a/src/test/ParticleTest.cpp b/src/test/ParticleTest.cpp
index a9a26c6..8ffb140 100644
--- a/src/test/ParticleTest.cpp
+++ b/src/test/ParticleTest.cpp
@@ -1,6 +1,4 @@
#include "api/Asset.h"
-#include <math.h>
-#include <gtest/gtest.h>
#include <crepe/api/Config.h>
#include <crepe/api/GameObject.h>
#include <crepe/api/Rigidbody.h>
@@ -8,18 +6,18 @@
#include <crepe/api/Transform.h>
#include <crepe/manager/ComponentManager.h>
#include <crepe/manager/LoopTimerManager.h>
+#include <gtest/gtest.h>
+#include <math.h>
#define protected public
#define private public
#include <crepe/Particle.h>
#include <crepe/api/ParticleEmitter.h>
#include <crepe/system/ParticleSystem.h>
-
using namespace std;
using namespace std::chrono_literals;
using namespace crepe;
-
class ParticlesTest : public ::testing::Test {
Mediator m;
@@ -44,25 +42,25 @@ public:
.size = {10, 10},
});
- game_object.add_component<ParticleEmitter>(test_sprite,ParticleEmitter::Data{
- .position = {0, 0},
- .max_particles = 100,
- .emission_rate = 0,
- .min_speed = 0,
- .max_speed = 0,
- .min_angle = 0,
- .max_angle = 0,
- .begin_lifespan = 0,
- .end_lifespan = 0,
- .force_over_time = vec2{0, 0},
- .boundary{
- .width = 0,
- .height = 0,
- .offset = vec2{0, 0},
- .reset_on_exit = false,
- },
- });
-
+ game_object.add_component<ParticleEmitter>(test_sprite,
+ ParticleEmitter::Data{
+ .position = {0, 0},
+ .max_particles = 100,
+ .emission_rate = 0,
+ .min_speed = 0,
+ .max_speed = 0,
+ .min_angle = 0,
+ .max_angle = 0,
+ .begin_lifespan = 0,
+ .end_lifespan = 0,
+ .force_over_time = vec2{0, 0},
+ .boundary{
+ .width = 0,
+ .height = 0,
+ .offset = vec2{0, 0},
+ .reset_on_exit = false,
+ },
+ });
}
transforms = mgr.get_components_by_id<Transform>(0);
Transform & transform = transforms.front().get();
@@ -209,6 +207,6 @@ TEST_F(ParticlesTest, boundaryParticleStop) {
EXPECT_NEAR(std::abs(emitter.particles[0].position.x),
emitter.data.boundary.height / 2, TOLERANCE);
if (emitter.particles[0].velocity.y != 0)
- EXPECT_NEAR(std::abs(emitter.particles[0].position.y),
- emitter.data.boundary.width / 2, TOLERANCE);
+ EXPECT_NEAR(std::abs(emitter.particles[0].position.y), emitter.data.boundary.width / 2,
+ TOLERANCE);
}