@brecht, thanks.
Here is what I’ve written, without knowing exactly what it means, but similarly as other modifiers.
I may miss something as the issue is still there with:
static void foreachObjectLink(ModifierData *md, Object *ob, ObjectWalkFunc walk, void *userData)
{
FanModifierData *fanModifierData = (FanModifierData *)md;
walk(userData, ob, &fanModifierData->pivot, IDWALK_CB_NOP);
}
static void updateDepgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
{
FanModifierData *fanModifierData = (FanModifierData *)md;
if (fanModifierData->pivot != NULL)
{
DagNode *curNode = dag_get_node(ctx->forest, fanModifierData->pivot);
dag_add_relation(ctx->forest, curNode, ctx->obNode, DAG_RL_DATA_DATA | DAG_RL_OB_DATA, "Fan Modifier");
}
}
static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
{
FanModifierData *fanModifierData = (FanModifierData *)md;
if (fanModifierData->pivot != NULL)
{
DEG_add_object_relation(ctx->node, fanModifierData->pivot, DEG_OB_COMP_TRANSFORM, "Fan Modifier Pivot");
DEG_add_object_relation(ctx->node, fanModifierData->pivot, DEG_OB_COMP_GEOMETRY, "Fan Modifier Pivot");
}
DEG_add_object_relation(ctx->node, ctx->object, DEG_OB_COMP_TRANSFORM, "Fan Modifier Pivot");
}
And the structure is:
ModifierTypeInfo modifierType_Fan = {
/* name */ "Fan",
/* structName */ "FanModifierData",
/* structSize */ sizeof(FanModifierData),
/* type */ eModifierTypeType_DeformOrConstruct,
/* flags */ eModifierTypeFlag_AcceptsMesh |
/*eModifierTypeFlag_AcceptsCVs |*/
eModifierTypeFlag_SupportsMapping |
eModifierTypeFlag_SupportsEditmode |
eModifierTypeFlag_EnableInEditmode,
/* copyData */ copyData,
/* deformVerts */ NULL,
/* deformMatrices */ NULL,
/* deformVertsEM */ NULL,
/* deformMatricesEM */ NULL,
/* applyModifier */ applyModifier,
/* applyModifierEM */ NULL,
/* initData */ initData,
/* requiredDataMask */ NULL,
/* freeData */ NULL,
/* isDisabled */ NULL,
/* updateDepgraph */ updateDepgraph,
/* updateDepsgraph */ updateDepsgraph,
/* dependsOnTime */ NULL,
/* dependsOnNormals */ NULL,
/* foreachObjectLink */ foreachObjectLink,
/* foreachIDLink */ NULL,
/* foreachTexLink */ NULL,
};