aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorZeg9 <dazeg9@gmail.com>2012-12-27 14:22:59 +0100
committerPilzAdam <pilzadam@minetest.net>2013-04-03 23:22:40 +0200
commitc1bf6f9f7a6d2c5bd743422593a5ec72939bc6af (patch)
tree5240ea28a91a97628d959217261901071a0882ba /src
parentf85c1165c2ea9abbfe426b014dacb7b04238fbea (diff)
downloadminetest-c1bf6f9f7a6d2c5bd743422593a5ec72939bc6af.tar.gz
minetest-c1bf6f9f7a6d2c5bd743422593a5ec72939bc6af.tar.bz2
minetest-c1bf6f9f7a6d2c5bd743422593a5ec72939bc6af.zip
Fix camera "jumping" when attached and the parent goes too fast
Diffstat (limited to 'src')
-rw-r--r--src/camera.cpp2
-rw-r--r--src/content_cao.cpp1
-rw-r--r--src/localplayer.cpp1
-rw-r--r--src/localplayer.h4
4 files changed, 8 insertions, 0 deletions
diff --git a/src/camera.cpp b/src/camera.cpp
index b1e588415..138b022c0 100644
--- a/src/camera.cpp
+++ b/src/camera.cpp
@@ -218,6 +218,8 @@ void Camera::update(LocalPlayer* player, f32 frametime, v2u32 screensize,
// Smooth the movement when walking up stairs
v3f old_player_position = m_playernode->getPosition();
v3f player_position = player->getPosition();
+ if (player->isAttached && player->parent)
+ player_position = player->parent->getPosition();
//if(player->touching_ground && player_position.Y > old_player_position.Y)
if(player->touching_ground &&
player_position.Y > old_player_position.Y)
diff --git a/src/content_cao.cpp b/src/content_cao.cpp
index ee1009b6c..84fc0bf79 100644
--- a/src/content_cao.cpp
+++ b/src/content_cao.cpp
@@ -1129,6 +1129,7 @@ public:
{
LocalPlayer *player = m_env->getLocalPlayer();
player->overridePosition = getParent()->getPosition();
+ m_env->getLocalPlayer()->parent = getParent();
}
}
else
diff --git a/src/localplayer.cpp b/src/localplayer.cpp
index ee9b41c58..a90ae6967 100644
--- a/src/localplayer.cpp
+++ b/src/localplayer.cpp
@@ -35,6 +35,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
LocalPlayer::LocalPlayer(IGameDef *gamedef):
Player(gamedef),
+ parent(0),
isAttached(false),
overridePosition(v3f(0,0,0)),
last_position(v3f(0,0,0)),
diff --git a/src/localplayer.h b/src/localplayer.h
index 17434d379..9ac2bc682 100644
--- a/src/localplayer.h
+++ b/src/localplayer.h
@@ -25,6 +25,8 @@ with this program; if not, write to the Free Software Foundation, Inc.,
class ClientEnvironment;
+class ClientActiveObject;
+
class LocalPlayer : public Player
{
public:
@@ -35,6 +37,8 @@ public:
{
return true;
}
+
+ ClientActiveObject *parent;
bool isAttached;