forked from Mirrorlandia_minetest/minetest
Move player collisionbox to player class
This commit is contained in:
parent
386108f982
commit
88ffb3f73b
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -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();
|
||||||
|
@ -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;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user