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:
authorJacques Lucke <mail@jlucke.com>2018-09-20 13:04:17 +0300
committerJacques Lucke <mail@jlucke.com>2018-09-20 13:04:17 +0300
commitb5dbe43d3ebfdc238d56bbb71ec17735cebdc951 (patch)
tree09e09ea4d5d78887e048b214f7ca9a0011641e5d /source/blender/modifiers
parentadd8e1c018bb5342cdad14a7d143d2b38ffa5bf5 (diff)
Cleanup: move DerivedMesh wrappers for modifiers further down the hierarchy
The main goal of this patch is to cleanup the interface of every modifier. More specifically the interface of modifiers should be DerivedMesh-free. Internally some modifiers still use DerivedMesh. However I think it is better when the wrappers are in the modifiers so that higher level functions can use the simplified interface. This patch removes the applyModifier_DM and applyModifierEM_DM functions. In a previous patch (rB3614d9d) the other functions that used DerivedMesh have been removed. Reviewers: brecht
Diffstat (limited to 'source/blender/modifiers')
-rw-r--r--source/blender/modifiers/intern/MOD_dynamicpaint.c9
-rw-r--r--source/blender/modifiers/intern/MOD_explode.c9
-rw-r--r--source/blender/modifiers/intern/MOD_multires.c8
-rw-r--r--source/blender/modifiers/intern/MOD_smoke.c9
-rw-r--r--source/blender/modifiers/intern/MOD_subsurf.c28
5 files changed, 45 insertions, 18 deletions
diff --git a/source/blender/modifiers/intern/MOD_dynamicpaint.c b/source/blender/modifiers/intern/MOD_dynamicpaint.c
index 61219096b43..74dbb28d186 100644
--- a/source/blender/modifiers/intern/MOD_dynamicpaint.c
+++ b/source/blender/modifiers/intern/MOD_dynamicpaint.c
@@ -31,6 +31,7 @@
#include "DNA_object_types.h"
#include "DNA_object_force_types.h"
#include "DNA_scene_types.h"
+#include "DNA_mesh_types.h"
#include "BLI_utildefines.h"
@@ -100,7 +101,7 @@ static CustomDataMask requiredDataMask(Object *UNUSED(ob), ModifierData *md)
return dataMask;
}
-static DerivedMesh *applyModifier(
+static DerivedMesh *applyModifier_DM(
ModifierData *md, const ModifierEvalContext *ctx,
DerivedMesh *dm)
{
@@ -114,6 +115,8 @@ static DerivedMesh *applyModifier(
return dm;
}
+applyModifier_DM_wrapper(applyModifier, applyModifier_DM)
+
static bool is_brush_cb(Object *UNUSED(ob), ModifierData *pmd)
{
return ((DynamicPaintModifierData *)pmd)->brush != NULL;
@@ -183,14 +186,14 @@ ModifierTypeInfo modifierType_DynamicPaint = {
/* deformMatrices_DM */ NULL,
/* deformVertsEM_DM */ NULL,
/* deformMatricesEM_DM*/NULL,
- /* applyModifier_DM */ applyModifier,
+ /* applyModifier_DM */ NULL,
/* applyModifierEM_DM */NULL,
/* deformVerts */ NULL,
/* deformMatrices */ NULL,
/* deformVertsEM */ NULL,
/* deformMatricesEM */ NULL,
- /* applyModifier */ NULL,
+ /* applyModifier */ applyModifier,
/* applyModifierEM */ NULL,
/* initData */ initData,
diff --git a/source/blender/modifiers/intern/MOD_explode.c b/source/blender/modifiers/intern/MOD_explode.c
index 7c38677ba8b..df454eb9008 100644
--- a/source/blender/modifiers/intern/MOD_explode.c
+++ b/source/blender/modifiers/intern/MOD_explode.c
@@ -36,6 +36,7 @@
#include "DNA_meshdata_types.h"
#include "DNA_scene_types.h"
#include "DNA_object_types.h"
+#include "DNA_mesh_types.h"
#include "BLI_utildefines.h"
#include "BLI_kdtree.h"
@@ -998,7 +999,7 @@ static ParticleSystemModifierData *findPrecedingParticlesystem(Object *ob, Modif
}
return psmd;
}
-static DerivedMesh *applyModifier(
+static DerivedMesh *applyModifier_DM(
ModifierData *md, const ModifierEvalContext *ctx,
DerivedMesh *derivedData)
{
@@ -1048,6 +1049,8 @@ static DerivedMesh *applyModifier(
return derivedData;
}
+applyModifier_DM_wrapper(applyModifier, applyModifier_DM)
+
ModifierTypeInfo modifierType_Explode = {
/* name */ "Explode",
@@ -1061,14 +1064,14 @@ ModifierTypeInfo modifierType_Explode = {
/* deformMatrices_DM */ NULL,
/* deformVertsEM_DM */ NULL,
/* deformMatricesEM_DM*/NULL,
- /* applyModifier_DM */ applyModifier,
+ /* applyModifier_DM */ NULL,
/* applyModifierEM_DM */NULL,
/* deformVerts */ NULL,
/* deformMatrices */ NULL,
/* deformVertsEM */ NULL,
/* deformMatricesEM */ NULL,
- /* applyModifier */ NULL,
+ /* applyModifier */ applyModifier,
/* applyModifierEM */ NULL,
/* initData */ initData,
diff --git a/source/blender/modifiers/intern/MOD_multires.c b/source/blender/modifiers/intern/MOD_multires.c
index 813ce830b04..826c9cbe81f 100644
--- a/source/blender/modifiers/intern/MOD_multires.c
+++ b/source/blender/modifiers/intern/MOD_multires.c
@@ -67,7 +67,7 @@ static void initData(ModifierData *md)
mmd->quality = 3;
}
-static DerivedMesh *applyModifier(
+static DerivedMesh *applyModifier_DM(
ModifierData *md, const ModifierEvalContext *ctx,
DerivedMesh *dm)
{
@@ -144,6 +144,8 @@ static DerivedMesh *applyModifier(
return result;
}
+applyModifier_DM_wrapper(applyModifier, applyModifier_DM)
+
#ifdef WITH_OPENSUBDIV_MODIFIER
/* Subdivide into fully qualified mesh. */
@@ -261,7 +263,7 @@ ModifierTypeInfo modifierType_Multires = {
/* deformMatrices_DM */ NULL,
/* deformVertsEM_DM */ NULL,
/* deformMatricesEM_DM*/NULL,
- /* applyModifier_DM */ applyModifier,
+ /* applyModifier_DM */ NULL,
/* applyModifierEM_DM */NULL,
/* deformVerts */ NULL,
@@ -271,7 +273,7 @@ ModifierTypeInfo modifierType_Multires = {
#ifdef WITH_OPENSUBDIV_MODIFIER
/* applyModifier */ applyModifier_subdiv,
#else
- /* applyModifier */ NULL,
+ /* applyModifier */ applyModifier,
#endif
/* applyModifierEM */ NULL,
diff --git a/source/blender/modifiers/intern/MOD_smoke.c b/source/blender/modifiers/intern/MOD_smoke.c
index a15c4169df3..0caeda0e426 100644
--- a/source/blender/modifiers/intern/MOD_smoke.c
+++ b/source/blender/modifiers/intern/MOD_smoke.c
@@ -42,6 +42,7 @@
#include "DNA_scene_types.h"
#include "DNA_smoke_types.h"
#include "DNA_object_force_types.h"
+#include "DNA_mesh_types.h"
#include "BLI_utildefines.h"
@@ -104,7 +105,7 @@ static CustomDataMask requiredDataMask(Object *UNUSED(ob), ModifierData *md)
return dataMask;
}
-static DerivedMesh *applyModifier(
+static DerivedMesh *applyModifier_DM(
ModifierData *md, const ModifierEvalContext *ctx,
DerivedMesh *dm)
{
@@ -118,6 +119,8 @@ static DerivedMesh *applyModifier(
return smokeModifier_do(smd, ctx->depsgraph, scene, ctx->object, dm);
}
+applyModifier_DM_wrapper(applyModifier, applyModifier_DM)
+
static bool dependsOnTime(ModifierData *UNUSED(md))
{
return true;
@@ -182,14 +185,14 @@ ModifierTypeInfo modifierType_Smoke = {
/* deformMatrices_DM */ NULL,
/* deformVertsEM_DM */ NULL,
/* deformMatricesEM_DM*/NULL,
- /* applyModifier_DM */ applyModifier,
+ /* applyModifier_DM */ NULL,
/* applyModifierEM_DM */NULL,
/* deformVerts */ NULL,
/* deformMatrices */ NULL,
/* deformVertsEM */ NULL,
/* deformMatricesEM */ NULL,
- /* applyModifier */ NULL,
+ /* applyModifier */ applyModifier,
/* applyModifierEM */ NULL,
/* initData */ initData,
diff --git a/source/blender/modifiers/intern/MOD_subsurf.c b/source/blender/modifiers/intern/MOD_subsurf.c
index deccec05190..d7c8d0c7bb6 100644
--- a/source/blender/modifiers/intern/MOD_subsurf.c
+++ b/source/blender/modifiers/intern/MOD_subsurf.c
@@ -99,7 +99,7 @@ static bool isDisabled(const Scene *scene, ModifierData *md, bool useRenderParam
return get_render_subsurf_level(&scene->r, levels, useRenderParams != 0) == 0;
}
-static DerivedMesh *applyModifier(
+static DerivedMesh *applyModifier_DM(
ModifierData *md, const ModifierEvalContext *ctx,
DerivedMesh *derivedData)
{
@@ -133,7 +133,9 @@ static DerivedMesh *applyModifier(
return result;
}
-static DerivedMesh *applyModifierEM(
+applyModifier_DM_wrapper(applyModifier, applyModifier_DM)
+
+static DerivedMesh *applyModifierEM_DM(
ModifierData *md, const ModifierEvalContext *ctx,
struct BMEditMesh *UNUSED(editData),
DerivedMesh *derivedData)
@@ -148,6 +150,20 @@ static DerivedMesh *applyModifierEM(
return result;
}
+static Mesh *applyModifierEM(
+ struct ModifierData *md, const struct ModifierEvalContext *ctx,
+ struct BMEditMesh *editData,
+ struct Mesh *mesh)
+{
+ DerivedMesh *dm = CDDM_from_mesh_ex(mesh, CD_REFERENCE, CD_MASK_EVERYTHING);
+ DerivedMesh *ndm = applyModifierEM_DM(md, ctx, editData, dm);
+ if (ndm != dm) {
+ dm->release(dm);
+ }
+ DM_to_mesh(ndm, mesh, ctx->object, CD_MASK_EVERYTHING, true);
+ return mesh;
+}
+
#ifdef WITH_OPENSUBDIV_MODIFIER
static int subdiv_levels_for_modifier_get(const SubsurfModifierData *smd,
const ModifierEvalContext *ctx)
@@ -275,8 +291,8 @@ ModifierTypeInfo modifierType_Subsurf = {
/* deformMatrices_DM */ NULL,
/* deformVertsEM_DM */ NULL,
/* deformMatricesEM_DM*/NULL,
- /* applyModifier_DM */ applyModifier,
- /* applyModifierEM_DM */applyModifierEM,
+ /* applyModifier_DM */ NULL,
+ /* applyModifierEM_DM */NULL,
/* deformVerts */ NULL,
/* deformMatrices */ NULL,
@@ -285,9 +301,9 @@ ModifierTypeInfo modifierType_Subsurf = {
#ifdef WITH_OPENSUBDIV_MODIFIER
/* applyModifier */ applyModifier_subdiv,
#else
- /* applyModifier */ NULL,
+ /* applyModifier */ applyModifier,
#endif
- /* applyModifierEM */ NULL,
+ /* applyModifierEM */ applyModifierEM,
/* initData */ initData,
/* requiredDataMask */ NULL,