1
0
mirror of https://github.com/moparisthebest/minetest synced 2024-11-04 08:25:01 -05:00

Move player collisionbox to player class

This commit is contained in:
sapier 2013-04-17 00:15:53 +02:00 committed by PilzAdam
parent 386108f982
commit 88ffb3f73b
4 changed files with 15 additions and 19 deletions

View File

@ -1472,6 +1472,11 @@ std::string PlayerSAO::getPropertyPacket()
} }
bool PlayerSAO::getCollisionBox(aabb3f *toset) { bool PlayerSAO::getCollisionBox(aabb3f *toset) {
//player collision handling is already done clientside no need to do it twice //update collision box
return false; *toset = m_player->getCollisionbox();
toset->MinEdge += m_base_position;
toset->MaxEdge += m_base_position;
return true;
} }

View File

@ -154,9 +154,6 @@ void LocalPlayer::move(f32 dtime, ClientEnvironment *env, f32 pos_max_d,
// This should always apply, otherwise there are glitches // This should always apply, otherwise there are glitches
assert(d > pos_max_d); assert(d > pos_max_d);
float player_radius = BS*0.30;
float player_height = BS*1.55;
// Maximum distance over border for sneaking // Maximum distance over border for sneaking
f32 sneak_max = BS*0.4; 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<f32> playerbox(
-player_radius,
0.0,
-player_radius,
player_radius,
player_height,
player_radius
);
float player_stepheight = touching_ground ? (BS*0.6) : (BS*0.2); float player_stepheight = touching_ground ? (BS*0.6) : (BS*0.2);
v3f accel_f = v3f(0,0,0); v3f accel_f = v3f(0,0,0);
collisionMoveResult result = collisionMoveSimple(env, m_gamedef, 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); position, m_speed, accel_f);
/* /*

View File

@ -42,7 +42,8 @@ Player::Player(IGameDef *gamedef):
m_pitch(0), m_pitch(0),
m_yaw(0), m_yaw(0),
m_speed(0,0,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("<not set>"); updateName("<not set>");
inventory.clear(); inventory.clear();

View File

@ -180,6 +180,10 @@ public:
return m_name; return m_name;
} }
core::aabbox3d<f32> getCollisionbox() {
return m_collisionbox;
}
virtual bool isLocal() const virtual bool isLocal() const
{ return false; } { return false; }
virtual PlayerSAO *getPlayerSAO() virtual PlayerSAO *getPlayerSAO()
@ -255,6 +259,7 @@ protected:
f32 m_yaw; f32 m_yaw;
v3f m_speed; v3f m_speed;
v3f m_position; v3f m_position;
core::aabbox3d<f32> m_collisionbox;
}; };