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 RECASTSAMPLETEMPOBSTACLE_H 20 #define RECASTSAMPLETEMPOBSTACLE_H 21 22 #include "Sample.h" 23 #include "DetourNavMesh.h" 24 #include "Recast.h" 25 #include "ChunkyTriMesh.h" 26 27 28 class Sample_TempObstacles : public Sample 29 { 30 protected: 31 bool m_keepInterResults; 32 33 struct LinearAllocator* m_talloc; 34 struct FastLZCompressor* m_tcomp; 35 struct MeshProcess* m_tmproc; 36 37 class dtTileCache* m_tileCache; 38 39 float m_cacheBuildTimeMs; 40 int m_cacheCompressedSize; 41 int m_cacheRawSize; 42 int m_cacheLayerCount; 43 unsigned int m_cacheBuildMemUsage; 44 45 enum DrawMode 46 { 47 DRAWMODE_NAVMESH, 48 DRAWMODE_NAVMESH_TRANS, 49 DRAWMODE_NAVMESH_BVTREE, 50 DRAWMODE_NAVMESH_NODES, 51 DRAWMODE_NAVMESH_PORTALS, 52 DRAWMODE_NAVMESH_INVIS, 53 DRAWMODE_MESH, 54 DRAWMODE_CACHE_BOUNDS, 55 MAX_DRAWMODE 56 }; 57 58 DrawMode m_drawMode; 59 60 int m_maxTiles; 61 int m_maxPolysPerTile; 62 float m_tileSize; 63 64 public: 65 Sample_TempObstacles(); 66 virtual ~Sample_TempObstacles(); 67 68 virtual void handleSettings(); 69 virtual void handleTools(); 70 virtual void handleDebugMode(); 71 virtual void handleRender(); 72 virtual void handleRenderOverlay(double* proj, double* model, int* view); 73 virtual void handleMeshChanged(class InputGeom* geom); 74 virtual bool handleBuild(); 75 virtual void handleUpdate(const float dt); 76 77 void getTilePos(const float* pos, int& tx, int& ty); 78 79 void renderCachedTile(const int tx, const int ty, const int type); 80 void renderCachedTileOverlay(const int tx, const int ty, double* proj, double* model, int* view); 81 82 void addTempObstacle(const float* pos); 83 void removeTempObstacle(const float* sp, const float* sq); 84 void clearAllTempObstacles(); 85 86 void saveAll(const char* path); 87 void loadAll(const char* path); 88 89 private: 90 // Explicitly disabled copy constructor and copy assignment operator. 91 Sample_TempObstacles(const Sample_TempObstacles&); 92 Sample_TempObstacles& operator=(const Sample_TempObstacles&); 93 94 int rasterizeTileLayers(const int tx, const int ty, const rcConfig& cfg, struct TileCacheData* tiles, const int maxTiles); 95 }; 96 97 98 #endif // RECASTSAMPLETEMPOBSTACLE_H 99