From befa38e799c3660c12cd76d8341aaf57640d3f9f Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Sat, 31 Dec 2022 19:50:22 +0800 Subject: [PATCH] 1 --- server/gameserver/room.cc | 77 ++++++--------------------------------- server/gameserver/room.h | 1 - 2 files changed, 12 insertions(+), 66 deletions(-) diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index fdfa4e50..b33e170f 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -769,74 +769,21 @@ void Room::OnHumanRevive(Human* hum) bool Room::OverBorder(const Position& pos, float radius) { - CircleCollider collider; - collider.pos.x = pos.x; - collider.pos.y = pos.z; - collider.rad = radius; - return OverBorder(pos, &collider); -} - -bool Room::OverBorder(const Position& pos, ColliderComponent* collider) -{ - switch (collider->type) { - case CT_Aabb: - { - AabbCollider* aabb_box = (AabbCollider*)collider; - //检查x轴 - { - float left_x = (pos.ToVec2() + aabb_box->_min).x; - if (left_x < 0.001f) { - return true; - } - float right_x = (pos.ToVec2() + aabb_box->_max).x; - if (right_x > map_meta_->map_width()) { - return true; - } - } - //检查y轴 - { - float down_y = (pos.ToVec2() + aabb_box->_min).y; - if (down_y < 0.001f) { - return true; - } - float up_y = (pos.ToVec2() + aabb_box->_max).y; - if (up_y > map_meta_->map_height()) { - return true; - } - } + { + if (pos.GetX() - radius < 0.0001f) { + return true; } - break; - case CT_Circle: - { - CircleCollider* circle_collider = (CircleCollider*)collider; - //检查x轴 - { - float left_x = pos.x - circle_collider->rad; - if (left_x < 0.001f) { - return true; - } - float right_x = pos.x + circle_collider->rad; - if (right_x > map_meta_->map_width()) { - return true; - } - } - //检查y轴 - { - float down_y = pos.y - circle_collider->rad; - if (down_y < 0.001f) { - return true; - } - float up_y = pos.y + circle_collider->rad; - if (up_y > map_meta_->map_height()) { - return true; - } - } + if (pos.GetX() + radius > map_meta_->map_width()) { + return true; } - break; - default: - { + } + { + if (pos.GetZ() - radius < 0.0001f) { + return true; + } + if (pos.GetZ() + radius > map_meta_->map_height()) { + return true; } - break; } return false; } diff --git a/server/gameserver/room.h b/server/gameserver/room.h index b235c637..26b23f16 100644 --- a/server/gameserver/room.h +++ b/server/gameserver/room.h @@ -161,7 +161,6 @@ public: void OnHumanDie(Human* hum); void OnHumanRevive(Human* hum); bool OverBorder(const Position& pos, float radius); - bool OverBorder(const Position& pos, ColliderComponent* collider); Human* GetWatchWarTarget(Human* hum); bool BattleStarted(); int GetTeamNum();