#pragma once #include "nlohmann/json.hpp" #include "VHACD.h" #include "U_Types.h" template T GetFromJson(const nlohmann::json& _json, const std::string& key, T fallback = T{}) { if(_json.contains(key)) { auto& val = _json[key]; if constexpr (std::is_arithmetic_v) { if(val.is_number()) { return val.get(); } } if constexpr (std::is_same_v || std::is_same_v) { if(val.is_string()) { return val.get(); } } if constexpr (std::is_same_v) { if(val.is_boolean()) { return val.get(); } } if constexpr (is_glm_vec_v || is_glm_quat_v) { if(val.is_array()) { T vec; std::vector nums = val.get>(); for(size_t i = 0; i < nums.size() && i < T::length(); i++) { vec[i] = nums.at(i); } return vec; } } } return fallback; } void JsonToVHACD(const nlohmann::json& _json, VHACD::IVHACD::Parameters& params);