17 try_save(ar, ser20::make_nvp(
"hash", obj.m_hash));
18 try_save(ar, ser20::make_nvp(
"stride", obj.m_stride));
19 try_save(ar, ser20::make_nvp(
"offset", obj.m_offset));
20 try_save(ar, ser20::make_nvp(
"attributes", obj.m_attributes));
27 try_load(ar, ser20::make_nvp(
"hash", obj.m_hash));
28 try_load(ar, ser20::make_nvp(
"stride", obj.m_stride));
29 try_load(ar, ser20::make_nvp(
"offset", obj.m_offset));
30 try_load(ar, ser20::make_nvp(
"attributes", obj.m_attributes));
41 entt::meta_factory<mesh::info>{}
46 .data<nullptr, &mesh::info::vertices>(
"vertices"_hs)
52 .data<nullptr, &mesh::info::primitives>(
"primitives"_hs)
58 .data<nullptr, &mesh::info::submeshes>(
"submeshes"_hs)
64 .data<nullptr, &mesh::info::data_groups>(
"data_groups"_hs)
74 try_save(ar, ser20::make_nvp(
"data_group_id", obj.data_group_id));
75 try_save(ar, ser20::make_nvp(
"vertex_start", obj.vertex_start));
76 try_save(ar, ser20::make_nvp(
"vertex_count", obj.vertex_count));
77 try_save(ar, ser20::make_nvp(
"face_start", obj.face_start));
78 try_save(ar, ser20::make_nvp(
"face_count", obj.face_count));
79 try_save(ar, ser20::make_nvp(
"bbox", obj.bbox));
80 try_save(ar, ser20::make_nvp(
"node_id", obj.node_id));
81 try_save(ar, ser20::make_nvp(
"skinned", obj.skinned));
89 try_load(ar, ser20::make_nvp(
"data_group_id", obj.data_group_id));
90 try_load(ar, ser20::make_nvp(
"vertex_start", obj.vertex_start));
91 try_load(ar, ser20::make_nvp(
"vertex_count", obj.vertex_count));
92 try_load(ar, ser20::make_nvp(
"face_start", obj.face_start));
93 try_load(ar, ser20::make_nvp(
"face_count", obj.face_count));
94 try_load(ar, ser20::make_nvp(
"bbox", obj.bbox));
95 try_load(ar, ser20::make_nvp(
"node_id", obj.node_id));
96 try_load(ar, ser20::make_nvp(
"skinned", obj.skinned));
105 try_save(ar, ser20::make_nvp(
"data_group_id", obj.data_group_id));
106 try_save(ar, ser20::make_nvp(
"indices", obj.indices));
107 try_save(ar, ser20::make_nvp(
"flags", obj.flags));
114 try_load(ar, ser20::make_nvp(
"data_group_id", obj.data_group_id));
115 try_load(ar, ser20::make_nvp(
"indices", obj.indices));
116 try_load(ar, ser20::make_nvp(
"flags", obj.flags));
123 try_save(ar, ser20::make_nvp(
"vertex_index", obj.vertex_index));
124 try_save(ar, ser20::make_nvp(
"weight", obj.weight));
131 try_load(ar, ser20::make_nvp(
"vertex_index", obj.vertex_index));
132 try_load(ar, ser20::make_nvp(
"weight", obj.weight));
139 try_save(ar, ser20::make_nvp(
"bone_id", obj.bone_id));
140 try_save(ar, ser20::make_nvp(
"bind_pose_transform", obj.bind_pose_transform));
141 try_save(ar, ser20::make_nvp(
"influences", obj.influences));
148 try_load(ar, ser20::make_nvp(
"bone_id", obj.bone_id));
149 try_load(ar, ser20::make_nvp(
"bind_pose_transform", obj.bind_pose_transform));
150 try_load(ar, ser20::make_nvp(
"influences", obj.influences));
157 try_save(ar, ser20::make_nvp(
"bones", obj.get_bones()));
164 try_load(ar, ser20::make_nvp(
"bones", obj.get_bones()));
171 try_save(ar, ser20::make_nvp(
"name", obj.name));
172 try_save(ar, ser20::make_nvp(
"local_transform", obj.local_transform));
173 try_save(ar, ser20::make_nvp(
"children", obj.children));
174 try_save(ar, ser20::make_nvp(
"submeshes", obj.submeshes));
175 try_save(ar, ser20::make_nvp(
"index", obj.index));
182 try_load(ar, ser20::make_nvp(
"name", obj.name));
183 try_load(ar, ser20::make_nvp(
"local_transform", obj.local_transform));
184 try_load(ar, ser20::make_nvp(
"children", obj.children));
185 try_load(ar, ser20::make_nvp(
"submeshes", obj.submeshes));
186 try_load(ar, ser20::make_nvp(
"index", obj.index));
193 try_save(ar, ser20::make_nvp(
"vertex_format", obj.vertex_format));
194 try_save(ar, ser20::make_nvp(
"vertex_count", obj.vertex_count));
195 try_save(ar, ser20::make_nvp(
"vertex_data", obj.vertex_data));
196 try_save(ar, ser20::make_nvp(
"triangle_count", obj.triangle_count));
197 try_save(ar, ser20::make_nvp(
"triangle_data", obj.triangle_data));
198 try_save(ar, ser20::make_nvp(
"material_count", obj.material_count));
199 try_save(ar, ser20::make_nvp(
"submeshes", obj.submeshes));
200 try_save(ar, ser20::make_nvp(
"skin_data", obj.skin_data));
201 try_save(ar, ser20::make_nvp(
"root_node", obj.root_node));
202 try_save(ar, ser20::make_nvp(
"bbox", obj.bbox));
210 try_load(ar, ser20::make_nvp(
"vertex_format", obj.vertex_format));
211 try_load(ar, ser20::make_nvp(
"vertex_count", obj.vertex_count));
212 try_load(ar, ser20::make_nvp(
"vertex_data", obj.vertex_data));
213 try_load(ar, ser20::make_nvp(
"triangle_count", obj.triangle_count));
214 try_load(ar, ser20::make_nvp(
"triangle_data", obj.triangle_data));
215 try_load(ar, ser20::make_nvp(
"material_count", obj.material_count));
216 try_load(ar, ser20::make_nvp(
"submeshes", obj.submeshes));
217 try_load(ar, ser20::make_nvp(
"skin_data", obj.skin_data));
218 try_load(ar, ser20::make_nvp(
"root_node", obj.root_node));
219 try_load(ar, ser20::make_nvp(
"bbox", obj.bbox));
227 std::ofstream stream(absolute_path);
231 try_save(ar, ser20::make_nvp(
"mesh", obj));
237 std::ofstream stream(absolute_path, std::ios::binary);
241 try_save(ar, ser20::make_nvp(
"mesh", obj));
247 std::ifstream stream(absolute_path);
251 try_load(ar, ser20::make_nvp(
"mesh", obj));
257 std::ifstream stream(absolute_path, std::ios::binary);
261 try_load(ar, ser20::make_nvp(
"mesh", obj));
Structure describing how a skinned mesh should be bound to any bones that influence its vertices.
attributes::value_type attribute
std::map< std::string, meta_any > attributes
auto create_oarchive_associative(std::ostream &stream)
BinaryInputArchive iarchive_binary_t
auto create_iarchive_associative(std::istream &stream)
simd::JSONOutputArchive oarchive_associative_t
BinaryOutputArchive oarchive_binary_t
simd::JSONInputArchive iarchive_associative_t
void save_to_file_bin(const std::string &absolute_path, const animation_clip &obj)
void load_from_file(const std::string &absolute_path, animation_clip &obj)
void save_to_file(const std::string &absolute_path, const animation_clip &obj)
void load_from_file_bin(const std::string &absolute_path, animation_clip &obj)
#define SAVE_INSTANTIATE(cls, Archive)
auto try_save(Archive &ar, ser20::NameValuePair< T > &&t, const hpp::source_location &loc=hpp::source_location::current()) -> bool
#define LOAD_INSTANTIATE(cls, Archive)
auto try_load(Archive &ar, ser20::NameValuePair< T > &&t, const hpp::source_location &loc=hpp::source_location::current()) -> bool
Struct used for mesh construction.
Structure describing an individual "piece" of the mesh, often grouped by material,...
Structure describing data for a single triangle in the mesh.
Describes the vertices that are connected to the referenced bone and how much influence it has on the...
Describes how a bone influences a specific vertex.