[Bf-blender-cvs] [237c53f] master: Only selected keys will get cleaned by the action and graph clean operators

Antony Riakiotakis noreply at git.blender.org
Fri Apr 10 12:45:29 CEST 2015


Commit: 237c53fbf101012b545a46a2a72f77b76727a579
Author: Antony Riakiotakis
Date:   Fri Apr 10 12:44:54 2015 +0200
Branches: master
https://developer.blender.org/rB237c53fbf101012b545a46a2a72f77b76727a579

Only selected keys will get cleaned by the action and graph clean
operators

===================================================================

M	source/blender/editors/animation/keyframes_general.c

===================================================================

diff --git a/source/blender/editors/animation/keyframes_general.c b/source/blender/editors/animation/keyframes_general.c
index 2d869d2..02e16ff 100644
--- a/source/blender/editors/animation/keyframes_general.c
+++ b/source/blender/editors/animation/keyframes_general.c
@@ -199,13 +199,17 @@ void clean_fcurve(FCurve *fcu, float thresh)
 	/* now insert first keyframe, as it should be ok */
 	bezt = old_bezts;
 	insert_vert_fcurve(fcu, bezt->vec[1][0], bezt->vec[1][1], 0);
+	if (!(bezt->f2 & SELECT)) {
+		lastb = fcu->bezt;
+		lastb->f1 = lastb->f2 = lastb->f3 = 0;
+	}
 	
 	/* Loop through BezTriples, comparing them. Skip any that do 
 	 * not fit the criteria for "ok" points.
 	 */
 	for (i = 1; i < totCount; i++) {
 		float prev[2], cur[2], next[2];
-		
+
 		/* get BezTriples and their values */
 		if (i < (totCount - 1)) {
 			beztn = (old_bezts + (i + 1));
@@ -217,10 +221,17 @@ void clean_fcurve(FCurve *fcu, float thresh)
 		}
 		lastb = (fcu->bezt + (fcu->totvert - 1));
 		bezt = (old_bezts + i);
-		
+
 		/* get references for quicker access */
 		prev[0] = lastb->vec[1][0]; prev[1] = lastb->vec[1][1];
 		cur[0] = bezt->vec[1][0]; cur[1] = bezt->vec[1][1];
+
+		if (!(bezt->f2 & SELECT)) {
+			insert_vert_fcurve(fcu, cur[0], cur[1], 0);
+			lastb = (fcu->bezt + (fcu->totvert - 1));
+			lastb->f1 = lastb->f2 = lastb->f3 = 0;
+			continue;
+		}
 		
 		/* check if current bezt occurs at same time as last ok */
 		if (IS_EQT(cur[0], prev[0], thresh)) {
@@ -228,7 +239,7 @@ void clean_fcurve(FCurve *fcu, float thresh)
 			 * if there is a considerable distance between the points, and also if the 
 			 * current is further away than the next one is to the previous.
 			 */
-			if (beztn && (IS_EQT(cur[0], next[0], thresh)) && 
+			if (beztn && (IS_EQT(cur[0], next[0], thresh)) &&
 			    (IS_EQT(next[1], prev[1], thresh) == 0))
 			{
 				/* only add if current is further away from previous */




More information about the Bf-blender-cvs mailing list