Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
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
19
namespace
MMAP
20
{
21
typedef
UNORDERED_MAP<uint32, dtTileRef>
MMapTileSet
;
22
typedef
UNORDERED_MAP<uint32, dtNavMeshQuery*>
NavMeshQuerySet
;
23
24
25
typedef
std::set<uint32>
TerrainSet
;
26
27
struct
NavMeshHolder
28
{
29
// Pre-built navMesh
30
dtNavMesh*
navMesh
;
31
32
// List of terrain swap map ids used to build the navMesh
33
TerrainSet
terrainIds
;
34
35
MMapTileSet
loadedTileRefs
;
36
};
37
38
struct
PhasedTile
39
{
40
unsigned
char
*
data
;
41
MmapTileHeader
fileHeader
;
42
int32
dataSize
;
43
};
44
45
typedef
UNORDERED_MAP<uint32, PhasedTile*>
PhaseTileContainer
;
46
typedef
UNORDERED_MAP<uint32, PhaseTileContainer>
PhaseTileMap
;
47
48
49
typedef
UNORDERED_MAP<uint32, TerrainSet>
TerrainSetMap
;
50
51
class
MMapData
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
;
64
MMapTileSet
loadedTileRefs
;
65
TerrainSetMap
loadedPhasedTiles
;
66
67
private
:
68
uint32
_mapId
;
69
PhaseTileContainer
_baseTiles
;
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
76
typedef
UNORDERED_MAP<uint32, MMapData*>
MMapDataSet
;
77
78
// singleton class
79
// holds all all access to mmap loading unloading and meshes
80
class
MMapManager
81
{
82
public
:
83
MMapManager
() :
loadedTiles
(0) { }
84
~MMapManager
();
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
95
uint32
getLoadedTilesCount
()
const
{
return
loadedTiles
; }
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);
100
PhaseTileContainer
GetPhaseTileContainer
(
uint32
mapId) {
return
_phaseTiles
[mapId]; }
101
102
private
:
103
bool
loadMapData
(
uint32
mapId);
104
uint32
packTileID
(
int32
x,
int32
y);
105
106
MMapDataSet
loadedMMaps
;
107
uint32
loadedTiles
;
108
109
PhasedTile
*
LoadTile
(
uint32
mapId,
int32
x,
int32
y);
110
PhaseTileMap
_phaseTiles
;
111
};
112
}
113
114
#endif
Define.h
int32
std::int32_t int32
Definition
Define.h:73
uint32
std::uint32_t uint32
Definition
Define.h:77
UNORDERED_MAP
#define UNORDERED_MAP
Definition
UnorderedMap.h:58
World.h
MMAP::MMapData::RemoveSwap
void RemoveSwap(PhasedTile *ptile, uint32 swap, uint32 packedXY)
Definition
MMapManager.cpp:409
MMAP::MMapData::_mapId
uint32 _mapId
Definition
MMapManager.h:68
MMAP::MMapData::~MMapData
~MMapData()
Definition
MMapManager.cpp:395
MMAP::MMapData::loadedPhasedTiles
TerrainSetMap loadedPhasedTiles
Definition
MMapManager.h:65
MMAP::MMapData::GetNavMesh
dtNavMesh * GetNavMesh(TerrainSet swaps)
Definition
MMapManager.cpp:505
MMAP::MMapData::_baseTiles
PhaseTileContainer _baseTiles
Definition
MMapManager.h:69
MMAP::MMapData::navMesh
dtNavMesh * navMesh
Definition
MMapManager.h:63
MMAP::MMapData::_activeSwaps
std::set< uint32 > _activeSwaps
Definition
MMapManager.h:70
MMAP::MMapData::AddSwap
void AddSwap(PhasedTile *tile, uint32 swap, uint32 packedXY)
Definition
MMapManager.cpp:446
MMAP::MMapData::navMeshQueries
NavMeshQuerySet navMeshQueries
Definition
MMapManager.h:61
MMAP::MMapData::MMapData
MMapData(dtNavMesh *mesh, uint32 mapId)
Definition
MMapManager.h:54
MMAP::MMapData::loadedTileRefs
MMapTileSet loadedTileRefs
Definition
MMapManager.h:64
MMAP::MMapManager::getLoadedMapsCount
uint32 getLoadedMapsCount() const
Definition
MMapManager.h:96
MMAP::MMapManager::GetNavMeshQuery
dtNavMeshQuery const * GetNavMeshQuery(uint32 mapId, uint32 instanceId, TerrainSet swaps)
Definition
MMapManager.cpp:370
MMAP::MMapManager::unloadMap
bool unloadMap(uint32 mapId, int32 x, int32 y)
Definition
MMapManager.cpp:259
MMAP::MMapManager::loadMap
bool loadMap(const std::string &basePath, uint32 mapId, int32 x, int32 y)
Definition
MMapManager.cpp:78
MMAP::MMapManager::GetNavMesh
dtNavMesh const * GetNavMesh(uint32 mapId, TerrainSet swaps)
Definition
MMapManager.cpp:362
MMAP::MMapManager::UnloadPhaseTile
void UnloadPhaseTile(uint32 mapId, int32 x, int32 y)
Definition
MMapManager.cpp:241
MMAP::MMapManager::loadMapData
bool loadMapData(uint32 mapId)
Definition
MMapManager.cpp:23
MMAP::MMapManager::_phaseTiles
PhaseTileMap _phaseTiles
Definition
MMapManager.h:110
MMAP::MMapManager::~MMapManager
~MMapManager()
Definition
MMapManager.cpp:14
MMAP::MMapManager::loadedTiles
uint32 loadedTiles
Definition
MMapManager.h:107
MMAP::MMapManager::loadedMMaps
MMapDataSet loadedMMaps
Definition
MMapManager.h:106
MMAP::MMapManager::getLoadedTilesCount
uint32 getLoadedTilesCount() const
Definition
MMapManager.h:95
MMAP::MMapManager::packTileID
uint32 packTileID(int32 x, int32 y)
Definition
MMapManager.cpp:73
MMAP::MMapManager::LoadPhaseTiles
void LoadPhaseTiles(uint32 mapId, int32 x, int32 y)
Definition
MMapManager.cpp:217
MMAP::MMapManager::unloadMapInstance
bool unloadMapInstance(uint32 mapId, uint32 instanceId)
Definition
MMapManager.cpp:336
MMAP::MMapManager::GetPhaseTileContainer
PhaseTileContainer GetPhaseTileContainer(uint32 mapId)
Definition
MMapManager.h:100
MMAP::MMapManager::LoadTile
PhasedTile * LoadTile(uint32 mapId, int32 x, int32 y)
Definition
MMapManager.cpp:162
MMAP::MMapManager::MMapManager
MMapManager()
Definition
MMapManager.h:83
MMAP
Definition
MMapFactory.cpp:12
MMAP::TerrainSet
std::set< uint32 > TerrainSet
Definition
MMapManager.h:25
MMAP::PhaseTileContainer
UNORDERED_MAP< uint32, PhasedTile * > PhaseTileContainer
Definition
MMapManager.h:45
MMAP::TerrainSetMap
UNORDERED_MAP< uint32, TerrainSet > TerrainSetMap
Definition
MMapManager.h:49
MMAP::MMapDataSet
UNORDERED_MAP< uint32, MMapData * > MMapDataSet
Definition
MMapManager.h:76
MMAP::NavMeshQuerySet
UNORDERED_MAP< uint32, dtNavMeshQuery * > NavMeshQuerySet
Definition
MMapManager.h:22
MMAP::PhaseTileMap
UNORDERED_MAP< uint32, PhaseTileContainer > PhaseTileMap
Definition
MMapManager.h:46
MMAP::MMapTileSet
UNORDERED_MAP< uint32, dtTileRef > MMapTileSet
Definition
MMapManager.h:21
MMAP::NavMeshHolder
Definition
MMapManager.h:28
MMAP::NavMeshHolder::terrainIds
TerrainSet terrainIds
Definition
MMapManager.h:33
MMAP::NavMeshHolder::navMesh
dtNavMesh * navMesh
Definition
MMapManager.h:30
MMAP::NavMeshHolder::loadedTileRefs
MMapTileSet loadedTileRefs
Definition
MMapManager.h:35
MMAP::PhasedTile
Definition
MMapManager.h:39
MMAP::PhasedTile::data
unsigned char * data
Definition
MMapManager.h:40
MMAP::PhasedTile::fileHeader
MmapTileHeader fileHeader
Definition
MMapManager.h:41
MMAP::PhasedTile::dataSize
int32 dataSize
Definition
MMapManager.h:42
MmapTileHeader
Definition
SharedDefines.h:4379
src
server
collision
Management
MMapManager.h
Generated on
for Project SkyFire Core by
1.17.0