mirror of
https://github.com/OpenMW/openmw.git
synced 2025-01-22 21:53:52 +00:00
fix map positions
This commit is contained in:
parent
a44dfcd2ac
commit
5cc8af0f14
4 changed files with 25 additions and 14 deletions
|
@ -150,7 +150,7 @@ namespace MWGui
|
||||||
if (!mFirstLoad)
|
if (!mFirstLoad)
|
||||||
{
|
{
|
||||||
mBackgroundMaterial->getTechnique(0)->getPass(0)->getTextureUnitState(0)->setTextureName(chain->getCompositor ("gbufferFinalizer")->getTextureInstance ("no_mrt_output", 0)->getName());
|
mBackgroundMaterial->getTechnique(0)->getPass(0)->getTextureUnitState(0)->setTextureName(chain->getCompositor ("gbufferFinalizer")->getTextureInstance ("no_mrt_output", 0)->getName());
|
||||||
//mRectangle->setVisible(true);
|
mRectangle->setVisible(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (unsigned int i = 0; i<chain->getNumCompositors(); ++i)
|
for (unsigned int i = 0; i<chain->getNumCompositors(); ++i)
|
||||||
|
|
|
@ -187,15 +187,6 @@ void LocalMap::render(const float x, const float y,
|
||||||
const float zlow, const float zhigh,
|
const float zlow, const float zhigh,
|
||||||
const float xw, const float yw, const std::string& texture)
|
const float xw, const float yw, const std::string& texture)
|
||||||
{
|
{
|
||||||
// disable fog (only necessary for fixed function, the shader based
|
|
||||||
// materials already do this through local_map material configuration)
|
|
||||||
const float fStart = mRendering->getScene()->getFogStart();
|
|
||||||
const float fEnd = mRendering->getScene()->getFogEnd();
|
|
||||||
const ColourValue& clr = mRendering->getScene()->getFogColour();
|
|
||||||
mRendering->getScene()->setFog(FOG_NONE);
|
|
||||||
|
|
||||||
// make everything visible
|
|
||||||
mCameraNode->setPosition(Vector3(x, zhigh+100000, y));
|
|
||||||
//mCellCamera->setFarClipDistance( (zhigh-zlow) * 1.1 );
|
//mCellCamera->setFarClipDistance( (zhigh-zlow) * 1.1 );
|
||||||
mCellCamera->setFarClipDistance(0); // infinite
|
mCellCamera->setFarClipDistance(0); // infinite
|
||||||
|
|
||||||
|
@ -224,6 +215,9 @@ void LocalMap::render(const float x, const float y,
|
||||||
TU_RENDERTARGET);
|
TU_RENDERTARGET);
|
||||||
|
|
||||||
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);
|
||||||
|
@ -266,13 +260,19 @@ void LocalMap::render(const float x, const float y,
|
||||||
//rtt->writeContentsToFile("./" + texture + ".jpg");
|
//rtt->writeContentsToFile("./" + texture + ".jpg");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// re-enable fog
|
|
||||||
mRendering->getScene()->setFog(FOG_LINEAR, clr, 0, fStart, fEnd);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void LocalMap::preRenderTargetUpdate(const Ogre::RenderTargetEvent& evt)
|
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);
|
||||||
|
|
||||||
|
mCellCamera->setPosition(mCameraSettings[evt.source]);
|
||||||
|
|
||||||
mRenderingManager->disableLights(true);
|
mRenderingManager->disableLights(true);
|
||||||
mLight->setVisible(true);
|
mLight->setVisible(true);
|
||||||
evt.source->setAutoUpdated(false);
|
evt.source->setAutoUpdated(false);
|
||||||
|
@ -283,6 +283,9 @@ void LocalMap::postRenderTargetUpdate(const Ogre::RenderTargetEvent& evt)
|
||||||
mRenderingManager->enableLights(true);
|
mRenderingManager->enableLights(true);
|
||||||
mLight->setVisible(false);
|
mLight->setVisible(false);
|
||||||
evt.source->removeListener(this);
|
evt.source->removeListener(this);
|
||||||
|
|
||||||
|
// re-enable fog
|
||||||
|
mRendering->getScene()->setFog(FOG_LINEAR, mOldFogClr, 0, mOldFogStart, mOldFogEnd);
|
||||||
}
|
}
|
||||||
|
|
||||||
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)
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
#include <openengine/ogre/renderer.hpp>
|
#include <openengine/ogre/renderer.hpp>
|
||||||
|
|
||||||
#include <OgreAxisAlignedBox.h>
|
#include <OgreAxisAlignedBox.h>
|
||||||
|
#include <OgreColourValue.h>
|
||||||
#include <OgreRenderTargetListener.h>
|
#include <OgreRenderTargetListener.h>
|
||||||
|
|
||||||
namespace MWWorld
|
namespace MWWorld
|
||||||
|
@ -120,6 +121,13 @@ namespace MWRender
|
||||||
int mCellX, mCellY;
|
int mCellX, mCellY;
|
||||||
Ogre::AxisAlignedBox mBounds;
|
Ogre::AxisAlignedBox mBounds;
|
||||||
std::string mInteriorName;
|
std::string mInteriorName;
|
||||||
|
|
||||||
|
Ogre::ColourValue mOldFogClr;
|
||||||
|
float mOldFogStart;
|
||||||
|
float mOldFogEnd;
|
||||||
|
|
||||||
|
// maps texture name to according camera settings
|
||||||
|
std::map<Ogre::RenderTarget*, Ogre::Vector3> mCameraSettings;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -401,7 +401,7 @@ void Water::update(float dt, Ogre::Vector3 player)
|
||||||
|
|
||||||
mRendering->getSkyManager ()->setGlareEnabled (!mIsUnderwater);
|
mRendering->getSkyManager ()->setGlareEnabled (!mIsUnderwater);
|
||||||
|
|
||||||
//if (player.y <= mTop)
|
if (player.y <= mTop)
|
||||||
{
|
{
|
||||||
mSimulation->addImpulse(Ogre::Vector2(player.x, player.z));
|
mSimulation->addImpulse(Ogre::Vector2(player.x, player.z));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue