[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