[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