Commit: f06dc36c35d6da1e2f3116752cf3245373f867b0
Author: Campbell Barton
Date:   Thu Mar 21 02:29:30 2019 +1100
Branches: master
https://developer.blender.org/rBf06dc36c35d6da1e2f3116752cf3245373f867b0

Select Similar: use kdtree de-duplication

Avoids redundant tree traversal when finding nearest.

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

M       source/blender/editors/curve/editcurve_select.c
M       source/blender/editors/mesh/editmesh_select_similar.c
M       source/blender/editors/metaball/mball_edit.c

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

diff --git a/source/blender/editors/curve/editcurve_select.c 
b/source/blender/editors/curve/editcurve_select.c
index 23d55ed8eca..c52e5d3d787 100644
--- a/source/blender/editors/curve/editcurve_select.c
+++ b/source/blender/editors/curve/editcurve_select.c
@@ -1613,9 +1613,11 @@ static int curve_select_similar_exec(bContext *C, 
wmOperator *op)
        }
 
        if (tree_1d != NULL) {
+               BLI_kdtree_1d_deduplicate(tree_1d);
                BLI_kdtree_1d_balance(tree_1d);
        }
        if (tree_3d != NULL) {
+               BLI_kdtree_3d_deduplicate(tree_3d);
                BLI_kdtree_3d_balance(tree_3d);
        }
 
diff --git a/source/blender/editors/mesh/editmesh_select_similar.c 
b/source/blender/editors/mesh/editmesh_select_similar.c
index ae79bdbf66a..c9365e8d0fd 100644
--- a/source/blender/editors/mesh/editmesh_select_similar.c
+++ b/source/blender/editors/mesh/editmesh_select_similar.c
@@ -333,12 +333,15 @@ static int similar_face_select_exec(bContext *C, 
wmOperator *op)
        BLI_assert((type != SIMFACE_FREESTYLE) || (face_data_value != 
SIMFACE_DATA_NONE));
 
        if (tree_1d != NULL) {
+               BLI_kdtree_1d_deduplicate(tree_1d);
                BLI_kdtree_1d_balance(tree_1d);
        }
        if (tree_3d != NULL) {
+               BLI_kdtree_3d_deduplicate(tree_3d);
                BLI_kdtree_3d_balance(tree_3d);
        }
        if (tree_4d != NULL) {
+               BLI_kdtree_4d_deduplicate(tree_4d);
                BLI_kdtree_4d_balance(tree_4d);
        }
 
@@ -804,9 +807,11 @@ static int similar_edge_select_exec(bContext *C, 
wmOperator *op)
        BLI_assert((type != SIMEDGE_FREESTYLE) || (edge_data_value != 
SIMEDGE_DATA_NONE));
 
        if (tree_1d != NULL) {
+               BLI_kdtree_1d_deduplicate(tree_1d);
                BLI_kdtree_1d_balance(tree_1d);
        }
        if (tree_3d != NULL) {
+               BLI_kdtree_3d_deduplicate(tree_3d);
                BLI_kdtree_3d_balance(tree_3d);
        }
 
@@ -1126,6 +1131,7 @@ static int similar_vert_select_exec(bContext *C, 
wmOperator *op)
 
        /* Remove duplicated entries. */
        if (tree_3d != NULL) {
+               BLI_kdtree_3d_deduplicate(tree_3d);
                BLI_kdtree_3d_balance(tree_3d);
        }
 
diff --git a/source/blender/editors/metaball/mball_edit.c 
b/source/blender/editors/metaball/mball_edit.c
index 2aa9ab4c914..8da87a4fdd1 100644
--- a/source/blender/editors/metaball/mball_edit.c
+++ b/source/blender/editors/metaball/mball_edit.c
@@ -363,9 +363,11 @@ static int mball_select_similar_exec(bContext *C, 
wmOperator *op)
        }
 
        if (tree_1d != NULL) {
+               BLI_kdtree_1d_deduplicate(tree_1d);
                BLI_kdtree_1d_balance(tree_1d);
        }
        if (tree_3d != NULL) {
+               BLI_kdtree_3d_deduplicate(tree_3d);
                BLI_kdtree_3d_balance(tree_3d);
        }
        /* Select MetaBalls with desired type. */

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

Reply via email to