[Bf-blender-cvs] [91c33c8b995] master: Cleanup: Snap Context Refactor

Germano Cavalcante noreply at git.blender.org
Wed Oct 13 22:44:01 CEST 2021


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. @@



More information about the Bf-blender-cvs mailing list