aboutsummaryrefslogtreecommitdiff
path: root/src/crepe
diff options
context:
space:
mode:
authorJAROWMR <jarorutjes07@gmail.com>2024-12-12 22:04:49 +0100
committerJAROWMR <jarorutjes07@gmail.com>2024-12-12 22:04:49 +0100
commitd3a04fb1e8b119017375caab74c43674006a7348 (patch)
tree6fe8f16275318245c6cdcb925825587fbf076910 /src/crepe
parent927aab8cf424d1f3bf25056ce4b4126ce9f4edab (diff)
broken particle test
Diffstat (limited to 'src/crepe')
-rw-r--r--src/crepe/api/ParticleEmitter.cpp2
-rw-r--r--src/crepe/api/ParticleEmitter.h10
-rw-r--r--src/crepe/system/ParticleSystem.cpp6
-rw-r--r--src/crepe/system/RenderSystem.cpp2
4 files changed, 11 insertions, 9 deletions
diff --git a/src/crepe/api/ParticleEmitter.cpp b/src/crepe/api/ParticleEmitter.cpp
index 1cfdceb..1e9cfaa 100644
--- a/src/crepe/api/ParticleEmitter.cpp
+++ b/src/crepe/api/ParticleEmitter.cpp
@@ -7,6 +7,6 @@ ParticleEmitter::ParticleEmitter(game_object_id_t game_object_id, const Sprite &
: Component(game_object_id),
sprite(sprite), data(data) {
for (size_t i = 0; i < this->data.max_particles; i++) {
- this->data.particles.emplace_back();
+ this->particles.emplace_back();
}
}
diff --git a/src/crepe/api/ParticleEmitter.h b/src/crepe/api/ParticleEmitter.h
index cc54ffb..e0b117a 100644
--- a/src/crepe/api/ParticleEmitter.h
+++ b/src/crepe/api/ParticleEmitter.h
@@ -3,9 +3,11 @@
#include <cmath>
#include <vector>
+#include "system/ParticleSystem.h"
+#include "system/RenderSystem.h"
+
#include "Component.h"
#include "Particle.h"
-#include "system/ParticleSystem.h"
#include "types.h"
namespace crepe {
@@ -69,9 +71,6 @@ public:
vec2 force_over_time;
//! particle boundary
Boundary boundary;
- //! collection of particles
- std::vector<Particle> particles;
-
};
public:
@@ -87,7 +86,10 @@ public:
private:
//! Saves time left over from last update event.
friend ParticleSystem;
+ friend RenderSystem;
float spawn_accumulator = 0;
+ //! collection of particles
+ std::vector<Particle> particles;
};
} // namespace crepe
diff --git a/src/crepe/system/ParticleSystem.cpp b/src/crepe/system/ParticleSystem.cpp
index 85b8248..a56de60 100644
--- a/src/crepe/system/ParticleSystem.cpp
+++ b/src/crepe/system/ParticleSystem.cpp
@@ -34,7 +34,7 @@ void ParticleSystem::update() {
}
// Update all particles
- for (Particle & particle : emitter.data.particles) {
+ for (Particle & particle : emitter.particles) {
if (particle.active) {
particle.update(dt);
}
@@ -57,7 +57,7 @@ void ParticleSystem::emit_particle(ParticleEmitter & emitter, const Transform &
vec2 velocity
= {random_speed * std::cos(angle_radians), random_speed * std::sin(angle_radians)};
- for (Particle & particle : emitter.data.particles) {
+ for (Particle & particle : emitter.particles) {
if (!particle.active) {
particle.reset(emitter.data.end_lifespan, initial_position, velocity,
random_angle);
@@ -76,7 +76,7 @@ void ParticleSystem::check_bounds(ParticleEmitter & emitter, const Transform & t
const float TOP = offset.y - half_height;
const float BOTTOM = offset.y + half_height;
- for (Particle & particle : emitter.data.particles) {
+ for (Particle & particle : emitter.particles) {
const vec2 & position = particle.position;
bool within_bounds = (position.x >= LEFT && position.x <= RIGHT && position.y >= TOP
&& position.y <= BOTTOM);
diff --git a/src/crepe/system/RenderSystem.cpp b/src/crepe/system/RenderSystem.cpp
index cc633e8..505433a 100644
--- a/src/crepe/system/RenderSystem.cpp
+++ b/src/crepe/system/RenderSystem.cpp
@@ -87,7 +87,7 @@ bool RenderSystem::render_particle(const Sprite & sprite, const double & scale)
rendering_particles = true;
if (!em.active) continue;
- for (const Particle & p : em.data.particles) {
+ for (const Particle & p : em.particles) {
if (!p.active) continue;
ctx.draw(SDLContext::RenderContext{