[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [28844] branches/soc-2010-nicks: added RecastNavigation library as extern project
Nick Samarin
nicks1987 at bigmir.net
Wed May 19 03:01:22 CEST 2010
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 memon at 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 memon at 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 memon at 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. @@
More information about the Bf-blender-cvs
mailing list