Revision: 48269
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=48269
Author:   blendix
Date:     2012-06-25 11:43:22 +0000 (Mon, 25 Jun 2012)
Log Message:
-----------
Fix cycles not working in 3d local view, and missing update when toggling hiding
in the outliner.

Modified Paths:
--------------
    trunk/blender/intern/cycles/blender/blender_object.cpp
    trunk/blender/intern/cycles/blender/blender_sync.cpp
    trunk/blender/intern/cycles/blender/blender_util.h
    trunk/blender/source/blender/editors/space_view3d/view3d_view.c
    trunk/blender/source/blender/makesrna/intern/rna_object.c
    trunk/blender/source/blender/makesrna/intern/rna_space.c

Modified: trunk/blender/intern/cycles/blender/blender_object.cpp
===================================================================
--- trunk/blender/intern/cycles/blender/blender_object.cpp      2012-06-25 
11:43:12 UTC (rev 48268)
+++ trunk/blender/intern/cycles/blender/blender_object.cpp      2012-06-25 
11:43:22 UTC (rev 48269)
@@ -305,7 +305,7 @@
        for(; b_sce; b_sce = b_sce.background_set()) {
                for(b_sce.objects.begin(b_ob); b_ob != b_sce.objects.end(); 
++b_ob) {
                        bool hide = (render_layer.use_viewport_visibility)? 
b_ob->hide(): b_ob->hide_render();
-                       uint ob_layer = get_layer(b_ob->layers());
+                       uint ob_layer = get_layer(b_ob->layers(), 
b_ob->layers_local_view(), object_is_light(*b_ob));
                        hide = hide || !(ob_layer & scene_layer);
 
                        if(!hide) {

Modified: trunk/blender/intern/cycles/blender/blender_sync.cpp
===================================================================
--- trunk/blender/intern/cycles/blender/blender_sync.cpp        2012-06-25 
11:43:12 UTC (rev 48268)
+++ trunk/blender/intern/cycles/blender/blender_sync.cpp        2012-06-25 
11:43:22 UTC (rev 48269)
@@ -219,7 +219,7 @@
                        layer = layername.c_str();
                }
                else {
-                       render_layer.scene_layer = get_layer(b_v3d.layers());
+                       render_layer.scene_layer = get_layer(b_v3d.layers(), 
b_v3d.layers_local_view());
                        render_layer.layer = render_layer.scene_layer;
                        render_layer.holdout_layer = 0;
                        render_layer.material_override = PointerRNA_NULL;

Modified: trunk/blender/intern/cycles/blender/blender_util.h
===================================================================
--- trunk/blender/intern/cycles/blender/blender_util.h  2012-06-25 11:43:12 UTC 
(rev 48268)
+++ trunk/blender/intern/cycles/blender/blender_util.h  2012-06-25 11:43:22 UTC 
(rev 48269)
@@ -166,6 +166,28 @@
        return layer;
 }
 
+static inline uint get_layer(BL::Array<int, 20> array, BL::Array<int, 8> 
local_array, bool is_light = false)
+{
+       uint layer = 0;
+
+       for(uint i = 0; i < 20; i++)
+               if(array[i])
+                       layer |= (1 << i);
+
+       if(is_light) {
+               /* consider lamps on all local view layers */
+               for(uint i = 0; i < 8; i++)
+                       layer |= (1 << (20+i));
+       }
+       else {
+               for(uint i = 0; i < 8; i++)
+                       if(local_array[i])
+                               layer |= (1 << (20+i));
+       }
+       
+       return layer;
+}
+
 #if 0
 static inline float3 get_float3(PointerRNA& ptr, const char *name)
 {

Modified: trunk/blender/source/blender/editors/space_view3d/view3d_view.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/view3d_view.c     
2012-06-25 11:43:12 UTC (rev 48268)
+++ trunk/blender/source/blender/editors/space_view3d/view3d_view.c     
2012-06-25 11:43:22 UTC (rev 48269)
@@ -1564,13 +1564,15 @@
 
 static int localview_exec(bContext *C, wmOperator *UNUSED(unused))
 {
+       Main *bmain = CTX_data_main(C);
        View3D *v3d = CTX_wm_view3d(C);
        
        if (v3d->localvd)
                endlocalview(CTX_data_main(C), CTX_data_scene(C), 
CTX_wm_area(C));
        else
                initlocalview(CTX_data_main(C), CTX_data_scene(C), 
CTX_wm_area(C));
-       
+
+       DAG_id_type_tag(bmain, ID_OB);
        ED_area_tag_redraw(CTX_wm_area(C));
        
        return OPERATOR_FINISHED;

Modified: trunk/blender/source/blender/makesrna/intern/rna_object.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_object.c   2012-06-25 
11:43:12 UTC (rev 48268)
+++ trunk/blender/source/blender/makesrna/intern/rna_object.c   2012-06-25 
11:43:22 UTC (rev 48269)
@@ -174,6 +174,11 @@
        rna_Object_internal_update(bmain, scene, ptr);
 }
 
+static void rna_Object_hide_update(Main *bmain, Scene *UNUSED(scene), 
PointerRNA *UNUSED(ptr))
+{
+       DAG_id_type_tag(bmain, ID_OB);
+}
+
 static void rna_Object_matrix_local_get(PointerRNA *ptr, float values[16])
 {
        Object *ob = ptr->id.data;
@@ -1971,6 +1976,12 @@
        RNA_def_property_flag(prop, PROP_LIB_EXCEPTION);
        RNA_def_property_update(prop, NC_OBJECT | ND_DRAW, 
"rna_Object_layer_update");
 
+       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);
+       RNA_def_property_clear_flag(prop, PROP_EDITABLE);
+       RNA_def_property_ui_text(prop, "Local View Layers", "3D local view 
layers the object is on");
+
        prop = RNA_def_property(srna, "select", PROP_BOOLEAN, PROP_NONE);
        RNA_def_property_boolean_sdna(prop, NULL, "flag", SELECT);
        RNA_def_property_ui_text(prop, "Select", "Object selection state");
@@ -2308,7 +2319,7 @@
        RNA_def_property_boolean_sdna(prop, NULL, "restrictflag", 
OB_RESTRICT_VIEW);
        RNA_def_property_ui_text(prop, "Restrict View", "Restrict visibility in 
the viewport");
        RNA_def_property_ui_icon(prop, ICON_RESTRICT_VIEW_OFF, 1);
-       RNA_def_property_update(prop, NC_OBJECT | ND_DRAW, NULL);
+       RNA_def_property_update(prop, NC_OBJECT | ND_DRAW, 
"rna_Object_hide_update");
 
        prop = RNA_def_property(srna, "hide_select", PROP_BOOLEAN, PROP_NONE);
        RNA_def_property_boolean_sdna(prop, NULL, "restrictflag", 
OB_RESTRICT_SELECT);
@@ -2320,7 +2331,7 @@
        RNA_def_property_boolean_sdna(prop, NULL, "restrictflag", 
OB_RESTRICT_RENDER);
        RNA_def_property_ui_text(prop, "Restrict Render", "Restrict 
renderability");
        RNA_def_property_ui_icon(prop, ICON_RESTRICT_RENDER_OFF, 1);
-       RNA_def_property_update(prop, NC_OBJECT | ND_DRAW, NULL);
+       RNA_def_property_update(prop, NC_OBJECT | ND_DRAW, 
"rna_Object_hide_update");
 
        /* anim */
        rna_def_animdata_common(srna);
@@ -2579,6 +2590,12 @@
        RNA_def_property_ui_text(prop, "Layers", "Layers the object base is 
on");
        RNA_def_property_boolean_funcs(prop, NULL, "rna_Base_layer_set");
        RNA_def_property_update(prop, NC_OBJECT | ND_DRAW, 
"rna_Base_layer_update");
+
+       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);
+       RNA_def_property_clear_flag(prop, PROP_EDITABLE);
+       RNA_def_property_ui_text(prop, "Local View Layers", "3D local view 
layers the object base is on");
        
        prop = RNA_def_property(srna, "select", PROP_BOOLEAN, PROP_NONE);
        RNA_def_property_boolean_sdna(prop, NULL, "flag", BA_SELECT);

Modified: trunk/blender/source/blender/makesrna/intern/rna_space.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_space.c    2012-06-25 
11:43:12 UTC (rev 48268)
+++ trunk/blender/source/blender/makesrna/intern/rna_space.c    2012-06-25 
11:43:22 UTC (rev 48269)
@@ -1699,6 +1699,12 @@
        RNA_def_property_boolean_funcs(prop, NULL, "rna_SpaceView3D_layer_set");
        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, "layers_local_view", PROP_BOOLEAN, 
PROP_LAYER_MEMBER);
+       RNA_def_property_boolean_sdna(prop, NULL, "lay", 0x01000000);
+       RNA_def_property_array(prop, 8);
+       RNA_def_property_clear_flag(prop, PROP_EDITABLE);
+       RNA_def_property_ui_text(prop, "Local View Layers", "Local view layers 
visible in this 3D View");
        
        prop = RNA_def_property(srna, "layers_used", PROP_BOOLEAN, 
PROP_LAYER_MEMBER);
        RNA_def_property_boolean_sdna(prop, NULL, "lay_used", 1);

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to