1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-06-27 16:36:03 +00:00

PlayerSAO/LocalPlayer refactor: (#4612)

* Create UnitSAO, a common part between PlayerSAO & LuaEntitySAO
* Move breath to PlayerSAO & LocalPlayer
* Migrate m_yaw from (Remote)Player & LuaEntitySAO to UnitSAO
* Migrate m_yaw from Player to LocalPlayer for client
* Move some functions outside of player class to PlayerSAO/RemotePlayer or LocalPlayer depending on which class needs it
* Move pitch to LocalPlayer & PlayerSAO
* Move m_position from Player to LocalPlayer
* Move camera_barely_in_ceiling to LocalPlayer as it's used only there
* use PlayerSAO::m_base_position for Server side positions
* remove a unused variable
* ServerActiveObject::setPos now uses const ref
* use ServerEnv::loadPlayer unconditionnaly as it creates RemotePlayer only if it's not already loaded
* Move hp from Player to LocalPlayer
* Move m_hp from LuaEntitySAO to UnitSAO
* Use m_hp from PlayerSAO/UnitSAO instead of RemotePlayer
This commit is contained in:
Ner'zhul 2016-10-30 14:53:26 +01:00 committed by GitHub
parent d43326021a
commit 9d25242c5c
18 changed files with 353 additions and 335 deletions

View file

@ -40,6 +40,7 @@ public:
ClientActiveObject *parent;
u16 hp;
bool got_teleported;
bool isAttached;
bool touching_ground;
@ -99,10 +100,45 @@ public:
u32 maxHudId() const { return hud.size(); }
u16 getBreath() const { return m_breath; }
void setBreath(u16 breath) { m_breath = breath; }
v3s16 getLightPosition() const
{
return floatToInt(m_position + v3f(0,BS+BS/2,0), BS);
}
void setYaw(f32 yaw)
{
m_yaw = yaw;
}
f32 getYaw() const { return m_yaw; }
void setPitch(f32 pitch)
{
m_pitch = pitch;
}
f32 getPitch() const { return m_pitch; }
void setPosition(const v3f &position)
{
m_position = position;
}
v3f getPosition() const { return m_position; }
v3f getEyePosition() const { return m_position + getEyeOffset(); }
v3f getEyeOffset() const
{
float eye_height = camera_barely_in_ceiling ? 1.5f : 1.625f;
return v3f(0, BS * eye_height, 0);
}
private:
void accelerateHorizontal(const v3f &target_speed, const f32 max_increase);
void accelerateVertical(const v3f &target_speed, const f32 max_increase);
v3f m_position;
// This is used for determining the sneaking range
v3s16 m_sneak_node;
// Whether the player is allowed to sneak
@ -117,6 +153,11 @@ private:
v3s16 m_old_node_below;
std::string m_old_node_below_type;
bool m_can_jump;
u16 m_breath;
f32 m_yaw;
f32 m_pitch;
bool camera_barely_in_ceiling;
aabb3f m_collisionbox;
GenericCAO* m_cao;
Client *m_gamedef;