Recast Navigation  1.0.35
DetourTileCacheBuilder.h
Go to the documentation of this file.
1 //
2 // Copyright (c) 2009-2010 Mikko Mononen memon@inside.org
3 //
4 // This software is provided 'as-is', without any express or implied
5 // warranty. In no event will the authors be held liable for any damages
6 // arising from the use of this software.
7 // Permission is granted to anyone to use this software for any purpose,
8 // including commercial applications, and to alter it and redistribute it
9 // freely, subject to the following restrictions:
10 // 1. The origin of this software must not be misrepresented; you must not
11 // claim that you wrote the original software. If you use this software
12 // in a product, an acknowledgment in the product documentation would be
13 // appreciated but is not required.
14 // 2. Altered source versions must be plainly marked as such, and must not be
15 // misrepresented as being the original software.
16 // 3. This notice may not be removed or altered from any source distribution.
17 //
18 
19 #ifndef DETOURTILECACHEBUILDER_H
20 #define DETOURTILECACHEBUILDER_H
21 
22 #include "SharedConfig.h"
23 #include "DetourAlloc.h"
24 #include "DetourStatus.h"
25 
26 static const int DT_TILECACHE_MAGIC = 'D'<<24 | 'T'<<16 | 'L'<<8 | 'R';
27 static const int DT_TILECACHE_VERSION = 1;
28 
29 static const unsigned char DT_TILECACHE_NULL_AREA = 0;
30 static const unsigned char DT_TILECACHE_WALKABLE_AREA = 63;
31 static const unsigned short DT_TILECACHE_NULL_IDX = 0xffff;
32 
34 {
35  int magic;
36  int version;
37  int tx,ty,tlayer;
38  float bmin[3], bmax[3];
39  unsigned short hmin, hmax;
40  unsigned char width, height;
41  unsigned char minx, maxx, miny, maxy;
42 };
43 
45 {
47  unsigned char regCount;
48  unsigned char* heights;
49  unsigned char* areas;
50  unsigned char* cons;
51  unsigned char* regs;
52 };
53 
55 {
56  int nverts;
57  unsigned char* verts;
58  unsigned char reg;
59  unsigned char area;
60 };
61 
63 {
64  int nconts;
66 };
67 
69 {
70  int nvp;
71  int nverts;
72  int npolys;
73  unsigned short* verts;
74  unsigned short* polys;
75  navAreaMask* areaMasks;
76 };
77 
78 
80 {
81  virtual ~dtTileCacheAlloc() { }
82 
83  virtual void reset()
84  {
85  }
86 
87  virtual void* alloc(const int size)
88  {
89  return dtAlloc(size, DT_ALLOC_TEMP);
90  }
91 
92  virtual void free(void* ptr)
93  {
94  dtFree(ptr);
95  }
96 };
97 
99 {
101 
102  virtual int maxCompressedSize(const int bufferSize) = 0;
103  virtual dtStatus compress(const unsigned char* buffer, const int bufferSize,
104  unsigned char* compressed, const int maxCompressedSize, int* compressedSize) = 0;
105  virtual dtStatus decompress(const unsigned char* compressed, const int compressedSize,
106  unsigned char* buffer, const int maxBufferSize, int* bufferSize) = 0;
107 };
108 
109 
111  dtTileCacheLayerHeader* header,
112  const unsigned char* heights,
113  const navAreaMask* areaMasks,
114  const unsigned char* cons,
115  unsigned char** outData, int* outDataSize);
116 
118 
120  unsigned char* compressed, const int compressedSize,
121  dtTileCacheLayer** layerOut);
122 
125 
128 
129 dtStatus dtMarkCylinderArea(dtTileCacheLayer& layer, const float* orig, const float cs, const float ch,
130  const float* pos, const float radius, const float height, const unsigned char areaId);
131 
133  dtTileCacheLayer& layer,
134  const int walkableClimb);
135 
137  dtTileCacheLayer& layer,
138  const int walkableClimb, const float maxError,
139  dtTileCacheContourSet& lcset);
140 
142  dtTileCacheContourSet& lcset,
143  dtTileCachePolyMesh& mesh);
144 
149 bool dtTileCacheHeaderSwapEndian(unsigned char* data, const int dataSize);
150 
151 
152 #endif // DETOURTILECACHEBUILDER_H
dtStatus dtBuildTileCacheRegions(dtTileCacheAlloc *alloc, dtTileCacheLayer &layer, const int walkableClimb)
Definition: DetourTileCacheBuilder.cpp:178
unsigned char * regs
Definition: DetourTileCacheBuilder.h:51
int magic
Data magic.
Definition: DetourTileCacheBuilder.h:35
int version
Data version.
Definition: DetourTileCacheBuilder.h:36
unsigned char width
Definition: DetourTileCacheBuilder.h:40
static const unsigned char DT_TILECACHE_NULL_AREA
Definition: DetourTileCacheBuilder.h:29
virtual void * alloc(const int size)
Definition: DetourTileCacheBuilder.h:87
Definition: DetourTileCacheBuilder.h:79
int ty
Definition: DetourTileCacheBuilder.h:37
static const unsigned char DT_TILECACHE_WALKABLE_AREA
Definition: DetourTileCacheBuilder.h:30
void * dtAlloc(size_t size, dtAllocHint hint)
Allocates a memory block.
Definition: DetourAlloc.cpp:41
virtual ~dtTileCacheCompressor()
Definition: DetourTileCacheBuilder.h:100
unsigned char regCount
Region count.
Definition: DetourTileCacheBuilder.h:47
Definition: DetourTileCacheBuilder.h:68
int nverts
Definition: DetourTileCacheBuilder.h:56
Definition: DetourTileCacheBuilder.h:33
int nvp
Definition: DetourTileCacheBuilder.h:70
virtual dtStatus compress(const unsigned char *buffer, const int bufferSize, unsigned char *compressed, const int maxCompressedSize, int *compressedSize)=0
dtTileCacheContourSet * dtAllocTileCacheContourSet(dtTileCacheAlloc *alloc)
Definition: DetourTileCacheBuilder.cpp:59
unsigned char miny
Definition: DetourTileCacheBuilder.h:41
static const int DT_TILECACHE_VERSION
Definition: DetourTileCacheBuilder.h:27
Definition: DetourTileCacheBuilder.h:44
float bmax[3]
Definition: DetourTileCacheBuilder.h:38
bool dtTileCacheHeaderSwapEndian(unsigned char *data, const int dataSize)
Swaps the endianess of the compressed tile data's header (dtTileCacheLayerHeader).
Definition: DetourTileCacheBuilder.cpp:2114
unsigned int dtStatus
Definition: DetourStatus.h:22
virtual int maxCompressedSize(const int bufferSize)=0
dtStatus dtBuildTileCacheLayer(dtTileCacheCompressor *comp, dtTileCacheLayerHeader *header, const unsigned char *heights, const navAreaMask *areaMasks, const unsigned char *cons, unsigned char **outData, int *outDataSize)
Definition: DetourTileCacheBuilder.cpp:2002
dtStatus dtDecompressTileCacheLayer(dtTileCacheAlloc *alloc, dtTileCacheCompressor *comp, unsigned char *compressed, const int compressedSize, dtTileCacheLayer **layerOut)
Definition: DetourTileCacheBuilder.cpp:2054
dtTileCachePolyMesh * dtAllocTileCachePolyMesh(dtTileCacheAlloc *alloc)
Definition: DetourTileCacheBuilder.cpp:79
unsigned char * cons
Definition: DetourTileCacheBuilder.h:50
unsigned char minx
Definition: DetourTileCacheBuilder.h:41
unsigned char maxy
Usable sub-region.
Definition: DetourTileCacheBuilder.h:41
int tx
Definition: DetourTileCacheBuilder.h:37
virtual ~dtTileCacheAlloc()
Definition: DetourTileCacheBuilder.h:81
virtual dtStatus decompress(const unsigned char *compressed, const int compressedSize, unsigned char *buffer, const int maxBufferSize, int *bufferSize)=0
Definition: DetourTileCacheBuilder.h:54
unsigned char height
Dimension of the layer.
Definition: DetourTileCacheBuilder.h:40
void dtFreeTileCacheLayer(dtTileCacheAlloc *alloc, dtTileCacheLayer *layer)
Definition: DetourTileCacheBuilder.cpp:2047
unsigned char * heights
Definition: DetourTileCacheBuilder.h:48
unsigned char * areas
Definition: DetourTileCacheBuilder.h:49
dtStatus dtBuildTileCachePolyMesh(dtTileCacheAlloc *alloc, dtTileCacheContourSet &lcset, dtTileCachePolyMesh &mesh)
Definition: DetourTileCacheBuilder.cpp:1744
unsigned short * polys
Polygons of the mesh, nvp*2 elements per polygon.
Definition: DetourTileCacheBuilder.h:74
unsigned short * verts
Vertices of the mesh, 3 elements per vertex.
Definition: DetourTileCacheBuilder.h:73
void dtFreeTileCachePolyMesh(dtTileCacheAlloc *alloc, dtTileCachePolyMesh *lmesh)
Definition: DetourTileCacheBuilder.cpp:88
dtTileCacheLayerHeader * header
Definition: DetourTileCacheBuilder.h:46
unsigned char reg
Definition: DetourTileCacheBuilder.h:58
int nconts
Definition: DetourTileCacheBuilder.h:64
virtual void free(void *ptr)
Definition: DetourTileCacheBuilder.h:92
int nverts
Number of vertices.
Definition: DetourTileCacheBuilder.h:71
float bmin[3]
Definition: DetourTileCacheBuilder.h:38
int npolys
Number of polygons.
Definition: DetourTileCacheBuilder.h:72
Memory used temporarily within a function.
Definition: DetourAlloc.h:27
dtStatus dtMarkCylinderArea(dtTileCacheLayer &layer, const float *orig, const float cs, const float ch, const float *pos, const float radius, const float height, const unsigned char areaId)
Definition: DetourTileCacheBuilder.cpp:1946
unsigned short hmax
Height min/max range.
Definition: DetourTileCacheBuilder.h:39
static const unsigned short DT_TILECACHE_NULL_IDX
Definition: DetourTileCacheBuilder.h:31
virtual void reset()
Definition: DetourTileCacheBuilder.h:83
unsigned char maxx
Definition: DetourTileCacheBuilder.h:41
navAreaMask * areaMasks
Per polygon flags.
Definition: DetourTileCacheBuilder.h:75
int tlayer
Definition: DetourTileCacheBuilder.h:37
unsigned char area
Definition: DetourTileCacheBuilder.h:59
void dtFreeTileCacheContourSet(dtTileCacheAlloc *alloc, dtTileCacheContourSet *cset)
Definition: DetourTileCacheBuilder.cpp:68
dtStatus dtBuildTileCacheContours(dtTileCacheAlloc *alloc, dtTileCacheLayer &layer, const int walkableClimb, const float maxError, dtTileCacheContourSet &lcset)
Definition: DetourTileCacheBuilder.cpp:740
dtTileCacheContour * conts
Definition: DetourTileCacheBuilder.h:65
unsigned char * verts
Definition: DetourTileCacheBuilder.h:57
static const int DT_TILECACHE_MAGIC
'DTLR';
Definition: DetourTileCacheBuilder.h:26
Definition: DetourTileCacheBuilder.h:62
Definition: DetourTileCacheBuilder.h:98
void dtFree(void *ptr)
Deallocates a memory block.
Definition: DetourAlloc.cpp:46
unsigned short hmin
Definition: DetourTileCacheBuilder.h:39