[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [17494] branches/blender2.5/blender/source /blender:

Brecht Van Lommel brecht at blender.org
Tue Nov 18 11:57:06 CET 2008


Revision: 17494
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=17494
Author:   blendix
Date:     2008-11-18 11:57:06 +0100 (Tue, 18 Nov 2008)

Log Message:
-----------

RNA minor changes
* Added start of lamp wrapping (code by Michael Fox).
* Add back Object.data, was crashing with unknown data type.
* Added support for using consecutive variables like float r, g, b;
  as an array without writing a manual get/set function.
* Also note the RNA documentation is updated now to be more
  about how to define RNA and use it, including some diagrams.

http://wiki.blender.org/index.php/BlenderDev/Blender2.5/RNA

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/editors/space_outliner/space_outliner.c
    branches/blender2.5/blender/source/blender/makesrna/intern/makesrna.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_access.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_internal.h
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_main.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_object.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_rna.c

Added Paths:
-----------
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_lamp.c

Modified: branches/blender2.5/blender/source/blender/editors/space_outliner/space_outliner.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_outliner/space_outliner.c	2008-11-18 07:53:36 UTC (rev 17493)
+++ branches/blender2.5/blender/source/blender/editors/space_outliner/space_outliner.c	2008-11-18 10:57:06 UTC (rev 17494)
@@ -186,6 +186,7 @@
 	PropertyType type;
 	PropertyRNA *prop;
 	char *vectoritem[4]= {"x", "y", "z", "w"};
+	char *quatitem[4]= {"w", "x", "y", "z"};
 	char *coloritem[4]= {"r", "g", "b", "a"};
 	char item[32];
 	int arraylength;
@@ -199,7 +200,9 @@
 		uiDefBut(block, LABEL, 0, (char*)RNA_property_ui_name(prop, &cell->ptr), rct->xmin, rct->ymin, rct->xmax-rct->xmin, rct->ymax-rct->ymin, 0, 0, 0, 0, 0, (char*)RNA_property_ui_description(prop, &cell->ptr));
 	}
 	else if (type != PROP_COLLECTION) {
-		if(arraylength <= 4 && (subtype == PROP_VECTOR || subtype == PROP_ROTATION))
+		if(arraylength == 4 && subtype == PROP_ROTATION)
+			sprintf(item, "    %s", quatitem[cell->index]);
+		else if(arraylength <= 4 && (subtype == PROP_VECTOR || subtype == PROP_ROTATION))
 			sprintf(item, "    %s", vectoritem[cell->index]);
 		else if(arraylength <= 4 && subtype == PROP_COLOR)
 			sprintf(item, "    %s", coloritem[cell->index]);

Modified: branches/blender2.5/blender/source/blender/makesrna/intern/makesrna.c
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/intern/makesrna.c	2008-11-18 07:53:36 UTC (rev 17493)
+++ branches/blender2.5/blender/source/blender/makesrna/intern/makesrna.c	2008-11-18 10:57:06 UTC (rev 17494)
@@ -129,12 +129,18 @@
 				fprintf(f, "static %s %s(PointerRNA *ptr, int index)\n", rna_type_type(prop), func);
 				fprintf(f, "{\n");
 				fprintf(f, "	%s *data= (%s*)ptr->data;\n", dp->dnastructname, dp->dnastructname);
-				if(prop->type == PROP_BOOLEAN && dp->booleanbit && dp->dnaarraylength==1)
-					fprintf(f, "	return ((data->%s & (%d<<index)) != 0);\n", dp->dnaname, dp->booleanbit);
-				else if(prop->type == PROP_BOOLEAN && dp->booleanbit)
-					fprintf(f, "	return ((data->%s[index] & %d) != 0);\n", dp->dnaname, dp->booleanbit);
-				else
-					fprintf(f, "	return (%s)(data->%s[index]);\n", rna_type_type(prop), dp->dnaname);
+				if(dp->dnaarraylength == 1) {
+					if(prop->type == PROP_BOOLEAN && dp->booleanbit)
+						fprintf(f, "	return ((data->%s & (%d<<index)) != 0);\n", dp->dnaname, dp->booleanbit);
+					else
+						fprintf(f, "	return (%s)((&data->%s)[index]);\n", rna_type_type(prop), dp->dnaname);
+				}
+				else {
+					if(prop->type == PROP_BOOLEAN && dp->booleanbit)
+						fprintf(f, "	return ((data->%s[index] & %d) != 0);\n", dp->dnaname, dp->booleanbit);
+					else
+						fprintf(f, "	return (%s)(data->%s[index]);\n", rna_type_type(prop), dp->dnaname);
+				}
 				fprintf(f, "}\n\n");
 			}
 			else {
@@ -214,17 +220,25 @@
 				fprintf(f, "static void %s(PointerRNA *ptr, int index, %s value)\n", func, rna_type_type(prop));
 				fprintf(f, "{\n");
 				fprintf(f, "	%s *data= (%s*)ptr->data;\n", dp->dnastructname, dp->dnastructname);
-				if(prop->type == PROP_BOOLEAN && dp->booleanbit && dp->dnaarraylength==1) {
-					fprintf(f, "	if(value) data->%s |= (%d<<index);\n", dp->dnaname, dp->booleanbit);
-					fprintf(f, "	else data->%s &= ~(%d<<index);\n", dp->dnaname, dp->booleanbit);
+				if(dp->dnaarraylength == 1) {
+					if(prop->type == PROP_BOOLEAN && dp->booleanbit) {
+						fprintf(f, "	if(value) data->%s |= (%d<<index);\n", dp->dnaname, dp->booleanbit);
+						fprintf(f, "	else data->%s &= ~(%d<<index);\n", dp->dnaname, dp->booleanbit);
+					}
+					else {
+						rna_clamp_value(f, prop);
+						fprintf(f, "	(&data->%s)[index]= value;\n", dp->dnaname);
+					}
 				}
-				else if(prop->type == PROP_BOOLEAN && dp->booleanbit) {
-					fprintf(f, "	if(value) data->%s[index] |= %d;\n", dp->dnaname, dp->booleanbit);
-					fprintf(f, "	else data->%s[index] &= ~%d;\n", dp->dnaname, dp->booleanbit);
-				}
 				else {
-					rna_clamp_value(f, prop);
-					fprintf(f, "	data->%s[index]= value;\n", dp->dnaname);
+					if(prop->type == PROP_BOOLEAN && dp->booleanbit) {
+						fprintf(f, "	if(value) data->%s[index] |= %d;\n", dp->dnaname, dp->booleanbit);
+						fprintf(f, "	else data->%s[index] &= ~%d;\n", dp->dnaname, dp->booleanbit);
+					}
+					else {
+						rna_clamp_value(f, prop);
+						fprintf(f, "	data->%s[index]= value;\n", dp->dnaname);
+					}
 				}
 				fprintf(f, "}\n\n");
 			}
@@ -577,11 +591,14 @@
 				BooleanPropertyRNA *bprop= (BooleanPropertyRNA*)prop;
 				unsigned int i;
 
-				if(bprop->defaultarray) {
+				if(prop->arraylength) {
 					fprintf(f, "static int rna_%s_%s_default[%d] = {", srna->identifier, prop->identifier, prop->arraylength);
 
 					for(i=0; i<prop->arraylength; i++) {
-						fprintf(f, "%d", bprop->defaultarray[i]);
+						if(bprop->defaultarray)
+							fprintf(f, "%d", bprop->defaultarray[i]);
+						else
+							fprintf(f, "%d", bprop->defaultvalue);
 						if(i != prop->arraylength-1)
 							fprintf(f, ", ");
 					}
@@ -594,11 +611,14 @@
 				IntPropertyRNA *iprop= (IntPropertyRNA*)prop;
 				unsigned int i;
 
-				if(iprop->defaultarray) {
+				if(prop->arraylength) {
 					fprintf(f, "static int rna_%s_%s_default[%d] = {", srna->identifier, prop->identifier, prop->arraylength);
 
 					for(i=0; i<prop->arraylength; i++) {
-						fprintf(f, "%d", iprop->defaultarray[i]);
+						if(iprop->defaultarray)
+							fprintf(f, "%d", iprop->defaultarray[i]);
+						else
+							fprintf(f, "%d", iprop->defaultvalue);
 						if(i != prop->arraylength-1)
 							fprintf(f, ", ");
 					}
@@ -611,11 +631,14 @@
 				FloatPropertyRNA *fprop= (FloatPropertyRNA*)prop;
 				unsigned int i;
 
-				if(fprop->defaultarray) {
+				if(prop->arraylength) {
 					fprintf(f, "static float rna_%s_%s_default[%d] = {", srna->identifier, prop->identifier, prop->arraylength);
 
 					for(i=0; i<prop->arraylength; i++) {
-						rna_float_print(f, fprop->defaultarray[i]);
+						if(fprop->defaultarray)
+							rna_float_print(f, fprop->defaultarray[i]);
+						else
+							rna_float_print(f, fprop->defaultvalue);
 						if(i != prop->arraylength-1)
 							fprintf(f, ", ");
 					}
@@ -646,14 +669,14 @@
 			case PROP_BOOLEAN: {
 				BooleanPropertyRNA *bprop= (BooleanPropertyRNA*)prop;
 				fprintf(f, "\t%s, %s, %s, %s, %d, ", rna_function_string(bprop->get), rna_function_string(bprop->set), rna_function_string(bprop->getarray), rna_function_string(bprop->setarray), bprop->defaultvalue);
-				if(bprop->defaultarray) fprintf(f, "rna_%s_%s_default\n", srna->name, prop->identifier);
+				if(prop->arraylength) fprintf(f, "rna_%s_%s_default\n", srna->identifier, prop->identifier);
 				else fprintf(f, "NULL\n");
 				break;
 			}
 			case PROP_INT: {
 				IntPropertyRNA *iprop= (IntPropertyRNA*)prop;
-				fprintf(f, "\t%s, %s, %s, %s, %d, %d, %d, %d, %d,\n\t%d, \n", rna_function_string(iprop->get), rna_function_string(iprop->set), rna_function_string(iprop->getarray), rna_function_string(iprop->setarray), iprop->softmin, iprop->softmax, iprop->hardmin, iprop->hardmax, iprop->step, iprop->defaultvalue);
-				if(iprop->defaultarray) fprintf(f, "rna_%s_%s_default\n", srna->name, prop->identifier);
+				fprintf(f, "\t%s, %s, %s, %s, %d, %d, %d, %d, %d,\n\t%d, ", rna_function_string(iprop->get), rna_function_string(iprop->set), rna_function_string(iprop->getarray), rna_function_string(iprop->setarray), iprop->softmin, iprop->softmax, iprop->hardmin, iprop->hardmax, iprop->step, iprop->defaultvalue);
+				if(prop->arraylength) fprintf(f, "rna_%s_%s_default\n", srna->identifier, prop->identifier);
 				else fprintf(f, "NULL\n");
 				break;
 			}
@@ -667,7 +690,7 @@
 				rna_float_print(f, fprop->step); fprintf(f, ", ");
 				rna_float_print(f, fprop->precision); fprintf(f, ", ");
 				rna_float_print(f, fprop->defaultvalue); fprintf(f, ", ");
-				if(fprop->defaultarray) fprintf(f, "rna_%s_%s_default\n", srna->name, prop->identifier);
+				if(prop->arraylength) fprintf(f, "rna_%s_%s_default\n", srna->identifier, prop->identifier);
 				else fprintf(f, "NULL\n");
 				break;
 			}
@@ -745,6 +768,7 @@
 	{"rna_object.c", RNA_def_object},
 	{"rna_rna.c", RNA_def_rna},
 	{"rna_scene.c", RNA_def_scene},
+	{"rna_lamp.c", RNA_def_lamp},
 	{NULL, NULL}};
 
 static int rna_preprocess(char *basedirectory, FILE *f)

Modified: branches/blender2.5/blender/source/blender/makesrna/intern/rna_access.c
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/intern/rna_access.c	2008-11-18 07:53:36 UTC (rev 17493)
+++ branches/blender2.5/blender/source/blender/makesrna/intern/rna_access.c	2008-11-18 10:57:06 UTC (rev 17494)
@@ -478,10 +478,8 @@
 
 	r_ptr->data= pprop->get(ptr);
 
-	if(r_ptr->data) {
-		r_ptr->type= RNA_property_pointer_type(prop, ptr);
+	if(r_ptr->data && (r_ptr->type= RNA_property_pointer_type(prop, ptr)))
 		rna_pointer_inherit_id(ptr, r_ptr);
-	}
 	else
 		memset(r_ptr, 0, sizeof(*r_ptr));
 }
@@ -532,10 +530,8 @@
 
 	r_ptr->data= cprop->get(iter);
 
-	if(r_ptr->data) {
-		r_ptr->type= rna_property_collection_type(prop, iter);
+	if(r_ptr->data && (r_ptr->type= rna_property_collection_type(prop, iter)))
 		rna_pointer_inherit_id(&iter->parent, r_ptr);
-	}
 	else
 		memset(r_ptr, 0, sizeof(*r_ptr));
 }

Modified: branches/blender2.5/blender/source/blender/makesrna/intern/rna_internal.h
===================================================================
--- branches/blender2.5/blender/source/blender/makesrna/intern/rna_internal.h	2008-11-18 07:53:36 UTC (rev 17493)
+++ branches/blender2.5/blender/source/blender/makesrna/intern/rna_internal.h	2008-11-18 10:57:06 UTC (rev 17494)
@@ -88,6 +88,7 @@
 extern StructRNA RNA_Mesh;
 extern StructRNA RNA_Object;
 extern StructRNA RNA_Scene;
+extern StructRNA RNA_Lamp;
 extern StructRNA RNA_Struct;
 
 void RNA_def_ID(struct StructRNA *srna);
@@ -98,6 +99,7 @@
 void RNA_def_object(struct BlenderRNA *brna);
 void RNA_def_rna(struct BlenderRNA *brna);
 void RNA_def_scene(struct BlenderRNA *brna);
+void RNA_def_lamp(struct BlenderRNA *brna);
 
 /* Internal Functions */
 

Added: branches/blender2.5/blender/source/blender/makesrna/intern/rna_lamp.c
===================================================================

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list