mirror of
https://github.com/slendidev/smath.git
synced 2025-12-08 03:49:52 +02:00
Create unpacking function for vectors
Signed-off-by: Slendi <slendi@socopon.com>
This commit is contained in:
@@ -39,6 +39,9 @@ int main() {
|
||||
std::println("std::get<1>(v): {}", std::get<1>(v));
|
||||
auto [x, y, z] = v;
|
||||
std::println("Bindings: [{}, {}, {}]", x, y, z);
|
||||
float x1{}, y1{}, z1{};
|
||||
v.unpack(x1, y1, z1);
|
||||
std::println("Unpacked: {}, {}, {}", x1, y1, z1);
|
||||
|
||||
// Let's mix and match!
|
||||
Vec<6> v3(v, 7, swizzle<"zy">(v2));
|
||||
|
||||
@@ -162,6 +162,16 @@ public:
|
||||
VEC_ACC(v, 2, 1)
|
||||
#undef VEC_ACC
|
||||
|
||||
template <class... Args, std::size_t... Is>
|
||||
constexpr void unpack_impl(std::index_sequence<Is...>,
|
||||
Args &...args) noexcept {
|
||||
((args = (*this)[Is]), ...);
|
||||
}
|
||||
|
||||
template <class... Args> constexpr void unpack(Args &...args) noexcept {
|
||||
unpack_impl(std::index_sequence_for<Args...>{}, args...);
|
||||
}
|
||||
|
||||
// Unary
|
||||
constexpr auto operator-() noexcept -> Vec {
|
||||
Vec r{};
|
||||
|
||||
Reference in New Issue
Block a user