remove makeDerivedMesh from ED_mesh_pick_face(), this was added 44256 (bmesh merge...
authorCampbell Barton <ideasman42@gmail.com>
Fri, 7 Sep 2012 00:58:00 +0000 (00:58 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Fri, 7 Sep 2012 00:58:00 +0000 (00:58 +0000)
Also - other select modes like border-select dont do this, so looks safe to disable.

source/blender/editors/include/ED_mesh.h
source/blender/editors/mesh/editface.c
source/blender/editors/mesh/meshtools.c
source/blender/editors/space_view3d/view3d_select.c

index 25c7272..528eeab 100644 (file)
@@ -279,8 +279,11 @@ int            mesh_get_x_mirror_vert(struct Object *ob, int index);
 struct BMVert *editbmesh_get_x_mirror_vert(struct Object *ob, struct BMEditMesh *em, struct BMVert *eve, const float co[3], int index);
 int           *mesh_get_x_mirror_faces(struct Object *ob, struct BMEditMesh *em);
 
-int ED_mesh_pick_face(struct bContext *C, struct Mesh *me, struct Object *ob, const int mval[2], unsigned int *index, short rect);
 int ED_mesh_pick_vert(struct bContext *C, struct Mesh *me, const int mval[2], unsigned int *index, int size);
+int ED_mesh_pick_face(struct bContext *C, struct Mesh *me, const int mval[2], unsigned int *index, int size);
+
+#define ED_MESH_PICK_DEFAULT_VERT_SIZE 50
+#define ED_MESH_PICK_DEFAULT_FACE_SIZE 3
 
 #include "../mesh/editmesh_bvh.h"
 
index 36fbfee..4e30cff 100644 (file)
@@ -294,7 +294,7 @@ void paintface_select_linked(bContext *UNUSED(C), Object *ob, int UNUSED(mval[2]
        if (mode == 0 || mode == 1) {
                /* XXX - Causes glitches, not sure why */
 #if 0
-               if (!ED_mesh_pick_face(C, me, mval, &index, 1))
+               if (!ED_mesh_pick_face(C, me, mval, &index, ED_MESH_PICK_DEFAULT_FACE_SIZE))
                        return;
 #endif
        }
@@ -481,7 +481,7 @@ int paintface_mouse_select(struct bContext *C, Object *ob, const int mval[2], in
        /* Get the face under the cursor */
        me = BKE_mesh_from_object(ob);
 
-       if (!ED_mesh_pick_face(C, me, ob, mval, &index, 1))
+       if (!ED_mesh_pick_face(C, me, mval, &index, ED_MESH_PICK_DEFAULT_FACE_SIZE))
                return 0;
        
        if (index >= me->totpoly)
index e11d79a..3d6face 100644 (file)
@@ -42,6 +42,7 @@
 #include "MEM_guardedalloc.h"
 
 #include "DNA_mesh_types.h"
+#include "DNA_view3d_types.h"
 #include "DNA_key_types.h"
 #include "DNA_material_types.h"
 #include "DNA_meshdata_types.h"
@@ -1156,28 +1157,21 @@ int *mesh_get_x_mirror_faces(Object *ob, BMEditMesh *em)
  *
  * \return boolean TRUE == Found
  */
-int ED_mesh_pick_face(bContext *C, Mesh *me, Object *ob, const int mval[2], unsigned int *index, short rect)
+int ED_mesh_pick_face(bContext *C, Mesh *me, const int mval[2], unsigned int *index, int size)
 {
-       Scene *scene = CTX_data_scene(C);
        ViewContext vc;
-       view3d_set_viewcontext(C, &vc);
 
        if (!me || me->totpoly == 0)
                return 0;
 
-       makeDerivedMesh(scene, ob, NULL, CD_MASK_BAREMESH, 0);
-
-       // XXX  if (v3d->flag & V3D_INVALID_BACKBUF) {
-// XXX drawview.c!             check_backbuf();
-// XXX         persp(PERSP_VIEW);
-// XXX  }
+       view3d_set_viewcontext(C, &vc);
 
-       if (rect) {
-               /* sample rect to increase changes of selecting, so that when clicking
+       if (size) {
+               /* sample rect to increase chances of selecting, so that when clicking
                 * on an edge in the backbuf, we can still select a face */
 
-               int dist;
-               *index = view3d_sample_backbuf_rect(&vc, mval, 3, 1, me->totpoly + 1, &dist, 0, NULL, NULL);
+               int dummy_dist;
+               *index = view3d_sample_backbuf_rect(&vc, mval, size, 1, me->totpoly + 1, &dummy_dist, 0, NULL, NULL);
        }
        else {
                /* sample only on the exact position */
@@ -1201,17 +1195,18 @@ int ED_mesh_pick_face(bContext *C, Mesh *me, Object *ob, const int mval[2], unsi
 int ED_mesh_pick_vert(bContext *C, Mesh *me, const int mval[2], unsigned int *index, int size)
 {
        ViewContext vc;
-       view3d_set_viewcontext(C, &vc);
 
        if (!me || me->totvert == 0)
                return 0;
 
+       view3d_set_viewcontext(C, &vc);
+
        if (size > 0) {
-               /* sample rect to increase changes of selecting, so that when clicking
+               /* sample rect to increase chances of selecting, so that when clicking
                 * on an face in the backbuf, we can still select a vert */
 
-               int dist;
-               *index = view3d_sample_backbuf_rect(&vc, mval, size, 1, me->totvert + 1, &dist, 0, NULL, NULL);
+               int dummy_dist;
+               *index = view3d_sample_backbuf_rect(&vc, mval, size, 1, me->totvert + 1, &dummy_dist, 0, NULL, NULL);
        }
        else {
                /* sample only on the exact position */
index ab54184..fa431e8 100644 (file)
@@ -2035,8 +2035,8 @@ static int mouse_weight_paint_vertex_select(bContext *C, const int mval[2], shor
        unsigned int index = 0;
        MVert *mv;
 
-       if (ED_mesh_pick_vert(C, me, mval, &index, 50)) {
-               mv = me->mvert + index;
+       if (ED_mesh_pick_vert(C, me, mval, &index, ED_MESH_PICK_DEFAULT_VERT_SIZE)) {
+               mv = &me->mvert[index];
                if (extend) {
                        mv->flag |= SELECT;
                }