Merge branch 'master' of git@git.blender.org:blender.git into blender2.8
authormano-wii <germano.costa@ig.com.br>
Fri, 14 Jul 2017 13:42:59 +0000 (10:42 -0300)
committermano-wii <germano.costa@ig.com.br>
Fri, 14 Jul 2017 13:42:59 +0000 (10:42 -0300)
1  2 
source/blender/editors/transform/transform_snap_object.c

index 2db1db24fb1acfa8073b6e7f51f92dfcbb2f4ae3,7ed60077baa32d474b7285a666b25818980a2324..a90ca01842789c62ef28e578fa3d2d266ff4db62
@@@ -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.
  
  
  #define ITER_SNAP_OBJECTS(use_obedit, ob, obmat, sctx, snap_select, obedit, CODE) \
 -      Base *base_act = sctx->scene->basact;\
 +      Base *base_act = sctx->scene_layer->basact;\
        /* Need an exception for particle edit because the base is flagged with BA_HAS_RECALC_DATA\
         * which makes the loop skip it, even the derived mesh will never change\
         *\
                obmat = ob->obmat;\
                CODE\
        }\
 -      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 &&\
 -                      !((snap_select == SNAP_NOT_SELECTED && (base->flag & (SELECT | BA_WAS_SEL))) ||\
 +      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 &&\
 +                      !((snap_select == SNAP_NOT_SELECTED && ((base->flag & BASE_SELECTED) || (base->flag_legacy & BA_WAS_SEL))) ||\
                          (snap_select == SNAP_NOT_ACTIVE && base == base_act)))\
                {\
                        Object *obj = base->object;\
-                       if (ob->transflag & OB_DUPLI) {\
+                       if (obj->transflag & OB_DUPLI) {\
                                DupliObject *dupli_ob;\
                                ListBase *lb = object_duplilist(sctx->bmain->eval_ctx, sctx->scene, obj);\
                                for (dupli_ob = lb->first; dupli_ob; dupli_ob = dupli_ob->next) {\
@@@ -2061,7 -2061,7 +2061,7 @@@ static bool snapObjectsRay
   * \{ */
  
  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;