#pragma once #include namespace Basalt::Shared::Math { using FloatPoint = float; struct Vector3 { FloatPoint x, y, z; }; struct Vector4 { FloatPoint x, y, z, w; }; struct Matrix4x4 { Vector4 data[4]; }; //template // requires(std::integral || std::floating_point) //struct Vector { // TEle factor[VCnt]; //}; #define NOT_IMPLEMENTED throw std::logic_error("not implemented function"); template struct Vector3Traits {}; template struct Matrix4x4Traits {}; #undef NOT_IMPLEMENTED } // namespace Basalt::Shared::Math