-// 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;
-
-#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)
- m_speed.X -= max_increase;
- else if(m_speed.X < target_speed.X)
- m_speed.X = target_speed.X;
- else if(m_speed.X > target_speed.X)
- m_speed.X = target_speed.X;
-
- if(m_speed.Z < target_speed.Z - max_increase)
- m_speed.Z += max_increase;
- else if(m_speed.Z > target_speed.Z + max_increase)
- m_speed.Z -= max_increase;
- else if(m_speed.Z < target_speed.Z)
- m_speed.Z = target_speed.Z;
- else if(m_speed.Z > target_speed.Z)
- m_speed.Z = target_speed.Z;
-#endif
-}
-
-// 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;
-
-#if 0 // old code
- if(m_speed.Y < target_speed.Y - max_increase)
- m_speed.Y += max_increase;
- else if(m_speed.Y > target_speed.Y + max_increase)
- m_speed.Y -= max_increase;
- else if(m_speed.Y < target_speed.Y)
- m_speed.Y = target_speed.Y;
- else if(m_speed.Y > target_speed.Y)
- m_speed.Y = target_speed.Y;
-#endif
-}
-
-v3s16 Player::getLightPosition() const
-{
- return floatToInt(m_position + v3f(0,BS+BS/2,0), BS);
-}
-
-void Player::serialize(std::ostream &os)
-{
- // Utilize a Settings object for storing values
- Settings args;
- args.setS32("version", 1);
- args.set("name", m_name);
- //args.set("password", m_password);
- args.setFloat("pitch", m_pitch);
- args.setFloat("yaw", m_yaw);
- args.setV3F("position", m_position);
- args.setS32("hp", hp);
- args.setS32("breath", m_breath);
-
- args.writeLines(os);
-
- os<<"PlayerArgsEnd\n";
-
- inventory.serialize(os);
-}
-
-void Player::deSerialize(std::istream &is, std::string playername)