Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2016-10-11 16:35:14 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2016-10-11 16:35:14 +0300
commit17603b9f01ca1d70b327a6b81d9a751b510a7f04 (patch)
tree5b9c5a04f81271947fc1b5f1b4f90c209da9cf06
parent5322ff3b482cf85fb7f5f2e3df909d63b6fc292f (diff)
Fix objects added via py being on the wrong layer when viewport is decoupled from scene
-rw-r--r--release/scripts/modules/bpy_extras/object_utils.py8
-rw-r--r--source/blender/makesrna/intern/rna_space.c12
2 files changed, 18 insertions, 2 deletions
diff --git a/release/scripts/modules/bpy_extras/object_utils.py b/release/scripts/modules/bpy_extras/object_utils.py
index c2c306e5145..87bb84b5844 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 b6c393280ba..8fb99703e9b 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);