1
0
Fork 1
mirror of https://github.com/TES3MP/openmw-tes3mp.git synced 2025-04-02 00:36:42 +00:00

Merge remote-tracking branch 'kolek/thirdpersonzoom'

This commit is contained in:
Marc Zinnschlag 2013-07-20 18:29:59 +02:00
commit a8168c58c2
6 changed files with 19 additions and 1 deletions

View file

@ -327,6 +327,7 @@ namespace MWBase
virtual void togglePlayerLooking(bool enable) = 0; virtual void togglePlayerLooking(bool enable) = 0;
virtual void changeVanityModeScale(float factor) = 0; virtual void changeVanityModeScale(float factor) = 0;
virtual bool vanityRotateCamera(float * rot) = 0; virtual bool vanityRotateCamera(float * rot) = 0;
virtual void setCameraDistance(float dist, bool adjust = false, bool override = true)=0;
virtual void setupPlayer() = 0; virtual void setupPlayer() = 0;
virtual void renderPlayer() = 0; virtual void renderPlayer() = 0;

View file

@ -588,7 +588,10 @@ namespace MWInput
} }
if (arg.zrel) if (arg.zrel)
{
MWBase::Environment::get().getWorld()->changeVanityModeScale(arg.zrel); MWBase::Environment::get().getWorld()->changeVanityModeScale(arg.zrel);
MWBase::Environment::get().getWorld()->setCameraDistance(arg.zrel, true, true);
}
} }
return true; return true;

View file

@ -327,7 +327,6 @@ void RenderingManager::update (float duration, bool paused)
Ogre::Vector3 playerPos(_playerPos[0], _playerPos[1], _playerPos[2]); Ogre::Vector3 playerPos(_playerPos[0], _playerPos[1], _playerPos[2]);
Ogre::Vector3 orig, dest; Ogre::Vector3 orig, dest;
mCamera->setCameraDistance();
if(!mCamera->getPosition(orig, dest)) if(!mCamera->getPosition(orig, dest))
{ {
orig.z += mCamera->getHeight() * mRootNode->getScale().z; orig.z += mCamera->getHeight() * mRootNode->getScale().z;
@ -902,6 +901,14 @@ bool RenderingManager::vanityRotateCamera(const float *rot)
return true; return true;
} }
void RenderingManager::setCameraDistance(float dist, bool adjust, bool override)
{
if(!mCamera->isVanityOrPreviewModeEnabled() && !mCamera->isFirstPerson())
{
mCamera->setCameraDistance(-dist / 120.f * 10, adjust, override);
}
}
void RenderingManager::getInteriorMapPosition (Ogre::Vector2 position, float& nX, float& nY, int &x, int& y) void RenderingManager::getInteriorMapPosition (Ogre::Vector2 position, float& nX, float& nY, int &x, int& y)
{ {
return mLocalMap->getInteriorMapPosition (position, nX, nY, x, y); return mLocalMap->getInteriorMapPosition (position, nX, nY, x, y);

View file

@ -86,6 +86,7 @@ public:
void resetCamera(); void resetCamera();
bool vanityRotateCamera(const float *rot); bool vanityRotateCamera(const float *rot);
void setCameraDistance(float dist, bool adjust = false, bool override = true);
void setupPlayer(const MWWorld::Ptr &ptr); void setupPlayer(const MWWorld::Ptr &ptr);
void renderPlayer(const MWWorld::Ptr &ptr); void renderPlayer(const MWWorld::Ptr &ptr);

View file

@ -1576,6 +1576,11 @@ namespace MWWorld
return mRendering->vanityRotateCamera(rot); return mRendering->vanityRotateCamera(rot);
} }
void World::setCameraDistance(float dist, bool adjust, bool override)
{
return mRendering->setCameraDistance(dist, adjust, override);;
}
void World::setupPlayer() void World::setupPlayer()
{ {
const ESM::NPC *player = mStore.get<ESM::NPC>().find("player"); const ESM::NPC *player = mStore.get<ESM::NPC>().find("player");

View file

@ -376,6 +376,7 @@ namespace MWWorld
} }
virtual bool vanityRotateCamera(float * rot); virtual bool vanityRotateCamera(float * rot);
virtual void setCameraDistance(float dist, bool adjust = false, bool override = true);
virtual void setupPlayer(); virtual void setupPlayer();
virtual void renderPlayer(); virtual void renderPlayer();