diff options
author | Dalai Felinto <dfelinto@gmail.com> | 2017-04-11 16:14:49 +0300 |
---|---|---|
committer | Dalai Felinto <dfelinto@gmail.com> | 2017-04-11 16:46:01 +0300 |
commit | 9a303d5db789198f8ba3e46d1e482a6b22a67ffe (patch) | |
tree | 0c1085cd5a4ab60a8aa7d5655fc4edaaf2ef5cc8 /source/blender/editors/transform | |
parent | 513aacbdb6e425005eee6d83fdca0f06f6e6e374 (diff) |
Bring snapping back (Base / BaseLegacy)
Diffstat (limited to 'source/blender/editors/transform')
-rw-r--r-- | source/blender/editors/transform/transform_snap.c | 8 | ||||
-rw-r--r-- | source/blender/editors/transform/transform_snap_object.c | 16 |
2 files changed, 13 insertions, 11 deletions
diff --git a/source/blender/editors/transform/transform_snap.c b/source/blender/editors/transform/transform_snap.c index 02975f73816..a37ca83dcf1 100644 --- a/source/blender/editors/transform/transform_snap.c +++ b/source/blender/editors/transform/transform_snap.c @@ -78,7 +78,7 @@ #include "transform.h" /* this should be passed as an arg for use in snap functions */ -#undef BASACT +#undef BASACT_NEW /* use half of flt-max so we can scale up without an exception */ @@ -503,8 +503,8 @@ static void initSnappingMode(TransInfo *t) { ToolSettings *ts = t->settings; Object *obedit = t->obedit; - Scene *scene = t->scene; - BaseLegacy *base_act = scene->basact; + SceneLayer *sl = t->sl; + Base *base_act = sl->basact; if (t->spacetype == SPACE_NODE) { /* force project off when not supported */ @@ -585,7 +585,7 @@ static void initSnappingMode(TransInfo *t) if (t->spacetype == SPACE_VIEW3D) { if (t->tsnap.object_context == NULL) { t->tsnap.object_context = ED_transform_snap_object_context_create_view3d( - G.main, t->scene, 0, + G.main, t->scene, t->sl, 0, t->ar, t->view); ED_transform_snap_object_context_set_editmesh_callbacks( diff --git a/source/blender/editors/transform/transform_snap_object.c b/source/blender/editors/transform/transform_snap_object.c index 587a62d017d..58474bedb52 100644 --- a/source/blender/editors/transform/transform_snap_object.c +++ b/source/blender/editors/transform/transform_snap_object.c @@ -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. @@ -1770,7 +1771,7 @@ static bool snapObjectsRay( * * To solve that problem, we do it first as an exception. * */ - BaseLegacy *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) { Object *ob = base_act->object; @@ -1791,11 +1792,11 @@ static bool snapObjectsRay( ignore_object_active = true; break; } - for (BaseLegacy *base = sctx->scene->base.first; base != NULL; base = base->next) { - if ((BASE_VISIBLE_BGMODE(sctx->v3d_data.v3d, sctx->scene, base)) && + 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_legacy & (SELECT | BA_WAS_SEL))) || + !((ignore_object_selected && (((base->flag & BASE_SELECTED) != 0) || ((base->flag_legacy & BA_WAS_SEL)))) || (ignore_object_active && base == base_act))) { Object *ob = base->object; @@ -1840,7 +1841,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__); @@ -1848,6 +1849,7 @@ SnapObjectContext *ED_transform_snap_object_context_create( 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__); @@ -1856,11 +1858,11 @@ SnapObjectContext *ED_transform_snap_object_context_create( } 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; |