}
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;
}
// 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;
}
}
- /*
- 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);
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);
/*
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("<not set>");
inventory.clear();
return m_name;
}
+ core::aabbox3d<f32> getCollisionbox() {
+ return m_collisionbox;
+ }
+
virtual bool isLocal() const
{ return false; }
virtual PlayerSAO *getPlayerSAO()
f32 m_yaw;
v3f m_speed;
v3f m_position;
+ core::aabbox3d<f32> m_collisionbox;
};