[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [24876] trunk/blender/source/blender/ makesrna/intern/rna_fcurve.c: RNA: FModifier generator coefficients wrapped , implemented by Campbell.

Brecht Van Lommel brecht at blender.org
Wed Nov 25 11:39:02 CET 2009


Revision: 24876
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=24876
Author:   blendix
Date:     2009-11-25 11:39:02 +0100 (Wed, 25 Nov 2009)

Log Message:
-----------
RNA: FModifier generator coefficients wrapped, implemented by Campbell.

Modified Paths:
--------------
    trunk/blender/source/blender/makesrna/intern/rna_fcurve.c

Modified: trunk/blender/source/blender/makesrna/intern/rna_fcurve.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_fcurve.c	2009-11-25 10:13:24 UTC (rev 24875)
+++ trunk/blender/source/blender/makesrna/intern/rna_fcurve.c	2009-11-25 10:39:02 UTC (rev 24876)
@@ -276,6 +276,33 @@
 	
 }
 
+static int rna_FM_get_length(PointerRNA *ptr, int length[RNA_MAX_ARRAY_DIMENSION])
+{
+	FModifier *fm= (FModifier*)ptr->data;
+	FMod_Generator *gen= fm->data;
+
+	if(gen)
+		length[0]= gen->arraysize;
+	else
+		length[0]= 100; /* for raw_access, untested */
+
+	return length[0];
+}
+
+static void rna_FM_get(PointerRNA *ptr, float *values)
+{
+	FModifier *fm= (FModifier*)ptr->data;
+	FMod_Generator *gen= fm->data;
+	memcpy(values, gen->coefficients, gen->arraysize * sizeof(float));
+}
+
+static void rna_FM_set(PointerRNA *ptr, const float *values)
+{
+	FModifier *fm= (FModifier*)ptr->data;
+	FMod_Generator *gen= fm->data;
+	memcpy(gen->coefficients, values, gen->arraysize * sizeof(float));
+}
+
 #else
 
 static void rna_def_fmodifier_generator(BlenderRNA *brna)
@@ -311,6 +338,14 @@
 	RNA_def_property_ui_text(prop, "Polynomial Order", "The highest power of 'x' for this polynomial. (number of coefficients - 1)");
 	RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL);
 	
+
+	prop= RNA_def_property(srna, "coefficients", PROP_FLOAT, PROP_NONE);
+	RNA_def_property_array(prop, 32);
+	RNA_def_property_flag(prop, PROP_DYNAMIC);
+	RNA_def_property_dynamic_array_funcs(prop, "rna_FM_get_length");
+	RNA_def_property_float_funcs(prop, "rna_FM_get", "rna_FM_set", NULL);
+	RNA_def_property_ui_text(prop, "Coefficients", "Coefficients for 'x' (starting from lowest power of x^0).");
+
 	/* coefficients array */
 		// FIXME: this is quite difficult to try to wrap
 	//prop= RNA_def_property(srna, "coefficients", PROP_COLLECTION, PROP_NONE);





More information about the Bf-blender-cvs mailing list