aboutsummaryrefslogtreecommitdiff
path: root/engines/bladerunner/light.cpp
diff options
context:
space:
mode:
authorPeter Kohaut2015-09-13 01:48:13 +0200
committerEugene Sandulenko2016-09-29 22:33:40 +0200
commit6672e443a870963354ee43298c75164d382a5636 (patch)
tree0cee43adb6ac77aa467700f3756668c456bb9af6 /engines/bladerunner/light.cpp
parenta4ba6091316f8f50ea40d4dfd42bd26d419b1206 (diff)
downloadscummvm-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.cpp84
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