diff options
author | max-001 <maxsmits21@kpnmail.nl> | 2024-12-17 15:22:18 +0100 |
---|---|---|
committer | max-001 <maxsmits21@kpnmail.nl> | 2024-12-17 15:22:18 +0100 |
commit | fb76ba279cc2500f2ed385c3463caed003d43e00 (patch) | |
tree | 27214fe26a2843bf58d5ca7fd6b4dd2dd1028aa0 | |
parent | 473f807b1ec0fc67f40c65b310e132e4b83a76a3 (diff) |
Added particle emitter
-rw-r--r-- | src/example/GameScene.cpp | 7 | ||||
-rw-r--r-- | src/example/Start.cpp | 44 |
2 files changed, 51 insertions, 0 deletions
diff --git a/src/example/GameScene.cpp b/src/example/GameScene.cpp index 5ab4be0..5f252e6 100644 --- a/src/example/GameScene.cpp +++ b/src/example/GameScene.cpp @@ -1,6 +1,7 @@ #include "GameScene.h" #include "Background.h" #include "Player.h" +#include "api/ParticleEmitter.h" #include <cmath> #include <crepe/api/Animator.h> @@ -67,6 +68,12 @@ public: frag_sprite.active = true; } + RefVector<ParticleEmitter> smoke_emitters + = this->get_components_by_name<ParticleEmitter>("smoke_particles"); + for (ParticleEmitter & emitter : smoke_emitters) { + emitter.active = true; + } + this->created_hole = true; } diff --git a/src/example/Start.cpp b/src/example/Start.cpp index f710a3a..356adf1 100644 --- a/src/example/Start.cpp +++ b/src/example/Start.cpp @@ -1,11 +1,13 @@ #include "Start.h" #include "api/Asset.h" #include "api/CircleCollider.h" +#include "api/Color.h" #include "api/Rigidbody.h" #include "types.h" #include <crepe/api/Animator.h> #include <crepe/api/GameObject.h> +#include <crepe/api/ParticleEmitter.h> #include <crepe/api/Scene.h> #include <crepe/api/Sprite.h> @@ -385,4 +387,46 @@ void Start::create_wall_fragments(crepe::Scene & scn, float begin_x) { }); frag_12_rb.active = false; frag_12.add_component<CircleCollider>(50); + + GameObject smoke_particles_1 + = scn.new_object("smoke_particles", "particle_emitter", vec2(begin_x - 100, 200)); + Asset smoke_asset_1{"asset/jetpack_joyride/particles/smoke.png"}; + Sprite & smoke_sprite_1 = smoke_particles_1.add_component<Sprite>( + smoke_asset_1, Sprite::Data{ + .color = Color(255, 255, 255, 50), + .sorting_in_layer = 15, + .order_in_layer = 0, + .size = vec2(0, 100), + }); + ParticleEmitter & emitter_1 = smoke_particles_1.add_component<ParticleEmitter>( + smoke_sprite_1, ParticleEmitter::Data{ + .emission_rate = 20, + .min_speed = 40, + .max_speed = 100, + .min_angle = -30, + .max_angle = 10, + .end_lifespan = 4, + }); + emitter_1.active = false; + + GameObject smoke_particles_2 + = scn.new_object("smoke_particles", "particle_emitter", vec2(begin_x - 100, 200)); + Asset smoke_asset_2{"asset/jetpack_joyride/particles/smoke.png"}; + Sprite & smoke_sprite_2 = smoke_particles_2.add_component<Sprite>( + smoke_asset_2, Sprite::Data{ + .color = Color(255, 255, 255, 50), + .sorting_in_layer = 15, + .order_in_layer = 0, + .size = vec2(0, 70), + }); + ParticleEmitter & emitter_2 = smoke_particles_2.add_component<ParticleEmitter>( + smoke_sprite_2, ParticleEmitter::Data{ + .emission_rate = 30, + .min_speed = 40, + .max_speed = 100, + .min_angle = -45, + .max_angle = 5, + .end_lifespan = 3, + }); + emitter_2.active = false; } |