Merge branch 'master' into blender2.8
authorCampbell Barton <ideasman42@gmail.com>
Wed, 12 Jul 2017 03:59:13 +0000 (13:59 +1000)
committerCampbell Barton <ideasman42@gmail.com>
Wed, 12 Jul 2017 03:59:13 +0000 (13:59 +1000)
1  2 
source/blender/editors/transform/transform_snap_object.c

index 2c5052039d251f9bdc6f98e87b62215e958f6e2c,fa17ab34cf99643169fda47b47ab1d9079c7cea8..8378812c4b03be35ec0ee04e843c8ca11eb770e4
@@@ -101,7 -101,6 +101,7 @@@ typedef struct SnapObjectData_EditMesh 
  struct SnapObjectContext {
        Main *bmain;
        Scene *scene;
 +      SceneLayer *scene_layer;
        int flag;
  
        /* Optional: when performing screen-space projection.
@@@ -180,7 -179,7 +180,7 @@@ static void create_object_list
         *
         * To solve that problem, we do it first as an exception.
         * */
 -      Base *base_act = sctx->scene->basact;
 +      Base *base_act = sctx->scene_layer->basact;
        if (base_act && base_act->object && base_act->object->mode & OB_MODE_PARTICLE_EDIT) {
                struct SnapObject *sobj = MEM_mallocN(sizeof(*sobj), __func__);
                sobj->use_obedit = false;
                BLI_addtail(r_obj_list, sobj);
        }
  
 -      for (Base *base = sctx->scene->base.first; base != NULL; base = base->next) {
 -              if ((BASE_VISIBLE_BGMODE(sctx->v3d_data.v3d, sctx->scene, base)) &&
 -                  (base->flag & (BA_HAS_RECALC_OB | BA_HAS_RECALC_DATA)) == 0 &&
 +      for (Base *base = sctx->scene_layer->object_bases.first; base != NULL; base = base->next) {
 +              if ((BASE_VISIBLE_NEW(base)) && (base->flag_legacy & (BA_HAS_RECALC_OB | BA_HAS_RECALC_DATA)) == 0 &&
  
 -                      !((ignore_object_selected && (base->flag & (SELECT | BA_WAS_SEL))) ||
 -                        (ignore_object_active && base == base_act)))
 +                      !((ignore_object_selected && ((base->flag & BASE_SELECTED) || (base->flag_legacy & BA_WAS_SEL))) ||
 +                      (ignore_object_active && base == base_act)))
                {
                        Object *ob = base->object;
  
@@@ -262,8 -262,7 +262,7 @@@ MINLINE float depth_get(const float co[
        return dot_v3v3(dvec, ray_dir);
  }
  
- static float dist_aabb_to_plane(
+ static float UNUSED_FUNCTION(dist_aabb_to_plane)(
          const float bbmin[3], const float bbmax[3],
          const float plane_co[3], const float plane_no[3])
  {
@@@ -1654,7 -1653,7 +1653,7 @@@ static bool snapDerivedMesh
          /* read/write args */
          float *ray_depth, float *dist_px,
          /* return args */
-         float r_loc[3], float r_no[3], int *r_index)
+         float r_loc[3], float r_no[3])
  {
        bool retval = false;
  
@@@ -1819,7 -1818,7 +1818,7 @@@ static bool snapEditMesh
          /* read/write args */
          float *ray_depth, float *dist_px,
          /* return args */
-         float r_loc[3], float r_no[3], int *r_index)
+         float r_loc[3], float r_no[3])
  {
        bool retval = false;
  
@@@ -1978,7 -1977,7 +1977,7 @@@ static bool snapObject
          /* read/write args */
          float *ray_depth, float *dist_px,
          /* return args */
-         float r_loc[3], float r_no[3], int *r_index,
+         float r_loc[3], float r_no[3],
          Object **r_ob, float r_obmat[4][4])
  {
        bool retval = false;
                        retval = snapEditMesh(
                                sctx, snapdata, ob, em, obmat,
                                ray_depth, dist_px,
-                               r_loc, r_no, r_index);
+                               r_loc, r_no);
                }
                else {
                        /* in this case we want the mesh from the editmesh, avoids stale data. see: T45978.
                        retval = snapDerivedMesh(
                                sctx, snapdata, ob, dm, obmat,
                                ray_depth, dist_px,
-                               r_loc, r_no, r_index);
+                               r_loc, r_no);
  
                        dm->release(dm);
                }
@@@ -2087,7 -2086,7 +2086,7 @@@ static bool snapObjectsRay
          /* read/write args */
          float *ray_depth, float *dist_px,
          /* return args */
-         float r_loc[3], float r_no[3], int *r_index,
+         float r_loc[3], float r_no[3],
          Object **r_ob, float r_obmat[4][4])
  {
        bool retval = false;
                retval |= snapObject(
                        sctx, snapdata, sobj->ob, sobj->obmat, sobj->use_obedit,
                        ray_depth, dist_px,
-                       r_loc, r_no, r_index, r_ob, r_obmat);
+                       r_loc, r_no, r_ob, r_obmat);
        }
  
        BLI_freelistN(&obj_list);
   * \{ */
  
  SnapObjectContext *ED_transform_snap_object_context_create(
 -        Main *bmain, Scene *scene, int flag)
 +        Main *bmain, Scene *scene, SceneLayer *sl, int flag)
  {
        SnapObjectContext *sctx = MEM_callocN(sizeof(*sctx), __func__);
  
  
        sctx->bmain = bmain;
        sctx->scene = scene;
 +      sctx->scene_layer = sl;
  
        sctx->cache.object_map = BLI_ghash_ptr_new(__func__);
        sctx->cache.mem_arena = BLI_memarena_new(BLI_MEMARENA_STD_BUFSIZE, __func__);
  }
  
  SnapObjectContext *ED_transform_snap_object_context_create_view3d(
 -        Main *bmain, Scene *scene, int flag,
 +        Main *bmain, Scene *scene, SceneLayer *sl, int flag,
          /* extra args for view3d */
          const ARegion *ar, const View3D *v3d)
  {
 -      SnapObjectContext *sctx = ED_transform_snap_object_context_create(bmain, scene, flag);
 +      SnapObjectContext *sctx = ED_transform_snap_object_context_create(bmain, scene, sl, flag);
  
        sctx->use_v3d = true;
        sctx->v3d_data.ar = ar;
@@@ -2435,7 -2433,7 +2434,7 @@@ bool ED_transform_snap_object_project_v
                return snapObjectsRay(
                        sctx, &snapdata,
                        params->snap_select, params->use_object_edit_cage,
-                       ray_depth, dist_px, r_loc, r_no, r_index, NULL, NULL);
+                       ray_depth, dist_px, r_loc, r_no, NULL, NULL);
        }
  }