aboutsummaryrefslogtreecommitdiff
path: root/engines/illusions/fixedpoint.cpp
diff options
context:
space:
mode:
authorjohndoe1232014-03-31 19:54:55 +0200
committerEugene Sandulenko2018-07-20 06:43:33 +0000
commitf2c48e3ae0e5775da6f3dcac841414cf8b5379ef (patch)
tree61eb9c915e846d26922d7c584b7b929102927034 /engines/illusions/fixedpoint.cpp
parente0e4d2ffa92fccdef1ea3eae0228ec812c7dbac5 (diff)
downloadscummvm-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.cpp21
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