diff --git a/Recast/Source/RecastContour.cpp b/Recast/Source/RecastContour.cpp index 256d39e..b6e1de9 100644 --- a/Recast/Source/RecastContour.cpp +++ b/Recast/Source/RecastContour.cpp @@ -573,7 +573,7 @@ bool rcBuildContours(rcCompactHeightfield& chf, cset.cs = chf.cs; cset.ch = chf.ch; - const int maxContours = chf.maxRegions*2; + int maxContours = rcMax((int)chf.maxRegions, 8); cset.conts = new rcContour[maxContours]; if (!cset.conts) return false; @@ -657,11 +657,25 @@ bool rcBuildContours(rcCompactHeightfield& chf, // Create contour. if (simplified.size()/4 >= 3) { - if (cset.nconts > maxContours) + if (cset.nconts >= maxContours) { + // Allocate more contours. + // This can happen when there are tiny holes in the heighfield. + const int oldMax = maxContours; + maxContours *= 2; + rcContour* newConts = new rcContour[maxContours]; + for (int j = 0; j < cset.nconts; ++j) + { + newConts[j] = cset.conts[j]; + // Reset source pointers to prevent data deletion. + cset.conts[j].verts = 0; + cset.conts[j].rverts = 0; + } + delete [] cset.conts; + cset.conts = newConts; + if (rcGetLog()) - rcGetLog()->log(RC_LOG_ERROR, "rcBuildContours: Too many contours %d, max %d.", cset.nconts, maxContours); - return false; + rcGetLog()->log(RC_LOG_WARNING, "rcBuildContours: Expanding max contours from %d to %d.", oldMax, maxContours); } rcContour* cont = &cset.conts[cset.nconts++]; diff --git a/RecastDemo/Bin/Recast.app/Contents/MacOS/Recast b/RecastDemo/Bin/Recast.app/Contents/MacOS/Recast index 94a15a4..73208f5 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 2923eb0..019f90e 100644 --- a/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.pbxuser +++ b/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.pbxuser @@ -780,6 +780,41 @@ 6B324E211125568100EBD2FD /* PBXTextBookmark */ = 6B324E211125568100EBD2FD /* PBXTextBookmark */; 6B324E221125568100EBD2FD /* PBXTextBookmark */ = 6B324E221125568100EBD2FD /* PBXTextBookmark */; 6B324E231125568100EBD2FD /* PBXTextBookmark */ = 6B324E231125568100EBD2FD /* PBXTextBookmark */; + 6B324E26112556F900EBD2FD /* PBXTextBookmark */ = 6B324E26112556F900EBD2FD /* PBXTextBookmark */; + 6B324E2B1125598400EBD2FD /* PBXTextBookmark */ = 6B324E2B1125598400EBD2FD /* PBXTextBookmark */; + 6B324E2C1125598400EBD2FD /* PBXTextBookmark */ = 6B324E2C1125598400EBD2FD /* PBXTextBookmark */; + 6B324E2D1125598400EBD2FD /* PBXTextBookmark */ = 6B324E2D1125598400EBD2FD /* PBXTextBookmark */; + 6B324E2E1125598400EBD2FD /* PBXTextBookmark */ = 6B324E2E1125598400EBD2FD /* PBXTextBookmark */; + 6B324E2F1125598400EBD2FD /* PBXTextBookmark */ = 6B324E2F1125598400EBD2FD /* PBXTextBookmark */; + 6B324E301125598400EBD2FD /* PBXTextBookmark */ = 6B324E301125598400EBD2FD /* PBXTextBookmark */; + 6B324E311125598400EBD2FD /* PBXTextBookmark */ = 6B324E311125598400EBD2FD /* PBXTextBookmark */; + 6B324E321125598400EBD2FD /* PBXTextBookmark */ = 6B324E321125598400EBD2FD /* PBXTextBookmark */; + 6B324E331125598400EBD2FD /* PBXTextBookmark */ = 6B324E331125598400EBD2FD /* PBXTextBookmark */; + 6B324E341125598400EBD2FD /* PBXTextBookmark */ = 6B324E341125598400EBD2FD /* PBXTextBookmark */; + 6B324E351125598400EBD2FD /* PBXTextBookmark */ = 6B324E351125598400EBD2FD /* PBXTextBookmark */; + 6B324E361125598400EBD2FD /* PBXTextBookmark */ = 6B324E361125598400EBD2FD /* PBXTextBookmark */; + 6B324E3B11255BA700EBD2FD /* PBXTextBookmark */ = 6B324E3B11255BA700EBD2FD /* PBXTextBookmark */; + 6B324E3C11255BA700EBD2FD /* PBXTextBookmark */ = 6B324E3C11255BA700EBD2FD /* PBXTextBookmark */; + 6B324E3D11255BA700EBD2FD /* PBXTextBookmark */ = 6B324E3D11255BA700EBD2FD /* PBXTextBookmark */; + 6B324E3E11255BA700EBD2FD /* PBXTextBookmark */ = 6B324E3E11255BA700EBD2FD /* PBXTextBookmark */; + 6B324E3F11255BA700EBD2FD /* PBXTextBookmark */ = 6B324E3F11255BA700EBD2FD /* PBXTextBookmark */; + 6B324E4011255BA700EBD2FD /* PBXTextBookmark */ = 6B324E4011255BA700EBD2FD /* PBXTextBookmark */; + 6B324E4111255DB700EBD2FD /* PBXTextBookmark */ = 6B324E4111255DB700EBD2FD /* PBXTextBookmark */; + 6B324E4211255DB700EBD2FD /* PBXTextBookmark */ = 6B324E4211255DB700EBD2FD /* PBXTextBookmark */; + 6B324E4311255DB700EBD2FD /* PBXTextBookmark */ = 6B324E4311255DB700EBD2FD /* PBXTextBookmark */; + 6B324E4411255DB700EBD2FD /* PBXTextBookmark */ = 6B324E4411255DB700EBD2FD /* PBXTextBookmark */; + 6B324E4511255E7B00EBD2FD /* PBXTextBookmark */ = 6B324E4511255E7B00EBD2FD /* PBXTextBookmark */; + 6B324E4911255F5B00EBD2FD /* PBXTextBookmark */ = 6B324E4911255F5B00EBD2FD /* PBXTextBookmark */; + 6B324E4A11255F5B00EBD2FD /* PBXTextBookmark */ = 6B324E4A11255F5B00EBD2FD /* PBXTextBookmark */; + 6B324E4B11255F5B00EBD2FD /* PBXTextBookmark */ = 6B324E4B11255F5B00EBD2FD /* PBXTextBookmark */; + 6B324E4C11255F5B00EBD2FD /* PBXTextBookmark */ = 6B324E4C11255F5B00EBD2FD /* PBXTextBookmark */; + 6B324E4D11255FE100EBD2FD /* PBXTextBookmark */ = 6B324E4D11255FE100EBD2FD /* PBXTextBookmark */; + 6B324E4E11255FE100EBD2FD /* PBXTextBookmark */ = 6B324E4E11255FE100EBD2FD /* PBXTextBookmark */; + 6B324E4F11255FE100EBD2FD /* PBXTextBookmark */ = 6B324E4F11255FE100EBD2FD /* PBXTextBookmark */; + 6B324E5011255FE100EBD2FD /* PBXTextBookmark */ = 6B324E5011255FE100EBD2FD /* PBXTextBookmark */; + 6B324E531125601A00EBD2FD /* PBXTextBookmark */ = 6B324E531125601A00EBD2FD /* PBXTextBookmark */; + 6B324E561125608600EBD2FD /* PBXTextBookmark */ = 6B324E561125608600EBD2FD /* PBXTextBookmark */; + 6B324E59112563F300EBD2FD /* PBXTextBookmark */ = 6B324E59112563F300EBD2FD /* PBXTextBookmark */; 6B69739F10FFCA4500984788 = 6B69739F10FFCA4500984788 /* PBXTextBookmark */; 6B6973A210FFCA4500984788 = 6B6973A210FFCA4500984788 /* PBXTextBookmark */; 6B8DE70D10B01BBF00DF20FB = 6B8DE70D10B01BBF00DF20FB /* PBXTextBookmark */; @@ -1191,9 +1226,9 @@ }; 6B137C7E0F7FCBFE00459200 /* Recast.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {815, 9920}}"; - sepNavSelRange = "{3596, 0}"; - sepNavVisRange = "{2909, 969}"; + sepNavIntBoundsRect = "{{0, 0}, {815, 9760}}"; + sepNavSelRange = "{4844, 328}"; + sepNavVisRange = "{4505, 1487}"; }; }; 6B137C800F7FCBFE00459200 /* RecastLog.h */ = { @@ -1220,9 +1255,9 @@ }; 6B137C830F7FCC1100459200 /* RecastContour.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {915, 11928}}"; - sepNavSelRange = "{18779, 0}"; - sepNavVisRange = "{18447, 617}"; + sepNavIntBoundsRect = "{{0, 0}, {1195, 12384}}"; + sepNavSelRange = "{16811, 0}"; + sepNavVisRange = "{16562, 689}"; }; }; 6B137C850F7FCC1100459200 /* RecastFilter.cpp */ = { @@ -1299,9 +1334,9 @@ }; 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {887, 13824}}"; - sepNavSelRange = "{20860, 0}"; - sepNavVisRange = "{20436, 1004}"; + sepNavIntBoundsRect = "{{0, 0}, {1223, 14064}}"; + sepNavSelRange = "{7808, 476}"; + sepNavVisRange = "{7394, 1023}"; sepNavWindowFrame = "{{38, 30}, {1214, 722}}"; }; }; @@ -1530,7 +1565,7 @@ fRef = 6B137C830F7FCC1100459200 /* RecastContour.cpp */; name = "RecastContour.cpp: 728"; rLen = 0; - rLoc = 18779; + rLoc = 19275; rType = 0; vrLen = 671; vrLoc = 18447; @@ -1648,7 +1683,7 @@ fRef = 6B137C830F7FCC1100459200 /* RecastContour.cpp */; name = "RecastContour.cpp: 728"; rLen = 0; - rLoc = 18779; + rLoc = 19275; rType = 0; vrLen = 671; vrLoc = 18447; @@ -2426,7 +2461,7 @@ fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; name = "Sample_SoloMeshTiled.cpp: 1032"; rLen = 0; - rLoc = 30861; + rLoc = 31377; rType = 0; vrLen = 1087; vrLoc = 29995; @@ -2536,7 +2571,7 @@ fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; name = "Sample_SoloMeshTiled.cpp: 1042"; rLen = 0; - rLoc = 31446; + rLoc = 31962; rType = 0; vrLen = 1067; vrLoc = 30033; @@ -2556,7 +2591,7 @@ fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; name = "Sample_SoloMeshTiled.cpp: 1032"; rLen = 0; - rLoc = 30861; + rLoc = 31377; rType = 0; vrLen = 1087; vrLoc = 29995; @@ -3863,7 +3898,7 @@ ignoreCount = 0; lineNumber = 27; location = Recast; - modificationTime = 287658767.511823; + modificationTime = 287662169.589152; state = 1; }; 6B324BE7111C511900EBD2FD /* PBXTextBookmark */ = { @@ -4211,7 +4246,7 @@ comments = "error: 'class InputGeom' has no member named 'getBoxVolumeVerts'"; fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; rLen = 1; - rLoc = 842; + rLoc = 856; rType = 1; }; 6B324C21111C5B8D00EBD2FD /* PBXTextBookmark */ = { @@ -4379,7 +4414,7 @@ fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; name = "Sample_SoloMeshTiled.cpp: 489"; rLen = 0; - rLoc = 14705; + rLoc = 15171; rType = 0; vrLen = 555; vrLoc = 14212; @@ -4419,7 +4454,7 @@ fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; name = "Sample_SoloMeshTiled.cpp: 849"; rLen = 0; - rLoc = 25467; + rLoc = 26004; rType = 0; vrLen = 839; vrLoc = 24925; @@ -4429,7 +4464,7 @@ fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; name = "Sample_SoloMeshTiled.cpp: 849"; rLen = 0; - rLoc = 25467; + rLoc = 26004; rType = 0; vrLen = 968; vrLoc = 24944; @@ -4439,7 +4474,7 @@ fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; name = "Sample_SoloMeshTiled.cpp: 849"; rLen = 0; - rLoc = 25467; + rLoc = 26004; rType = 0; vrLen = 968; vrLoc = 24944; @@ -4459,7 +4494,7 @@ fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; name = "Sample_SoloMeshTiled.cpp: 849"; rLen = 0; - rLoc = 25467; + rLoc = 26004; rType = 0; vrLen = 478; vrLoc = 25184; @@ -4486,7 +4521,7 @@ fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; name = "Sample_SoloMeshTiled.cpp: 849"; rLen = 0; - rLoc = 25467; + rLoc = 26004; rType = 0; vrLen = 478; vrLoc = 25184; @@ -4506,7 +4541,7 @@ fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; name = "Sample_SoloMeshTiled.cpp: 849"; rLen = 0; - rLoc = 25467; + rLoc = 26004; rType = 0; vrLen = 1001; vrLoc = 24939; @@ -4626,7 +4661,7 @@ fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; name = "Sample_SoloMeshTiled.cpp: 190"; rLen = 109; - rLoc = 4637; + rLoc = 5103; rType = 0; vrLen = 607; vrLoc = 4240; @@ -4724,7 +4759,7 @@ fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; name = "Sample_SoloMeshTiled.cpp: 190"; rLen = 109; - rLoc = 4637; + rLoc = 5103; rType = 0; vrLen = 607; vrLoc = 4240; @@ -4788,9 +4823,9 @@ }; 6B324C65111C5D9A00EBD2FD /* ConvexVolumeTool.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {815, 4112}}"; + sepNavIntBoundsRect = "{{0, 0}, {1195, 4096}}"; sepNavSelRange = "{5520, 0}"; - sepNavVisRange = "{5327, 620}"; + sepNavVisRange = "{5347, 537}"; }; }; 6B324C6D111C5DDC00EBD2FD /* PBXTextBookmark */ = { @@ -5510,7 +5545,7 @@ comments = "error: 'm_chf' was not declared in this scope"; fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; rLen = 1; - rLoc = 845; + rLoc = 859; rType = 1; }; 6B324CDE111C789800EBD2FD /* PBXTextBookmark */ = { @@ -5538,7 +5573,7 @@ fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; name = "Sample_SoloMeshTiled.cpp: 843"; rLen = 0; - rLoc = 25200; + rLoc = 25732; rType = 0; vrLen = 1218; vrLoc = 24685; @@ -5558,7 +5593,7 @@ fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; name = "Sample_SoloMeshTiled.cpp: 846"; rLen = 0; - rLoc = 25348; + rLoc = 25880; rType = 0; vrLen = 1202; vrLoc = 24685; @@ -5568,7 +5603,7 @@ fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; name = "Sample_SoloMeshTiled.cpp: 846"; rLen = 0; - rLoc = 25348; + rLoc = 25880; rType = 0; vrLen = 1202; vrLoc = 24685; @@ -5585,7 +5620,7 @@ fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; name = "Sample_SoloMeshTiled.cpp: 846"; rLen = 0; - rLoc = 25348; + rLoc = 25880; rType = 0; vrLen = 1202; vrLoc = 24685; @@ -5750,7 +5785,7 @@ fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; name = "Sample_SoloMeshTiled.cpp: 1044"; rLen = 0; - rLoc = 30613; + rLoc = 31129; rType = 0; vrLen = 1240; vrLoc = 30352; @@ -5820,7 +5855,7 @@ fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; name = "Sample_SoloMeshTiled.cpp: 1044"; rLen = 0; - rLoc = 30613; + rLoc = 31129; rType = 0; vrLen = 1240; vrLoc = 30352; @@ -6617,7 +6652,7 @@ fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; name = "Sample_SoloMeshTiled.cpp: 1044"; rLen = 0; - rLoc = 30613; + rLoc = 31129; rType = 0; vrLen = 1240; vrLoc = 30352; @@ -6687,7 +6722,7 @@ fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; name = "Sample_SoloMeshTiled.cpp: 1044"; rLen = 0; - rLoc = 30613; + rLoc = 31129; rType = 0; vrLen = 1240; vrLoc = 30352; @@ -7413,11 +7448,11 @@ delayBeforeContinue = 0; fileReference = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; functionName = "dtNavMesh::findPath(dtPolyRef startRef, dtPolyRef endRef, const float* startPos, const float* endPos, dtQueryFilter* filter, dtPolyRef* path, const int maxPathSize)"; - hitCount = 1; + hitCount = 0; ignoreCount = 0; lineNumber = 1212; location = Recast; - modificationTime = 287658775.008817; + modificationTime = 287662169.589545; state = 1; }; 6B324DF21125531100EBD2FD /* PBXTextBookmark */ = { @@ -7470,11 +7505,11 @@ delayBeforeContinue = 0; fileReference = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; functionName = "NavMeshTesterTool::recalc()"; - hitCount = 1; + hitCount = 0; ignoreCount = 0; lineNumber = 297; location = Recast; - modificationTime = 287658818.519053; + modificationTime = 287662169.589961; state = 1; }; 6B324DF91125534000EBD2FD /* PBXTextBookmark */ = { @@ -7842,6 +7877,349 @@ vrLen = 829; vrLoc = 47311; }; + 6B324E26112556F900EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; + name = "DetourNavMesh.cpp: 1734"; + rLen = 0; + rLoc = 47430; + rType = 0; + vrLen = 829; + vrLoc = 47311; + }; + 6B324E2B1125598400EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; + name = "DetourNavMesh.cpp: 1734"; + rLen = 0; + rLoc = 47430; + rType = 0; + vrLen = 829; + vrLoc = 47311; + }; + 6B324E2C1125598400EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */; + name = "Sample_SoloMeshSimple.cpp: 427"; + rLen = 0; + rLoc = 13214; + rType = 0; + vrLen = 1300; + vrLoc = 12680; + }; + 6B324E2D1125598400EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 331"; + rLen = 476; + rLoc = 7808; + rType = 0; + vrLen = 1023; + vrLoc = 7394; + }; + 6B324E2E1125598400EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; + name = "Sample_SoloMeshTiled.cpp: 110"; + rLen = 0; + rLoc = 2861; + rType = 0; + vrLen = 987; + vrLoc = 2323; + }; + 6B324E2F1125598400EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88F10C7BFD3008007F6 /* Sample_SoloMeshTiled.h */; + name = "Sample_SoloMeshTiled.h: 98"; + rLen = 0; + rLoc = 2651; + rType = 0; + vrLen = 772; + vrLoc = 2182; + }; + 6B324E301125598400EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */; + name = "DetourNavMesh.cpp: 1734"; + rLen = 0; + rLoc = 47430; + rType = 0; + vrLen = 829; + vrLoc = 47311; + }; + 6B324E311125598400EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */; + name = "Sample_SoloMeshSimple.cpp: 427"; + rLen = 0; + rLoc = 13214; + rType = 0; + vrLen = 1300; + vrLoc = 12680; + }; + 6B324E321125598400EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 331"; + rLen = 476; + rLoc = 7808; + rType = 0; + vrLen = 1044; + vrLoc = 7308; + }; + 6B324E331125598400EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 331"; + rLen = 476; + rLoc = 7808; + rType = 0; + vrLen = 1023; + vrLoc = 7394; + }; + 6B324E341125598400EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88F10C7BFD3008007F6 /* Sample_SoloMeshTiled.h */; + name = "Sample_SoloMeshTiled.h: 98"; + rLen = 0; + rLoc = 2651; + rType = 0; + vrLen = 772; + vrLoc = 2182; + }; + 6B324E351125598400EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; + name = "Sample_SoloMeshTiled.cpp: 110"; + rLen = 0; + rLoc = 2861; + rType = 0; + vrLen = 987; + vrLoc = 2323; + }; + 6B324E361125598400EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88F10C7BFD3008007F6 /* Sample_SoloMeshTiled.h */; + name = "Sample_SoloMeshTiled.h: 114"; + rLen = 0; + rLoc = 3190; + rType = 0; + vrLen = 792; + vrLoc = 2402; + }; + 6B324E3B11255BA700EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88F10C7BFD3008007F6 /* Sample_SoloMeshTiled.h */; + name = "Sample_SoloMeshTiled.h: 97"; + rLen = 0; + rLoc = 2650; + rType = 0; + vrLen = 793; + vrLoc = 2402; + }; + 6B324E3C11255BA700EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 331"; + rLen = 476; + rLoc = 7808; + rType = 0; + vrLen = 1023; + vrLoc = 7394; + }; + 6B324E3D11255BA700EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + comments = "error: 'cset' was not declared in this scope"; + fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; + rLen = 1; + rLoc = 896; + rType = 1; + }; + 6B324E3E11255BA700EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88F10C7BFD3008007F6 /* Sample_SoloMeshTiled.h */; + name = "Sample_SoloMeshTiled.h: 97"; + rLen = 0; + rLoc = 2650; + rType = 0; + vrLen = 793; + vrLoc = 2402; + }; + 6B324E3F11255BA700EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */; + name = "Sample_TileMesh.cpp: 331"; + rLen = 476; + rLoc = 7808; + rType = 0; + vrLen = 1023; + vrLoc = 7394; + }; + 6B324E4011255BA700EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; + name = "Sample_SoloMeshTiled.cpp: 943"; + rLen = 0; + rLoc = 28502; + rType = 0; + vrLen = 870; + vrLoc = 27795; + }; + 6B324E4111255DB700EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; + name = "Sample_SoloMeshTiled.cpp: 943"; + rLen = 0; + rLoc = 28502; + rType = 0; + vrLen = 870; + vrLoc = 27795; + }; + 6B324E4211255DB700EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C830F7FCC1100459200 /* RecastContour.cpp */; + name = "RecastContour.cpp: 728"; + rLen = 0; + rLoc = 19275; + rType = 0; + vrLen = 745; + vrLoc = 18447; + }; + 6B324E4311255DB700EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; + name = "Sample_SoloMeshTiled.cpp: 943"; + rLen = 0; + rLoc = 28502; + rType = 0; + vrLen = 870; + vrLoc = 27795; + }; + 6B324E4411255DB700EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C830F7FCC1100459200 /* RecastContour.cpp */; + name = "RecastContour.cpp: 724"; + rLen = 0; + rLoc = 19170; + rType = 0; + vrLen = 1058; + vrLoc = 18374; + }; + 6B324E4511255E7B00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C830F7FCC1100459200 /* RecastContour.cpp */; + name = "RecastContour.cpp: 666"; + rLen = 0; + rLoc = 17316; + rType = 0; + vrLen = 1093; + vrLoc = 16512; + }; + 6B324E4911255F5B00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7E0F7FCBFE00459200 /* Recast.h */; + name = "Recast.h: 131"; + rLen = 328; + rLoc = 4844; + rType = 0; + vrLen = 1487; + vrLoc = 4505; + }; + 6B324E4A11255F5B00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + comments = "error: no matching function for call to 'rcMax(short unsigned int&, int)'"; + fRef = 6B137C830F7FCC1100459200 /* RecastContour.cpp */; + rLen = 1; + rLoc = 575; + rType = 1; + }; + 6B324E4B11255F5B00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C7E0F7FCBFE00459200 /* Recast.h */; + name = "Recast.h: 131"; + rLen = 328; + rLoc = 4844; + rType = 0; + vrLen = 1487; + vrLoc = 4505; + }; + 6B324E4C11255F5B00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C830F7FCC1100459200 /* RecastContour.cpp */; + name = "RecastContour.cpp: 574"; + rLen = 0; + rLoc = 14627; + rType = 0; + vrLen = 680; + vrLoc = 14301; + }; + 6B324E4D11255FE100EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C830F7FCC1100459200 /* RecastContour.cpp */; + name = "RecastContour.cpp: 574"; + rLen = 0; + rLoc = 14627; + rType = 0; + vrLen = 680; + vrLoc = 14301; + }; + 6B324E4E11255FE100EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B624169103434880002E346 /* RecastMeshDetail.cpp */; + rLen = 0; + rLoc = 1130; + rType = 1; + }; + 6B324E4F11255FE100EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B137C830F7FCC1100459200 /* RecastContour.cpp */; + name = "RecastContour.cpp: 574"; + rLen = 0; + rLoc = 14627; + rType = 0; + vrLen = 680; + vrLoc = 14301; + }; + 6B324E5011255FE100EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B624169103434880002E346 /* RecastMeshDetail.cpp */; + name = "RecastMeshDetail.cpp: 1125"; + rLen = 0; + rLoc = 27453; + rType = 0; + vrLen = 663; + vrLoc = 27342; + }; + 6B324E531125601A00EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B624169103434880002E346 /* RecastMeshDetail.cpp */; + name = "RecastMeshDetail.cpp: 1125"; + rLen = 0; + rLoc = 27453; + rType = 0; + vrLen = 652; + vrLoc = 27138; + }; + 6B324E561125608600EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B624169103434880002E346 /* RecastMeshDetail.cpp */; + name = "RecastMeshDetail.cpp: 1125"; + rLen = 0; + rLoc = 27453; + rType = 0; + vrLen = 707; + vrLoc = 27138; + }; + 6B324E59112563F300EBD2FD /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 6B624169103434880002E346 /* RecastMeshDetail.cpp */; + name = "RecastMeshDetail.cpp: 1125"; + rLen = 0; + rLoc = 27453; + rType = 0; + vrLen = 707; + vrLoc = 27138; + }; 6B555DAE100B211D00247EA3 /* imguiRenderGL.h */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {915, 492}}"; @@ -7865,9 +8243,9 @@ }; 6B624169103434880002E346 /* RecastMeshDetail.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {859, 18592}}"; - sepNavSelRange = "{3741, 396}"; - sepNavVisRange = "{3649, 617}"; + sepNavIntBoundsRect = "{{0, 0}, {824, 18576}}"; + sepNavSelRange = "{27453, 0}"; + sepNavVisRange = "{27138, 707}"; sepNavWindowFrame = "{{61, 36}, {1011, 695}}"; }; }; @@ -7905,7 +8283,7 @@ ignoreCount = 0; lineNumber = 254; location = Recast; - modificationTime = 287658767.511248; + modificationTime = 287662169.588299; state = 1; }; 6B84BE1D110DF6C6007D997B /* Sample_TileMesh.cpp:478 */ = { @@ -7922,7 +8300,7 @@ ignoreCount = 0; lineNumber = 478; location = Recast; - modificationTime = 287658767.511644; + modificationTime = 287662169.588811; state = 1; }; 6B8632970F78114600E2684A /* Recast */ = { @@ -7994,7 +8372,7 @@ 6B8DE88710B69E3E00DF20FB /* DetourNavMesh.cpp */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {815, 35248}}"; - sepNavSelRange = "{47666, 0}"; + sepNavSelRange = "{47430, 0}"; sepNavVisRange = "{47311, 829}"; sepNavWindowFrame = "{{15, 51}, {1214, 722}}"; }; @@ -8042,16 +8420,16 @@ }; 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {815, 11456}}"; + sepNavIntBoundsRect = "{{0, 0}, {815, 11008}}"; sepNavSelRange = "{13214, 0}"; sepNavVisRange = "{12680, 1300}"; }; }; 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {943, 18784}}"; - sepNavSelRange = "{30613, 0}"; - sepNavVisRange = "{30352, 1240}"; + sepNavIntBoundsRect = "{{0, 0}, {1006, 19280}}"; + sepNavSelRange = "{28502, 0}"; + sepNavVisRange = "{27795, 870}"; }; }; 6BA1E88E10C7BFD3008007F6 /* Sample_SoloMeshSimple.h */ = { @@ -8063,9 +8441,9 @@ }; 6BA1E88F10C7BFD3008007F6 /* Sample_SoloMeshTiled.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {815, 1824}}"; - sepNavSelRange = "{2572, 0}"; - sepNavVisRange = "{2064, 585}"; + sepNavIntBoundsRect = "{{0, 0}, {815, 1888}}"; + sepNavSelRange = "{2650, 0}"; + sepNavVisRange = "{2402, 793}"; }; }; 6BB4965F10C8F2AE00BC0805 /* PBXTextBookmark */ = { @@ -11127,7 +11505,7 @@ fRef = 6BA1E88F10C7BFD3008007F6 /* Sample_SoloMeshTiled.h */; name = "Sample_SoloMeshTiled.h: 97"; rLen = 0; - rLoc = 2649; + rLoc = 2651; rType = 0; vrLen = 815; vrLoc = 2162; @@ -11136,7 +11514,7 @@ isa = PBXTextBookmark; fRef = 6BA1E88F10C7BFD3008007F6 /* Sample_SoloMeshTiled.h */; name = "Sample_SoloMeshTiled.h: 96"; - rLen = 33; + rLen = 35; rLoc = 2616; rType = 0; vrLen = 795; @@ -11177,7 +11555,7 @@ fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; name = "Sample_SoloMeshTiled.cpp: 766"; rLen = 0; - rLoc = 22553; + rLoc = 23021; rType = 0; vrLen = 847; vrLoc = 22213; @@ -11297,7 +11675,7 @@ fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; name = "Sample_SoloMeshTiled.cpp: 1089"; rLen = 0; - rLoc = 33317; + rLoc = 33833; rType = 0; vrLen = 2773; vrLoc = 31899; @@ -11404,7 +11782,7 @@ fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; name = "Sample_SoloMeshTiled.cpp: 124"; rLen = 0; - rLoc = 3155; + rLoc = 3621; rType = 0; vrLen = 502; vrLoc = 2752; @@ -11414,7 +11792,7 @@ fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; name = "Sample_SoloMeshTiled.cpp: 124"; rLen = 0; - rLoc = 3155; + rLoc = 3621; rType = 0; vrLen = 502; vrLoc = 2752; diff --git a/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.perspectivev3 b/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.perspectivev3 index 30801d1..b99ba4d 100644 --- a/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.perspectivev3 +++ b/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.perspectivev3 @@ -3,7 +3,7 @@ ActivePerspectiveName - Project + Debug AllowedModules @@ -281,14 +281,14 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 36 - 35 + 30 + 21 1 0 PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 295}, {358, 643}} + {{0, 188}, {358, 643}} PBXTopSmartGroupGIDs @@ -304,8 +304,6 @@ MainColumn 358 - RubberWindowFrame - 11 76 1256 702 0 0 1280 778 Module PBXSmartGroupTreeModule @@ -316,14 +314,12 @@ Dock - BecomeActive - ContentConfiguration PBXProjectModuleGUID 6B8632A30F78115100E2684A PBXProjectModuleLabel - DetourNavMesh.cpp + RecastMeshDetail.cpp PBXSplitModuleInNavigatorKey Split0 @@ -331,11 +327,11 @@ PBXProjectModuleGUID 6B8632A40F78115100E2684A PBXProjectModuleLabel - DetourNavMesh.cpp + RecastMeshDetail.cpp _historyCapacity 0 bookmark - 6B324E231125568100EBD2FD + 6B324E59112563F300EBD2FD history 6B8DE70D10B01BBF00DF20FB @@ -361,9 +357,7 @@ 6BF7C6591117142A002B3F46 6BF7C67D1117163B002B3F46 6BF7C69B11172159002B3F46 - 6BF7C6AA11172278002B3F46 6B324A7C111BF65400EBD2FD - 6B324AC3111C00D700EBD2FD 6B324ACA111C00D700EBD2FD 6B324AE6111C07AB00EBD2FD 6B324AEA111C0D9700EBD2FD @@ -379,26 +373,28 @@ 6B324BBB111C4C2B00EBD2FD 6B324C45111C5C5A00EBD2FD 6B324C92111C604500EBD2FD - 6B324CB5111C6EEA00EBD2FD 6B324CC3111C6F6300EBD2FD 6B324CF9111C7B0900EBD2FD 6B324CFA111C7B0900EBD2FD - 6B324D09111C7C1700EBD2FD 6B324D0A111C7C1700EBD2FD 6B324D0F1121C78000EBD2FD 6B324D101121C78000EBD2FD 6B324D501121D61A00EBD2FD 6B324D511121D61A00EBD2FD - 6B324D631121DE7A00EBD2FD 6B324D641121DE7A00EBD2FD - 6B324D651121DE7A00EBD2FD - 6B324D661121DE7A00EBD2FD 6B324DC911254B2E00EBD2FD 6B324E071125554800EBD2FD 6B324E181125566A00EBD2FD 6B324E191125566A00EBD2FD 6B324E201125568100EBD2FD - 6B324E211125568100EBD2FD + 6B324E2B1125598400EBD2FD + 6B324E2C1125598400EBD2FD + 6B324E3B11255BA700EBD2FD + 6B324E3C11255BA700EBD2FD + 6B324E4111255DB700EBD2FD + 6B324E4911255F5B00EBD2FD + 6B324E4D11255FE100EBD2FD + 6B324E4E11255FE100EBD2FD prevStack @@ -411,7 +407,6 @@ 6BB7FDDA10F37703006DA0A6 6BB7FE1A10F37CF7006DA0A6 6BB7FE2110F37CF7006DA0A6 - 6BB7FE2210F37CF7006DA0A6 6BB7FE5410F3817A006DA0A6 6BB7FF2410F4D699006DA0A6 6BB7FF9610F4E8E2006DA0A6 @@ -438,9 +433,7 @@ 6BF7C16711119C69002B3F46 6BF7C46A1115C514002B3F46 6BF7C52F1115FA3B002B3F46 - 6BF7C6081116F61A002B3F46 6BF7C11111116E74002B3F46 - 6BF7C66A1117142A002B3F46 6BF7C6801117163B002B3F46 6BF7C6A411172253002B3F46 6B324A7E111BF65400EBD2FD @@ -449,7 +442,6 @@ 6B324AB6111BFEFD00EBD2FD 6B324ACD111C00D700EBD2FD 6B324ACE111C00D700EBD2FD - 6B324ACF111C00D700EBD2FD 6B324AD0111C00D700EBD2FD 6B324AD1111C00D700EBD2FD 6B324AD2111C00D700EBD2FD @@ -477,9 +469,7 @@ 6B324B33111C153D00EBD2FD 6B324B35111C153D00EBD2FD 6B324B37111C153D00EBD2FD - 6B324B39111C153D00EBD2FD 6B324B3A111C153D00EBD2FD - 6B324B3B111C153D00EBD2FD 6B324B55111C1AC800EBD2FD 6B324B56111C1AC800EBD2FD 6B324B57111C1AC800EBD2FD @@ -508,15 +498,12 @@ 6B324C2B111C5B8D00EBD2FD 6B324C2D111C5B8D00EBD2FD 6B324C2F111C5B8D00EBD2FD - 6B324C31111C5B8D00EBD2FD 6B324C33111C5B8D00EBD2FD 6B324C49111C5C5A00EBD2FD 6B324C59111C5D1400EBD2FD - 6B324C5D111C5D1400EBD2FD 6B324C61111C5D1400EBD2FD 6B324C71111C5DDC00EBD2FD 6B324C79111C5E7C00EBD2FD - 6B324C7A111C5E7C00EBD2FD 6B324C80111C5EF800EBD2FD 6B324CA4111C6DD400EBD2FD 6B324CA5111C6DD400EBD2FD @@ -529,16 +516,13 @@ 6B324CD0111C759F00EBD2FD 6B324CD1111C759F00EBD2FD 6B324CDE111C789800EBD2FD - 6B324CE0111C789800EBD2FD 6B324CE1111C789800EBD2FD - 6B324CE5111C78DA00EBD2FD 6BF7C678111715D1002B3F46 6B324CF4111C7A9800EBD2FD 6B324CF5111C7A9800EBD2FD 6B324CFF111C7B0900EBD2FD 6B324D00111C7B0900EBD2FD 6B324D02111C7B0900EBD2FD - 6B324D04111C7B0900EBD2FD 6B324D0B111C7C1700EBD2FD 6B324D0C111C7C1700EBD2FD 6B324D121121C78000EBD2FD @@ -557,7 +541,6 @@ 6B324D691121DE7A00EBD2FD 6B324D6A1121DE7A00EBD2FD 6B324D6B1121DE7A00EBD2FD - 6B324D6C1121DE7A00EBD2FD 6B324D6D1121DE7A00EBD2FD 6B324D6F1121DE7A00EBD2FD 6B324D711121DE7A00EBD2FD @@ -582,6 +565,16 @@ 6B324E14112555CF00EBD2FD 6B324E1B1125566A00EBD2FD 6B324E221125568100EBD2FD + 6B324E301125598400EBD2FD + 6B324E311125598400EBD2FD + 6B324E321125598400EBD2FD + 6B324E331125598400EBD2FD + 6B324E341125598400EBD2FD + 6B324E351125598400EBD2FD + 6B324E3E11255BA700EBD2FD + 6B324E3F11255BA700EBD2FD + 6B324E4311255DB700EBD2FD + 6B324E4F11255FE100EBD2FD SplitCount @@ -595,18 +588,16 @@ GeometryConfiguration Frame - {{0, 0}, {876, 426}} - RubberWindowFrame - 11 76 1256 702 0 0 1280 778 + {{0, 0}, {876, 497}} Module PBXNavigatorGroup Proportion - 426pt + 497pt Proportion - 230pt + 159pt Tabs @@ -674,9 +665,7 @@ GeometryConfiguration Frame - {{10, 27}, {876, 203}} - RubberWindowFrame - 11 76 1256 702 0 0 1280 778 + {{10, 27}, {876, 132}} Module PBXBuildResultsModule @@ -759,12 +748,14 @@ GeometryConfiguration Frame - {{0, 0}, {1256, 55}} + {{0, 0}, {1256, 193}} + RubberWindowFrame + 11 76 1256 702 0 0 1280 778 Module PBXDebugCLIModule Proportion - 55pt + 193pt ContentConfiguration @@ -783,8 +774,8 @@ yes sizes - {{0, 0}, {628, 157}} - {{628, 0}, {628, 157}} + {{0, 0}, {628, 121}} + {{628, 0}, {628, 121}} VerticalSplitView @@ -799,8 +790,8 @@ yes sizes - {{0, 0}, {1256, 157}} - {{0, 157}, {1256, 444}} + {{0, 0}, {1256, 121}} + {{0, 121}, {1256, 342}} @@ -820,7 +811,7 @@ DebugSTDIOWindowFrame {{200, 200}, {500, 300}} Frame - {{0, 60}, {1256, 601}} + {{0, 198}, {1256, 463}} PBXDebugSessionStackFrameViewKey DebugVariablesTableConfiguration @@ -833,13 +824,17 @@ 398 Frame - {{628, 0}, {628, 157}} + {{628, 0}, {628, 121}} + RubberWindowFrame + 11 76 1256 702 0 0 1280 778 + RubberWindowFrame + 11 76 1256 702 0 0 1280 778 Module PBXDebugSessionModule Proportion - 601pt + 463pt Name diff --git a/RecastDemo/Include/Sample_SoloMeshTiled.h b/RecastDemo/Include/Sample_SoloMeshTiled.h index f1c971e..bf12ed9 100644 --- a/RecastDemo/Include/Sample_SoloMeshTiled.h +++ b/RecastDemo/Include/Sample_SoloMeshTiled.h @@ -109,6 +109,8 @@ public: virtual bool handleBuild(); void setHighlightedTile(const float* pos); + inline int getHilightedTileX() const { return m_highLightedTileX; } + inline int getHilightedTileY() const { return m_highLightedTileY; } }; diff --git a/RecastDemo/Source/Sample_SoloMeshTiled.cpp b/RecastDemo/Source/Sample_SoloMeshTiled.cpp index 2abb0fc..3a2c93d 100644 --- a/RecastDemo/Source/Sample_SoloMeshTiled.cpp +++ b/RecastDemo/Source/Sample_SoloMeshTiled.cpp @@ -106,6 +106,20 @@ public: virtual void handleRenderOverlay(double* proj, double* model, int* view) { + GLdouble x, y, z; + + + // Draw start and end point labels + if (m_hitPosSet && gluProject((GLdouble)m_hitPos[0], (GLdouble)m_hitPos[1], (GLdouble)m_hitPos[2], + model, proj, view, &x, &y, &z)) + { + const int tx = m_sample->getHilightedTileX(); + const int ty = m_sample->getHilightedTileY(); + char text[32]; + snprintf(text,32,"Tile: (%d, %d)", tx, ty); + imguiDrawText((int)x, (int)y-25, IMGUI_ALIGN_CENTER, text, imguiRGBA(0,0,0,220)); + } + } }; @@ -750,10 +764,10 @@ bool Sample_SoloMeshTiled::handleBuild() } return false; } - - rcHeightfield* solid = 0; + +/* rcHeightfield* solid = 0; rcCompactHeightfield* chf = 0; - rcContourSet* cset = 0; + rcContourSet* cset = 0;*/ for (int y = 0; y < m_tileSet->height; ++y) { @@ -771,10 +785,10 @@ bool Sample_SoloMeshTiled::handleBuild() tileCfg.bmax[0] = m_cfg.bmin[0] + ((x+1)*m_cfg.tileSize + m_cfg.borderSize)*m_cfg.cs; tileCfg.bmax[2] = m_cfg.bmin[2] + ((y+1)*m_cfg.tileSize + m_cfg.borderSize)*m_cfg.cs; - delete solid; +/* delete solid; delete chf; solid = 0; - chf = 0; + chf = 0;*/ float tbmin[2], tbmax[2]; tbmin[0] = tileCfg.bmin[0]; @@ -786,14 +800,14 @@ bool Sample_SoloMeshTiled::handleBuild() if (!ncid) continue; - solid = new rcHeightfield; - if (!solid) + tile.solid = new rcHeightfield; + if (!tile.solid) { if (rcGetLog()) rcGetLog()->log(RC_LOG_ERROR, "buildTiledNavigation: [%d,%d] Out of memory 'solid'.", x, y); continue; } - if (!rcCreateHeightfield(*solid, tileCfg.width, tileCfg.height, tileCfg.bmin, tileCfg.bmax, tileCfg.cs, tileCfg.ch)) + if (!rcCreateHeightfield(*tile.solid, tileCfg.width, tileCfg.height, tileCfg.bmin, tileCfg.bmax, tileCfg.cs, tileCfg.ch)) { if (rcGetLog()) rcGetLog()->log(RC_LOG_ERROR, "buildTiledNavigation: [%d,%d] Could not create solid heightfield.", x, y); @@ -810,22 +824,22 @@ bool Sample_SoloMeshTiled::handleBuild() rcMarkWalkableTriangles(tileCfg.walkableSlopeAngle, verts, nverts, tris, ntris, triangleFlags); - rcRasterizeTriangles(verts, nverts, tris, triangleFlags, ntris, *solid, m_cfg.walkableClimb); + rcRasterizeTriangles(verts, nverts, tris, triangleFlags, ntris, *tile.solid, m_cfg.walkableClimb); } - rcFilterLowHangingWalkableObstacles(m_cfg.walkableClimb, *solid); - rcFilterLedgeSpans(tileCfg.walkableHeight, tileCfg.walkableClimb, *solid); - rcFilterWalkableLowHeightSpans(tileCfg.walkableHeight, *solid); + rcFilterLowHangingWalkableObstacles(m_cfg.walkableClimb, *tile.solid); + rcFilterLedgeSpans(tileCfg.walkableHeight, tileCfg.walkableClimb, *tile.solid); + rcFilterWalkableLowHeightSpans(tileCfg.walkableHeight, *tile.solid); - chf = new rcCompactHeightfield; - if (!chf) + tile.chf = new rcCompactHeightfield; + if (!tile.chf) { if (rcGetLog()) rcGetLog()->log(RC_LOG_ERROR, "buildTiledNavigation: [%d,%d] Out of memory 'chf'.", x, y); continue; } if (!rcBuildCompactHeightfield(tileCfg.walkableHeight, tileCfg.walkableClimb, - RC_WALKABLE, *solid, *chf)) + RC_WALKABLE, *tile.solid, *tile.chf)) { if (rcGetLog()) rcGetLog()->log(RC_LOG_ERROR, "buildTiledNavigation: [%d,%d] Could not build compact data.", x, y); @@ -833,7 +847,7 @@ bool Sample_SoloMeshTiled::handleBuild() } // Erode the walkable area by agent radius. - if (!rcErodeArea(RC_WALKABLE_AREA, m_cfg.walkableRadius, *chf)) + if (!rcErodeArea(RC_WALKABLE_AREA, m_cfg.walkableRadius, *tile.chf)) { if (rcGetLog()) rcGetLog()->log(RC_LOG_ERROR, "buildTiledNavigation: Could not erode."); @@ -843,43 +857,36 @@ bool Sample_SoloMeshTiled::handleBuild() // (Optional) Mark areas. const ConvexVolume* vols = m_geom->getConvexVolumes(); for (int i = 0; i < m_geom->getConvexVolumeCount(); ++i) - rcMarkConvexPolyArea(vols[i].verts, vols[i].nverts, vols[i].hmin, vols[i].hmax, (unsigned char)vols[i].area, *chf); + rcMarkConvexPolyArea(vols[i].verts, vols[i].nverts, vols[i].hmin, vols[i].hmax, (unsigned char)vols[i].area, *tile.chf); - if (!rcBuildDistanceField(*chf)) + if (!rcBuildDistanceField(*tile.chf)) { if (rcGetLog()) rcGetLog()->log(RC_LOG_ERROR, "buildTiledNavigation: [%d,%d] Could not build distance fields.", x, y); continue; } - if (!rcBuildRegions(*chf, tileCfg.borderSize, tileCfg.minRegionSize, tileCfg.mergeRegionSize)) + if (!rcBuildRegions(*tile.chf, tileCfg.borderSize, tileCfg.minRegionSize, tileCfg.mergeRegionSize)) { if (rcGetLog()) rcGetLog()->log(RC_LOG_ERROR, "buildTiledNavigation: [%d,%d] Could not build regions.", x, y); continue; } - cset = new rcContourSet; - if (!cset) + tile.cset = new rcContourSet; + if (!tile.cset) { if (rcGetLog()) rcGetLog()->log(RC_LOG_ERROR, "buildTiledNavigation: [%d,%d] Out of memory 'cset'.", x, y); continue; } - if (!rcBuildContours(*chf, tileCfg.maxSimplificationError, tileCfg.maxEdgeLen, *cset)) + if (!rcBuildContours(*tile.chf, tileCfg.maxSimplificationError, tileCfg.maxEdgeLen, *tile.cset)) { if (rcGetLog()) rcGetLog()->log(RC_LOG_ERROR, "buildTiledNavigation: [%d,%d] Could not create contours.", x, y); continue; } - if (!cset->nconts) - { - delete cset; - cset = 0; - continue; - } - tile.pmesh = new rcPolyMesh; if (!tile.pmesh) { @@ -887,7 +894,7 @@ bool Sample_SoloMeshTiled::handleBuild() rcGetLog()->log(RC_LOG_ERROR, "buildTiledNavigation: [%d,%d] Out of memory 'pmesh'.", x, y); continue; } - if (!rcBuildPolyMesh(*cset, tileCfg.maxVertsPerPoly, *tile.pmesh)) + if (!rcBuildPolyMesh(*tile.cset, tileCfg.maxVertsPerPoly, *tile.pmesh)) { if (rcGetLog()) rcGetLog()->log(RC_LOG_ERROR, "buildTiledNavigation: [%d,%d] Could not create poly mesh.", x, y); @@ -902,21 +909,21 @@ bool Sample_SoloMeshTiled::handleBuild() continue; } - if (!rcBuildPolyMeshDetail(*tile.pmesh, *chf, tileCfg.detailSampleDist, tileCfg .detailSampleMaxError, *tile.dmesh)) + if (!rcBuildPolyMeshDetail(*tile.pmesh, *tile.chf, tileCfg.detailSampleDist, tileCfg .detailSampleMaxError, *tile.dmesh)) { if (rcGetLog()) rcGetLog()->log(RC_LOG_ERROR, "buildTiledNavigation: [%d,%d] Could not build detail mesh.", x, y); continue; } - if (m_keepInterResults) + if (!m_keepInterResults) { - tile.solid = solid; - solid = 0; - tile.chf = chf; - chf = 0; - tile.cset = cset; - cset = 0; + delete tile.solid; + tile.solid = 0; + delete tile.chf; + tile.chf = 0; + delete tile.cset; + tile.cset = 0; } rcTimeVal endTime = rcGetPerformanceTimer(); @@ -941,8 +948,8 @@ bool Sample_SoloMeshTiled::handleBuild() } delete [] triangleFlags; - delete solid; - delete chf; +// delete solid; +// delete chf; // Merge per tile poly and detail meshes. rcPolyMesh** pmmerge = new rcPolyMesh*[m_tileSet->width*m_tileSet->height];