diff --git a/server/gameserver/mapinstance.cc b/server/gameserver/mapinstance.cc index 2096eed..4386dd9 100644 --- a/server/gameserver/mapinstance.cc +++ b/server/gameserver/mapinstance.cc @@ -18,6 +18,7 @@ #include "dummyentity.h" #include "mapblock.h" #include "roommgr.h" +#include "navmeshbuilder.h" const int MAX_POLYS = 256; static const int INVALID_NAVMESH_POLYREF = 0; @@ -66,6 +67,8 @@ void MapInstance::Init() if (current_uniid_ >= FIXED_OBJECT_MAXID) { abort(); } + NavMeshBuilder::Instance()->Build(this); + map_service_->SetNavMesh(navmesh_); } void MapInstance::UnInit() diff --git a/server/gameserver/mapservice.h b/server/gameserver/mapservice.h index 489b21b..1668bf1 100644 --- a/server/gameserver/mapservice.h +++ b/server/gameserver/mapservice.h @@ -1,5 +1,6 @@ #pragma once +class dtNavMesh; class Human; class ColliderComponent; @@ -73,11 +74,13 @@ class MapService const a8::Vec2& pos, ColliderComponent* collider, ColliderComponent** pickup_collider); + void SetNavMesh(dtNavMesh* navmesh) { navmesh_ = navmesh; }; private: int GetGridId(float world_x, float world_y); private: + dtNavMesh* navmesh_ = nullptr; list_head* map_cells_ = nullptr; int map_width_ = 0; int map_height_ = 0;