[Bf-blender-cvs] [c349931] master: Fix T46220: Add torus has no 'layers' option

Campbell Barton noreply at git.blender.org
Wed Sep 23 17:11:21 CEST 2015


Commit: c34993160da76b6f84f06dc0aa703d09cdfd45ca
Author: Campbell Barton
Date:   Thu Sep 24 01:03:34 2015 +1000
Branches: master
https://developer.blender.org/rBc34993160da76b6f84f06dc0aa703d09cdfd45ca

Fix T46220: Add torus has no 'layers' option

Add layers property for all operators using AddObjectHelper

===================================================================

M	release/scripts/modules/bpy_extras/object_utils.py

===================================================================

diff --git a/release/scripts/modules/bpy_extras/object_utils.py b/release/scripts/modules/bpy_extras/object_utils.py
index 78fb6aa..c2c306e 100644
--- a/release/scripts/modules/bpy_extras/object_utils.py
+++ b/release/scripts/modules/bpy_extras/object_utils.py
@@ -33,6 +33,7 @@ import bpy
 
 from bpy.props import (
         BoolProperty,
+        BoolVectorProperty,
         FloatVectorProperty,
         )
 
@@ -136,16 +137,22 @@ def object_data_add(context, obdata, operator=None, use_active_layer=True, name=
     if context.space_data and context.space_data.type == 'VIEW_3D':
         v3d = context.space_data
 
-    if use_active_layer:
-        if v3d and v3d.local_view:
-            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 operator is not None and any(operator.layers):
+        base.layers = operator.layers
     else:
-        if v3d:
-            base.layers_from_view(context.space_data)
+        if use_active_layer:
+            if v3d and v3d.local_view:
+                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))]
+        else:
+            if v3d:
+                base.layers_from_view(context.space_data)
+
+        if operator is not None:
+            operator.layers = base.layers
 
     obj_new.matrix_world = add_object_align_init(context, operator)
 
@@ -209,6 +216,12 @@ class AddObjectHelper:
             name="Rotation",
             subtype='EULER',
             )
+    layers = BoolVectorProperty(
+            name="Layers",
+            size=20,
+            subtype='LAYER',
+            options={'HIDDEN', 'SKIP_SAVE'},
+            )
 
     @classmethod
     def poll(self, context):




More information about the Bf-blender-cvs mailing list