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:
parent
d43326021a
commit
9d25242c5c
18 changed files with 353 additions and 335 deletions
|
@ -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;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue