[Bf-blender-cvs] [b04f0c47e10] soc-2021-adaptive-cloth: msgpack: adaptive_cloth: internal: packer implementation
ishbosamiya
noreply at git.blender.org
Wed Aug 4 11:29:32 CEST 2021
Commit: b04f0c47e103d29846a59f191c8a28f659602626
Author: ishbosamiya
Date: Mon Jul 26 23:57:59 2021 +0530
Branches: soc-2021-adaptive-cloth
https://developer.blender.org/rBb04f0c47e103d29846a59f191c8a28f659602626
msgpack: adaptive_cloth: internal: packer implementation
===================================================================
M source/blender/blenkernel/intern/cloth_remesh.cc
M source/blender/modifiers/CMakeLists.txt
===================================================================
diff --git a/source/blender/blenkernel/intern/cloth_remesh.cc b/source/blender/blenkernel/intern/cloth_remesh.cc
index 96f996c8959..1ba948b33fa 100644
--- a/source/blender/blenkernel/intern/cloth_remesh.cc
+++ b/source/blender/blenkernel/intern/cloth_remesh.cc
@@ -40,8 +40,6 @@
#include <functional>
#include <limits>
-#include "msgpack.hpp"
-
namespace blender::bke::internal {
class ClothNodeData;
@@ -560,6 +558,150 @@ class AdaptiveMesh : public Mesh<NodeData<END>, VertData, EdgeData, internal::Em
} // namespace blender::bke::internal
+namespace msgpack {
+MSGPACK_API_VERSION_NAMESPACE(MSGPACK_DEFAULT_API_NS)
+{
+ namespace adaptor {
+
+ template<> struct pack<float[3]> {
+ template<typename Stream>
+ msgpack::packer<Stream> &operator()(msgpack::packer<Stream> &o, const float (&v)[3]) const
+ {
+ o.pack_array(3);
+
+ o.pack(v[0]);
+ o.pack(v[1]);
+ o.pack(v[2]);
+
+ return o;
+ }
+ };
+
+ template<> struct pack<ClothVertex> {
+ template<typename Stream>
+ msgpack::packer<Stream> &operator()(msgpack::packer<Stream> &o, const ClothVertex &v) const
+ {
+ /* This check is to ensure that any new element added to
+ * ClothVertex is also updated here. After adding the
+ * interpolated value for the element (if needed), set the
+ * correct sizeof(ClothVertex) in the assertion below. */
+ BLI_assert(sizeof(ClothVertex) == 168);
+
+ o.pack_array(22);
+
+ o.pack(v.flags);
+ o.pack(v.v);
+ o.pack(v.xconst);
+ o.pack(v.x);
+ o.pack(v.xold);
+ o.pack(v.tx);
+ o.pack(v.txold);
+ o.pack(v.tv);
+ o.pack(v.mass);
+ o.pack(v.goal);
+ o.pack(v.impulse);
+ o.pack(v.xrest);
+ o.pack(v.dcvel);
+ o.pack(v.impulse_count);
+ o.pack(v.avg_spring_len);
+ o.pack(v.struct_stiff);
+ o.pack(v.bend_stiff);
+ o.pack(v.shear_stiff);
+ o.pack(v.spring_count);
+ o.pack(v.shrink_factor);
+ o.pack(v.internal_stiff);
+ o.pack(v.pressure_factor);
+
+ return o;
+ }
+ };
+
+ template<typename T> struct pack<blender::bke::internal::NodeData<T>> {
+ template<typename Stream>
+ msgpack::packer<Stream> &operator()(msgpack::packer<Stream> &o,
+ const blender::bke::internal::NodeData<T> &v) const
+ {
+ o.pack_array(1);
+
+ o.pack(v.get_extra_data());
+
+ return o;
+ }
+ };
+
+ template<> struct pack<blender::bke::internal::ClothNodeData> {
+ template<typename Stream>
+ msgpack::packer<Stream> &operator()(msgpack::packer<Stream> &o,
+ const blender::bke::internal::ClothNodeData &v) const
+ {
+ o.pack_array(1);
+
+ o.pack(v.get_cloth_node_data());
+
+ return o;
+ }
+ };
+
+ template<> struct pack<blender::bke::internal::VertData> {
+ template<typename Stream>
+ msgpack::packer<Stream> &operator()(msgpack::packer<Stream> &o,
+ const blender::bke::internal::VertData &v) const
+ {
+ o.pack_array(2);
+
+ o.pack(v.get_sizing());
+ o.pack(v.get_flag());
+
+ return o;
+ }
+ };
+
+ template<> struct pack<blender::bke::internal::EdgeData> {
+ template<typename Stream>
+ msgpack::packer<Stream> &operator()(msgpack::packer<Stream> &o,
+ const blender::bke::internal::EdgeData &v) const
+ {
+ o.pack_array(1);
+
+ o.pack(v.get_size());
+
+ return o;
+ }
+ };
+
+ template<> struct pack<blender::float2x2> {
+ template<typename Stream>
+ msgpack::packer<Stream> &operator()(msgpack::packer<Stream> &o,
+ const blender::float2x2 &v) const
+ {
+ o.pack_array(4);
+
+ o.pack(v.ptr()[0][0]);
+ o.pack(v.ptr()[0][1]);
+ o.pack(v.ptr()[1][0]);
+ o.pack(v.ptr()[1][1]);
+
+ return o;
+ }
+ };
+
+ template<> struct pack<blender::bke::internal::Sizing> {
+ template<typename Stream>
+ msgpack::packer<Stream> &operator()(msgpack::packer<Stream> &o,
+ const blender::bke::internal::Sizing &v) const
+ {
+ o.pack_array(1);
+
+ o.pack(v.get_m());
+
+ return o;
+ }
+ };
+
+ } // namespace adaptor
+} // MSGPACK_API_VERSION_NAMESPACE(MSGPACK_DEFAULT_API_NS)
+} // namespace msgpack
+
namespace blender::bke {
template<typename END, typename ExtraData>
diff --git a/source/blender/modifiers/CMakeLists.txt b/source/blender/modifiers/CMakeLists.txt
index 2b7c895f77b..ee3da9d9506 100644
--- a/source/blender/modifiers/CMakeLists.txt
+++ b/source/blender/modifiers/CMakeLists.txt
@@ -37,6 +37,7 @@ set(INC
../windowmanager
../../../intern/eigen
../../../intern/guardedalloc
+ ../../../extern/msgpack/include
# dna_type_offsets.h in BLO_read_write.h
${CMAKE_BINARY_DIR}/source/blender/makesdna/intern
More information about the Bf-blender-cvs
mailing list