Unravel Engine C++ Reference
Loading...
Searching...
No Matches
transform.hpp
Go to the documentation of this file.
1#pragma once
2#include "quaternion.hpp"
3#include "vector.hpp"
4
5namespace ser20
6{
7template<typename Archive, typename T, math::qualifier P>
8inline void SERIALIZE_FUNCTION_NAME(Archive& ar, math::tmat2x2<T, P>& obj)
9{
10 try_serialize(ar, ser20::make_nvp("col_0", obj[0]));
11 try_serialize(ar, ser20::make_nvp("col_1", obj[1]));
12}
13
14template<typename Archive, typename T, math::qualifier P>
15inline void SERIALIZE_FUNCTION_NAME(Archive& ar, math::tmat2x3<T, P>& obj)
16{
17 try_serialize(ar, ser20::make_nvp("col_0", obj[0]));
18 try_serialize(ar, ser20::make_nvp("col_1", obj[1]));
19 try_serialize(ar, ser20::make_nvp("col_2", obj[2]));
20}
21template<typename Archive, typename T, math::qualifier P>
22inline void SERIALIZE_FUNCTION_NAME(Archive& ar, math::tmat2x4<T, P>& obj)
23{
24 try_serialize(ar, ser20::make_nvp("col_0", obj[0]));
25 try_serialize(ar, ser20::make_nvp("col_1", obj[1]));
26 try_serialize(ar, ser20::make_nvp("col_2", obj[2]));
27 try_serialize(ar, ser20::make_nvp("col_3", obj[3]));
28}
29
30template<typename Archive, typename T, math::qualifier P>
31inline void SERIALIZE_FUNCTION_NAME(Archive& ar, math::tmat3x2<T, P>& obj)
32{
33 try_serialize(ar, ser20::make_nvp("col_0", obj[0]));
34 try_serialize(ar, ser20::make_nvp("col_1", obj[1]));
35}
36
37template<typename Archive, typename T, math::qualifier P>
38inline void SERIALIZE_FUNCTION_NAME(Archive& ar, math::tmat4x2<T, P>& obj)
39{
40 try_serialize(ar, ser20::make_nvp("col_0", obj[0]));
41 try_serialize(ar, ser20::make_nvp("col_1", obj[1]));
42}
43
44template<typename Archive, typename T, math::qualifier P>
45inline void SERIALIZE_FUNCTION_NAME(Archive& ar, math::tmat3x3<T, P>& obj)
46{
47 try_serialize(ar, ser20::make_nvp("col_0", obj[0]));
48 try_serialize(ar, ser20::make_nvp("col_1", obj[1]));
49 try_serialize(ar, ser20::make_nvp("col_2", obj[2]));
50}
51
52template<typename Archive, typename T, math::qualifier P>
53inline void SERIALIZE_FUNCTION_NAME(Archive& ar, math::tmat3x4<T, P>& obj)
54{
55 try_serialize(ar, ser20::make_nvp("col_0", obj[0]));
56 try_serialize(ar, ser20::make_nvp("col_1", obj[1]));
57 try_serialize(ar, ser20::make_nvp("col_2", obj[2]));
58 try_serialize(ar, ser20::make_nvp("col_3", obj[3]));
59}
60
61template<typename Archive, typename T, math::qualifier P>
62inline void SERIALIZE_FUNCTION_NAME(Archive& ar, math::tmat4x3<T, P>& obj)
63{
64 try_serialize(ar, ser20::make_nvp("col_0", obj[0]));
65 try_serialize(ar, ser20::make_nvp("col_1", obj[1]));
66 try_serialize(ar, ser20::make_nvp("col_2", obj[2]));
67}
68
69template<typename Archive, typename T, math::qualifier P>
70inline void SERIALIZE_FUNCTION_NAME(Archive& ar, math::tmat4x4<T, P>& obj)
71{
72 try_serialize(ar, ser20::make_nvp("col_0", obj[0]));
73 try_serialize(ar, ser20::make_nvp("col_1", obj[1]));
74 try_serialize(ar, ser20::make_nvp("col_2", obj[2]));
75 try_serialize(ar, ser20::make_nvp("col_3", obj[3]));
76}
77
78template<typename Archive, typename T, math::qualifier P>
80{
81 auto pos = obj.get_position();
82 auto rot = obj.get_rotation();
83 auto scale = obj.get_scale();
84 auto skew = obj.get_skew();
85
86 try_serialize(ar, ser20::make_nvp("position", pos));
87 try_serialize(ar, ser20::make_nvp("rotation", rot));
88 try_serialize(ar, ser20::make_nvp("scale", scale));
89 try_serialize(ar, ser20::make_nvp("skew", skew));
90
91 obj.set_position(pos);
92 obj.set_rotation(rot);
93 obj.set_scale(scale);
94 obj.set_skew(skew);
95}
96} // namespace ser20
General purpose transformation class designed to maintain each component of the transformation separa...
Definition transform.hpp:27
auto get_position() const noexcept -> const vec3_t &
Get the position component.
void set_scale(const vec3_t &scale) noexcept
Set the scale component.
void set_skew(const vec3_t &skew) noexcept
Set the skew component.
auto get_scale() const noexcept -> const vec3_t &
Get the scale component.
auto get_rotation() const noexcept -> const quat_t &
Get the rotation component.
auto get_skew() const noexcept -> const vec3_t &
Get the skew component.
void set_rotation(const quat_t &rotation) noexcept
Set the rotation component.
void set_position(const vec3_t &position) noexcept
Set the position component.
float scale
Definition hub.cpp:25
Definition yaml.hpp:46
auto try_serialize(Archive &ar, ser20::NameValuePair< T > &&t, const hpp::source_location &loc=hpp::source_location::current()) -> bool
#define SERIALIZE_FUNCTION_NAME