Air-Trap 1.0.0
A multiplayer R-Type clone game engine built with C++23 and ECS architecture
Loading...
Searching...
No Matches
Vec4.hpp
Go to the documentation of this file.
1/*
2** EPITECH PROJECT, 2025
3** R-Type
4** File description:
5** Vec4.hpp, Vector of 4 class declaration
6*/
7
8/*
9** MIT License
10**
11** Copyright (c) 2025 Robin Toillon
12**
13** Permission is hereby granted, free of charge, to any person obtaining
14** a copy of this software and associated documentation files (the
15** "Software"), to deal in the Software without restriction, including
16** without limitation the rights to use, copy, modify, merge, publish,
17** distribute, sublicense, and/or sell copies of the Software, and to
18** permit persons to whom the Software is furnished to do so, subject to
19** the following conditions:
20**
21** The above copyright notice and this permission notice shall be
22** included in all copies or substantial portions of the Software.
23**
24** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
25** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
26** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
27** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
28** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
29** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
30** SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
31*/
32
39#ifndef RTYPE_VEC4_HPP_
40 #define RTYPE_VEC4_HPP_
41
42 #include "RType/Assert.hpp"
44
45namespace rtp
46{
52 template <Numeric T>
53 struct Vec4 : details::VecBase<T, 4> {
54 T x{};
55 T y{};
56 T z{};
57 T w{};
60 constexpr Vec4(void) = default;
61
63 constexpr Vec4(T x, T y, T z, T w) noexcept;
64
66 constexpr ~Vec4() = default;
67
69 [[nodiscard]]
70 constexpr bool operator==(const Vec4 &) const noexcept = default;
71
78 [[nodiscard]]
79 constexpr auto &operator[](this auto &self, size_t index) noexcept;
80 };
81
86}
87
88 #include "Vec4.tpp"
89
90#endif /* !RTYPE_VEC4_HPP_ */
Assertion and verification macros for runtime checks.
Declaration of the CRTP base vector class.
A 4-dimensional vector.
Definition Vec4.hpp:53
constexpr ~Vec4()=default
Default destructor.
T w
W coordinate.
Definition Vec4.hpp:57
T z
Z coordinate.
Definition Vec4.hpp:56
T y
Y coordinate.
Definition Vec4.hpp:55
constexpr bool operator==(const Vec4 &) const noexcept=default
Checks if two vectors are exactly equal.
constexpr Vec4(void)=default
Default constructor.
T x
X coordinate.
Definition Vec4.hpp:54
constexpr Vec4(T x, T y, T z, T w) noexcept
Parameterized constructor.
constexpr auto & operator[](this auto &self, size_t index) noexcept
Accesses the coordinate at the specified index.
CRTP base class for vectors.
Definition VecBase.hpp:60