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:
authorDalai Felinto <dfelinto@gmail.com>2017-11-08 15:34:25 +0300
committerDalai Felinto <dfelinto@gmail.com>2017-11-08 15:49:39 +0300
commit3750dfaa0a23130f1fc5200b67443ce68fa4d930 (patch)
treee49d032c13694ac10245f31deaa7a876fba275d0 /source/blender/blenkernel/intern/object_dupli.c
parentda4bfb87703e49806aff5ce4ed75deaf8c7310e1 (diff)
Partial Fix T53269: Dupli-verts/dupli-faces not working
This fixes the issue for the Draw Manager, but for Cycles this is still not working. The iterator bpy.context.depsgraph.duplis seems to be correct though.
Diffstat (limited to 'source/blender/blenkernel/intern/object_dupli.c')
-rw-r--r--source/blender/blenkernel/intern/object_dupli.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/source/blender/blenkernel/intern/object_dupli.c b/source/blender/blenkernel/intern/object_dupli.c
index c25207d81bf..bfc99e1f238 100644
--- a/source/blender/blenkernel/intern/object_dupli.c
+++ b/source/blender/blenkernel/intern/object_dupli.c
@@ -75,6 +75,7 @@ typedef struct DupliContext {
Group *group; /* XXX child objects are selected from this group if set, could be nicer */
Scene *scene;
+ SceneLayer *scene_layer;
Object *object;
float space_mat[4][4];
@@ -99,6 +100,7 @@ static void init_context(DupliContext *r_ctx, const EvaluationContext *eval_ctx,
{
r_ctx->eval_ctx = eval_ctx;
r_ctx->scene = scene;
+ r_ctx->scene_layer = eval_ctx->scene_layer;
/* don't allow BKE_object_handle_update for viewport during render, can crash */
r_ctx->do_update = update && !(G.is_rendering && eval_ctx->mode != DAG_EVAL_RENDER);
r_ctx->animated = false;
@@ -255,13 +257,11 @@ static void make_child_duplis(const DupliContext *ctx, void *userdata, MakeChild
}
}
else {
- unsigned int lay = ctx->scene->lay;
int baseid = 0;
- BaseLegacy *base;
- for (base = ctx->scene->base.first; base; base = base->next, baseid++) {
+ SceneLayer *scene_layer = ctx->scene_layer;
+ for (Base *base = scene_layer->object_bases.first; base; base = base->next, baseid++) {
Object *ob = base->object;
-
- if ((base->lay & lay) && ob != obedit && is_child(ob, parent)) {
+ if ((base->flag & BASE_VISIBLED) && ob != obedit && is_child(ob, parent)) {
DupliContext pctx;
copy_dupli_context(&pctx, ctx, ctx->object, NULL, baseid, false);