Revision: 23831 http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=23831 Author: campbellbarton Date: 2009-10-14 15:20:20 +0200 (Wed, 14 Oct 2009)
Log Message: ----------- set scene, currently UI is in the render buttons, should be moved to a scene buttons area. added a property flag PROP_ID_SELF_CHECK, so properties can be set to point to anything but themselves. Modified Paths: -------------- trunk/blender/release/scripts/ui/buttons_scene.py trunk/blender/source/blender/makesrna/RNA_types.h trunk/blender/source/blender/makesrna/intern/makesrna.c trunk/blender/source/blender/makesrna/intern/rna_mesh.c trunk/blender/source/blender/makesrna/intern/rna_object.c trunk/blender/source/blender/makesrna/intern/rna_scene.c Modified: trunk/blender/release/scripts/ui/buttons_scene.py =================================================================== --- trunk/blender/release/scripts/ui/buttons_scene.py 2009-10-14 11:57:26 UTC (rev 23830) +++ trunk/blender/release/scripts/ui/buttons_scene.py 2009-10-14 13:20:20 UTC (rev 23831) @@ -25,14 +25,15 @@ def draw(self, context): layout = self.layout - - rd = context.scene.render_data + scene = context.scene + rd = scene.render_data row = layout.row() row.itemO("screen.render", text="Image", icon='ICON_RENDER_STILL') row.item_booleanO("screen.render", "animation", True, text="Animation", icon='ICON_RENDER_ANIMATION') layout.itemR(rd, "display_mode", text="Display") + layout.itemR(scene, "set", text="Set Scene") # XXX - this should get its own 'scene buttons' class SCENE_PT_layers(RenderButtonsPanel): __label__ = "Layers" Modified: trunk/blender/source/blender/makesrna/RNA_types.h =================================================================== --- trunk/blender/source/blender/makesrna/RNA_types.h 2009-10-14 11:57:26 UTC (rev 23830) +++ trunk/blender/source/blender/makesrna/RNA_types.h 2009-10-14 13:20:20 UTC (rev 23831) @@ -126,47 +126,51 @@ /* editable means the property is editable in the user * interface, properties are editable by default except * for pointers and collections. */ - PROP_EDITABLE = 1, + PROP_EDITABLE = 1<<0, /* this property is editable even if it is lib linked, * meaning it will get lost on reload, but it's useful * for editing. */ - PROP_LIB_EXCEPTION = 65536, + PROP_LIB_EXCEPTION = 1<<16, /* animateable means the property can be driven by some * other input, be it animation curves, expressions, .. * properties are animateable by default except for pointers * and collections */ - PROP_ANIMATEABLE = 2, + PROP_ANIMATEABLE = 1<<1, /* icon */ - PROP_ICONS_CONSECUTIVE = 4096, + PROP_ICONS_CONSECUTIVE = 1<12, /* hidden in the user interface */ - PROP_HIDDEN = 524288, + PROP_HIDDEN = 1<<19, /* function paramater flags */ - PROP_REQUIRED = 4, - PROP_RETURN = 8, - PROP_RNAPTR = 2048, - + PROP_REQUIRED = 1<<2, + PROP_RETURN = 1<<3, + PROP_RNAPTR = 1<<11, /* registering */ - PROP_REGISTER = 16, - PROP_REGISTER_OPTIONAL = 16|32, + PROP_REGISTER = 1<<4, + PROP_REGISTER_OPTIONAL = (1<<4)|(1<<5), /* pointers */ - PROP_ID_REFCOUNT = 64, - PROP_NEVER_NULL = 262144, + PROP_ID_REFCOUNT = 1<<6, + /* disallow assigning a variable to its self, eg an object tracking its self + * only apply this to types that are derived from an ID ()*/ + PROP_ID_SELF_CHECK = 1<<20, + + PROP_NEVER_NULL = 1<<18, + /* internal flags */ - PROP_BUILTIN = 128, - PROP_EXPORT = 256, - PROP_RUNTIME = 512, - PROP_IDPROPERTY = 1024, - PROP_RAW_ACCESS = 8192, - PROP_RAW_ARRAY = 16384, - PROP_FREE_POINTERS = 32768, - PROP_DYNAMIC = 131072 /* for dynamic arrays, and retvals of type string */ + PROP_BUILTIN = 1<<7, + PROP_EXPORT = 1<<8, + PROP_RUNTIME = 1<<9, + PROP_IDPROPERTY = 1<<10, + PROP_RAW_ACCESS = 1<<13, + PROP_RAW_ARRAY = 1<<14, + PROP_FREE_POINTERS = 1<<15, + PROP_DYNAMIC = 1<<17 /* for dynamic arrays, and retvals of type string */ } PropertyFlag; typedef struct CollectionPropertyIterator { Modified: trunk/blender/source/blender/makesrna/intern/makesrna.c =================================================================== --- trunk/blender/source/blender/makesrna/intern/makesrna.c 2009-10-14 11:57:26 UTC (rev 23830) +++ trunk/blender/source/blender/makesrna/intern/makesrna.c 2009-10-14 13:20:20 UTC (rev 23831) @@ -144,6 +144,11 @@ fprintf(f, " %s *data= (%s*)(ptr->data);\n", dp->dnastructname, dp->dnastructname); } +static void rna_print_id_get(FILE *f, PropertyDefRNA *dp) +{ + fprintf(f, " ID *id= ptr->id.data;\n"); +} + static char *rna_alloc_function_name(const char *structname, const char *propname, const char *type) { AllocDefRNA *alloc; @@ -530,6 +535,11 @@ else { rna_print_data_get(f, dp); + if(prop->flag & PROP_ID_SELF_CHECK) { + rna_print_id_get(f, dp); + fprintf(f, " if(id==value.data) return;\n\n"); + } + if(prop->flag & PROP_ID_REFCOUNT) { fprintf(f, "\n if(data->%s)\n", dp->dnaname); fprintf(f, " id_us_min((ID*)data->%s);\n", dp->dnaname); Modified: trunk/blender/source/blender/makesrna/intern/rna_mesh.c =================================================================== --- trunk/blender/source/blender/makesrna/intern/rna_mesh.c 2009-10-14 11:57:26 UTC (rev 23830) +++ trunk/blender/source/blender/makesrna/intern/rna_mesh.c 2009-10-14 13:20:20 UTC (rev 23831) @@ -1452,7 +1452,7 @@ /* TODO, should this be allowed to be its self? */ prop= RNA_def_property(srna, "texture_mesh", PROP_POINTER, PROP_NONE); RNA_def_property_pointer_sdna(prop, NULL, "texcomesh"); - RNA_def_property_flag(prop, PROP_EDITABLE); + RNA_def_property_flag(prop, PROP_EDITABLE|PROP_ID_SELF_CHECK); RNA_def_property_ui_text(prop, "Texture Mesh", "Use another mesh for texture indicies (vertex indicies must be aligned)."); /* UV textures */ Modified: trunk/blender/source/blender/makesrna/intern/rna_object.c =================================================================== --- trunk/blender/source/blender/makesrna/intern/rna_object.c 2009-10-14 11:57:26 UTC (rev 23830) +++ trunk/blender/source/blender/makesrna/intern/rna_object.c 2009-10-14 13:20:20 UTC (rev 23831) @@ -223,14 +223,6 @@ ED_object_parent(ob, ob->parent, value, ob->parsubstr); } -static void rna_Object_track_set(PointerRNA *ptr, PointerRNA value) -{ - Object *ob= (Object*)ptr->data; - - if(ob != value.data) - ob->track= value.data; -} - static EnumPropertyItem *rna_Object_parent_type_itemf(bContext *C, PointerRNA *ptr, int *free) { Object *ob= (Object*)ptr->data; @@ -1219,8 +1211,7 @@ RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_Object_dependency_update"); prop= RNA_def_property(srna, "track", PROP_POINTER, PROP_NONE); - RNA_def_property_pointer_funcs(prop, NULL, "rna_Object_track_set", NULL); - RNA_def_property_flag(prop, PROP_EDITABLE); + RNA_def_property_flag(prop, PROP_EDITABLE|PROP_ID_SELF_CHECK); RNA_def_property_ui_text(prop, "Track", "Object being tracked to define the rotation (Old Track)."); RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_Object_dependency_update"); Modified: trunk/blender/source/blender/makesrna/intern/rna_scene.c =================================================================== --- trunk/blender/source/blender/makesrna/intern/rna_scene.c 2009-10-14 11:57:26 UTC (rev 23830) +++ trunk/blender/source/blender/makesrna/intern/rna_scene.c 2009-10-14 13:20:20 UTC (rev 23831) @@ -110,7 +110,20 @@ scene->basact= NULL; } +static void rna_Scene_set_set(PointerRNA *ptr, PointerRNA value) +{ + Scene *scene= (Scene*)ptr->data; + Scene *set= (Scene*)value.data; + Scene *nested_set; + for(nested_set= set; nested_set; nested_set= nested_set->set) { + if(nested_set==scene) + return; + } + + scene->set= set; +} + static int layer_set(int lay, const int *values) { int i, tot= 0; @@ -2084,6 +2097,14 @@ RNA_def_property_flag(prop, PROP_EDITABLE); RNA_def_property_ui_text(prop, "Camera", "Active camera used for rendering the scene."); + prop= RNA_def_property(srna, "set", PROP_POINTER, PROP_NONE); + RNA_def_property_pointer_sdna(prop, NULL, "set"); + RNA_def_property_struct_type(prop, "Scene"); + //RNA_def_property_flag(prop, PROP_EDITABLE|PROP_ID_SELF_CHECK); + RNA_def_property_flag(prop, PROP_EDITABLE|PROP_ID_SELF_CHECK); + RNA_def_property_pointer_funcs(prop, NULL, "rna_Scene_set_set", NULL); + RNA_def_property_ui_text(prop, "Set Scene", "Background set scene."); + prop= RNA_def_property(srna, "active_object", PROP_POINTER, PROP_NONE); RNA_def_property_struct_type(prop, "Object"); RNA_def_property_pointer_funcs(prop, "rna_Scene_active_object_get", "rna_Scene_active_object_set", NULL); _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs