1#ifndef DETOURTILECACHE_H
2#define DETOURTILECACHE_H
4#include "DetourStatus.h"
8typedef unsigned int dtObstacleRef;
10typedef unsigned int dtCompressedTileRef;
13enum dtCompressedTileFlags
15 DT_COMPRESSEDTILE_FREE_DATA = 0x01,
22 unsigned char* compressed;
33 DT_OBSTACLE_PROCESSING,
34 DT_OBSTACLE_PROCESSED,
42 DT_OBSTACLE_ORIENTED_BOX,
61 float halfExtents[ 3 ];
65static const int DT_MAX_TOUCHED_TILES = 8;
75 dtCompressedTileRef touched[DT_MAX_TOUCHED_TILES];
76 dtCompressedTileRef pending[DT_MAX_TOUCHED_TILES];
80 unsigned char ntouched;
81 unsigned char npending;
93 float maxSimplificationError;
103 unsigned char* polyAreas,
unsigned short* polyFlags) = 0;
117 inline int getTileCount()
const {
return m_params.maxTiles; }
118 inline const dtCompressedTile* getTile(
const int i)
const {
return &m_tiles[i]; }
120 inline int getObstacleCount()
const {
return m_params.maxObstacles; }
121 inline const dtTileCacheObstacle* getObstacle(
const int i)
const {
return &m_obstacles[i]; }
132 int getTilesAt(
const int tx,
const int ty, dtCompressedTileRef* tiles,
const int maxTiles)
const ;
138 dtStatus addTile(
unsigned char* data,
const int dataSize,
unsigned char flags, dtCompressedTileRef* result);
140 dtStatus removeTile(dtCompressedTileRef ref,
unsigned char** data,
int* dataSize);
143 dtStatus addObstacle(
const float* pos,
const float radius,
const float height, dtObstacleRef* result);
146 dtStatus addBoxObstacle(
const float* bmin,
const float* bmax, dtObstacleRef* result);
149 dtStatus addBoxObstacle(
const float* center,
const float* halfExtents,
const float yRadians, dtObstacleRef* result);
151 dtStatus removeObstacle(
const dtObstacleRef ref);
153 dtStatus queryTiles(
const float* bmin,
const float* bmax,
154 dtCompressedTileRef* results,
int* resultCount,
const int maxResults)
const;
162 dtStatus
update(
const float dt,
class dtNavMesh* navmesh,
bool* upToDate = 0);
164 dtStatus buildNavMeshTilesAt(
const int tx,
const int ty,
class dtNavMesh* navmesh);
166 dtStatus buildNavMeshTile(
const dtCompressedTileRef ref,
class dtNavMesh* navmesh);
170 void getObstacleBounds(
const struct dtTileCacheObstacle* ob,
float* bmin,
float* bmax)
const;
174 inline dtCompressedTileRef
encodeTileId(
unsigned int salt,
unsigned int it)
const
176 return ((dtCompressedTileRef)salt << m_tileBits) | (dtCompressedTileRef)it;
182 const dtCompressedTileRef saltMask = ((dtCompressedTileRef)1<<m_saltBits)-1;
183 return (
unsigned int)((ref >> m_tileBits) & saltMask);
189 const dtCompressedTileRef tileMask = ((dtCompressedTileRef)1<<m_tileBits)-1;
190 return (
unsigned int)(ref & tileMask);
196 return ((dtObstacleRef)salt << 16) | (dtObstacleRef)it;
202 const dtObstacleRef saltMask = ((dtObstacleRef)1<<16)-1;
203 return (
unsigned int)((ref >> 16) & saltMask);
209 const dtObstacleRef tileMask = ((dtObstacleRef)1<<16)-1;
210 return (
unsigned int)(ref & tileMask);
219 enum ObstacleRequestAction
225 struct ObstacleRequest
238 unsigned int m_saltBits;
239 unsigned int m_tileBits;
250 static const int MAX_REQUESTS = 64;
251 ObstacleRequest m_reqs[MAX_REQUESTS];
254 static const int MAX_UPDATE = 64;
255 dtCompressedTileRef m_update[MAX_UPDATE];
Definition DetourNavMesh.h:339
Definition DetourTileCache.h:108
dtObstacleRef encodeObstacleId(unsigned int salt, unsigned int it) const
Encodes an obstacle id.
Definition DetourTileCache.h:194
unsigned int decodeTileIdSalt(dtCompressedTileRef ref) const
Decodes a tile salt.
Definition DetourTileCache.h:180
unsigned int decodeObstacleIdObstacle(dtObstacleRef ref) const
Decodes an obstacle id.
Definition DetourTileCache.h:207
dtCompressedTileRef encodeTileId(unsigned int salt, unsigned int it) const
Encodes a tile id.
Definition DetourTileCache.h:174
dtStatus update(const float dt, class dtNavMesh *navmesh, bool *upToDate=0)
Definition DetourTileCache.cpp:518
unsigned int decodeTileIdTile(dtCompressedTileRef ref) const
Decodes a tile id.
Definition DetourTileCache.h:187
unsigned int decodeObstacleIdSalt(dtObstacleRef ref) const
Decodes an obstacle salt.
Definition DetourTileCache.h:200
Definition DetourTileCache.h:19
unsigned int salt
Counter describing modifications to the tile.
Definition DetourTileCache.h:20
Definition DetourNavMeshBuilder.h:27
Definition DetourTileCache.h:53
Definition DetourTileCache.h:46
Definition DetourTileCache.h:59
Definition DetourTileCacheBuilder.h:80
Definition DetourTileCacheBuilder.h:97
Definition DetourTileCache.h:99
Definition DetourTileCache.h:67
Definition DetourTileCache.h:86