Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/editors/mesh/editmesh_select.c')
-rw-r--r--source/blender/editors/mesh/editmesh_select.c65
1 files changed, 14 insertions, 51 deletions
diff --git a/source/blender/editors/mesh/editmesh_select.c b/source/blender/editors/mesh/editmesh_select.c
index 7b770f055b4..2f4688e2de7 100644
--- a/source/blender/editors/mesh/editmesh_select.c
+++ b/source/blender/editors/mesh/editmesh_select.c
@@ -53,7 +53,6 @@
#include "ED_mesh.h"
#include "ED_screen.h"
#include "ED_transform.h"
-#include "ED_select_buffer_utils.h"
#include "ED_select_utils.h"
#include "ED_view3d.h"
@@ -68,6 +67,9 @@
#include "DEG_depsgraph.h"
#include "DEG_depsgraph_query.h"
+#include "DRW_engine.h"
+#include "DRW_select_buffer.h"
+
#include "mesh_intern.h" /* own include */
/* use bmesh operator flags for a few operators */
@@ -197,15 +199,11 @@ void EDBM_automerge(Scene *scene, Object *obedit, bool update, const char hflag)
/** \name Back-Buffer OpenGL Selection
* \{ */
-static BMElem *EDBM_select_id_bm_elem_get(struct EDSelectID_Context *sel_id_ctx,
- Base **bases,
- const uint sel_id,
- uint *r_base_index)
+static BMElem *edbm_select_id_bm_elem_get(Base **bases, const uint sel_id, uint *r_base_index)
{
uint elem_id;
char elem_type = 0;
- bool success = ED_view3d_select_id_elem_get(
- sel_id_ctx, sel_id, &elem_id, r_base_index, &elem_type);
+ bool success = DRW_select_buffer_elem_get(sel_id, &elem_id, r_base_index, &elem_type);
if (success) {
Object *obedit = bases[*r_base_index]->object;
@@ -240,20 +238,6 @@ static BMElem *EDBM_select_id_bm_elem_get(struct EDSelectID_Context *sel_id_ctx,
* to avoid the bias interfering with distance comparisons when mixing types.
* \{ */
-#define FAKE_SELECT_MODE_BEGIN(vc, fake_select_mode, select_mode, select_mode_required) \
- short select_mode = select_mode_required; \
- bool fake_select_mode = (select_mode & (vc)->scene->toolsettings->selectmode) == 0; \
- if (fake_select_mode) { \
- (vc)->v3d->flag |= V3D_INVALID_BACKBUF; \
- } \
- ((void)0)
-
-#define FAKE_SELECT_MODE_END(vc, fake_select_mode) \
- if (fake_select_mode) { \
- (vc)->v3d->flag |= V3D_INVALID_BACKBUF; \
- } \
- ((void)0)
-
#define FIND_NEAR_SELECT_BIAS 5
#define FIND_NEAR_CYCLE_THRESHOLD_MIN 3
@@ -333,23 +317,16 @@ BMVert *EDBM_vert_find_nearest_ex(ViewContext *vc,
/* No afterqueue (yet), so we check it now, otherwise the bm_xxxofs indices are bad. */
{
- FAKE_SELECT_MODE_BEGIN(vc, fake_select_mode, select_mode, SCE_SELECT_VERTEX);
+ DRW_draw_select_id(vc->depsgraph, vc->ar, vc->v3d, bases, bases_len, SCE_SELECT_VERTEX);
- struct EDSelectID_Context *sel_id_ctx = ED_view3d_select_id_context_create(
- vc, bases, bases_len, select_mode);
-
- index = ED_select_buffer_find_nearest_to_point(vc->mval, 1, UINT_MAX, &dist_px);
+ index = DRW_select_buffer_find_nearest_to_point(vc->mval, 1, UINT_MAX, &dist_px);
if (index) {
- eve = (BMVert *)EDBM_select_id_bm_elem_get(sel_id_ctx, bases, index, &base_index);
+ eve = (BMVert *)edbm_select_id_bm_elem_get(bases, index, &base_index);
}
else {
eve = NULL;
}
-
- ED_view3d_select_id_context_destroy(sel_id_ctx);
-
- FAKE_SELECT_MODE_END(vc, fake_select_mode);
}
if (eve) {
@@ -562,23 +539,16 @@ BMEdge *EDBM_edge_find_nearest_ex(ViewContext *vc,
/* No afterqueue (yet), so we check it now, otherwise the bm_xxxofs indices are bad. */
{
- FAKE_SELECT_MODE_BEGIN(vc, fake_select_mode, select_mode, SCE_SELECT_EDGE);
+ DRW_draw_select_id(vc->depsgraph, vc->ar, vc->v3d, bases, bases_len, SCE_SELECT_EDGE);
- struct EDSelectID_Context *sel_id_ctx = ED_view3d_select_id_context_create(
- vc, bases, bases_len, select_mode);
-
- index = ED_select_buffer_find_nearest_to_point(vc->mval, 1, UINT_MAX, &dist_px);
+ index = DRW_select_buffer_find_nearest_to_point(vc->mval, 1, UINT_MAX, &dist_px);
if (index) {
- eed = (BMEdge *)EDBM_select_id_bm_elem_get(sel_id_ctx, bases, index, &base_index);
+ eed = (BMEdge *)edbm_select_id_bm_elem_get(bases, index, &base_index);
}
else {
eed = NULL;
}
-
- ED_view3d_select_id_context_destroy(sel_id_ctx);
-
- FAKE_SELECT_MODE_END(vc, fake_select_mode);
}
if (r_eed_zbuf) {
@@ -775,23 +745,16 @@ BMFace *EDBM_face_find_nearest_ex(ViewContext *vc,
BMFace *efa;
{
- FAKE_SELECT_MODE_BEGIN(vc, fake_select_mode, select_mode, SCE_SELECT_FACE);
+ DRW_draw_select_id(vc->depsgraph, vc->ar, vc->v3d, bases, bases_len, SCE_SELECT_FACE);
- struct EDSelectID_Context *sel_id_ctx = ED_view3d_select_id_context_create(
- vc, bases, bases_len, select_mode);
-
- index = ED_select_buffer_sample_point(vc->mval);
+ index = DRW_select_buffer_sample_point(vc->mval);
if (index) {
- efa = (BMFace *)EDBM_select_id_bm_elem_get(sel_id_ctx, bases, index, &base_index);
+ efa = (BMFace *)edbm_select_id_bm_elem_get(bases, index, &base_index);
}
else {
efa = NULL;
}
-
- ED_view3d_select_id_context_destroy(sel_id_ctx);
-
- FAKE_SELECT_MODE_END(vc, fake_select_mode);
}
if (r_efa_zbuf) {