Fix camera "jumping" when attached and the parent goes too fast

experimental
Zeg9 2012-12-27 14:22:59 +01:00 committed by PilzAdam
parent f85c1165c2
commit c1bf6f9f7a
4 changed files with 8 additions and 0 deletions

View File

@ -218,6 +218,8 @@ void Camera::update(LocalPlayer* player, f32 frametime, v2u32 screensize,
// Smooth the movement when walking up stairs // Smooth the movement when walking up stairs
v3f old_player_position = m_playernode->getPosition(); v3f old_player_position = m_playernode->getPosition();
v3f player_position = player->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)
if(player->touching_ground && if(player->touching_ground &&
player_position.Y > old_player_position.Y) player_position.Y > old_player_position.Y)

View File

@ -1129,6 +1129,7 @@ public:
{ {
LocalPlayer *player = m_env->getLocalPlayer(); LocalPlayer *player = m_env->getLocalPlayer();
player->overridePosition = getParent()->getPosition(); player->overridePosition = getParent()->getPosition();
m_env->getLocalPlayer()->parent = getParent();
} }
} }
else else

View File

@ -35,6 +35,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
LocalPlayer::LocalPlayer(IGameDef *gamedef): LocalPlayer::LocalPlayer(IGameDef *gamedef):
Player(gamedef), Player(gamedef),
parent(0),
isAttached(false), isAttached(false),
overridePosition(v3f(0,0,0)), overridePosition(v3f(0,0,0)),
last_position(v3f(0,0,0)), last_position(v3f(0,0,0)),

View File

@ -25,6 +25,8 @@ with this program; if not, write to the Free Software Foundation, Inc.,
class ClientEnvironment; class ClientEnvironment;
class ClientActiveObject;
class LocalPlayer : public Player class LocalPlayer : public Player
{ {
public: public:
@ -35,6 +37,8 @@ public:
{ {
return true; return true;
} }
ClientActiveObject *parent;
bool isAttached; bool isAttached;