diff options
author | Bastien Montagne <montagne29@wanadoo.fr> | 2018-11-27 19:21:16 +0300 |
---|---|---|
committer | Bastien Montagne <montagne29@wanadoo.fr> | 2018-11-27 23:17:06 +0300 |
commit | b4087ea6392e051fd9e4f7ee5207d089a044e15e (patch) | |
tree | 164c0d165af06bd6257dc003e1164fe226e6ac89 /source | |
parent | 4543da6ca63d227ed9ad809fbbdd765acab7aba6 (diff) |
Modifiers: Refactor `MOD_deform_mesh_eval_get()` helper a bit.
Now that function also takes expected number of vertices, and do the
checks against generated mesh internally.
Diffstat (limited to 'source')
21 files changed, 54 insertions, 42 deletions
diff --git a/source/blender/modifiers/intern/MOD_armature.c b/source/blender/modifiers/intern/MOD_armature.c index 3209391d4bc..f37b5d4ec4d 100644 --- a/source/blender/modifiers/intern/MOD_armature.c +++ b/source/blender/modifiers/intern/MOD_armature.c @@ -136,7 +136,7 @@ static void deformVertsEM( Mesh *mesh, float (*vertexCos)[3], int numVerts) { ArmatureModifierData *amd = (ArmatureModifierData *) md; - Mesh *mesh_src = MOD_get_mesh_eval(ctx->object, em, mesh, NULL, false, false); + Mesh *mesh_src = MOD_deform_mesh_eval_get(ctx->object, em, mesh, NULL, numVerts, false, false); MOD_previous_vcos_store(md, vertexCos); /* if next modifier needs original vertices */ @@ -160,7 +160,7 @@ static void deformMatricesEM( float (*defMats)[3][3], int numVerts) { ArmatureModifierData *amd = (ArmatureModifierData *) md; - Mesh *mesh_src = MOD_get_mesh_eval(ctx->object, em, mesh, NULL, false, false); + Mesh *mesh_src = MOD_deform_mesh_eval_get(ctx->object, em, mesh, NULL, numVerts, false, false); armature_deform_verts(amd->object, ctx->object, mesh_src, vertexCos, defMats, numVerts, amd->deformflag, NULL, amd->defgrp_name, NULL); @@ -175,7 +175,7 @@ static void deformMatrices( float (*vertexCos)[3], float (*defMats)[3][3], int numVerts) { ArmatureModifierData *amd = (ArmatureModifierData *) md; - Mesh *mesh_src = MOD_get_mesh_eval(ctx->object, NULL, mesh, NULL, false, false); + Mesh *mesh_src = MOD_deform_mesh_eval_get(ctx->object, NULL, mesh, NULL, numVerts, false, false); armature_deform_verts(amd->object, ctx->object, mesh_src, vertexCos, defMats, numVerts, amd->deformflag, NULL, amd->defgrp_name, NULL); diff --git a/source/blender/modifiers/intern/MOD_cast.c b/source/blender/modifiers/intern/MOD_cast.c index 959f77b0718..c80bbe5cc96 100644 --- a/source/blender/modifiers/intern/MOD_cast.c +++ b/source/blender/modifiers/intern/MOD_cast.c @@ -433,7 +433,7 @@ static void deformVerts( if (ctx->object->type == OB_MESH) { /* mesh_src is only needed for vgroups. */ - mesh_src = MOD_get_mesh_eval(ctx->object, NULL, mesh, NULL, false, false); + mesh_src = MOD_deform_mesh_eval_get(ctx->object, NULL, mesh, NULL, numVerts, false, false); BLI_assert(mesh_src->totvert == numVerts); } @@ -455,7 +455,7 @@ static void deformVertsEM( Mesh *mesh, float (*vertexCos)[3], int numVerts) { CastModifierData *cmd = (CastModifierData *)md; - Mesh *mesh_src = MOD_get_mesh_eval(ctx->object, editData, mesh, NULL, false, false); + Mesh *mesh_src = MOD_deform_mesh_eval_get(ctx->object, editData, mesh, NULL, numVerts, false, false); BLI_assert(mesh_src->totvert == numVerts); diff --git a/source/blender/modifiers/intern/MOD_cloth.c b/source/blender/modifiers/intern/MOD_cloth.c index 55af0f04bac..636c465d304 100644 --- a/source/blender/modifiers/intern/MOD_cloth.c +++ b/source/blender/modifiers/intern/MOD_cloth.c @@ -93,7 +93,7 @@ static void deformVerts( } if (mesh == NULL) { - mesh_src = MOD_get_mesh_eval(ctx->object, NULL, NULL, NULL, false, false); + mesh_src = MOD_deform_mesh_eval_get(ctx->object, NULL, NULL, NULL, numVerts, false, false); } else { /* Not possible to use get_mesh() in this case as we'll modify its vertices diff --git a/source/blender/modifiers/intern/MOD_collision.c b/source/blender/modifiers/intern/MOD_collision.c index 2fddef21996..011635e3012 100644 --- a/source/blender/modifiers/intern/MOD_collision.c +++ b/source/blender/modifiers/intern/MOD_collision.c @@ -105,7 +105,7 @@ static void deformVerts( ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh, float (*vertexCos)[3], - int UNUSED(numVerts)) + int numVerts) { CollisionModifierData *collmd = (CollisionModifierData *) md; Mesh *mesh_src; @@ -113,7 +113,7 @@ static void deformVerts( Object *ob = ctx->object; if (mesh == NULL) { - mesh_src = MOD_get_mesh_eval(ob, NULL, NULL, NULL, false, false); + mesh_src = MOD_deform_mesh_eval_get(ob, NULL, NULL, NULL, numVerts, false, false); } else { /* Not possible to use get_mesh() in this case as we'll modify its vertices diff --git a/source/blender/modifiers/intern/MOD_correctivesmooth.c b/source/blender/modifiers/intern/MOD_correctivesmooth.c index 777e1cbf21b..913ac14f21b 100644 --- a/source/blender/modifiers/intern/MOD_correctivesmooth.c +++ b/source/blender/modifiers/intern/MOD_correctivesmooth.c @@ -717,7 +717,7 @@ static void deformVerts( ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh, float (*vertexCos)[3], int numVerts) { - Mesh *mesh_src = MOD_get_mesh_eval(ctx->object, NULL, mesh, NULL, false, false); + Mesh *mesh_src = MOD_deform_mesh_eval_get(ctx->object, NULL, mesh, NULL, numVerts, false, false); correctivesmooth_modifier_do(md, ctx->object, mesh_src, vertexCos, (unsigned int)numVerts, NULL); @@ -731,7 +731,7 @@ static void deformVertsEM( ModifierData *md, const ModifierEvalContext *ctx, struct BMEditMesh *editData, Mesh *mesh, float (*vertexCos)[3], int numVerts) { - Mesh *mesh_src = MOD_get_mesh_eval(ctx->object, editData, mesh, NULL, false, false); + Mesh *mesh_src = MOD_deform_mesh_eval_get(ctx->object, editData, mesh, NULL, numVerts, false, false); correctivesmooth_modifier_do(md, ctx->object, mesh_src, vertexCos, (unsigned int)numVerts, editData); diff --git a/source/blender/modifiers/intern/MOD_curve.c b/source/blender/modifiers/intern/MOD_curve.c index 308cb79b74a..6a0b276f0d5 100644 --- a/source/blender/modifiers/intern/MOD_curve.c +++ b/source/blender/modifiers/intern/MOD_curve.c @@ -116,7 +116,7 @@ static void deformVerts( if (ctx->object->type == OB_MESH) { /* mesh_src is only needed for vgroups. */ - mesh_src = MOD_get_mesh_eval(ctx->object, NULL, mesh, NULL, false, false); + mesh_src = MOD_deform_mesh_eval_get(ctx->object, NULL, mesh, NULL, numVerts, false, false); BLI_assert(mesh_src->totvert == numVerts); } @@ -141,7 +141,7 @@ static void deformVertsEM( float (*vertexCos)[3], int numVerts) { - Mesh *mesh_src = MOD_get_mesh_eval(ctx->object, em, mesh, NULL, false, false); + Mesh *mesh_src = MOD_deform_mesh_eval_get(ctx->object, em, mesh, NULL, numVerts, false, false); BLI_assert(mesh_src->totvert == numVerts); diff --git a/source/blender/modifiers/intern/MOD_displace.c b/source/blender/modifiers/intern/MOD_displace.c index 8f9ce544330..9345733ea77 100644 --- a/source/blender/modifiers/intern/MOD_displace.c +++ b/source/blender/modifiers/intern/MOD_displace.c @@ -376,7 +376,7 @@ static void deformVerts( float (*vertexCos)[3], int numVerts) { - Mesh *mesh_src = MOD_get_mesh_eval(ctx->object, NULL, mesh, NULL, false, false); + Mesh *mesh_src = MOD_deform_mesh_eval_get(ctx->object, NULL, mesh, NULL, numVerts, false, false); BLI_assert(mesh_src->totvert == numVerts); @@ -391,7 +391,7 @@ static void deformVertsEM( ModifierData *md, const ModifierEvalContext *ctx, struct BMEditMesh *editData, Mesh *mesh, float (*vertexCos)[3], int numVerts) { - Mesh *mesh_src = MOD_get_mesh_eval(ctx->object, editData, mesh, NULL, false, false); + Mesh *mesh_src = MOD_deform_mesh_eval_get(ctx->object, editData, mesh, NULL, numVerts, false, false); BLI_assert(mesh_src->totvert == numVerts); diff --git a/source/blender/modifiers/intern/MOD_hook.c b/source/blender/modifiers/intern/MOD_hook.c index 0764bba6a14..186ad2dc352 100644 --- a/source/blender/modifiers/intern/MOD_hook.c +++ b/source/blender/modifiers/intern/MOD_hook.c @@ -354,7 +354,7 @@ static void deformVerts( float (*vertexCos)[3], int numVerts) { HookModifierData *hmd = (HookModifierData *)md; - Mesh *mesh_src = MOD_get_mesh_eval(ctx->object, NULL, mesh, NULL, false, false); + Mesh *mesh_src = MOD_deform_mesh_eval_get(ctx->object, NULL, mesh, NULL, numVerts, false, false); deformVerts_do(hmd, ctx->object, mesh_src, vertexCos, numVerts); @@ -369,7 +369,7 @@ static void deformVertsEM( struct Mesh *mesh, float (*vertexCos)[3], int numVerts) { HookModifierData *hmd = (HookModifierData *)md; - Mesh *mesh_src = MOD_get_mesh_eval(ctx->object, editData, mesh, NULL, false, false); + Mesh *mesh_src = MOD_deform_mesh_eval_get(ctx->object, editData, mesh, NULL, numVerts, false, false); deformVerts_do(hmd, ctx->object, mesh_src, vertexCos, numVerts); diff --git a/source/blender/modifiers/intern/MOD_laplaciandeform.c b/source/blender/modifiers/intern/MOD_laplaciandeform.c index ad6c6e0163d..39085cc4588 100644 --- a/source/blender/modifiers/intern/MOD_laplaciandeform.c +++ b/source/blender/modifiers/intern/MOD_laplaciandeform.c @@ -734,7 +734,7 @@ static void deformVerts( ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh, float (*vertexCos)[3], int numVerts) { - Mesh *mesh_src = MOD_get_mesh_eval(ctx->object, NULL, mesh, NULL, false, false); + Mesh *mesh_src = MOD_deform_mesh_eval_get(ctx->object, NULL, mesh, NULL, numVerts, false, false); LaplacianDeformModifier_do((LaplacianDeformModifierData *)md, ctx->object, mesh_src, vertexCos, numVerts); if (mesh_src != mesh) { @@ -746,7 +746,7 @@ static void deformVertsEM( ModifierData *md, const ModifierEvalContext *ctx, struct BMEditMesh *editData, Mesh *mesh, float (*vertexCos)[3], int numVerts) { - Mesh *mesh_src = MOD_get_mesh_eval(ctx->object, editData, mesh, NULL, false, false); + Mesh *mesh_src = MOD_deform_mesh_eval_get(ctx->object, editData, mesh, NULL, numVerts, false, false); LaplacianDeformModifier_do((LaplacianDeformModifierData *)md, ctx->object, mesh_src, vertexCos, numVerts); if (mesh_src != mesh) { diff --git a/source/blender/modifiers/intern/MOD_laplaciansmooth.c b/source/blender/modifiers/intern/MOD_laplaciansmooth.c index fba4ac5d9e5..66c31b60bbd 100644 --- a/source/blender/modifiers/intern/MOD_laplaciansmooth.c +++ b/source/blender/modifiers/intern/MOD_laplaciansmooth.c @@ -507,7 +507,7 @@ static void deformVerts( if (numVerts == 0) return; - mesh_src = MOD_get_mesh_eval(ctx->object, NULL, mesh, NULL, false, false); + mesh_src = MOD_deform_mesh_eval_get(ctx->object, NULL, mesh, NULL, numVerts, false, false); laplaciansmoothModifier_do((LaplacianSmoothModifierData *)md, ctx->object, mesh_src, vertexCos, numVerts); @@ -525,7 +525,7 @@ static void deformVertsEM( if (numVerts == 0) return; - mesh_src = MOD_get_mesh_eval(ctx->object, editData, mesh, NULL, false, false); + mesh_src = MOD_deform_mesh_eval_get(ctx->object, editData, mesh, NULL, numVerts, false, false); laplaciansmoothModifier_do((LaplacianSmoothModifierData *)md, ctx->object, mesh_src, vertexCos, numVerts); diff --git a/source/blender/modifiers/intern/MOD_lattice.c b/source/blender/modifiers/intern/MOD_lattice.c index 7937d1611f9..0391924f37e 100644 --- a/source/blender/modifiers/intern/MOD_lattice.c +++ b/source/blender/modifiers/intern/MOD_lattice.c @@ -100,7 +100,7 @@ static void deformVerts( int numVerts) { LatticeModifierData *lmd = (LatticeModifierData *) md; - struct Mesh *mesh_src = MOD_get_mesh_eval(ctx->object, NULL, mesh, NULL, false, false); + struct Mesh *mesh_src = MOD_deform_mesh_eval_get(ctx->object, NULL, mesh, NULL, numVerts, false, false); MOD_previous_vcos_store(md, vertexCos); /* if next modifier needs original vertices */ @@ -115,7 +115,7 @@ static void deformVertsEM( ModifierData *md, const ModifierEvalContext *ctx, struct BMEditMesh *em, struct Mesh *mesh, float (*vertexCos)[3], int numVerts) { - struct Mesh *mesh_src = MOD_get_mesh_eval(ctx->object, em, mesh, NULL, false, false); + struct Mesh *mesh_src = MOD_deform_mesh_eval_get(ctx->object, em, mesh, NULL, numVerts, false, false); deformVerts(md, ctx, mesh_src, vertexCos, numVerts); diff --git a/source/blender/modifiers/intern/MOD_meshdeform.c b/source/blender/modifiers/intern/MOD_meshdeform.c index aaf6c532de0..b5e9d74c03c 100644 --- a/source/blender/modifiers/intern/MOD_meshdeform.c +++ b/source/blender/modifiers/intern/MOD_meshdeform.c @@ -415,7 +415,7 @@ static void deformVerts( float (*vertexCos)[3], int numVerts) { - Mesh *mesh_src = MOD_get_mesh_eval(ctx->object, NULL, mesh, NULL, false, false); + Mesh *mesh_src = MOD_deform_mesh_eval_get(ctx->object, NULL, mesh, NULL, numVerts, false, false); MOD_previous_vcos_store(md, vertexCos); /* if next modifier needs original vertices */ @@ -433,7 +433,7 @@ static void deformVertsEM( float (*vertexCos)[3], int numVerts) { - Mesh *mesh_src = MOD_get_mesh_eval(ctx->object, NULL, mesh, NULL, false, false); + Mesh *mesh_src = MOD_deform_mesh_eval_get(ctx->object, NULL, mesh, NULL, numVerts, false, false); meshdeformModifier_do(md, ctx, mesh_src, vertexCos, numVerts); diff --git a/source/blender/modifiers/intern/MOD_particlesystem.c b/source/blender/modifiers/intern/MOD_particlesystem.c index 1c967d4ead3..d06986ca80a 100644 --- a/source/blender/modifiers/intern/MOD_particlesystem.c +++ b/source/blender/modifiers/intern/MOD_particlesystem.c @@ -104,7 +104,7 @@ static void deformVerts( ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh, float (*vertexCos)[3], - int UNUSED(numVerts)) + int numVerts) { Mesh *mesh_src = mesh; ParticleSystemModifierData *psmd = (ParticleSystemModifierData *) md; @@ -120,7 +120,7 @@ static void deformVerts( return; if (mesh_src == NULL) { - mesh_src = MOD_get_mesh_eval(ctx->object, NULL, NULL, vertexCos, false, true); + mesh_src = MOD_deform_mesh_eval_get(ctx->object, NULL, NULL, vertexCos, numVerts, false, true); if (mesh_src == NULL) { return; } diff --git a/source/blender/modifiers/intern/MOD_shrinkwrap.c b/source/blender/modifiers/intern/MOD_shrinkwrap.c index c14a37bd2dc..3f2e9adbe46 100644 --- a/source/blender/modifiers/intern/MOD_shrinkwrap.c +++ b/source/blender/modifiers/intern/MOD_shrinkwrap.c @@ -111,7 +111,7 @@ static void deformVerts( if (ctx->object->type == OB_MESH) { /* mesh_src is only needed for vgroups. */ - mesh_src = MOD_get_mesh_eval(ctx->object, NULL, mesh, NULL, false, false); + mesh_src = MOD_deform_mesh_eval_get(ctx->object, NULL, mesh, NULL, numVerts, false, false); BLI_assert(mesh_src->totvert == numVerts); } diff --git a/source/blender/modifiers/intern/MOD_simpledeform.c b/source/blender/modifiers/intern/MOD_simpledeform.c index f37cda25c58..ffcf7767ddf 100644 --- a/source/blender/modifiers/intern/MOD_simpledeform.c +++ b/source/blender/modifiers/intern/MOD_simpledeform.c @@ -390,7 +390,7 @@ static void deformVerts( if (ctx->object->type == OB_MESH) { /* mesh_src is only needed for vgroups. */ - mesh_src = MOD_get_mesh_eval(ctx->object, NULL, mesh, NULL, false, false); + mesh_src = MOD_deform_mesh_eval_get(ctx->object, NULL, mesh, NULL, numVerts, false, false); BLI_assert(mesh_src->totvert == numVerts); } @@ -408,7 +408,7 @@ static void deformVertsEM( float (*vertexCos)[3], int numVerts) { - Mesh *mesh_src = MOD_get_mesh_eval(ctx->object, editData, mesh, NULL, false, false); + Mesh *mesh_src = MOD_deform_mesh_eval_get(ctx->object, editData, mesh, NULL, numVerts, false, false); SimpleDeformModifier_do((SimpleDeformModifierData *)md, ctx->object, mesh_src, vertexCos, numVerts); diff --git a/source/blender/modifiers/intern/MOD_smooth.c b/source/blender/modifiers/intern/MOD_smooth.c index f7efd2dbd1b..e2434985230 100644 --- a/source/blender/modifiers/intern/MOD_smooth.c +++ b/source/blender/modifiers/intern/MOD_smooth.c @@ -218,7 +218,7 @@ static void deformVerts( if (ctx->object->type == OB_MESH) { /* mesh_src is needed for vgroups, and taking edges into account. */ - mesh_src = MOD_get_mesh_eval(ctx->object, NULL, mesh, NULL, false, false); + mesh_src = MOD_deform_mesh_eval_get(ctx->object, NULL, mesh, NULL, numVerts, false, false); BLI_assert(mesh_src->totvert == numVerts); } diff --git a/source/blender/modifiers/intern/MOD_surface.c b/source/blender/modifiers/intern/MOD_surface.c index f445e8d9de9..c5fa510f2e0 100644 --- a/source/blender/modifiers/intern/MOD_surface.c +++ b/source/blender/modifiers/intern/MOD_surface.c @@ -91,7 +91,7 @@ static void deformVerts( ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh, float (*vertexCos)[3], - int UNUSED(numVerts)) + int numVerts) { SurfaceModifierData *surmd = (SurfaceModifierData *) md; const int cfra = (int)DEG_get_ctime(ctx->depsgraph); @@ -111,7 +111,9 @@ static void deformVerts( LIB_ID_COPY_NO_PREVIEW, false); } - else surmd->mesh = MOD_get_mesh_eval(ctx->object, NULL, NULL, NULL, false, false); + else { + surmd->mesh = MOD_deform_mesh_eval_get(ctx->object, NULL, NULL, NULL, numVerts, false, false); + } if (!ctx->object->pd) { printf("SurfaceModifier deformVerts: Should not happen!\n"); diff --git a/source/blender/modifiers/intern/MOD_util.c b/source/blender/modifiers/intern/MOD_util.c index d156f119eec..a8bb5210aad 100644 --- a/source/blender/modifiers/intern/MOD_util.c +++ b/source/blender/modifiers/intern/MOD_util.c @@ -168,11 +168,12 @@ void MOD_previous_vcos_store(ModifierData *md, float (*vertexCos)[3]) } /* returns a mesh if mesh == NULL, for deforming modifiers that need it */ -Mesh *MOD_get_mesh_eval( +Mesh *MOD_deform_mesh_eval_get( Object *ob, struct BMEditMesh *em, Mesh *mesh, - float (*vertexCos)[3], bool use_normals, bool use_orco) + float (*vertexCos)[3], const int num_verts, + const bool use_normals, const bool use_orco) { - if (mesh) { + if (mesh != NULL) { /* pass */ } else if (ob->type == OB_MESH) { @@ -207,6 +208,12 @@ Mesh *MOD_get_mesh_eval( else if (ELEM(ob->type, OB_FONT, OB_CURVE, OB_SURF)) { /* TODO(sybren): get evaluated mesh from depsgraph once that's properly generated for curves. */ mesh = BKE_mesh_new_nomain_from_curve(ob); + + /* Currently, that may not be the case everytime + * (texts e.g. tend to give issues, also when deforming curve points instead of generated curve geometry... ). */ + if (mesh != NULL && mesh->totvert != num_verts) { + BKE_id_free(NULL, mesh); + } } if (use_normals) { @@ -215,6 +222,8 @@ Mesh *MOD_get_mesh_eval( } } + BLI_assert(mesh == NULL || mesh->totvert == num_verts); + return mesh; } diff --git a/source/blender/modifiers/intern/MOD_util.h b/source/blender/modifiers/intern/MOD_util.h index bb15fc32b6b..4b0e8e3e64a 100644 --- a/source/blender/modifiers/intern/MOD_util.h +++ b/source/blender/modifiers/intern/MOD_util.h @@ -51,9 +51,10 @@ void MOD_get_texture_coords( void MOD_previous_vcos_store(struct ModifierData *md, float (*vertexCos)[3]); -struct Mesh *MOD_get_mesh_eval( +struct Mesh *MOD_deform_mesh_eval_get( struct Object *ob, struct BMEditMesh *em, struct Mesh *mesh, - float (*vertexCos)[3], bool use_normals, bool use_orco); + float (*vertexCos)[3], const int num_verts, + const bool use_normals, const bool use_orco); void MOD_get_vgroup( struct Object *ob, struct Mesh *mesh, diff --git a/source/blender/modifiers/intern/MOD_warp.c b/source/blender/modifiers/intern/MOD_warp.c index 01144851581..ebe08b0becf 100644 --- a/source/blender/modifiers/intern/MOD_warp.c +++ b/source/blender/modifiers/intern/MOD_warp.c @@ -319,7 +319,7 @@ static void deformVerts( if (ctx->object->type == OB_MESH) { /* mesh_src is only needed for vgroups and textures, which only work on meshes. */ - mesh_src = MOD_get_mesh_eval(ctx->object, NULL, mesh, NULL, false, false); + mesh_src = MOD_deform_mesh_eval_get(ctx->object, NULL, mesh, NULL, numVerts, false, false); BLI_assert(mesh_src->totvert == numVerts); } diff --git a/source/blender/modifiers/intern/MOD_wave.c b/source/blender/modifiers/intern/MOD_wave.c index ea09b6400cf..9f864063c7b 100644 --- a/source/blender/modifiers/intern/MOD_wave.c +++ b/source/blender/modifiers/intern/MOD_wave.c @@ -308,9 +308,9 @@ static void deformVerts( WaveModifierData *wmd = (WaveModifierData *)md; if (wmd->flag & MOD_WAVE_NORM) - mesh_src = MOD_get_mesh_eval(ctx->object, NULL, mesh, vertexCos, true, false); + mesh_src = MOD_deform_mesh_eval_get(ctx->object, NULL, mesh, vertexCos, numVerts, true, false); else if (wmd->texture || wmd->defgrp_name[0]) - mesh_src = MOD_get_mesh_eval(ctx->object, NULL, mesh, NULL, false, false); + mesh_src = MOD_deform_mesh_eval_get(ctx->object, NULL, mesh, NULL, numVerts, false, false); waveModifier_do(wmd, ctx->depsgraph, ctx->object, mesh_src, vertexCos, numVerts); @@ -327,9 +327,9 @@ static void deformVertsEM( WaveModifierData *wmd = (WaveModifierData *)md; if (wmd->flag & MOD_WAVE_NORM) - mesh_src = MOD_get_mesh_eval(ctx->object, editData, mesh, vertexCos, true, false); + mesh_src = MOD_deform_mesh_eval_get(ctx->object, editData, mesh, vertexCos, numVerts, true, false); else if (wmd->texture || wmd->defgrp_name[0]) - mesh_src = MOD_get_mesh_eval(ctx->object, editData, mesh, NULL, false, false); + mesh_src = MOD_deform_mesh_eval_get(ctx->object, editData, mesh, NULL, numVerts, false, false); waveModifier_do(wmd, ctx->depsgraph, ctx->object, mesh_src, vertexCos, numVerts); |