From 6672e443a870963354ee43298c75164d382a5636 Mon Sep 17 00:00:00 2001 From: Peter Kohaut Date: Sun, 13 Sep 2015 01:48:13 +0200 Subject: BLADERUNNER: just basic objects description scene stuff - lightning and effects movement track actor clues db actor walking info moved view from vqa decoder, because its needed elsewhere does not compile, because new files are not in makefile... --- engines/bladerunner/light.cpp | 84 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 engines/bladerunner/light.cpp (limited to 'engines/bladerunner/light.cpp') diff --git a/engines/bladerunner/light.cpp b/engines/bladerunner/light.cpp new file mode 100644 index 0000000000..6bc97f8392 --- /dev/null +++ b/engines/bladerunner/light.cpp @@ -0,0 +1,84 @@ +#include "bladerunner/light.h" + +namespace BladeRunner +{ + Light::Light() + { + } + + Light::~Light() + { + } + + void Light::read(Common::ReadStream* stream, int framesCount, int frame, int animated) + { + _framesCount = framesCount; + _animated = animated; + + int size = stream->readUint32LE(); + size = size - 32; + + stream->read(_name, 20); + + _animatedParameters = stream->readUint32LE(); + + _animationData = new float[size / sizeof(float)]; + stream->read(_animationData, size); + + _m11ptr = _animationData; + _m12ptr = _m11ptr + (_animatedParameters & 0x1 ? framesCount : 1); + _m13ptr = _m12ptr + (_animatedParameters & 0x2 ? framesCount : 1); + _m14ptr = _m13ptr + (_animatedParameters & 0x4 ? framesCount : 1); + _m21ptr = _m14ptr + (_animatedParameters & 0x8 ? framesCount : 1); + _m22ptr = _m21ptr + (_animatedParameters & 0x10 ? framesCount : 1); + _m23ptr = _m22ptr + (_animatedParameters & 0x20 ? framesCount : 1); + _m24ptr = _m23ptr + (_animatedParameters & 0x40 ? framesCount : 1); + _m31ptr = _m24ptr + (_animatedParameters & 0x80 ? framesCount : 1); + _m32ptr = _m31ptr + (_animatedParameters & 0x100 ? framesCount : 1); + _m33ptr = _m32ptr + (_animatedParameters & 0x200 ? framesCount : 1); + _m34ptr = _m33ptr + (_animatedParameters & 0x400 ? framesCount : 1); + _colorRPtr = _m34ptr + (_animatedParameters & 0x800 ? framesCount : 1); + _colorGPtr = _colorRPtr + (_animatedParameters & 0x1000 ? framesCount : 1); + _colorBPtr = _colorGPtr + (_animatedParameters & 0x2000 ? framesCount : 1); + _field16ptr = _colorGPtr + (_animatedParameters & 0x4000 ? framesCount : 1); + _field17ptr = _field16ptr + (_animatedParameters & 0x8000 ? framesCount : 1); + _field18ptr = _field17ptr + (_animatedParameters & 0x10000 ? framesCount : 1); + _field19ptr = _field18ptr + (_animatedParameters & 0x20000 ? framesCount : 1); + + setupFrame(frame); + } + + void Light::readVqa(Common::ReadStream* stream) + { + } + + void Light::setupFrame(int frame) + { + int offset = frame % _framesCount; + _matrix._m[0][0] = (_animatedParameters & 0x1 ? _m11ptr[offset] : *_m11ptr); + _matrix._m[0][1] = (_animatedParameters & 0x2 ? _m12ptr[offset] : *_m12ptr); + _matrix._m[0][2] = (_animatedParameters & 0x4 ? _m13ptr[offset] : *_m13ptr); + _matrix._m[0][3] = (_animatedParameters & 0x8 ? _m14ptr[offset] : *_m14ptr); + _matrix._m[1][0] = (_animatedParameters & 0x10 ? _m21ptr[offset] : *_m21ptr); + _matrix._m[1][1] = (_animatedParameters & 0x20 ? _m22ptr[offset] : *_m22ptr); + _matrix._m[1][2] = (_animatedParameters & 0x40 ? _m23ptr[offset] : *_m23ptr); + _matrix._m[1][3] = (_animatedParameters & 0x80 ? _m24ptr[offset] : *_m24ptr); + _matrix._m[2][0] = (_animatedParameters & 0x100 ? _m31ptr[offset] : *_m31ptr); + _matrix._m[2][1] = (_animatedParameters & 0x200 ? _m32ptr[offset] : *_m32ptr); + _matrix._m[2][2] = (_animatedParameters & 0x400 ? _m33ptr[offset] : *_m33ptr); + _matrix._m[2][3] = (_animatedParameters & 0x800 ? _m34ptr[offset] : *_m34ptr); + _color.r = (_animatedParameters & 0x1000 ? _colorRPtr[offset] : *_colorRPtr); + _color.g = (_animatedParameters & 0x2000 ? _colorGPtr[offset] : *_colorGPtr); + _color.b = (_animatedParameters & 0x4000 ? _colorBPtr[offset] : *_colorBPtr); + _field16 = (_animatedParameters & 0x8000 ? _field16ptr[offset] : *_field16ptr); + _field17 = (_animatedParameters & 0x10000 ? _field17ptr[offset] : *_field17ptr); + _field18 = (_animatedParameters & 0x20000 ? _field18ptr[offset] : *_field18ptr); + _field19 = (_animatedParameters & 0x40000 ? _field19ptr[offset] : *_field19ptr); + + } + + float Light::attenuation(float min, float max, float distance) + { + return 0.0; + } +} \ No newline at end of file -- cgit v1.2.3