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/space_view3d/view3d_draw_legacy.c')
-rw-r--r--source/blender/editors/space_view3d/view3d_draw_legacy.c61
1 files changed, 4 insertions, 57 deletions
diff --git a/source/blender/editors/space_view3d/view3d_draw_legacy.c b/source/blender/editors/space_view3d/view3d_draw_legacy.c
index 386c3164843..040b257bb90 100644
--- a/source/blender/editors/space_view3d/view3d_draw_legacy.c
+++ b/source/blender/editors/space_view3d/view3d_draw_legacy.c
@@ -102,6 +102,7 @@
#include "RE_engine.h"
#include "DRW_engine.h"
+#include "DRW_select_buffer.h"
#include "view3d_intern.h" /* own include */
@@ -156,10 +157,8 @@ void ED_view3d_clipping_enable(void)
* \note Only use in object mode.
*/
static void validate_object_select_id(
- struct Depsgraph *depsgraph, Scene *scene, ARegion *ar, View3D *v3d, Object *obact)
+ struct Depsgraph *depsgraph, ViewLayer *view_layer, ARegion *ar, View3D *v3d, Object *obact)
{
- RegionView3D *rv3d = ar->regiondata;
- Scene *scene_eval = (Scene *)DEG_get_evaluated_id(depsgraph, &scene->id);
Object *obact_eval = DEG_get_evaluated_object(depsgraph, obact);
BLI_assert(ar->regiontype == RGN_TYPE_WINDOW);
@@ -186,19 +185,7 @@ static void validate_object_select_id(
}
if (obact_eval && ((obact_eval->base_flag & BASE_VISIBLE) != 0)) {
- uint dummy_vert_ofs, dummy_edge_ofs, dummy_face_ofs;
- DRW_framebuffer_select_id_setup(ar, true);
- DRW_draw_select_id_object(scene_eval,
- rv3d,
- obact_eval,
- scene->toolsettings->selectmode,
- false,
- 1,
- &dummy_vert_ofs,
- &dummy_edge_ofs,
- &dummy_face_ofs);
-
- DRW_framebuffer_select_id_release(ar);
+ DRW_draw_select_id_object(depsgraph, view_layer, ar, v3d, obact, -1);
}
/* TODO: Create a flag in `DRW_manager` because the drawing is no longer
@@ -233,7 +220,7 @@ void ED_view3d_select_id_validate(ViewContext *vc)
/* TODO: Create a flag in `DRW_manager` because the drawing is no longer
* made on the backbuffer in this case. */
if (vc->v3d->flag & V3D_INVALID_BACKBUF) {
- validate_object_select_id(vc->depsgraph, vc->scene, vc->ar, vc->v3d, vc->obact);
+ validate_object_select_id(vc->depsgraph, vc->view_layer, vc->ar, vc->v3d, vc->obact);
}
}
@@ -252,22 +239,6 @@ void ED_view3d_backbuf_depth_validate(ViewContext *vc)
}
}
-uint *ED_view3d_select_id_read_rect(const rcti *clip, uint *r_buf_len)
-{
- uint width = BLI_rcti_size_x(clip);
- uint height = BLI_rcti_size_y(clip);
- uint buf_len = width * height;
- uint *buf = MEM_mallocN(buf_len * sizeof(*buf), __func__);
-
- DRW_framebuffer_select_id_read(clip, buf);
-
- if (r_buf_len) {
- *r_buf_len = buf_len;
- }
-
- return buf;
-}
-
/**
* allow for small values [0.5 - 2.5],
* and large values, FLT_MAX by clamping by the area size
@@ -277,30 +248,6 @@ int ED_view3d_backbuf_sample_size_clamp(ARegion *ar, const float dist)
return (int)min_ff(ceilf(dist), (float)max_ii(ar->winx, ar->winx));
}
-/* reads full rect, converts indices */
-uint *ED_view3d_select_id_read(int xmin, int ymin, int xmax, int ymax, uint *r_buf_len)
-{
- if (UNLIKELY((xmin > xmax) || (ymin > ymax))) {
- return NULL;
- }
-
- const rcti rect = {
- .xmin = xmin,
- .xmax = xmax + 1,
- .ymin = ymin,
- .ymax = ymax + 1,
- };
-
- uint buf_len;
- uint *buf = ED_view3d_select_id_read_rect(&rect, &buf_len);
-
- if (r_buf_len) {
- *r_buf_len = buf_len;
- }
-
- return buf;
-}
-
/* *********************** */
void view3d_update_depths_rect(ARegion *ar, ViewDepths *d, rcti *rect)