Fix: Assert, invisible instances with mixed instancing types
When combining the internal geometry component instancing (used when the original object type doesn't match the evaluated data type) with the "vertex dupli" instancing could cause the fix frome508de0417
to fail, because the subsequent fix from864af51d6a
popped from the "instance generator type" stack even when there was nothing added to it (for geometry instancing).
This commit is contained in:
parent
af8a449ca5
commit
0e6d893d07
Notes:
blender-bot
2023-02-14 02:41:05 +01:00
Referenced by commit 3250ab31cd
, Cleanup: Remove debug print
Referenced by issue #100706, Regression: Instanced NURBs or CURVES on mesh vertices are not visible in 3.2+
|
@ -245,6 +245,7 @@ static DupliObject *make_dupli(const DupliContext *ctx,
|
|||
dob->ob = ob;
|
||||
dob->ob_data = const_cast<ID *>(object_data);
|
||||
mul_m4_m4m4(dob->mat, (float(*)[4])ctx->space_mat, mat);
|
||||
std::cout << "Use\n";
|
||||
dob->type = ctx->gen == nullptr ? 0 : ctx->dupli_gen_type_stack->last();
|
||||
dob->preview_base_geometry = ctx->preview_base_geometry;
|
||||
dob->preview_instance_index = ctx->preview_instance_index;
|
||||
|
@ -344,8 +345,10 @@ static void make_recursive_duplis(const DupliContext *ctx,
|
|||
ctx->instance_stack->append(ob);
|
||||
rctx.gen->make_duplis(&rctx);
|
||||
ctx->instance_stack->remove_last();
|
||||
if (!ctx->dupli_gen_type_stack->is_empty()) {
|
||||
ctx->dupli_gen_type_stack->remove_last();
|
||||
if (rctx.gen->type != GEOMETRY_SET_DUPLI_GENERATOR_TYPE) {
|
||||
if (!ctx->dupli_gen_type_stack->is_empty()) {
|
||||
ctx->dupli_gen_type_stack->remove_last();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -391,8 +394,10 @@ static void make_child_duplis(const DupliContext *ctx,
|
|||
ob->flag |= OB_DONE; /* Doesn't render. */
|
||||
}
|
||||
make_child_duplis_cb(&pctx, userdata, ob);
|
||||
if (!ctx->dupli_gen_type_stack->is_empty()) {
|
||||
ctx->dupli_gen_type_stack->remove_last();
|
||||
if (pctx.gen->type != GEOMETRY_SET_DUPLI_GENERATOR_TYPE) {
|
||||
if (!ctx->dupli_gen_type_stack->is_empty()) {
|
||||
ctx->dupli_gen_type_stack->remove_last();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -419,8 +424,10 @@ static void make_child_duplis(const DupliContext *ctx,
|
|||
}
|
||||
|
||||
make_child_duplis_cb(&pctx, userdata, ob);
|
||||
if (!ctx->dupli_gen_type_stack->is_empty()) {
|
||||
ctx->dupli_gen_type_stack->remove_last();
|
||||
if (pctx.gen->type != GEOMETRY_SET_DUPLI_GENERATOR_TYPE) {
|
||||
if (!ctx->dupli_gen_type_stack->is_empty()) {
|
||||
ctx->dupli_gen_type_stack->remove_last();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue