diff --git a/server/gameserver/collision.cc b/server/gameserver/collision.cc index 7e9c49bb..7ba718cf 100644 --- a/server/gameserver/collision.cc +++ b/server/gameserver/collision.cc @@ -144,11 +144,10 @@ bool Collision::Check2dRotationRectangle(float rx, float ry, float r, float dx, return (tmp_dx1 - new_rx) * (tmp_dx1 - new_rx) + (tmp_dy1 - new_ry) * (tmp_dy1 - new_ry) <= r * r; } -bool Collision::IsNearInRange(const glm::vec3& center, const glm::vec3& pos, float range) +bool Collision::InSquare(const glm::vec3& center, const glm::vec3& pos, float side_len) { - -} - -bool Collision::IsNearOutRange(const glm::vec3& center, const glm::vec3& pos, float range) { - + float x_distance = std::fabs(pos.x - center.x); + float z_distance = std::fabs(pos.z - center.z); + return (x_distance < side_len && + z_distance < side_len); } diff --git a/server/gameserver/collision.h b/server/gameserver/collision.h index 4b27050b..d97e0f69 100644 --- a/server/gameserver/collision.h +++ b/server/gameserver/collision.h @@ -24,7 +24,6 @@ class Collision */ static bool Check2dRotationRectangle(float rx, float ry, float r, float dx, float dy, float dw, float dh, float dro); - static bool IsNearInRange(const glm::vec3& center, const glm::vec3& pos, float range); - static bool IsNearOutRange(const glm::vec3& center, const glm::vec3& pos, float range); + static bool InSquare(const glm::vec3& center, const glm::vec3& pos, float side_len); }; diff --git a/server/gameserver/new_hero_agent.cc b/server/gameserver/new_hero_agent.cc index a430534b..0d40311a 100644 --- a/server/gameserver/new_hero_agent.cc +++ b/server/gameserver/new_hero_agent.cc @@ -248,7 +248,7 @@ bool HeroAgent::HasBuffEffect(int effect_id) bool HeroAgent::IsNearGas(float range) { - return Collision::IsNearInRange + return Collision::InSquare (owner_->GetPos().ToGlmVec3(), owner_->GetPos().ToGlmVec3(), range); @@ -260,7 +260,7 @@ bool HeroAgent::MasterInRange(float range) !owner_->AsHero()->master.Get()) { return false; } - return Collision::IsNearInRange + return Collision::InSquare (owner_->AsHero()->master.Get()->GetPos().ToGlmVec3(), owner_->GetPos().ToGlmVec3(), range);