From 6304a76047f280906fc60a9ab6c7624b8fc5c1b2 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Thu, 12 Sep 2019 11:27:30 +0800 Subject: [PATCH] 1 --- server/gameserver/room.cc | 43 ++++++++------------------------------- 1 file changed, 8 insertions(+), 35 deletions(-) diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index 15e7a40..0e2a7ee 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -797,44 +797,17 @@ void Room::FindLocationWithAabb(Entity* target, const a8::Vec2& aabb_pos, AabbCo new_x = pos.x; new_y = pos.y; - Entity* building = nullptr; - std::set new_grid_list; - grid_service.GetAllCellsByXy(pos.x, pos.y, new_grid_list); - for (auto& grid : new_grid_list) { - for (Entity* entity : grid->entity_list) { - switch (entity->entity_type) { - case ET_Building: - { - if (entity->TestCollisionEx(pos, *aabb_box)) { - building = entity; - } - } - break; - default: - break; - } - if (building) { - break; - } - } - if (building) { + bool is_collision = false; + std::set colliders; + map_service.GetColliders(pos.x, pos.y, colliders); + for (ColliderComponent* collider : colliders) { + if (collider->IntersectEx(pos, aabb_box)) { + is_collision = true; break; } } - - if (!building) { - bool is_collision = false; - std::set colliders; - map_service.GetColliders(pos.x, pos.y, colliders); - for (ColliderComponent* collider : colliders) { - if (collider->IntersectEx(pos, &target_collider)) { - is_collision = true; - break; - } - } - if (!is_collision) { - break; - } + if (!is_collision) { + break; } } }