Commit: 91c33c8b99520b6b094265a826cd391929a81716 Author: Germano Cavalcante Date: Tue Oct 12 17:05:56 2021 -0300 Branches: master https://developer.blender.org/rB91c33c8b99520b6b094265a826cd391929a81716
Cleanup: Snap Context Refactor Move runtime parameters out of context creation. Not being able to choose another region and v3d limits the use of the snap API. =================================================================== M source/blender/editors/curve/editcurve.c M source/blender/editors/gizmo_library/gizmo_types/move3d_gizmo.c M source/blender/editors/gizmo_library/gizmo_types/snap3d_gizmo.c M source/blender/editors/gpencil/gpencil_bake_animation.c M source/blender/editors/gpencil/gpencil_edit.c M source/blender/editors/gpencil/gpencil_mesh.c M source/blender/editors/gpencil/gpencil_utils.c M source/blender/editors/include/ED_gizmo_library.h M source/blender/editors/include/ED_transform_snap_object_context.h M source/blender/editors/mesh/editmesh_utils.c M source/blender/editors/space_view3d/view3d_edit.c M source/blender/editors/space_view3d/view3d_gizmo_ruler.c M source/blender/editors/space_view3d/view3d_navigate_walk.c M source/blender/editors/space_view3d/view3d_placement.c M source/blender/editors/transform/transform_snap.c M source/blender/editors/transform/transform_snap_object.c M source/blender/makesrna/intern/rna_scene_api.c =================================================================== diff --git a/source/blender/editors/curve/editcurve.c b/source/blender/editors/curve/editcurve.c index 9b43e23bd32..d4fdf46d8f4 100644 --- a/source/blender/editors/curve/editcurve.c +++ b/source/blender/editors/curve/editcurve.c @@ -5561,12 +5561,14 @@ static int add_vertex_invoke(bContext *C, wmOperator *op, const wmEvent *event) if (use_proj) { const float mval[2] = {UNPACK2(event->mval)}; - struct SnapObjectContext *snap_context = ED_transform_snap_object_context_create_view3d( - vc.scene, 0, vc.region, vc.v3d); + struct SnapObjectContext *snap_context = ED_transform_snap_object_context_create(vc.scene, + 0); ED_transform_snap_object_project_view3d( snap_context, vc.depsgraph, + vc.region, + vc.v3d, SCE_SNAP_MODE_FACE, &(const struct SnapObjectParams){ .snap_select = (vc.obedit != NULL) ? SNAP_NOT_ACTIVE : SNAP_ALL, diff --git a/source/blender/editors/gizmo_library/gizmo_types/move3d_gizmo.c b/source/blender/editors/gizmo_library/gizmo_types/move3d_gizmo.c index 68322ed56af..ec4837aec3c 100644 --- a/source/blender/editors/gizmo_library/gizmo_types/move3d_gizmo.c +++ b/source/blender/editors/gizmo_library/gizmo_types/move3d_gizmo.c @@ -289,6 +289,8 @@ static int gizmo_move_modal(bContext *C, if (ED_transform_snap_object_project_view3d( inter->snap_context_v3d, CTX_data_ensure_evaluated_depsgraph(C), + region, + CTX_wm_view3d(C), (SCE_SNAP_MODE_VERTEX | SCE_SNAP_MODE_EDGE | SCE_SNAP_MODE_FACE), &(const struct SnapObjectParams){ .snap_select = SNAP_ALL, @@ -381,8 +383,7 @@ static int gizmo_move_invoke(bContext *C, wmGizmo *gz, const wmEvent *event) if (area) { switch (area->spacetype) { case SPACE_VIEW3D: { - inter->snap_context_v3d = ED_transform_snap_object_context_create_view3d( - CTX_data_scene(C), 0, CTX_wm_region(C), CTX_wm_view3d(C)); + inter->snap_context_v3d = ED_transform_snap_object_context_create(CTX_data_scene(C), 0); break; } default: diff --git a/source/blender/editors/gizmo_library/gizmo_types/snap3d_gizmo.c b/source/blender/editors/gizmo_library/gizmo_types/snap3d_gizmo.c index ae2cc05c01b..f673d3e85ef 100644 --- a/source/blender/editors/gizmo_library/gizmo_types/snap3d_gizmo.c +++ b/source/blender/editors/gizmo_library/gizmo_types/snap3d_gizmo.c @@ -278,15 +278,11 @@ void ED_gizmotypes_snap_3d_draw_util(RegionView3D *rv3d, immUnbindProgram(); } -SnapObjectContext *ED_gizmotypes_snap_3d_context_ensure(Scene *scene, - const ARegion *region, - const View3D *v3d, - wmGizmo *gz) +SnapObjectContext *ED_gizmotypes_snap_3d_context_ensure(Scene *scene, wmGizmo *gz) { SnapGizmo3D *snap_gizmo = (SnapGizmo3D *)gz; if (snap_gizmo->snap_context_v3d == NULL) { - snap_gizmo->snap_context_v3d = ED_transform_snap_object_context_create_view3d( - scene, 0, region, v3d); + snap_gizmo->snap_context_v3d = ED_transform_snap_object_context_create(scene, 0); } return snap_gizmo->snap_context_v3d; } @@ -387,6 +383,8 @@ short ED_gizmotypes_snap_3d_update(wmGizmo *gz, snap_elem = ED_transform_snap_object_project_view3d_ex( snap_gizmo->snap_context_v3d, depsgraph, + region, + v3d, snap_elements, &(const struct SnapObjectParams){ .snap_select = snap_select, @@ -576,8 +574,12 @@ static void snap_gizmo_setup(wmGizmo *gz) #ifdef USE_SNAP_DETECT_FROM_KEYMAP_HACK SnapGizmo3D *snap_gizmo = (SnapGizmo3D *)gz; - snap_gizmo->keymap = WM_modalkeymap_find(gz->parent_gzgroup->type->keyconf, - "Generic Gizmo Tweak Modal Map"); + wmKeyConfig *keyconf = gz->parent_gzgroup->type->keyconf; + if (!keyconf) { + /* It can happen when gizmogrouptype is not linked at startup. */ + keyconf = ((wmWindowManager *)G.main->wm.first)->defaultconf; + } + snap_gizmo->keymap = WM_modalkeymap_find(keyconf, "Generic Gizmo Tweak Modal Map"); RNA_enum_value_from_id(snap_gizmo->keymap->modal_items, "SNAP_ON", &snap_gizmo->snap_on); #endif } diff --git a/source/blender/editors/gpencil/gpencil_bake_animation.c b/source/blender/editors/gpencil/gpencil_bake_animation.c index 2d299230124..960f228edd0 100644 --- a/source/blender/editors/gpencil/gpencil_bake_animation.c +++ b/source/blender/editors/gpencil/gpencil_bake_animation.c @@ -213,7 +213,6 @@ static int gpencil_bake_grease_pencil_animation_exec(bContext *C, wmOperator *op Main *bmain = CTX_data_main(C); Depsgraph *depsgraph = CTX_data_ensure_evaluated_depsgraph(C); Scene *scene = CTX_data_scene(C); - ARegion *region = CTX_wm_region(C); View3D *v3d = CTX_wm_view3d(C); ListBase ob_selected_list = {NULL, NULL}; @@ -256,7 +255,7 @@ static int gpencil_bake_grease_pencil_animation_exec(bContext *C, wmOperator *op gsc.ob = ob_gpencil; /* Init snap context for geometry projection. */ - sctx = ED_transform_snap_object_context_create_view3d(scene, 0, region, CTX_wm_view3d(C)); + sctx = ED_transform_snap_object_context_create(scene, 0); } /* Loop all frame range. */ diff --git a/source/blender/editors/gpencil/gpencil_edit.c b/source/blender/editors/gpencil/gpencil_edit.c index 1f31c60367e..90b6db82838 100644 --- a/source/blender/editors/gpencil/gpencil_edit.c +++ b/source/blender/editors/gpencil/gpencil_edit.c @@ -3758,7 +3758,6 @@ static int gpencil_strokes_reproject_exec(bContext *C, wmOperator *op) bGPdata *gpd = ED_gpencil_data_get_active(C); Scene *scene = CTX_data_scene(C); Depsgraph *depsgraph = CTX_data_ensure_evaluated_depsgraph(C); - ARegion *region = CTX_wm_region(C); int oldframe = (int)DEG_get_ctime(depsgraph); const eGP_ReprojectModes mode = RNA_enum_get(op->ptr, "type"); const bool keep_original = RNA_boolean_get(op->ptr, "keep_original"); @@ -3767,7 +3766,7 @@ static int gpencil_strokes_reproject_exec(bContext *C, wmOperator *op) /* Init snap context for geometry projection. */ SnapObjectContext *sctx = NULL; - sctx = ED_transform_snap_object_context_create_view3d(scene, 0, region, CTX_wm_view3d(C)); + sctx = ED_transform_snap_object_context_create(scene, 0); bool changed = false; /* Init space conversion stuff. */ diff --git a/source/blender/editors/gpencil/gpencil_mesh.c b/source/blender/editors/gpencil/gpencil_mesh.c index 079089786d0..11e02b9832f 100644 --- a/source/blender/editors/gpencil/gpencil_mesh.c +++ b/source/blender/editors/gpencil/gpencil_mesh.c @@ -188,7 +188,6 @@ static int gpencil_bake_mesh_animation_exec(bContext *C, wmOperator *op) Main *bmain = CTX_data_main(C); Depsgraph *depsgraph = CTX_data_ensure_evaluated_depsgraph(C); Scene *scene = CTX_data_scene(C); - ARegion *region = CTX_wm_region(C); View3D *v3d = CTX_wm_view3d(C); ListBase ob_selected_list = {NULL, NULL}; @@ -262,7 +261,7 @@ static int gpencil_bake_mesh_animation_exec(bContext *C, wmOperator *op) gsc.ob = ob_gpencil; /* Init snap context for geometry projection. */ - sctx = ED_transform_snap_object_context_create_view3d(scene, 0, region, CTX_wm_view3d(C)); + sctx = ED_transform_snap_object_context_create(scene, 0); /* Tag all existing strokes to avoid reprojections. */ LISTBASE_FOREACH (bGPDlayer *, gpl, &gpd->layers) { diff --git a/source/blender/editors/gpencil/gpencil_utils.c b/source/blender/editors/gpencil/gpencil_utils.c index bb05b93ad81..d3640c6eebd 100644 --- a/source/blender/editors/gpencil/gpencil_utils.c +++ b/source/blender/editors/gpencil/gpencil_utils.c @@ -1292,6 +1292,7 @@ void ED_gpencil_stroke_reproject(Depsgraph *depsgraph, depsgraph, region, v3d, xy, &ray_start[0], &ray_normal[0], true); if (ED_transform_snap_object_project_ray(sctx, depsgraph, + v3d, &(const struct SnapObjectParams){ .snap_select = SNAP_ALL, }, diff --git a/source/blender/editors/include/ED_gizmo_library.h b/source/blender/editors/include/ED_gizmo_library.h index 357d5e10fa7..9bef5a17d12 100644 --- a/source/blender/editors/include/ED_gizmo_library.h +++ b/source/blender/editors/include/ED_gizmo_library.h @@ -257,8 +257,6 @@ void ED_gizmotypes_snap_3d_draw_util(struct RegionView3D *rv3d, const uchar color_point[4], const short snap_elem_type); struct SnapObjectContext *ED_gizmotypes_snap_3d_context_ensure(struct Scene *scene, - const struct ARegion *region, - const struct View3D *v3d, struct wmGizmo *gz); typedef enum { diff --git a/source/blender/editors/include/ED_transform_snap_object_context.h b/source/blender/editors/include/ED_transform_snap_object_context.h index 42e73bbf744..c8e8513d104 100644 --- a/source/blender/editors/include/ED_transform_snap_object_context.h +++ b/source/blender/editors/include/ED_transform_snap_object_context.h @@ -83,11 +83,6 @@ struct SnapObjectParams { typedef struct SnapObjectContext SnapObjectContext; SnapObjectContext *ED_transform_snap_object_context_create(struct Scene *scene, int flag); -SnapObjectContext *ED_transform_snap_object_context_create_view3d(struct Scene *scene, - int flag, - /* extra args for view3d */ - const struct ARegion *region, - @@ Diff output truncated at 10240 characters. @@ _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org List details, subscription details or unsubscribe: https://lists.blender.org/mailman/listinfo/bf-blender-cvs