From 88ffb3f73bb16c6680ee10a8e804a699e366edd8 Mon Sep 17 00:00:00 2001 From: sapier Date: Wed, 17 Apr 2013 00:15:53 +0200 Subject: [PATCH] Move player collisionbox to player class --- src/content_sao.cpp | 9 +++++++-- src/localplayer.cpp | 17 +---------------- src/player.cpp | 3 ++- src/player.h | 5 +++++ 4 files changed, 15 insertions(+), 19 deletions(-) diff --git a/src/content_sao.cpp b/src/content_sao.cpp index 3526ecbd2..24a9186f7 100644 --- a/src/content_sao.cpp +++ b/src/content_sao.cpp @@ -1472,6 +1472,11 @@ std::string PlayerSAO::getPropertyPacket() } bool PlayerSAO::getCollisionBox(aabb3f *toset) { - //player collision handling is already done clientside no need to do it twice - return false; + //update collision box + *toset = m_player->getCollisionbox(); + + toset->MinEdge += m_base_position; + toset->MaxEdge += m_base_position; + + return true; } diff --git a/src/localplayer.cpp b/src/localplayer.cpp index 6b7b0943c..13117d881 100644 --- a/src/localplayer.cpp +++ b/src/localplayer.cpp @@ -154,9 +154,6 @@ void LocalPlayer::move(f32 dtime, ClientEnvironment *env, f32 pos_max_d, // This should always apply, otherwise there are glitches assert(d > pos_max_d); - float player_radius = BS*0.30; - float player_height = BS*1.55; - // Maximum distance over border for sneaking f32 sneak_max = BS*0.4; @@ -184,24 +181,12 @@ void LocalPlayer::move(f32 dtime, ClientEnvironment *env, f32 pos_max_d, } } - /* - Calculate player collision box (new and old) - */ - core::aabbox3d playerbox( - -player_radius, - 0.0, - -player_radius, - player_radius, - player_height, - player_radius - ); - float player_stepheight = touching_ground ? (BS*0.6) : (BS*0.2); v3f accel_f = v3f(0,0,0); collisionMoveResult result = collisionMoveSimple(env, m_gamedef, - pos_max_d, playerbox, player_stepheight, dtime, + pos_max_d, m_collisionbox, player_stepheight, dtime, position, m_speed, accel_f); /* diff --git a/src/player.cpp b/src/player.cpp index e86b64206..d3e16810f 100644 --- a/src/player.cpp +++ b/src/player.cpp @@ -42,7 +42,8 @@ Player::Player(IGameDef *gamedef): m_pitch(0), m_yaw(0), m_speed(0,0,0), - m_position(0,0,0) + m_position(0,0,0), + m_collisionbox(-BS*0.30,0.0,-BS*0.30,BS*0.30,BS*1.55,BS*0.30) { updateName(""); inventory.clear(); diff --git a/src/player.h b/src/player.h index 4e5b3af97..fade6de01 100644 --- a/src/player.h +++ b/src/player.h @@ -180,6 +180,10 @@ public: return m_name; } + core::aabbox3d getCollisionbox() { + return m_collisionbox; + } + virtual bool isLocal() const { return false; } virtual PlayerSAO *getPlayerSAO() @@ -255,6 +259,7 @@ protected: f32 m_yaw; v3f m_speed; v3f m_position; + core::aabbox3d m_collisionbox; };