diff options
author | Peter Kohaut | 2015-09-13 01:48:13 +0200 |
---|---|---|
committer | Eugene Sandulenko | 2016-09-29 22:33:40 +0200 |
commit | 6672e443a870963354ee43298c75164d382a5636 (patch) | |
tree | 0cee43adb6ac77aa467700f3756668c456bb9af6 /engines/bladerunner/light.cpp | |
parent | a4ba6091316f8f50ea40d4dfd42bd26d419b1206 (diff) | |
download | scummvm-rg350-6672e443a870963354ee43298c75164d382a5636.tar.gz scummvm-rg350-6672e443a870963354ee43298c75164d382a5636.tar.bz2 scummvm-rg350-6672e443a870963354ee43298c75164d382a5636.zip |
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...
Diffstat (limited to 'engines/bladerunner/light.cpp')
-rw-r--r-- | engines/bladerunner/light.cpp | 84 |
1 files changed, 84 insertions, 0 deletions
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 |