1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2025-02-03 18:45:34 +00:00

restored global map

This commit is contained in:
scrawl 2013-02-05 00:39:56 +01:00
parent 35b5fdab5d
commit a29919d02d
2 changed files with 18 additions and 40 deletions

View file

@ -191,6 +191,20 @@ void LocalMap::render(const float x, const float y,
mCellCamera->setFarClipDistance(0); // infinite mCellCamera->setFarClipDistance(0); // infinite
mCellCamera->setOrthoWindow(xw, yw); mCellCamera->setOrthoWindow(xw, yw);
mCellCamera->setPosition(Vector3(x, zhigh+100000, y));
// disable fog (only necessary for fixed function, the shader based
// materials already do this through local_map material configuration)
float oldFogStart = mRendering->getScene()->getFogStart();
float oldFogEnd = mRendering->getScene()->getFogEnd();
Ogre::ColourValue oldFogColour = mRendering->getScene()->getFogColour();
mRendering->getScene()->setFog(FOG_NONE);
// set up lighting
Ogre::ColourValue oldAmbient = mRendering->getScene()->getAmbientLight();
mRendering->getScene()->setAmbientLight(Ogre::ColourValue(0.3, 0.3, 0.3));
mRenderingManager->disableLights(true);
mLight->setVisible(true);
TexturePtr tex; TexturePtr tex;
// try loading from memory // try loading from memory
@ -216,8 +230,6 @@ void LocalMap::render(const float x, const float y,
RenderTarget* rtt = tex->getBuffer()->getRenderTarget(); RenderTarget* rtt = tex->getBuffer()->getRenderTarget();
mCameraSettings[rtt] = Vector3(x, zhigh+100000, y);
rtt->setAutoUpdated(false); rtt->setAutoUpdated(false);
Viewport* vp = rtt->addViewport(mCellCamera); Viewport* vp = rtt->addViewport(mCellCamera);
vp->setOverlaysEnabled(false); vp->setOverlaysEnabled(false);
@ -228,8 +240,7 @@ void LocalMap::render(const float x, const float y,
// use fallback techniques without shadows and without mrt // use fallback techniques without shadows and without mrt
vp->setMaterialScheme("local_map"); vp->setMaterialScheme("local_map");
rtt->setAutoUpdated(true); rtt->update();
rtt->addListener(this);
// create "fog of war" texture // create "fog of war" texture
TexturePtr tex2 = TextureManager::getSingleton().createManual( TexturePtr tex2 = TextureManager::getSingleton().createManual(
@ -260,36 +271,12 @@ void LocalMap::render(const float x, const float y,
//rtt->writeContentsToFile("./" + texture + ".jpg"); //rtt->writeContentsToFile("./" + texture + ".jpg");
} }
} }
}
void LocalMap::preRenderTargetUpdate(const Ogre::RenderTargetEvent& evt)
{
// disable fog (only necessary for fixed function, the shader based
// materials already do this through local_map material configuration)
mOldFogStart = mRendering->getScene()->getFogStart();
mOldFogEnd = mRendering->getScene()->getFogEnd();
mOldFogClr = mRendering->getScene()->getFogColour();
mRendering->getScene()->setFog(FOG_NONE);
mOldAmbient = mRendering->getScene()->getAmbientLight();
mRendering->getScene()->setAmbientLight(Ogre::ColourValue(0.3, 0.3, 0.3));
mCellCamera->setPosition(mCameraSettings[evt.source]);
mRenderingManager->disableLights(true);
mLight->setVisible(true);
evt.source->setAutoUpdated(false);
}
void LocalMap::postRenderTargetUpdate(const Ogre::RenderTargetEvent& evt)
{
mRenderingManager->enableLights(true); mRenderingManager->enableLights(true);
mLight->setVisible(false); mLight->setVisible(false);
evt.source->removeListener(this);
// re-enable fog // re-enable fog
mRendering->getScene()->setFog(FOG_LINEAR, mOldFogClr, 0, mOldFogStart, mOldFogEnd); mRendering->getScene()->setFog(FOG_LINEAR, oldFogColour, 0, oldFogStart, oldFogEnd);
mRendering->getScene()->setAmbientLight(mOldAmbient); mRendering->getScene()->setAmbientLight(oldAmbient);
} }
void LocalMap::getInteriorMapPosition (Ogre::Vector2 pos, float& nX, float& nY, int& x, int& y) void LocalMap::getInteriorMapPosition (Ogre::Vector2 pos, float& nX, float& nY, int& x, int& y)

View file

@ -5,7 +5,6 @@
#include <OgreAxisAlignedBox.h> #include <OgreAxisAlignedBox.h>
#include <OgreColourValue.h> #include <OgreColourValue.h>
#include <OgreRenderTargetListener.h>
namespace MWWorld namespace MWWorld
{ {
@ -19,7 +18,7 @@ namespace MWRender
/// ///
/// \brief Local map rendering /// \brief Local map rendering
/// ///
class LocalMap : public Ogre::RenderTargetListener class LocalMap
{ {
public: public:
LocalMap(OEngine::Render::OgreRenderer*, MWRender::RenderingManager* rendering); LocalMap(OEngine::Render::OgreRenderer*, MWRender::RenderingManager* rendering);
@ -71,9 +70,6 @@ namespace MWRender
*/ */
bool isPositionExplored (float nX, float nY, int x, int y, bool interior); bool isPositionExplored (float nX, float nY, int x, int y, bool interior);
void preRenderTargetUpdate(const Ogre::RenderTargetEvent& evt);
void postRenderTargetUpdate(const Ogre::RenderTargetEvent& evt);
private: private:
OEngine::Render::OgreRenderer* mRendering; OEngine::Render::OgreRenderer* mRendering;
MWRender::RenderingManager* mRenderingManager; MWRender::RenderingManager* mRenderingManager;
@ -122,11 +118,6 @@ namespace MWRender
Ogre::AxisAlignedBox mBounds; Ogre::AxisAlignedBox mBounds;
std::string mInteriorName; std::string mInteriorName;
Ogre::ColourValue mOldFogClr;
Ogre::ColourValue mOldAmbient;
float mOldFogStart;
float mOldFogEnd;
// maps texture name to according camera settings // maps texture name to according camera settings
std::map<Ogre::RenderTarget*, Ogre::Vector3> mCameraSettings; std::map<Ogre::RenderTarget*, Ogre::Vector3> mCameraSettings;
}; };