[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 &params,
 
 } /* 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