diff --git a/Detour/Include/DetourObstacleAvoidance.h b/Detour/Include/DetourObstacleAvoidance.h
index 4f5165d..ec66cac 100644
--- a/Detour/Include/DetourObstacleAvoidance.h
+++ b/Detour/Include/DetourObstacleAvoidance.h
@@ -100,7 +100,7 @@ public:
inline void setCurrentVelocityWeight(float w) { m_weightCurVel = w; }
inline void setPreferredSideWeight(float w) { m_weightSide = w; }
inline void setCollisionTimeWeight(float w) { m_weightToi = w; }
- inline void setTimeHorizon(float t) { m_horizTime = t; }
+ inline void setTimeHorizon(float t) { m_horizTime = t; }
void sampleVelocity(const float* pos, const float rad, const float vmax,
const float* vel, const float* dvel,
diff --git a/Detour/Source/DetourObstacleAvoidance.cpp b/Detour/Source/DetourObstacleAvoidance.cpp
index c5610a9..808bc22 100644
--- a/Detour/Source/DetourObstacleAvoidance.cpp
+++ b/Detour/Source/DetourObstacleAvoidance.cpp
@@ -513,6 +513,9 @@ void dtObstacleAvoidanceQuery::sampleVelocity(const float* pos, const float rad,
}
}
+
+static const float DT_PI = 3.14159265f;
+
void dtObstacleAvoidanceQuery::sampleVelocityAdaptive(const float* pos, const float rad, const float vmax,
const float* vel, const float* dvel,
float* nvel,
@@ -527,41 +530,67 @@ void dtObstacleAvoidanceQuery::sampleVelocityAdaptive(const float* pos, const fl
// First sample location.
float res[3];
- dtVset(res, dvel[0] * m_velBias, 0, vel[2] * m_velBias);
- float cs = vmax * (2 - m_velBias*2) / (float)(m_gridSize-1);
+ dtVset(res, dvel[0] * m_velBias, 0, dvel[2] * m_velBias);
+
+ // Build sampling pattern aligned to desired velocity.
+ static const int MAX_PATTERN_SIZE = 32;
+ float pat[MAX_PATTERN_SIZE*2];
+ int npat = 0;
+
+ // Always add sample at zero
+ pat[npat*2+0] = 0;
+ pat[npat*2+1] = 0;
+ npat++;
+
+ const int nring = dtClamp(m_gridSize, 1, MAX_PATTERN_SIZE);
+ const float sring = (1.0f/nring) * DT_PI*2;
+ const float dang = atan2f(dvel[2], dvel[0]);
+
+ for (int i = 0; i < nring; ++i)
+ {
+ const float a = dang + (float)(i+0.5f)*sring;
+ pat[npat*2+0] = cosf(a)*0.5f;
+ pat[npat*2+1] = sinf(a)*0.5f;
+ npat++;
+ }
+ for (int i = 0; i < nring; ++i)
+ {
+ const float a = dang + (float)i * sring;
+ pat[npat*2+0] = cosf(a);
+ pat[npat*2+1] = sinf(a);
+ npat++;
+ }
+
+
+ float cr = vmax * (1.0f-m_velBias);
for (int k = 0; k < m_gridDepth; ++k)
{
- const float half = (m_gridSize-1)*cs*0.5f;
-
float minPenalty = FLT_MAX;
float bvel[3];
dtVset(bvel, 0,0,0);
-
- for (int y = 0; y < m_gridSize; ++y)
+
+ for (int i = 0; i < npat; ++i)
{
- for (int x = 0; x < m_gridSize; ++x)
+ float vcand[3];
+ vcand[0] = res[0] + pat[i*2+0]*cr;
+ vcand[1] = 0;
+ vcand[2] = res[2] + pat[i*2+1]*cr;
+
+ if (dtSqr(vcand[0])+dtSqr(vcand[2]) > dtSqr(vmax+0.001f)) continue;
+
+ const float penalty = processSample(vcand,cr/10, pos,rad,vmax,vel,dvel, debug);
+ if (penalty < minPenalty)
{
- float vcand[3];
- vcand[0] = res[0] + x*cs - half;
- vcand[1] = 0;
- vcand[2] = res[2] + y*cs - half;
-
- if (dtSqr(vcand[0])+dtSqr(vcand[2]) > dtSqr(vmax+cs/2)) continue;
-
- const float penalty = processSample(vcand,cs, pos,rad,vmax,vel,dvel, debug);
- if (penalty < minPenalty)
- {
- minPenalty = penalty;
- dtVcopy(bvel, vcand);
- }
+ minPenalty = penalty;
+ dtVcopy(bvel, vcand);
}
}
-
+
dtVcopy(res, bvel);
-
- cs *= 0.5f;
- }
+
+ cr *= 0.5f;
+ }
dtVcopy(nvel, res);
}
diff --git a/RecastDemo/Bin/Recast.app/Contents/MacOS/Recast b/RecastDemo/Bin/Recast.app/Contents/MacOS/Recast
index 7efe03c..0cfd163 100755
Binary files a/RecastDemo/Bin/Recast.app/Contents/MacOS/Recast and b/RecastDemo/Bin/Recast.app/Contents/MacOS/Recast differ
diff --git a/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.pbxuser b/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.pbxuser
index abd0045..ff00036 100644
--- a/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.pbxuser
+++ b/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.pbxuser
@@ -207,6 +207,28 @@
6B1635DB1268881A0083FC15 /* PBXTextBookmark */ = 6B1635DB1268881A0083FC15 /* PBXTextBookmark */;
6B1635DC1268882D0083FC15 /* PBXTextBookmark */ = 6B1635DC1268882D0083FC15 /* PBXTextBookmark */;
6B1635DF1268887E0083FC15 /* PBXTextBookmark */ = 6B1635DF1268887E0083FC15 /* PBXTextBookmark */;
+ 6B1635E612688D1B0083FC15 /* PBXTextBookmark */ = 6B1635E612688D1B0083FC15 /* PBXTextBookmark */;
+ 6B1635E712688D1B0083FC15 /* PBXTextBookmark */ = 6B1635E712688D1B0083FC15 /* PBXTextBookmark */;
+ 6B1635E812688D1B0083FC15 /* PBXTextBookmark */ = 6B1635E812688D1B0083FC15 /* PBXTextBookmark */;
+ 6B1635E912688D1B0083FC15 /* PBXTextBookmark */ = 6B1635E912688D1B0083FC15 /* PBXTextBookmark */;
+ 6B1635EA12688D1B0083FC15 /* PBXTextBookmark */ = 6B1635EA12688D1B0083FC15 /* PBXTextBookmark */;
+ 6B1635F712688D880083FC15 /* PBXTextBookmark */ = 6B1635F712688D880083FC15 /* PBXTextBookmark */;
+ 6B1635FB12688DBE0083FC15 /* PBXTextBookmark */ = 6B1635FB12688DBE0083FC15 /* PBXTextBookmark */;
+ 6B1635FF12688E740083FC15 /* PBXTextBookmark */ = 6B1635FF12688E740083FC15 /* PBXTextBookmark */;
+ 6B16360312688EB40083FC15 /* PBXTextBookmark */ = 6B16360312688EB40083FC15 /* PBXTextBookmark */;
+ 6B1636051268911A0083FC15 /* PBXTextBookmark */ = 6B1636051268911A0083FC15 /* PBXTextBookmark */;
+ 6B1636061268911A0083FC15 /* PBXTextBookmark */ = 6B1636061268911A0083FC15 /* PBXTextBookmark */;
+ 6B1636071268911A0083FC15 /* PBXTextBookmark */ = 6B1636071268911A0083FC15 /* PBXTextBookmark */;
+ 6B163608126891A40083FC15 /* PBXTextBookmark */ = 6B163608126891A40083FC15 /* PBXTextBookmark */;
+ 6B163609126891A40083FC15 /* PBXTextBookmark */ = 6B163609126891A40083FC15 /* PBXTextBookmark */;
+ 6B16360A126891A40083FC15 /* PBXTextBookmark */ = 6B16360A126891A40083FC15 /* PBXTextBookmark */;
+ 6B16360B126891A40083FC15 /* PBXTextBookmark */ = 6B16360B126891A40083FC15 /* PBXTextBookmark */;
+ 6B16360C126891A40083FC15 /* PBXTextBookmark */ = 6B16360C126891A40083FC15 /* PBXTextBookmark */;
+ 6B16360D126891A40083FC15 /* PBXTextBookmark */ = 6B16360D126891A40083FC15 /* PBXTextBookmark */;
+ 6B16360E126891A40083FC15 /* PBXTextBookmark */ = 6B16360E126891A40083FC15 /* PBXTextBookmark */;
+ 6B163611126892060083FC15 /* PBXTextBookmark */ = 6B163611126892060083FC15 /* PBXTextBookmark */;
+ 6B163612126892060083FC15 /* PBXTextBookmark */ = 6B163612126892060083FC15 /* PBXTextBookmark */;
+ 6B163613126892060083FC15 /* PBXTextBookmark */ = 6B163613126892060083FC15 /* PBXTextBookmark */;
6B1C8E08121EB4FF0048697F = 6B1C8E08121EB4FF0048697F /* PBXTextBookmark */;
6B4214D911803923006C347B = 6B4214D911803923006C347B /* PBXTextBookmark */;
6B847515122B9F4900ADF63D = 6B847515122B9F4900ADF63D /* PBXTextBookmark */;
@@ -401,9 +423,9 @@
};
6B137C7E0F7FCBFE00459200 /* Recast.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {931, 9087}}";
+ sepNavIntBoundsRect = "{{0, 0}, {931, 9555}}";
sepNavSelRange = "{12869, 0}";
- sepNavVisRange = "{12510, 812}";
+ sepNavVisRange = "{12440, 883}";
sepNavWindowFrame = "{{15, 51}, {1214, 722}}";
};
};
@@ -707,7 +729,7 @@
fRef = 6B9EFF0812281C3E00535FF1 /* DetourObstacleAvoidance.cpp */;
name = "DetourObstacleAvoidance.cpp: 529";
rLen = 0;
- rLoc = 12772;
+ rLoc = 12814;
rType = 0;
vrLen = 920;
vrLoc = 12687;
@@ -981,7 +1003,7 @@
fRef = 6BD667D9123D28100021A7A4 /* CrowdManager.cpp */;
name = "CrowdManager.cpp: 1034";
rLen = 0;
- rLoc = 24844;
+ rLoc = 24885;
rType = 0;
vrLen = 957;
vrLoc = 24441;
@@ -1205,6 +1227,226 @@
vrLen = 1288;
vrLoc = 11723;
};
+ 6B1635E612688D1B0083FC15 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */;
+ name = "DetourNavMesh.h: 306";
+ rLen = 0;
+ rLoc = 12197;
+ rType = 0;
+ vrLen = 1206;
+ vrLoc = 11852;
+ };
+ 6B1635E712688D1B0083FC15 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B9EFF02122819E200535FF1 /* DetourObstacleAvoidance.h */;
+ name = "DetourObstacleAvoidance.h: 132";
+ rLen = 0;
+ rLoc = 4746;
+ rType = 0;
+ vrLen = 1464;
+ vrLoc = 3424;
+ };
+ 6B1635E812688D1B0083FC15 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B137C7E0F7FCBFE00459200 /* Recast.h */;
+ name = "Recast.h: 358";
+ rLen = 0;
+ rLoc = 12869;
+ rType = 0;
+ vrLen = 883;
+ vrLoc = 12440;
+ };
+ 6B1635E912688D1B0083FC15 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B9EFF0812281C3E00535FF1 /* DetourObstacleAvoidance.cpp */;
+ name = "DetourObstacleAvoidance.cpp: 586";
+ rLen = 0;
+ rLoc = 13501;
+ rType = 0;
+ vrLen = 694;
+ vrLoc = 13501;
+ };
+ 6B1635EA12688D1B0083FC15 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B9EFF0812281C3E00535FF1 /* DetourObstacleAvoidance.cpp */;
+ name = "DetourObstacleAvoidance.cpp: 607";
+ rLen = 0;
+ rLoc = 13880;
+ rType = 0;
+ vrLen = 833;
+ vrLoc = 13817;
+ };
+ 6B1635F712688D880083FC15 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B9EFF0812281C3E00535FF1 /* DetourObstacleAvoidance.cpp */;
+ name = "DetourObstacleAvoidance.cpp: 625";
+ rLen = 0;
+ rLoc = 14179;
+ rType = 0;
+ vrLen = 659;
+ vrLoc = 14120;
+ };
+ 6B1635FB12688DBE0083FC15 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B9EFF0812281C3E00535FF1 /* DetourObstacleAvoidance.cpp */;
+ name = "DetourObstacleAvoidance.cpp: 610";
+ rLen = 0;
+ rLoc = 13876;
+ rType = 0;
+ vrLen = 659;
+ vrLoc = 14120;
+ };
+ 6B1635FF12688E740083FC15 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B9EFF0812281C3E00535FF1 /* DetourObstacleAvoidance.cpp */;
+ name = "DetourObstacleAvoidance.cpp: 614";
+ rLen = 0;
+ rLoc = 14011;
+ rType = 0;
+ vrLen = 660;
+ vrLoc = 14120;
+ };
+ 6B16360312688EB40083FC15 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B9EFF0812281C3E00535FF1 /* DetourObstacleAvoidance.cpp */;
+ name = "DetourObstacleAvoidance.cpp: 580";
+ rLen = 0;
+ rLoc = 13113;
+ rType = 0;
+ vrLen = 763;
+ vrLoc = 13692;
+ };
+ 6B1636051268911A0083FC15 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B9EFF02122819E200535FF1 /* DetourObstacleAvoidance.h */;
+ name = "DetourObstacleAvoidance.h: 96";
+ rLen = 10;
+ rLoc = 3207;
+ rType = 0;
+ vrLen = 1819;
+ vrLoc = 3088;
+ };
+ 6B1636061268911A0083FC15 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B9EFF0812281C3E00535FF1 /* DetourObstacleAvoidance.cpp */;
+ name = "DetourObstacleAvoidance.cpp: 600";
+ rLen = 0;
+ rLoc = 13656;
+ rType = 0;
+ vrLen = 1025;
+ vrLoc = 13627;
+ };
+ 6B1636071268911A0083FC15 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B9EFF0812281C3E00535FF1 /* DetourObstacleAvoidance.cpp */;
+ name = "DetourObstacleAvoidance.cpp: 594";
+ rLen = 0;
+ rLoc = 13464;
+ rType = 0;
+ vrLen = 924;
+ vrLoc = 13516;
+ };
+ 6B163608126891A40083FC15 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B9EFF02122819E200535FF1 /* DetourObstacleAvoidance.h */;
+ name = "DetourObstacleAvoidance.h: 96";
+ rLen = 10;
+ rLoc = 3207;
+ rType = 0;
+ vrLen = 1819;
+ vrLoc = 3088;
+ };
+ 6B163609126891A40083FC15 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B9EFF0812281C3E00535FF1 /* DetourObstacleAvoidance.cpp */;
+ name = "DetourObstacleAvoidance.cpp: 605";
+ rLen = 0;
+ rLoc = 13657;
+ rType = 0;
+ vrLen = 1067;
+ vrLoc = 13632;
+ };
+ 6B16360A126891A40083FC15 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B324C64111C5D9A00EBD2FD /* ConvexVolumeTool.h */;
+ name = "ConvexVolumeTool.h: 43";
+ rLen = 0;
+ rLoc = 1384;
+ rType = 0;
+ vrLen = 1504;
+ vrLoc = 249;
+ };
+ 6B16360B126891A40083FC15 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BAF3C581211663A008CFCDF /* CrowdTool.cpp */;
+ name = "CrowdTool.cpp: 41";
+ rLen = 1095;
+ rLoc = 1351;
+ rType = 0;
+ vrLen = 1225;
+ vrLoc = 1742;
+ };
+ 6B16360C126891A40083FC15 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BD667D8123D27EC0021A7A4 /* CrowdManager.h */;
+ name = "CrowdManager.h: 232";
+ rLen = 0;
+ rLoc = 5681;
+ rType = 0;
+ vrLen = 908;
+ vrLoc = 5232;
+ };
+ 6B16360D126891A40083FC15 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BD667D9123D28100021A7A4 /* CrowdManager.cpp */;
+ name = "CrowdManager.cpp: 33";
+ rLen = 0;
+ rLoc = 1288;
+ rType = 0;
+ vrLen = 1286;
+ vrLoc = 446;
+ };
+ 6B16360E126891A40083FC15 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BD667D9123D28100021A7A4 /* CrowdManager.cpp */;
+ name = "CrowdManager.cpp: 35";
+ rLen = 0;
+ rLoc = 1417;
+ rType = 0;
+ vrLen = 1286;
+ vrLoc = 446;
+ };
+ 6B163611126892060083FC15 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BD667D9123D28100021A7A4 /* CrowdManager.cpp */;
+ name = "CrowdManager.cpp: 35";
+ rLen = 0;
+ rLoc = 1417;
+ rType = 0;
+ vrLen = 1286;
+ vrLoc = 446;
+ };
+ 6B163612126892060083FC15 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B9EFF0812281C3E00535FF1 /* DetourObstacleAvoidance.cpp */;
+ name = "DetourObstacleAvoidance.cpp: 605";
+ rLen = 0;
+ rLoc = 13657;
+ rType = 0;
+ vrLen = 1067;
+ vrLoc = 13632;
+ };
+ 6B163613126892060083FC15 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B9EFF0812281C3E00535FF1 /* DetourObstacleAvoidance.cpp */;
+ name = "DetourObstacleAvoidance.cpp: 574";
+ rLen = 0;
+ rLoc = 13769;
+ rType = 0;
+ vrLen = 905;
+ vrLoc = 13302;
+ };
6B1C8E08121EB4FF0048697F /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */;
@@ -1255,9 +1497,9 @@
};
6B324C64111C5D9A00EBD2FD /* ConvexVolumeTool.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {933, 880}}";
+ sepNavIntBoundsRect = "{{0, 0}, {931, 715}}";
sepNavSelRange = "{1384, 0}";
- sepNavVisRange = "{999, 754}";
+ sepNavVisRange = "{249, 1504}";
};
};
6B324C65111C5D9A00EBD2FD /* ConvexVolumeTool.cpp */ = {
@@ -1522,8 +1764,8 @@
6B8DE88B10B69E4C00DF20FB /* DetourNavMesh.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {931, 5278}}";
- sepNavSelRange = "{12637, 0}";
- sepNavVisRange = "{11723, 1288}";
+ sepNavSelRange = "{12197, 0}";
+ sepNavVisRange = "{11852, 1206}";
};
};
6B8DE88C10B69E4C00DF20FB /* DetourNavMeshBuilder.h */ = {
@@ -1663,16 +1905,16 @@
};
6B9EFF02122819E200535FF1 /* DetourObstacleAvoidance.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {933, 2352}}";
- sepNavSelRange = "{2796, 24}";
- sepNavVisRange = "{2788, 1084}";
+ sepNavIntBoundsRect = "{{0, 0}, {931, 1963}}";
+ sepNavSelRange = "{3207, 10}";
+ sepNavVisRange = "{3088, 1819}";
};
};
6B9EFF0812281C3E00535FF1 /* DetourObstacleAvoidance.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {931, 7397}}";
- sepNavSelRange = "{12772, 0}";
- sepNavVisRange = "{12687, 920}";
+ sepNavIntBoundsRect = "{{0, 0}, {931, 7748}}";
+ sepNavSelRange = "{13769, 0}";
+ sepNavVisRange = "{13302, 905}";
};
};
6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */ = {
@@ -1955,7 +2197,7 @@
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {931, 8008}}";
sepNavSelRange = "{1351, 1095}";
- sepNavVisRange = "{1878, 995}";
+ sepNavVisRange = "{1742, 1225}";
sepNavWindowFrame = "{{15, 51}, {1214, 722}}";
};
};
@@ -2240,7 +2482,7 @@
fRef = 6BD667D9123D28100021A7A4 /* CrowdManager.cpp */;
name = "CrowdManager.cpp: 493";
rLen = 0;
- rLoc = 11581;
+ rLoc = 11622;
rType = 0;
vrLen = 1249;
vrLoc = 11428;
@@ -2599,16 +2841,16 @@
};
6BD667D8123D27EC0021A7A4 /* CrowdManager.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {1041, 3796}}";
+ sepNavIntBoundsRect = "{{0, 0}, {1041, 3718}}";
sepNavSelRange = "{5681, 0}";
- sepNavVisRange = "{5284, 763}";
+ sepNavVisRange = "{5232, 908}";
};
};
6BD667D9123D28100021A7A4 /* CrowdManager.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {931, 16172}}";
- sepNavSelRange = "{24844, 0}";
- sepNavVisRange = "{24441, 957}";
+ sepNavIntBoundsRect = "{{0, 0}, {931, 16445}}";
+ sepNavSelRange = "{1417, 0}";
+ sepNavVisRange = "{446, 1286}";
};
};
6BD667FF123D2D230021A7A4 /* PBXTextBookmark */ = {
diff --git a/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.perspectivev3 b/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.perspectivev3
index 6396a7b..9437ccc 100644
--- a/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.perspectivev3
+++ b/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.perspectivev3
@@ -284,14 +284,14 @@
PBXSmartGroupTreeModuleOutlineStateSelectionKey
- 15
+ 26
11
1
0
PBXSmartGroupTreeModuleOutlineStateVisibleRectKey
- {{0, 0}, {264, 660}}
+ {{0, 238}, {264, 660}}
PBXTopSmartGroupGIDs
@@ -326,7 +326,7 @@
PBXProjectModuleGUID
6B8632A30F78115100E2684A
PBXProjectModuleLabel
- DetourNavMesh.h
+ DetourObstacleAvoidance.cpp
PBXSplitModuleInNavigatorKey
Split0
@@ -334,11 +334,11 @@
PBXProjectModuleGUID
6B8632A40F78115100E2684A
PBXProjectModuleLabel
- DetourNavMesh.h
+ DetourObstacleAvoidance.cpp
_historyCapacity
0
bookmark
- 6B1635DF1268887E0083FC15
+ 6B163613126892060083FC15
history
6BBB4C34115B7A3D00CF791D
@@ -368,12 +368,10 @@
6B920A521225C0AC00D5B5AD
6B920A6D1225C5DD00D5B5AD
6BA7F8EC1227002300C8C47A
- 6B8476F9122D000800ADF63D
6B847779122D223D00ADF63D
6B84778B122D279700ADF63D
6B8477BB122D297200ADF63D
6B8477E1122D2B9100ADF63D
- 6B8477EE122D2CC900ADF63D
6B8477FC122D2E2A00ADF63D
6B8477FE122D2E2A00ADF63D
6B8477FF122D2E2A00ADF63D
@@ -416,21 +414,23 @@
6B1633141268326F0083FC15
6B163317126832D20083FC15
6B16357012687A5D0083FC15
- 6B16357112687A5D0083FC15
6B16358E12687D740083FC15
6B16359012687D740083FC15
6B16359112687D740083FC15
- 6B16359D12687D980083FC15
- 6B1635B5126884520083FC15
- 6B1635B6126884520083FC15
6B1635B9126884520083FC15
6B1635BB126884520083FC15
6B1635C8126885AD0083FC15
- 6B1635C9126885AD0083FC15
6B1635D3126887C80083FC15
6B1635D4126887C80083FC15
6B1635D91268881A0083FC15
- 6B1635DA1268881A0083FC15
+ 6B1635E612688D1B0083FC15
+ 6B1635E812688D1B0083FC15
+ 6B163608126891A40083FC15
+ 6B16360A126891A40083FC15
+ 6B16360B126891A40083FC15
+ 6B16360C126891A40083FC15
+ 6B163611126892060083FC15
+ 6B163612126892060083FC15
SplitCount
@@ -444,18 +444,18 @@
GeometryConfiguration
Frame
- {{0, 0}, {992, 570}}
+ {{0, 0}, {992, 673}}
RubberWindowFrame
0 59 1278 719 0 0 1280 778
Module
PBXNavigatorGroup
Proportion
- 570pt
+ 673pt
Proportion
- 103pt
+ 0pt
Tabs
@@ -523,7 +523,7 @@
GeometryConfiguration
Frame
- {{10, 27}, {992, 76}}
+ {{10, 27}, {992, -27}}
RubberWindowFrame
0 59 1278 719 0 0 1280 778
diff --git a/RecastDemo/Source/CrowdManager.cpp b/RecastDemo/Source/CrowdManager.cpp
index 97f8eee..ec46d10 100644
--- a/RecastDemo/Source/CrowdManager.cpp
+++ b/RecastDemo/Source/CrowdManager.cpp
@@ -31,8 +31,9 @@
#include "DetourAssert.h"
#include "DetourAlloc.h"
-static const int VO_ADAPTIVE_GRID_SIZE = 4;
+static const int VO_ADAPTIVE_GRID_SIZE = 7; // this resuts 1+n*2 samples per depth.
static const int VO_ADAPTIVE_GRID_DEPTH = 5;
+
static const int VO_GRID_SIZE = 33;