示例#1
0
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");
}
示例#2
0
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");
	}
}
示例#3
0
static void updateDepsgraph(ModifierData *md,
                            struct Main *UNUSED(bmain),
                            struct Scene *scene,
                            Object *UNUSED(ob),
                            struct DepsNodeHandle *node)
{
	ArrayModifierData *amd = (ArrayModifierData *)md;
	if (amd->start_cap != NULL) {
		DEG_add_object_relation(node, amd->start_cap, DEG_OB_COMP_TRANSFORM, "Hook Modifier Start Cap");
	}
	if (amd->end_cap != NULL) {
		DEG_add_object_relation(node, amd->end_cap, DEG_OB_COMP_TRANSFORM, "Hook Modifier End Cap");
	}
	if (amd->curve_ob) {
		DEG_add_object_relation(node, amd->end_cap, DEG_OB_COMP_GEOMETRY, "Hook Modifier Curve");
		DEG_add_special_eval_flag(scene->depsgraph, &amd->curve_ob->id, DAG_EVAL_NEED_CURVE_PATH);
	}
	if (amd->offset_ob != NULL) {
		DEG_add_object_relation(node, amd->offset_ob, DEG_OB_COMP_TRANSFORM, "Hook Modifier Offset");
	}
}