Do not use/assign the camera distance in first person mode (Fixes #3421)

pull/1/head
scrawl 9 years ago
parent 24f43f6272
commit ce91637cf9

@ -69,6 +69,8 @@ namespace MWRender
mMainCam.yaw = 0.f;
mMainCam.offset = 400.f;
mCameraDistance = mMaxCameraDistance;
mUpdateCallback = new UpdateRenderCameraCallback(this);
mCamera->addUpdateCallback(mUpdateCallback);
}
@ -108,7 +110,7 @@ namespace MWRender
osg::Quat orient = osg::Quat(getPitch(), osg::Vec3d(1,0,0)) * osg::Quat(getYaw(), osg::Vec3d(0,0,1));
osg::Vec3d offset = orient * osg::Vec3d(0, -mCameraDistance, 0);
osg::Vec3d offset = orient * osg::Vec3d(0, isFirstPerson() ? 0 : -mCameraDistance, 0);
position += offset;
osg::Vec3d forward = orient * osg::Vec3d(0,1,0);
@ -187,12 +189,6 @@ namespace MWRender
mFirstPersonView = !mFirstPersonView;
processViewChange();
if (mFirstPersonView) {
mCameraDistance = 0.f;
} else {
mCameraDistance = mMaxCameraDistance;
}
}
void Camera::allowVanityMode(bool allow)
@ -313,6 +309,8 @@ namespace MWRender
float Camera::getCameraDistance() const
{
if (isFirstPerson())
return 0.f;
return mCameraDistance;
}
@ -395,7 +393,7 @@ namespace MWRender
osg::Quat orient = osg::Quat(getPitch(), osg::Vec3d(1,0,0)) * osg::Quat(getYaw(), osg::Vec3d(0,0,1));
osg::Vec3d offset = orient * osg::Vec3d(0, -mCameraDistance, 0);
osg::Vec3d offset = orient * osg::Vec3d(0, isFirstPerson() ? 0 : -mCameraDistance, 0);
camera = focal + offset;
}

Loading…
Cancel
Save