#include "math.hpp" #include // Include for std::out_of_range namespace Basalt::Shared::Math { #pragma region Vector3 FloatPoint& Vector3::operator[](size_t index) { switch (index) { case 0: return x; case 1: return y; case 2: return z; default: throw std::out_of_range("Vector3 index out of range"); } } const FloatPoint& Vector3::operator[](size_t index) const { switch (index) { case 0: return x; case 1: return y; case 2: return z; default: throw std::out_of_range("Vector3 index out of range"); } } #pragma endregion #pragma region Vector4 FloatPoint& Vector4::operator[](size_t index) { switch (index) { case 0: return x; case 1: return y; case 2: return z; case 3: return w; default: throw std::out_of_range("Vector4 index out of range"); } } const FloatPoint& Vector4::operator[](size_t index) const { switch (index) { case 0: return x; case 1: return y; case 2: return z; case 3: return w; default: throw std::out_of_range("Vector4 index out of range"); } } #pragma endregion #pragma region Matrix4x4 Vector4& Matrix4x4::operator[](size_t index) { return data.at(index); } const Vector4& Matrix4x4::operator[](size_t index) const { return data.at(index); } #pragma endregion } // namespace Basalt::Shared::Math