r-type  0.0.0
R-Type main
Loading...
Searching...
No Matches
projectile.cpp
Go to the documentation of this file.
2#include "ECS/Component.hpp"
3
5{
6 std::vector<ecs::Entity> entitiesToRemove;
7
8 for (auto &[entity, projectile] : registry.getAll<ecs::Projectile>())
9 {
10 projectile.current_lifetime += dt;
11 if (projectile.current_lifetime >= projectile.lifetime)
12 {
13 entitiesToRemove.push_back(entity);
14 continue;
15 }
16 auto *transform = registry.getComponent<ecs::Transform>(entity);
17
18 if (const auto *velocity = registry.getComponent<ecs::Velocity>(entity);
19 (transform != nullptr) && (velocity != nullptr))
20 {
21 transform->x += velocity->x * dt;
22 transform->y += velocity->y * dt;
23 }
24 }
25
26 for (const auto &entity : entitiesToRemove)
27 {
28 if (registry.hasComponent<ecs::Projectile>(entity))
29 {
30 registry.removeComponent<ecs::Projectile>(entity);
31 }
32 if (registry.hasComponent<ecs::Transform>(entity))
33 {
34 registry.removeComponent<ecs::Transform>(entity);
35 }
36 if (registry.hasComponent<ecs::Velocity>(entity))
37 {
38 registry.removeComponent<ecs::Velocity>(entity);
39 }
40 if (registry.hasComponent<ecs::Rect>(entity))
41 {
42 registry.removeComponent<ecs::Rect>(entity);
43 }
44 if (registry.hasComponent<ecs::Scale>(entity))
45 {
46 registry.removeComponent<ecs::Scale>(entity);
47 }
48 if (registry.hasComponent<ecs::Texture>(entity))
49 {
50 registry.removeComponent<ecs::Texture>(entity);
51 }
52 if (registry.hasComponent<ecs::Animation>(entity))
53 {
54 registry.removeComponent<ecs::Animation>(entity);
55 }
56 }
57}
This file contains the component definitions.
Projectile system for multiplayer.
Class for managing entities and their components.
Definition Registry.hpp:25
bool hasComponent(Entity e)
Definition Registry.hpp:79
std::unordered_map< Entity, T > & getAll()
Definition Registry.hpp:77
T * getComponent(Entity e)
Definition Registry.hpp:71
void removeComponent(Entity e)
Definition Registry.hpp:85
void update(ecs::Registry &registry, float dt) override
Definition projectile.cpp:4