[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [44749] trunk/blender: Fix #30435: 2. 62 Torus Batch building "Bug" or A Experimental Feature?

Sergey Sharybin sergey.vfx at gmail.com
Thu Mar 8 19:50:42 CET 2012


Revision: 44749
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=44749
Author:   nazgul
Date:     2012-03-08 18:50:42 +0000 (Thu, 08 Mar 2012)
Log Message:
-----------
Fix #30435: 2.62 Torus Batch building "Bug" or A Experimental Feature?

Python-defined primitives used to be added to all visible layers instead of
adding to active scene layer as it happens with C-defined primitives.

Modified Paths:
--------------
    trunk/blender/release/scripts/modules/bpy_extras/object_utils.py
    trunk/blender/source/blender/makesrna/intern/rna_scene.c

Modified: trunk/blender/release/scripts/modules/bpy_extras/object_utils.py
===================================================================
--- trunk/blender/release/scripts/modules/bpy_extras/object_utils.py	2012-03-08 18:36:23 UTC (rev 44748)
+++ trunk/blender/release/scripts/modules/bpy_extras/object_utils.py	2012-03-08 18:50:42 UTC (rev 44749)
@@ -86,7 +86,7 @@
     return location * rotation
 
 
-def object_data_add(context, obdata, operator=None):
+def object_data_add(context, obdata, operator=None, use_active_layer=True):
     """
     Add an object using the view context and preference to to initialize the
     location, rotation and layer.
@@ -111,7 +111,17 @@
     base = scene.objects.link(obj_new)
     base.select = True
 
+    v3d = None
     if context.space_data and context.space_data.type == 'VIEW_3D':
+        v3d = context.space_data
+
+    if use_active_layer:
+        if 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 v3d:
         base.layers_from_view(context.space_data)
 
     obj_new.matrix_world = add_object_align_init(context, operator)

Modified: trunk/blender/source/blender/makesrna/intern/rna_scene.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_scene.c	2012-03-08 18:36:23 UTC (rev 44748)
+++ trunk/blender/source/blender/makesrna/intern/rna_scene.c	2012-03-08 18:50:42 UTC (rev 44749)
@@ -414,6 +414,13 @@
 	scene->lay = ED_view3d_scene_layer_set(scene->lay, values, &scene->layact);
 }
 
+static int rna_Scene_active_layer_get(PointerRNA *ptr)
+{
+	Scene *scene = (Scene*)ptr->data;
+
+	return (int)log2f(scene->layact);
+}
+
 static void rna_Scene_view3d_update(Main *bmain, Scene *UNUSED(scene_unused), PointerRNA *ptr)
 {
 	Scene *scene = (Scene*)ptr->data;
@@ -4097,7 +4104,13 @@
 	RNA_def_property_boolean_funcs(prop, NULL, "rna_Scene_layer_set");
 	RNA_def_property_ui_text(prop, "Layers", "Layers visible when rendering the scene");
 	RNA_def_property_update(prop, NC_SCENE|ND_LAYER, "rna_Scene_layer_update");
-	
+
+	/* active layer */
+	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_Scene_active_layer_get", NULL, NULL);
+	RNA_def_property_ui_text(prop, "Active Layer", "Active scene layer index");
+
 	/* Frame Range Stuff */
 	prop = RNA_def_property(srna, "frame_current", PROP_INT, PROP_TIME);
 	RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);




More information about the Bf-blender-cvs mailing list