From 4b4daa509c3c82a24ea43d8f6916a3147d5b636b Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Sat, 1 Apr 2023 15:55:16 +0800 Subject: [PATCH] 1 --- server/gameserver/room.cc | 20 ++++++++++++++++++-- server/gameserver/room.h | 2 +- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index 51bd0fc2..d62da845 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -3551,7 +3551,23 @@ bool Room::RandomSafeAreaPoint(glm::vec3& point) return true; } -bool Room::FindWalkablePointWithOutHouse(const glm::vec3& center, int try_count, int step, glm::vec3& point) +bool Room::FindWalkablePointWithOutHouse(const glm::vec3& center, int try_count, int step, glm::vec3& out_point) { - return false; + glm::vec3 ref_point = center; + map_instance->PtInHouse(center, ref_point); + map_instance->Scale(ref_point); + glm::vec3 point; + bool ok = false; + for (int i = 0; i < try_count; ++i) { + ok = map_instance->FindNearestPoint(ref_point, 1.0f + step * i, point); + if (ok) { + break; + } + } + if (!ok) { + return false; + } + map_instance->UnScale(point); + out_point = point; + return true; } diff --git a/server/gameserver/room.h b/server/gameserver/room.h index 4c411cc4..089471a4 100644 --- a/server/gameserver/room.h +++ b/server/gameserver/room.h @@ -218,7 +218,7 @@ public: int GetPolyExtFlag(int poly_idx); size_t GetRoomMaxPlayerNum(); bool RandomSafeAreaPoint(glm::vec3& point); - bool FindWalkablePointWithOutHouse(const glm::vec3& center, int try_count, int step, glm::vec3& point); + bool FindWalkablePointWithOutHouse(const glm::vec3& center, int try_count, int step, glm::vec3& out_point); private: void ShuaAndroid();