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;