aboutsummaryrefslogtreecommitdiff
path: root/engines/titanic/star_control
diff options
context:
space:
mode:
authorPaul Gilbert2017-06-04 11:42:11 -0400
committerPaul Gilbert2017-06-04 11:42:11 -0400
commitb60f0ee7d3fd134b54bc1a0d423712180a7e4e83 (patch)
treee761a7f5aa829f3262682d140fd94b968fc016c6 /engines/titanic/star_control
parentf6dc363ba8b215adfce8ed346dfecade0a5af451 (diff)
downloadscummvm-rg350-b60f0ee7d3fd134b54bc1a0d423712180a7e4e83.tar.gz
scummvm-rg350-b60f0ee7d3fd134b54bc1a0d423712180a7e4e83.tar.bz2
scummvm-rg350-b60f0ee7d3fd134b54bc1a0d423712180a7e4e83.zip
TITANIC: Rewrite of rotation code when 1 marker is fixed
Diffstat (limited to 'engines/titanic/star_control')
-rw-r--r--engines/titanic/star_control/star_camera.cpp106
1 files changed, 33 insertions, 73 deletions
diff --git a/engines/titanic/star_control/star_camera.cpp b/engines/titanic/star_control/star_camera.cpp
index a462256610..628bfcd402 100644
--- a/engines/titanic/star_control/star_camera.cpp
+++ b/engines/titanic/star_control/star_camera.cpp
@@ -235,86 +235,46 @@ void CStarCamera::setViewportAngle(const FPoint &angles) {
proc22(sub);
} else if (_matrixRow == 0) {
// 1 marker is locked in
+
FVector row1 = _matrix._row1;
- FPose subX(X_AXIS, angles._y);
- FPose subY(Y_AXIS, angles._x);
- FPose sub(subX, subY);
+ FPose poseX(X_AXIS, angles._y);
+ FPose poseY(Y_AXIS, angles._x);
+ FPose pose(poseX, poseY);
FMatrix m1 = _viewport.getOrientation();
FVector tempV1 = _viewport._position;
- FVector tempV2, tempV3, tempV4, tempV5, tempV6;
- tempV2._y = m1._row1._y * 100000.0;
- tempV2._z = m1._row1._z * 100000.0;
- tempV3._x = m1._row1._x * 100000.0 + tempV1._x;
- tempV4._x = tempV3._x;
- tempV3._y = tempV2._y + tempV1._y;
- tempV4._y = tempV3._y;
- tempV3._z = tempV2._z + tempV1._z;
- tempV4._z = tempV3._z;
- tempV2._x = m1._row2._x * 100000.0;
- tempV2._y = m1._row2._y * 100000.0;
- tempV2._z = m1._row2._z * 100000.0;
- tempV2._x = m1._row3._x * 100000.0;
- tempV2._y = m1._row3._y * 100000.0;
- tempV2._z = m1._row3._z * 100000.0;
- tempV2._x = tempV2._x + tempV1._x;
- tempV2._y = tempV2._y + tempV1._y;
- tempV2._z = tempV2._z + tempV1._z;
- tempV3._x = tempV2._x + tempV1._x;
- tempV3._y = tempV2._y + tempV1._y;
- tempV5._x = tempV2._x;
- tempV5._y = tempV2._y;
- tempV3._z = tempV2._z + tempV1._z;
- tempV5._z = tempV2._z;
- tempV6._x = tempV3._x;
- tempV6._y = tempV3._y;
- tempV6._z = tempV3._z;
- tempV1._x = tempV1._x - row1._x;
- tempV1._y = tempV1._y - row1._y;
- tempV1._z = tempV1._z - row1._z;
- tempV4._x = tempV3._x - row1._x;
- tempV4._y = tempV4._y - row1._y;
- tempV4._z = tempV4._z - row1._z;
- tempV5._x = tempV2._x - row1._x;
-
- tempV5._y = tempV5._y - row1._y;
- tempV5._z = tempV5._z - row1._z;
- tempV6._x = tempV3._x - row1._x;
- tempV6._y = tempV6._y - row1._y;
- tempV6._z = tempV6._z - row1._z;
-
- FVector modV1 = tempV1.fn5(sub);
- FVector modV2 = tempV4.fn5(sub);
- FVector modV3 = tempV5.fn5(sub);
- FVector modV4 = tempV6.fn5(sub);
- tempV1 = modV1;
- tempV4 = modV2;
- tempV5 = modV3;
- tempV4 = modV4;
-
- tempV2._x = tempV4._x - tempV1._x;
- tempV2._y = tempV4._y - tempV1._y;
- tempV2._z = tempV4._z - tempV1._z;
- tempV4._x = tempV2._x;
- tempV4._y = tempV2._y;
- tempV2._x = tempV5._x - tempV1._x;
- tempV4._z = tempV2._z;
- tempV5._x = tempV2._x;
- tempV2._y = tempV5._y - tempV1._y;
- tempV5._y = tempV2._y;
- tempV2._z = tempV5._z - tempV1._z;
- tempV5._z = tempV2._z;
- tempV2._x = tempV6._x - tempV1._x;
- tempV2._y = tempV6._y - tempV1._y;
- tempV2._z = tempV6._z - tempV1._z;
- tempV6 = tempV2;
+ FVector tempV2 = m1._row1 * 100000;
+ FVector tempV3 = tempV2 + tempV1;
+ FVector tempV4 = tempV3;
+
+ tempV2 = m1._row2 * 100000;
+ FVector tempV5 = m1._row3 * 100000;
+ FVector tempV6 = tempV2 + tempV1;
+
+ FVector tempV7 = tempV5 + tempV1;
+ tempV5 = tempV6;
+ tempV6 = tempV7;
+
+ tempV1 -= row1;
+ tempV4 -= row1;
+ tempV5 -= row1;
+ tempV6 -= row1;
+
+ tempV1 = tempV7 = tempV1.fn5(pose);
+ tempV4 = tempV1 = tempV4.fn5(pose);
+ tempV5 = tempV5.fn5(pose);
+ tempV6 = tempV6.fn5(pose);
+
+ tempV4 = tempV4 - tempV1;
+ FVector tempV9 = tempV5 - tempV1;
+ FVector tempV10 = tempV6 - tempV1;
tempV4.normalize();
- tempV5.normalize();
- tempV6.normalize();
- tempV1 += row1;
+ tempV9.normalize();
+ tempV10.normalize();
- m1.set(tempV4, tempV5, tempV6);
+ tempV1 += row1;
+ m1.set(tempV4, tempV9, tempV10);
_viewport.setOrientation(m1);
_viewport.setPosition(tempV1);
} else if (_matrixRow == 1) {