Fix (unreported) bad copying of Ocean modifier.

Was needlessly complicated code, forgot to copy a value (foam_fade), and
was utterly leaking memory!
This commit is contained in:
Bastien Montagne 2017-06-19 14:40:08 +02:00
parent e917bc5ee0
commit 1addac8e0c
1 changed files with 4 additions and 25 deletions

View File

@ -160,40 +160,19 @@ static void freeData(ModifierData *md)
static void copyData(ModifierData *md, ModifierData *target)
{
#ifdef WITH_OCEANSIM
#if 0
OceanModifierData *omd = (OceanModifierData *) md;
#endif
OceanModifierData *tomd = (OceanModifierData *) target;
tomd->geometry_mode = omd->geometry_mode;
tomd->resolution = omd->resolution;
tomd->spatial_size = omd->spatial_size;
freeData(target);
tomd->wind_velocity = omd->wind_velocity;
tomd->damp = omd->damp;
tomd->smallest_wave = omd->smallest_wave;
tomd->depth = omd->depth;
tomd->wave_alignment = omd->wave_alignment;
tomd->wave_direction = omd->wave_direction;
tomd->wave_scale = omd->wave_scale;
tomd->chop_amount = omd->chop_amount;
tomd->foam_coverage = omd->foam_coverage;
tomd->time = omd->time;
tomd->seed = omd->seed;
tomd->flag = omd->flag;
modifier_copyData_generic(md, target);
tomd->refresh = 0;
tomd->size = omd->size;
tomd->repeat_x = omd->repeat_x;
tomd->repeat_y = omd->repeat_y;
/* XXX todo: copy cache runtime too */
tomd->cached = 0;
tomd->bakestart = omd->bakestart;
tomd->bakeend = omd->bakeend;
tomd->oceancache = NULL;
tomd->ocean = BKE_ocean_add();