R-Type
Distributed multiplayer game engine in C++
Loading...
Searching...
No Matches
MovementSystem.cpp
Go to the documentation of this file.
1/*
2** EPITECH PROJECT, 2025
3** RTYPE
4** File description:
5** MovementSystem
6*/
7
8#include "MovementSystem.hpp"
9
10namespace ecs {
14 void MovementSystem::update(Registry &registry, float deltaTime) {
15 auto entities = registry.getEntitiesWithMask(this->getComponentMask());
16
17 for (auto entityId : entities) {
18 auto &transform = registry.getComponent<Transform>(entityId);
19 auto &velocity = registry.getComponent<Velocity>(entityId);
20
21 auto direction = velocity.getDirection();
22 float speed = velocity.getSpeed();
23 auto pos = transform.getPosition();
24
25 float newX = pos.x + direction.x * speed * deltaTime;
26 float newY = pos.y + direction.y * speed * deltaTime;
27 transform.setPosition(newX, newY);
28 }
29 }
30
32 return (1ULL << getComponentType<Transform>()) | (1ULL << getComponentType<Velocity>());
33 }
34} // namespace ecs
ComponentMask getComponentMask() const override
Gets the component mask for this system.
void update(Registry &registry, float deltaTime) override
Updates entity positions based on their velocities.
Manages entities, their signatures and component type registrations.
Definition Registry.hpp:68
std::vector< Address > getEntitiesWithMask(Signature requiredMask)
Get all entities matching a specific component mask.
Definition Registry.cpp:79
T & getComponent(Address address)
Get a component from an entity.
Component representing position, rotation and scale in 2D space.
Definition Transform.hpp:20
Vector2 getPosition() const
Get the position vector.
Definition Transform.hpp:61
Component representing movement direction and speed.
Definition Velocity.hpp:20
Maximum number of distinct component types supported by the Registry.
Definition GameLogic.hpp:26
std::uint64_t ComponentMask
Type alias for component bitmask.
Definition ISystem.hpp:24
float x
X coordinate.
Definition Transform.hpp:27