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);