Commit: c111eb0e9927ecfafd1173fc31dac4f04389e31e
Author: Bastien Montagne
Date:   Thu Jun 21 19:05:10 2018 +0200
Branches: blender2.8
https://developer.blender.org/rBc111eb0e9927ecfafd1173fc31dac4f04389e31e

Cleanup: get rid of dual DM/Mesh versions of mirror topology code.

Easy to switch to only use (evaluated) mesh instead!

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

M       source/blender/editors/include/ED_mesh.h
M       source/blender/editors/mesh/editmesh_utils.c
M       source/blender/editors/mesh/mesh_mirror.c
M       source/blender/editors/mesh/meshtools.c
M       source/blender/editors/physics/particle_edit.c

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

diff --git a/source/blender/editors/include/ED_mesh.h 
b/source/blender/editors/include/ED_mesh.h
index a9c9e8c0fbd..32504db6498 100644
--- a/source/blender/editors/include/ED_mesh.h
+++ b/source/blender/editors/include/ED_mesh.h
@@ -225,14 +225,9 @@ typedef struct MirrTopoStore_t {
 } MirrTopoStore_t;
 
 bool ED_mesh_mirrtopo_recalc_check(
-        struct Mesh *me, struct DerivedMesh *dm, MirrTopoStore_t 
*mesh_topo_store);
-bool ED_mesh_mirrtopo_recalc_check__real_mesh(
-        struct Mesh *me, struct Mesh *dm, MirrTopoStore_t *mesh_topo_store);
+        struct Mesh *me, struct Mesh *me_eval, MirrTopoStore_t 
*mesh_topo_store);
 void ED_mesh_mirrtopo_init(
-        struct Mesh *me, struct DerivedMesh *dm, MirrTopoStore_t 
*mesh_topo_store,
-        const bool skip_em_vert_array_init);
-void ED_mesh_mirrtopo_init__real_mesh(
-        struct Mesh *me, struct Mesh *dm, MirrTopoStore_t *mesh_topo_store,
+        struct Mesh *me, struct Mesh *me_eval, MirrTopoStore_t 
*mesh_topo_store,
         const bool skip_em_vert_array_init);
 void ED_mesh_mirrtopo_free(MirrTopoStore_t *mesh_topo_store);
 
@@ -322,22 +317,17 @@ int         join_mesh_shapes_exec(struct bContext *C, 
struct wmOperator *op);
 
 /* mirror lookup api */
 int ED_mesh_mirror_spatial_table(
-        struct Object *ob, struct BMEditMesh *em, struct DerivedMesh *dm, 
const float co[3], char mode);
-int ED_mesh_mirror_spatial_table__real_mesh(
-        struct Object *ob, struct BMEditMesh *em, struct Mesh *mesh, const 
float co[3], char mode);
-int  ED_mesh_mirror_topo_table(struct Object *ob, struct DerivedMesh *dm, char 
mode);
-int ED_mesh_mirror_topo_table__real_mesh(struct Object *ob, struct Mesh *mesh, 
char mode);
+        struct Object *ob, struct BMEditMesh *em, struct Mesh *me_eval, const 
float co[3], char mode);
+int  ED_mesh_mirror_topo_table(struct Object *ob, struct Mesh *me_eval, char 
mode);
 
 /* retrieves mirrored cache vert, or NULL if there isn't one.
  * note: calling this without ensuring the mirror cache state
  * is bad.*/
-int            mesh_get_x_mirror_vert(struct Object *ob, struct DerivedMesh 
*dm, int index, const bool use_topology);
-int mesh_get_x_mirror_vert__real_mesh(struct Object *ob, struct Mesh *mesh, 
int index, const bool use_topology);
+int mesh_get_x_mirror_vert(struct Object *ob, struct Mesh *me_eval, int index, 
const bool use_topology);
 struct BMVert *editbmesh_get_x_mirror_vert(struct Object *ob, struct 
BMEditMesh *em,
                                            struct BMVert *eve, const float 
co[3],
                                            int index, const bool use_topology);
-int           *mesh_get_x_mirror_faces(struct Object *ob, struct BMEditMesh 
*em, struct DerivedMesh *dm);
-int *mesh_get_x_mirror_faces__real_mesh(struct Object *ob, struct BMEditMesh 
*em, struct Mesh *mesh);
+int *mesh_get_x_mirror_faces(struct Object *ob, struct BMEditMesh *em, struct 
Mesh *me_eval);
 
 int ED_mesh_mirror_get_vert(struct Object *ob, int index);
 
diff --git a/source/blender/editors/mesh/editmesh_utils.c 
b/source/blender/editors/mesh/editmesh_utils.c
index 64e6b477abe..5481c52269d 100644
--- a/source/blender/editors/mesh/editmesh_utils.c
+++ b/source/blender/editors/mesh/editmesh_utils.c
@@ -1035,7 +1035,7 @@ void EDBM_verts_mirror_cache_begin_ex(
        BM_mesh_elem_index_ensure(bm, BM_VERT);
 
        if (use_topology) {
-               ED_mesh_mirrtopo_init__real_mesh(me, NULL, &mesh_topo_store, 
true);
+               ED_mesh_mirrtopo_init(me, NULL, &mesh_topo_store, true);
        }
        else {
                tree = BLI_kdtree_new(bm->totvert);
diff --git a/source/blender/editors/mesh/mesh_mirror.c 
b/source/blender/editors/mesh/mesh_mirror.c
index 4c078d2ac8b..4b526915551 100644
--- a/source/blender/editors/mesh/mesh_mirror.c
+++ b/source/blender/editors/mesh/mesh_mirror.c
@@ -32,9 +32,9 @@
 #include "BLI_bitmap.h"
 
 #include "DNA_mesh_types.h"
+#include "DNA_meshdata_types.h"
 #include "DNA_object_types.h"
 
-#include "BKE_DerivedMesh.h"
 #include "BLI_kdtree.h"
 #include "BKE_editmesh.h"
 #include "BKE_library.h"
@@ -52,11 +52,11 @@ static struct { void *tree; } MirrKdStore = {NULL};
 
 /* mode is 's' start, or 'e' end, or 'u' use */
 /* if end, ob can be NULL */
-int ED_mesh_mirror_spatial_table(Object *ob, BMEditMesh *em, DerivedMesh *dm, 
const float co[3], char mode)
+int ED_mesh_mirror_spatial_table(Object *ob, BMEditMesh *em, Mesh *me_eval, 
const float co[3], char mode)
 {
        if (mode == 'u') {        /* use table */
                if (MirrKdStore.tree == NULL)
-                       ED_mesh_mirror_spatial_table(ob, em, dm, NULL, 's');
+                       ED_mesh_mirror_spatial_table(ob, em, me_eval, NULL, 
's');
 
                if (MirrKdStore.tree) {
                        KDTreeNearest nearest;
@@ -72,11 +72,11 @@ int ED_mesh_mirror_spatial_table(Object *ob, BMEditMesh 
*em, DerivedMesh *dm, co
        }
        else if (mode == 's') {   /* start table */
                Mesh *me = ob->data;
-               const bool use_em = (!dm && em && me->edit_btmesh == em);
-               const int totvert = use_em ? em->bm->totvert : dm ? 
dm->getNumVerts(dm) : me->totvert;
+               const bool use_em = (!me_eval && em && me->edit_btmesh == em);
+               const int totvert = use_em ? em->bm->totvert : me_eval ? 
me_eval->totvert : me->totvert;
 
                if (MirrKdStore.tree) /* happens when entering this call 
without ending it */
-                       ED_mesh_mirror_spatial_table(ob, em, dm, co, 'e');
+                       ED_mesh_mirror_spatial_table(ob, em, me_eval, co, 'e');
 
                MirrKdStore.tree = BLI_kdtree_new(totvert);
 
@@ -93,73 +93,7 @@ int ED_mesh_mirror_spatial_table(Object *ob, BMEditMesh *em, 
DerivedMesh *dm, co
                        }
                }
                else {
-                       MVert *mvert = dm ? dm->getVertArray(dm) : me->mvert;
-                       int i;
-
-                       for (i = 0; i < totvert; i++, mvert++) {
-                               BLI_kdtree_insert(MirrKdStore.tree, i, 
mvert->co);
-                       }
-               }
-
-               BLI_kdtree_balance(MirrKdStore.tree);
-       }
-       else if (mode == 'e') { /* end table */
-               if (MirrKdStore.tree) {
-                       BLI_kdtree_free(MirrKdStore.tree);
-                       MirrKdStore.tree = NULL;
-               }
-       }
-       else {
-               BLI_assert(0);
-       }
-
-       return 0;
-}
-
-/* mode is 's' start, or 'e' end, or 'u' use */
-/* if end, ob can be NULL */
-int ED_mesh_mirror_spatial_table__real_mesh(Object *ob, BMEditMesh *em, Mesh 
*mesh, const float co[3], char mode)
-{
-       if (mode == 'u') {        /* use table */
-               if (MirrKdStore.tree == NULL)
-                       ED_mesh_mirror_spatial_table__real_mesh(ob, em, mesh, 
NULL, 's');
-
-               if (MirrKdStore.tree) {
-                       KDTreeNearest nearest;
-                       const int i = BLI_kdtree_find_nearest(MirrKdStore.tree, 
co, &nearest);
-
-                       if (i != -1) {
-                               if (nearest.dist < KD_THRESH) {
-                                       return i;
-                               }
-                       }
-               }
-               return -1;
-       }
-       else if (mode == 's') {   /* start table */
-               Mesh *me = ob->data;
-               const bool use_em = (!mesh && em && me->edit_btmesh == em);
-               const int totvert = use_em ? em->bm->totvert : mesh ? 
mesh->totvert : me->totvert;
-
-               if (MirrKdStore.tree) /* happens when entering this call 
without ending it */
-                       ED_mesh_mirror_spatial_table__real_mesh(ob, em, mesh, 
co, 'e');
-
-               MirrKdStore.tree = BLI_kdtree_new(totvert);
-
-               if (use_em) {
-                       BMVert *eve;
-                       BMIter iter;
-                       int i;
-
-                       /* this needs to be valid for index lookups later 
(callers need) */
-                       BM_mesh_elem_table_ensure(em->bm, BM_VERT);
-
-                       BM_ITER_MESH_INDEX (eve, &iter, em->bm, 
BM_VERTS_OF_MESH, i) {
-                               BLI_kdtree_insert(MirrKdStore.tree, i, eve->co);
-                       }
-               }
-               else {
-                       MVert *mvert = mesh ? mesh->mvert : me->mvert;
+                       MVert *mvert = me_eval ? me_eval->mvert : me->mvert;
                        int i;
 
                        for (i = 0; i < totvert; i++, mvert++) {
@@ -209,46 +143,15 @@ static int mirrtopo_vert_sort(const void *v1, const void 
*v2)
        return 0;
 }
 
-bool ED_mesh_mirrtopo_recalc_check(Mesh *me, DerivedMesh *dm, MirrTopoStore_t 
*mesh_topo_store)
-{
-       const bool is_editmode = (me->edit_btmesh != NULL);
-       int totvert;
-       int totedge;
-
-       if (dm) {
-               totvert = dm->getNumVerts(dm);
-               totedge = dm->getNumEdges(dm);
-       }
-       else if (me->edit_btmesh) {
-               totvert = me->edit_btmesh->bm->totvert;
-               totedge = me->edit_btmesh->bm->totedge;
-       }
-       else {
-               totvert = me->totvert;
-               totedge = me->totedge;
-       }
-
-       if ((mesh_topo_store->index_lookup == NULL) ||
-           (mesh_topo_store->prev_is_editmode != is_editmode) ||
-           (totvert != mesh_topo_store->prev_vert_tot) ||
-           (totedge != mesh_topo_store->prev_edge_tot))
-       {
-               return true;
-       }
-       else {
-               return false;
-       }
-
-}
-bool ED_mesh_mirrtopo_recalc_check__real_mesh(Mesh *me, Mesh *dm, 
MirrTopoStore_t *mesh_topo_store)
+bool ED_mesh_mirrtopo_recalc_check(Mesh *me, Mesh *me_eval, MirrTopoStore_t 
*mesh_topo_store)
 {
        const bool is_editmode = (me->edit_btmesh != NULL);
        int totvert;
        int totedge;
 
-       if (dm) {
-               totvert = dm->totvert;
-               totedge = dm->totedge;
+       if (me_eval) {
+               totvert = me_eval->totvert;
+               totedge = me_eval->totedge;
        }
        else if (me->edit_btmesh) {
                totvert = me->edit_btmesh->bm->totvert;
@@ -272,33 +175,13 @@ bool ED_mesh_mirrtopo_recalc_check__real_mesh(Mesh *me, 
Mesh *dm, MirrTopoStore_
 
 }
 
-
 void ED_mesh_mirrtopo_init(
-        Mesh *me, DerivedMesh *dm, MirrTopoStore_t *mesh_topo_store,
-        const bool skip_em_vert_array_init)
-{
-       Mesh *fake_mesh = NULL;
-
-       if (dm != NULL) {
-               /* ED_real_mesh_mirrtopo_init() only uses the counts, not the 
actual data */
-               fake_mesh = BKE_mesh_new_nomain(dm->getNumVerts(dm), 
dm->getNumEdges(dm), dm->getNumTessFaces(dm),
-                                               dm->getNumLoops(dm), 
dm->getNumPolys(dm));
-       }
-
-       ED_mesh_mirrtopo_init__real_mesh(me, fake_mesh, mesh_topo_store, 
skip_em_vert_array_init);
-
-       if (dm != NULL) {
-               BKE_id_free(NULL, fake_mesh);
-       }
-}
-
-void ED_mesh_mirrtopo_init__real_mesh(
-        Mesh *me, Mesh *dm, MirrTopoStore_t *mesh_topo_store,
+        Mesh *me, Mesh *me_eval, MirrTopoStore_t *mesh_topo_store,
         const bool skip_em_vert_array_init)
 {
        const bool is_editmode = (me->edit_btmesh != NULL);
        MEdge *medge = NULL, *med;
-       BMEditMesh *em = dm ?  NULL : me->edit_btmesh;
+       BMEditMesh *em = me_eval ?  NULL : me->edit_btmesh;
 
        /* editmode*/
        BMEdge *eed;
@@ -327,7 +210,7 @@ void ED_mesh_mirrtopo_init__real_mesh(
                totvert = em->bm->totvert;
        }
        else {
-               totvert = dm ? dm->totvert : me->totvert;
+               totvert = me_eval ? me_eval->totvert : me->totvert;
        }
 
        topo_hash = MEM_callocN(totvert * sizeof(MirrTopoHash_t), "TopoMirr");
@@ -343,8 +226,8 @@ void ED_

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to