- fixed: The floor waggle code used FloatBobOffsets as sine table but this

only has 64 entries and is not precise enough. It now uses finesine instead.
- fixed: When compositing a multipatch texture any patch that is a multpatch
  texture itself and contains rotations may not be composited directly into
  the destination buffer. This must be done with an intermediate buffer.
- Fixed: Drawing a slider in the options menu did not scale the x-coordinate.
- Fixed: If the alt HUD had to draw negative numbers the minus sign was misplaced
  due to incorrect texture coordinate calculations.
- changed option menu scaling for widescreen modes so that it doesn't scale down
  so quickly. 
- made some error messages in DECORATE that don't affect the parsing non-fatal
  so that the parser can continue to find more problems.

SVN r2076 (trunk)
This commit is contained in:
Christoph Oelckers 2010-01-02 11:38:27 +00:00
commit 87f3c9c5b7
10 changed files with 117 additions and 64 deletions

View file

@ -1268,9 +1268,17 @@ void DWaggleBase::DoWaggle (bool ceiling)
break;
}
m_Accumulator += m_AccDelta;
#if 1
fixed_t mag = finesine[(m_Accumulator>>9)&8191]*8;
#else
// Hexen used a 64 entry(!) sine table here which is not nearly precise enough for smooth movement
fixed_t mag = FloatBobOffsets[(m_Accumulator>>FRACBITS)&63];
#endif
dist = plane->d;
plane->d = m_OriginalDist + plane->PointToDist (0, 0,
FixedMul (FloatBobOffsets[(m_Accumulator>>FRACBITS)&63], m_Scale));
plane->d = m_OriginalDist + plane->PointToDist (0, 0, FixedMul (mag, m_Scale));
m_Sector->ChangePlaneTexZ(pos, plane->HeightDiff (dist));
dist = plane->HeightDiff (dist);