53
53
static void initData(ModifierData *md)
55
CurveModifierData *cmd = (CurveModifierData*) md;
55
CurveModifierData *cmd = (CurveModifierData *) md;
57
57
cmd->defaxis = MOD_CURVE_POSX;
60
60
static void copyData(ModifierData *md, ModifierData *target)
62
CurveModifierData *cmd = (CurveModifierData*) md;
63
CurveModifierData *tcmd = (CurveModifierData*) target;
62
CurveModifierData *cmd = (CurveModifierData *) md;
63
CurveModifierData *tcmd = (CurveModifierData *) target;
65
65
tcmd->defaxis = cmd->defaxis;
66
66
tcmd->object = cmd->object;
81
81
static int isDisabled(ModifierData *md, int UNUSED(userRenderParams))
83
CurveModifierData *cmd = (CurveModifierData*) md;
83
CurveModifierData *cmd = (CurveModifierData *) md;
85
85
return !cmd->object;
88
88
static void foreachObjectLink(
89
ModifierData *md, Object *ob,
90
void (*walk)(void *userData, Object *ob, Object **obpoin),
89
ModifierData *md, Object *ob,
90
void (*walk)(void *userData, Object *ob, Object **obpoin),
93
CurveModifierData *cmd = (CurveModifierData*) md;
93
CurveModifierData *cmd = (CurveModifierData *) md;
95
95
walk(userData, ob, &cmd->object);
98
98
static void updateDepgraph(ModifierData *md, DagForest *forest,
103
CurveModifierData *cmd = (CurveModifierData*) md;
103
CurveModifierData *cmd = (CurveModifierData *) md;
105
105
if (cmd->object) {
106
106
DagNode *curNode = dag_get_node(forest, cmd->object);
113
113
static void deformVerts(ModifierData *md, Object *ob,
114
DerivedMesh *derivedData,
115
float (*vertexCos)[3],
117
int UNUSED(useRenderParams),
118
int UNUSED(isFinalCalc))
114
DerivedMesh *derivedData,
115
float (*vertexCos)[3],
117
ModifierApplyFlag UNUSED(flag))
120
CurveModifierData *cmd = (CurveModifierData*) md;
119
CurveModifierData *cmd = (CurveModifierData *) md;
122
121
/* silly that defaxis and curve_deform_verts are off by 1
123
122
* but leave for now to save having to call do_versions */
124
123
curve_deform_verts(md->scene, cmd->object, ob, derivedData, vertexCos, numVerts,
125
cmd->name, cmd->defaxis-1);
124
cmd->name, cmd->defaxis - 1);
128
127
static void deformVertsEM(
129
ModifierData *md, Object *ob, struct BMEditMesh *editData,
130
DerivedMesh *derivedData, float (*vertexCos)[3], int numVerts)
128
ModifierData *md, Object *ob, struct BMEditMesh *em,
129
DerivedMesh *derivedData, float (*vertexCos)[3], int numVerts)
132
131
DerivedMesh *dm = derivedData;
134
if (!derivedData) dm = CDDM_from_BMEditMesh(editData, ob->data, FALSE, FALSE);
133
if (!derivedData) dm = CDDM_from_editbmesh(em, FALSE, FALSE);
136
deformVerts(md, ob, dm, vertexCos, numVerts, 0, 0);
135
deformVerts(md, ob, dm, vertexCos, numVerts, 0);
138
137
if (!derivedData) dm->release(dm);
144
143
/* structName */ "CurveModifierData",
145
144
/* structSize */ sizeof(CurveModifierData),
146
145
/* type */ eModifierTypeType_OnlyDeform,
147
/* flags */ eModifierTypeFlag_AcceptsCVs
148
| eModifierTypeFlag_SupportsEditmode,
146
/* flags */ eModifierTypeFlag_AcceptsCVs |
147
eModifierTypeFlag_SupportsEditmode,
150
149
/* copyData */ copyData,
151
150
/* deformVerts */ deformVerts,
160
159
/* isDisabled */ isDisabled,
161
160
/* updateDepgraph */ updateDepgraph,
162
161
/* dependsOnTime */ NULL,
163
/* dependsOnNormals */ NULL,
162
/* dependsOnNormals */ NULL,
164
163
/* foreachObjectLink */ foreachObjectLink,
165
164
/* foreachIDLink */ NULL,
166
165
/* foreachTexLink */ NULL,