Changeset View
Changeset View
Standalone View
Standalone View
source/blender/modifiers/intern/MOD_array.c
| Show First 20 Lines • Show All 74 Lines • ▼ Show 20 Lines | static void foreachObjectLink(ModifierData *md, Object *ob, ObjectWalkFunc walk, void *userData) | ||||
| walk(userData, ob, &amd->end_cap, IDWALK_CB_NOP); | walk(userData, ob, &amd->end_cap, IDWALK_CB_NOP); | ||||
| walk(userData, ob, &amd->curve_ob, IDWALK_CB_NOP); | walk(userData, ob, &amd->curve_ob, IDWALK_CB_NOP); | ||||
| walk(userData, ob, &amd->offset_ob, IDWALK_CB_NOP); | walk(userData, ob, &amd->offset_ob, IDWALK_CB_NOP); | ||||
| } | } | ||||
| static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx) | static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx) | ||||
| { | { | ||||
| ArrayModifierData *amd = (ArrayModifierData *)md; | ArrayModifierData *amd = (ArrayModifierData *)md; | ||||
| bool need_transform_dependency = false; | |||||
| if (amd->start_cap != NULL) { | if (amd->start_cap != NULL) { | ||||
| DEG_add_object_relation( | 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"); | ctx->node, amd->start_cap, DEG_OB_COMP_GEOMETRY, "Array Modifier Start Cap"); | ||||
| } | } | ||||
| if (amd->end_cap != NULL) { | if (amd->end_cap != NULL) { | ||||
| DEG_add_object_relation( | 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"); | ctx->node, amd->end_cap, DEG_OB_COMP_GEOMETRY, "Array Modifier End Cap"); | ||||
| } | } | ||||
| if (amd->curve_ob) { | if (amd->curve_ob) { | ||||
| DEG_add_object_relation( | DEG_add_object_relation( | ||||
| ctx->node, amd->curve_ob, DEG_OB_COMP_GEOMETRY, "Array Modifier Curve"); | ctx->node, amd->curve_ob, DEG_OB_COMP_GEOMETRY, "Array Modifier Curve"); | ||||
| DEG_add_special_eval_flag(ctx->node, &amd->curve_ob->id, DAG_EVAL_NEED_CURVE_PATH); | DEG_add_special_eval_flag(ctx->node, &amd->curve_ob->id, DAG_EVAL_NEED_CURVE_PATH); | ||||
| } | } | ||||
| if (amd->offset_ob != NULL) { | if (amd->offset_ob != NULL) { | ||||
| DEG_add_object_relation( | DEG_add_object_relation( | ||||
| ctx->node, amd->offset_ob, DEG_OB_COMP_TRANSFORM, "Array Modifier Offset"); | ctx->node, amd->offset_ob, DEG_OB_COMP_TRANSFORM, "Array Modifier Offset"); | ||||
| need_transform_dependency = true; | |||||
| } | } | ||||
| if (need_transform_dependency) { | |||||
| DEG_add_modifier_to_transform_relation(ctx->node, "Array Modifier"); | DEG_add_modifier_to_transform_relation(ctx->node, "Array Modifier"); | ||||
| } | } | ||||
| } | |||||
| BLI_INLINE float sum_v3(const float v[3]) | BLI_INLINE float sum_v3(const float v[3]) | ||||
| { | { | ||||
| return v[0] + v[1] + v[2]; | return v[0] + v[1] + v[2]; | ||||
| } | } | ||||
| /* Structure used for sorting vertices, when processing doubles */ | /* Structure used for sorting vertices, when processing doubles */ | ||||
| typedef struct SortVertsElem { | typedef struct SortVertsElem { | ||||
| ▲ Show 20 Lines • Show All 709 Lines • Show Last 20 Lines | |||||