From f354a90eca08c91072d7665b5b72a905cfa162e9 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Tue, 29 Nov 2022 17:33:19 +0800 Subject: [PATCH] 1 --- server/gameserver/mapinstance.cc | 23 +++++++++++++++++++++++ server/gameserver/mapinstance.h | 1 + 2 files changed, 24 insertions(+) diff --git a/server/gameserver/mapinstance.cc b/server/gameserver/mapinstance.cc index 7fa41b0d..645c4594 100644 --- a/server/gameserver/mapinstance.cc +++ b/server/gameserver/mapinstance.cc @@ -721,3 +721,26 @@ int MapInstance::Raycast(int layer, const a8::Vec3& start, const a8::Vec3& end, return 1; } + +bool MapInstance::FindNearestPoint(const a8::Vec3& center, float radius, a8::Vec3& nearest_pt) +{ + dtPolyRef startRef = INVALID_NAVMESH_POLYREF; + + dtQueryFilter filter; + filter.setIncludeFlags(0xffff); + filter.setExcludeFlags(0); + + const float extents[3] = {2.f, 4.f, 2.f}; + float nearestPt[3]; + + float pos[3]; + pos[0] = center.x; + pos[1] = center.y; + pos[2] = center.z; + + navmesh_query_->findNearestPoly(pos, extents, &filter, &startRef, nearestPt); + if (!startRef) { + } + + return true; +} diff --git a/server/gameserver/mapinstance.h b/server/gameserver/mapinstance.h index 3dd8bc52..5a5fe165 100644 --- a/server/gameserver/mapinstance.h +++ b/server/gameserver/mapinstance.h @@ -50,6 +50,7 @@ class MapInstance unsigned int max_points, float max_radius); int Raycast(int layer, const a8::Vec3& start, const a8::Vec3& end, a8::Vec3& hit_point); + bool FindNearestPoint(const a8::Vec3& center, float radius, a8::Vec3& nearestPt); private: void CreateThings();