[Bf-blender-cvs] [87644f9fda8] refactor-mesh-remove-pointers: Progress

Hans Goudey noreply at git.blender.org
Wed Jul 20 22:56:43 CEST 2022


Commit: 87644f9fda8e22218f23574e4abc2ba887ca3f15
Author: Hans Goudey
Date:   Wed Jul 20 15:56:35 2022 -0500
Branches: refactor-mesh-remove-pointers
https://developer.blender.org/rB87644f9fda8e22218f23574e4abc2ba887ca3f15

Progress

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

M	source/blender/blenkernel/BKE_cloth.h
M	source/blender/blenkernel/BKE_mesh.h
M	source/blender/blenkernel/intern/armature_deform.c
M	source/blender/blenkernel/intern/bvhutils.cc
M	source/blender/blenkernel/intern/data_transfer.c
M	source/blender/blenkernel/intern/mesh.cc
M	source/blender/blenkernel/intern/mesh_evaluate.cc
M	source/blender/blenloader/intern/versioning_250.c
M	source/blender/blenloader/intern/versioning_290.c
M	source/blender/editors/armature/armature_skinning.c
M	source/blender/editors/armature/meshlaplacian.c
M	source/blender/editors/curves/intern/curves_ops.cc
M	source/blender/editors/mesh/mesh_data.cc
M	source/blender/editors/mesh/mesh_mirror.c
M	source/blender/editors/mesh/meshtools.cc
M	source/blender/editors/object/object_bake_api.c
M	source/blender/editors/object/object_modifier.cc
M	source/blender/editors/object/object_remesh.cc
M	source/blender/editors/object/object_vgroup.c
M	source/blender/editors/physics/particle_object.c
M	source/blender/editors/sculpt_paint/paint_utils.c
M	source/blender/editors/sculpt_paint/paint_vertex.cc
M	source/blender/editors/sculpt_paint/paint_vertex_color_ops.cc
M	source/blender/editors/sculpt_paint/paint_vertex_weight_ops.c
M	source/blender/editors/sculpt_paint/paint_vertex_weight_utils.c
M	source/blender/editors/space_view3d/drawobject.c
M	source/blender/editors/space_view3d/view3d_iterators.c
M	source/blender/io/alembic/intern/abc_customdata.cc
M	source/blender/makesdna/DNA_mesh_types.h
M	source/blender/makesrna/intern/rna_mesh.c
M	source/blender/makesrna/intern/rna_mesh_api.c
M	source/blender/makesrna/intern/rna_particle.c

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

diff --git a/source/blender/blenkernel/BKE_cloth.h b/source/blender/blenkernel/BKE_cloth.h
index 6af38b14ea4..f5ffd1190b1 100644
--- a/source/blender/blenkernel/BKE_cloth.h
+++ b/source/blender/blenkernel/BKE_cloth.h
@@ -79,7 +79,7 @@ typedef struct Cloth {
   int last_frame;
   float initial_mesh_volume;      /* Initial volume of the mesh. Used for pressure */
   float average_acceleration[3];  /* Moving average of overall acceleration. */
-  struct MEdge *edges;            /* Used for hair collisions. */
+  const struct MEdge *edges;      /* Used for hair collisions. */
   struct EdgeSet *sew_edge_graph; /* Sewing edges represented using a GHash */
 } Cloth;
 
diff --git a/source/blender/blenkernel/BKE_mesh.h b/source/blender/blenkernel/BKE_mesh.h
index 63272b8d968..bd1ee9fb443 100644
--- a/source/blender/blenkernel/BKE_mesh.h
+++ b/source/blender/blenkernel/BKE_mesh.h
@@ -800,19 +800,21 @@ void BKE_mesh_mdisp_flip(struct MDisps *md, bool use_loop_mdisp_flip);
  * \param mloop: the full loops array.
  * \param ldata: the loops custom data.
  */
-void BKE_mesh_polygon_flip_ex(struct MPoly *mpoly,
+void BKE_mesh_polygon_flip_ex(const struct MPoly *mpoly,
                               struct MLoop *mloop,
                               struct CustomData *ldata,
                               float (*lnors)[3],
                               struct MDisps *mdisp,
                               bool use_loop_mdisp_flip);
-void BKE_mesh_polygon_flip(struct MPoly *mpoly, struct MLoop *mloop, struct CustomData *ldata);
+void BKE_mesh_polygon_flip(const struct MPoly *mpoly,
+                           struct MLoop *mloop,
+                           struct CustomData *ldata);
 /**
  * Flip (invert winding of) all polygons (used to inverse their normals).
  *
  * \note Invalidates tessellation, caller must handle that.
  */
-void BKE_mesh_polygons_flip(struct MPoly *mpoly,
+void BKE_mesh_polygons_flip(const struct MPoly *mpoly,
                             struct MLoop *mloop,
                             struct CustomData *ldata,
                             int totpoly);
diff --git a/source/blender/blenkernel/intern/armature_deform.c b/source/blender/blenkernel/intern/armature_deform.c
index 0769049e9a9..c33d3d16aa6 100644
--- a/source/blender/blenkernel/intern/armature_deform.c
+++ b/source/blender/blenkernel/intern/armature_deform.c
@@ -35,6 +35,7 @@
 #include "BKE_deform.h"
 #include "BKE_editmesh.h"
 #include "BKE_lattice.h"
+#include "BKE_mesh.h"
 
 #include "DEG_depsgraph_build.h"
 
@@ -407,8 +408,9 @@ static void armature_vert_task(void *__restrict userdata,
   if (data->use_dverts || data->armature_def_nr != -1) {
     if (data->me_target) {
       BLI_assert(i < data->me_target->totvert);
-      if (data->me_target->dvert != NULL) {
-        dvert = data->me_target->dvert + i;
+      const MDeformVert *dverts = BKE_mesh_deform_verts(data->me_target);
+      if (dverts != NULL) {
+        dvert = dverts + i;
       }
       else {
         dvert = NULL;
@@ -492,8 +494,8 @@ static void armature_deform_coords_impl(const Object *ob_arm,
 
     if (ob_target->type == OB_MESH) {
       if (em_target == NULL) {
-        Mesh *me = ob_target->data;
-        dverts = me->dvert;
+        const Mesh *me = ob_target->data;
+        dverts = BKE_mesh_deform_verts(me);
         if (dverts) {
           dverts_len = me->totvert;
         }
@@ -521,7 +523,7 @@ static void armature_deform_coords_impl(const Object *ob_arm,
         use_dverts = (cd_dvert_offset != -1);
       }
       else if (me_target) {
-        use_dverts = (me_target->dvert != NULL);
+        use_dverts = (BKE_mesh_deform_verts(me_target) != NULL);
       }
       else if (dverts) {
         use_dverts = true;
diff --git a/source/blender/blenkernel/intern/bvhutils.cc b/source/blender/blenkernel/intern/bvhutils.cc
index 3b524aff6ee..4d861b1de28 100644
--- a/source/blender/blenkernel/intern/bvhutils.cc
+++ b/source/blender/blenkernel/intern/bvhutils.cc
@@ -1303,8 +1303,9 @@ BVHTree *BKE_bvhtree_from_mesh_get(struct BVHTreeFromMesh *data,
 
     case BVHTREE_FROM_FACES:
       BLI_assert(!(mesh->totface == 0 && mesh->totpoly != 0));
+      const MFace *mfaces = (const MFace *)CustomData_get_layer(&mesh->fdata, CD_MFACE);
       data->tree = bvhtree_from_mesh_faces_create_tree(
-          0.0f, tree_type, 6, vertices.data(), mesh->mface, mesh->totface, nullptr, -1);
+          0.0f, tree_type, 6, vertices.data(), mfaces, mesh->totface, nullptr, -1);
       break;
 
     case BVHTREE_FROM_LOOPTRI_NO_HIDDEN:
diff --git a/source/blender/blenkernel/intern/data_transfer.c b/source/blender/blenkernel/intern/data_transfer.c
index eeff5587b4e..a6aae4e84bf 100644
--- a/source/blender/blenkernel/intern/data_transfer.c
+++ b/source/blender/blenkernel/intern/data_transfer.c
@@ -1033,7 +1033,7 @@ static bool data_transfer_layersmapping_generate(ListBase *r_map,
                                              mix_factor,
                                              mix_weights,
                                              BKE_mesh_edges(me_src),
-                                             BKE_mesh_edges(me_dst),
+                                             BKE_mesh_edges_for_write(me_dst),
                                              me_src->totedge,
                                              me_dst->totedge,
                                              elem_size,
@@ -1065,7 +1065,7 @@ static bool data_transfer_layersmapping_generate(ListBase *r_map,
                                              mix_factor,
                                              mix_weights,
                                              BKE_mesh_edges(me_src),
-                                             BKE_mesh_edges(me_dst),
+                                             BKE_mesh_edges_for_write(me_dst),
                                              me_src->totedge,
                                              me_dst->totedge,
                                              elem_size,
@@ -1183,7 +1183,7 @@ static bool data_transfer_layersmapping_generate(ListBase *r_map,
                                            mix_factor,
                                            mix_weights,
                                            BKE_mesh_polygons(me_src),
-                                           BKE_mesh_polygons(me_dst),
+                                           BKE_mesh_polygons_for_write(me_dst),
                                            me_src->totpoly,
                                            me_dst->totpoly,
                                            elem_size,
diff --git a/source/blender/blenkernel/intern/mesh.cc b/source/blender/blenkernel/intern/mesh.cc
index e921b18d3a8..f5f46c878e0 100644
--- a/source/blender/blenkernel/intern/mesh.cc
+++ b/source/blender/blenkernel/intern/mesh.cc
@@ -278,6 +278,9 @@ static void mesh_blend_read_data(BlendDataReader *reader, ID *id)
   BLO_read_data_address(reader, &mesh->mface);
   BLO_read_data_address(reader, &mesh->tface);
   BLO_read_data_address(reader, &mesh->mtface);
+  /* Read mcol for compatibility with old files. */
+  BLO_read_data_address(reader, &mesh->mcol);
+
   BLO_read_data_address(reader, &mesh->mloopuv);
   BLO_read_data_address(reader, &mesh->mselect);
 
@@ -927,8 +930,6 @@ static void mesh_tessface_clear_intern(Mesh *mesh, int free_customdata)
     CustomData_reset(&mesh->fdata);
   }
 
-  mesh->mface = nullptr;
-  mesh->mtface = nullptr;
   mesh->totface = 0;
 }
 
@@ -1378,9 +1379,9 @@ void BKE_mesh_material_index_remove(Mesh *me, short index)
     }
   }
 
-  MFace *mf;
+  MFace *mf = (MFace *)CustomData_get_layer(&me->fdata, CD_MFACE);
   int i;
-  for (mf = me->mface, i = 0; i < me->totface; i++, mf++) {
+  for (i = 0; i < me->totface; i++, mf++) {
     if (mf->mat_nr && mf->mat_nr >= index) {
       mf->mat_nr--;
     }
@@ -1396,9 +1397,9 @@ bool BKE_mesh_material_index_used(Mesh *me, short index)
     }
   }
 
-  MFace *mf;
+  MFace *mf = (MFace *)CustomData_get_layer(&me->fdata, CD_MFACE);
   int i;
-  for (mf = me->mface, i = 0; i < me->totface; i++, mf++) {
+  for (i = 0; i < me->totface; i++, mf++) {
     if (mf->mat_nr == index) {
       return true;
     }
@@ -1414,9 +1415,9 @@ void BKE_mesh_material_index_clear(Mesh *me)
     poly.mat_nr = 0;
   }
 
-  MFace *mf;
+  MFace *mf = (MFace *)CustomData_get_layer(&me->fdata, CD_MFACE);
   int i;
-  for (mf = me->mface, i = 0; i < me->totface; i++, mf++) {
+  for (i = 0; i < me->totface; i++, mf++) {
     mf->mat_nr = 0;
   }
 }
diff --git a/source/blender/blenkernel/intern/mesh_evaluate.cc b/source/blender/blenkernel/intern/mesh_evaluate.cc
index 37b5e3179f0..153f70a6342 100644
--- a/source/blender/blenkernel/intern/mesh_evaluate.cc
+++ b/source/blender/blenkernel/intern/mesh_evaluate.cc
@@ -667,7 +667,7 @@ void BKE_mesh_mdisp_flip(MDisps *md, const bool use_loop_mdisp_flip)
   }
 }
 
-void BKE_mesh_polygon_flip_ex(MPoly *mpoly,
+void BKE_mesh_polygon_flip_ex(const MPoly *mpoly,
                               MLoop *mloop,
                               CustomData *ldata,
                               float (*lnors)[3],
@@ -710,16 +710,16 @@ void BKE_mesh_polygon_flip_ex(MPoly *mpoly,
   }
 }
 
-void BKE_mesh_polygon_flip(MPoly *mpoly, MLoop *mloop, CustomData *ldata)
+void BKE_mesh_polygon_flip(const MPoly *mpoly, MLoop *mloop, CustomData *ldata)
 {
   MDisps *mdisp = (MDisps *)CustomData_get_layer(ldata, CD_MDISPS);
   BKE_mesh_polygon_flip_ex(mpoly, mloop, ldata, nullptr, mdisp, true);
 }
 
-void BKE_mesh_polygons_flip(MPoly *mpoly, MLoop *mloop, CustomData *ldata, int totpoly)
+void BKE_mesh_polygons_flip(const MPoly *mpoly, MLoop *mloop, CustomData *ldata, int totpoly)
 {
   MDisps *mdisp = (MDisps *)CustomData_get_layer(ldata, CD_MDISPS);
-  MPoly *mp;
+  const MPoly *mp;
   int i;
 
   for (mp = mpoly, i = 0; i < totpoly; mp++, i++) {
diff --git a/source/blender/blenloader/intern/versioning_250.c b/source/blender/blenloader/intern/versioning_250.c
index ffa224ea9e0..df3e983a6c0 100644
--- a/source/blender/blenloader/intern/versioning_250.c
+++ b/source/blender/blenloader/intern/versioning_250.c
@@ -54,6 +54,7 @@
 #include "BKE_global.h" /* for G */
 #include "BKE_lib_id.h"
 #include "

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list