mirror of
https://github.com/OpenMW/openmw.git
synced 2025-02-01 12:15:35 +00:00
fix for turning animations playing when in vanity mode
This commit is contained in:
parent
40bb772e34
commit
6ca2b1af74
6 changed files with 31 additions and 2 deletions
|
@ -319,6 +319,7 @@ namespace MWBase
|
||||||
virtual void allowVanityMode(bool allow) = 0;
|
virtual void allowVanityMode(bool allow) = 0;
|
||||||
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 void renderPlayer() = 0;
|
virtual void renderPlayer() = 0;
|
||||||
|
|
||||||
|
|
|
@ -533,8 +533,17 @@ namespace MWInput
|
||||||
float scale = MWBase::Environment::get().getFrameDuration();
|
float scale = MWBase::Environment::get().getFrameDuration();
|
||||||
if(scale <= 0.0f) scale = 1.0f;
|
if(scale <= 0.0f) scale = 1.0f;
|
||||||
|
|
||||||
mPlayer.setYaw(x/scale);
|
float rot[3];
|
||||||
mPlayer.setPitch(-y/scale);
|
rot[0] = -y;
|
||||||
|
rot[1] = 0.0f;
|
||||||
|
rot[2] = x;
|
||||||
|
|
||||||
|
// Only actually turn player when we're not in vanity mode
|
||||||
|
if(!MWBase::Environment::get().getWorld()->vanityRotateCamera(rot))
|
||||||
|
{
|
||||||
|
mPlayer.setYaw(x/scale);
|
||||||
|
mPlayer.setPitch(-y/scale);
|
||||||
|
}
|
||||||
|
|
||||||
if (arg.state.Z.rel)
|
if (arg.state.Z.rel)
|
||||||
MWBase::Environment::get().getWorld()->changeVanityModeScale(arg.state.Z.rel);
|
MWBase::Environment::get().getWorld()->changeVanityModeScale(arg.state.Z.rel);
|
||||||
|
|
|
@ -891,6 +891,16 @@ void RenderingManager::getPlayerData(Ogre::Vector3 &eyepos, float &pitch, float
|
||||||
mPlayer->getSightAngles(pitch, yaw);
|
mPlayer->getSightAngles(pitch, yaw);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool RenderingManager::vanityRotateCamera(float* rot)
|
||||||
|
{
|
||||||
|
if(!mPlayer->isVanityOrPreviewModeEnabled())
|
||||||
|
return false;
|
||||||
|
|
||||||
|
Ogre::Vector3 vRot(rot);
|
||||||
|
mPlayer->rotateCamera(vRot, true);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
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);
|
||||||
|
|
|
@ -88,6 +88,8 @@ class RenderingManager: private RenderingInterface, public Ogre::WindowEventList
|
||||||
mPlayer->setCameraDistance(-factor/120.f*10, true, true);
|
mPlayer->setCameraDistance(-factor/120.f*10, true, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool vanityRotateCamera(float* rot);
|
||||||
|
|
||||||
void getPlayerData(Ogre::Vector3 &eyepos, float &pitch, float &yaw);
|
void getPlayerData(Ogre::Vector3 &eyepos, float &pitch, float &yaw);
|
||||||
|
|
||||||
void attachCameraTo(const MWWorld::Ptr &ptr);
|
void attachCameraTo(const MWWorld::Ptr &ptr);
|
||||||
|
|
|
@ -1364,6 +1364,11 @@ namespace MWWorld
|
||||||
return physactor && physactor->getOnGround();
|
return physactor && physactor->getOnGround();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool World::vanityRotateCamera(float * rot)
|
||||||
|
{
|
||||||
|
return mRendering->vanityRotateCamera(rot);
|
||||||
|
}
|
||||||
|
|
||||||
void World::renderPlayer()
|
void World::renderPlayer()
|
||||||
{
|
{
|
||||||
mRendering->renderPlayer(mPlayer->getPlayer());
|
mRendering->renderPlayer(mPlayer->getPlayer());
|
||||||
|
|
|
@ -361,6 +361,8 @@ namespace MWWorld
|
||||||
mRendering->changeVanityModeScale(factor);
|
mRendering->changeVanityModeScale(factor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
virtual bool vanityRotateCamera(float * rot);
|
||||||
|
|
||||||
virtual void renderPlayer();
|
virtual void renderPlayer();
|
||||||
|
|
||||||
virtual void setupExternalRendering (MWRender::ExternalRendering& rendering);
|
virtual void setupExternalRendering (MWRender::ExternalRendering& rendering);
|
||||||
|
|
Loading…
Reference in a new issue