Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
MMapManager.h
Go to the documentation of this file.
1/*
2* This file is part of Project SkyFire https://www.projectskyfire.org.
3* See LICENSE.md file for Copyright information
4*/
5
6#ifndef _MMAP_MANAGER_H
7#define _MMAP_MANAGER_H
8
9#include "Define.h"
10#include "DetourAlloc.h"
11#include "DetourNavMesh.h"
12#include "DetourNavMeshQuery.h"
13#include "World.h"
14#include <string>
15#include <unordered_map>
16#include <set>
17
18// move map related classes
19namespace MMAP
20{
23
24
25 typedef std::set<uint32> TerrainSet;
26
28 {
29 // Pre-built navMesh
30 dtNavMesh* navMesh;
31
32 // List of terrain swap map ids used to build the navMesh
34
36 };
37
39 {
40 unsigned char* data;
43 };
44
47
48
50
52 {
53 public:
54 MMapData(dtNavMesh* mesh, uint32 mapId) : navMesh(mesh), _mapId(mapId) { }
55
56 ~MMapData();
57
58 dtNavMesh* GetNavMesh(TerrainSet swaps);
59
60 // we have to use single dtNavMeshQuery for every instance, since those are not thread safe
61 NavMeshQuerySet navMeshQueries; // instanceId to query
62
63 dtNavMesh* navMesh;
66
67 private:
70 std::set<uint32> _activeSwaps;
71 void RemoveSwap(PhasedTile* ptile, uint32 swap, uint32 packedXY);
72 void AddSwap(PhasedTile* tile, uint32 swap, uint32 packedXY);
73 };
74
75
77
78 // singleton class
79 // holds all all access to mmap loading unloading and meshes
81 {
82 public:
85
86 bool loadMap(const std::string& basePath, uint32 mapId, int32 x, int32 y);
87 bool unloadMap(uint32 mapId, int32 x, int32 y);
88 bool unloadMap(uint32 mapId);
89 bool unloadMapInstance(uint32 mapId, uint32 instanceId);
90
91 // the returned [dtNavMeshQuery const*] is NOT threadsafe
92 dtNavMeshQuery const* GetNavMeshQuery(uint32 mapId, uint32 instanceId, TerrainSet swaps);
93 dtNavMesh const* GetNavMesh(uint32 mapId, TerrainSet swaps);
94
96 uint32 getLoadedMapsCount() const { return loadedMMaps.size(); }
97
98 void LoadPhaseTiles(uint32 mapId, int32 x, int32 y);
99 void UnloadPhaseTile(uint32 mapId, int32 x, int32 y);
101
102 private:
103 bool loadMapData(uint32 mapId);
105
108
109 PhasedTile* LoadTile(uint32 mapId, int32 x, int32 y);
111 };
112}
113
114#endif
std::int32_t int32
Definition Define.h:73
std::uint32_t uint32
Definition Define.h:77
#define UNORDERED_MAP
void RemoveSwap(PhasedTile *ptile, uint32 swap, uint32 packedXY)
TerrainSetMap loadedPhasedTiles
Definition MMapManager.h:65
dtNavMesh * GetNavMesh(TerrainSet swaps)
PhaseTileContainer _baseTiles
Definition MMapManager.h:69
dtNavMesh * navMesh
Definition MMapManager.h:63
std::set< uint32 > _activeSwaps
Definition MMapManager.h:70
void AddSwap(PhasedTile *tile, uint32 swap, uint32 packedXY)
NavMeshQuerySet navMeshQueries
Definition MMapManager.h:61
MMapData(dtNavMesh *mesh, uint32 mapId)
Definition MMapManager.h:54
MMapTileSet loadedTileRefs
Definition MMapManager.h:64
uint32 getLoadedMapsCount() const
Definition MMapManager.h:96
dtNavMeshQuery const * GetNavMeshQuery(uint32 mapId, uint32 instanceId, TerrainSet swaps)
bool unloadMap(uint32 mapId, int32 x, int32 y)
bool loadMap(const std::string &basePath, uint32 mapId, int32 x, int32 y)
dtNavMesh const * GetNavMesh(uint32 mapId, TerrainSet swaps)
void UnloadPhaseTile(uint32 mapId, int32 x, int32 y)
bool loadMapData(uint32 mapId)
PhaseTileMap _phaseTiles
MMapDataSet loadedMMaps
uint32 getLoadedTilesCount() const
Definition MMapManager.h:95
uint32 packTileID(int32 x, int32 y)
void LoadPhaseTiles(uint32 mapId, int32 x, int32 y)
bool unloadMapInstance(uint32 mapId, uint32 instanceId)
PhaseTileContainer GetPhaseTileContainer(uint32 mapId)
PhasedTile * LoadTile(uint32 mapId, int32 x, int32 y)
std::set< uint32 > TerrainSet
Definition MMapManager.h:25
UNORDERED_MAP< uint32, PhasedTile * > PhaseTileContainer
Definition MMapManager.h:45
UNORDERED_MAP< uint32, TerrainSet > TerrainSetMap
Definition MMapManager.h:49
UNORDERED_MAP< uint32, MMapData * > MMapDataSet
Definition MMapManager.h:76
UNORDERED_MAP< uint32, dtNavMeshQuery * > NavMeshQuerySet
Definition MMapManager.h:22
UNORDERED_MAP< uint32, PhaseTileContainer > PhaseTileMap
Definition MMapManager.h:46
UNORDERED_MAP< uint32, dtTileRef > MMapTileSet
Definition MMapManager.h:21
TerrainSet terrainIds
Definition MMapManager.h:33
dtNavMesh * navMesh
Definition MMapManager.h:30
MMapTileSet loadedTileRefs
Definition MMapManager.h:35
unsigned char * data
Definition MMapManager.h:40
MmapTileHeader fileHeader
Definition MMapManager.h:41