diff --git a/RecastDemo/Bin/Recast.app/Contents/MacOS/Recast b/RecastDemo/Bin/Recast.app/Contents/MacOS/Recast index e83768f..26ac08c 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 4f9dd7f..c87213a 100644 --- a/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.pbxuser +++ b/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.pbxuser @@ -183,6 +183,25 @@ 6B1635A612687DDA0083FC15 /* PBXTextBookmark */ = 6B1635A612687DDA0083FC15 /* PBXTextBookmark */; 6B1635A712687DDB0083FC15 /* PBXTextBookmark */ = 6B1635A712687DDB0083FC15 /* PBXTextBookmark */; 6B1635A812687E3E0083FC15 /* PBXTextBookmark */ = 6B1635A812687E3E0083FC15 /* PBXTextBookmark */; + 6B1635B5126884520083FC15 /* PBXTextBookmark */ = 6B1635B5126884520083FC15 /* PBXTextBookmark */; + 6B1635B6126884520083FC15 /* PBXTextBookmark */ = 6B1635B6126884520083FC15 /* PBXTextBookmark */; + 6B1635B7126884520083FC15 /* PBXTextBookmark */ = 6B1635B7126884520083FC15 /* PBXTextBookmark */; + 6B1635B8126884520083FC15 /* PBXTextBookmark */ = 6B1635B8126884520083FC15 /* PBXTextBookmark */; + 6B1635B9126884520083FC15 /* PBXTextBookmark */ = 6B1635B9126884520083FC15 /* PBXTextBookmark */; + 6B1635BA126884520083FC15 /* PBXTextBookmark */ = 6B1635BA126884520083FC15 /* PBXTextBookmark */; + 6B1635BB126884520083FC15 /* PBXTextBookmark */ = 6B1635BB126884520083FC15 /* PBXTextBookmark */; + 6B1635BC126884520083FC15 /* PBXTextBookmark */ = 6B1635BC126884520083FC15 /* PBXTextBookmark */; + 6B1635BD126884520083FC15 /* PBXTextBookmark */ = 6B1635BD126884520083FC15 /* PBXTextBookmark */; + 6B1635C7126885AD0083FC15 /* PBXTextBookmark */ = 6B1635C7126885AD0083FC15 /* PBXTextBookmark */; + 6B1635C8126885AD0083FC15 /* PBXTextBookmark */ = 6B1635C8126885AD0083FC15 /* PBXTextBookmark */; + 6B1635C9126885AD0083FC15 /* PBXTextBookmark */ = 6B1635C9126885AD0083FC15 /* PBXTextBookmark */; + 6B1635CA126885AD0083FC15 /* PBXTextBookmark */ = 6B1635CA126885AD0083FC15 /* PBXTextBookmark */; + 6B1635CB126885AD0083FC15 /* PBXTextBookmark */ = 6B1635CB126885AD0083FC15 /* PBXTextBookmark */; + 6B1635CF126886300083FC15 /* PBXTextBookmark */ = 6B1635CF126886300083FC15 /* PBXTextBookmark */; + 6B1635D3126887C80083FC15 /* PBXTextBookmark */ = 6B1635D3126887C80083FC15 /* PBXTextBookmark */; + 6B1635D4126887C80083FC15 /* PBXTextBookmark */ = 6B1635D4126887C80083FC15 /* PBXTextBookmark */; + 6B1635D5126887C80083FC15 /* XCBuildMessageTextBookmark */ = 6B1635D5126887C80083FC15 /* XCBuildMessageTextBookmark */; + 6B1635D6126887C80083FC15 /* PBXTextBookmark */ = 6B1635D6126887C80083FC15 /* PBXTextBookmark */; 6B1C8E08121EB4FF0048697F = 6B1C8E08121EB4FF0048697F /* PBXTextBookmark */; 6B4214D911803923006C347B = 6B4214D911803923006C347B /* PBXTextBookmark */; 6B847515122B9F4900ADF63D = 6B847515122B9F4900ADF63D /* PBXTextBookmark */; @@ -443,7 +462,7 @@ fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; name = "main.cpp: 897"; rLen = 0; - rLoc = 21072; + rLoc = 21074; rType = 0; vrLen = 894; vrLoc = 20326; @@ -803,7 +822,7 @@ fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; name = "InputGeom.cpp: 313"; rLen = 0; - rLoc = 7404; + rLoc = 8334; rType = 0; vrLen = 721; vrLoc = 7309; @@ -849,7 +868,7 @@ isa = PBXTextBookmark; fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; rLen = 0; - rLoc = 311; + rLoc = 352; rType = 1; }; 6B16359812687D840083FC15 /* PBXTextBookmark */ = { @@ -857,7 +876,7 @@ fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; name = "InputGeom.cpp: 320"; rLen = 0; - rLoc = 7607; + rLoc = 8537; rType = 0; vrLen = 437; vrLoc = 7651; @@ -877,7 +896,7 @@ fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; name = "InputGeom.cpp: 326"; rLen = 0; - rLoc = 7768; + rLoc = 8701; rType = 0; vrLen = 709; vrLoc = 7494; @@ -887,7 +906,7 @@ fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; name = "InputGeom.cpp: 320"; rLen = 0; - rLoc = 7618; + rLoc = 8551; rType = 0; vrLen = 770; vrLoc = 7508; @@ -897,7 +916,7 @@ fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; name = "InputGeom.cpp: 320"; rLen = 0; - rLoc = 7619; + rLoc = 8552; rType = 0; vrLen = 770; vrLoc = 7508; @@ -907,7 +926,7 @@ fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; name = "InputGeom.cpp: 320"; rLen = 0; - rLoc = 7619; + rLoc = 8552; rType = 0; vrLen = 770; vrLoc = 7508; @@ -917,7 +936,7 @@ fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; name = "InputGeom.cpp: 320"; rLen = 0; - rLoc = 7619; + rLoc = 8552; rType = 0; vrLen = 439; vrLoc = 7651; @@ -927,7 +946,7 @@ fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; name = "InputGeom.cpp: 320"; rLen = 0; - rLoc = 7619; + rLoc = 8552; rType = 0; vrLen = 770; vrLoc = 7508; @@ -937,11 +956,200 @@ fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; name = "InputGeom.cpp: 304"; rLen = 0; - rLoc = 7438; + rLoc = 8368; rType = 0; vrLen = 766; vrLoc = 7095; }; + 6B1635B5126884520083FC15 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BD667D8123D27EC0021A7A4 /* CrowdManager.h */; + name = "CrowdManager.h: 232"; + rLen = 0; + rLoc = 5681; + rType = 0; + vrLen = 763; + vrLoc = 5284; + }; + 6B1635B6126884520083FC15 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BD667D9123D28100021A7A4 /* CrowdManager.cpp */; + name = "CrowdManager.cpp: 1034"; + rLen = 0; + rLoc = 24844; + rType = 0; + vrLen = 957; + vrLoc = 24441; + }; + 6B1635B7126884520083FC15 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB788160FC0472B003C24DB /* ChunkyTriMesh.cpp */; + name = "ChunkyTriMesh.cpp: 216"; + rLen = 0; + rLoc = 5541; + rType = 0; + vrLen = 939; + vrLoc = 6004; + }; + 6B1635B8126884520083FC15 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FDA310F36EFC006DA0A6 /* InputGeom.h */; + name = "InputGeom.h: 38"; + rLen = 37; + rLoc = 1241; + rType = 0; + vrLen = 1213; + vrLoc = 1137; + }; + 6B1635B9126884520083FC15 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB93C7A10CFE1D500F74F2B /* DebugDraw.cpp */; + name = "DebugDraw.cpp: 197"; + rLen = 0; + rLoc = 5629; + rType = 0; + vrLen = 1323; + vrLoc = 5148; + }; + 6B1635BA126884520083FC15 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; + name = "InputGeom.cpp: 287"; + rLen = 0; + rLoc = 7013; + rType = 0; + vrLen = 748; + vrLoc = 6994; + }; + 6B1635BB126884520083FC15 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BAF4440121C3D0A008CFCDF /* SampleInterfaces.h */; + name = "SampleInterfaces.h: 64"; + rLen = 11; + rLoc = 2197; + rType = 0; + vrLen = 1224; + vrLoc = 1702; + }; + 6B1635BC126884520083FC15 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 486"; + rLen = 0; + rLoc = 11714; + rType = 0; + vrLen = 762; + vrLoc = 11243; + }; + 6B1635BD126884520083FC15 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 485"; + rLen = 0; + rLoc = 11714; + rType = 0; + vrLen = 714; + vrLoc = 11296; + }; + 6B1635C7126885AD0083FC15 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 482"; + rLen = 0; + rLoc = 11714; + rType = 0; + vrLen = 756; + vrLoc = 11296; + }; + 6B1635C8126885AD0083FC15 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB788160FC0472B003C24DB /* ChunkyTriMesh.cpp */; + name = "ChunkyTriMesh.cpp: 279"; + rLen = 0; + rLoc = 6788; + rType = 0; + vrLen = 937; + vrLoc = 6004; + }; + 6B1635C9126885AD0083FC15 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BAF3C581211663A008CFCDF /* CrowdTool.cpp */; + name = "CrowdTool.cpp: 41"; + rLen = 1095; + rLoc = 1351; + rType = 0; + vrLen = 995; + vrLoc = 1878; + }; + 6B1635CA126885AD0083FC15 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; + name = "InputGeom.cpp: 287"; + rLen = 0; + rLoc = 7013; + rType = 0; + vrLen = 748; + vrLoc = 6994; + }; + 6B1635CB126885AD0083FC15 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; + name = "InputGeom.cpp: 317"; + rLen = 0; + rLoc = 7295; + rType = 0; + vrLen = 725; + vrLoc = 7402; + }; + 6B1635CF126886300083FC15 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; + name = "InputGeom.cpp: 371"; + rLen = 0; + rLoc = 8551; + rType = 0; + vrLen = 1024; + vrLoc = 8541; + }; + 6B1635D3126887C80083FC15 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FDA310F36EFC006DA0A6 /* InputGeom.h */; + name = "InputGeom.h: 89"; + rLen = 0; + rLoc = 3499; + rType = 0; + vrLen = 1748; + vrLoc = 1777; + }; + 6B1635D4126887C80083FC15 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; + name = "InputGeom.cpp: 337"; + rLen = 0; + rLoc = 8238; + rType = 0; + vrLen = 974; + vrLoc = 7703; + }; + 6B1635D5126887C80083FC15 /* XCBuildMessageTextBookmark */ = { + isa = PBXTextBookmark; + comments = "'class InputGeom' has no member named 'test'"; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + fallbackIsa = XCBuildMessageTextBookmark; + rLen = 0; + rLoc = 481; + rType = 1; + }; + 6B1635D6126887C80083FC15 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; + name = "main.cpp: 482"; + rLen = 0; + rLoc = 11714; + rType = 0; + vrLen = 811; + vrLoc = 11296; + }; 6B1C8E08121EB4FF0048697F /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */; @@ -968,9 +1176,9 @@ }; 6B25B6180FFA62BE004F1BC4 /* main.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1217, 12025}}"; - sepNavSelRange = "{8957, 0}"; - sepNavVisRange = "{8445, 358}"; + sepNavIntBoundsRect = "{{0, 0}, {931, 11934}}"; + sepNavSelRange = "{11714, 0}"; + sepNavVisRange = "{11296, 811}"; sepNavWindowFrame = "{{15, 51}, {1214, 722}}"; }; }; @@ -1505,7 +1713,7 @@ fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; name = "InputGeom.cpp: 395"; rLen = 0; - rLoc = 10284; + rLoc = 11217; rType = 0; vrLen = 455; vrLoc = 9715; @@ -1676,7 +1884,7 @@ fRef = 6BD667D8123D27EC0021A7A4 /* CrowdManager.h */; name = "CrowdManager.h: 266"; rLen = 0; - rLoc = 6580; + rLoc = 6581; rType = 0; vrLen = 1356; vrLoc = 5783; @@ -1690,9 +1898,9 @@ }; 6BAF3C581211663A008CFCDF /* CrowdTool.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {931, 7891}}"; - sepNavSelRange = "{9360, 0}"; - sepNavVisRange = "{8916, 1097}"; + sepNavIntBoundsRect = "{{0, 0}, {931, 8008}}"; + sepNavSelRange = "{1351, 1095}"; + sepNavVisRange = "{1878, 995}"; sepNavWindowFrame = "{{15, 51}, {1214, 722}}"; }; }; @@ -1739,9 +1947,9 @@ }; 6BAF4440121C3D0A008CFCDF /* SampleInterfaces.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {933, 1196}}"; - sepNavSelRange = "{2580, 0}"; - sepNavVisRange = "{2154, 743}"; + sepNavIntBoundsRect = "{{0, 0}, {931, 1196}}"; + sepNavSelRange = "{2197, 11}"; + sepNavVisRange = "{1702, 1224}"; }; }; 6BAF4441121C3D26008CFCDF /* SampleInterfaces.cpp */ = { @@ -1847,7 +2055,7 @@ fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */; name = "main.cpp: 897"; rLen = 0; - rLoc = 21072; + rLoc = 21074; rType = 0; vrLen = 601; vrLoc = 20575; @@ -2014,9 +2222,9 @@ }; 6BB788160FC0472B003C24DB /* ChunkyTriMesh.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {931, 4316}}"; - sepNavSelRange = "{5408, 26}"; - sepNavVisRange = "{4979, 832}"; + sepNavIntBoundsRect = "{{0, 0}, {931, 4056}}"; + sepNavSelRange = "{6788, 0}"; + sepNavVisRange = "{6004, 937}"; }; }; 6BB788180FC04753003C24DB /* ChunkyTriMesh.h */ = { @@ -2044,15 +2252,15 @@ 6BB7FDA310F36EFC006DA0A6 /* InputGeom.h */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {931, 1196}}"; - sepNavSelRange = "{2249, 0}"; - sepNavVisRange = "{1355, 2148}"; + sepNavSelRange = "{3499, 0}"; + sepNavVisRange = "{1777, 1748}"; }; }; 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {931, 6214}}"; - sepNavSelRange = "{7438, 0}"; - sepNavVisRange = "{7095, 766}"; + sepNavIntBoundsRect = "{{0, 0}, {931, 6942}}"; + sepNavSelRange = "{8238, 0}"; + sepNavVisRange = "{7703, 974}"; }; }; 6BB93C7710CFE1D500F74F2B /* DebugDraw.h */ = { @@ -2078,9 +2286,9 @@ }; 6BB93C7A10CFE1D500F74F2B /* DebugDraw.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {931, 7020}}"; - sepNavSelRange = "{11902, 0}"; - sepNavVisRange = "{11556, 581}"; + sepNavIntBoundsRect = "{{0, 0}, {931, 6721}}"; + sepNavSelRange = "{5629, 0}"; + sepNavVisRange = "{5148, 1323}"; }; }; 6BB93C7B10CFE1D500F74F2B /* DetourDebugDraw.cpp */ = { @@ -2336,16 +2544,16 @@ }; 6BD667D8123D27EC0021A7A4 /* CrowdManager.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {931, 3874}}"; - sepNavSelRange = "{6580, 0}"; - sepNavVisRange = "{5783, 1356}"; + sepNavIntBoundsRect = "{{0, 0}, {1041, 3796}}"; + sepNavSelRange = "{5681, 0}"; + sepNavVisRange = "{5284, 763}"; }; }; 6BD667D9123D28100021A7A4 /* CrowdManager.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {931, 16601}}"; - sepNavSelRange = "{11581, 0}"; - sepNavVisRange = "{11428, 1249}"; + sepNavIntBoundsRect = "{{0, 0}, {931, 16172}}"; + sepNavSelRange = "{24844, 0}"; + sepNavVisRange = "{24441, 957}"; }; }; 6BD667FF123D2D230021A7A4 /* PBXTextBookmark */ = { diff --git a/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.perspectivev3 b/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.perspectivev3 index f1f2b04..643fd9c 100644 --- a/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.perspectivev3 +++ b/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.perspectivev3 @@ -284,13 +284,13 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 82 + 81 1 0 PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 1242}, {264, 660}} + {{0, 692}, {264, 660}} PBXTopSmartGroupGIDs @@ -325,7 +325,7 @@ PBXProjectModuleGUID 6B8632A30F78115100E2684A PBXProjectModuleLabel - InputGeom.cpp + main.cpp PBXSplitModuleInNavigatorKey Split0 @@ -333,11 +333,11 @@ PBXProjectModuleGUID 6B8632A40F78115100E2684A PBXProjectModuleLabel - InputGeom.cpp + main.cpp _historyCapacity 0 bookmark - 6B1635A812687E3E0083FC15 + 6B1635D6126887C80083FC15 history 6BBB4C34115B7A3D00CF791D @@ -376,7 +376,6 @@ 6B8477FC122D2E2A00ADF63D 6B8477FE122D2E2A00ADF63D 6B8477FF122D2E2A00ADF63D - 6BD667FF123D2D230021A7A4 6BD6681812434B790021A7A4 6BD66855124350F80021A7A4 6BD668A3124361EB0021A7A4 @@ -398,11 +397,8 @@ 6BA8CF951255D97400272A3B 6BA8CFA81255DC6500272A3B 6BA8CFBE1255DE0500272A3B - 6BA8D10C125B0E8E00272A3B - 6BA8D10D125B0E8E00272A3B 6BB2EDF91261C75400E350F8 6BB2EE241261C92300E350F8 - 6BB2EE251261C92300E350F8 6BB2EE261261C92300E350F8 6BB2EE271261C92300E350F8 6BB2EE351261CEB800E350F8 @@ -412,7 +408,6 @@ 6BB2EE671261D48100E350F8 6BB2EE691261D48100E350F8 6BB2EE731261DA0400E350F8 - 6BB2EE7A1264CD7900E350F8 6BB2EE7B1264CD7900E350F8 6B1633101268326F0083FC15 6B1633111268326F0083FC15 @@ -422,14 +417,19 @@ 6B16338112684C6F0083FC15 6B16357012687A5D0083FC15 6B16357112687A5D0083FC15 - 6B16358C12687D740083FC15 - 6B16358D12687D740083FC15 6B16358E12687D740083FC15 - 6B16358F12687D740083FC15 6B16359012687D740083FC15 6B16359112687D740083FC15 6B16359D12687D980083FC15 - 6B1635A612687DDA0083FC15 + 6B1635B5126884520083FC15 + 6B1635B6126884520083FC15 + 6B1635B9126884520083FC15 + 6B1635BB126884520083FC15 + 6B1635C8126885AD0083FC15 + 6B1635C9126885AD0083FC15 + 6B1635D3126887C80083FC15 + 6B1635D4126887C80083FC15 + 6B1635D5126887C80083FC15 SplitCount @@ -443,18 +443,18 @@ GeometryConfiguration Frame - {{0, 0}, {992, 528}} + {{0, 0}, {992, 570}} RubberWindowFrame 0 59 1278 719 0 0 1280 778 Module PBXNavigatorGroup Proportion - 528pt + 570pt Proportion - 145pt + 103pt Tabs @@ -522,7 +522,7 @@ GeometryConfiguration Frame - {{10, 27}, {992, 118}} + {{10, 27}, {992, 76}} RubberWindowFrame 0 59 1278 719 0 0 1280 778 diff --git a/RecastDemo/Include/CrowdManager.h b/RecastDemo/Include/CrowdManager.h index 14f058d..65fc430 100644 --- a/RecastDemo/Include/CrowdManager.h +++ b/RecastDemo/Include/CrowdManager.h @@ -215,7 +215,7 @@ enum UpdateFlags class CrowdManager { - static const int MAX_AGENTS = 32; + static const int MAX_AGENTS = 128; Agent m_agents[MAX_AGENTS]; dtObstacleAvoidanceDebugData* m_vodebug[MAX_AGENTS]; dtObstacleAvoidanceQuery* m_obstacleQuery; diff --git a/RecastDemo/Source/InputGeom.cpp b/RecastDemo/Source/InputGeom.cpp index a2e96c0..f3582ba 100644 --- a/RecastDemo/Source/InputGeom.cpp +++ b/RecastDemo/Source/InputGeom.cpp @@ -281,16 +281,57 @@ bool InputGeom::save(const char* filepath) return true; } +static bool isectSegAABB(const float* sp, const float* sq, + const float* amin, const float* amax, + float& tmin, float& tmax) +{ + static const float EPS = 1e-6f; + + float d[3]; + d[0] = sq[0] - sp[0]; + d[1] = sq[1] - sp[1]; + d[2] = sq[2] - sp[2]; + tmin = 0.0; + tmax = 1.0f; + + for (int i = 0; i < 3; i++) + { + if (fabsf(d[i]) < EPS) + { + if (sp[i] < amin[i] || sp[i] > amax[i]) + return false; + } + else + { + const float ood = 1.0f / d[i]; + float t1 = (amin[i] - sp[i]) * ood; + float t2 = (amax[i] - sp[i]) * ood; + if (t1 > t2) { float tmp = t1; t1 = t2; t2 = tmp; } + if (t1 > tmin) tmin = t1; + if (t2 < tmax) tmax = t2; + if (tmin > tmax) return false; + } + } + + return true; +} + + bool InputGeom::raycastMesh(float* src, float* dst, float& tmin) { float dir[3]; rcVsub(dir, dst, src); + // Prune hit ray. + float btmin, btmax; + if (!isectSegAABB(src, dst, m_meshBMin, m_meshBMax, btmin, btmax)) + return false; float p[2], q[2]; - p[0] = src[0]; - p[1] = src[2]; - q[0] = dst[0]; - q[1] = dst[2]; + p[0] = src[0] + (dst[0]-src[0])*btmin; + p[1] = src[2] + (dst[2]-src[2])*btmin; + q[0] = src[0] + (dst[0]-src[0])*btmax; + q[1] = src[2] + (dst[2]-src[2])*btmax; + int cid[512]; const int ncid = rcGetChunksOverlappingSegment(m_chunkyMesh, p, q, cid, 512); if (!ncid) @@ -306,7 +347,7 @@ bool InputGeom::raycastMesh(float* src, float* dst, float& tmin) const int* tris = &m_chunkyMesh->tris[node.i*3]; const int ntris = node.n; - for (int j = 0; j < ntris*3; ++j) + for (int j = 0; j < ntris*3; j += 3) { float t = 1; if (intersectSegmentTriangle(src, dst, diff --git a/RecastDemo/Source/main.cpp b/RecastDemo/Source/main.cpp index e529d43..c97e3a3 100644 --- a/RecastDemo/Source/main.cpp +++ b/RecastDemo/Source/main.cpp @@ -479,7 +479,7 @@ int main(int /*argc*/, char** /*argv*/) sample->handleRender(); if (test) test->handleRender(); - + glDisable(GL_FOG); // Render GUI