static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx) { CurveModifierData *cmd = (CurveModifierData *)md; if (cmd->object != NULL) { /* TODO(sergey): Need to do the same eval_flags trick for path * as happening in legacy depsgraph callback. */ /* TODO(sergey): Currently path is evaluated as a part of modifier stack, * might be changed in the future. */ struct Depsgraph *depsgraph = DEG_get_graph_from_handle(ctx->node); DEG_add_object_relation(ctx->node, cmd->object, DEG_OB_COMP_GEOMETRY, "Curve Modifier"); DEG_add_special_eval_flag(depsgraph, &cmd->object->id, DAG_EVAL_NEED_CURVE_PATH); } DEG_add_object_relation(ctx->node, ctx->object, DEG_OB_COMP_TRANSFORM, "Curve Modifier"); }
static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx) { ArrayModifierData *amd = (ArrayModifierData *)md; if (amd->start_cap != NULL) { DEG_add_object_relation(ctx->node, amd->start_cap, DEG_OB_COMP_TRANSFORM, "Array Modifier Start Cap"); DEG_add_object_relation(ctx->node, amd->start_cap, DEG_OB_COMP_GEOMETRY, "Array Modifier Start Cap"); } if (amd->end_cap != NULL) { DEG_add_object_relation(ctx->node, amd->end_cap, DEG_OB_COMP_TRANSFORM, "Array Modifier End Cap"); DEG_add_object_relation(ctx->node, amd->end_cap, DEG_OB_COMP_GEOMETRY, "Array Modifier End Cap"); } if (amd->curve_ob) { struct Depsgraph *depsgraph = DEG_get_graph_from_handle(ctx->node); DEG_add_object_relation(ctx->node, amd->curve_ob, DEG_OB_COMP_GEOMETRY, "Array Modifier Curve"); DEG_add_special_eval_flag(depsgraph, &amd->curve_ob->id, DAG_EVAL_NEED_CURVE_PATH); } if (amd->offset_ob != NULL) { DEG_add_object_relation(ctx->node, amd->offset_ob, DEG_OB_COMP_TRANSFORM, "Array Modifier Offset"); } }