Use 8 points to check in push code

This commit is contained in:
Michael Cook (mackal) 2018-03-15 16:20:00 -04:00
parent a339d0d41d
commit e46e2952e6
2 changed files with 30 additions and 11 deletions

View File

@ -50,7 +50,7 @@ struct AuraRecord;
struct NewSpawn_Struct; struct NewSpawn_Struct;
struct PlayerPositionUpdateServer_Struct; struct PlayerPositionUpdateServer_Struct;
const int COLLISION_BOX_SIZE = 4; const int COLLISION_BOX_SIZE = 8;
namespace EQEmu namespace EQEmu
{ {

View File

@ -967,22 +967,41 @@ void Mob::ProcessForcedMovement()
m_CollisionBox[0].y = m_Position.y + 3.0f * g_Math.FastCos(0.0f); m_CollisionBox[0].y = m_Position.y + 3.0f * g_Math.FastCos(0.0f);
m_CollisionBox[0].z = m_Position.z + z_off; m_CollisionBox[0].z = m_Position.z + z_off;
// to right // 45 right front
m_CollisionBox[1].x = m_Position.x + 3.0f * g_Math.FastSin(128.0f); m_CollisionBox[1].x = m_Position.x + 3.0f * g_Math.FastSin(64.0f);
m_CollisionBox[1].y = m_Position.y + 3.0f * g_Math.FastCos(128.0f); m_CollisionBox[1].y = m_Position.y + 3.0f * g_Math.FastCos(64.0f);
m_CollisionBox[1].z = m_Position.z + z_off; m_CollisionBox[1].z = m_Position.z + z_off;
// to right
// behind m_CollisionBox[2].x = m_Position.x + 3.0f * g_Math.FastSin(128.0f);
m_CollisionBox[2].x = m_Position.x + 3.0f * g_Math.FastSin(256.0f); m_CollisionBox[2].y = m_Position.y + 3.0f * g_Math.FastCos(128.0f);
m_CollisionBox[2].y = m_Position.y + 3.0f * g_Math.FastCos(256.0f);
m_CollisionBox[2].z = m_Position.z + z_off; m_CollisionBox[2].z = m_Position.z + z_off;
// to left // 45 right back
m_CollisionBox[3].x = m_Position.x + 3.0f * g_Math.FastSin(384.0f); m_CollisionBox[3].x = m_Position.x + 3.0f * g_Math.FastSin(192.0f);
m_CollisionBox[3].y = m_Position.y + 3.0f * g_Math.FastCos(384.0f); m_CollisionBox[3].y = m_Position.y + 3.0f * g_Math.FastCos(192.0f);
m_CollisionBox[3].z = m_Position.z + z_off; m_CollisionBox[3].z = m_Position.z + z_off;
// behind
m_CollisionBox[4].x = m_Position.x + 3.0f * g_Math.FastSin(256.0f);
m_CollisionBox[4].y = m_Position.y + 3.0f * g_Math.FastCos(256.0f);
m_CollisionBox[4].z = m_Position.z + z_off;
// 45 left back
m_CollisionBox[5].x = m_Position.x + 3.0f * g_Math.FastSin(320.0f);
m_CollisionBox[5].y = m_Position.y + 3.0f * g_Math.FastCos(320.0f);
m_CollisionBox[5].z = m_Position.z + z_off;
// to left
m_CollisionBox[6].x = m_Position.x + 3.0f * g_Math.FastSin(384.0f);
m_CollisionBox[6].y = m_Position.y + 3.0f * g_Math.FastCos(384.0f);
m_CollisionBox[6].z = m_Position.z + z_off;
// 45 left front
m_CollisionBox[7].x = m_Position.x + 3.0f * g_Math.FastSin(448.0f);
m_CollisionBox[7].y = m_Position.y + 3.0f * g_Math.FastCos(448.0f);
m_CollisionBox[7].z = m_Position.z + z_off;
// collision happened, need to move along the wall // collision happened, need to move along the wall
float distance = 0.0f, shortest = std::numeric_limits<float>::infinity(); float distance = 0.0f, shortest = std::numeric_limits<float>::infinity();
glm::vec3 tmp_nrm; glm::vec3 tmp_nrm;