R-Type
Distributed multiplayer game engine in C++
Loading...
Searching...
No Matches
Collider.hpp
Go to the documentation of this file.
1/*
2** EPITECH PROJECT, 2025
3** RTYPE
4** File description:
5** Collider
6*/
7
8#pragma once
9
10#include <cstdint>
11#include "IComponent.hpp"
12
13namespace ecs {
21 class Collider : public IComponent {
22 public:
27 struct Vector2 {
28 float x;
29 float y;
30 };
31
42 Collider(float sizeX, float sizeY, float offsetX, float offsetY, std::uint32_t layer,
43 std::uint32_t mask, bool isTrigger)
44 : _size{sizeX, sizeY},
45 _offset{offsetX, offsetY},
46 _layer(layer),
47 _mask(mask),
49 ~Collider() override = default;
50
55 Vector2 getSize() const { return _size; }
56
61 Vector2 getOffset() const { return _offset; }
62
67 std::uint32_t getLayer() const { return _layer; }
68
73 std::uint32_t getMask() const { return _mask; }
74
79 bool isTrigger() const { return _isTrigger; }
80
86 void setSize(float sizeX, float sizeY) {
87 _size.x = sizeX;
88 _size.y = sizeY;
89 }
90
96 void setOffset(float offsetX, float offsetY) {
97 _offset.x = offsetX;
98 _offset.y = offsetY;
99 }
100
105 void setLayer(std::uint32_t layer) { _layer = layer; }
106
111 void setMask(std::uint32_t mask) { _mask = mask; }
112
118
123 ComponentType getType() const override { return getComponentType<Collider>(); }
124
125 private:
128 std::uint32_t _layer;
129 std::uint32_t _mask;
131 };
132} // namespace ecs
Component for collision detection and physics interactions.
Definition Collider.hpp:21
Vector2 getOffset() const
Get position offset.
Definition Collider.hpp:61
void setLayer(std::uint32_t layer)
Set collision layer.
Definition Collider.hpp:105
void setTrigger(bool isTrigger)
Set trigger status.
Definition Collider.hpp:117
void setSize(float sizeX, float sizeY)
Set collision box size.
Definition Collider.hpp:86
std::uint32_t _mask
Bitmask of interactable layers.
Definition Collider.hpp:129
~Collider() override=default
void setMask(std::uint32_t mask)
Set collision mask.
Definition Collider.hpp:111
bool _isTrigger
True=trigger zone, false=solid collision.
Definition Collider.hpp:130
std::uint32_t getMask() const
Get collision mask.
Definition Collider.hpp:73
Vector2 _offset
Offset from entity position.
Definition Collider.hpp:127
Vector2 getSize() const
Get collision box size.
Definition Collider.hpp:55
void setOffset(float offsetX, float offsetY)
Set position offset.
Definition Collider.hpp:96
bool isTrigger() const
Check if this is a trigger.
Definition Collider.hpp:79
Collider(float sizeX, float sizeY, float offsetX, float offsetY, std::uint32_t layer, std::uint32_t mask, bool isTrigger)
Constructor with full collision parameters.
Definition Collider.hpp:42
std::uint32_t _layer
Collision layer identifier.
Definition Collider.hpp:128
std::uint32_t getLayer() const
Get collision layer.
Definition Collider.hpp:67
ComponentType getType() const override
Get the component type ID.
Definition Collider.hpp:123
Vector2 _size
Collision box dimensions (width, height)
Definition Collider.hpp:126
Base interface for all ECS components.
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 size and offset.
Definition Collider.hpp:27
float y
Y component.
Definition Collider.hpp:29
float x
X component.
Definition Collider.hpp:28