[Bf-blender-cvs] [17603b9] master: Fix objects added via py being on the wrong layer when viewport is decoupled from scene
Sergey Sharybin
noreply at git.blender.org
Tue Oct 11 15:35:36 CEST 2016
Commit: 17603b9f01ca1d70b327a6b81d9a751b510a7f04
Author: Sergey Sharybin
Date: Tue Oct 11 15:35:14 2016 +0200
Branches: master
https://developer.blender.org/rB17603b9f01ca1d70b327a6b81d9a751b510a7f04
Fix objects added via py being on the wrong layer when viewport is decoupled from scene
===================================================================
M release/scripts/modules/bpy_extras/object_utils.py
M source/blender/makesrna/intern/rna_space.c
===================================================================
diff --git a/release/scripts/modules/bpy_extras/object_utils.py b/release/scripts/modules/bpy_extras/object_utils.py
index c2c306e..87bb84b 100644
--- a/release/scripts/modules/bpy_extras/object_utils.py
+++ b/release/scripts/modules/bpy_extras/object_utils.py
@@ -145,8 +145,12 @@ def object_data_add(context, obdata, operator=None, use_active_layer=True, name=
base.layers_from_view(context.space_data)
base.layers[scene.active_layer] = True
else:
- base.layers = [True if i == scene.active_layer
- else False for i in range(len(scene.layers))]
+ if v3d and not v3d.lock_camera_and_layers:
+ base.layers = [True if i == v3d.active_layer
+ else False for i in range(len(v3d.layers))]
+ else:
+ base.layers = [True if i == scene.active_layer
+ else False for i in range(len(scene.layers))]
else:
if v3d:
base.layers_from_view(context.space_data)
diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c
index b6c3932..8fb9970 100644
--- a/source/blender/makesrna/intern/rna_space.c
+++ b/source/blender/makesrna/intern/rna_space.c
@@ -522,6 +522,13 @@ static void rna_SpaceView3D_layer_set(PointerRNA *ptr, const int *values)
v3d->lay = ED_view3d_scene_layer_set(v3d->lay, values, &v3d->layact);
}
+static int rna_SpaceView3D_active_layer_get(PointerRNA *ptr)
+{
+ View3D *v3d = (View3D *)(ptr->data);
+
+ return (int)(log(v3d->layact) / M_LN2);
+}
+
static void rna_SpaceView3D_layer_update(Main *bmain, Scene *UNUSED(scene), PointerRNA *UNUSED(ptr))
{
DAG_on_visible_update(bmain, false);
@@ -2647,6 +2654,11 @@ static void rna_def_space_view3d(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Visible Layers", "Layers visible in this 3D View");
RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, "rna_SpaceView3D_layer_update");
+ prop = RNA_def_property(srna, "active_layer", PROP_INT, PROP_NONE);
+ RNA_def_property_clear_flag(prop, PROP_ANIMATABLE | PROP_EDITABLE);
+ RNA_def_property_int_funcs(prop, "rna_SpaceView3D_active_layer_get", NULL, NULL);
+ RNA_def_property_ui_text(prop, "Active Layer", "Active 3D view layer index");
+
prop = RNA_def_property(srna, "layers_local_view", PROP_BOOLEAN, PROP_LAYER_MEMBER);
RNA_def_property_boolean_sdna(prop, NULL, "lay", 0x01000000);
RNA_def_property_array(prop, 8);
More information about the Bf-blender-cvs
mailing list