From b67bca20b5db7f3d6473341efd7fabfa6532f465 Mon Sep 17 00:00:00 2001 From: Peter Kohaut Date: Sat, 10 Sep 2016 18:16:17 +0200 Subject: BLADERUNNER: Pull in changes from madmoose --- engines/bladerunner/slice_renderer.cpp | 49 +++++++++++++++------------------- 1 file changed, 21 insertions(+), 28 deletions(-) (limited to 'engines/bladerunner/slice_renderer.cpp') diff --git a/engines/bladerunner/slice_renderer.cpp b/engines/bladerunner/slice_renderer.cpp index 389d818e6f..581bed2e22 100644 --- a/engines/bladerunner/slice_renderer.cpp +++ b/engines/bladerunner/slice_renderer.cpp @@ -23,10 +23,9 @@ #include "bladerunner/slice_renderer.h" #include "bladerunner/bladerunner.h" -#include "bladerunner/slice_animations.h" #include "bladerunner/lights.h" -#include "bladerunner/scene.h" -#include "bladerunner/set.h" +#include "bladerunner/set_effects.h" +#include "bladerunner/slice_animations.h" #include "common/debug.h" #include "common/memstream.h" @@ -54,10 +53,9 @@ void dump(const char *str, Matrix4x3 m) { } #endif - SliceRenderer::SliceRenderer(BladeRunnerEngine* vm) { _vm = vm; - int i; + int i; for (i = 0; i < 942; i++) { // yes, its going just to 942 and not 997 _animationsShadowEnabled[i] = true; @@ -67,10 +65,18 @@ SliceRenderer::SliceRenderer(BladeRunnerEngine* vm) { SliceRenderer::~SliceRenderer() { } -void SliceRenderer::setView(View *view) { +void SliceRenderer::setView(const View &view) { _view = view; } +void SliceRenderer::setLights(Lights* lights){ + _lights = lights; +} + +void SliceRenderer::setSetEffects(SetEffects* setEffects){ + _setEffects = setEffects; +} + void SliceRenderer::setupFrame(int animation, int frame, Vector3 position, float facing, float scale) { _animation = animation; _frame = frame; @@ -97,7 +103,7 @@ void SliceRenderer::setupFrame(int animation, int frame, Vector3 position, float Matrix3x2 SliceRenderer::calculateFacingRotationMatrix() { assert(_sliceFramePtr); - Matrix4x3 viewMatrix = _view->_sliceViewMatrix; + Matrix4x3 viewMatrix = _view._sliceViewMatrix; Vector3 viewPos = viewMatrix * _position; float dir = atan2f(viewPos.x, viewPos.z) + _facing; float s = sinf(dir); @@ -120,7 +126,7 @@ void SliceRenderer::calculateBoundingRect() { _minY = 0.0f; _maxY = 0.0f; - Matrix4x3 viewMatrix = _view->_sliceViewMatrix; + Matrix4x3 viewMatrix = _view._sliceViewMatrix; Vector3 frameBottom = Vector3(0.0f, 0.0f, _frameBottomZ); Vector3 frameTop = Vector3(0.0f, 0.0f, _frameBottomZ + _frameSliceCount * _frameSliceHeight); @@ -135,7 +141,7 @@ void SliceRenderer::calculateBoundingRect() { Matrix3x2 facingRotation = calculateFacingRotationMatrix(); - Matrix3x2 m4(_view->_viewportDistance / bottom.z, 0.0f, 0.0f, + Matrix3x2 m4(_view._viewportDistance / bottom.z, 0.0f, 0.0f, 0.0f, 25.5f, 0.0f); Matrix3x2 m2(_frameFront.x, 0.0f, _framePos.x, @@ -143,13 +149,13 @@ void SliceRenderer::calculateBoundingRect() { _field_109E = m4 * (facingRotation * m2); - Vector4 B6(_view->_viewportHalfWidth + top.x / top.z * _view->_viewportDistance, - _view->_viewportHalfHeight + top.y / top.z * _view->_viewportDistance, + Vector4 B6(_view._viewportHalfWidth + top.x / top.z * _view._viewportDistance, + _view._viewportHalfHeight + top.y / top.z * _view._viewportDistance, 1.0f / top.z, _frameSliceCount * (1.0f / top.z)); - Vector4 C2(_view->_viewportHalfWidth + bottom.x / bottom.z * _view->_viewportDistance, - _view->_viewportHalfHeight + bottom.y / bottom.z * _view->_viewportDistance, + Vector4 C2(_view._viewportHalfWidth + bottom.x / bottom.z * _view._viewportDistance, + _view._viewportHalfHeight + bottom.y / bottom.z * _view._viewportDistance, 1.0f / bottom.z, 0.0f); @@ -337,9 +343,6 @@ void setupLookupTable(int t[256], int inc) { void SliceRenderer::drawFrame(Graphics::Surface &surface, uint16 *zbuffer) { assert(_sliceFramePtr); - assert(_lights); - assert(_setEffects); - assert(_view); SliceLineIterator sliceLineIterator; sliceLineIterator.setup( @@ -349,9 +352,6 @@ void SliceRenderer::drawFrame(Graphics::Surface &surface, uint16 *zbuffer) { _field_109E // 3x2 matrix ); - _lights->setupFrame(_view->_frame); - _setEffects->setupFrame(_view->_frame); - setupLookupTable(_t1, sliceLineIterator._field_00[0][0]); setupLookupTable(_t2, sliceLineIterator._field_00[0][1]); setupLookupTable(_t4, sliceLineIterator._field_00[1][0]); @@ -426,17 +426,10 @@ void SliceRenderer::drawSlice(int slice, uint16 *frameLinePtr, uint16 *zbufLineP } } -void SliceRenderer::setLights(Lights* lights){ - _lights = lights; -} - -void SliceRenderer::setSetEffects(SetEffects* setEffects){ - _setEffects = setEffects; -} - void SliceRenderer::preload(int animationId) { int i; - for (i = 0; i < _vm->_sliceAnimations->getNumberOfFrames(animationId); i++) + int frameCount = _vm->_sliceAnimations->getFrameCount(animationId); + for (i = 0; i < frameCount; i++) _vm->_sliceAnimations->getFramePtr(animationId, i); } -- cgit v1.2.3