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:
Diffstat (limited to 'source/blender/editors/space_view3d/view3d_draw_legacy.c')
-rw-r--r--source/blender/editors/space_view3d/view3d_draw_legacy.c51
1 files changed, 27 insertions, 24 deletions
diff --git a/source/blender/editors/space_view3d/view3d_draw_legacy.c b/source/blender/editors/space_view3d/view3d_draw_legacy.c
index b3f1804398b..e75e15c02c5 100644
--- a/source/blender/editors/space_view3d/view3d_draw_legacy.c
+++ b/source/blender/editors/space_view3d/view3d_draw_legacy.c
@@ -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"
@@ -415,7 +416,7 @@ static void draw_selected_name(Scene *scene, Object *ob, rcti *rect)
static void backdrawview3d(Scene *scene, wmWindow *win, ARegion *ar, View3D *v3d)
{
RegionView3D *rv3d = ar->regiondata;
- struct Base *base = scene->basact;
+ struct BaseLegacy *base = scene->basact;
int multisample_enabled;
BLI_assert(ar->regiontype == RGN_TYPE_WINDOW);
@@ -1031,15 +1032,15 @@ static void view3d_draw_bgpic_test(Scene *scene, ARegion *ar, View3D *v3d,
typedef struct View3DAfter {
struct View3DAfter *next, *prev;
- struct Base *base;
+ struct BaseLegacy *base;
short dflag;
} View3DAfter;
/* temp storage of Objects that need to be drawn as last */
-void ED_view3d_after_add(ListBase *lb, Base *base, const short dflag)
+void ED_view3d_after_add(ListBase *lb, BaseLegacy *base, const short dflag)
{
View3DAfter *v3da = MEM_callocN(sizeof(View3DAfter), "View 3d after");
- BLI_assert((base->flag & OB_FROMDUPLI) == 0);
+ BLI_assert((base->flag_legacy & OB_FROMDUPLI) == 0);
BLI_addtail(lb, v3da);
v3da->base = base;
v3da->dflag = dflag;
@@ -1133,13 +1134,13 @@ static DupliObject *dupli_step(DupliObject *dob)
}
static void draw_dupli_objects_color(
- Scene *scene, ARegion *ar, View3D *v3d, Base *base,
+ Scene *scene, ARegion *ar, View3D *v3d, BaseLegacy *base,
const short dflag, const int color)
{
RegionView3D *rv3d = ar->regiondata;
ListBase *lb;
LodLevel *savedlod;
- Base tbase = {NULL};
+ BaseLegacy tbase = {NULL};
BoundBox bb, *bb_tmp; /* use a copy because draw_object, calls clear_mesh_caches */
GLuint displist = 0;
unsigned char color_rgb[3];
@@ -1160,7 +1161,7 @@ static void draw_dupli_objects_color(
UI_GetThemeColorBlend3ubv(color, TH_BACK, 0.5f, color_rgb);
}
- tbase.flag = OB_FROMDUPLI | base->flag;
+ tbase.flag_legacy = OB_FROMDUPLI | base->flag_legacy;
lb = object_duplilist(G.main->eval_ctx, scene, base->object);
// BLI_listbase_sort(lb, dupli_ob_sort); /* might be nice to have if we have a dupli list with mixed objects. */
@@ -1293,12 +1294,12 @@ static void draw_dupli_objects_color(
glDeleteLists(displist, 1);
}
-void draw_dupli_objects(Scene *scene, ARegion *ar, View3D *v3d, Base *base)
+void draw_dupli_objects(Scene *scene, ARegion *ar, View3D *v3d, BaseLegacy *base)
{
/* define the color here so draw_dupli_objects_color can be called
* from the set loop */
- int color = (base->flag & SELECT) ? TH_SELECT : TH_WIRE;
+ int color = (base->flag_legacy & SELECT) ? TH_SELECT : TH_WIRE;
/* debug */
if (base->object->dup_group && base->object->dup_group->id.us < 1)
color = TH_REDALERT;
@@ -1445,15 +1446,16 @@ void ED_view3d_draw_depth_gpencil(Scene *scene, ARegion *ar, View3D *v3d)
void ED_view3d_draw_depth(Scene *scene, ARegion *ar, View3D *v3d, bool alphaoverride)
{
RegionView3D *rv3d = ar->regiondata;
- Base *base;
+ BaseLegacy *base;
short zbuf = v3d->zbuf;
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);
@@ -1604,7 +1606,7 @@ static void gpu_update_lamps_shadows_world(Scene *scene, View3D *v3d)
{
ListBase shadows;
Scene *sce_iter;
- Base *base;
+ BaseLegacy *base;
World *world = scene->world;
SceneRenderLayer *srl = v3d->scenelock ? BLI_findlink(&scene->r.layers, scene->r.actlay) : NULL;
@@ -1738,8 +1740,9 @@ 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;
- Base *base;
+ BaseLegacy *base;
const bool do_camera_frame = !draw_offscreen;
const bool draw_grids = !draw_offscreen && (v3d->flag2 & V3D_RENDER_OVERRIDE) == 0;
const bool draw_floor = (rv3d->view == RV3D_VIEW_USER) || (rv3d->persp != RV3D_ORTHO);
@@ -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 & 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 & 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);
}
}
@@ -2540,7 +2543,7 @@ static void view3d_stereo3d_setup_offscreen(Scene *scene, View3D *v3d, ARegion *
static void update_lods(Scene *scene, float camera_pos[3])
{
Scene *sce_iter;
- Base *base;
+ BaseLegacy *base;
for (SETLOOPER(scene, sce_iter, base)) {
Object *ob = base->object;