diff options
Diffstat (limited to 'engines/titanic/star_control')
-rw-r--r-- | engines/titanic/star_control/camera_mover.h | 3 | ||||
-rw-r--r-- | engines/titanic/star_control/star_camera.cpp | 28 | ||||
-rw-r--r-- | engines/titanic/star_control/star_control_sub22.cpp | 5 | ||||
-rw-r--r-- | engines/titanic/star_control/star_control_sub22.h | 3 | ||||
-rw-r--r-- | engines/titanic/star_control/star_control_sub23.h | 5 | ||||
-rw-r--r-- | engines/titanic/star_control/star_control_sub27.cpp | 35 | ||||
-rw-r--r-- | engines/titanic/star_control/star_control_sub27.h | 7 | ||||
-rw-r--r-- | engines/titanic/star_control/viewport.cpp | 28 | ||||
-rw-r--r-- | engines/titanic/star_control/viewport.h | 6 |
9 files changed, 63 insertions, 57 deletions
diff --git a/engines/titanic/star_control/camera_mover.h b/engines/titanic/star_control/camera_mover.h index 6577801d34..1121640578 100644 --- a/engines/titanic/star_control/camera_mover.h +++ b/engines/titanic/star_control/camera_mover.h @@ -55,7 +55,8 @@ public: virtual void proc5(); virtual void proc6(); virtual void proc7(); - virtual void proc8(FVector &v1, FVector &v2, FMatrix &m1, FMatrix &m2) {} + virtual void proc8(FVector &oldPos, FVector &newPos, + FMatrix &oldOrientation, FMatrix &newOrientation) {} /** * Start a movement to a given specified destination diff --git a/engines/titanic/star_control/star_camera.cpp b/engines/titanic/star_control/star_camera.cpp index ede73b349e..5c7f9910a7 100644 --- a/engines/titanic/star_control/star_camera.cpp +++ b/engines/titanic/star_control/star_camera.cpp @@ -117,10 +117,10 @@ void CStarCamera::proc13(CViewport *dest) { } void CStarCamera::setDestination(const FVector &v) { - FMatrix matrix = _viewport.getMatrix(); - FVector vector = _viewport._position; + FMatrix orientation = _viewport.getOrientation(); + FVector oldPos = _viewport._position; - _mover->moveTo(vector, v, matrix); + _mover->moveTo(oldPos, v, orientation); } void CStarCamera::updatePosition(CErrorCode *errorCode) { @@ -129,7 +129,7 @@ void CStarCamera::updatePosition(CErrorCode *errorCode) { if (!_newOrientation) _newOrientation = new FMatrix(); - *_priorOrientation = _viewport.getMatrix(); + *_priorOrientation = _viewport.getOrientation(); *_newOrientation = *_priorOrientation; FVector priorPos = _viewport._position; @@ -237,7 +237,7 @@ void CStarCamera::setViewportAngle(const FPoint &angles) { FPose subY(Y_AXIS, angles._x); FPose sub(subX, subY); - FMatrix m1 = _viewport.getMatrix(); + FMatrix m1 = _viewport.getOrientation(); FVector tempV1 = _viewport._position; FVector tempV2, tempV3, tempV4, tempV5, tempV6; tempV2._y = m1._row1._y * 100000.0; @@ -332,7 +332,7 @@ void CStarCamera::setViewportAngle(const FPoint &angles) { subX = m1.fn1(); subX = subX.fn4(subY); - FMatrix m3 = _viewport.getMatrix(); + FMatrix m3 = _viewport.getOrientation(); tempV2 = _viewport._position; multV._x = m3._row1._x * 1000000.0; multV._y = m3._row1._y * 1000000.0; @@ -466,12 +466,12 @@ void CStarCamera::deleteHandler() { void CStarCamera::fn1(CViewport *viewport, const FVector &v) { if (_matrixRow == 1) { - FMatrix m1 = viewport->getMatrix(); - FMatrix m2 = _viewport.getMatrix(); - FVector v1 = viewport->_position; - FVector v2 = _viewport._position; + FMatrix newOr = viewport->getOrientation(); + FMatrix oldOr = _viewport.getOrientation(); + FVector newPos = viewport->_position; + FVector oldPos = _viewport._position; - _mover->proc8(v2, v1, m2, m1); + _mover->proc8(oldPos, newPos, oldOr, newOr); CStarVector *sv = new CStarVector(this, v); _mover->setVector(sv); } @@ -491,7 +491,7 @@ void CStarCamera::fn2(FVector v1, FVector v2, FVector v3) { v3.normalize(); tempV.normalize(); - FMatrix matrix = _viewport.getMatrix(); + FMatrix matrix = _viewport.getOrientation(); const FVector &pos = _viewport._position; _mover->proc10(v3, tempV, pos, matrix); @@ -521,7 +521,7 @@ void CStarCamera::fn3(CViewport *viewport, const FVector &v) { m4._row3 = DVector(0.0, 0.0, 0.0); m4._row4 = DVector(0.0, 0.0, 0.0); - FMatrix m5 = viewport->getMatrix(); + FMatrix m5 = viewport->getOrientation(); DVector tempV3, tempV4; tempV4._x = m5._row1._x * 1000000.0 + m4._row1._x; tempV4._y = m5._row1._y * 1000000.0 + m4._row1._y; @@ -595,7 +595,7 @@ void CStarCamera::fn3(CViewport *viewport, const FVector &v) { m5.set(m4._row3, m4._row2, m4._row4); FVector tempV6 = m4._row1; - FMatrix m6 = _viewport.getMatrix(); + FMatrix m6 = _viewport.getOrientation(); _mover->proc8(_viewport._position, tempV6, m6, m5); CStarVector *sv = new CStarVector(this, v); diff --git a/engines/titanic/star_control/star_control_sub22.cpp b/engines/titanic/star_control/star_control_sub22.cpp index 3e88a32f25..c0b0c10867 100644 --- a/engines/titanic/star_control/star_control_sub22.cpp +++ b/engines/titanic/star_control/star_control_sub22.cpp @@ -29,11 +29,12 @@ CStarControlSub22::CStarControlSub22(const CNavigationInfo *src) : CCameraMover(src) { } -void CStarControlSub22::proc8(FVector &v1, FVector &v2, FMatrix &m1, FMatrix &m2) { +void CStarControlSub22::proc8(FVector &oldPos, FVector &newPos, + FMatrix &oldOrientation, FMatrix &newOrientation) { if (isLocked()) decLockCount(); - _sub27.proc2(v1, v2, m1, m2); + _sub27.proc2(oldPos, newPos, oldOrientation, newOrientation); incLockCount(); } diff --git a/engines/titanic/star_control/star_control_sub22.h b/engines/titanic/star_control/star_control_sub22.h index dbb644bc01..8907cdba9c 100644 --- a/engines/titanic/star_control/star_control_sub22.h +++ b/engines/titanic/star_control/star_control_sub22.h @@ -35,7 +35,8 @@ public: CStarControlSub22(const CNavigationInfo *src); virtual ~CStarControlSub22() {} - virtual void proc8(FVector &v1, FVector &v2, FMatrix &m1, FMatrix &m2); + virtual void proc8(FVector &oldPos, FVector &newPos, + FMatrix &oldOrientation, FMatrix &newOrientation); /** * Update the passed position and orientation matrix diff --git a/engines/titanic/star_control/star_control_sub23.h b/engines/titanic/star_control/star_control_sub23.h index 8016d6f56f..00adb4332a 100644 --- a/engines/titanic/star_control/star_control_sub23.h +++ b/engines/titanic/star_control/star_control_sub23.h @@ -53,10 +53,11 @@ public: CStarControlSub23(); virtual ~CStarControlSub23() {} - virtual void proc2(FVector &v1, FVector &v2, FMatrix &m1, FMatrix &m2); + virtual void proc2(FVector &oldPos, FVector &newPos, + FMatrix &oldOrientation, FMatrix &newOrientation); virtual void proc3(const FMatrix &m1, const FMatrix &m2); virtual void setPath(const FVector &srcV, const FVector &destV, const FMatrix &srcM); - virtual int proc5(CErrorCode &errorCode, FVector &v, FMatrix &m) { return 2; } + virtual int proc5(CErrorCode &errorCode, FVector &pos, FMatrix &orientation) { return 2; } virtual void proc6(int val1, int val2, float val); bool isActive() const { return _active; } diff --git a/engines/titanic/star_control/star_control_sub27.cpp b/engines/titanic/star_control/star_control_sub27.cpp index cedaf9f421..d48333f125 100644 --- a/engines/titanic/star_control/star_control_sub27.cpp +++ b/engines/titanic/star_control/star_control_sub27.cpp @@ -25,8 +25,9 @@ namespace Titanic { -void CStarControlSub27::proc2(FVector &v1, FVector &v2, FMatrix &m1, FMatrix &m2) { - CStarControlSub23::proc2(v1, v2, m1, m2); +void CStarControlSub27::proc2(FVector &oldPos, FVector &newPos, + FMatrix &oldOrientation, FMatrix &newOrientation) { + CStarControlSub23::proc2(oldPos, newPos, oldOrientation, newOrientation); double factor = _field24; if (_field24 > 0.0) { @@ -35,8 +36,8 @@ void CStarControlSub27::proc2(FVector &v1, FVector &v2, FMatrix &m1, FMatrix &m2 proc6(120, 4, _field24); } - if (m1 != m2) { - _sub25.fn1(m1, m2); + if (newPos != oldPos) { + _sub25.fn1(oldOrientation, newOrientation); _moveDelayCtr = 0.0; if (_field4C == 0) { @@ -49,33 +50,33 @@ void CStarControlSub27::proc2(FVector &v1, FVector &v2, FMatrix &m1, FMatrix &m2 } } -int CStarControlSub27::proc5(CErrorCode &errorCode, FVector &v, FMatrix &m) { +int CStarControlSub27::proc5(CErrorCode &errorCode, FVector &pos, FMatrix &orientation) { if (!_active) return 0; _moveDelayCtr += _moveDelayInc; - _sub25.fn2(_moveDelayCtr, m); + _sub25.fn2(_moveDelayCtr, orientation); errorCode.set(); if (_field40 >= 0) { double powVal = _powers[_field40]; - v += _posDelta * powVal; - getVectorOnPath(v); + pos += _posDelta * powVal; + getVectorOnPath(pos); --_field40; errorCode.set(); return 1; } else if (_field44 > 0) { - v += _posDelta * _field38; - getVectorOnPath(v); + pos += _posDelta * _field38; + getVectorOnPath(pos); --_field44; errorCode.set(); return 1; } else if (_field48 >= 0) { double powVal = _powers[31 - _field48]; - v += _posDelta * powVal; - getVectorOnPath(v); + pos += _posDelta * powVal; + getVectorOnPath(pos); --_field48; errorCode.set(); @@ -86,16 +87,16 @@ int CStarControlSub27::proc5(CErrorCode &errorCode, FVector &v, FMatrix &m) { } } -void CStarControlSub27::getVectorOnPath(FVector &v) const { - double distance = _posDelta.getDistance(v); +void CStarControlSub27::getVectorOnPath(FVector &pos) const { + double distance = _posDelta.getDistance(pos); distance /= _field24; if (distance <= 0.0) { - v = _srcPos; + pos = _srcPos; } else if (distance >= 1.0) { - v = _destPos; + pos = _destPos; } else { - v = FVector( + pos = FVector( (_destPos._x - _srcPos._x) * distance + _srcPos._x, (_destPos._y - _srcPos._y) * distance + _srcPos._y, (_destPos._z - _srcPos._z) * distance + _srcPos._z diff --git a/engines/titanic/star_control/star_control_sub27.h b/engines/titanic/star_control/star_control_sub27.h index 929544b815..311cf786c0 100644 --- a/engines/titanic/star_control/star_control_sub27.h +++ b/engines/titanic/star_control/star_control_sub27.h @@ -34,12 +34,13 @@ private: * returns a vector on the proper point along the path to the destination * with that same distance from the source. */ - void getVectorOnPath(FVector &v) const; + void getVectorOnPath(FVector &pos) const; public: virtual ~CStarControlSub27() {} - virtual void proc2(FVector &v1, FVector &v2, FMatrix &m1, FMatrix &m2); - virtual int proc5(CErrorCode &errorCode, FVector &v, FMatrix &m); + virtual void proc2(FVector &oldPos, FVector &newPos, + FMatrix &oldOrientation, FMatrix &newOrientation); + virtual int proc5(CErrorCode &errorCode, FVector &pos, FMatrix &orientation); }; } // End of namespace Titanic diff --git a/engines/titanic/star_control/viewport.cpp b/engines/titanic/star_control/viewport.cpp index 535f2f19fc..c312f5769f 100644 --- a/engines/titanic/star_control/viewport.cpp +++ b/engines/titanic/star_control/viewport.cpp @@ -39,7 +39,7 @@ CViewport::CViewport() { } CViewport::CViewport(CViewport *src) : - _matrix(src->_matrix), _currentPose(src->_currentPose), _rawPose(src->_rawPose) { + _orientation(src->_orientation), _currentPose(src->_currentPose), _rawPose(src->_rawPose) { _position = src->_position; _fieldC = src->_fieldC; _field10 = src->_field10; @@ -79,7 +79,7 @@ void CViewport::load(SimpleFile *file, int param) { for (int idx = 0; idx < 5; ++idx) _valArray[idx] = file->readFloat(); - _matrix.load(file, param); + _orientation.load(file, param); _flag = false; } @@ -97,7 +97,7 @@ void CViewport::save(SimpleFile *file, int indent) { for (int idx = 0; idx < 5; ++idx) file->writeFloatLine(_valArray[idx], indent); - _matrix.save(file, indent); + _orientation.save(file, indent); } void CViewport::setPosition(const FVector &v) { @@ -112,12 +112,12 @@ void CViewport::setPosition(const FPose &pose) { } void CViewport::setOrientation(const FMatrix &m) { - _matrix = m; + _orientation = m; _flag = false; } void CViewport::fn11(const FVector &v) { - _matrix.fn1(v); + _orientation.fn1(v); _flag = false; } @@ -146,7 +146,7 @@ void CViewport::set1C(double v) { } void CViewport::fn12() { - _matrix.identity(); + _orientation.identity(); FPose m1(X_AXIS, g_vm->getRandomNumber(359)); FPose m2(Y_AXIS, g_vm->getRandomNumber(359)); @@ -156,7 +156,7 @@ void CViewport::fn12() { FPose s2(s1, m3); m1.copyFrom(s2); - _matrix.fn2(m1); + _orientation.fn2(m1); _flag = false; } @@ -174,14 +174,14 @@ void CViewport::fn13(StarMode mode, double val) { } void CViewport::reposition(double factor) { - _position._x = _matrix._row3._x * factor + _position._x; - _position._y = _matrix._row3._y * factor + _position._y; - _position._z = _matrix._row3._z * factor + _position._z; + _position._x = _orientation._row3._x * factor + _position._x; + _position._y = _orientation._row3._y * factor + _position._y; + _position._z = _orientation._row3._z * factor + _position._z; _flag = false; } void CViewport::fn15(const FMatrix &matrix) { - _matrix.fn3(matrix); + _orientation.fn3(matrix); _flag = false; } @@ -246,7 +246,7 @@ void CViewport::fn19(double *v1, double *v2, double *v3, double *v4) { void CViewport::reset() { const double FACTOR = 2 * M_PI / 360.0; - _rawPose.copyFrom(_matrix); + _rawPose.copyFrom(_orientation); _rawPose._vector = _position; _currentPose = _rawPose.fn4(); @@ -257,8 +257,8 @@ void CViewport::reset() { _flag = true; } -const FMatrix &CViewport::getMatrix() const { - return _matrix; +const FMatrix &CViewport::getOrientation() const { + return _orientation; } } // End of namespace Titanic diff --git a/engines/titanic/star_control/viewport.h b/engines/titanic/star_control/viewport.h index f0e6eab814..41dfb740f2 100644 --- a/engines/titanic/star_control/viewport.h +++ b/engines/titanic/star_control/viewport.h @@ -41,7 +41,7 @@ private: double _field1C; int _width; int _height; - FMatrix _matrix; + FMatrix _orientation; FPose _currentPose; FPose _rawPose; FPoint _center; @@ -102,9 +102,9 @@ public: void fn19(double *v1, double *v2, double *v3, double *v4); /** - * Returns the instance's matrix + * Returns the viewport's orientation */ - const FMatrix &getMatrix() const; + const FMatrix &getOrientation() const; void setC(double v); void set10(double v); |