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:
Diffstat (limited to 'source/blender/modifiers/intern/MOD_ocean.c')
-rw-r--r--source/blender/modifiers/intern/MOD_ocean.c35
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,