20 try_save(ar, ser20::make_nvp(
"hash", obj.m_hash));
21 try_save(ar, ser20::make_nvp(
"stride", obj.m_stride));
22 try_save(ar, ser20::make_nvp(
"offset", obj.m_offset));
23 try_save(ar, ser20::make_nvp(
"attributes", obj.m_attributes));
30 try_load(ar, ser20::make_nvp(
"hash", obj.m_hash));
31 try_load(ar, ser20::make_nvp(
"stride", obj.m_stride));
32 try_load(ar, ser20::make_nvp(
"offset", obj.m_offset));
33 try_load(ar, ser20::make_nvp(
"attributes", obj.m_attributes));
44 entt::meta_factory<mesh::info::lod_info>{}
49 .data<nullptr, &mesh::info::lod_info::triangles>(
"triangles"_hs)
55 .data<nullptr, &mesh::info::lod_info::percent>(
"percent"_hs)
65 entt::meta_factory<mesh::info>{}
70 .data<nullptr, &mesh::info::vertices>(
"vertices"_hs)
76 .data<nullptr, &mesh::info::triangles>(
"triangles"_hs)
82 .data<nullptr, &mesh::info::submeshes>(
"submeshes"_hs)
88 .data<nullptr, &mesh::info::data_groups>(
"data_groups"_hs)
94 .data<nullptr, &mesh::info::lods>(
"lods"_hs)
104 entt::meta_factory<mesh>{}
109 .data<nullptr, &mesh::get_info>(
"info"_hs)
115 .data<nullptr, &mesh::get_imported_materials>(
"imported_materials"_hs)
124 try_save(ar, ser20::make_nvp(
"data_group_id", obj.data_group_id));
125 try_save(ar, ser20::make_nvp(
"vertex_start", obj.vertex_start));
126 try_save(ar, ser20::make_nvp(
"vertex_count", obj.vertex_count));
127 try_save(ar, ser20::make_nvp(
"face_start", obj.face_start));
128 try_save(ar, ser20::make_nvp(
"face_count", obj.face_count));
129 try_save(ar, ser20::make_nvp(
"bbox", obj.bbox));
130 try_save(ar, ser20::make_nvp(
"skinned", obj.skinned));
131 try_save(ar, ser20::make_nvp(
"stable_id", obj.stable_id));
138 try_load(ar, ser20::make_nvp(
"data_group_id", obj.data_group_id));
139 try_load(ar, ser20::make_nvp(
"vertex_start", obj.vertex_start));
140 try_load(ar, ser20::make_nvp(
"vertex_count", obj.vertex_count));
141 try_load(ar, ser20::make_nvp(
"face_start", obj.face_start));
142 try_load(ar, ser20::make_nvp(
"face_count", obj.face_count));
143 try_load(ar, ser20::make_nvp(
"bbox", obj.bbox));
144 try_load(ar, ser20::make_nvp(
"skinned", obj.skinned));
145 try_load(ar, ser20::make_nvp(
"stable_id", obj.stable_id));
152 try_save(ar, ser20::make_nvp(
"data_group_id", obj.data_group_id));
153 try_save(ar, ser20::make_nvp(
"indices", obj.indices));
154 try_save(ar, ser20::make_nvp(
"flags", obj.flags));
161 try_load(ar, ser20::make_nvp(
"data_group_id", obj.data_group_id));
162 try_load(ar, ser20::make_nvp(
"indices", obj.indices));
163 try_load(ar, ser20::make_nvp(
"flags", obj.flags));
170 try_save(ar, ser20::make_nvp(
"vertex_index", obj.vertex_index));
171 try_save(ar, ser20::make_nvp(
"weight", obj.weight));
178 try_load(ar, ser20::make_nvp(
"vertex_index", obj.vertex_index));
179 try_load(ar, ser20::make_nvp(
"weight", obj.weight));
186 try_save(ar, ser20::make_nvp(
"bone_id", obj.bone_id));
187 try_save(ar, ser20::make_nvp(
"bind_pose_transform", obj.bind_pose_transform));
188 try_save(ar, ser20::make_nvp(
"influences", obj.influences));
189 try_save(ar, ser20::make_nvp(
"bounds", obj.bounds));
196 try_load(ar, ser20::make_nvp(
"bone_id", obj.bone_id));
197 try_load(ar, ser20::make_nvp(
"bind_pose_transform", obj.bind_pose_transform));
198 try_load(ar, ser20::make_nvp(
"influences", obj.influences));
199 try_load(ar, ser20::make_nvp(
"bounds", obj.bounds));
206 try_save(ar, ser20::make_nvp(
"bones", obj.get_bones()));
213 try_load(ar, ser20::make_nvp(
"bones", obj.get_bones()));
220 try_save(ar, ser20::make_nvp(
"name", obj.name));
221 try_save(ar, ser20::make_nvp(
"local_transform", obj.local_transform));
222 try_save(ar, ser20::make_nvp(
"children", obj.children));
223 try_save(ar, ser20::make_nvp(
"submeshes", obj.submeshes));
224 try_save(ar, ser20::make_nvp(
"index", obj.index));
231 try_load(ar, ser20::make_nvp(
"name", obj.name));
232 try_load(ar, ser20::make_nvp(
"local_transform", obj.local_transform));
233 try_load(ar, ser20::make_nvp(
"children", obj.children));
234 try_load(ar, ser20::make_nvp(
"submeshes", obj.submeshes));
235 try_load(ar, ser20::make_nvp(
"index", obj.index));
242 try_save(ar, ser20::make_nvp(
"index_data", obj.index_data));
243 try_save(ar, ser20::make_nvp(
"face_count", obj.face_count));
244 try_save(ar, ser20::make_nvp(
"submeshes", obj.submeshes));
245 try_save(ar, ser20::make_nvp(
"simplification_error", obj.simplification_error));
252 try_load(ar, ser20::make_nvp(
"index_data", obj.index_data));
253 try_load(ar, ser20::make_nvp(
"face_count", obj.face_count));
254 try_load(ar, ser20::make_nvp(
"submeshes", obj.submeshes));
255 try_load(ar, ser20::make_nvp(
"simplification_error", obj.simplification_error));
262 try_save(ar, ser20::make_nvp(
"vertex_format", obj.vertex_format));
263 try_save(ar, ser20::make_nvp(
"vertex_count", obj.vertex_count));
264 try_save(ar, ser20::make_nvp(
"vertex_data", obj.vertex_data));
265 try_save(ar, ser20::make_nvp(
"triangle_count", obj.triangle_count));
266 try_save(ar, ser20::make_nvp(
"triangle_data", obj.triangle_data));
267 try_save(ar, ser20::make_nvp(
"material_count", obj.material_count));
268 try_save(ar, ser20::make_nvp(
"submeshes", obj.submeshes));
269 try_save(ar, ser20::make_nvp(
"skin_data", obj.skin_data));
270 try_save(ar, ser20::make_nvp(
"root_node", obj.root_node));
271 try_save(ar, ser20::make_nvp(
"bbox", obj.bbox));
272 try_save(ar, ser20::make_nvp(
"skin_is_prepared", obj.skin_is_prepared));
273 try_save(ar, ser20::make_nvp(
"bone_palette_bones", obj.bone_palette_bones));
274 try_save(ar, ser20::make_nvp(
"lods", obj.lods));
275 try_save(ar, ser20::make_nvp(
"default_material_uids", obj.default_material_uids));
284 try_load(ar, ser20::make_nvp(
"vertex_format", obj.vertex_format));
285 try_load(ar, ser20::make_nvp(
"vertex_count", obj.vertex_count));
286 try_load(ar, ser20::make_nvp(
"vertex_data", obj.vertex_data));
287 try_load(ar, ser20::make_nvp(
"triangle_count", obj.triangle_count));
288 try_load(ar, ser20::make_nvp(
"triangle_data", obj.triangle_data));
289 try_load(ar, ser20::make_nvp(
"material_count", obj.material_count));
290 try_load(ar, ser20::make_nvp(
"submeshes", obj.submeshes));
291 try_load(ar, ser20::make_nvp(
"skin_data", obj.skin_data));
292 try_load(ar, ser20::make_nvp(
"root_node", obj.root_node));
293 try_load(ar, ser20::make_nvp(
"bbox", obj.bbox));
294 try_load(ar, ser20::make_nvp(
"skin_is_prepared", obj.skin_is_prepared));
295 try_load(ar, ser20::make_nvp(
"bone_palette_bones", obj.bone_palette_bones));
296 try_load(ar, ser20::make_nvp(
"lods", obj.lods));
297 try_load(ar, ser20::make_nvp(
"default_material_uids", obj.default_material_uids));
306 std::ofstream stream(absolute_path);
310 try_save(ar, ser20::make_nvp(
"mesh", obj));
316 std::ofstream stream(absolute_path, std::ios::binary);
320 try_save(ar, ser20::make_nvp(
"mesh", obj));
334 try_load(ar, ser20::make_nvp(
"mesh", obj));
345 try_load(ar, ser20::make_nvp(
"mesh", obj));
stdio-backed input stream. Accepts std::ios open flags (e.g. std::ios::binary) when opening a
Main class representing a 3D mesh with support for different LODs, submeshes, and skinning.
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
< Structure describing LOD level information. Total number of vertices.
Struct used for mesh construction.
Structure describing a LOD level in load_data (for serialization).
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.