Remove any reference to scene->base from the old viewport code render-layers
authorDalai Felinto <dfelinto@gmail.com>
Mon, 6 Feb 2017 17:06:21 +0000 (18:06 +0100)
committerDalai Felinto <dfelinto@gmail.com>
Mon, 6 Feb 2017 17:06:47 +0000 (18:06 +0100)
This allows non-clay engine to see the objects as well, even if their code will be dropped later

source/blender/editors/space_view3d/view3d_draw.c
source/blender/editors/space_view3d/view3d_draw_legacy.c
source/blender/editors/space_view3d/view3d_edit.c

index 8a33f54172b745887a7296207ea00a2abe3d1501..65966a67da80374f022700a28bbaf6ea5fa43f63 100644 (file)
@@ -1872,6 +1872,7 @@ static void view3d_draw_setup_view(const bContext *C, ARegion *ar)
 static void draw_all_objects(const bContext *C, ARegion *ar, const bool only_depth, const bool use_depth)
 {
        Scene *scene = CTX_data_scene(C);
+       SceneLayer *sl = CTX_data_scene_layer(C);
        View3D *v3d = CTX_wm_view3d(C);
 
        if (only_depth)
@@ -1884,8 +1885,8 @@ static void draw_all_objects(const bContext *C, ARegion *ar, const bool only_dep
                v3d->zbuf = true;
        }
 
-       for (BaseLegacy *base = scene->base.first; base; base = base->next) {
-               if (v3d->lay & base->lay) {
+       for (Base *base = sl->object_bases.first; base; base = base->next) {
+               if ((base->flag & BASE_VISIBLED) != 0) {
                        /* dupli drawing */
                        if (base->object->transflag & OB_DUPLI)
                                draw_dupli_objects(scene, ar, v3d, base);
@@ -1968,6 +1969,7 @@ static void view3d_draw_non_meshes(const bContext *C, ARegion *ar)
         * we filter them based on the plates/layers
         */
        Scene *scene = CTX_data_scene(C);
+       SceneLayer *sl = CTX_data_scene_layer(C);
        View3D *v3d = CTX_wm_view3d(C);
        RegionView3D *rv3d = ar->regiondata;
 
@@ -1981,8 +1983,8 @@ static void view3d_draw_non_meshes(const bContext *C, ARegion *ar)
         * for now let's avoid writing again to zbuffer to prevent glitches
         */
 
-       for (BaseLegacy *base = scene->base.first; base; base = base->next) {
-               if (v3d->lay & base->lay) {
+       for (Base *base = sl->object_bases.first; base; base = base->next) {
+               if ((base->flag & BASE_VISIBLED) != 0) {
                        Object *ob = base->object;
 
                        unsigned char ob_wire_col[4];
index 83dd322e9bd5b29bdbe14c1c9bc24ded6c07e24e..e75e15c02c5bafdb1198c426d4b1c5aeae49ce06 100644 (file)
@@ -60,6 +60,7 @@
 #include "BKE_DerivedMesh.h"
 #include "BKE_image.h"
 #include "BKE_key.h"
+#include "BKE_layer.h"
 #include "BKE_main.h"
 #include "BKE_object.h"
 #include "BKE_global.h"
@@ -1450,10 +1451,11 @@ void ED_view3d_draw_depth(Scene *scene, ARegion *ar, View3D *v3d, bool alphaover
        short flag = v3d->flag;
        float glalphaclip = U.glalphaclip;
        int obcenter_dia = U.obcenter_dia;
+       TODO_LAYER_CONTEXT; /* we should pass context, really */
+       SceneLayer *sl = BLI_findlink(&scene->render_layers, scene->active_layer);
        /* no need for color when drawing depth buffer */
        const short dflag_depth = DRAW_CONSTCOLOR;
        /* temp set drawtype to solid */
-       
        /* Setting these temporarily is not nice */
        v3d->flag &= ~V3D_SELECT_OUTLINE;
        U.glalphaclip = alphaoverride ? 0.5f : glalphaclip; /* not that nice but means we wont zoom into billboards */
@@ -1492,8 +1494,8 @@ void ED_view3d_draw_depth(Scene *scene, ARegion *ar, View3D *v3d, bool alphaover
                }
        }
        
-       for (base = scene->base.first; base; base = base->next) {
-               if (v3d->lay & base->lay) {
+       for (base = sl->object_bases.first; base; base = base->next) {
+               if ((base->flag & BASE_VISIBLED) != 0) {
                        /* dupli drawing */
                        if (base->object->transflag & OB_DUPLI) {
                                draw_dupli_objects_color(scene, ar, v3d, base, dflag_depth, TH_UNDEFINED);
@@ -1738,6 +1740,7 @@ static void view3d_draw_objects(
         const char **grid_unit,
         const bool do_bgpic, const bool draw_offscreen, GPUFX *fx)
 {
+       SceneLayer *sl = CTX_data_scene_layer(C);
        RegionView3D *rv3d = ar->regiondata;
        BaseLegacy *base;
        const bool do_camera_frame = !draw_offscreen;
@@ -1811,8 +1814,8 @@ static void view3d_draw_objects(
        }
 
        if (draw_offscreen) {
-               for (base = scene->base.first; base; base = base->next) {
-                       if (v3d->lay & base->lay) {
+               for (base = sl->object_bases.first; base; base = base->next) {
+                       if ((base->flag & BASE_VISIBLED) != 0) {
                                /* dupli drawing */
                                if (base->object->transflag & OB_DUPLI)
                                        draw_dupli_objects(scene, ar, v3d, base);
@@ -1825,16 +1828,16 @@ static void view3d_draw_objects(
                unsigned int lay_used = 0;
 
                /* then draw not selected and the duplis, but skip editmode object */
-               for (base = scene->base.first; base; base = base->next) {
+               for (base = sl->object_bases.first; base; base = base->next) {
                        lay_used |= base->lay;
 
-                       if (v3d->lay & base->lay) {
+                       if ((base->flag & BASE_VISIBLED) != 0) {
 
                                /* dupli drawing */
                                if (base->object->transflag & OB_DUPLI) {
                                        draw_dupli_objects(scene, ar, v3d, base);
                                }
-                               if ((base->flag_legacy & SELECT) == 0) {
+                               if ((base->flag & BASE_SELECTED) == 0) {
                                        if (base->object != scene->obedit)
                                                draw_object(scene, ar, v3d, base, 0);
                                }
@@ -1845,9 +1848,9 @@ static void view3d_draw_objects(
                v3d->lay_used = lay_used & ((1 << 20) - 1);
 
                /* draw selected and editmode */
-               for (base = scene->base.first; base; base = base->next) {
-                       if (v3d->lay & base->lay) {
-                               if (base->object == scene->obedit || (base->flag_legacy & SELECT)) {
+               for (base = sl->object_bases.first; base; base = base->next) {
+                       if ((base->flag & BASE_VISIBLED) != 0) {
+                               if (base->object == scene->obedit || (base->flag & BASE_SELECTED)) {
                                        draw_object(scene, ar, v3d, base, 0);
                                }
                        }
index fe6dabe6710b337d49cd832459af5901b79f6d39..902be0e839c06ce1c64f763b543acb6b452a3c4a 100644 (file)
@@ -3540,6 +3540,7 @@ static int view3d_zoom_border_exec(bContext *C, wmOperator *op)
        View3D *v3d = CTX_wm_view3d(C);
        RegionView3D *rv3d = CTX_wm_region_view3d(C);
        Scene *scene = CTX_data_scene(C);
+       SceneLayer *sl = CTX_data_scene_layer(C);
        int gesture_mode;
        const int smooth_viewtx = WM_operator_smooth_viewtx_get(op);