[Bf-blender-cvs] [0772a217b93] soc-2021-adaptive-cloth: msgpack: adaptive_cloth: Mesh: packer implementation
ishbosamiya
noreply at git.blender.org
Wed Aug 4 11:29:32 CEST 2021
Commit: 0772a217b93d6c88fee8673b68b3ab583076022f
Author: ishbosamiya
Date: Mon Jul 26 23:59:21 2021 +0530
Branches: soc-2021-adaptive-cloth
https://developer.blender.org/rB0772a217b93d6c88fee8673b68b3ab583076022f
msgpack: adaptive_cloth: Mesh: packer implementation
===================================================================
M source/blender/blenkernel/BKE_cloth_remesh.hh
===================================================================
diff --git a/source/blender/blenkernel/BKE_cloth_remesh.hh b/source/blender/blenkernel/BKE_cloth_remesh.hh
index 3cfc21b4db4..632d831e1f9 100644
--- a/source/blender/blenkernel/BKE_cloth_remesh.hh
+++ b/source/blender/blenkernel/BKE_cloth_remesh.hh
@@ -2912,4 +2912,70 @@ Mesh *__temp_empty_adaptive_remesh(const TempEmptyAdaptiveRemeshParams ¶ms,
} /* namespace blender::bke */
+namespace msgpack {
+MSGPACK_API_VERSION_NAMESPACE(MSGPACK_DEFAULT_API_NS)
+{
+ namespace adaptor {
+
+ template<typename END, typename EVD, typename EED, typename EFD>
+ struct pack<blender::bke::internal::Mesh<END, EVD, EED, EFD>> {
+ template<typename Stream>
+ msgpack::packer<Stream> &operator()(
+ msgpack::packer<Stream> &o,
+ const blender::bke::internal::Mesh<END, EVD, EED, EFD> &mesh) const
+ {
+ blender::Map<blender::bke::internal::NodeIndex, uint64_t> node_pos_index_map;
+ auto node_pos = 0;
+ for (const auto &node : mesh.get_nodes()) {
+ auto self_index = node.get_self_index();
+ node_pos_index_map.add_new(self_index, node_pos);
+ node_pos++;
+ }
+
+ blender::Map<blender::bke::internal::VertIndex, uint64_t> vert_pos_index_map;
+ auto vert_pos = 0;
+ for (const auto &vert : mesh.get_verts()) {
+ auto self_index = vert.get_self_index();
+ vert_pos_index_map.add_new(self_index, vert_pos);
+ vert_pos++;
+ }
+
+ blender::Map<blender::bke::internal::EdgeIndex, uint64_t> edge_pos_index_map;
+ auto edge_pos = 0;
+ for (const auto &edge : mesh.get_edges()) {
+ auto self_index = edge.get_self_index();
+ edge_pos_index_map.add_new(self_index, edge_pos);
+ edge_pos++;
+ }
+
+ blender::Map<blender::bke::internal::FaceIndex, uint64_t> face_pos_index_map;
+ auto face_pos = 0;
+ for (const auto &face : mesh.get_faces()) {
+ auto self_index = face.get_self_index();
+ face_pos_index_map.add_new(self_index, face_pos);
+ face_pos++;
+ }
+
+ /* Need to store the arenas and the corresponding mappings
+ * between the arena index and positional index of that element */
+ o.pack_array(8);
+
+ o.pack(mesh.get_nodes());
+ o.pack(mesh.get_verts());
+ o.pack(mesh.get_edges());
+ o.pack(mesh.get_faces());
+
+ o.pack(node_pos_index_map);
+ o.pack(vert_pos_index_map);
+ o.pack(edge_pos_index_map);
+ o.pack(face_pos_index_map);
+
+ return o;
+ }
+ };
+
+ } // namespace adaptor
+} // MSGPACK_API_VERSION_NAMESPACE(MSGPACK_DEFAULT_API_NS)
+} // namespace msgpack
+
#endif /* __cplusplus */
More information about the Bf-blender-cvs
mailing list