Modifiers: Refactor `MOD_deform_mesh_eval_get()` helper a bit.
authorBastien Montagne <montagne29@wanadoo.fr>
Tue, 27 Nov 2018 16:21:16 +0000 (17:21 +0100)
committerBastien Montagne <montagne29@wanadoo.fr>
Tue, 27 Nov 2018 20:17:06 +0000 (21:17 +0100)
Now that function also takes expected number of vertices, and do the
checks against generated mesh internally.

21 files changed:
source/blender/modifiers/intern/MOD_armature.c
source/blender/modifiers/intern/MOD_cast.c
source/blender/modifiers/intern/MOD_cloth.c
source/blender/modifiers/intern/MOD_collision.c
source/blender/modifiers/intern/MOD_correctivesmooth.c
source/blender/modifiers/intern/MOD_curve.c
source/blender/modifiers/intern/MOD_displace.c
source/blender/modifiers/intern/MOD_hook.c
source/blender/modifiers/intern/MOD_laplaciandeform.c
source/blender/modifiers/intern/MOD_laplaciansmooth.c
source/blender/modifiers/intern/MOD_lattice.c
source/blender/modifiers/intern/MOD_meshdeform.c
source/blender/modifiers/intern/MOD_particlesystem.c
source/blender/modifiers/intern/MOD_shrinkwrap.c
source/blender/modifiers/intern/MOD_simpledeform.c
source/blender/modifiers/intern/MOD_smooth.c
source/blender/modifiers/intern/MOD_surface.c
source/blender/modifiers/intern/MOD_util.c
source/blender/modifiers/intern/MOD_util.h
source/blender/modifiers/intern/MOD_warp.c
source/blender/modifiers/intern/MOD_wave.c

index 3209391d4bc21a401fd1e60f4efcd1098d03418f..f37b5d4ec4d1c372985621c9e7d9fb62526739bb 100644 (file)
@@ -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);
index 959f77b07182e2d1a77e7a6ac6a662e6fb07dece..c80bbe5cc96766cdbe3b7e40bb9b1f025583a544 100644 (file)
@@ -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);
 
index 55af0f04bac81075c3e88bb7eee9926a1cb280e8..636c465d30423d8012a5384d1ab00614d9adba24 100644 (file)
@@ -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
index 2fddef219969e449b2c95998cfdea74fa4e164ff..011635e3012fdd8c44806cf2ffb3fe013f6561cb 100644 (file)
@@ -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
index 777e1cbf21b04ddfed279e1a1459f3a2045d6955..913ac14f21bbcba9c50ddd2f0eafbd5df3410ab3 100644 (file)
@@ -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);
 
index 308cb79b74a7e7836e43e8cd38eb50c9db3c7d3b..6a0b276f0d57485b8b81f26644d05ce9c68a9e76 100644 (file)
@@ -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);
 
index 8f9ce544330587fbc86114803fbd64930bd5a529..9345733ea773c6c68c02810a14611a7ee6f498fb 100644 (file)
@@ -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);
 
index 0764bba6a14b9912b918e19ca8a8d6cdddc1befe..186ad2dc35266c6d17d321699a66dd4422989f49 100644 (file)
@@ -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);
 
index ad6c6e0163db38f6ef36730251ac190cc492ac6b..39085cc45884f95302ab07818c99d9bd4268671c 100644 (file)
@@ -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) {
index fba4ac5d9e5627751f3a5a5e8cca9e612328025a..66c31b60bbdcf9df9ad889194b4e9adceeaf22a2 100644 (file)
@@ -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);
index 7937d1611f9ce41a70d8173debd1f6362ad17507..0391924f37e4cba0b0b26dfe48a0544287fe43b7 100644 (file)
@@ -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);
 
index aaf6c532de0afc0590a5238f18e7ae4515f579db..b5e9d74c03c6be006825c0a686f4cb24a0d9fe92 100644 (file)
@@ -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);
 
index 1c967d4ead311d8ea7c58502d2e3d7298283fe21..d06986ca80ab7838f9e6065b12e72fcb87b83ec1 100644 (file)
@@ -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;
                }
index c14a37bd2dcf2d958590055bda397bbdded20d2a..3f2e9adbe4681850b7cfe2984b05284d32603a1c 100644 (file)
@@ -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);
        }
 
index f37cda25c585c6899f1f6d50bfc9b27502c627f5..ffcf7767ddf40a20d0424e9e2ae89344ab92b467 100644 (file)
@@ -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);
 
index f7efd2dbd1b8f3cf7fac55fe2806d1e44a2e8212..e243498523087e1d70f710d104a86dfcba02b5c6 100644 (file)
@@ -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);
        }
 
index f445e8d9de98ad2b95cbd6747eb545140f6e14bd..c5fa510f2e0f525a21449ea5f656fcaa0974cfbe 100644 (file)
@@ -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");
index d156f119eec398aa53637bbbf2837556a24405b7..a8bb5210aad111853791304f0f192a3a9851e361 100644 (file)
@@ -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;
 }
 
index bb15fc32b6b52f2bbac799a19cc6ae52cb8bcb39..4b0e8e3e64aeebbbf24e31edac0a3b6ff26471df 100644 (file)
@@ -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,
index 01144851581089b590a224e1de27f610c74d79ce..ebe08b0becf1a8bc1597976bf38831525d16fc26 100644 (file)
@@ -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);
        }
 
index ea09b6400cfd065606023c5fcf88511b0cdb6709..9f864063c7b10a235b68be5415ad0dd9fa5d0ebd 100644 (file)
@@ -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);