diff options
Diffstat (limited to 'engines/bladerunner/view.cpp')
-rw-r--r-- | engines/bladerunner/view.cpp | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/engines/bladerunner/view.cpp b/engines/bladerunner/view.cpp index 11cd99c9fc..d304b92bb1 100644 --- a/engines/bladerunner/view.cpp +++ b/engines/bladerunner/view.cpp @@ -48,10 +48,9 @@ bool View::readVqa(Common::ReadStream *stream) { void View::setFovX(float fovX) { _fovX = fovX; - _viewportHalfWidth = 320.0f; - _viewportHalfHeight = 240.0f; - - _viewportDistance = 320.0f / tanf(_fovX / 2.0f); + _viewportPosition.x = 320.0f; + _viewportPosition.y = 240.0f; + _viewportPosition.z = 320.0f / tanf(_fovX / 2.0f); } void View::calculateSliceViewMatrix() { @@ -72,15 +71,15 @@ void View::calculateCameraPosition() { Matrix4x3 invertedMatrix = invertMatrix(_sliceViewMatrix); _cameraPosition.x = invertedMatrix(0, 3); - _cameraPosition.z = invertedMatrix(1, 3); // this is not a bug, it Z & Y are inverted in original source - _cameraPosition.y = invertedMatrix(2, 3); + _cameraPosition.y = invertedMatrix(1, 3); + _cameraPosition.z = invertedMatrix(2, 3); } Vector3 View::calculateScreenPosition(Vector3 worldPosition) { Vector3 viewPosition = _frameViewMatrix * worldPosition; return Vector3( - this->_viewportHalfWidth - viewPosition.x / viewPosition.z * _viewportDistance, - this->_viewportHalfHeight - viewPosition.y / viewPosition.z * _viewportDistance, + _viewportPosition.x - viewPosition.x / viewPosition.z * _viewportPosition.z, + _viewportPosition.y - viewPosition.y / viewPosition.z * _viewportPosition.z, viewPosition.z ); } |