void Camera::update(float duration, bool paused) { if (mAnimation->upperBodyReady()) { // Now process the view changes we queued earlier if (mVanityToggleQueued) { toggleVanityMode(!mVanity.enabled); mVanityToggleQueued = false; } if (mViewModeToggleQueued) { togglePreviewMode(false); toggleViewMode(); mViewModeToggleQueued = false; } } if (paused) return; // only show the crosshair in game mode and in first person mode. MWBase::WindowManager *wm = MWBase::Environment::get().getWindowManager(); wm->showCrosshair(!wm->isGuiMode() && (mFirstPersonView && !mVanity.enabled && !mPreviewMode)); if(mVanity.enabled) { rotateCamera(0.f, osg::DegreesToRadians(3.f * duration), true); } }
void Camera::reset() { togglePreviewMode(false); toggleVanityMode(false); if (!mFirstPersonView) toggleViewMode(); }
void Camera::update(float duration, bool paused) { if (mAnimation->allowSwitchViewMode()) { // Now process the view changes we queued earlier if (mVanityToggleQueued) { toggleVanityMode(!mVanity.enabled); mVanityToggleQueued = false; } if (mViewModeToggleQueued) { togglePreviewMode(false); toggleViewMode(); mViewModeToggleQueued = false; } } updateListener(); if (paused) return; // only show the crosshair in game mode and in first person mode. MWBase::WindowManager *wm = MWBase::Environment::get().getWindowManager(); wm->showCrosshair(!wm->isGuiMode() && (mFirstPersonView && !mVanity.enabled && !mPreviewMode)); if(mVanity.enabled) { Ogre::Vector3 rot(0.f, 0.f, 0.f); rot.z = Ogre::Degree(3.f * duration).valueRadians(); rotateCamera(rot, true); } }
bool Player::rotate(const Ogre::Vector3 &rot, bool adjust) { if (mVanity.enabled) { toggleVanityMode(false); } Ogre::Vector3 trueRot = rot; /// \note rotate player on forced vanity if (mVanity.forced) { if (mFreeLook) { float diff = (adjust) ? rot.z : mMainCam.yaw - rot.z; mVanity.enabled = false; rotateCamera(rot, adjust); mVanity.enabled = true; compensateYaw(diff); } trueRot.z = 0.f; } if (mFreeLook || mVanity.enabled || mPreviewMode) { rotateCamera(trueRot, adjust); } /// \note if vanity mode is forced by TVM then rotate player return (!mVanity.enabled && !mPreviewMode) || mVanity.forced; }
void Player::allowVanityMode(bool allow) { if (!allow && mVanity.enabled && !mVanity.forced) { toggleVanityMode(false); } mVanity.allowed = allow; }
void Camera::allowVanityMode(bool allow) { if (!allow && mVanity.enabled) toggleVanityMode(false); mVanity.allowed = allow; }