Air-Trap 1.0.0
A multiplayer R-Type clone game engine built with C++23 and ECS architecture
Loading...
Searching...
No Matches
Vec4.tpp
Go to the documentation of this file.
1/*
2** EPITECH PROJECT, 2025
3** R-Type
4** File description:
5** Vec4.tpp, Vector of 4 class implementation
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
33/**
34 * @file Vec4.tpp
35 * @brief Implementation of the 4-dimensional vector class.
36 * @author Robin Toillon
37 */
38
39namespace rtp
40{
41 template<Numeric T>
42 constexpr Vec4<T>::Vec4(T x_, T y_, T z_, T w_) noexcept
43 : x{x_}, y{y_}, z{z_}, w{w_}
44 {
45 }
46
47 template <Numeric T>
48 constexpr auto &Vec4<T>::operator[](this auto &self,
49 std::size_t index) noexcept
50 {
51 switch (index) {
52 case 0:
53 return self.x;
54 case 1:
55 return self.y;
56 case 2:
57 return self.z;
58 case 3:
59 return self.w;
60 default:
61 RTP_ASSERT(false, "Vec4: Index {} out of bounds", index);
62 std::unreachable();
63 }
64 }
65}