Modifiers: cleanup/harmonize deform modifiers code re. mesh source.
Also fixes a few issues (like meshdeform's EM variant not using editmesh data), and adds a few optimizations (like only generating that source mesh when we do have a vgroup defined in parameters, for modifiers only using it to access vgroup)...
This commit is contained in:
@@ -431,10 +431,9 @@ static void deformVerts(
|
|||||||
CastModifierData *cmd = (CastModifierData *)md;
|
CastModifierData *cmd = (CastModifierData *)md;
|
||||||
Mesh *mesh_src = NULL;
|
Mesh *mesh_src = NULL;
|
||||||
|
|
||||||
if (ctx->object->type == OB_MESH) {
|
if (ctx->object->type == OB_MESH && cmd->defgrp_name[0] != '\0') {
|
||||||
/* mesh_src is only needed for vgroups. */
|
/* mesh_src is only needed for vgroups. */
|
||||||
mesh_src = MOD_deform_mesh_eval_get(ctx->object, NULL, mesh, NULL, numVerts, false, false);
|
mesh_src = MOD_deform_mesh_eval_get(ctx->object, NULL, mesh, NULL, numVerts, false, false);
|
||||||
BLI_assert(mesh_src->totvert == numVerts);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cmd->type == MOD_CAST_TYPE_CUBOID) {
|
if (cmd->type == MOD_CAST_TYPE_CUBOID) {
|
||||||
|
@@ -114,10 +114,9 @@ static void deformVerts(
|
|||||||
CurveModifierData *cmd = (CurveModifierData *) md;
|
CurveModifierData *cmd = (CurveModifierData *) md;
|
||||||
Mesh *mesh_src = NULL;
|
Mesh *mesh_src = NULL;
|
||||||
|
|
||||||
if (ctx->object->type == OB_MESH) {
|
if (ctx->object->type == OB_MESH && cmd->name[0] != '\0') {
|
||||||
/* mesh_src is only needed for vgroups. */
|
/* mesh_src is only needed for vgroups. */
|
||||||
mesh_src = MOD_deform_mesh_eval_get(ctx->object, NULL, mesh, NULL, numVerts, false, false);
|
mesh_src = MOD_deform_mesh_eval_get(ctx->object, NULL, mesh, NULL, numVerts, false, false);
|
||||||
BLI_assert(mesh_src->totvert == numVerts);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
struct MDeformVert *dvert = NULL;
|
struct MDeformVert *dvert = NULL;
|
||||||
@@ -143,11 +142,9 @@ static void deformVertsEM(
|
|||||||
{
|
{
|
||||||
Mesh *mesh_src = MOD_deform_mesh_eval_get(ctx->object, em, mesh, NULL, numVerts, false, false);
|
Mesh *mesh_src = MOD_deform_mesh_eval_get(ctx->object, em, mesh, NULL, numVerts, false, false);
|
||||||
|
|
||||||
BLI_assert(mesh_src->totvert == numVerts);
|
|
||||||
|
|
||||||
deformVerts(md, ctx, mesh_src, vertexCos, numVerts);
|
deformVerts(md, ctx, mesh_src, vertexCos, numVerts);
|
||||||
|
|
||||||
if (mesh_src != mesh) {
|
if (!ELEM(mesh_src, NULL, mesh)) {
|
||||||
BKE_id_free(NULL, mesh_src);
|
BKE_id_free(NULL, mesh_src);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -378,11 +378,9 @@ static void deformVerts(
|
|||||||
{
|
{
|
||||||
Mesh *mesh_src = MOD_deform_mesh_eval_get(ctx->object, NULL, mesh, NULL, numVerts, false, false);
|
Mesh *mesh_src = MOD_deform_mesh_eval_get(ctx->object, NULL, mesh, NULL, numVerts, false, false);
|
||||||
|
|
||||||
BLI_assert(mesh_src->totvert == numVerts);
|
|
||||||
|
|
||||||
displaceModifier_do((DisplaceModifierData *)md, ctx, mesh_src, vertexCos, numVerts);
|
displaceModifier_do((DisplaceModifierData *)md, ctx, mesh_src, vertexCos, numVerts);
|
||||||
|
|
||||||
if (mesh_src != mesh) {
|
if (!ELEM(mesh_src, NULL, mesh)) {
|
||||||
BKE_id_free(NULL, mesh_src);
|
BKE_id_free(NULL, mesh_src);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -393,11 +391,9 @@ static void deformVertsEM(
|
|||||||
{
|
{
|
||||||
Mesh *mesh_src = MOD_deform_mesh_eval_get(ctx->object, editData, mesh, NULL, numVerts, false, false);
|
Mesh *mesh_src = MOD_deform_mesh_eval_get(ctx->object, editData, mesh, NULL, numVerts, false, false);
|
||||||
|
|
||||||
BLI_assert(mesh_src->totvert == numVerts);
|
|
||||||
|
|
||||||
displaceModifier_do((DisplaceModifierData *)md, ctx, mesh_src, vertexCos, numVerts);
|
displaceModifier_do((DisplaceModifierData *)md, ctx, mesh_src, vertexCos, numVerts);
|
||||||
|
|
||||||
if (mesh_src != mesh) {
|
if (!ELEM(mesh_src, NULL, mesh)) {
|
||||||
BKE_id_free(NULL, mesh_src);
|
BKE_id_free(NULL, mesh_src);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -358,7 +358,7 @@ static void deformVerts(
|
|||||||
|
|
||||||
deformVerts_do(hmd, ctx->object, mesh_src, vertexCos, numVerts);
|
deformVerts_do(hmd, ctx->object, mesh_src, vertexCos, numVerts);
|
||||||
|
|
||||||
if (mesh_src != mesh) {
|
if (!ELEM(mesh_src, NULL, mesh)) {
|
||||||
BKE_id_free(NULL, mesh_src);
|
BKE_id_free(NULL, mesh_src);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -373,7 +373,7 @@ static void deformVertsEM(
|
|||||||
|
|
||||||
deformVerts_do(hmd, ctx->object, mesh_src, vertexCos, numVerts);
|
deformVerts_do(hmd, ctx->object, mesh_src, vertexCos, numVerts);
|
||||||
|
|
||||||
if (mesh_src != mesh) {
|
if (!ELEM(mesh_src, NULL, mesh)) {
|
||||||
BKE_id_free(NULL, mesh_src);
|
BKE_id_free(NULL, mesh_src);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -737,7 +737,8 @@ static void deformVerts(
|
|||||||
Mesh *mesh_src = MOD_deform_mesh_eval_get(ctx->object, NULL, mesh, NULL, numVerts, 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);
|
LaplacianDeformModifier_do((LaplacianDeformModifierData *)md, ctx->object, mesh_src, vertexCos, numVerts);
|
||||||
if (mesh_src != mesh) {
|
|
||||||
|
if (!ELEM(mesh_src, NULL, mesh)) {
|
||||||
BKE_id_free(NULL, mesh_src);
|
BKE_id_free(NULL, mesh_src);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -747,9 +748,11 @@ static void deformVertsEM(
|
|||||||
Mesh *mesh, float (*vertexCos)[3], int numVerts)
|
Mesh *mesh, float (*vertexCos)[3], int numVerts)
|
||||||
{
|
{
|
||||||
Mesh *mesh_src = MOD_deform_mesh_eval_get(ctx->object, editData, mesh, NULL, numVerts, 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,
|
LaplacianDeformModifier_do((LaplacianDeformModifierData *)md, ctx->object, mesh_src,
|
||||||
vertexCos, numVerts);
|
vertexCos, numVerts);
|
||||||
if (mesh_src != mesh) {
|
|
||||||
|
if (!ELEM(mesh_src, NULL, mesh)) {
|
||||||
BKE_id_free(NULL, mesh_src);
|
BKE_id_free(NULL, mesh_src);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -512,8 +512,9 @@ static void deformVerts(
|
|||||||
laplaciansmoothModifier_do((LaplacianSmoothModifierData *)md, ctx->object, mesh_src,
|
laplaciansmoothModifier_do((LaplacianSmoothModifierData *)md, ctx->object, mesh_src,
|
||||||
vertexCos, numVerts);
|
vertexCos, numVerts);
|
||||||
|
|
||||||
if (mesh_src != mesh)
|
if (!ELEM(mesh_src, NULL, mesh)) {
|
||||||
BKE_id_free(NULL, mesh_src);
|
BKE_id_free(NULL, mesh_src);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void deformVertsEM(
|
static void deformVertsEM(
|
||||||
@@ -530,8 +531,9 @@ static void deformVertsEM(
|
|||||||
laplaciansmoothModifier_do((LaplacianSmoothModifierData *)md, ctx->object, mesh_src,
|
laplaciansmoothModifier_do((LaplacianSmoothModifierData *)md, ctx->object, mesh_src,
|
||||||
vertexCos, numVerts);
|
vertexCos, numVerts);
|
||||||
|
|
||||||
if (mesh_src != mesh)
|
if (!ELEM(mesh_src, NULL, mesh)) {
|
||||||
BKE_id_free(NULL, mesh_src);
|
BKE_id_free(NULL, mesh_src);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -107,9 +107,10 @@ static void deformVerts(
|
|||||||
lattice_deform_verts(lmd->object, ctx->object, mesh_src,
|
lattice_deform_verts(lmd->object, ctx->object, mesh_src,
|
||||||
vertexCos, numVerts, lmd->name, lmd->strength);
|
vertexCos, numVerts, lmd->name, lmd->strength);
|
||||||
|
|
||||||
if (mesh_src != mesh) {
|
if (!ELEM(mesh_src, NULL, mesh)) {
|
||||||
BKE_id_free(NULL, mesh_src);
|
BKE_id_free(NULL, mesh_src);
|
||||||
}}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void deformVertsEM(
|
static void deformVertsEM(
|
||||||
ModifierData *md, const ModifierEvalContext *ctx, struct BMEditMesh *em,
|
ModifierData *md, const ModifierEvalContext *ctx, struct BMEditMesh *em,
|
||||||
@@ -119,7 +120,7 @@ static void deformVertsEM(
|
|||||||
|
|
||||||
deformVerts(md, ctx, mesh_src, vertexCos, numVerts);
|
deformVerts(md, ctx, mesh_src, vertexCos, numVerts);
|
||||||
|
|
||||||
if (mesh_src != mesh) {
|
if (!ELEM(mesh_src, NULL, mesh)) {
|
||||||
BKE_id_free(NULL, mesh_src);
|
BKE_id_free(NULL, mesh_src);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -421,23 +421,23 @@ static void deformVerts(
|
|||||||
|
|
||||||
meshdeformModifier_do(md, ctx, mesh_src, vertexCos, numVerts);
|
meshdeformModifier_do(md, ctx, mesh_src, vertexCos, numVerts);
|
||||||
|
|
||||||
if (mesh_src && mesh_src != mesh) {
|
if (!ELEM(mesh_src, NULL, mesh)) {
|
||||||
BKE_id_free(NULL, mesh_src);
|
BKE_id_free(NULL, mesh_src);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void deformVertsEM(
|
static void deformVertsEM(
|
||||||
ModifierData *md, const ModifierEvalContext *ctx,
|
ModifierData *md, const ModifierEvalContext *ctx,
|
||||||
struct BMEditMesh *UNUSED(editData),
|
struct BMEditMesh *editData,
|
||||||
Mesh *mesh,
|
Mesh *mesh,
|
||||||
float (*vertexCos)[3],
|
float (*vertexCos)[3],
|
||||||
int numVerts)
|
int numVerts)
|
||||||
{
|
{
|
||||||
Mesh *mesh_src = MOD_deform_mesh_eval_get(ctx->object, NULL, mesh, NULL, numVerts, false, false);
|
Mesh *mesh_src = MOD_deform_mesh_eval_get(ctx->object, editData, mesh, NULL, numVerts, false, false);
|
||||||
|
|
||||||
meshdeformModifier_do(md, ctx, mesh_src, vertexCos, numVerts);
|
meshdeformModifier_do(md, ctx, mesh_src, vertexCos, numVerts);
|
||||||
|
|
||||||
if (mesh_src && mesh_src != mesh) {
|
if (!ELEM(mesh_src, NULL, mesh)) {
|
||||||
BKE_id_free(NULL, mesh_src);
|
BKE_id_free(NULL, mesh_src);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -112,15 +112,12 @@ static void deformVerts(
|
|||||||
if (ctx->object->type == OB_MESH) {
|
if (ctx->object->type == OB_MESH) {
|
||||||
/* mesh_src is only needed for vgroups. */
|
/* mesh_src is only needed for vgroups. */
|
||||||
mesh_src = MOD_deform_mesh_eval_get(ctx->object, NULL, mesh, NULL, numVerts, false, false);
|
mesh_src = MOD_deform_mesh_eval_get(ctx->object, NULL, mesh, NULL, numVerts, false, false);
|
||||||
BLI_assert(mesh_src->totvert == numVerts);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
struct MDeformVert *dvert = NULL;
|
struct MDeformVert *dvert = NULL;
|
||||||
int defgrp_index = -1;
|
int defgrp_index = -1;
|
||||||
MOD_get_vgroup(ctx->object, mesh_src, swmd->vgroup_name, &dvert, &defgrp_index);
|
MOD_get_vgroup(ctx->object, mesh_src, swmd->vgroup_name, &dvert, &defgrp_index);
|
||||||
|
|
||||||
BLI_assert(mesh_src == NULL || mesh_src->totvert == numVerts);
|
|
||||||
|
|
||||||
shrinkwrapModifier_deform(swmd, scene, ctx->object, mesh_src, dvert, defgrp_index, vertexCos, numVerts);
|
shrinkwrapModifier_deform(swmd, scene, ctx->object, mesh_src, dvert, defgrp_index, vertexCos, numVerts);
|
||||||
|
|
||||||
if (!ELEM(mesh_src, NULL, mesh)) {
|
if (!ELEM(mesh_src, NULL, mesh)) {
|
||||||
@@ -135,13 +132,7 @@ static void deformVertsEM(
|
|||||||
{
|
{
|
||||||
ShrinkwrapModifierData *swmd = (ShrinkwrapModifierData *)md;
|
ShrinkwrapModifierData *swmd = (ShrinkwrapModifierData *)md;
|
||||||
struct Scene *scene = DEG_get_evaluated_scene(ctx->depsgraph);
|
struct Scene *scene = DEG_get_evaluated_scene(ctx->depsgraph);
|
||||||
Mesh *mesh_src = mesh;
|
Mesh *mesh_src = MOD_deform_mesh_eval_get(ctx->object, editData, mesh, NULL, numVerts, false, false);
|
||||||
|
|
||||||
if (mesh_src == NULL) {
|
|
||||||
mesh_src = BKE_mesh_from_bmesh_for_eval_nomain(editData->bm, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
BLI_assert(mesh_src->totvert == numVerts);
|
|
||||||
|
|
||||||
struct MDeformVert *dvert = NULL;
|
struct MDeformVert *dvert = NULL;
|
||||||
int defgrp_index = -1;
|
int defgrp_index = -1;
|
||||||
@@ -149,7 +140,7 @@ static void deformVertsEM(
|
|||||||
|
|
||||||
shrinkwrapModifier_deform(swmd, scene, ctx->object, mesh_src, dvert, defgrp_index, vertexCos, numVerts);
|
shrinkwrapModifier_deform(swmd, scene, ctx->object, mesh_src, dvert, defgrp_index, vertexCos, numVerts);
|
||||||
|
|
||||||
if (!mesh) {
|
if (!ELEM(mesh_src, NULL, mesh)) {
|
||||||
BKE_id_free(NULL, mesh_src);
|
BKE_id_free(NULL, mesh_src);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -388,10 +388,9 @@ static void deformVerts(
|
|||||||
SimpleDeformModifierData *sdmd = (SimpleDeformModifierData *)md;
|
SimpleDeformModifierData *sdmd = (SimpleDeformModifierData *)md;
|
||||||
Mesh *mesh_src = NULL;
|
Mesh *mesh_src = NULL;
|
||||||
|
|
||||||
if (ctx->object->type == OB_MESH) {
|
if (ctx->object->type == OB_MESH && sdmd->vgroup_name[0] != '\0') {
|
||||||
/* mesh_src is only needed for vgroups. */
|
/* mesh_src is only needed for vgroups. */
|
||||||
mesh_src = MOD_deform_mesh_eval_get(ctx->object, NULL, mesh, NULL, numVerts, false, false);
|
mesh_src = MOD_deform_mesh_eval_get(ctx->object, NULL, mesh, NULL, numVerts, false, false);
|
||||||
BLI_assert(mesh_src->totvert == numVerts);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
SimpleDeformModifier_do(sdmd, ctx->object, mesh_src, vertexCos, numVerts);
|
SimpleDeformModifier_do(sdmd, ctx->object, mesh_src, vertexCos, numVerts);
|
||||||
@@ -408,11 +407,17 @@ static void deformVertsEM(
|
|||||||
float (*vertexCos)[3],
|
float (*vertexCos)[3],
|
||||||
int numVerts)
|
int numVerts)
|
||||||
{
|
{
|
||||||
Mesh *mesh_src = MOD_deform_mesh_eval_get(ctx->object, editData, mesh, NULL, numVerts, false, false);
|
SimpleDeformModifierData *sdmd = (SimpleDeformModifierData *)md;
|
||||||
|
Mesh *mesh_src = NULL;
|
||||||
|
|
||||||
SimpleDeformModifier_do((SimpleDeformModifierData *)md, ctx->object, mesh_src, vertexCos, numVerts);
|
if (ctx->object->type == OB_MESH && sdmd->vgroup_name[0] != '\0') {
|
||||||
|
/* mesh_src is only needed for vgroups. */
|
||||||
|
mesh_src = MOD_deform_mesh_eval_get(ctx->object, editData, mesh, NULL, numVerts, false, false);
|
||||||
|
}
|
||||||
|
|
||||||
if (mesh_src != mesh) {
|
SimpleDeformModifier_do(sdmd, ctx->object, mesh_src, vertexCos, numVerts);
|
||||||
|
|
||||||
|
if (!ELEM(mesh_src, NULL, mesh)) {
|
||||||
BKE_id_free(NULL, mesh_src);
|
BKE_id_free(NULL, mesh_src);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -216,11 +216,8 @@ static void deformVerts(
|
|||||||
SmoothModifierData *smd = (SmoothModifierData *)md;
|
SmoothModifierData *smd = (SmoothModifierData *)md;
|
||||||
Mesh *mesh_src = NULL;
|
Mesh *mesh_src = NULL;
|
||||||
|
|
||||||
if (ctx->object->type == OB_MESH) {
|
/* mesh_src is needed for vgroups, and taking edges into account. */
|
||||||
/* mesh_src is needed for vgroups, and taking edges into account. */
|
mesh_src = MOD_deform_mesh_eval_get(ctx->object, NULL, mesh, NULL, numVerts, false, false);
|
||||||
mesh_src = MOD_deform_mesh_eval_get(ctx->object, NULL, mesh, NULL, numVerts, false, false);
|
|
||||||
BLI_assert(mesh_src->totvert == numVerts);
|
|
||||||
}
|
|
||||||
|
|
||||||
smoothModifier_do(smd, ctx->object, mesh_src, vertexCos, numVerts);
|
smoothModifier_do(smd, ctx->object, mesh_src, vertexCos, numVerts);
|
||||||
|
|
||||||
@@ -234,13 +231,10 @@ static void deformVertsEM(
|
|||||||
Mesh *mesh, float (*vertexCos)[3], int numVerts)
|
Mesh *mesh, float (*vertexCos)[3], int numVerts)
|
||||||
{
|
{
|
||||||
SmoothModifierData *smd = (SmoothModifierData *)md;
|
SmoothModifierData *smd = (SmoothModifierData *)md;
|
||||||
Mesh *mesh_src = mesh;
|
Mesh *mesh_src = NULL;
|
||||||
|
|
||||||
if (mesh_src == NULL) {
|
/* mesh_src is needed for vgroups, and taking edges into account. */
|
||||||
mesh_src = BKE_mesh_from_bmesh_for_eval_nomain(editData->bm, 0);
|
mesh_src = MOD_deform_mesh_eval_get(ctx->object, editData, mesh, NULL, numVerts, false, false);
|
||||||
}
|
|
||||||
|
|
||||||
BLI_assert(mesh_src->totvert == numVerts);
|
|
||||||
|
|
||||||
smoothModifier_do(smd, ctx->object, mesh_src, vertexCos, numVerts);
|
smoothModifier_do(smd, ctx->object, mesh_src, vertexCos, numVerts);
|
||||||
|
|
||||||
|
@@ -317,10 +317,9 @@ static void deformVerts(
|
|||||||
WarpModifierData *wmd = (WarpModifierData *)md;
|
WarpModifierData *wmd = (WarpModifierData *)md;
|
||||||
Mesh *mesh_src = NULL;
|
Mesh *mesh_src = NULL;
|
||||||
|
|
||||||
if (ctx->object->type == OB_MESH) {
|
if (wmd->defgrp_name[0] != '\0' || wmd->texture != NULL) {
|
||||||
/* mesh_src is only needed for vgroups and textures, which only work on meshes. */
|
/* mesh_src is only needed for vgroups and textures. */
|
||||||
mesh_src = MOD_deform_mesh_eval_get(ctx->object, NULL, mesh, NULL, numVerts, false, false);
|
mesh_src = MOD_deform_mesh_eval_get(ctx->object, NULL, mesh, NULL, numVerts, false, false);
|
||||||
BLI_assert(mesh_src->totvert == numVerts);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
warpModifier_do(wmd, ctx, mesh_src, vertexCos, numVerts);
|
warpModifier_do(wmd, ctx, mesh_src, vertexCos, numVerts);
|
||||||
@@ -335,14 +334,13 @@ static void deformVertsEM(
|
|||||||
Mesh *mesh, float (*vertexCos)[3], int numVerts)
|
Mesh *mesh, float (*vertexCos)[3], int numVerts)
|
||||||
{
|
{
|
||||||
WarpModifierData *wmd = (WarpModifierData *)md;
|
WarpModifierData *wmd = (WarpModifierData *)md;
|
||||||
Mesh *mesh_src = mesh;
|
Mesh *mesh_src = NULL;
|
||||||
|
|
||||||
if (mesh_src == NULL) {
|
if (wmd->defgrp_name[0] != '\0' || wmd->texture != NULL) {
|
||||||
mesh_src = BKE_mesh_from_bmesh_for_eval_nomain(em->bm, 0);
|
/* mesh_src is only needed for vgroups and textures. */
|
||||||
|
mesh_src = MOD_deform_mesh_eval_get(ctx->object, em, mesh, NULL, numVerts, false, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
BLI_assert(mesh_src->totvert == numVerts);
|
|
||||||
|
|
||||||
warpModifier_do(wmd, ctx, mesh_src, vertexCos, numVerts);
|
warpModifier_do(wmd, ctx, mesh_src, vertexCos, numVerts);
|
||||||
|
|
||||||
if (!ELEM(mesh_src, NULL, mesh)) {
|
if (!ELEM(mesh_src, NULL, mesh)) {
|
||||||
|
@@ -314,8 +314,9 @@ static void deformVerts(
|
|||||||
|
|
||||||
waveModifier_do(wmd, ctx->depsgraph, ctx->object, mesh_src, vertexCos, numVerts);
|
waveModifier_do(wmd, ctx->depsgraph, ctx->object, mesh_src, vertexCos, numVerts);
|
||||||
|
|
||||||
if (mesh_src != mesh)
|
if (!ELEM(mesh_src, NULL, mesh)) {
|
||||||
BKE_id_free(NULL, mesh_src);
|
BKE_id_free(NULL, mesh_src);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void deformVertsEM(
|
static void deformVertsEM(
|
||||||
@@ -333,8 +334,9 @@ static void deformVertsEM(
|
|||||||
|
|
||||||
waveModifier_do(wmd, ctx->depsgraph, ctx->object, mesh_src, vertexCos, numVerts);
|
waveModifier_do(wmd, ctx->depsgraph, ctx->object, mesh_src, vertexCos, numVerts);
|
||||||
|
|
||||||
if (mesh_src != mesh)
|
if (!ELEM(mesh_src, NULL, mesh)) {
|
||||||
BKE_id_free(NULL, mesh_src);
|
BKE_id_free(NULL, mesh_src);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user