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

Reply via email to