[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [32213] trunk/blender/source/blender/ editors: Cleanup of Auto-Keyframing code:

Joshua Leung aligorith at gmail.com
Thu Sep 30 13:56:39 CEST 2010


Revision: 32213
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=32213
Author:   aligorith
Date:     2010-09-30 13:56:39 +0200 (Thu, 30 Sep 2010)

Log Message:
-----------
Cleanup of Auto-Keyframing code:

Moved duplicated code out to a special new function so that this doesn't need to be copied all over for each transform op that needs this.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/animation/anim_channels_edit.c
    trunk/blender/source/blender/editors/animation/keyingsets.c
    trunk/blender/source/blender/editors/armature/editarmature.c
    trunk/blender/source/blender/editors/armature/poselib.c
    trunk/blender/source/blender/editors/armature/poseobject.c
    trunk/blender/source/blender/editors/include/ED_keyframing.h
    trunk/blender/source/blender/editors/object/object_transform.c

Modified: trunk/blender/source/blender/editors/animation/anim_channels_edit.c
===================================================================
--- trunk/blender/source/blender/editors/animation/anim_channels_edit.c	2010-09-30 11:49:48 UTC (rev 32212)
+++ trunk/blender/source/blender/editors/animation/anim_channels_edit.c	2010-09-30 11:56:39 UTC (rev 32213)
@@ -155,6 +155,7 @@
 			case ANIMTYPE_DSMESH:
 			{
 				/* need to verify that this data is valid for now */
+				// XXX: ale may be null!
 				if (ale->adt)
 					ale->adt->flag |= ADT_UI_ACTIVE;
 			}
@@ -462,7 +463,7 @@
 				break;
 			
 			/* store this level as the 'old' level now */
-			prevLevel= level;
+			prevLevel= level; // XXX: prevLevel is unused
 		}
 	}
 }
@@ -1899,7 +1900,6 @@
 		return OPERATOR_CANCELLED;
 		
 	/* get useful pointers from animation context data */
-	scene= ac.scene;
 	ar= ac.ar;
 	v2d= &ar->v2d;
 	

Modified: trunk/blender/source/blender/editors/animation/keyingsets.c
===================================================================
--- trunk/blender/source/blender/editors/animation/keyingsets.c	2010-09-30 11:49:48 UTC (rev 32212)
+++ trunk/blender/source/blender/editors/animation/keyingsets.c	2010-09-30 11:56:39 UTC (rev 32213)
@@ -676,6 +676,21 @@
 		return 0;
 }
 
+/* Get Keying Set to use for Auto-Keyframing some transforms */
+KeyingSet *ANIM_get_keyingset_for_autokeying(Scene *scene, const char *tranformKSName)
+{
+	/* get KeyingSet to use 
+	 *	- use the active KeyingSet if defined (and user wants to use it for all autokeying), 
+	 * 	  or otherwise key transforms only
+	 */
+	if (IS_AUTOKEY_FLAG(ONLYKEYINGSET) && (scene->active_keyingset))
+		return ANIM_scene_get_active_keyingset(scene);
+	else if (IS_AUTOKEY_FLAG(INSERTAVAIL))
+		return ANIM_builtin_keyingset_get_named(NULL, "Available");
+	else 
+		return ANIM_builtin_keyingset_get_named(NULL, tranformKSName);
+}
+
 /* Menu of All Keying Sets ----------------------------- */
 
 /* Create (and show) a menu containing all the Keying Sets which can be used in the current context */

Modified: trunk/blender/source/blender/editors/armature/editarmature.c
===================================================================
--- trunk/blender/source/blender/editors/armature/editarmature.c	2010-09-30 11:49:48 UTC (rev 32212)
+++ trunk/blender/source/blender/editors/armature/editarmature.c	2010-09-30 11:56:39 UTC (rev 32213)
@@ -4948,19 +4948,9 @@
 	
 	/* perform autokeying on the bones if needed */
 	if (autokey) {
-		KeyingSet *ks;
+		/* get KeyingSet to use */
+		KeyingSet *ks = ANIM_get_keyingset_for_autokeying(scene, "Scaling");
 		
-		/* get KeyingSet to use 
-		 *	- use the active KeyingSet if defined (and user wants to use it for all autokeying), 
-		 * 	  or otherwise key transforms only
-		 */
-		if (IS_AUTOKEY_FLAG(ONLYKEYINGSET) && (scene->active_keyingset))
-			ks = ANIM_scene_get_active_keyingset(scene);
-		else if (IS_AUTOKEY_FLAG(INSERTAVAIL))
-			ks = ANIM_builtin_keyingset_get_named(NULL, "Available");
-		else 
-			ks = ANIM_builtin_keyingset_get_named(NULL, "Scaling");
-		
 		/* insert keyframes */
 		ANIM_apply_keyingset(C, NULL, NULL, ks, MODIFYKEY_MODE_INSERT, (float)CFRA);
 		
@@ -5027,19 +5017,9 @@
 	
 	/* perform autokeying on the bones if needed */
 	if (autokey) {
-		KeyingSet *ks;
+		/* get KeyingSet to use */
+		KeyingSet *ks = ANIM_get_keyingset_for_autokeying(scene, "Location");
 		
-		/* get KeyingSet to use 
-		 *	- use the active KeyingSet if defined (and user wants to use it for all autokeying), 
-		 * 	  or otherwise key transforms only
-		 */
-		if (IS_AUTOKEY_FLAG(ONLYKEYINGSET) && (scene->active_keyingset))
-			ks = ANIM_scene_get_active_keyingset(scene);
-		else if (IS_AUTOKEY_FLAG(INSERTAVAIL))
-			ks = ANIM_builtin_keyingset_get_named(NULL, "Available");
-		else 
-			ks = ANIM_builtin_keyingset_get_named(NULL, "Location");
-		
 		/* insert keyframes */
 		ANIM_apply_keyingset(C, NULL, NULL, ks, MODIFYKEY_MODE_INSERT, (float)CFRA);
 		
@@ -5190,19 +5170,9 @@
 	
 	/* perform autokeying on the bones if needed */
 	if (autokey) {
-		KeyingSet *ks;
+		/* get KeyingSet to use */
+		KeyingSet *ks = ANIM_get_keyingset_for_autokeying(scene, "Rotation");
 		
-		/* get KeyingSet to use 
-		 *	- use the active KeyingSet if defined (and user wants to use it for all autokeying), 
-		 * 	  or otherwise key transforms only
-		 */
-		if (IS_AUTOKEY_FLAG(ONLYKEYINGSET) && (scene->active_keyingset))
-			ks = ANIM_scene_get_active_keyingset(scene);
-		else if (IS_AUTOKEY_FLAG(INSERTAVAIL))
-			ks = ANIM_builtin_keyingset_get_named(NULL, "Available");
-		else 
-			ks = ANIM_builtin_keyingset_get_named(NULL, "Rotation");
-		
 		/* insert keyframes */
 		ANIM_apply_keyingset(C, NULL, NULL, ks, MODIFYKEY_MODE_INSERT, (float)CFRA);
 		

Modified: trunk/blender/source/blender/editors/armature/poselib.c
===================================================================
--- trunk/blender/source/blender/editors/armature/poselib.c	2010-09-30 11:49:48 UTC (rev 32212)
+++ trunk/blender/source/blender/editors/armature/poselib.c	2010-09-30 11:56:39 UTC (rev 32213)
@@ -773,21 +773,9 @@
 			if (pchan) {
 				if (autokeyframe_cfra_can_key(scene, &pld->ob->id)) {
 					ListBase dsources = {NULL, NULL};
-					KeyingSet *ks = NULL;
 					
-					/* get KeyingSet to use 
-					 *	- use the active KeyingSet if defined (and user wants to use it for all autokeying), 
-					 * 	  or otherwise key transforms only
-					 */
-					if (poselib_ks_locrotscale == NULL)
-						poselib_ks_locrotscale= ANIM_builtin_keyingset_get_named(NULL, "LocRotScale");
-					 
-					if (IS_AUTOKEY_FLAG(ONLYKEYINGSET) && (scene->active_keyingset))
-						ks = ANIM_scene_get_active_keyingset(scene);
-					else if (IS_AUTOKEY_FLAG(INSERTAVAIL))
-						ks = ANIM_builtin_keyingset_get_named(NULL, "Available");
-					else 
-						ks = ANIM_builtin_keyingset_get_named(NULL, "LocRotScale");
+					/* get KeyingSet to use */
+					KeyingSet *ks = ANIM_get_keyingset_for_autokeying(scene, "LocRotScale");
 					
 					/* now insert the keyframe(s) using the Keying Set
 					 *	1) add datasource override for the PoseChannel

Modified: trunk/blender/source/blender/editors/armature/poseobject.c
===================================================================
--- trunk/blender/source/blender/editors/armature/poseobject.c	2010-09-30 11:49:48 UTC (rev 32212)
+++ trunk/blender/source/blender/editors/armature/poseobject.c	2010-09-30 11:56:39 UTC (rev 32213)
@@ -1012,18 +1012,9 @@
 				/* keyframing tagging */
 				if (autokeyframe_cfra_can_key(scene, &ob->id)) {
 					ListBase dsources = {NULL, NULL};
-					KeyingSet *ks = NULL;
 					
-					/* get KeyingSet to use 
-					 *	- use the active KeyingSet if defined (and user wants to use it for all autokeying), 
-					 * 	  or otherwise key transforms only
-					 */
-					if (IS_AUTOKEY_FLAG(ONLYKEYINGSET) && (scene->active_keyingset))
-						ks = ANIM_scene_get_active_keyingset(scene);
-					else if (IS_AUTOKEY_FLAG(INSERTAVAIL))
-						ks = ANIM_builtin_keyingset_get_named(NULL, "Available");
-					else 
-						ks = ANIM_builtin_keyingset_get_named(NULL, "LocRotScale");
+					/* get KeyingSet to use */
+					KeyingSet *ks = ANIM_get_keyingset_for_autokeying(scene, "LocRotScale");
 					
 					/* now insert the keyframe(s) using the Keying Set
 					 *	1) add datasource override for the PoseChannel

Modified: trunk/blender/source/blender/editors/include/ED_keyframing.h
===================================================================
--- trunk/blender/source/blender/editors/include/ED_keyframing.h	2010-09-30 11:49:48 UTC (rev 32212)
+++ trunk/blender/source/blender/editors/include/ED_keyframing.h	2010-09-30 11:56:39 UTC (rev 32213)
@@ -193,6 +193,9 @@
 /* Get the index of the Keying Set provided, for the given Scene */
 int ANIM_scene_get_keyingset_index(struct Scene *scene, struct KeyingSet *ks);
 
+/* Get Keying Set to use for Auto-Keyframing some transforms */
+struct KeyingSet *ANIM_get_keyingset_for_autokeying(struct Scene *scene, const char *tranformKSName);
+
 /* Create (and show) a menu containing all the Keying Sets which can be used in the current context */
 void ANIM_keying_sets_menu_setup(struct bContext *C, char title[], char op_name[]);
 

Modified: trunk/blender/source/blender/editors/object/object_transform.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_transform.c	2010-09-30 11:49:48 UTC (rev 32212)
+++ trunk/blender/source/blender/editors/object/object_transform.c	2010-09-30 11:56:39 UTC (rev 32213)
@@ -68,18 +68,9 @@
 {
 	Main *bmain = CTX_data_main(C);
 	Scene *scene = CTX_data_scene(C);
-	KeyingSet *ks;
 	
-	/* get KeyingSet to use 
-	 *	- use the active KeyingSet if defined (and user wants to use it for all autokeying), 
-	 * 	  or otherwise key transforms only
-	 */
-	if (IS_AUTOKEY_FLAG(ONLYKEYINGSET) && (scene->active_keyingset))
-		ks = ANIM_scene_get_active_keyingset(scene);
-	else if (IS_AUTOKEY_FLAG(INSERTAVAIL))
-		ks = ANIM_builtin_keyingset_get_named(NULL, "Available");
-	else 
-		ks = ANIM_builtin_keyingset_get_named(NULL, "Location");
+	/* get KeyingSet to use */
+	KeyingSet *ks = ANIM_get_keyingset_for_autokeying(scene, "Location");
 	
 	/* clear location of selected objects if not in weight-paint mode */
 	CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) {
@@ -138,18 +129,9 @@
 {
 	Main *bmain= CTX_data_main(C);
 	Scene *scene= CTX_data_scene(C);
-	KeyingSet *ks;
 	
-	/* get KeyingSet to use 
-	 *	- use the active KeyingSet if defined (and user wants to use it for all autokeying), 
-	 * 	  or otherwise key transforms only
-	 */
-	if (IS_AUTOKEY_FLAG(ONLYKEYINGSET) && (scene->active_keyingset))
-		ks = ANIM_scene_get_active_keyingset(scene);
-	else if (IS_AUTOKEY_FLAG(INSERTAVAIL))
-		ks = ANIM_builtin_keyingset_get_named(NULL, "Available");
-	else 
-		ks = ANIM_builtin_keyingset_get_named(NULL, "Rotation");
+	/* get KeyingSet to use */
+	KeyingSet *ks = ANIM_get_keyingset_for_autokeying(scene, "Rotation");
 	
 	/* clear rotation of selected objects if not in weight-paint mode */
 	CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) {
@@ -292,18 +274,9 @@
 {
 	Main *bmain= CTX_data_main(C);
 	Scene *scene= CTX_data_scene(C);
-	KeyingSet *ks;
 	
-	/* get KeyingSet to use 
-	 *	- use the active KeyingSet if defined (and user wants to use it for all autokeying), 
-	 * 	  or otherwise key transforms only
-	 */

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list