diff options
author | Campbell Barton <ideasman42@gmail.com> | 2011-06-17 17:02:23 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2011-06-17 17:02:23 +0400 |
commit | b306566a44be30fb33d6079c0b2a02b1161ff88c (patch) | |
tree | 2ea211fb0ff1f417dd1ef6a8fddb2ca4c287e0fe /source/blender/editors/transform | |
parent | 68a12c74b6ebd64f85b22b13902a467bc5d6b496 (diff) |
fix [#25598] projection surface snap issue
Excuse the thrashing, this is from r35438, reverted r35444 under the _wrong_ impression Martin considered unacceptable.
Diffstat (limited to 'source/blender/editors/transform')
-rw-r--r-- | source/blender/editors/transform/transform.h | 3 | ||||
-rw-r--r-- | source/blender/editors/transform/transform_snap.c | 8 |
2 files changed, 9 insertions, 2 deletions
diff --git a/source/blender/editors/transform/transform.h b/source/blender/editors/transform/transform.h index 0e0d452a9e6..d8e750acb88 100644 --- a/source/blender/editors/transform/transform.h +++ b/source/blender/editors/transform/transform.h @@ -95,7 +95,8 @@ typedef struct TransSnap { short modePoint; short modeSelect; short align; - short project; + char project; + char project_self; short peel; short status; float snapPoint[3]; /* snapping from this point */ diff --git a/source/blender/editors/transform/transform_snap.c b/source/blender/editors/transform/transform_snap.c index e3e5e012920..c4d6eb02028 100644 --- a/source/blender/editors/transform/transform_snap.c +++ b/source/blender/editors/transform/transform_snap.c @@ -392,7 +392,7 @@ static void initSnappingMode(TransInfo *t) } else { - t->tsnap.modeSelect = SNAP_ALL; + t->tsnap.modeSelect = t->tsnap.project_self ? SNAP_ALL : SNAP_NOT_OBEDIT; } } /* Particles edit mode*/ @@ -457,6 +457,11 @@ void initSnapping(TransInfo *t, wmOperator *op) { t->tsnap.project = RNA_boolean_get(op->ptr, "use_snap_project"); } + + if (RNA_struct_find_property(op->ptr, "use_snap_project_self")) + { + t->tsnap.project = RNA_boolean_get(op->ptr, "use_snap_project_self"); + } } } /* use scene defaults only when transform is modal */ @@ -468,6 +473,7 @@ void initSnapping(TransInfo *t, wmOperator *op) t->tsnap.align = ((t->settings->snap_flag & SCE_SNAP_ROTATE) == SCE_SNAP_ROTATE); t->tsnap.project = ((t->settings->snap_flag & SCE_SNAP_PROJECT) == SCE_SNAP_PROJECT); + t->tsnap.project_self = !((t->settings->snap_flag & SCE_SNAP_PROJECT_NO_SELF) == SCE_SNAP_PROJECT_NO_SELF); t->tsnap.peel = ((t->settings->snap_flag & SCE_SNAP_PROJECT) == SCE_SNAP_PROJECT); } |