From 4fb9bfc866028dcd343edf8e41c92fcaf760eaed Mon Sep 17 00:00:00 2001 From: Giulio Camuffo Date: Tue, 31 May 2011 19:27:01 +0200 Subject: [PATCH] GRIM: Reset the lights when setting a new scene. Fix #193 --- engines/grim/grim.cpp | 1 + engines/grim/scene.cpp | 4 ++++ engines/grim/scene.h | 1 + 3 files changed, 6 insertions(+) diff --git a/engines/grim/grim.cpp b/engines/grim/grim.cpp index 9107779f9ba..13b0329b055 100644 --- a/engines/grim/grim.cpp +++ b/engines/grim/grim.cpp @@ -1480,6 +1480,7 @@ void GrimEngine::setScene(Scene *scene) { Scene *lastScene = _currScene; _currScene = scene; _currScene->setSoundParameters(20, 127); + _currScene->setLightsDirty(); // should delete the old scene after setting the new one if (lastScene && !lastScene->_locked) { removeScene(lastScene); diff --git a/engines/grim/scene.cpp b/engines/grim/scene.cpp index fa4038c3b51..dfd1bbc3df4 100644 --- a/engines/grim/scene.cpp +++ b/engines/grim/scene.cpp @@ -571,6 +571,10 @@ ObjectState *Scene::findState(const char *filename) { return NULL; } +void Scene::setLightsDirty() { + _lightsConfigured = false; +} + void Scene::setLightIntensity(const char *light, float intensity) { for (int i = 0; i < _numLights; ++i) { Light &l = _lights[i]; diff --git a/engines/grim/scene.h b/engines/grim/scene.h index 8d58caa1583..91446e89626 100644 --- a/engines/grim/scene.h +++ b/engines/grim/scene.h @@ -71,6 +71,7 @@ public: _enableLights = state; _lightsConfigured = false; } + void setLightsDirty(); void setLightIntensity(const char *light, float intensity); void setLightIntensity(int light, float intensity); void setLightPosition(const char *light, const Graphics::Vector3d &pos);