Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSybren A. Stüvel <sybren@stuvel.eu>2018-05-08 13:34:01 +0300
committerSybren A. Stüvel <sybren@stuvel.eu>2018-05-08 13:34:06 +0300
commit002dcd200178c602474c3794c3c21e3b212e6e25 (patch)
tree2b7207c615fef56063e93d70a7248df9ade5d6a7 /source/blender/modifiers/intern/MOD_simpledeform.c
parent9a79178c2eb79e724077d38cd2dd964d0b6ca0ea (diff)
Modifiers: pass the ob->data to the modifier if the mesh param is NULL
This enables the modifiers to access things like vertex groups. Care should be taken to not modifier the mesh itself in this case.
Diffstat (limited to 'source/blender/modifiers/intern/MOD_simpledeform.c')
-rw-r--r--source/blender/modifiers/intern/MOD_simpledeform.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/source/blender/modifiers/intern/MOD_simpledeform.c b/source/blender/modifiers/intern/MOD_simpledeform.c
index eec1cde3889..c1dbf1989ea 100644
--- a/source/blender/modifiers/intern/MOD_simpledeform.c
+++ b/source/blender/modifiers/intern/MOD_simpledeform.c
@@ -40,6 +40,7 @@
#include "BLI_utildefines.h"
#include "BKE_cdderivedmesh.h"
+#include "BKE_editmesh.h"
#include "BKE_mesh.h"
#include "BKE_library_query.h"
#include "BKE_modifier.h"
@@ -47,6 +48,8 @@
#include "MOD_util.h"
+#include "bmesh.h"
+
#define BEND_EPS 0.000001f
/* Re-maps the indicies for X Y Z by shifting them up and wrapping, such that
@@ -389,16 +392,21 @@ static void deformVerts(ModifierData *md, const ModifierEvalContext *ctx,
float (*vertexCos)[3],
int numVerts)
{
- SimpleDeformModifier_do((SimpleDeformModifierData *)md, ctx->object, mesh, vertexCos, numVerts);
+ Mesh *mesh_src = mesh ? mesh : ctx->object->data;
+ SimpleDeformModifier_do((SimpleDeformModifierData *)md, ctx->object, mesh_src, vertexCos, numVerts);
}
static void deformVertsEM(ModifierData *md, const ModifierEvalContext *ctx,
- struct BMEditMesh *UNUSED(editData),
+ struct BMEditMesh *editData,
struct Mesh *mesh,
float (*vertexCos)[3],
int numVerts)
{
- SimpleDeformModifier_do((SimpleDeformModifierData *)md, ctx->object, mesh, vertexCos, numVerts);
+ Mesh *mesh_src = mesh;
+ if (!mesh) {
+ mesh_src = BKE_bmesh_to_mesh_nomain(editData->bm, &(struct BMeshToMeshParams){0});
+ }
+ SimpleDeformModifier_do((SimpleDeformModifierData *)md, ctx->object, mesh_src, vertexCos, numVerts);
}