From f0b02eafc64aaf9a817b1649eb9c8164dcfb4dfe Mon Sep 17 00:00:00 2001 From: azw Date: Wed, 15 Sep 2021 22:03:35 +0800 Subject: [PATCH] 1 --- server/gameserver/mapinstance.cc | 3 +++ server/gameserver/mapservice.h | 3 +++ 2 files changed, 6 insertions(+) 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;