aboutsummaryrefslogtreecommitdiff
path: root/engines/bladerunner/view.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/bladerunner/view.cpp')
-rw-r--r--engines/bladerunner/view.cpp19
1 files changed, 7 insertions, 12 deletions
diff --git a/engines/bladerunner/view.cpp b/engines/bladerunner/view.cpp
index d304b92bb1..72c070ecc0 100644
--- a/engines/bladerunner/view.cpp
+++ b/engines/bladerunner/view.cpp
@@ -31,8 +31,9 @@ bool View::readVqa(Common::ReadStream *stream) {
_frame = stream->readUint32LE();
float d[12];
- for (int i = 0; i != 12; ++i)
+ for (int i = 0; i != 12; ++i) {
d[i] = stream->readFloatLE();
+ }
_frameViewMatrix = Matrix4x3(d);
@@ -54,17 +55,11 @@ void View::setFovX(float fovX) {
}
void View::calculateSliceViewMatrix() {
- Matrix4x3 m = _frameViewMatrix;
-
- m = m * rotationMatrixX(float(M_PI) / 2.0f);
-
- Matrix4x3 a(-1.0f, 0.0f, 0.0f, 0.0f,
- 0.0f, -1.0f, 0.0f, 0.0f,
- 0.0f, 0.0f, 1.0f, 0.0f);
-
- m = a * m;
-
- _sliceViewMatrix = m;
+ Matrix4x3 mRotation = rotationMatrixX(float(M_PI) / 2.0f);
+ Matrix4x3 mInvert(-1.0f, 0.0f, 0.0f, 0.0f,
+ 0.0f, -1.0f, 0.0f, 0.0f,
+ 0.0f, 0.0f, 1.0f, 0.0f);
+ _sliceViewMatrix = mInvert * (_frameViewMatrix * mRotation);
}
void View::calculateCameraPosition() {