[Bf-blender-cvs] [b04ba2e8eb6] soc-2021-adaptive-cloth: adaptive_cloth: AdaptiveMesh: FaceData: initial, store uv area

ishbosamiya noreply at git.blender.org
Mon Sep 6 11:47:40 CEST 2021


Commit: b04ba2e8eb667cba701c90496fc991a0ec22ec77
Author: ishbosamiya
Date:   Thu Sep 2 20:06:30 2021 +0530
Branches: soc-2021-adaptive-cloth
https://developer.blender.org/rBb04ba2e8eb667cba701c90496fc991a0ec22ec77

adaptive_cloth: AdaptiveMesh: FaceData: initial, store uv area

===================================================================

M	source/blender/blenkernel/intern/cloth_remesh.cc

===================================================================

diff --git a/source/blender/blenkernel/intern/cloth_remesh.cc b/source/blender/blenkernel/intern/cloth_remesh.cc
index 537ba7abce3..4b52fce3011 100644
--- a/source/blender/blenkernel/intern/cloth_remesh.cc
+++ b/source/blender/blenkernel/intern/cloth_remesh.cc
@@ -342,15 +342,33 @@ class EdgeData {
   }
 };
 
+class FaceData {
+  float uv_area;
+
+ public:
+  FaceData(float uv_area) : uv_area(uv_area)
+  {
+  }
+
+  const auto &get_uv_area() const
+  {
+    return this->uv_area;
+  }
+
+  void set_uv_area(float uv_area)
+  {
+    this->uv_area = uv_area;
+  }
+};
+
 template<typename T> using AdaptiveNode = Node<NodeData<T>>;
 using AdaptiveVert = Vert<VertData>;
 using AdaptiveEdge = Edge<EdgeData>;
-using AdaptiveFace = Face<internal::EmptyExtraData>;
-template<typename T>
-using AdaptiveMeshDiff = MeshDiff<NodeData<T>, VertData, EdgeData, internal::EmptyExtraData>;
+using AdaptiveFace = Face<FaceData>;
+template<typename T> using AdaptiveMeshDiff = MeshDiff<NodeData<T>, VertData, EdgeData, FaceData>;
 
 template<typename END>
-class AdaptiveMesh : public Mesh<NodeData<END>, VertData, EdgeData, internal::EmptyExtraData> {
+class AdaptiveMesh : public Mesh<NodeData<END>, VertData, EdgeData, FaceData> {
  public:
   std::string serialize() const
   {
@@ -1406,7 +1424,7 @@ class AdaptiveMesh : public Mesh<NodeData<END>, VertData, EdgeData, internal::Em
    * Compute extra information for all the elements added (stored
    * within mesh_diff) */
   void compute_info_adaptivemesh(
-      const MeshDiff<NodeData<END>, VertData, EdgeData, internal::EmptyExtraData> &mesh_diff)
+      const MeshDiff<NodeData<END>, VertData, EdgeData, FaceData> &mesh_diff)
   {
     for (const auto &node_index : mesh_diff.get_added_nodes()) {
       auto &node = this->get_checked_node(node_index);
@@ -1509,7 +1527,7 @@ class AdaptiveMesh : public Mesh<NodeData<END>, VertData, EdgeData, internal::Em
 template<typename END> using AdaptiveNode = Node<NodeData<END>>;
 using AdaptiveVert = Vert<VertData>;
 using AdaptiveEdge = Edge<EdgeData>;
-using AdaptiveFace = Face<EmptyExtraData>;
+using AdaptiveFace = Face<FaceData>;
 using EmptyAdaptiveMesh = AdaptiveMesh<EmptyExtraData>;
 using ClothAdaptiveMesh = AdaptiveMesh<ClothNodeData>;
 
@@ -1651,6 +1669,20 @@ MSGPACK_API_VERSION_NAMESPACE(MSGPACK_DEFAULT_API_NS)
     }
   };
 
+  template<> struct pack<blender::bke::internal::FaceData> {
+    template<typename Stream>
+    msgpack::packer<Stream> &operator()(msgpack::packer<Stream> &o,
+                                        const blender::bke::internal::FaceData &v) const
+    {
+      o.pack_array(2);
+
+      o.pack(std::string("face_data"));
+      o.pack(v.get_uv_area());
+
+      return o;
+    }
+  };
+
   template<> struct pack<blender::float2x2> {
     template<typename Stream>
     msgpack::packer<Stream> &operator()(msgpack::packer<Stream> &o,



More information about the Bf-blender-cvs mailing list