diff options
Diffstat (limited to 'source/blender/modifiers/intern/MOD_ocean.c')
-rw-r--r-- | source/blender/modifiers/intern/MOD_ocean.c | 35 |
1 files changed, 22 insertions, 13 deletions
diff --git a/source/blender/modifiers/intern/MOD_ocean.c b/source/blender/modifiers/intern/MOD_ocean.c index c29e835797b..702e557ccb1 100644 --- a/source/blender/modifiers/intern/MOD_ocean.c +++ b/source/blender/modifiers/intern/MOD_ocean.c @@ -46,6 +46,8 @@ #include "BKE_modifier.h" #include "BKE_ocean.h" +#include "DEG_depsgraph_query.h" + #include "MOD_modifiertypes.h" #ifdef WITH_OCEANSIM @@ -391,7 +393,6 @@ static DerivedMesh *generate_ocean_geometry(OceanModifierData *omd) /* add uvs */ if (CustomData_number_of_layers(&result->loopData, CD_MLOOPUV) < MAX_MTFACE) { gogd.mloopuvs = CustomData_add_layer(&result->loopData, CD_MLOOPUV, CD_CALLOC, NULL, num_polys * 4); - CustomData_add_layer(&result->polyData, CD_MTEXPOLY, CD_CALLOC, NULL, num_polys); if (gogd.mloopuvs) { /* unlikely to fail */ gogd.ix = 1.0 / gogd.rx; @@ -407,7 +408,7 @@ static DerivedMesh *generate_ocean_geometry(OceanModifierData *omd) } static DerivedMesh *doOcean( - ModifierData *md, Object *ob, + ModifierData *md, Scene *scene, Object *ob, DerivedMesh *derivedData, int UNUSED(useRenderParams)) { @@ -451,7 +452,7 @@ static DerivedMesh *doOcean( if (!omd->oceancache) { init_cache_data(ob, omd); } - BKE_ocean_simulate_cache(omd->oceancache, md->scene->r.cfra); + BKE_ocean_simulate_cache(omd->oceancache, scene->r.cfra); } else { simulate_ocean_modifier(omd); @@ -465,7 +466,7 @@ static DerivedMesh *doOcean( dm = CDDM_copy(derivedData); } - cfra = md->scene->r.cfra; + cfra = scene->r.cfra; CLAMP(cfra, omd->bakestart, omd->bakeend); cfra -= omd->bakestart; /* shift to 0 based */ @@ -548,24 +549,24 @@ static DerivedMesh *doOcean( } #else /* WITH_OCEANSIM */ static DerivedMesh *doOcean( - ModifierData *md, Object *UNUSED(ob), + ModifierData *UNUSED(md), Scene *UNUSED(scene), Object *UNUSED(ob), DerivedMesh *derivedData, int UNUSED(useRenderParams)) { /* unused */ - (void)md; return derivedData; } #endif /* WITH_OCEANSIM */ static DerivedMesh *applyModifier( - ModifierData *md, Object *ob, - DerivedMesh *derivedData, - ModifierApplyFlag UNUSED(flag)) + ModifierData *md, const ModifierEvalContext *ctx, + DerivedMesh *derivedData) { DerivedMesh *result; + Scene *scene = DEG_get_evaluated_scene(ctx->depsgraph); - result = doOcean(md, ob, derivedData, 0); + + result = doOcean(md, scene, ctx->object, derivedData, 0); if (result != derivedData) result->dirty |= DM_DIRTY_NORMALS; @@ -584,17 +585,25 @@ ModifierTypeInfo modifierType_Ocean = { eModifierTypeFlag_EnableInEditmode, /* copyData */ copyData, - /* deformMatrices */ NULL, + /* deformMatrices_DM */ NULL, + + /* deformVerts_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 */ freeData, /* isDisabled */ NULL, - /* updateDepgraph */ NULL, /* updateDepsgraph */ NULL, /* dependsOnTime */ NULL, /* dependsOnNormals */ dependsOnNormals, |