diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/localplayer.cpp | 33 | ||||
-rw-r--r-- | src/localplayer.h | 5 | ||||
-rw-r--r-- | src/player.cpp | 35 | ||||
-rw-r--r-- | src/player.h | 3 |
4 files changed, 37 insertions, 39 deletions
diff --git a/src/localplayer.cpp b/src/localplayer.cpp index 60aec95d4..524c6272e 100644 --- a/src/localplayer.cpp +++ b/src/localplayer.cpp @@ -622,3 +622,36 @@ v3s16 LocalPlayer::getStandingNodePos() return floatToInt(getPosition() - v3f(0, BS, 0), BS); } +// Horizontal acceleration (X and Z), Y direction is ignored +void LocalPlayer::accelerateHorizontal(const v3f &target_speed, const f32 max_increase) +{ + if (max_increase == 0) + return; + + v3f d_wanted = target_speed - m_speed; + d_wanted.Y = 0; + f32 dl = d_wanted.getLength(); + if (dl > max_increase) + dl = max_increase; + + v3f d = d_wanted.normalize() * dl; + + m_speed.X += d.X; + m_speed.Z += d.Z; +} + +// Vertical acceleration (Y), X and Z directions are ignored +void LocalPlayer::accelerateVertical(const v3f &target_speed, const f32 max_increase) +{ + if (max_increase == 0) + return; + + f32 d_wanted = target_speed.Y - m_speed.Y; + if (d_wanted > max_increase) + d_wanted = max_increase; + else if (d_wanted < -max_increase) + d_wanted = -max_increase; + + m_speed.Y += d_wanted; +} + diff --git a/src/localplayer.h b/src/localplayer.h index 40a7f089e..3ae0c4e51 100644 --- a/src/localplayer.h +++ b/src/localplayer.h @@ -45,7 +45,7 @@ public: bool isAttached; v3f overridePosition; - + void move(f32 dtime, Environment *env, f32 pos_max_d); void move(f32 dtime, Environment *env, f32 pos_max_d, std::vector<CollisionInfo> *collision_info); @@ -81,6 +81,9 @@ public: } private: + void accelerateHorizontal(const v3f &target_speed, const f32 max_increase); + void accelerateVertical(const v3f &target_speed, const f32 max_increase); + // This is used for determining the sneaking range v3s16 m_sneak_node; // Whether the player is allowed to sneak diff --git a/src/player.cpp b/src/player.cpp index dd5e04509..623dde230 100644 --- a/src/player.cpp +++ b/src/player.cpp @@ -111,41 +111,6 @@ Player::~Player() clearHud(); } -// Horizontal acceleration (X and Z), Y direction is ignored -void Player::accelerateHorizontal(v3f target_speed, f32 max_increase) -{ - if(max_increase == 0) - return; - - v3f d_wanted = target_speed - m_speed; - d_wanted.Y = 0; - f32 dl = d_wanted.getLength(); - if(dl > max_increase) - dl = max_increase; - - v3f d = d_wanted.normalize() * dl; - - m_speed.X += d.X; - m_speed.Z += d.Z; - -} - -// Vertical acceleration (Y), X and Z directions are ignored -void Player::accelerateVertical(v3f target_speed, f32 max_increase) -{ - if(max_increase == 0) - return; - - f32 d_wanted = target_speed.Y - m_speed.Y; - if(d_wanted > max_increase) - d_wanted = max_increase; - else if(d_wanted < -max_increase) - d_wanted = -max_increase; - - m_speed.Y += d_wanted; - -} - v3s16 Player::getLightPosition() const { return floatToInt(m_position + v3f(0,BS+BS/2,0), BS); diff --git a/src/player.h b/src/player.h index 0d99297ca..50267c72c 100644 --- a/src/player.h +++ b/src/player.h @@ -119,9 +119,6 @@ public: m_speed = speed; } - void accelerateHorizontal(v3f target_speed, f32 max_increase); - void accelerateVertical(v3f target_speed, f32 max_increase); - v3f getPosition() { return m_position; |