summaryrefslogtreecommitdiff
path: root/src/camera.cpp
diff options
context:
space:
mode:
authorBlockMen <nmuelll@web.de>2014-04-11 15:32:46 +0200
committerBlockMen <nmuelll@web.de>2014-04-12 17:44:20 +0200
commitc0ab09af747fc431dfb459ede30788cb9cd1c56b (patch)
tree7355b0b349a6d188e6066c00c3b3ef9b0a76f33e /src/camera.cpp
parenta1db9242ec491efdee70a7184aa61e861b17595a (diff)
downloadminetest-c0ab09af747fc431dfb459ede30788cb9cd1c56b.tar.gz
minetest-c0ab09af747fc431dfb459ede30788cb9cd1c56b.tar.bz2
minetest-c0ab09af747fc431dfb459ede30788cb9cd1c56b.zip
Add player:set_eye_offset() by @MirceaKitsune and clean up
Diffstat (limited to 'src/camera.cpp')
-rw-r--r--src/camera.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/camera.cpp b/src/camera.cpp
index 6d17ff743..6fbd1dd8c 100644
--- a/src/camera.cpp
+++ b/src/camera.cpp
@@ -41,7 +41,6 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#define CAMERA_OFFSET_STEP 200
#include "nodedef.h"
-#include "game.h" // CameraModes
Camera::Camera(scene::ISceneManager* smgr, MapDrawControl& draw_control,
IGameDef *gamedef):
@@ -297,8 +296,15 @@ void Camera::update(LocalPlayer* player, f32 frametime, f32 busytime,
fall_bobbing *= g_settings->getFloat("fall_bobbing_amount");
}
+ // Calculate players eye offset for different camera modes
+ v3f PlayerEyeOffset = player->getEyeOffset();
+ if (current_camera_mode == CAMERA_MODE_FIRST)
+ PlayerEyeOffset += player->eye_offset_first;
+ else
+ PlayerEyeOffset += player->eye_offset_third;
+
// Set head node transformation
- m_headnode->setPosition(player->getEyeOffset()+v3f(0,cameratilt*-player->hurt_tilt_strength+fall_bobbing,0));
+ m_headnode->setPosition(PlayerEyeOffset+v3f(0,cameratilt*-player->hurt_tilt_strength+fall_bobbing,0));
m_headnode->setRotation(v3f(player->getPitch(), 0, cameratilt*player->hurt_tilt_strength));
m_headnode->updateAbsolutePosition();