diff options
author | johndoe123 | 2014-03-31 19:54:55 +0200 |
---|---|---|
committer | Eugene Sandulenko | 2018-07-20 06:43:33 +0000 |
commit | f2c48e3ae0e5775da6f3dcac841414cf8b5379ef (patch) | |
tree | 61eb9c915e846d26922d7c584b7b929102927034 /engines/illusions/fixedpoint.cpp | |
parent | e0e4d2ffa92fccdef1ea3eae0228ec812c7dbac5 (diff) | |
download | scummvm-rg350-f2c48e3ae0e5775da6f3dcac841414cf8b5379ef.tar.gz scummvm-rg350-f2c48e3ae0e5775da6f3dcac841414cf8b5379ef.tar.bz2 scummvm-rg350-f2c48e3ae0e5775da6f3dcac841414cf8b5379ef.zip |
ILLUSIONS: Implement pathwalking (actual pathfinding todo)
Diffstat (limited to 'engines/illusions/fixedpoint.cpp')
-rw-r--r-- | engines/illusions/fixedpoint.cpp | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/engines/illusions/fixedpoint.cpp b/engines/illusions/fixedpoint.cpp index 7fc15e424e..54dbb137cd 100644 --- a/engines/illusions/fixedpoint.cpp +++ b/engines/illusions/fixedpoint.cpp @@ -41,20 +41,33 @@ FP16 fixedDiv(FP16 a, FP16 b) { return ((float)a / b) * 65536.0; } -int fixedTrunc(FP16 value) { +int16 fixedTrunc(FP16 value) { // CHECKME Not sure if this correct - int result = value >> 16; + int16 result = (value >> 16) & 0xFFFF; if ((value & 0xFFFF) >= 0x8000) ++result; return result; } FP16 fixedDistance(FP16 x1, FP16 y1, FP16 x2, FP16 y2) { - float xd = ABS(fixedToFloat(x1) - fixedToFloat(x2)); - float yd = ABS(fixedToFloat(y1) - fixedToFloat(y2)); + float xd = fixedToFloat(x1) - fixedToFloat(x2); + float yd = fixedToFloat(y1) - fixedToFloat(y2); if (xd != 0.0 || yd != 0.0) return floatToFixed(sqrt(xd * xd + yd * yd)); return 0; } +FP16 fixedAtan(FP16 value) { + //return floatToFixed(atan2(1.0, fixedToFloat(value))); + return floatToFixed(atan(fixedToFloat(value))); +} + +FP16 fixedCos(FP16 value) { + return floatToFixed(cos(fixedToFloat(value))); +} + +FP16 fixedSin(FP16 value) { + return floatToFixed(sin(fixedToFloat(value))); +} + } // End of namespace Illusions |