[Bf-blender-cvs] [fcccee0c337] master: Cleanup: Remove unnecessary step in calling snap callback

Germano Cavalcante noreply at git.blender.org
Sun May 31 23:29:02 CEST 2020


Commit: fcccee0c3372dc7c8a276f1cfe7545ea2c172498
Author: Germano Cavalcante
Date:   Sun May 31 18:09:50 2020 -0300
Branches: master
https://developer.blender.org/rBfcccee0c3372dc7c8a276f1cfe7545ea2c172498

Cleanup: Remove unnecessary step in calling snap callback

===================================================================

M	source/blender/editors/transform/transform_snap_object.c

===================================================================

diff --git a/source/blender/editors/transform/transform_snap_object.c b/source/blender/editors/transform/transform_snap_object.c
index 77bb0c1c785..4397c0396eb 100644
--- a/source/blender/editors/transform/transform_snap_object.c
+++ b/source/blender/editors/transform/transform_snap_object.c
@@ -359,7 +359,7 @@ static SnapObjectData *snap_object_data_editmesh_get(SnapObjectContext *sctx,
  * \{ */
 
 typedef void (*IterSnapObjsCallback)(SnapObjectContext *sctx,
-                                     bool is_obedit,
+                                     bool use_obedit,
                                      bool use_backface_culling,
                                      Object *ob,
                                      float obmat[4][4],
@@ -920,41 +920,52 @@ static bool raycastEditMesh(SnapObjectContext *sctx,
   return retval;
 }
 
+struct RaycastObjUserData {
+  const float *ray_start;
+  const float *ray_dir;
+  uint ob_index;
+  /* read/write args */
+  float *ray_depth;
+  /* return args */
+  float *r_loc;
+  float *r_no;
+  int *r_index;
+  Object **r_ob;
+  float (*r_obmat)[4];
+  ListBase *r_hit_list;
+  bool use_occlusion_test;
+  bool ret;
+};
+
 /**
  * \param use_obedit: Uses the coordinates of BMesh (if any) to do the snapping;
  *
  * \note Duplicate args here are documented at #snapObjectsRay
  */
-static bool raycastObj(SnapObjectContext *sctx,
-                       const float ray_start[3],
-                       const float ray_dir[3],
-                       Object *ob,
-                       const float obmat[4][4],
-                       const uint ob_index,
-                       bool use_obedit,
-                       bool use_occlusion_test,
-                       bool use_backface_culling,
-                       /* read/write args */
-                       float *ray_depth,
-                       /* return args */
-                       float r_loc[3],
-                       float r_no[3],
-                       int *r_index,
-                       Object **r_ob,
-                       float r_obmat[4][4],
-                       ListBase *r_hit_list)
+static void raycast_obj_fn(SnapObjectContext *sctx,
+                           bool use_obedit,
+                           bool use_backface_culling,
+                           Object *ob,
+                           float obmat[4][4],
+                           void *data)
 {
+  struct RaycastObjUserData *dt = data;
+  const uint ob_index = dt->ob_index++;
+  bool use_occlusion_test = dt->use_occlusion_test;
+  /* read/write args */
+  float *ray_depth = dt->ray_depth;
+
   bool retval = false;
   if (use_occlusion_test) {
     if (use_obedit && sctx->use_v3d && XRAY_FLAG_ENABLED(sctx->v3d_data.v3d)) {
       /* Use of occlude geometry in editing mode disabled. */
-      return false;
+      return;
     }
 
     if (ELEM(ob->dt, OB_BOUNDBOX, OB_WIRE)) {
       /* Do not hit objects that are in wire or bounding box
        * display mode. */
-      return false;
+      return;
     }
   }
 
@@ -967,18 +978,18 @@ static bool raycastObj(SnapObjectContext *sctx,
           /* Operators only update the editmesh looptris of the original mesh. */
           BMEditMesh *em_orig = BKE_editmesh_from_object(DEG_get_original_object(ob));
           retval = raycastEditMesh(sctx,
-                                   ray_start,
-                                   ray_dir,
+                                   dt->ray_start,
+                                   dt->ray_dir,
                                    ob,
                                    em_orig,
                                    obmat,
                                    ob_index,
                                    use_backface_culling,
                                    ray_depth,
-                                   r_loc,
-                                   r_no,
-                                   r_index,
-                                   r_hit_list);
+                                   dt->r_loc,
+                                   dt->r_no,
+                                   dt->r_index,
+                                   dt->r_hit_list);
           break;
         }
         else {
@@ -990,8 +1001,8 @@ static bool raycastObj(SnapObjectContext *sctx,
         }
       }
       retval = raycastMesh(sctx,
-                           ray_start,
-                           ray_dir,
+                           dt->ray_start,
+                           dt->ray_dir,
                            ob,
                            me,
                            obmat,
@@ -999,10 +1010,10 @@ static bool raycastObj(SnapObjectContext *sctx,
                            use_hide,
                            use_backface_culling,
                            ray_depth,
-                           r_loc,
-                           r_no,
-                           r_index,
-                           r_hit_list);
+                           dt->r_loc,
+                           dt->r_no,
+                           dt->r_index,
+                           dt->r_hit_list);
       break;
     }
     case OB_CURVE:
@@ -1011,8 +1022,8 @@ static bool raycastObj(SnapObjectContext *sctx,
       Mesh *mesh_eval = BKE_object_get_evaluated_mesh(ob);
       if (mesh_eval) {
         retval = raycastMesh(sctx,
-                             ray_start,
-                             ray_dir,
+                             dt->ray_start,
+                             dt->ray_dir,
                              ob,
                              mesh_eval,
                              obmat,
@@ -1020,70 +1031,24 @@ static bool raycastObj(SnapObjectContext *sctx,
                              false,
                              use_backface_culling,
                              ray_depth,
-                             r_loc,
-                             r_no,
-                             r_index,
-                             r_hit_list);
+                             dt->r_loc,
+                             dt->r_no,
+                             dt->r_index,
+                             dt->r_hit_list);
         break;
       }
     }
   }
 
   if (retval) {
-    if (r_ob) {
-      *r_ob = ob;
+    if (dt->r_ob) {
+      *dt->r_ob = ob;
     }
-    if (r_obmat) {
-      copy_m4_m4(r_obmat, obmat);
+    if (dt->r_obmat) {
+      copy_m4_m4(dt->r_obmat, obmat);
     }
-    return true;
+    dt->ret = true;
   }
-
-  return false;
-}
-
-struct RaycastObjUserData {
-  const float *ray_start;
-  const float *ray_dir;
-  uint ob_index;
-  /* read/write args */
-  float *ray_depth;
-  /* return args */
-  float *r_loc;
-  float *r_no;
-  int *r_index;
-  Object **r_ob;
-  float (*r_obmat)[4];
-  ListBase *r_hit_list;
-  bool use_occlusion_test;
-  bool ret;
-};
-
-static void raycast_obj_cb(SnapObjectContext *sctx,
-                           bool use_obedit,
-                           bool use_backface_culling,
-                           Object *ob,
-                           float obmat[4][4],
-                           void *data)
-{
-  struct RaycastObjUserData *dt = data;
-
-  dt->ret |= raycastObj(sctx,
-                        dt->ray_start,
-                        dt->ray_dir,
-                        ob,
-                        obmat,
-                        dt->ob_index++,
-                        use_obedit,
-                        dt->use_occlusion_test,
-                        use_backface_culling,
-                        dt->ray_depth,
-                        dt->r_loc,
-                        dt->r_no,
-                        dt->r_index,
-                        dt->r_ob,
-                        dt->r_obmat,
-                        dt->r_hit_list);
 }
 
 /**
@@ -1144,7 +1109,7 @@ static bool raycastObjects(SnapObjectContext *sctx,
       .ret = false,
   };
 
-  iter_snap_objects(sctx, depsgraph, params, raycast_obj_cb, &data);
+  iter_snap_objects(sctx, depsgraph, params, raycast_obj_fn, &data);
 
   return data.ret;
 }
@@ -2644,26 +2609,32 @@ static short snapEditMesh(SnapObjectContext *sctx,
   return 0;
 }
 
+struct SnapObjUserData {
+  SnapData *snapdata;
+  /* read/write args */
+  float *dist_px;
+  /* return args */
+  float *r_loc;
+  float *r_no;
+  int *r_index;
+  Object **r_ob;
+  float (*r_obmat)[4];
+  short ret;
+};
+
 /**
  * \param use_obedit: Uses the coordinates of BMesh (if any) to do the snapping;
  *
  * \note Duplicate args here are documented at #snapObjectsRay
  */
-static short snapObject(SnapObjectContext *sctx,
-                        SnapData *snapdata,
-                        Object *ob,
-                        float obmat[4][4],
+static void sanp_obj_fn(SnapObjectContext *sctx,
                         bool use_obedit,
                         bool use_backface_culling,
-                        /* read/write args */
-                        float *dist_px,
-                        /* return args */
-                        float r_loc[3],
-                        float r_no[3],
-                        int *r_index,
-                        Object **r_ob,
-                        float r_obmat[4][4])
+                        Object *ob,
+                        float obmat[4][4],
+                        void *data)
 {
+  struct SnapObjUserData *dt = data;
   short retval = 0;
 
   switch (ob->type) {
@@ -2674,15 +2645,15 @@ static short snapObject(SnapObjectContext *sctx,
           /* Operators only update the editmesh looptris of the original mesh. */
           BMEditMesh *em_orig = BKE_editmesh_from_object(DEG_get_original_object(ob));
           retval = snapEditMesh(sctx,
-                                snapdata,
+                                dt->snapdata,
                                 ob,
                                 em_orig,
                                 obmat,
                                 use_backface_culling,
-                                dist_px,
-                                r_loc,
-                                r_no,
-                                r_index);
+                                dt->dist_px,
+                                dt->r_loc,
+                                dt->r_no,
+                                dt

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list