Deform modifiers can now use useRenderParams and isFinalCalc in modifier stack as non-deforming and constructing modifiers can already - please check for problems or if i missed something
This commit is contained in:
parent
c4efd3a1af
commit
934e3ddf0d
|
@ -124,7 +124,8 @@ typedef struct ModifierTypeInfo {
|
|||
*/
|
||||
void (*deformVerts)(struct ModifierData *md, struct Object *ob,
|
||||
struct DerivedMesh *derivedData,
|
||||
float (*vertexCos)[3], int numVerts);
|
||||
float (*vertexCos)[3], int numVerts,
|
||||
int useRenderParams, int isFinalCalc);
|
||||
|
||||
/* Like deformVerts but called during editmode (for supporting modifiers)
|
||||
*/
|
||||
|
|
|
@ -1403,7 +1403,7 @@ DerivedMesh *mesh_create_derived_for_modifier(Scene *scene, Object *ob, Modifier
|
|||
int numVerts;
|
||||
float (*deformedVerts)[3] = mesh_getVertexCos(me, &numVerts);
|
||||
|
||||
mti->deformVerts(md, ob, NULL, deformedVerts, numVerts);
|
||||
mti->deformVerts(md, ob, NULL, deformedVerts, numVerts, 0, 0);
|
||||
dm = getMeshDerivedMesh(me, ob, deformedVerts);
|
||||
|
||||
MEM_freeN(deformedVerts);
|
||||
|
@ -1628,7 +1628,7 @@ static void mesh_calc_modifiers(Scene *scene, Object *ob, float (*inputVertexCos
|
|||
if(!deformedVerts)
|
||||
deformedVerts = mesh_getVertexCos(me, &numVerts);
|
||||
|
||||
mti->deformVerts(md, ob, NULL, deformedVerts, numVerts);
|
||||
mti->deformVerts(md, ob, NULL, deformedVerts, numVerts, useRenderParams, useDeform);
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
|
@ -1709,7 +1709,7 @@ static void mesh_calc_modifiers(Scene *scene, Object *ob, float (*inputVertexCos
|
|||
}
|
||||
}
|
||||
|
||||
mti->deformVerts(md, ob, dm, deformedVerts, numVerts);
|
||||
mti->deformVerts(md, ob, dm, deformedVerts, numVerts, useRenderParams, useDeform);
|
||||
} else {
|
||||
DerivedMesh *ndm;
|
||||
|
||||
|
|
|
@ -1256,7 +1256,7 @@ static void curve_calc_modifiers_pre(Scene *scene, Object *ob, int forRender, fl
|
|||
originalVerts = MEM_dupallocN(deformedVerts);
|
||||
}
|
||||
|
||||
mti->deformVerts(md, ob, NULL, deformedVerts, numVerts);
|
||||
mti->deformVerts(md, ob, NULL, deformedVerts, numVerts, forRender, editmode);
|
||||
|
||||
if (md==preTesselatePoint)
|
||||
break;
|
||||
|
@ -1317,7 +1317,7 @@ static void curve_calc_modifiers_post(Scene *scene, Object *ob, ListBase *dispba
|
|||
fp+= offs;
|
||||
}
|
||||
|
||||
mti->deformVerts(md, ob, NULL, (float(*)[3]) allverts, totvert);
|
||||
mti->deformVerts(md, ob, NULL, (float(*)[3]) allverts, totvert, forRender, editmode);
|
||||
|
||||
fp= allverts;
|
||||
for (dl=dispbase->first; dl; dl=dl->next) {
|
||||
|
@ -1329,7 +1329,7 @@ static void curve_calc_modifiers_post(Scene *scene, Object *ob, ListBase *dispba
|
|||
}
|
||||
else {
|
||||
for (dl=dispbase->first; dl; dl=dl->next) {
|
||||
mti->deformVerts(md, ob, NULL, (float(*)[3]) dl->verts, (dl->type==DL_INDEX3)?dl->nr:dl->parts*dl->nr);
|
||||
mti->deformVerts(md, ob, NULL, (float(*)[3]) dl->verts, (dl->type==DL_INDEX3)?dl->nr:dl->parts*dl->nr, forRender, editmode);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -924,7 +924,7 @@ void lattice_calc_modifiers(Scene *scene, Object *ob)
|
|||
if (mti->type!=eModifierTypeType_OnlyDeform) continue;
|
||||
|
||||
if (!vertexCos) vertexCos = lattice_getVertexCos(ob, &numVerts);
|
||||
mti->deformVerts(md, ob, NULL, vertexCos, numVerts);
|
||||
mti->deformVerts(md, ob, NULL, vertexCos, numVerts, 0, 0);
|
||||
}
|
||||
|
||||
/* always displist to make this work like derivedmesh */
|
||||
|
|
|
@ -187,7 +187,7 @@ static void curveModifier_updateDepgraph(
|
|||
|
||||
static void curveModifier_deformVerts(
|
||||
ModifierData *md, Object *ob, DerivedMesh *derivedData,
|
||||
float (*vertexCos)[3], int numVerts)
|
||||
float (*vertexCos)[3], int numVerts, int useRenderParams, int isFinalCalc)
|
||||
{
|
||||
CurveModifierData *cmd = (CurveModifierData*) md;
|
||||
|
||||
|
@ -203,7 +203,7 @@ static void curveModifier_deformVertsEM(
|
|||
|
||||
if(!derivedData) dm = CDDM_from_editmesh(editData, ob->data);
|
||||
|
||||
curveModifier_deformVerts(md, ob, dm, vertexCos, numVerts);
|
||||
curveModifier_deformVerts(md, ob, dm, vertexCos, numVerts, 0, 0);
|
||||
|
||||
if(!derivedData) dm->release(dm);
|
||||
}
|
||||
|
@ -276,7 +276,7 @@ static void modifier_vgroup_cache(ModifierData *md, float (*vertexCos)[3])
|
|||
|
||||
static void latticeModifier_deformVerts(
|
||||
ModifierData *md, Object *ob, DerivedMesh *derivedData,
|
||||
float (*vertexCos)[3], int numVerts)
|
||||
float (*vertexCos)[3], int numVerts, int useRenderParams, int isFinalCalc)
|
||||
{
|
||||
LatticeModifierData *lmd = (LatticeModifierData*) md;
|
||||
|
||||
|
@ -295,7 +295,7 @@ static void latticeModifier_deformVertsEM(
|
|||
|
||||
if(!derivedData) dm = CDDM_from_editmesh(editData, ob->data);
|
||||
|
||||
latticeModifier_deformVerts(md, ob, dm, vertexCos, numVerts);
|
||||
latticeModifier_deformVerts(md, ob, dm, vertexCos, numVerts, 0, 0);
|
||||
|
||||
if(!derivedData) dm->release(dm);
|
||||
}
|
||||
|
@ -3686,7 +3686,7 @@ static void displaceModifier_do(
|
|||
|
||||
static void displaceModifier_deformVerts(
|
||||
ModifierData *md, Object *ob, DerivedMesh *derivedData,
|
||||
float (*vertexCos)[3], int numVerts)
|
||||
float (*vertexCos)[3], int numVerts, int useRenderParams, int isFinalCalc)
|
||||
{
|
||||
DerivedMesh *dm;
|
||||
|
||||
|
@ -4371,7 +4371,7 @@ static void smoothModifier_do(
|
|||
|
||||
static void smoothModifier_deformVerts(
|
||||
ModifierData *md, Object *ob, DerivedMesh *derivedData,
|
||||
float (*vertexCos)[3], int numVerts)
|
||||
float (*vertexCos)[3], int numVerts, int useRenderParams, int isFinalCalc)
|
||||
{
|
||||
DerivedMesh *dm;
|
||||
|
||||
|
@ -4951,7 +4951,7 @@ static void castModifier_cuboid_do(
|
|||
|
||||
static void castModifier_deformVerts(
|
||||
ModifierData *md, Object *ob, DerivedMesh *derivedData,
|
||||
float (*vertexCos)[3], int numVerts)
|
||||
float (*vertexCos)[3], int numVerts, int useRenderParams, int isFinalCalc)
|
||||
{
|
||||
DerivedMesh *dm = derivedData;
|
||||
CastModifierData *cmd = (CastModifierData *)md;
|
||||
|
@ -5354,7 +5354,7 @@ static void waveModifier_do(WaveModifierData *md,
|
|||
|
||||
static void waveModifier_deformVerts(
|
||||
ModifierData *md, Object *ob, DerivedMesh *derivedData,
|
||||
float (*vertexCos)[3], int numVerts)
|
||||
float (*vertexCos)[3], int numVerts, int useRenderParams, int isFinalCalc)
|
||||
{
|
||||
DerivedMesh *dm;
|
||||
WaveModifierData *wmd = (WaveModifierData *)md;
|
||||
|
@ -5459,7 +5459,7 @@ static void armatureModifier_updateDepgraph(
|
|||
|
||||
static void armatureModifier_deformVerts(
|
||||
ModifierData *md, Object *ob, DerivedMesh *derivedData,
|
||||
float (*vertexCos)[3], int numVerts)
|
||||
float (*vertexCos)[3], int numVerts, int useRenderParams, int isFinalCalc)
|
||||
{
|
||||
ArmatureModifierData *amd = (ArmatureModifierData*) md;
|
||||
|
||||
|
@ -5580,7 +5580,7 @@ static void hookModifier_updateDepgraph(ModifierData *md, DagForest *forest, Sce
|
|||
|
||||
static void hookModifier_deformVerts(
|
||||
ModifierData *md, Object *ob, DerivedMesh *derivedData,
|
||||
float (*vertexCos)[3], int numVerts)
|
||||
float (*vertexCos)[3], int numVerts, int useRenderParams, int isFinalCalc)
|
||||
{
|
||||
HookModifierData *hmd = (HookModifierData*) md;
|
||||
float vec[3], mat[4][4];
|
||||
|
@ -5701,7 +5701,7 @@ static void hookModifier_deformVertsEM(
|
|||
|
||||
if(!derivedData) dm = CDDM_from_editmesh(editData, ob->data);
|
||||
|
||||
hookModifier_deformVerts(md, ob, derivedData, vertexCos, numVerts);
|
||||
hookModifier_deformVerts(md, ob, derivedData, vertexCos, numVerts, 0, 0);
|
||||
|
||||
if(!derivedData) dm->release(dm);
|
||||
}
|
||||
|
@ -5710,7 +5710,7 @@ static void hookModifier_deformVertsEM(
|
|||
|
||||
static void softbodyModifier_deformVerts(
|
||||
ModifierData *md, Object *ob, DerivedMesh *derivedData,
|
||||
float (*vertexCos)[3], int numVerts)
|
||||
float (*vertexCos)[3], int numVerts, int useRenderParams, int isFinalCalc)
|
||||
{
|
||||
sbObjectStep(md->scene, ob, (float)md->scene->r.cfra, vertexCos, numVerts);
|
||||
}
|
||||
|
@ -5898,7 +5898,7 @@ static int collisionModifier_dependsOnTime(ModifierData *md)
|
|||
|
||||
static void collisionModifier_deformVerts(
|
||||
ModifierData *md, Object *ob, DerivedMesh *derivedData,
|
||||
float (*vertexCos)[3], int numVerts)
|
||||
float (*vertexCos)[3], int numVerts, int useRenderParams, int isFinalCalc)
|
||||
{
|
||||
CollisionModifierData *collmd = (CollisionModifierData*) md;
|
||||
DerivedMesh *dm = NULL;
|
||||
|
@ -6060,7 +6060,7 @@ static int surfaceModifier_dependsOnTime(ModifierData *md)
|
|||
|
||||
static void surfaceModifier_deformVerts(
|
||||
ModifierData *md, Object *ob, DerivedMesh *derivedData,
|
||||
float (*vertexCos)[3], int numVerts)
|
||||
float (*vertexCos)[3], int numVerts, int useRenderParams, int isFinalCalc)
|
||||
{
|
||||
SurfaceModifierData *surmd = (SurfaceModifierData*) md;
|
||||
unsigned int numverts = 0, i = 0;
|
||||
|
@ -6268,7 +6268,7 @@ static int is_last_displist(Object *ob)
|
|||
/* saves the current emitter state for a particle system and calculates particles */
|
||||
static void particleSystemModifier_deformVerts(
|
||||
ModifierData *md, Object *ob, DerivedMesh *derivedData,
|
||||
float (*vertexCos)[3], int numVerts)
|
||||
float (*vertexCos)[3], int numVerts, int useRenderParams, int isFinalCalc)
|
||||
{
|
||||
DerivedMesh *dm = derivedData;
|
||||
ParticleSystemModifierData *psmd= (ParticleSystemModifierData*) md;
|
||||
|
@ -7789,7 +7789,7 @@ static void meshdeformModifier_do(
|
|||
|
||||
static void meshdeformModifier_deformVerts(
|
||||
ModifierData *md, Object *ob, DerivedMesh *derivedData,
|
||||
float (*vertexCos)[3], int numVerts)
|
||||
float (*vertexCos)[3], int numVerts, int useRenderParams, int isFinalCalc)
|
||||
{
|
||||
DerivedMesh *dm;
|
||||
|
||||
|
@ -7937,7 +7937,7 @@ static void shrinkwrapModifier_foreachObjectLink(ModifierData *md, Object *ob, O
|
|||
walk(userData, ob, &smd->auxTarget);
|
||||
}
|
||||
|
||||
static void shrinkwrapModifier_deformVerts(ModifierData *md, Object *ob, DerivedMesh *derivedData, float (*vertexCos)[3], int numVerts)
|
||||
static void shrinkwrapModifier_deformVerts(ModifierData *md, Object *ob, DerivedMesh *derivedData, float (*vertexCos)[3], int numVerts, int useRenderParams, int isFinalCalc)
|
||||
{
|
||||
DerivedMesh *dm = NULL;
|
||||
CustomDataMask dataMask = shrinkwrapModifier_requiredDataMask(md);
|
||||
|
@ -8051,7 +8051,7 @@ static void simpledeformModifier_updateDepgraph(ModifierData *md, DagForest *for
|
|||
dag_add_relation(forest, dag_get_node(forest, smd->origin), obNode, DAG_RL_OB_DATA, "SimpleDeform Modifier");
|
||||
}
|
||||
|
||||
static void simpledeformModifier_deformVerts(ModifierData *md, Object *ob, DerivedMesh *derivedData, float (*vertexCos)[3], int numVerts)
|
||||
static void simpledeformModifier_deformVerts(ModifierData *md, Object *ob, DerivedMesh *derivedData, float (*vertexCos)[3], int numVerts, int useRenderParams, int isFinalCalc)
|
||||
{
|
||||
DerivedMesh *dm = NULL;
|
||||
CustomDataMask dataMask = simpledeformModifier_requiredDataMask(md);
|
||||
|
|
|
@ -284,7 +284,7 @@ int ED_object_modifier_apply(ReportList *reports, Scene *scene, Object *ob, Modi
|
|||
}
|
||||
|
||||
vertexCos = curve_getVertexCos(cu, &cu->nurb, &numVerts);
|
||||
mti->deformVerts(md, ob, NULL, vertexCos, numVerts);
|
||||
mti->deformVerts(md, ob, NULL, vertexCos, numVerts, 0, 0);
|
||||
curve_applyVertexCos(cu, &cu->nurb, vertexCos);
|
||||
|
||||
converted = 1;
|
||||
|
|
Loading…
Reference in New Issue