aboutsummaryrefslogtreecommitdiff
path: root/engines/bladerunner/view.cpp
diff options
context:
space:
mode:
authorPeter Kohaut2018-03-11 11:41:21 +0100
committerPeter Kohaut2018-03-11 11:54:01 +0100
commitbbe4ef44749038293ba86de3ed001f5ff4ce2145 (patch)
tree30bf2523e118421d853fa928c69fdd24987477bb /engines/bladerunner/view.cpp
parent782d4fbb06d5cb9cd2bae75f085d8c43231c9834 (diff)
downloadscummvm-rg350-bbe4ef44749038293ba86de3ed001f5ff4ce2145.tar.gz
scummvm-rg350-bbe4ef44749038293ba86de3ed001f5ff4ce2145.tar.bz2
scummvm-rg350-bbe4ef44749038293ba86de3ed001f5ff4ce2145.zip
BLADERUNNER: Added shadows
Diffstat (limited to 'engines/bladerunner/view.cpp')
-rw-r--r--engines/bladerunner/view.cpp15
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
);
}