void BKE_free_ocean(struct Ocean *oc) { if (!oc) return; BKE_free_ocean_data(oc); BLI_rw_mutex_end(&oc->oceanmutex); MEM_freeN(oc); }
/* keep in sync with init_ocean_modifier_bake(), object_modifier.c */ static void init_ocean_modifier(struct OceanModifierData *omd) { int do_heightfield, do_chop, do_normals, do_jacobian; if (!omd || !omd->ocean) return; do_heightfield = TRUE; do_chop = (omd->chop_amount > 0); do_normals = (omd->flag & MOD_OCEAN_GENERATE_NORMALS); do_jacobian = (omd->flag & MOD_OCEAN_GENERATE_FOAM); BKE_free_ocean_data(omd->ocean); BKE_init_ocean(omd->ocean, omd->resolution * omd->resolution, omd->resolution * omd->resolution, omd->spatial_size, omd->spatial_size, omd->wind_velocity, omd->smallest_wave, 1.0, omd->wave_direction, omd->damp, omd->wave_alignment, omd->depth, omd->time, do_heightfield, do_chop, do_normals, do_jacobian, omd->seed); }