From be5555956ced6012bba5937accc9043bfbc425bd Mon Sep 17 00:00:00 2001 From: scrawl Date: Tue, 28 Feb 2012 22:04:44 +0100 Subject: [PATCH] improved composite map, now adapts to the ambient/diffuse light --- apps/openmw/mwrender/renderingmanager.cpp | 8 +++++--- apps/openmw/mwrender/terrain.cpp | 14 ++++++++++++++ apps/openmw/mwrender/terrain.hpp | 3 +++ 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/apps/openmw/mwrender/renderingmanager.cpp b/apps/openmw/mwrender/renderingmanager.cpp index 04ddc2cf8..7fcfc2a8d 100644 --- a/apps/openmw/mwrender/renderingmanager.cpp +++ b/apps/openmw/mwrender/renderingmanager.cpp @@ -232,17 +232,17 @@ void RenderingManager::setAmbientMode() { case 0: - mRendering.getScene()->setAmbientLight(mAmbientColor); + setAmbientColour(mAmbientColor); break; case 1: - mRendering.getScene()->setAmbientLight(0.7f*mAmbientColor + 0.3f*ColourValue(1,1,1)); + setAmbientColour(0.7f*mAmbientColor + 0.3f*ColourValue(1,1,1)); break; case 2: - mRendering.getScene()->setAmbientLight(ColourValue(1,1,1)); + setAmbientColour(ColourValue(1,1,1)); break; } } @@ -297,11 +297,13 @@ void RenderingManager::skipAnimation (const MWWorld::Ptr& ptr) void RenderingManager::setSunColour(const Ogre::ColourValue& colour) { mSun->setDiffuseColour(colour); + mTerrainManager->setDiffuse(colour); } void RenderingManager::setAmbientColour(const Ogre::ColourValue& colour) { mRendering.getScene()->setAmbientLight(colour); + mTerrainManager->setAmbient(colour); } void RenderingManager::sunEnable() diff --git a/apps/openmw/mwrender/terrain.cpp b/apps/openmw/mwrender/terrain.cpp index d5f768428..dd05bf333 100644 --- a/apps/openmw/mwrender/terrain.cpp +++ b/apps/openmw/mwrender/terrain.cpp @@ -73,6 +73,20 @@ namespace MWRender OGRE_DELETE mTerrainGroup; OGRE_DELETE mTerrainGlobals; } + + //---------------------------------------------------------------------------------------------- + + void TerrainManager::setDiffuse(const Ogre::ColourValue& diffuse) + { + mTerrainGlobals->setCompositeMapDiffuse(diffuse); + } + + //---------------------------------------------------------------------------------------------- + + void TerrainManager::setAmbient(const Ogre::ColourValue& ambient) + { + mTerrainGlobals->setCompositeMapAmbient(ambient); + } //---------------------------------------------------------------------------------------------- diff --git a/apps/openmw/mwrender/terrain.hpp b/apps/openmw/mwrender/terrain.hpp index 195741b0f..3f2633ff9 100644 --- a/apps/openmw/mwrender/terrain.hpp +++ b/apps/openmw/mwrender/terrain.hpp @@ -31,6 +31,9 @@ namespace MWRender{ TerrainManager(Ogre::SceneManager*); virtual ~TerrainManager(); + void setDiffuse(const Ogre::ColourValue& diffuse); + void setAmbient(const Ogre::ColourValue& ambient); + void cellAdded(MWWorld::Ptr::CellStore* store); void cellRemoved(MWWorld::Ptr::CellStore* store); private: