summaryrefslogtreecommitdiff
path: root/src/camera.cpp
diff options
context:
space:
mode:
authorKahrl <kahrl@gmx.net>2011-09-20 18:19:26 +0200
committerKahrl <kahrl@gmx.net>2011-09-20 18:19:26 +0200
commitcbd2bcf102bd338ba1d97ad54bd257913f4dcd36 (patch)
tree28f78b71b20f4d2c7cc8c0a9f2a6ff59403271ce /src/camera.cpp
parent01f3ae1c5089f36f1f2a164bcaa36fb2fc8642be (diff)
downloadminetest-cbd2bcf102bd338ba1d97ad54bd257913f4dcd36.tar.gz
minetest-cbd2bcf102bd338ba1d97ad54bd257913f4dcd36.tar.bz2
minetest-cbd2bcf102bd338ba1d97ad54bd257913f4dcd36.zip
Fix jittery view bobbing at large map coordinates again. Wielded tool still has problems there
Diffstat (limited to 'src/camera.cpp')
-rw-r--r--src/camera.cpp9
1 files changed, 4 insertions, 5 deletions
diff --git a/src/camera.cpp b/src/camera.cpp
index a1830fcfc..316a3f70a 100644
--- a/src/camera.cpp
+++ b/src/camera.cpp
@@ -195,17 +195,16 @@ void Camera::update(LocalPlayer* player, f32 frametime, v2u32 screensize)
// Compute absolute camera position and target
m_headnode->getAbsoluteTransformation().transformVect(m_camera_position, rel_cam_pos);
- m_headnode->getAbsoluteTransformation().transformVect(m_camera_direction, rel_cam_target);
- m_camera_direction -= m_camera_position;
+ m_headnode->getAbsoluteTransformation().rotateVect(m_camera_direction, rel_cam_target - rel_cam_pos);
v3f abs_cam_up;
- m_headnode->getAbsoluteTransformation().transformVect(abs_cam_up, rel_cam_pos + rel_cam_up);
- abs_cam_up -= m_camera_position;
+ m_headnode->getAbsoluteTransformation().rotateVect(abs_cam_up, rel_cam_up);
// Set camera node transformation
m_cameranode->setPosition(m_camera_position);
m_cameranode->setUpVector(abs_cam_up);
- m_cameranode->setTarget(m_camera_position + m_camera_direction);
+ // *100.0 helps in large map coordinates
+ m_cameranode->setTarget(m_camera_position + 100 * m_camera_direction);
// FOV and and aspect ratio
m_aspect = (f32)screensize.X / (f32) screensize.Y;