R-Type
Distributed multiplayer game engine in C++
Loading...
Searching...
No Matches
Velocity.hpp
Go to the documentation of this file.
1/*
2** EPITECH PROJECT, 2025
3** RTYPE
4** File description:
5** Velocity
6*/
7
8#pragma once
9
10#include "IComponent.hpp"
11
12namespace ecs {
20 class Velocity : public IComponent {
21 public:
26 struct Vector2 {
27 float x;
28 float y;
29 };
30
37 Velocity(float dirX, float dirY, float speed)
38 : _direction{dirX, dirY}, _speed(speed), _baseSpeed(speed) {}
39 ~Velocity() override = default;
40
45 Vector2 getDirection() const { return _direction; }
46
51 float getSpeed() const { return _speed; }
52
57 float getBaseSpeed() const { return _baseSpeed; }
58
64 void setDirection(float dirX, float dirY) {
65 _direction.x = dirX;
66 _direction.y = dirY;
67 }
68
73 void setSpeed(float speed) { _speed = speed; }
74
79 ComponentType getType() const override { return getComponentType<Velocity>(); }
80
81 private:
83 float _speed;
84 float _baseSpeed;
85 };
86} // namespace ecs
Base interface for all ECS components.
Component representing movement direction and speed.
Definition Velocity.hpp:20
Vector2 getDirection() const
Get the direction vector.
Definition Velocity.hpp:45
float _baseSpeed
Base speed (before buffs)
Definition Velocity.hpp:84
void setSpeed(float speed)
Set the movement speed.
Definition Velocity.hpp:73
float _speed
Movement speed in units per second.
Definition Velocity.hpp:83
float getSpeed() const
Get the movement speed.
Definition Velocity.hpp:51
Velocity(float dirX, float dirY, float speed)
Constructor with direction and speed.
Definition Velocity.hpp:37
Vector2 _direction
Movement direction vector.
Definition Velocity.hpp:82
ComponentType getType() const override
Get the component type ID.
Definition Velocity.hpp:79
void setDirection(float dirX, float dirY)
Set the direction vector.
Definition Velocity.hpp:64
~Velocity() override=default
float getBaseSpeed() const
Get the base movement speed (before buffs).
Definition Velocity.hpp:57
Maximum number of distinct component types supported by the Registry.
Definition GameLogic.hpp:26
std::size_t ComponentType
Type alias for component identification.
2D vector for direction.
Definition Velocity.hpp:26
float y
Y component.
Definition Velocity.hpp:28
float x
X component.
Definition Velocity.hpp:27