diff --git a/source/games/sw/src/game.h b/source/games/sw/src/game.h index 984d6a94f..7e81a14fc 100644 --- a/source/games/sw/src/game.h +++ b/source/games/sw/src/game.h @@ -1299,7 +1299,7 @@ struct SWING struct SINE_WAVE_FLOOR { sectortype* sectp; - int floor_origz, ceiling_origz, range; + double floorOrigz, ceilingOrigz, Range; int16_t sintable_ndx, speed_shift; uint8_t flags; }; diff --git a/source/games/sw/src/save.cpp b/source/games/sw/src/save.cpp index fa73048cf..9080da2d4 100644 --- a/source/games/sw/src/save.cpp +++ b/source/games/sw/src/save.cpp @@ -867,9 +867,9 @@ FSerializer& Serialize(FSerializer& arc, const char* keyname, SINE_WAVE_FLOOR& w if (arc.BeginObject(keyname)) { - arc("floor_origz", w.floor_origz, def->floor_origz) - ("ceiling_origz", w.ceiling_origz, def->ceiling_origz) - ("range", w.range, def->range) + arc("floor_origz", w.floorOrigz, def->floorOrigz) + ("ceiling_origz", w.ceilingOrigz, def->ceilingOrigz) + ("range", w.Range, def->Range) ("sector", w.sectp, def->sectp) ("sintable_ndx", w.sintable_ndx, def->sintable_ndx) ("speed_shift", w.speed_shift, def->speed_shift) diff --git a/source/games/sw/src/sector.cpp b/source/games/sw/src/sector.cpp index d0db4f872..f1442e2ec 100644 --- a/source/games/sw/src/sector.cpp +++ b/source/games/sw/src/sector.cpp @@ -500,7 +500,7 @@ void SectorSetup(void) SINE_WAVE_FLOOR *swf; uint16_t swf_ndx = 0; short cnt = 0, sector_cnt; - int range; + double Range; int range_diff = 0; int wave_diff = 0; short peak_dist = 0; @@ -536,9 +536,9 @@ void SectorSetup(void) swf->sectp = sectp; ASSERT(swf->sectp->hitag != 0); - swf->range = range = Z(swf->sectp->hitag); - swf->floor_origz = swf->sectp->int_floorz() - (range >> 2); - swf->ceiling_origz = swf->sectp->int_ceilingz() - (range >> 2); + swf->Range = Range = swf->sectp->hitag; + swf->floorOrigz = swf->sectp->floorz - (Range * 0.25); + swf->ceilingOrigz = swf->sectp->ceilingz- (Range * 0.25); // look for the rest by distance auto near_sectp = sectp, base_sectp = sectp; @@ -558,10 +558,10 @@ void SectorSetup(void) peak_dist = near_sectp->hitag; swf->sectp = near_sectp; - swf->floor_origz = swf->sectp->int_floorz() - (range >> 2); - swf->ceiling_origz = swf->sectp->int_ceilingz() - (range >> 2); - range -= range_diff; - swf->range = range; + swf->floorOrigz = swf->sectp->floorz - (Range * 0.25); + swf->ceilingOrigz = swf->sectp->ceilingz- (Range * 0.25); + Range -= range_diff * zmaptoworld; + swf->Range = Range; base_sectp = swf->sectp; sector_cnt++; @@ -604,16 +604,16 @@ void SectorSetup(void) swf = &SineWaveFloor[NextSineWave][cnt]; - swf->range -= wave_diff; + swf->Range -= wave_diff * zmaptoworld; wave_diff += wave_diff; - if (swf->range < Z(4)) - swf->range = Z(4); + if (swf->Range < 4) + swf->Range = 4; // reset origz's based on new range - swf->floor_origz = swf->sectp->int_floorz() - (swf->range >> 2); - swf->ceiling_origz = swf->sectp->int_ceilingz() - (swf->range >> 2); + swf->floorOrigz = swf->sectp->floorz - (swf->Range * 0.25); + swf->ceilingOrigz = swf->sectp->ceilingz - (swf->Range * 0.25); } } @@ -2597,13 +2597,13 @@ void DoSineWaveFloor(void) if ((flags & SINE_FLOOR)) { - newz = swf->floor_origz + MulScale(swf->range, bsin(swf->sintable_ndx), 14); + newz = swf->floorOrigz + swf->Range * BobVal(swf->sintable_ndx); swf->sectp->set_int_floorz(newz); } if ((flags & SINE_CEILING)) { - newz = swf->ceiling_origz + MulScale(swf->range, bsin(swf->sintable_ndx), 14); + newz = swf->ceilingOrigz + swf->Range * BobVal(swf->sintable_ndx); swf->sectp->set_int_ceilingz(newz); }