Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
Loading...
Searching...
No Matches
MapTree.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 _MAPTREE_H
7
#define _MAPTREE_H
8
9
#include "
Define.h
"
10
#include "
Dynamic/UnorderedMap.h
"
11
#include "
BoundingIntervalHierarchy.h
"
12
13
namespace
VMAP
14
{
15
class
ModelInstance
;
16
class
GroupModel
;
17
class
VMapManager2
;
18
19
struct
LocationInfo
20
{
21
LocationInfo
():
hitInstance
(0),
hitModel
(0),
ground_Z
(-
G3D
::inf()) { }
22
const
ModelInstance
*
hitInstance
;
23
const
GroupModel
*
hitModel
;
24
float
ground_Z
;
25
};
26
27
class
StaticMapTree
28
{
29
typedef
UNORDERED_MAP<uint32, bool>
loadedTileMap
;
30
typedef
UNORDERED_MAP<uint32, uint32>
loadedSpawnMap
;
31
private
:
32
uint32
iMapID
;
33
bool
iIsTiled
;
34
BIH
iTree
;
35
ModelInstance
*
iTreeValues
;
// the tree entries
36
uint32
iNTreeValues
;
37
38
// Store all the map tile idents that are loaded for that map
39
// some maps are not splitted into tiles and we have to make sure, not removing the map before all tiles are removed
40
// empty tiles have no tile file, hence map with bool instead of just a set (consistency check)
41
loadedTileMap
iLoadedTiles
;
42
// stores <tree_index, reference_count> to invalidate tree values, unload map, and to be able to report errors
43
loadedSpawnMap
iLoadedSpawns
;
44
std::string
iBasePath
;
45
46
private
:
47
bool
getIntersectionTime
(
const
G3D::Ray& pRay,
float
&pMaxDist,
bool
pStopAtFirstHit)
const
;
48
//bool containsLoadedMapTile(unsigned int pTileIdent) const { return(iLoadedMapTiles.containsKey(pTileIdent)); }
49
public
:
50
static
std::string
getTileFileName
(
uint32
mapID,
uint32
tileX,
uint32
tileY);
51
static
uint32
packTileID
(
uint32
tileX,
uint32
tileY) {
return
tileX<<16 | tileY; }
52
static
void
unpackTileID
(
uint32
ID,
uint32
&tileX,
uint32
&tileY) { tileX = ID>>16; tileY = ID&0xFF; }
53
static
bool
CanLoadMap
(
const
std::string &basePath,
uint32
mapID,
uint32
tileX,
uint32
tileY);
54
55
StaticMapTree
(
uint32
mapID,
const
std::string &basePath);
56
~StaticMapTree
();
57
58
bool
isInLineOfSight
(
const
G3D::Vector3& pos1,
const
G3D::Vector3& pos2)
const
;
59
bool
getObjectHitPos
(
const
G3D::Vector3& pos1,
const
G3D::Vector3& pos2, G3D::Vector3& pResultHitPos,
float
pModifyDist)
const
;
60
float
getHeight
(
const
G3D::Vector3& pPos,
float
maxSearchDist)
const
;
61
bool
getAreaInfo
(G3D::Vector3 &pos,
uint32
&flags,
int32
&adtId,
int32
&rootId,
int32
&groupId)
const
;
62
bool
GetLocationInfo
(
const
G3D::Vector3 &pos,
LocationInfo
&info)
const
;
63
64
bool
InitMap
(
const
std::string &fname,
VMapManager2
* vm);
65
void
UnloadMap
(
VMapManager2
* vm);
66
bool
LoadMapTile
(
uint32
tileX,
uint32
tileY,
VMapManager2
* vm);
67
void
UnloadMapTile
(
uint32
tileX,
uint32
tileY,
VMapManager2
* vm);
68
bool
isTiled
()
const
{
return
iIsTiled
; }
69
uint32
numLoadedTiles
()
const
{
return
iLoadedTiles
.size(); }
70
void
getModelInstances
(
ModelInstance
* &models,
uint32
&count);
71
private
:
72
StaticMapTree
(
StaticMapTree
const
& right) =
delete
;
73
StaticMapTree
&
operator=
(
StaticMapTree
const
& right) =
delete
;
74
};
75
76
struct
AreaInfo
77
{
78
AreaInfo
():
result
(false),
ground_Z
(-
G3D
::inf()),
flags
(0),
adtId
(0),
79
rootId
(0),
groupId
(0) { }
80
bool
result
;
81
float
ground_Z
;
82
uint32
flags
;
83
int32
adtId
;
84
int32
rootId
;
85
int32
groupId
;
86
};
87
}
// VMAP
88
89
#endif
// _MAPTREE_H
BoundingIntervalHierarchy.h
Define.h
int32
std::int32_t int32
Definition
Define.h:73
uint32
std::uint32_t uint32
Definition
Define.h:77
UnorderedMap.h
UNORDERED_MAP
#define UNORDERED_MAP
Definition
UnorderedMap.h:58
BIH
Definition
BoundingIntervalHierarchy.h:58
VMAP::GroupModel
Definition
WorldModel.h:62
VMAP::ModelInstance
Definition
ModelInstance.h:51
VMAP::StaticMapTree::getIntersectionTime
bool getIntersectionTime(const G3D::Ray &pRay, float &pMaxDist, bool pStopAtFirstHit) const
Definition
MapTree.cpp:132
VMAP::StaticMapTree::StaticMapTree
StaticMapTree(uint32 mapID, const std::string &basePath)
Definition
MapTree.cpp:109
VMAP::StaticMapTree::getAreaInfo
bool getAreaInfo(G3D::Vector3 &pos, uint32 &flags, int32 &adtId, int32 &rootId, int32 &groupId) const
Definition
MapTree.cpp:86
VMAP::StaticMapTree::CanLoadMap
static bool CanLoadMap(const std::string &basePath, uint32 mapID, uint32 tileX, uint32 tileY)
Definition
MapTree.cpp:229
VMAP::StaticMapTree::iNTreeValues
uint32 iNTreeValues
Definition
MapTree.h:36
VMAP::StaticMapTree::loadedTileMap
UNORDERED_MAP< uint32, bool > loadedTileMap
Definition
MapTree.h:29
VMAP::StaticMapTree::LoadMapTile
bool LoadMapTile(uint32 tileX, uint32 tileY, VMapManager2 *vm)
Definition
MapTree.cpp:331
VMAP::StaticMapTree::iTree
BIH iTree
Definition
MapTree.h:34
VMAP::StaticMapTree::~StaticMapTree
~StaticMapTree()
Make sure to call unloadMap() to unregister acquired model references before destroying.
Definition
MapTree.cpp:121
VMAP::StaticMapTree::UnloadMapTile
void UnloadMapTile(uint32 tileX, uint32 tileY, VMapManager2 *vm)
Definition
MapTree.cpp:412
VMAP::StaticMapTree::iMapID
uint32 iMapID
Definition
MapTree.h:32
VMAP::StaticMapTree::getTileFileName
static std::string getTileFileName(uint32 mapID, uint32 tileX, uint32 tileY)
Definition
MapTree.cpp:76
VMAP::StaticMapTree::iIsTiled
bool iIsTiled
Definition
MapTree.h:33
VMAP::StaticMapTree::operator=
StaticMapTree & operator=(StaticMapTree const &right)=delete
VMAP::StaticMapTree::loadedSpawnMap
UNORDERED_MAP< uint32, uint32 > loadedSpawnMap
Definition
MapTree.h:30
VMAP::StaticMapTree::isInLineOfSight
bool isInLineOfSight(const G3D::Vector3 &pos1, const G3D::Vector3 &pos2) const
Definition
MapTree.cpp:143
VMAP::StaticMapTree::getObjectHitPos
bool getObjectHitPos(const G3D::Vector3 &pos1, const G3D::Vector3 &pos2, G3D::Vector3 &pResultHitPos, float pModifyDist) const
Definition
MapTree.cpp:169
VMAP::StaticMapTree::packTileID
static uint32 packTileID(uint32 tileX, uint32 tileY)
Definition
MapTree.h:51
VMAP::StaticMapTree::iBasePath
std::string iBasePath
Definition
MapTree.h:44
VMAP::StaticMapTree::iTreeValues
ModelInstance * iTreeValues
Definition
MapTree.h:35
VMAP::StaticMapTree::iLoadedTiles
loadedTileMap iLoadedTiles
Definition
MapTree.h:41
VMAP::StaticMapTree::iLoadedSpawns
loadedSpawnMap iLoadedSpawns
Definition
MapTree.h:43
VMAP::StaticMapTree::unpackTileID
static void unpackTileID(uint32 ID, uint32 &tileX, uint32 &tileY)
Definition
MapTree.h:52
VMAP::StaticMapTree::InitMap
bool InitMap(const std::string &fname, VMapManager2 *vm)
Definition
MapTree.cpp:266
VMAP::StaticMapTree::StaticMapTree
StaticMapTree(StaticMapTree const &right)=delete
VMAP::StaticMapTree::getModelInstances
void getModelInstances(ModelInstance *&models, uint32 &count)
Definition
VMapExtensions.cpp:18
VMAP::StaticMapTree::isTiled
bool isTiled() const
Definition
MapTree.h:68
VMAP::StaticMapTree::GetLocationInfo
bool GetLocationInfo(const G3D::Vector3 &pos, LocationInfo &info) const
Definition
MapTree.cpp:102
VMAP::StaticMapTree::numLoadedTiles
uint32 numLoadedTiles() const
Definition
MapTree.h:69
VMAP::StaticMapTree::getHeight
float getHeight(const G3D::Vector3 &pPos, float maxSearchDist) const
Definition
MapTree.cpp:214
VMAP::StaticMapTree::UnloadMap
void UnloadMap(VMapManager2 *vm)
Definition
MapTree.cpp:317
VMAP::VMapManager2
Definition
VMapManager2.h:57
G3D
Definition
DynamicTree.h:13
VMAP
Definition
IVMapManager.h:19
VMAP::AreaInfo::AreaInfo
AreaInfo()
Definition
MapTree.h:78
VMAP::AreaInfo::rootId
int32 rootId
Definition
MapTree.h:84
VMAP::AreaInfo::groupId
int32 groupId
Definition
MapTree.h:85
VMAP::AreaInfo::flags
uint32 flags
Definition
MapTree.h:82
VMAP::AreaInfo::adtId
int32 adtId
Definition
MapTree.h:83
VMAP::AreaInfo::result
bool result
Definition
MapTree.h:80
VMAP::AreaInfo::ground_Z
float ground_Z
Definition
MapTree.h:81
VMAP::LocationInfo
Definition
MapTree.h:20
VMAP::LocationInfo::ground_Z
float ground_Z
Definition
MapTree.h:24
VMAP::LocationInfo::hitModel
const GroupModel * hitModel
Definition
MapTree.h:23
VMAP::LocationInfo::hitInstance
const ModelInstance * hitInstance
Definition
MapTree.h:22
VMAP::LocationInfo::LocationInfo
LocationInfo()
Definition
MapTree.h:21
src
server
collision
Maps
MapTree.h
Generated on
for Project SkyFire Core by
1.17.0