diff options
author | Zeg9 <dazeg9@gmail.com> | 2012-12-27 14:22:59 +0100 |
---|---|---|
committer | PilzAdam <pilzadam@minetest.net> | 2013-04-03 23:22:40 +0200 |
commit | c1bf6f9f7a6d2c5bd743422593a5ec72939bc6af (patch) | |
tree | 5240ea28a91a97628d959217261901071a0882ba | |
parent | f85c1165c2ea9abbfe426b014dacb7b04238fbea (diff) | |
download | minetest-c1bf6f9f7a6d2c5bd743422593a5ec72939bc6af.tar.gz minetest-c1bf6f9f7a6d2c5bd743422593a5ec72939bc6af.tar.bz2 minetest-c1bf6f9f7a6d2c5bd743422593a5ec72939bc6af.zip |
Fix camera "jumping" when attached and the parent goes too fast
-rw-r--r-- | src/camera.cpp | 2 | ||||
-rw-r--r-- | src/content_cao.cpp | 1 | ||||
-rw-r--r-- | src/localplayer.cpp | 1 | ||||
-rw-r--r-- | src/localplayer.h | 4 |
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; |