[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [16519] trunk/blender/source: == Global ' Delete Key' Tool ==

Joshua Leung aligorith at gmail.com
Sun Sep 14 14:41:42 CEST 2008


Revision: 16519
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=16519
Author:   aligorith
Date:     2008-09-14 14:41:42 +0200 (Sun, 14 Sep 2008)

Log Message:
-----------
== Global 'Delete Key' Tool ==

The 'opposite' of the "Insert Key" tool. 
- Use the hotkey Ctrl-Alt-IKEY to activate.
- Only available in 3d-view and buttons window 

I've added an extra var to verify_ipo and verify_ipocurve to save having to make another duplicate of that code. Hopefully the gameengine compiles ok with this.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/bad_level_call_stubs/stubs.c
    trunk/blender/source/blender/include/BSE_editipo.h
    trunk/blender/source/blender/python/api2_2x/Constraint.c
    trunk/blender/source/blender/python/api2_2x/Object.c
    trunk/blender/source/blender/src/buttons_object.c
    trunk/blender/source/blender/src/drawipo.c
    trunk/blender/source/blender/src/editaction.c
    trunk/blender/source/blender/src/editipo.c
    trunk/blender/source/blender/src/editkey.c
    trunk/blender/source/blender/src/keyframing.c
    trunk/blender/source/blender/src/toets.c
    trunk/blender/source/gameengine/Converter/KX_BlenderSceneConverter.cpp

Modified: trunk/blender/source/blender/blenkernel/bad_level_call_stubs/stubs.c
===================================================================
--- trunk/blender/source/blender/blenkernel/bad_level_call_stubs/stubs.c	2008-09-14 09:09:10 UTC (rev 16518)
+++ trunk/blender/source/blender/blenkernel/bad_level_call_stubs/stubs.c	2008-09-14 12:41:42 UTC (rev 16519)
@@ -60,7 +60,7 @@
 
 char *getIpoCurveName( struct IpoCurve * icu );
 void insert_vert_icu(struct IpoCurve *icu, float x, float y, short fast);
-struct IpoCurve *verify_ipocurve(struct ID *id, short a, char *b, char *d, int e);
+struct IpoCurve *verify_ipocurve(struct ID *id, short a, char *b, char *d, int e, short f);
 void elbeemDebugOut(char *msg);
 void fluidsimSettingsFree(struct FluidsimSettings* sb);
 void fluidsimSettingsCopy(struct FluidsimSettings* sb);
@@ -88,7 +88,7 @@
 }
 
 
-struct IpoCurve *verify_ipocurve(struct ID *id, short a, char *b, char *d, int e)
+struct IpoCurve *verify_ipocurve(struct ID *id, short a, char *b, char *d, int e, short f)
 {
 	return 0;
 }

Modified: trunk/blender/source/blender/include/BSE_editipo.h
===================================================================
--- trunk/blender/source/blender/include/BSE_editipo.h	2008-09-14 09:09:10 UTC (rev 16518)
+++ trunk/blender/source/blender/include/BSE_editipo.h	2008-09-14 12:41:42 UTC (rev 16519)
@@ -86,8 +86,8 @@
 
 
 /* gets ipo curve, creates if needed */
-struct IpoCurve *verify_ipocurve(struct ID *, short, char *, char *, char *, int);
-struct Ipo *verify_ipo(struct ID *, short, char *, char *, char *);
+struct IpoCurve *verify_ipocurve(struct ID *, short, char *, char *, char *, int, short);
+struct Ipo *verify_ipo(struct ID *, short, char *, char *, char *, short);
 int texchannel_to_adrcode(int channel);
 
 

Modified: trunk/blender/source/blender/python/api2_2x/Constraint.c
===================================================================
--- trunk/blender/source/blender/python/api2_2x/Constraint.c	2008-09-14 09:09:10 UTC (rev 16518)
+++ trunk/blender/source/blender/python/api2_2x/Constraint.c	2008-09-14 12:41:42 UTC (rev 16519)
@@ -442,7 +442,7 @@
 		return EXPP_ReturnPyObjError( PyExc_RuntimeError,
 				"constraint doesn't belong to anything" );
 	}
-	icu= verify_ipocurve((ID *)ob, ID_CO, actname, con->name, NULL, CO_ENFORCE);
+	icu= verify_ipocurve((ID *)ob, ID_CO, actname, con->name, NULL, CO_ENFORCE, 1);
 	
 	if (!icu)
 		return EXPP_ReturnPyObjError( PyExc_RuntimeError,

Modified: trunk/blender/source/blender/python/api2_2x/Object.c
===================================================================
--- trunk/blender/source/blender/python/api2_2x/Object.c	2008-09-14 09:09:10 UTC (rev 16518)
+++ trunk/blender/source/blender/python/api2_2x/Object.c	2008-09-14 12:41:42 UTC (rev 16519)
@@ -2735,7 +2735,7 @@
 				"expects bonename, constraintname, influenceval" );
 	
 	icu = verify_ipocurve((ID *)self->object, ID_CO, boneName, constName, NULL,
-			CO_ENFORCE);
+			CO_ENFORCE, 1);
 	
 	if (!icu)
 		return EXPP_ReturnPyObjError( PyExc_RuntimeError,

Modified: trunk/blender/source/blender/src/buttons_object.c
===================================================================
--- trunk/blender/source/blender/src/buttons_object.c	2008-09-14 09:09:10 UTC (rev 16518)
+++ trunk/blender/source/blender/src/buttons_object.c	2008-09-14 12:41:42 UTC (rev 16519)
@@ -242,9 +242,9 @@
 	
 	/* adds ipo & channels & curve if needed */
 	if(con->flag & CONSTRAINT_OWN_IPO)
-		verify_ipo((ID *)ob, ID_CO, NULL, con->name, actname);
+		verify_ipo((ID *)ob, ID_CO, NULL, con->name, actname, 1);
 	else
-		verify_ipo((ID *)ob, ID_CO, actname, con->name, NULL);
+		verify_ipo((ID *)ob, ID_CO, actname, con->name, NULL, 1);
 		
 	/* make sure ipowin shows it */
 	ob->ipowin= ID_CO;
@@ -269,9 +269,9 @@
 
 	/* adds ipo & channels & curve if needed */
 	if(con->flag & CONSTRAINT_OWN_IPO)
-		icu= verify_ipocurve((ID *)ob, ID_CO, NULL, con->name, actname, CO_ENFORCE);
+		icu= verify_ipocurve((ID *)ob, ID_CO, NULL, con->name, actname, CO_ENFORCE, 1);
 	else
-		icu= verify_ipocurve((ID *)ob, ID_CO, actname, con->name, NULL, CO_ENFORCE);
+		icu= verify_ipocurve((ID *)ob, ID_CO, actname, con->name, NULL, CO_ENFORCE, 1);
 		
 	if (!icu) {
 		error("Cannot get a curve from this IPO, may be dealing with linked data");

Modified: trunk/blender/source/blender/src/drawipo.c
===================================================================
--- trunk/blender/source/blender/src/drawipo.c	2008-09-14 09:09:10 UTC (rev 16518)
+++ trunk/blender/source/blender/src/drawipo.c	2008-09-14 12:41:42 UTC (rev 16519)
@@ -1952,7 +1952,7 @@
 		ei= get_active_editipo();
 		if(ei) {
 			if(ei->icu==NULL) {
-				ei->icu= verify_ipocurve(G.sipo->from, G.sipo->blocktype, G.sipo->actname, G.sipo->constname, G.sipo->bonename, ei->adrcode);
+				ei->icu= verify_ipocurve(G.sipo->from, G.sipo->blocktype, G.sipo->actname, G.sipo->constname, G.sipo->bonename, ei->adrcode, 1);
 				if (!ei->icu) {
 					error("Could not add a driver to this curve, may be linked data!");
 					break;

Modified: trunk/blender/source/blender/src/editaction.c
===================================================================
--- trunk/blender/source/blender/src/editaction.c	2008-09-14 09:09:10 UTC (rev 16518)
+++ trunk/blender/source/blender/src/editaction.c	2008-09-14 12:41:42 UTC (rev 16519)
@@ -2154,7 +2154,7 @@
 		
 		/* loop over curves, pasting keyframes */
 		for (ico= ipo_src->curve.first; ico; ico= ico->next) {
-			icu= verify_ipocurve((ID*)ob, ico->blocktype, actname, conname, "", ico->adrcode);
+			icu= verify_ipocurve((ID*)ob, ico->blocktype, actname, conname, "", ico->adrcode, 1);
 			
 			if (icu) {
 				/* just start pasting, with the the first keyframe on the current frame, and so on */

Modified: trunk/blender/source/blender/src/editipo.c
===================================================================
--- trunk/blender/source/blender/src/editipo.c	2008-09-14 09:09:10 UTC (rev 16518)
+++ trunk/blender/source/blender/src/editipo.c	2008-09-14 12:41:42 UTC (rev 16519)
@@ -1777,113 +1777,129 @@
    - if bonename, the constname is the ipo to the constraint
 */
 
-/* note; check header_ipo.c, spaceipo_assign_ipo() too */
-Ipo *verify_ipo(ID *from, short blocktype, char *actname, char *constname, char *bonename)
+/* note: check header_ipo.c, spaceipo_assign_ipo() too */
+Ipo *verify_ipo(ID *from, short blocktype, char *actname, char *constname, char *bonename, short add)
 {
-
-	if(from==NULL || from->lib) return NULL;
+	/* lib-linked data is not appropriate here */
+	if ((from==NULL) || (from->lib))
+		return NULL;
 	
 	/* first check action ipos */
-	if(actname && actname[0]) {
+	if (actname && actname[0]) {
 		Object *ob= (Object *)from;
 		bActionChannel *achan;
 		
-		if(GS(from->name)!=ID_OB) {
+		if (GS(from->name)!=ID_OB) {
 			printf("called ipo system for action with wrong base pointer\n");
 			return NULL;
 		}
 		
-		if(ob->action==NULL)
+		if ((ob->action==NULL) && (add))
 			ob->action= add_empty_action("Action");
 		
-		achan= verify_action_channel(ob->action, actname);
+		if (add)
+			achan= verify_action_channel(ob->action, actname);
+		else	
+			achan= get_action_channel(ob->action, actname);
 		
-		if(achan) {
+		if (achan) {
 			/* automatically assign achan to act-group based on pchan's grouping */
-			if (blocktype == ID_PO)
+			if ((blocktype == ID_PO) && (add))
 				verify_pchan2achan_grouping(ob->action, ob->pose, actname);
 			
 			/* constraint exception */
-			if(blocktype==ID_CO) {
-				bConstraintChannel *conchan= verify_constraint_channel(&achan->constraintChannels, constname);
-				if(conchan->ipo==NULL) {
-					conchan->ipo= add_ipo("CoIpo", ID_CO);	
+			if (blocktype==ID_CO) {
+				bConstraintChannel *conchan;
+				
+				if (add)
+					conchan= verify_constraint_channel(&achan->constraintChannels, constname);
+				else
+					conchan= get_constraint_channel(&achan->constraintChannels, constname);
+					
+				if (conchan) {
+					if ((conchan->ipo==NULL) && (add))
+						conchan->ipo= add_ipo("CoIpo", ID_CO);	
+					return conchan->ipo;
 				}
-				return conchan->ipo;
 			}
 			else {
-				if(achan->ipo==NULL) {
+				if ((achan->ipo==NULL) && (add))
 					achan->ipo= add_ipo("ActIpo", blocktype);
-				}
-				
 				return achan->ipo;
 			}
 		}
 	}
 	else {
-		
-		switch(GS(from->name)) {
+		switch (GS(from->name)) {
 		case ID_OB:
 			{
 				Object *ob= (Object *)from;
 				
 				/* constraint exception */
-				if(blocktype==ID_CO) {
+				if (blocktype==ID_CO) {
 					/* check the local constraint ipo */
-					if(bonename && bonename[0] && ob->pose) {
+					if (bonename && bonename[0] && ob->pose) {
 						bPoseChannel *pchan= get_pose_channel(ob->pose, bonename);
 						bConstraint *con;
-						for(con= pchan->constraints.first; con; con= con->next)
-							if(strcmp(con->name, constname)==0)
+						
+						for (con= pchan->constraints.first; con; con= con->next) {
+							if (strcmp(con->name, constname)==0)
 								break;
-						if(con) {
-							if(con->ipo==NULL) {
+						}
+						
+						if (con) {
+							if ((con->ipo==NULL) && (add))
 								con->ipo= add_ipo("CoIpo", ID_CO);
-							}
 							return con->ipo;
 						}
 					}
 					else { /* the actionchannel */
-						bConstraintChannel *conchan= verify_constraint_channel(&ob->constraintChannels, constname);
-						if(conchan->ipo==NULL) {
-							conchan->ipo= add_ipo("CoIpo", ID_CO);	
+						bConstraintChannel *conchan;
+						
+						if (add)
+							conchan= verify_constraint_channel(&ob->constraintChannels, constname);
+						else
+							conchan= get_constraint_channel(&ob->constraintChannels, constname);
+							
+						if (conchan) {
+							if ((conchan->ipo==NULL) && (add))
+								conchan->ipo= add_ipo("CoIpo", ID_CO);	
+							return conchan->ipo;
 						}
-						return conchan->ipo;
 					}
 				}
-				else if(blocktype==ID_OB) {
-					if(ob->ipo==NULL) {
+				else if (blocktype==ID_OB) {
+					if ((ob->ipo==NULL) && (add))
 						ob->ipo= add_ipo("ObIpo", ID_OB);
-					}
 					return ob->ipo;
 				}
-				else if(blocktype==ID_KE) {
+				else if (blocktype==ID_KE) {
 					Key *key= ob_get_key((Object *)from);
 					
-					if(key) {
-						if(key->ipo==NULL) {
+					if (key) {
+						if ((key->ipo==NULL) && (add))
 							key->ipo= add_ipo("KeyIpo", ID_KE);
-						}
 						return key->ipo;
 					}
 					return NULL;
 				}
-				else if(blocktype== ID_FLUIDSIM) {
+				else if (blocktype== ID_FLUIDSIM) {

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list