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_gizmo_preselect_type.c')
-rw-r--r--source/blender/editors/space_view3d/view3d_gizmo_preselect_type.c23
1 files changed, 13 insertions, 10 deletions
diff --git a/source/blender/editors/space_view3d/view3d_gizmo_preselect_type.c b/source/blender/editors/space_view3d/view3d_gizmo_preselect_type.c
index e17993445df..9f35abf7fef 100644
--- a/source/blender/editors/space_view3d/view3d_gizmo_preselect_type.c
+++ b/source/blender/editors/space_view3d/view3d_gizmo_preselect_type.c
@@ -364,16 +364,19 @@ static int gizmo_preselect_edgering_test_select(bContext *C, wmGizmo *gz, const
}
else {
if (best.eed) {
- const float(*coords)[3] = NULL;
- {
- Object *ob = gz_ring->bases[gz_ring->base_index]->object;
- Depsgraph *depsgraph = CTX_data_ensure_evaluated_depsgraph(C);
- Mesh *me_eval = (Mesh *)DEG_get_evaluated_id(depsgraph, ob->data);
- if (me_eval->runtime.edit_data) {
- coords = me_eval->runtime.edit_data->vertexCos;
- }
- }
+ Object *ob = gz_ring->bases[gz_ring->base_index]->object;
+ Scene *scene_eval = (Scene *)DEG_get_evaluated_id(vc.depsgraph, &vc.scene->id);
+ Object *ob_eval = DEG_get_evaluated_object(vc.depsgraph, ob);
+ BMEditMesh *em_eval = BKE_editmesh_from_object(ob_eval);
+ /* Re-allocate coords each update isn't ideal, however we can't be sure
+ * the mesh hasn't been edited since last update. */
+ bool is_alloc = false;
+ const float(*coords)[3] = BKE_editmesh_vert_coords_when_deformed(
+ vc.depsgraph, em_eval, scene_eval, ob_eval, NULL, &is_alloc);
EDBM_preselect_edgering_update_from_edge(gz_ring->psel, bm, best.eed, 1, coords);
+ if (is_alloc) {
+ MEM_freeN((void *)coords);
+ }
}
else {
EDBM_preselect_edgering_clear(gz_ring->psel);
@@ -450,7 +453,7 @@ void ED_gizmotypes_preselect_3d(void)
/* -------------------------------------------------------------------- */
/** \name Gizmo Accessors
*
- * This avoids each user of the gizmo needing to write their own look-ups to access
+ * This avoids each user of the gizmo needing to write their own lookups to access
* the information from this gizmo.
* \{ */