diff options
Diffstat (limited to 'source/blender/modifiers/intern/MOD_particleinstance.c')
-rw-r--r-- | source/blender/modifiers/intern/MOD_particleinstance.c | 39 |
1 files changed, 16 insertions, 23 deletions
diff --git a/source/blender/modifiers/intern/MOD_particleinstance.c b/source/blender/modifiers/intern/MOD_particleinstance.c index 97f01ac8ab1..b93e567fe56 100644 --- a/source/blender/modifiers/intern/MOD_particleinstance.c +++ b/source/blender/modifiers/intern/MOD_particleinstance.c @@ -52,7 +52,6 @@ #include "BKE_particle.h" #include "BKE_pointcache.h" -#include "depsgraph_private.h" #include "DEG_depsgraph_build.h" static void initData(ModifierData *md) @@ -131,20 +130,6 @@ static bool isDisabled(ModifierData *md, int useRenderParams) return false; } - -static void updateDepgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx) -{ - ParticleInstanceModifierData *pimd = (ParticleInstanceModifierData *) md; - - if (pimd->ob) { - DagNode *curNode = dag_get_node(ctx->forest, pimd->ob); - - dag_add_relation(ctx->forest, curNode, ctx->obNode, - DAG_RL_DATA_DATA | DAG_RL_OB_DATA, - "Particle Instance Modifier"); - } -} - static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx) { ParticleInstanceModifierData *pimd = (ParticleInstanceModifierData *) md; @@ -217,9 +202,8 @@ static void store_float_in_vcol(MLoopCol *vcol, float float_value) vcol->a = 1.0f; } -static DerivedMesh *applyModifier(ModifierData *md, Object *ob, - DerivedMesh *derivedData, - ModifierApplyFlag UNUSED(flag)) +static DerivedMesh *applyModifier(ModifierData *md, const ModifierEvalContext *ctx, + DerivedMesh *derivedData) { DerivedMesh *dm = derivedData, *result; ParticleInstanceModifierData *pimd = (ParticleInstanceModifierData *) md; @@ -232,7 +216,7 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, int totvert, totpoly, totloop , totedge; int maxvert, maxpoly, maxloop, maxedge, part_end = 0, part_start; int k, p, p_skip; - short track = ob->trackflag % 3, trackneg, axis = pimd->axis; + short track = ctx->object->trackflag % 3, trackneg, axis = pimd->axis; float max_co = 0.0, min_co = 0.0, temp_co[3]; float *size = NULL; float spacemat[4][4]; @@ -240,9 +224,9 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, const bool use_children = pimd->flag & eParticleInstanceFlag_Children; bool between; - trackneg = ((ob->trackflag > 2) ? 1 : 0); + trackneg = ((ctx->object->trackflag > 2) ? 1 : 0); - if (pimd->ob == ob) { + if (pimd->ob == ctx->object) { pimd->ob = NULL; return derivedData; } @@ -267,6 +251,7 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, if (part_end == 0) return derivedData; + sim.depsgraph = ctx->depsgraph; sim.scene = md->scene; sim.ob = pimd->ob; sim.psys = psys; @@ -555,17 +540,25 @@ ModifierTypeInfo modifierType_ParticleInstance = { eModifierTypeFlag_EnableInEditmode, /* copyData */ copyData, + + /* deformVerts_DM */ NULL, + /* deformMatrices_DM */ NULL, + /* deformVertsEM_DM */ NULL, + /* deformMatricesEM_DM*/NULL, + /* applyModifier_DM */ applyModifier, + /* applyModifierEM_DM */NULL, + /* deformVerts */ NULL, /* deformMatrices */ NULL, /* deformVertsEM */ NULL, /* deformMatricesEM */ NULL, - /* applyModifier */ applyModifier, + /* applyModifier */ NULL, /* applyModifierEM */ NULL, + /* initData */ initData, /* requiredDataMask */ requiredDataMask, /* freeData */ NULL, /* isDisabled */ isDisabled, - /* updateDepgraph */ updateDepgraph, /* updateDepsgraph */ updateDepsgraph, /* dependsOnTime */ NULL, /* dependsOnNormals */ NULL, |