7 #if !defined(__has_include) || __has_include("boost/version.hpp")
8 #include <boost/version.hpp>
53 template <
class Archive>
void serialize(Archive& ar,
const unsigned int) {
63 #if BOOST_VERSION >= 106200 || __has_include("boost/qvm/vec_traits.hpp")
64 #include <boost/qvm/vec_traits.hpp>
66 namespace boost::qvm {
67 template <>
struct vec_traits<
jngl::Vec2> {
68 static int const dim = 2;
69 using scalar_type = double;
71 template <
int I>
static inline scalar_type& write_element(
jngl::Vec2& v) {
74 template <
int I>
static inline scalar_type read_element(
const jngl::Vec2& v) {
78 static inline scalar_type& write_element_idx(
int i,
jngl::Vec2& v) {
81 static inline scalar_type read_element_idx(
int i,
jngl::Vec2 const& v) {
87 #include <boost/qvm/vec_operations.hpp>
89 using boost::qvm::operator+=;
90 using boost::qvm::operator*=;
91 using boost::qvm::operator/=;
92 using boost::qvm::operator-=;
93 using boost::qvm::operator==;
94 using boost::qvm::operator!=;
95 using boost::qvm::operator+;
96 using boost::qvm::operator-;
97 using boost::qvm::operator/;
98 using boost::qvm::operator*;
bool isNull() const
returns true if both x and y are exactly 0
Vec2(double x, double y)
Creates a vector {x, y}.
void serialize(Archive &ar, const unsigned int)
Helper function to use with cereal or Boost.Serialization.
std::ostream & operator<<(std::ostream &, const Vec2 &)
Prints the vector like this: [x=…, y=…].