summaryrefslogtreecommitdiff
path: root/src/player.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/player.cpp')
-rw-r--r--src/player.cpp21
1 files changed, 16 insertions, 5 deletions
diff --git a/src/player.cpp b/src/player.cpp
index 3c06283a0..72e44f0e0 100644
--- a/src/player.cpp
+++ b/src/player.cpp
@@ -46,6 +46,20 @@ Player::~Player()
// Y direction is ignored
void Player::accelerate(v3f target_speed, f32 max_increase)
{
+ v3f d_wanted = target_speed - m_speed;
+ d_wanted.Y = 0;
+ f32 dl_wanted = d_wanted.getLength();
+ f32 dl = dl_wanted;
+ if(dl > max_increase)
+ dl = max_increase;
+
+ v3f d = d_wanted.normalize() * dl;
+
+ m_speed.X += d.X;
+ m_speed.Z += d.Z;
+ //m_speed += d;
+
+#if 0 // old code
if(m_speed.X < target_speed.X - max_increase)
m_speed.X += max_increase;
else if(m_speed.X > target_speed.X + max_increase)
@@ -63,6 +77,7 @@ void Player::accelerate(v3f target_speed, f32 max_increase)
m_speed.Z = target_speed.Z;
else if(m_speed.Z > target_speed.Z)
m_speed.Z = target_speed.Z;
+#endif
}
/*
@@ -209,7 +224,7 @@ void LocalPlayer::move(f32 dtime, Map &map)
position += m_speed * dtime;
// Skip collision detection if player is non-local
- if(isLocal() == false)
+ if(isLocal() == false || HAXMODE)
{
setPosition(position);
return;
@@ -286,10 +301,6 @@ void LocalPlayer::move(f32 dtime, Map &map)
{
// Doing nothing here will block the player from
// walking over map borders
-
- // Go over borders in debug mode
- if(HAXMODE)
- continue;
}
core::aabbox3d<f32> nodebox = Map::getNodeBox(