diff options
author | Ton Roosendaal <ton@blender.org> | 2006-11-07 21:34:32 +0300 |
---|---|---|
committer | Ton Roosendaal <ton@blender.org> | 2006-11-07 21:34:32 +0300 |
commit | 2e93510a6b137487c89d35f09065f9f1cad81c72 (patch) | |
tree | 648f6383668fbbe2219f1e584982f506d1b95fab /source/blender/src/editipo_mods.c | |
parent | a221ddcf9bb44d81037fa1cff3fddb70e4e3f521 (diff) |
Patch #5028. by Joshua Leung (aligorith)
Key snapping in Action Window, cleanup and added option to snap to
current frame.
Diffstat (limited to 'source/blender/src/editipo_mods.c')
-rw-r--r-- | source/blender/src/editipo_mods.c | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/source/blender/src/editipo_mods.c b/source/blender/src/editipo_mods.c index 39a05573145..581d293b079 100644 --- a/source/blender/src/editipo_mods.c +++ b/source/blender/src/editipo_mods.c @@ -555,16 +555,33 @@ void sethandles_ipo_keys(Ipo *ipo, int code) } } -static int snap_bezier(BezTriple *bezt) +static int snap_bezier_nearest(BezTriple *bezt) { if(bezt->f2 & SELECT) bezt->vec[1][0]= (float)(floor(bezt->vec[1][0]+0.5)); return 0; } -void snap_ipo_keys(Ipo *ipo) +static int snap_bezier_cframe(BezTriple *bezt) { - ipo_keys_bezier_loop(ipo, snap_bezier, calchandles_ipocurve); + if(bezt->f2 & SELECT) + bezt->vec[1][0]= (float)CFRA; + return 0; +} + +void snap_ipo_keys(Ipo *ipo, short snaptype) +{ + switch (snaptype) { + case 1: /* snap to nearest */ + ipo_keys_bezier_loop(ipo, snap_bezier_nearest, calchandles_ipocurve); + break; + case 2: /* snap to current frame */ + ipo_keys_bezier_loop(ipo, snap_bezier_cframe, calchandles_ipocurve); + break; + default: /* just in case */ + ipo_keys_bezier_loop(ipo, snap_bezier_nearest, calchandles_ipocurve); + break; + } } static void ipo_curves_auto_horiz(void) |