Revision: 29993 http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=29993 Author: blendix Date: 2010-07-05 18:20:52 +0200 (Mon, 05 Jul 2010)
Log Message: ----------- Fix #21917: add object operator has 30 layers, now the layer property has just 20 and the local view layers are added afterwards. Modified Paths: -------------- trunk/blender/source/blender/editors/object/object_add.c Modified: trunk/blender/source/blender/editors/object/object_add.c =================================================================== --- trunk/blender/source/blender/editors/object/object_add.c 2010-07-05 15:52:25 UTC (rev 29992) +++ trunk/blender/source/blender/editors/object/object_add.c 2010-07-05 16:20:52 UTC (rev 29993) @@ -183,7 +183,7 @@ RNA_def_float_vector(ot->srna, "location", 3, NULL, -FLT_MAX, FLT_MAX, "Location", "Location for the newly added object.", -FLT_MAX, FLT_MAX); RNA_def_float_rotation(ot->srna, "rotation", 3, NULL, -FLT_MAX, FLT_MAX, "Rotation", "Rotation for the newly added object", -FLT_MAX, FLT_MAX); - prop = RNA_def_boolean_layer_member(ot->srna, "layer", 32, NULL, "Layer", ""); + prop = RNA_def_boolean_layer_member(ot->srna, "layer", 20, NULL, "Layer", ""); RNA_def_property_flag(prop, PROP_HIDDEN); } @@ -193,32 +193,28 @@ if (!RNA_property_is_set(op->ptr, "enter_editmode")) RNA_boolean_set(op->ptr, "enter_editmode", U.flag & USER_ADD_EDITMODE); - if (!RNA_property_is_set(op->ptr, "location")) { + if(!RNA_property_is_set(op->ptr, "location")) { float loc[3]; ED_object_location_from_view(C, loc); RNA_float_set_array(op->ptr, "location", loc); } - if (!RNA_property_is_set(op->ptr, "layer")) { + if(!RNA_property_is_set(op->ptr, "layer")) { View3D *v3d = CTX_wm_view3d(C); Scene *scene = CTX_data_scene(C); - int a, values[32], layer; + int a, values[20], layer; - if (v3d) { - if (v3d->localvd) { - layer = v3d->layact + v3d->lay; - for(a=0; a<32; a++) - values[a]= (layer & (1<<a)); - } else { - layer = (v3d->scenelock)?scene->layact:v3d->layact; + if(v3d) { + layer = (v3d->scenelock && !v3d->localvd)? scene->layact: v3d->layact; - for(a=0; a<32; a++) - values[a]= (layer & (1<<a)); - } - } else { + for(a=0; a<20; a++) + values[a]= (layer & (1<<a)); + } + else { layer = scene->layact; - for(a=0; a<32; a++) + + for(a=0; a<20; a++) values[a]= (layer & (1<<a)); } @@ -234,7 +230,8 @@ int ED_object_add_generic_get_opts(bContext *C, wmOperator *op, float *loc, float *rot, int *enter_editmode, unsigned int *layer) { - int a, layer_values[32]; + View3D *v3d = CTX_wm_view3d(C); + int a, layer_values[20]; int view_align; *enter_editmode = FALSE; @@ -245,7 +242,7 @@ if(RNA_property_is_set(op->ptr, "layer")) { RNA_boolean_get_array(op->ptr, "layer", layer_values); - for(a=0; a<32; a++) { + for(a=0; a<20; a++) { if(layer_values[a]) *layer |= (1 << a); else @@ -258,6 +255,11 @@ *layer = scene->layact; } + /* in local view we additionally add local view layers, + not part of operator properties */ + if(v3d && v3d->localvd) + *layer |= v3d->lay; + if (RNA_property_is_set(op->ptr, "view_align")) view_align = RNA_boolean_get(op->ptr, "view_align"); else _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs