[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [25185] trunk/blender/source/blender: driver type 'Sum'

Campbell Barton ideasman42 at gmail.com
Mon Dec 7 20:59:04 CET 2009


Revision: 25185
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=25185
Author:   campbellbarton
Date:     2009-12-07 20:59:04 +0100 (Mon, 07 Dec 2009)

Log Message:
-----------
driver type 'Sum'

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/fcurve.c
    trunk/blender/source/blender/makesdna/DNA_anim_types.h
    trunk/blender/source/blender/makesrna/intern/rna_fcurve.c

Modified: trunk/blender/source/blender/blenkernel/intern/fcurve.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/fcurve.c	2009-12-07 19:56:59 UTC (rev 25184)
+++ trunk/blender/source/blender/blenkernel/intern/fcurve.c	2009-12-07 19:59:04 UTC (rev 25185)
@@ -910,6 +910,7 @@
 	// TODO: the flags for individual targets need to be used too for more fine-grained support...
 	switch (driver->type) {
 		case DRIVER_TYPE_AVERAGE: /* average values of driver targets */
+		case DRIVER_TYPE_SUM: /* sum values of driver targets */
 		{
 			/* check how many targets there are first (i.e. just one?) */
 			if (driver->targets.first == driver->targets.last) {
@@ -921,19 +922,22 @@
 				/* more than one target, so average the values of the targets */
 				int tot = 0;
 				float value = 0.0f;
-				
+
 				/* loop through targets, adding (hopefully we don't get any overflow!) */
 				for (dtar= driver->targets.first; dtar; dtar=dtar->next) {
-					value += driver_get_target_value(driver, dtar); 
+					value += driver_get_target_value(driver, dtar);
 					tot++;
 				}
-				
+
 				/* return the average of these */
-				return (value / (float)tot);
+				if(driver->type == DRIVER_TYPE_AVERAGE)
+					return (value / (float)tot);
+				else
+					return value;
+
 			}
 		}
 			break;
-		
 		case DRIVER_TYPE_PYTHON: /* expression */
 		{
 #ifndef DISABLE_PYTHON

Modified: trunk/blender/source/blender/makesdna/DNA_anim_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_anim_types.h	2009-12-07 19:56:59 UTC (rev 25184)
+++ trunk/blender/source/blender/makesdna/DNA_anim_types.h	2009-12-07 19:59:04 UTC (rev 25185)
@@ -309,6 +309,8 @@
 	DRIVER_TYPE_PYTHON,
 		/* rotational difference (must use rotation channels only) */
 	DRIVER_TYPE_ROTDIFF,
+		/* sum of all values */
+	DRIVER_TYPE_SUM,
 } eDriver_Types;
 
 /* driver flags */

Modified: trunk/blender/source/blender/makesrna/intern/rna_fcurve.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_fcurve.c	2009-12-07 19:56:59 UTC (rev 25184)
+++ trunk/blender/source/blender/makesrna/intern/rna_fcurve.c	2009-12-07 19:59:04 UTC (rev 25185)
@@ -789,6 +789,7 @@
 	
 	static EnumPropertyItem prop_type_items[] = {
 		{DRIVER_TYPE_AVERAGE, "AVERAGE", 0, "Averaged Value", ""},
+		{DRIVER_TYPE_SUM, "SUM", 0, "Sum Values", ""},
 		{DRIVER_TYPE_PYTHON, "SCRIPTED", 0, "Scripted Expression", ""},
 		{DRIVER_TYPE_ROTDIFF, "ROTDIFF", 0, "Rotational Difference", ""},
 		{0, NULL, 0, NULL, NULL}};





More information about the Bf-blender-cvs mailing list