Player::accelerateHorizontal/Vertical should be member of LocalPlayer
parent
cfc8e44759
commit
3a74b84007
|
@ -622,3 +622,36 @@ v3s16 LocalPlayer::getStandingNodePos()
|
||||||
return floatToInt(getPosition() - v3f(0, BS, 0), BS);
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -81,6 +81,9 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
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
|
// This is used for determining the sneaking range
|
||||||
v3s16 m_sneak_node;
|
v3s16 m_sneak_node;
|
||||||
// Whether the player is allowed to sneak
|
// Whether the player is allowed to sneak
|
||||||
|
|
|
@ -111,41 +111,6 @@ Player::~Player()
|
||||||
clearHud();
|
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
|
v3s16 Player::getLightPosition() const
|
||||||
{
|
{
|
||||||
return floatToInt(m_position + v3f(0,BS+BS/2,0), BS);
|
return floatToInt(m_position + v3f(0,BS+BS/2,0), BS);
|
||||||
|
|
|
@ -119,9 +119,6 @@ public:
|
||||||
m_speed = speed;
|
m_speed = speed;
|
||||||
}
|
}
|
||||||
|
|
||||||
void accelerateHorizontal(v3f target_speed, f32 max_increase);
|
|
||||||
void accelerateVertical(v3f target_speed, f32 max_increase);
|
|
||||||
|
|
||||||
v3f getPosition()
|
v3f getPosition()
|
||||||
{
|
{
|
||||||
return m_position;
|
return m_position;
|
||||||
|
|
Loading…
Reference in New Issue