diff --git a/RecastDemo/Bin/Recast.app/Contents/MacOS/Recast b/RecastDemo/Bin/Recast.app/Contents/MacOS/Recast
index 8a74e85..176761e 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 a579f59..8487f13 100644
--- a/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.pbxuser
+++ b/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.pbxuser
@@ -212,6 +212,17 @@
6B8D55E1127AAD060077C699 /* PBXTextBookmark */ = 6B8D55E1127AAD060077C699 /* PBXTextBookmark */;
6B8D55E3127AAE590077C699 /* PBXTextBookmark */ = 6B8D55E3127AAE590077C699 /* PBXTextBookmark */;
6B8D55EA127AAE680077C699 /* PBXTextBookmark */ = 6B8D55EA127AAE680077C699 /* PBXTextBookmark */;
+ 6B8D55F2127ABAD40077C699 /* PBXTextBookmark */ = 6B8D55F2127ABAD40077C699 /* PBXTextBookmark */;
+ 6B8D55F3127ABAD40077C699 /* PBXTextBookmark */ = 6B8D55F3127ABAD40077C699 /* PBXTextBookmark */;
+ 6B8D55F4127ABAD40077C699 /* PBXTextBookmark */ = 6B8D55F4127ABAD40077C699 /* PBXTextBookmark */;
+ 6B8D55F5127ABAD40077C699 /* PBXTextBookmark */ = 6B8D55F5127ABAD40077C699 /* PBXTextBookmark */;
+ 6B8D55F6127ABAD40077C699 /* PBXTextBookmark */ = 6B8D55F6127ABAD40077C699 /* PBXTextBookmark */;
+ 6B8D55F9127ABB6B0077C699 /* PBXTextBookmark */ = 6B8D55F9127ABB6B0077C699 /* PBXTextBookmark */;
+ 6B8D55FD127ABBCB0077C699 /* PBXTextBookmark */ = 6B8D55FD127ABBCB0077C699 /* PBXTextBookmark */;
+ 6B8D55FE127ABBCB0077C699 /* PBXTextBookmark */ = 6B8D55FE127ABBCB0077C699 /* PBXTextBookmark */;
+ 6B8D5603127ABBD80077C699 /* PBXTextBookmark */ = 6B8D5603127ABBD80077C699 /* PBXTextBookmark */;
+ 6B8D5604127ABBD80077C699 /* XCBuildMessageTextBookmark */ = 6B8D5604127ABBD80077C699 /* XCBuildMessageTextBookmark */;
+ 6B8D5605127ABBD80077C699 /* PBXTextBookmark */ = 6B8D5605127ABBD80077C699 /* PBXTextBookmark */;
6B920A521225C0AC00D5B5AD = 6B920A521225C0AC00D5B5AD /* PBXTextBookmark */;
6B920A6D1225C5DD00D5B5AD = 6B920A6D1225C5DD00D5B5AD /* PBXTextBookmark */;
6B98462E11E6141900FA177B = 6B98462E11E6141900FA177B /* PBXTextBookmark */;
@@ -992,8 +1003,8 @@
isa = PBXTextBookmark;
fRef = 6BAF3C571211663A008CFCDF /* CrowdTool.h */;
name = "CrowdTool.h: 65";
- rLen = 20;
- rLoc = 1732;
+ rLen = 0;
+ rLoc = 1737;
rType = 0;
vrLen = 819;
vrLoc = 1128;
@@ -1003,7 +1014,7 @@
fRef = 6BAF3C581211663A008CFCDF /* CrowdTool.cpp */;
name = "CrowdTool.cpp: 145";
rLen = 0;
- rLoc = 3716;
+ rLoc = 3702;
rType = 0;
vrLen = 889;
vrLoc = 3056;
@@ -1013,7 +1024,7 @@
fRef = 6BAF3C581211663A008CFCDF /* CrowdTool.cpp */;
name = "CrowdTool.cpp: 269";
rLen = 0;
- rLoc = 7053;
+ rLoc = 7253;
rType = 0;
vrLen = 1289;
vrLoc = 6303;
@@ -1023,7 +1034,7 @@
fRef = 6BAF3C581211663A008CFCDF /* CrowdTool.cpp */;
name = "CrowdTool.cpp: 269";
rLen = 0;
- rLoc = 7053;
+ rLoc = 7253;
rType = 0;
vrLen = 1289;
vrLoc = 6303;
@@ -1433,6 +1444,115 @@
vrLen = 1151;
vrLoc = 11524;
};
+ 6B8D55F2127ABAD40077C699 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BD667D9123D28100021A7A4 /* CrowdManager.cpp */;
+ name = "CrowdManager.cpp: 521";
+ rLen = 0;
+ rLoc = 11932;
+ rType = 0;
+ vrLen = 1220;
+ vrLoc = 11524;
+ };
+ 6B8D55F3127ABAD40077C699 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BD667D8123D27EC0021A7A4 /* CrowdManager.h */;
+ name = "CrowdManager.h: 307";
+ rLen = 0;
+ rLoc = 7186;
+ rType = 0;
+ vrLen = 1731;
+ vrLoc = 6316;
+ };
+ 6B8D55F4127ABAD40077C699 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BAF3C571211663A008CFCDF /* CrowdTool.h */;
+ name = "CrowdTool.h: 64";
+ rLen = 20;
+ rLoc = 1715;
+ rType = 0;
+ vrLen = 968;
+ vrLoc = 1262;
+ };
+ 6B8D55F5127ABAD40077C699 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BAF3C581211663A008CFCDF /* CrowdTool.cpp */;
+ name = "CrowdTool.cpp: 265";
+ rLen = 0;
+ rLoc = 7253;
+ rType = 0;
+ vrLen = 1392;
+ vrLoc = 6205;
+ };
+ 6B8D55F6127ABAD40077C699 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BAF3C581211663A008CFCDF /* CrowdTool.cpp */;
+ name = "CrowdTool.cpp: 163";
+ rLen = 0;
+ rLoc = 4127;
+ rType = 0;
+ vrLen = 1133;
+ vrLoc = 3309;
+ };
+ 6B8D55F9127ABB6B0077C699 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BAF3C581211663A008CFCDF /* CrowdTool.cpp */;
+ name = "CrowdTool.cpp: 160";
+ rLen = 0;
+ rLoc = 4071;
+ rType = 0;
+ vrLen = 1174;
+ vrLoc = 3436;
+ };
+ 6B8D55FD127ABBCB0077C699 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BAF3C581211663A008CFCDF /* CrowdTool.cpp */;
+ name = "CrowdTool.cpp: 262";
+ rLen = 0;
+ rLoc = 6757;
+ rType = 0;
+ vrLen = 1078;
+ vrLoc = 6483;
+ };
+ 6B8D55FE127ABBCB0077C699 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BAF3C571211663A008CFCDF /* CrowdTool.h */;
+ name = "CrowdTool.h: 1";
+ rLen = 0;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 1476;
+ vrLoc = 0;
+ };
+ 6B8D5603127ABBD80077C699 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BAF3C571211663A008CFCDF /* CrowdTool.h */;
+ name = "CrowdTool.h: 23";
+ rLen = 0;
+ rLoc = 1011;
+ rType = 0;
+ vrLen = 1186;
+ vrLoc = 0;
+ };
+ 6B8D5604127ABBD80077C699 /* XCBuildMessageTextBookmark */ = {
+ isa = PBXTextBookmark;
+ comments = "'TOOLMODE_ADJUST_TARGET' was not declared in this scope";
+ fRef = 6BAF3C581211663A008CFCDF /* CrowdTool.cpp */;
+ fallbackIsa = XCBuildMessageTextBookmark;
+ rLen = 1;
+ rLoc = 144;
+ rType = 1;
+ };
+ 6B8D5605127ABBD80077C699 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BAF3C581211663A008CFCDF /* CrowdTool.cpp */;
+ name = "CrowdTool.cpp: 145";
+ rLen = 0;
+ rLoc = 3702;
+ rType = 0;
+ vrLen = 721;
+ vrLoc = 3306;
+ };
6B8DE6F010A88F0500DF20FB /* PBXBookmarkGroup */ = {
isa = PBXBookmarkGroup;
children = (
@@ -1806,16 +1926,16 @@
};
6BAF3C571211663A008CFCDF /* CrowdTool.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {931, 1105}}";
- sepNavSelRange = "{1732, 20}";
- sepNavVisRange = "{1128, 819}";
+ sepNavIntBoundsRect = "{{0, 0}, {931, 1014}}";
+ sepNavSelRange = "{1011, 0}";
+ sepNavVisRange = "{0, 1186}";
};
};
6BAF3C581211663A008CFCDF /* CrowdTool.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {931, 8437}}";
- sepNavSelRange = "{7053, 0}";
- sepNavVisRange = "{6303, 1289}";
+ sepNavIntBoundsRect = "{{0, 0}, {931, 8567}}";
+ sepNavSelRange = "{3702, 0}";
+ sepNavVisRange = "{3306, 721}";
sepNavWindowFrame = "{{15, 51}, {1214, 722}}";
};
};
@@ -2141,7 +2261,7 @@
fRef = 6BAF3C581211663A008CFCDF /* CrowdTool.cpp */;
name = "CrowdTool.cpp: 338";
rLen = 0;
- rLoc = 9362;
+ rLoc = 9201;
rType = 0;
vrLen = 1412;
vrLoc = 8537;
@@ -2445,16 +2565,16 @@
};
6BD667D8123D27EC0021A7A4 /* CrowdManager.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {931, 4407}}";
- sepNavSelRange = "{6314, 0}";
- sepNavVisRange = "{6095, 1472}";
+ sepNavIntBoundsRect = "{{0, 0}, {931, 4225}}";
+ sepNavSelRange = "{7186, 0}";
+ sepNavVisRange = "{6316, 1731}";
};
};
6BD667D9123D28100021A7A4 /* CrowdManager.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {931, 19123}}";
- sepNavSelRange = "{11810, 0}";
- sepNavVisRange = "{11524, 1151}";
+ sepNavIntBoundsRect = "{{0, 0}, {931, 19084}}";
+ sepNavSelRange = "{11932, 0}";
+ sepNavVisRange = "{11524, 1220}";
sepNavWindowFrame = "{{15, 134}, {1120, 639}}";
};
};
diff --git a/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.perspectivev3 b/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.perspectivev3
index c3021a0..314d417 100644
--- a/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.perspectivev3
+++ b/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.perspectivev3
@@ -284,7 +284,8 @@
PBXSmartGroupTreeModuleOutlineStateSelectionKey
- 62
+ 52
+ 51
1
0
@@ -325,7 +326,7 @@
PBXProjectModuleGUID
6B8632A30F78115100E2684A
PBXProjectModuleLabel
- CrowdManager.cpp
+ CrowdTool.cpp
PBXSplitModuleInNavigatorKey
Split0
@@ -333,11 +334,11 @@
PBXProjectModuleGUID
6B8632A40F78115100E2684A
PBXProjectModuleLabel
- CrowdManager.cpp
+ CrowdTool.cpp
_historyCapacity
0
bookmark
- 6B8D55EA127AAE680077C699
+ 6B8D5605127ABBD80077C699
history
6BBB4C34115B7A3D00CF791D
@@ -425,13 +426,13 @@
6BB9C2BD127449CE00B97C1C
6BB9C372127A0E5600B97C1C
6B8D5565127A98FB0077C699
- 6B8D5582127AA2270077C699
- 6B8D559E127AA3E70077C699
6B8D559F127AA3E70077C699
6B8D55A0127AA3E70077C699
6B8D55B5127AA5E60077C699
- 6B8D55D9127AABD80077C699
- 6B8D55DA127AABD80077C699
+ 6B8D55F2127ABAD40077C699
+ 6B8D55F3127ABAD40077C699
+ 6B8D5603127ABBD80077C699
+ 6B8D5604127ABBD80077C699
SplitCount
@@ -445,18 +446,18 @@
GeometryConfiguration
Frame
- {{0, 0}, {992, 673}}
+ {{0, 0}, {992, 471}}
RubberWindowFrame
0 59 1278 719 0 0 1280 778
Module
PBXNavigatorGroup
Proportion
- 673pt
+ 471pt
Proportion
- 0pt
+ 202pt
Tabs
@@ -471,8 +472,6 @@
Frame
{{10, 27}, {992, -27}}
- RubberWindowFrame
- 0 59 1278 719 0 0 1280 778
Module
XCDetailModule
@@ -526,7 +525,9 @@
GeometryConfiguration
Frame
- {{0, 0}, {568, 405}}
+ {{10, 27}, {992, 175}}
+ RubberWindowFrame
+ 0 59 1278 719 0 0 1280 778
Module
PBXBuildResultsModule
@@ -745,7 +746,7 @@
5
WindowOrderList
- 6B8D55EB127AAE680077C699
+ 6B8D5606127ABBD80077C699
6B8D558C127AA2270077C699
6B8D558D127AA2270077C699
/Users/memon/Code/recastnavigation/RecastDemo/Build/Xcode/Recast.xcodeproj
diff --git a/RecastDemo/Include/CrowdTool.h b/RecastDemo/Include/CrowdTool.h
index ddc83d2..1f92f3a 100644
--- a/RecastDemo/Include/CrowdTool.h
+++ b/RecastDemo/Include/CrowdTool.h
@@ -61,7 +61,6 @@ class CrowdTool : public SampleTool
enum ToolMode
{
TOOLMODE_CREATE,
- TOOLMODE_MOVE,
TOOLMODE_MOVE_TARGET,
};
ToolMode m_mode;
diff --git a/RecastDemo/Source/CrowdTool.cpp b/RecastDemo/Source/CrowdTool.cpp
index d85fccc..28eeccf 100644
--- a/RecastDemo/Source/CrowdTool.cpp
+++ b/RecastDemo/Source/CrowdTool.cpp
@@ -140,8 +140,6 @@ void CrowdTool::handleMenu()
if (imguiCheck("Create Agents", m_mode == TOOLMODE_CREATE))
m_mode = TOOLMODE_CREATE;
- if (imguiCheck("Move Agents", m_mode == TOOLMODE_MOVE))
- m_mode = TOOLMODE_MOVE;
if (imguiCheck("Move Target", m_mode == TOOLMODE_MOVE_TARGET))
m_mode = TOOLMODE_MOVE_TARGET;
@@ -152,9 +150,13 @@ void CrowdTool::handleMenu()
imguiValue("Click to add agents.");
imguiValue("Shift+Click to remove.");
}
- else if (m_mode == TOOLMODE_MOVE)
+ else if (m_mode == TOOLMODE_MOVE_TARGET)
{
imguiValue("Click to set move target.");
+ imguiValue("Shift+Click to adjust target.");
+ imguiValue("Adjusting uses special pathfinder");
+ imguiValue("which is really fast to change the");
+ imguiValue("target in small increments.");
}
imguiSeparator();
@@ -245,23 +247,6 @@ void CrowdTool::handleClick(const float* s, const float* p, bool shift)
m_crowd.requestMoveTarget(idx, m_targetRef, m_targetPos);
}
}
- else if (m_mode == TOOLMODE_MOVE)
- {
- // Find nearest point on navmesh and set move request to that location.
- dtNavMeshQuery* navquery = m_sample->getNavMeshQuery();
- const dtQueryFilter* filter = m_crowd.getFilter();
- const float* ext = m_crowd.getQueryExtents();
- m_targetRef = navquery->findNearestPoly(p, ext, filter, m_targetPos);
- if (m_targetRef)
- {
- for (int i = 0; i < m_crowd.getAgentCount(); ++i)
- {
- const Agent* ag = m_crowd.getAgent(i);
- if (!ag->active) continue;
- m_crowd.requestMoveTarget(i, m_targetRef, m_targetPos);
- }
- }
- }
else if (m_mode == TOOLMODE_MOVE_TARGET)
{
// Find nearest point on navmesh and set move request to that location.
@@ -269,8 +254,10 @@ void CrowdTool::handleClick(const float* s, const float* p, bool shift)
const dtQueryFilter* filter = m_crowd.getFilter();
const float* ext = m_crowd.getQueryExtents();
m_targetRef = navquery->findNearestPoly(p, ext, filter, m_targetPos);
- if (m_targetRef)
+
+ if (shift)
{
+ // Adjust target using tiny local search.
for (int i = 0; i < m_crowd.getAgentCount(); ++i)
{
const Agent* ag = m_crowd.getAgent(i);
@@ -278,6 +265,16 @@ void CrowdTool::handleClick(const float* s, const float* p, bool shift)
m_crowd.adjustMoveTarget(i, m_targetRef, m_targetPos);
}
}
+ else
+ {
+ // Move target using paht finder
+ for (int i = 0; i < m_crowd.getAgentCount(); ++i)
+ {
+ const Agent* ag = m_crowd.getAgent(i);
+ if (!ag->active) continue;
+ m_crowd.requestMoveTarget(i, m_targetRef, m_targetPos);
+ }
+ }
}
}