[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [19269] branches/blender2.5/blender/source /blender/makesrna/intern/rna_access.c: RNA:

Martin Poirier theeth at yahoo.com
Thu Mar 12 16:28:01 CET 2009


Revision: 19269
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=19269
Author:   theeth
Date:     2009-03-12 16:28:00 +0100 (Thu, 12 Mar 2009)

Log Message:
-----------
RNA:
* boolean/int/float_set_array now works for non-array
  properties as well, just setting the value with the first
  element of the array.

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_access.c

Modified: branches/blender2.5/blender/source/blender/makesrna/intern/rna_access.c
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/intern/rna_access.c	2009-03-12 09:15:49 UTC (rev 19268)
+++ branches/blender2.5/blender/source/blender/makesrna/intern/rna_access.c	2009-03-12 15:28:00 UTC (rev 19269)
@@ -615,8 +615,14 @@
 	BooleanPropertyRNA *bprop= (BooleanPropertyRNA*)prop;
 	IDProperty *idprop;
 
-	if((idprop=rna_idproperty_check(&prop, ptr)))
-		memcpy(IDP_Array(idprop), values, sizeof(int)*idprop->len);
+	if((idprop=rna_idproperty_check(&prop, ptr))) {
+		if(prop->arraylength == 0)
+			IDP_Int(idprop)= values[0];
+		else
+			memcpy(IDP_Array(idprop), values, sizeof(int)*idprop->len);
+	}
+	else if(prop->arraylength == 0)
+		RNA_property_boolean_set(ptr, prop, values[0]);
 	else if(bprop->setarray)
 		bprop->setarray(ptr, values);
 	else if(!(prop->flag & PROP_NOT_EDITABLE)) {
@@ -712,8 +718,14 @@
 	IntPropertyRNA *iprop= (IntPropertyRNA*)prop;
 	IDProperty *idprop;
 
-	if((idprop=rna_idproperty_check(&prop, ptr)))
-		memcpy(IDP_Array(idprop), values, sizeof(int)*idprop->len);
+	if((idprop=rna_idproperty_check(&prop, ptr))) {
+		if(prop->arraylength == 0)
+			IDP_Int(idprop)= values[0];
+		else
+			memcpy(IDP_Array(idprop), values, sizeof(int)*idprop->len);\
+	}
+	else if(prop->arraylength == 0)
+		RNA_property_int_set(ptr, prop, values[0]);
 	else if(iprop->setarray)
 		iprop->setarray(ptr, values);
 	else if(!(prop->flag & PROP_NOT_EDITABLE)) {
@@ -826,7 +838,9 @@
 	int i;
 
 	if((idprop=rna_idproperty_check(&prop, ptr))) {
-		if(idprop->subtype == IDP_FLOAT) {
+		if(prop->arraylength == 0)
+			IDP_Double(idprop)= values[0];
+		else if(idprop->subtype == IDP_FLOAT) {
 			memcpy(IDP_Array(idprop), values, sizeof(float)*idprop->len);
 		}
 		else {
@@ -834,6 +848,8 @@
 				((double*)IDP_Array(idprop))[i]= values[i];
 		}
 	}
+	else if(prop->arraylength == 0)
+		RNA_property_float_set(ptr, prop, values[0]);
 	else if(fprop->setarray) {
 		fprop->setarray(ptr, values);
 	}





More information about the Bf-blender-cvs mailing list