diff options
author | Germano Cavalcante <germano.costa@ig.com.br> | 2020-03-09 16:02:11 +0300 |
---|---|---|
committer | Germano Cavalcante <germano.costa@ig.com.br> | 2020-03-09 16:02:11 +0300 |
commit | a922a097ef5c453bf4bc515494a3ab5f402946e2 (patch) | |
tree | 892f229d05ed6e88afc7d107bf58147f6031dd16 /source/blender/editors/transform/transform_snap.c | |
parent | 3a10c61a7d088712e66ae6cc775f8260dc91518b (diff) |
Transform Snap Object: Remove depsgraph when creating context
Currently, this change does not bring functional changes.
But it is necessary to extend the use of the snap system for gizmos,
since, after a Undo, the `depsgraph` pointed by the `snap_context`
has its memory invalidated.
Reviewed By: campbellbarton
Differential Revision: https://developer.blender.org/D7013
Diffstat (limited to 'source/blender/editors/transform/transform_snap.c')
-rw-r--r-- | source/blender/editors/transform/transform_snap.c | 51 |
1 files changed, 21 insertions, 30 deletions
diff --git a/source/blender/editors/transform/transform_snap.c b/source/blender/editors/transform/transform_snap.c index 8336fd7890b..0a0a6ffd62f 100644 --- a/source/blender/editors/transform/transform_snap.c +++ b/source/blender/editors/transform/transform_snap.c @@ -377,6 +377,7 @@ void applyProject(TransInfo *t) V3D_PROJ_RET_OK) { if (ED_transform_snap_object_project_view3d( t->tsnap.object_context, + t->depsgraph, SCE_SNAP_MODE_FACE, &(const struct SnapObjectParams){ .snap_select = t->tsnap.modeSelect, @@ -686,7 +687,7 @@ static void initSnappingMode(TransInfo *t) if (t->spacetype == SPACE_VIEW3D) { if (t->tsnap.object_context == NULL) { t->tsnap.object_context = ED_transform_snap_object_context_create_view3d( - bmain, t->scene, t->depsgraph, 0, t->region, t->view); + bmain, t->scene, 0, t->region, t->view); ED_transform_snap_object_context_set_editmesh_callbacks( t->tsnap.object_context, @@ -1365,6 +1366,7 @@ short snapObjectsTransform( float *target = (t->tsnap.status & TARGET_INIT) ? t->tsnap.snapTarget : t->center_global; return ED_transform_snap_object_project_view3d_ex( t->tsnap.object_context, + t->depsgraph, t->scene->toolsettings->snap_mode, &(const struct SnapObjectParams){ .snap_select = t->tsnap.modeSelect, @@ -1389,17 +1391,26 @@ short snapObjectsTransform( /** \name Peeling * \{ */ -bool peelObjectsSnapContext(SnapObjectContext *sctx, - const float mval[2], - const struct SnapObjectParams *params, - const bool use_peel_object, - /* return args */ - float r_loc[3], - float r_no[3], - float *r_thickness) +bool peelObjectsTransform(TransInfo *t, + const float mval[2], + const bool use_peel_object, + /* return args */ + float r_loc[3], + float r_no[3], + float *r_thickness) { ListBase depths_peel = {0}; - ED_transform_snap_object_project_all_view3d_ex(sctx, params, mval, -1.0f, false, &depths_peel); + ED_transform_snap_object_project_all_view3d_ex( + t->tsnap.object_context, + t->depsgraph, + &(const struct SnapObjectParams){ + .snap_select = t->tsnap.modeSelect, + .use_object_edit_cage = (t->flag & T_EDIT) != 0, + }, + mval, + -1.0f, + false, + &depths_peel); if (!BLI_listbase_is_empty(&depths_peel)) { /* At the moment we only use the hits of the first object */ @@ -1455,26 +1466,6 @@ bool peelObjectsSnapContext(SnapObjectContext *sctx, return false; } -bool peelObjectsTransform(TransInfo *t, - const float mval[2], - const bool use_peel_object, - /* return args */ - float r_loc[3], - float r_no[3], - float *r_thickness) -{ - return peelObjectsSnapContext(t->tsnap.object_context, - mval, - &(const struct SnapObjectParams){ - .snap_select = t->tsnap.modeSelect, - .use_object_edit_cage = (t->flag & T_EDIT) != 0, - }, - use_peel_object, - r_loc, - r_no, - r_thickness); -} - /** \} */ /* -------------------------------------------------------------------- */ |