From 9f251ce3016b5b37e294c35f695e2b6345937764 Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Tue, 1 Dec 2009 18:26:18 +0000 Subject: Additive snap for Transform. Easy snapping between two vertices, in the middle of three faces, ... A to add the current snapping point to the list Alt-A to remove the last one The resulting snapping point is the average of all snap points in the list (and the one under the mouse pointer, if valid). Snapping between two verts is a matter of moving over the first, pressing A, moving over the other, confirming transform. --- source/blender/editors/transform/transform.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'source/blender/editors/transform/transform.c') diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c index 2e1922d8a07..cbcb3953f49 100644 --- a/source/blender/editors/transform/transform.c +++ b/source/blender/editors/transform/transform.c @@ -517,6 +517,8 @@ static char *transform_to_undostr(TransInfo *t) #define TFM_MODAL_PLANE_Y 13 #define TFM_MODAL_PLANE_Z 14 #define TFM_MODAL_CONS_OFF 15 +#define TFM_MODAL_ADD_SNAP 16 +#define TFM_MODAL_REMOVE_SNAP 17 /* called in transform_ops.c, on each regeneration of keymaps */ void transform_modal_keymap(wmKeyConfig *keyconf) @@ -537,6 +539,8 @@ void transform_modal_keymap(wmKeyConfig *keyconf) {TFM_MODAL_PLANE_Y, "PLANE_Y", 0, "Orientation Y plane", ""}, {TFM_MODAL_PLANE_Z, "PLANE_Z", 0, "Orientation Z plane", ""}, {TFM_MODAL_CONS_OFF, "CONS_OFF", 0, "Remove Constraints", ""}, + {TFM_MODAL_ADD_SNAP, "ADD_SNAP", 0, "Add Snap Point", ""}, + {TFM_MODAL_REMOVE_SNAP, "REMOVE_SNAP", 0, "Remove Last Snap Point", ""}, {0, NULL, 0, NULL, NULL}}; wmKeyMap *keymap= WM_modalkeymap_get(keyconf, "Transform Modal Map"); @@ -558,6 +562,9 @@ void transform_modal_keymap(wmKeyConfig *keyconf) WM_modalkeymap_add_item(keymap, LEFTCTRLKEY, KM_CLICK, KM_ANY, 0, TFM_MODAL_SNAP_TOGGLE); + WM_modalkeymap_add_item(keymap, AKEY, KM_PRESS, 0, 0, TFM_MODAL_ADD_SNAP); + WM_modalkeymap_add_item(keymap, AKEY, KM_PRESS, KM_ALT, 0, TFM_MODAL_REMOVE_SNAP); + /* assign map to operators */ WM_modalkeymap_assign(keymap, "TFM_OT_transform"); WM_modalkeymap_assign(keymap, "TFM_OT_translate"); @@ -743,6 +750,14 @@ int transformEvent(TransInfo *t, wmEvent *event) t->redraw = 1; } break; + case TFM_MODAL_ADD_SNAP: + addSnapPoint(t); + t->redraw = 1; + break; + case TFM_MODAL_REMOVE_SNAP: + removeSnapPoint(t); + t->redraw = 1; + break; default: handled = 0; break; -- cgit v1.2.3