/** * @file */ #pragma once #define JSON_NOEXCEPTION #include "json.hpp" #include #include #include namespace core { using json = ::nlohmann::json; } namespace glm { template void to_json(::core::json& j, const vec<2, T, Q>& p) { j = ::core::json{{"x", p.x}, {"y", p.y}}; } template void from_json(const ::core::json& j, vec<2, T, Q>& p) { if (j.is_array() && j.size() == 2) { p.x = j[0].get(); p.y = j[1].get(); return; } p.x = j.at("x").get(); p.y = j.at("y").get(); } template void to_json(::core::json& j, const vec<3, T, Q>& p) { j = ::core::json{{"x", p.x}, {"y", p.y}, {"z", p.z}}; } template void from_json(const ::core::json& j, vec<3, T, Q>& p) { if (j.is_array() && j.size() == 3) { p.x = j[0].get(); p.y = j[1].get(); p.z = j[2].get(); return; } p.x = j.at("x").get(); p.y = j.at("y").get(); p.z = j.at("z").get(); } template void to_json(::core::json& j, const vec<4, T, Q>& p) { j = ::core::json{{"x", p.x}, {"y", p.y}, {"z", p.z}, {"w", p.w}}; } template void from_json(const ::core::json& j, vec<4, T, Q>& p) { if (j.is_array() && j.size() == 4) { p.x = j[0].get(); p.y = j[1].get(); p.z = j[2].get(); p.w = j[3].get(); return; } p.x = j.at("x").get(); p.y = j.at("y").get(); p.z = j.at("z").get(); p.z = j.at("w").get(); } }