Revision: 28844 http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=28844 Author: nicks Date: 2010-05-19 03:01:21 +0200 (Wed, 19 May 2010)
Log Message: ----------- added RecastNavigation library as extern project Modified Paths: -------------- branches/soc-2010-nicks/projectfiles_vc9/blender/blender.sln Added Paths: ----------- branches/soc-2010-nicks/extern/recastnavigation/ branches/soc-2010-nicks/extern/recastnavigation/Detour/ branches/soc-2010-nicks/extern/recastnavigation/Detour/Include/ branches/soc-2010-nicks/extern/recastnavigation/Detour/Include/DetourCommon.h branches/soc-2010-nicks/extern/recastnavigation/Detour/Include/DetourDebugDraw.h branches/soc-2010-nicks/extern/recastnavigation/Detour/Include/DetourNode.h branches/soc-2010-nicks/extern/recastnavigation/Detour/Include/DetourStatNavMesh.h branches/soc-2010-nicks/extern/recastnavigation/Detour/Include/DetourStatNavMeshBuilder.h branches/soc-2010-nicks/extern/recastnavigation/Detour/Include/DetourTileNavMesh.h branches/soc-2010-nicks/extern/recastnavigation/Detour/Include/DetourTileNavMeshBuilder.h branches/soc-2010-nicks/extern/recastnavigation/Detour/Source/ branches/soc-2010-nicks/extern/recastnavigation/Detour/Source/DetourCommon.cpp branches/soc-2010-nicks/extern/recastnavigation/Detour/Source/DetourDebugDraw.cpp branches/soc-2010-nicks/extern/recastnavigation/Detour/Source/DetourNode.cpp branches/soc-2010-nicks/extern/recastnavigation/Detour/Source/DetourStatNavMesh.cpp branches/soc-2010-nicks/extern/recastnavigation/Detour/Source/DetourStatNavMeshBuilder.cpp branches/soc-2010-nicks/extern/recastnavigation/Detour/Source/DetourTileNavMesh.cpp branches/soc-2010-nicks/extern/recastnavigation/Detour/Source/DetourTileNavMeshBuilder.cpp branches/soc-2010-nicks/extern/recastnavigation/License.txt branches/soc-2010-nicks/extern/recastnavigation/Readme.txt branches/soc-2010-nicks/extern/recastnavigation/Recast/ branches/soc-2010-nicks/extern/recastnavigation/Recast/Include/ branches/soc-2010-nicks/extern/recastnavigation/Recast/Include/Recast.h branches/soc-2010-nicks/extern/recastnavigation/Recast/Include/RecastDebugDraw.h branches/soc-2010-nicks/extern/recastnavigation/Recast/Include/RecastLog.h branches/soc-2010-nicks/extern/recastnavigation/Recast/Include/RecastTimer.h branches/soc-2010-nicks/extern/recastnavigation/Recast/Source/ branches/soc-2010-nicks/extern/recastnavigation/Recast/Source/Recast.cpp branches/soc-2010-nicks/extern/recastnavigation/Recast/Source/RecastContour.cpp branches/soc-2010-nicks/extern/recastnavigation/Recast/Source/RecastDebugDraw.cpp branches/soc-2010-nicks/extern/recastnavigation/Recast/Source/RecastFilter.cpp branches/soc-2010-nicks/extern/recastnavigation/Recast/Source/RecastLog.cpp branches/soc-2010-nicks/extern/recastnavigation/Recast/Source/RecastMesh.cpp branches/soc-2010-nicks/extern/recastnavigation/Recast/Source/RecastMeshDetail.cpp branches/soc-2010-nicks/extern/recastnavigation/Recast/Source/RecastRasterization.cpp branches/soc-2010-nicks/extern/recastnavigation/Recast/Source/RecastRegion.cpp branches/soc-2010-nicks/extern/recastnavigation/Recast/Source/RecastTimer.cpp branches/soc-2010-nicks/extern/recastnavigation/make/ branches/soc-2010-nicks/extern/recastnavigation/make/msvc_9_0/ branches/soc-2010-nicks/extern/recastnavigation/make/msvc_9_0/recastnavigation.vcproj Added: branches/soc-2010-nicks/extern/recastnavigation/Detour/Include/DetourCommon.h =================================================================== --- branches/soc-2010-nicks/extern/recastnavigation/Detour/Include/DetourCommon.h (rev 0) +++ branches/soc-2010-nicks/extern/recastnavigation/Detour/Include/DetourCommon.h 2010-05-19 01:01:21 UTC (rev 28844) @@ -0,0 +1,167 @@ +// +// Copyright (c) 2009 Mikko Mononen me...@inside.org +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would be +// appreciated but is not required. +// 2. Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// 3. This notice may not be removed or altered from any source distribution. +// + +#ifndef DETOURCOMMON_H +#define DETOURCOMMON_H + +////////////////////////////////////////////////////////////////////////////////////////// + +template<class T> inline void swap(T& a, T& b) { T t = a; a = b; b = t; } +template<class T> inline T min(T a, T b) { return a < b ? a : b; } +template<class T> inline T max(T a, T b) { return a > b ? a : b; } +template<class T> inline T abs(T a) { return a < 0 ? -a : a; } +template<class T> inline T sqr(T a) { return a*a; } +template<class T> inline T clamp(T v, T mn, T mx) { return v < mn ? mn : (v > mx ? mx : v); } + +inline void vcross(float* dest, const float* v1, const float* v2) +{ + dest[0] = v1[1]*v2[2] - v1[2]*v2[1]; + dest[1] = v1[2]*v2[0] - v1[0]*v2[2]; + dest[2] = v1[0]*v2[1] - v1[1]*v2[0]; +} + +inline float vdot(const float* v1, const float* v2) +{ + return v1[0]*v2[0] + v1[1]*v2[1] + v1[2]*v2[2]; +} + +inline void vmad(float* dest, const float* v1, const float* v2, const float s) +{ + dest[0] = v1[0]+v2[0]*s; + dest[1] = v1[1]+v2[1]*s; + dest[2] = v1[2]+v2[2]*s; +} + +inline void vadd(float* dest, const float* v1, const float* v2) +{ + dest[0] = v1[0]+v2[0]; + dest[1] = v1[1]+v2[1]; + dest[2] = v1[2]+v2[2]; +} + +inline void vsub(float* dest, const float* v1, const float* v2) +{ + dest[0] = v1[0]-v2[0]; + dest[1] = v1[1]-v2[1]; + dest[2] = v1[2]-v2[2]; +} + +inline void vmin(float* mn, const float* v) +{ + mn[0] = min(mn[0], v[0]); + mn[1] = min(mn[1], v[1]); + mn[2] = min(mn[2], v[2]); +} + +inline void vmax(float* mx, const float* v) +{ + mx[0] = max(mx[0], v[0]); + mx[1] = max(mx[1], v[1]); + mx[2] = max(mx[2], v[2]); +} + +inline void vcopy(float* dest, const float* a) +{ + dest[0] = a[0]; + dest[1] = a[1]; + dest[2] = a[2]; +} + +inline float vdist(const float* v1, const float* v2) +{ + float dx = v2[0] - v1[0]; + float dy = v2[1] - v1[1]; + float dz = v2[2] - v1[2]; + return sqrtf(dx*dx + dy*dy + dz*dz); +} + +inline float vdistSqr(const float* v1, const float* v2) +{ + float dx = v2[0] - v1[0]; + float dy = v2[1] - v1[1]; + float dz = v2[2] - v1[2]; + return dx*dx + dy*dy + dz*dz; +} + +inline void vnormalize(float* v) +{ + float d = 1.0f / sqrtf(sqr(v[0]) + sqr(v[1]) + sqr(v[2])); + v[0] *= d; + v[1] *= d; + v[2] *= d; +} + +inline bool vequal(const float* p0, const float* p1) +{ + static const float thr = sqr(1.0f/16384.0f); + const float d = vdistSqr(p0, p1); + return d < thr; +} + +inline int nextPow2(int v) +{ + v--; + v |= v >> 1; + v |= v >> 2; + v |= v >> 4; + v |= v >> 8; + v |= v >> 16; + v++; + return v; +} + +inline float vdot2D(const float* u, const float* v) +{ + return u[0]*v[0] + u[2]*v[2]; +} + +inline float vperp2D(const float* u, const float* v) +{ + return u[2]*v[0] - u[0]*v[2]; +} + +inline float triArea2D(const float* a, const float* b, const float* c) +{ + return ((b[0]*a[2] - a[0]*b[2]) + (c[0]*b[2] - b[0]*c[2]) + (a[0]*c[2] - c[0]*a[2])) * 0.5f; +} + +inline bool checkOverlapBox(const unsigned short amin[3], const unsigned short amax[3], + const unsigned short bmin[3], const unsigned short bmax[3]) +{ + bool overlap = true; + overlap = (amin[0] > bmax[0] || amax[0] < bmin[0]) ? false : overlap; + overlap = (amin[1] > bmax[1] || amax[1] < bmin[1]) ? false : overlap; + overlap = (amin[2] > bmax[2] || amax[2] < bmin[2]) ? false : overlap; + return overlap; +} + +void closestPtPointTriangle(float* closest, const float* p, + const float* a, const float* b, const float* c); + +bool closestHeightPointTriangle(const float* p, const float* a, const float* b, const float* c, float& h); + +bool intersectSegmentPoly2D(const float* p0, const float* p1, + const float* verts, int nverts, + float& tmin, float& tmax, + int& segMin, int& segMax); + +float distancePtSegSqr2D(const float* pt, const float* p, const float* q, float& t); + +void calcPolyCenter(float* tc, const unsigned short* idx, int nidx, const float* verts); + +#endif // DETOURCOMMON_H \ No newline at end of file Added: branches/soc-2010-nicks/extern/recastnavigation/Detour/Include/DetourDebugDraw.h =================================================================== --- branches/soc-2010-nicks/extern/recastnavigation/Detour/Include/DetourDebugDraw.h (rev 0) +++ branches/soc-2010-nicks/extern/recastnavigation/Detour/Include/DetourDebugDraw.h 2010-05-19 01:01:21 UTC (rev 28844) @@ -0,0 +1,32 @@ +// +// Copyright (c) 2009 Mikko Mononen me...@inside.org +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would be +// appreciated but is not required. +// 2. Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// 3. This notice may not be removed or altered from any source distribution. +// + +#ifndef DETOURDEBUGDRAW_H +#define DETOURDEBUGDRAW_H + +#include "DetourStatNavMesh.h" +#include "DetourTileNavMesh.h" + +void dtDebugDrawStatNavMeshPoly(const dtStatNavMesh* mesh, dtStatPolyRef ref, const float* col); +void dtDebugDrawStatNavMeshBVTree(const dtStatNavMesh* mesh); +void dtDebugDrawStatNavMesh(const dtStatNavMesh* mesh, bool drawClosedList = false); + +void dtDebugDrawTiledNavMesh(const dtTiledNavMesh* mesh); +void dtDebugDrawTiledNavMeshPoly(const dtTiledNavMesh* mesh, dtTilePolyRef ref, const float* col); + +#endif // DETOURDEBUGDRAW_H \ No newline at end of file Added: branches/soc-2010-nicks/extern/recastnavigation/Detour/Include/DetourNode.h =================================================================== --- branches/soc-2010-nicks/extern/recastnavigation/Detour/Include/DetourNode.h (rev 0) +++ branches/soc-2010-nicks/extern/recastnavigation/Detour/Include/DetourNode.h 2010-05-19 01:01:21 UTC (rev 28844) @@ -0,0 +1,149 @@ +// +// Copyright (c) 2009 Mikko Mononen me...@inside.org +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would be +// appreciated but is not required. +// 2. Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// 3. This notice may not be removed or altered from any source distribution. +// + +#ifndef DETOURNODE_H +#define DETOURNODE_H + +enum dtNodeFlags +{ + DT_NODE_OPEN = 0x01, + DT_NODE_CLOSED = 0x02, +}; + +struct dtNode +{ + float cost; + float total; + unsigned int id; + unsigned int pidx : 30; + unsigned int flags : 2; +}; + +class dtNodePool +{ +public: + dtNodePool(int maxNodes, int hashSize); + ~dtNodePool(); + inline void operator=(const dtNodePool&) {} + void clear(); + dtNode* getNode(unsigned int id); + const dtNode* findNode(unsigned int id) const; + + inline unsigned int getNodeIdx(const dtNode* node) const + { + if (!node) return 0; + return (unsigned int)(node - m_nodes)+1; + } + + inline dtNode* getNodeAtIdx(unsigned int idx) + { + if (!idx) return 0; + return &m_nodes[idx-1]; + } + + inline int getMemUsed() const + { + return sizeof(*this) + + sizeof(dtNode)*m_maxNodes + + sizeof(unsigned short)*m_maxNodes + + sizeof(unsigned short)*m_hashSize; + } + +private: + inline unsigned int hashint(unsigned int a) const + { + a += ~(a<<15); + a ^= (a>>10); + a += (a<<3); + a ^= (a>>6); + a += ~(a<<11); + a ^= (a>>16); + return a; + } + + dtNode* m_nodes; + unsigned short* m_first; + unsigned short* m_next; + const int m_maxNodes; + const int m_hashSize; + int m_nodeCount; +}; + +class dtNodeQueue +{ +public: + dtNodeQueue(int n); + ~dtNodeQueue(); + inline void operator=(dtNodeQueue&) {} + + inline void clear() + { + m_size = 0; + } + + inline dtNode* top() + { + return m_heap[0]; + } + + inline dtNode* pop() + { + dtNode* result = m_heap[0]; + m_size--; + trickleDown(0, m_heap[m_size]); + return result; + } + + inline void push(dtNode* node) + { + m_size++; + bubbleUp(m_size-1, node); + } + + inline void modify(dtNode* node) + { + for (int i = 0; i < m_size; ++i) + { + if (m_heap[i] == node) + { + bubbleUp(i, node); + return; + } + } + } + + inline bool empty() const { return m_size == 0; } + + inline int getMemUsed() const + { + return sizeof(*this) + + sizeof(dtNode*)*(m_capacity+1); + } + + +private: @@ Diff output truncated at 10240 characters. @@ _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs