diff options
author | ShadowNinja <shadowninja@minetest.net> | 2017-06-03 14:55:10 -0400 |
---|---|---|
committer | ShadowNinja <shadowninja@minetest.net> | 2017-06-03 14:55:10 -0400 |
commit | caecdb681c428c1aab9c0f7eec2570c0460f995c (patch) | |
tree | e5115982ea59bbf2343ba9b35bc4a0cfbb56f407 /src/localplayer.h | |
parent | 81d56b94919dceb7b2e51d70b21a7ca22f852bd5 (diff) | |
parent | 80dc961d24e1964e25d57039ddb2ba639f9f4d22 (diff) | |
download | minetest-caecdb681c428c1aab9c0f7eec2570c0460f995c.tar.gz minetest-caecdb681c428c1aab9c0f7eec2570c0460f995c.tar.bz2 minetest-caecdb681c428c1aab9c0f7eec2570c0460f995c.zip |
Merge 0.4.16 into stable-0.4
Diffstat (limited to 'src/localplayer.h')
-rw-r--r-- | src/localplayer.h | 77 |
1 files changed, 43 insertions, 34 deletions
diff --git a/src/localplayer.h b/src/localplayer.h index 7a1cb7466..9cbefae23 100644 --- a/src/localplayer.h +++ b/src/localplayer.h @@ -30,18 +30,23 @@ class GenericCAO; class ClientActiveObject; class IGameDef; -enum LocalPlayerAnimations {NO_ANIM, WALK_ANIM, DIG_ANIM, WD_ANIM}; // no local animation, walking, digging, both +enum LocalPlayerAnimations +{ + NO_ANIM, + WALK_ANIM, + DIG_ANIM, + WD_ANIM +}; // no local animation, walking, digging, both class LocalPlayer : public Player { public: - LocalPlayer(Client *gamedef, const char *name); + LocalPlayer(Client *client, const char *name); virtual ~LocalPlayer(); ClientActiveObject *parent; u16 hp; - bool got_teleported; bool isAttached; bool touching_ground; // This oscillates so that the player jumps a bit above the surface @@ -58,16 +63,22 @@ public: float physics_override_gravity; bool physics_override_sneak; bool physics_override_sneak_glitch; + // Temporary option for old move code + bool physics_override_new_move; v3f overridePosition; void move(f32 dtime, Environment *env, f32 pos_max_d); void move(f32 dtime, Environment *env, f32 pos_max_d, std::vector<CollisionInfo> *collision_info); + // Temporary option for old move code + void old_move(f32 dtime, Environment *env, f32 pos_max_d, + std::vector<CollisionInfo> *collision_info); void applyControl(float dtime); v3s16 getStandingNodePos(); + v3s16 getFootstepNodePos(); // Used to check if anything changed and prevent sending packets if not v3f last_position; @@ -80,6 +91,8 @@ public: float camera_impact; + bool makes_footstep_sound; + int last_animation; float last_animation_speed; @@ -91,12 +104,11 @@ public: float hurt_tilt_timer; float hurt_tilt_strength; - GenericCAO* getCAO() const { - return m_cao; - } + GenericCAO *getCAO() const { return m_cao; } - void setCAO(GenericCAO* toset) { - assert( m_cao == NULL ); // Pre-condition + void setCAO(GenericCAO *toset) + { + assert(m_cao == NULL); // Pre-condition m_cao = toset; } @@ -105,51 +117,49 @@ public: 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); - } + v3s16 getLightPosition() const; - void setYaw(f32 yaw) - { - m_yaw = yaw; - } + void setYaw(f32 yaw) { m_yaw = yaw; } f32 getYaw() const { return m_yaw; } - void setPitch(f32 pitch) - { - m_pitch = pitch; - } + void setPitch(f32 pitch) { m_pitch = pitch; } f32 getPitch() const { return m_pitch; } - void setPosition(const v3f &position) + inline void setPosition(const v3f &position) { m_position = position; + m_sneak_node_exists = false; } 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); - } + v3f getEyeOffset() const; + 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; + // Stores the max player uplift by m_sneak_node + // To support temporary option for old move code + f32 m_sneak_node_bb_ymax; + // Stores the top bounding box of m_sneak_node + aabb3f m_sneak_node_bb_top; // Whether the player is allowed to sneak bool m_sneak_node_exists; - // Whether recalculation of the sneak node is needed + // Whether recalculation of m_sneak_node and its top bbox is needed bool m_need_to_get_new_sneak_node; - // Stores the max player uplift by m_sneak_node and is updated - // when m_need_to_get_new_sneak_node == true - f32 m_sneak_node_bb_ymax; + // Whether a "sneak ladder" structure is detected at the players pos + // see detectSneakLadder() in the .cpp for more info (always false if disabled) + bool m_sneak_ladder_detected; + // Whether a 2-node-up ledge is detected at the players pos, + // see detectLedge() in the .cpp for more info (always false if disabled). + bool m_ledge_detected; + // Node below player, used to determine whether it has been removed, // and its old type v3s16 m_old_node_below; @@ -161,9 +171,8 @@ private: bool camera_barely_in_ceiling; aabb3f m_collisionbox; - GenericCAO* m_cao; - Client *m_gamedef; + GenericCAO *m_cao; + Client *m_client; }; #endif - |