diff --git a/RecastDemo/Bin/Recast.app/Contents/MacOS/Recast b/RecastDemo/Bin/Recast.app/Contents/MacOS/Recast
index bffdd5cf..c56720e5 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 62dbdb70..23473cb4 100644
--- a/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.pbxuser
+++ b/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.pbxuser
@@ -17,6 +17,10 @@
);
breakpoints = (
6BBB88CC10EAA37B008FEA1F /* NavMeshTesterTool.cpp:282 */,
+ 6BB7FDB010F376F4006DA0A6 /* main.cpp:573 */,
+ 6BB7FDE910F37785006DA0A6 /* Sample_SoloMeshSimple.cpp:186 */,
+ 6BB7FE6810F381F1006DA0A6 /* Sample.cpp:81 */,
+ 6BB7FE7110F38203006DA0A6 /* Sample_TileMesh.cpp:169 */,
);
codeSenseManager = 6B8632AA0F78115100E2684A /* Code sense */;
executables = (
@@ -145,6 +149,220 @@
6BB4965F10C8F2AE00BC0805 = 6BB4965F10C8F2AE00BC0805 /* PBXTextBookmark */;
6BB4966110C8F2AE00BC0805 = 6BB4966110C8F2AE00BC0805 /* PBXTextBookmark */;
6BB4967C10C8F8F500BC0805 = 6BB4967C10C8F8F500BC0805 /* PBXTextBookmark */;
+ 6BB7FD4B10F3564B006DA0A6 /* PBXTextBookmark */ = 6BB7FD4B10F3564B006DA0A6 /* PBXTextBookmark */;
+ 6BB7FD4C10F3564B006DA0A6 /* PBXTextBookmark */ = 6BB7FD4C10F3564B006DA0A6 /* PBXTextBookmark */;
+ 6BB7FD4D10F3564B006DA0A6 /* PBXTextBookmark */ = 6BB7FD4D10F3564B006DA0A6 /* PBXTextBookmark */;
+ 6BB7FD4E10F3564B006DA0A6 /* PBXTextBookmark */ = 6BB7FD4E10F3564B006DA0A6 /* PBXTextBookmark */;
+ 6BB7FD4F10F3564B006DA0A6 /* PBXTextBookmark */ = 6BB7FD4F10F3564B006DA0A6 /* PBXTextBookmark */;
+ 6BB7FD5010F3564B006DA0A6 /* PBXTextBookmark */ = 6BB7FD5010F3564B006DA0A6 /* PBXTextBookmark */;
+ 6BB7FD5110F3564B006DA0A6 /* PBXTextBookmark */ = 6BB7FD5110F3564B006DA0A6 /* PBXTextBookmark */;
+ 6BB7FD5210F3564B006DA0A6 /* PBXTextBookmark */ = 6BB7FD5210F3564B006DA0A6 /* PBXTextBookmark */;
+ 6BB7FD5310F3564B006DA0A6 /* PBXTextBookmark */ = 6BB7FD5310F3564B006DA0A6 /* PBXTextBookmark */;
+ 6BB7FD5410F3564B006DA0A6 /* PBXTextBookmark */ = 6BB7FD5410F3564B006DA0A6 /* PBXTextBookmark */;
+ 6BB7FD5510F3564B006DA0A6 /* PBXTextBookmark */ = 6BB7FD5510F3564B006DA0A6 /* PBXTextBookmark */;
+ 6BB7FD5610F3564B006DA0A6 /* PBXTextBookmark */ = 6BB7FD5610F3564B006DA0A6 /* PBXTextBookmark */;
+ 6BB7FD5710F3564B006DA0A6 /* PBXTextBookmark */ = 6BB7FD5710F3564B006DA0A6 /* PBXTextBookmark */;
+ 6BB7FD5810F3564B006DA0A6 /* PBXTextBookmark */ = 6BB7FD5810F3564B006DA0A6 /* PBXTextBookmark */;
+ 6BB7FD5910F3564B006DA0A6 /* PBXTextBookmark */ = 6BB7FD5910F3564B006DA0A6 /* PBXTextBookmark */;
+ 6BB7FD5A10F3564B006DA0A6 /* PBXTextBookmark */ = 6BB7FD5A10F3564B006DA0A6 /* PBXTextBookmark */;
+ 6BB7FD5B10F3564B006DA0A6 /* PBXTextBookmark */ = 6BB7FD5B10F3564B006DA0A6 /* PBXTextBookmark */;
+ 6BB7FD5C10F3564B006DA0A6 /* PBXTextBookmark */ = 6BB7FD5C10F3564B006DA0A6 /* PBXTextBookmark */;
+ 6BB7FD5D10F3564B006DA0A6 /* PBXTextBookmark */ = 6BB7FD5D10F3564B006DA0A6 /* PBXTextBookmark */;
+ 6BB7FD5E10F3564B006DA0A6 /* PBXTextBookmark */ = 6BB7FD5E10F3564B006DA0A6 /* PBXTextBookmark */;
+ 6BB7FD5F10F3564B006DA0A6 /* PBXTextBookmark */ = 6BB7FD5F10F3564B006DA0A6 /* PBXTextBookmark */;
+ 6BB7FD6010F3564B006DA0A6 /* PBXTextBookmark */ = 6BB7FD6010F3564B006DA0A6 /* PBXTextBookmark */;
+ 6BB7FD6110F3564B006DA0A6 /* PBXTextBookmark */ = 6BB7FD6110F3564B006DA0A6 /* PBXTextBookmark */;
+ 6BB7FD6210F3564B006DA0A6 /* PBXTextBookmark */ = 6BB7FD6210F3564B006DA0A6 /* PBXTextBookmark */;
+ 6BB7FD6310F3564B006DA0A6 /* PBXTextBookmark */ = 6BB7FD6310F3564B006DA0A6 /* PBXTextBookmark */;
+ 6BB7FD6410F3564B006DA0A6 /* PBXTextBookmark */ = 6BB7FD6410F3564B006DA0A6 /* PBXTextBookmark */;
+ 6BB7FD6510F3564B006DA0A6 /* PBXTextBookmark */ = 6BB7FD6510F3564B006DA0A6 /* PBXTextBookmark */;
+ 6BB7FD6610F3564B006DA0A6 /* PBXTextBookmark */ = 6BB7FD6610F3564B006DA0A6 /* PBXTextBookmark */;
+ 6BB7FD6710F3564B006DA0A6 /* PBXTextBookmark */ = 6BB7FD6710F3564B006DA0A6 /* PBXTextBookmark */;
+ 6BB7FD6810F3564B006DA0A6 /* PBXTextBookmark */ = 6BB7FD6810F3564B006DA0A6 /* PBXTextBookmark */;
+ 6BB7FD6910F3564B006DA0A6 /* PBXTextBookmark */ = 6BB7FD6910F3564B006DA0A6 /* PBXTextBookmark */;
+ 6BB7FD6A10F3564B006DA0A6 /* PBXTextBookmark */ = 6BB7FD6A10F3564B006DA0A6 /* PBXTextBookmark */;
+ 6BB7FD7510F361BE006DA0A6 /* PBXTextBookmark */ = 6BB7FD7510F361BE006DA0A6 /* PBXTextBookmark */;
+ 6BB7FD7C10F36BD5006DA0A6 /* PBXTextBookmark */ = 6BB7FD7C10F36BD5006DA0A6 /* PBXTextBookmark */;
+ 6BB7FD7D10F36BD5006DA0A6 /* PBXTextBookmark */ = 6BB7FD7D10F36BD5006DA0A6 /* PBXTextBookmark */;
+ 6BB7FD7E10F36BD5006DA0A6 /* PBXTextBookmark */ = 6BB7FD7E10F36BD5006DA0A6 /* PBXTextBookmark */;
+ 6BB7FD7F10F36BD5006DA0A6 /* PBXTextBookmark */ = 6BB7FD7F10F36BD5006DA0A6 /* PBXTextBookmark */;
+ 6BB7FD8010F36BD5006DA0A6 /* PBXTextBookmark */ = 6BB7FD8010F36BD5006DA0A6 /* PBXTextBookmark */;
+ 6BB7FD8110F36BD5006DA0A6 /* PBXTextBookmark */ = 6BB7FD8110F36BD5006DA0A6 /* PBXTextBookmark */;
+ 6BB7FD8210F36BD5006DA0A6 /* PBXTextBookmark */ = 6BB7FD8210F36BD5006DA0A6 /* PBXTextBookmark */;
+ 6BB7FD8310F36BD5006DA0A6 /* PBXTextBookmark */ = 6BB7FD8310F36BD5006DA0A6 /* PBXTextBookmark */;
+ 6BB7FD8410F36BD5006DA0A6 /* PBXTextBookmark */ = 6BB7FD8410F36BD5006DA0A6 /* PBXTextBookmark */;
+ 6BB7FD8510F36BD5006DA0A6 /* PBXTextBookmark */ = 6BB7FD8510F36BD5006DA0A6 /* PBXTextBookmark */;
+ 6BB7FD8610F36BD5006DA0A6 /* PBXTextBookmark */ = 6BB7FD8610F36BD5006DA0A6 /* PBXTextBookmark */;
+ 6BB7FD8710F36BD5006DA0A6 /* PBXTextBookmark */ = 6BB7FD8710F36BD5006DA0A6 /* PBXTextBookmark */;
+ 6BB7FD8810F36BD5006DA0A6 /* PBXTextBookmark */ = 6BB7FD8810F36BD5006DA0A6 /* PBXTextBookmark */;
+ 6BB7FD8910F36BD5006DA0A6 /* PBXTextBookmark */ = 6BB7FD8910F36BD5006DA0A6 /* PBXTextBookmark */;
+ 6BB7FD8A10F36BD5006DA0A6 /* PBXTextBookmark */ = 6BB7FD8A10F36BD5006DA0A6 /* PBXTextBookmark */;
+ 6BB7FD8B10F36BD5006DA0A6 /* PBXTextBookmark */ = 6BB7FD8B10F36BD5006DA0A6 /* PBXTextBookmark */;
+ 6BB7FD8C10F36BD5006DA0A6 /* PBXTextBookmark */ = 6BB7FD8C10F36BD5006DA0A6 /* PBXTextBookmark */;
+ 6BB7FD8F10F36C53006DA0A6 /* PBXTextBookmark */ = 6BB7FD8F10F36C53006DA0A6 /* PBXTextBookmark */;
+ 6BB7FD9010F36C53006DA0A6 /* PBXTextBookmark */ = 6BB7FD9010F36C53006DA0A6 /* PBXTextBookmark */;
+ 6BB7FD9110F36C53006DA0A6 /* PBXTextBookmark */ = 6BB7FD9110F36C53006DA0A6 /* PBXTextBookmark */;
+ 6BB7FD9210F36C53006DA0A6 /* PBXTextBookmark */ = 6BB7FD9210F36C53006DA0A6 /* PBXTextBookmark */;
+ 6BB7FD9310F36C53006DA0A6 /* PBXTextBookmark */ = 6BB7FD9310F36C53006DA0A6 /* PBXTextBookmark */;
+ 6BB7FD9410F36C53006DA0A6 /* PBXTextBookmark */ = 6BB7FD9410F36C53006DA0A6 /* PBXTextBookmark */;
+ 6BB7FD9510F36C53006DA0A6 /* PBXTextBookmark */ = 6BB7FD9510F36C53006DA0A6 /* PBXTextBookmark */;
+ 6BB7FD9610F36C53006DA0A6 /* PBXTextBookmark */ = 6BB7FD9610F36C53006DA0A6 /* PBXTextBookmark */;
+ 6BB7FD9710F36C53006DA0A6 /* PBXTextBookmark */ = 6BB7FD9710F36C53006DA0A6 /* PBXTextBookmark */;
+ 6BB7FD9A10F36D7A006DA0A6 /* PBXTextBookmark */ = 6BB7FD9A10F36D7A006DA0A6 /* PBXTextBookmark */;
+ 6BB7FD9B10F36D7A006DA0A6 /* PBXTextBookmark */ = 6BB7FD9B10F36D7A006DA0A6 /* PBXTextBookmark */;
+ 6BB7FD9C10F36D7A006DA0A6 /* PBXTextBookmark */ = 6BB7FD9C10F36D7A006DA0A6 /* PBXTextBookmark */;
+ 6BB7FD9D10F36D7A006DA0A6 /* PBXTextBookmark */ = 6BB7FD9D10F36D7A006DA0A6 /* PBXTextBookmark */;
+ 6BB7FD9E10F36D7A006DA0A6 /* PBXTextBookmark */ = 6BB7FD9E10F36D7A006DA0A6 /* PBXTextBookmark */;
+ 6BB7FD9F10F36D7A006DA0A6 /* PBXTextBookmark */ = 6BB7FD9F10F36D7A006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDA010F36D7A006DA0A6 /* PBXTextBookmark */ = 6BB7FDA010F36D7A006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDA110F36D7A006DA0A6 /* PBXTextBookmark */ = 6BB7FDA110F36D7A006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDB210F37703006DA0A6 /* PBXTextBookmark */ = 6BB7FDB210F37703006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDB310F37703006DA0A6 /* PBXTextBookmark */ = 6BB7FDB310F37703006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDB410F37703006DA0A6 /* PBXTextBookmark */ = 6BB7FDB410F37703006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDB510F37703006DA0A6 /* PBXTextBookmark */ = 6BB7FDB510F37703006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDB610F37703006DA0A6 /* PBXTextBookmark */ = 6BB7FDB610F37703006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDB710F37703006DA0A6 /* PBXTextBookmark */ = 6BB7FDB710F37703006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDB810F37703006DA0A6 /* PBXTextBookmark */ = 6BB7FDB810F37703006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDB910F37703006DA0A6 /* PBXTextBookmark */ = 6BB7FDB910F37703006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDBA10F37703006DA0A6 /* PBXTextBookmark */ = 6BB7FDBA10F37703006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDBB10F37703006DA0A6 /* PBXTextBookmark */ = 6BB7FDBB10F37703006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDBC10F37703006DA0A6 /* PBXTextBookmark */ = 6BB7FDBC10F37703006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDBD10F37703006DA0A6 /* PBXTextBookmark */ = 6BB7FDBD10F37703006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDBE10F37703006DA0A6 /* PBXTextBookmark */ = 6BB7FDBE10F37703006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDBF10F37703006DA0A6 /* PBXTextBookmark */ = 6BB7FDBF10F37703006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDC010F37703006DA0A6 /* PBXTextBookmark */ = 6BB7FDC010F37703006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDC110F37703006DA0A6 /* PBXTextBookmark */ = 6BB7FDC110F37703006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDC210F37703006DA0A6 /* PBXTextBookmark */ = 6BB7FDC210F37703006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDC310F37703006DA0A6 /* PBXTextBookmark */ = 6BB7FDC310F37703006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDC410F37703006DA0A6 /* PBXTextBookmark */ = 6BB7FDC410F37703006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDC510F37703006DA0A6 /* PBXTextBookmark */ = 6BB7FDC510F37703006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDC610F37703006DA0A6 /* PBXTextBookmark */ = 6BB7FDC610F37703006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDC710F37703006DA0A6 /* PBXTextBookmark */ = 6BB7FDC710F37703006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDC810F37703006DA0A6 /* PBXTextBookmark */ = 6BB7FDC810F37703006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDC910F37703006DA0A6 /* PBXTextBookmark */ = 6BB7FDC910F37703006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDCA10F37703006DA0A6 /* PBXTextBookmark */ = 6BB7FDCA10F37703006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDCB10F37703006DA0A6 /* PBXTextBookmark */ = 6BB7FDCB10F37703006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDCC10F37703006DA0A6 /* PBXTextBookmark */ = 6BB7FDCC10F37703006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDCD10F37703006DA0A6 /* PBXTextBookmark */ = 6BB7FDCD10F37703006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDCE10F37703006DA0A6 /* PBXTextBookmark */ = 6BB7FDCE10F37703006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDCF10F37703006DA0A6 /* PBXTextBookmark */ = 6BB7FDCF10F37703006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDD010F37703006DA0A6 /* PBXTextBookmark */ = 6BB7FDD010F37703006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDD110F37703006DA0A6 /* PBXTextBookmark */ = 6BB7FDD110F37703006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDD210F37703006DA0A6 /* PBXTextBookmark */ = 6BB7FDD210F37703006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDD310F37703006DA0A6 /* PBXTextBookmark */ = 6BB7FDD310F37703006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDD410F37703006DA0A6 /* PBXTextBookmark */ = 6BB7FDD410F37703006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDD510F37703006DA0A6 /* PBXTextBookmark */ = 6BB7FDD510F37703006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDD610F37703006DA0A6 /* PBXTextBookmark */ = 6BB7FDD610F37703006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDD710F37703006DA0A6 /* PBXTextBookmark */ = 6BB7FDD710F37703006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDD810F37703006DA0A6 /* PBXTextBookmark */ = 6BB7FDD810F37703006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDD910F37703006DA0A6 /* PBXTextBookmark */ = 6BB7FDD910F37703006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDDA10F37703006DA0A6 /* PBXTextBookmark */ = 6BB7FDDA10F37703006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDDB10F37703006DA0A6 /* PBXTextBookmark */ = 6BB7FDDB10F37703006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDDC10F37703006DA0A6 /* PBXTextBookmark */ = 6BB7FDDC10F37703006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDDD10F37703006DA0A6 /* PBXTextBookmark */ = 6BB7FDDD10F37703006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDDE10F37703006DA0A6 /* PBXTextBookmark */ = 6BB7FDDE10F37703006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDDF10F37703006DA0A6 /* PBXTextBookmark */ = 6BB7FDDF10F37703006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDE010F37703006DA0A6 /* PBXTextBookmark */ = 6BB7FDE010F37703006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDE110F37703006DA0A6 /* PBXTextBookmark */ = 6BB7FDE110F37703006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDE210F37703006DA0A6 /* PBXTextBookmark */ = 6BB7FDE210F37703006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDE310F37703006DA0A6 /* PBXTextBookmark */ = 6BB7FDE310F37703006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDE410F37703006DA0A6 /* PBXTextBookmark */ = 6BB7FDE410F37703006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDED10F377DD006DA0A6 /* PBXTextBookmark */ = 6BB7FDED10F377DD006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDEE10F377DD006DA0A6 /* PBXTextBookmark */ = 6BB7FDEE10F377DD006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDEF10F377DD006DA0A6 /* PBXTextBookmark */ = 6BB7FDEF10F377DD006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDF010F377DD006DA0A6 /* PBXTextBookmark */ = 6BB7FDF010F377DD006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDF110F377DD006DA0A6 /* PBXTextBookmark */ = 6BB7FDF110F377DD006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDF210F377DD006DA0A6 /* PBXTextBookmark */ = 6BB7FDF210F377DD006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDF310F377DD006DA0A6 /* PBXTextBookmark */ = 6BB7FDF310F377DD006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDF410F377DD006DA0A6 /* PBXTextBookmark */ = 6BB7FDF410F377DD006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDF510F377DD006DA0A6 /* PBXTextBookmark */ = 6BB7FDF510F377DD006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDF610F377DD006DA0A6 /* PBXTextBookmark */ = 6BB7FDF610F377DD006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDF710F377DD006DA0A6 /* PBXTextBookmark */ = 6BB7FDF710F377DD006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDF810F377DD006DA0A6 /* PBXTextBookmark */ = 6BB7FDF810F377DD006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDF910F377DD006DA0A6 /* PBXTextBookmark */ = 6BB7FDF910F377DD006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDFA10F377DD006DA0A6 /* PBXTextBookmark */ = 6BB7FDFA10F377DD006DA0A6 /* PBXTextBookmark */;
+ 6BB7FDFB10F377DD006DA0A6 /* PBXTextBookmark */ = 6BB7FDFB10F377DD006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE0F10F37CF7006DA0A6 /* PBXTextBookmark */ = 6BB7FE0F10F37CF7006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE1010F37CF7006DA0A6 /* PBXTextBookmark */ = 6BB7FE1010F37CF7006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE1110F37CF7006DA0A6 /* PBXTextBookmark */ = 6BB7FE1110F37CF7006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE1210F37CF7006DA0A6 /* PBXTextBookmark */ = 6BB7FE1210F37CF7006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE1310F37CF7006DA0A6 /* PBXTextBookmark */ = 6BB7FE1310F37CF7006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE1410F37CF7006DA0A6 /* PBXTextBookmark */ = 6BB7FE1410F37CF7006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE1510F37CF7006DA0A6 /* PBXTextBookmark */ = 6BB7FE1510F37CF7006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE1610F37CF7006DA0A6 /* PBXTextBookmark */ = 6BB7FE1610F37CF7006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE1710F37CF7006DA0A6 /* PBXTextBookmark */ = 6BB7FE1710F37CF7006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE1810F37CF7006DA0A6 /* PBXTextBookmark */ = 6BB7FE1810F37CF7006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE1910F37CF7006DA0A6 /* PBXTextBookmark */ = 6BB7FE1910F37CF7006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE1A10F37CF7006DA0A6 /* PBXTextBookmark */ = 6BB7FE1A10F37CF7006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE1B10F37CF7006DA0A6 /* PBXTextBookmark */ = 6BB7FE1B10F37CF7006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE1C10F37CF7006DA0A6 /* PBXTextBookmark */ = 6BB7FE1C10F37CF7006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE1D10F37CF7006DA0A6 /* PBXTextBookmark */ = 6BB7FE1D10F37CF7006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE1E10F37CF7006DA0A6 /* PBXTextBookmark */ = 6BB7FE1E10F37CF7006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE1F10F37CF7006DA0A6 /* PBXTextBookmark */ = 6BB7FE1F10F37CF7006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE2010F37CF7006DA0A6 /* PBXTextBookmark */ = 6BB7FE2010F37CF7006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE2110F37CF7006DA0A6 /* PBXTextBookmark */ = 6BB7FE2110F37CF7006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE2210F37CF7006DA0A6 /* PBXTextBookmark */ = 6BB7FE2210F37CF7006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE2310F37CF7006DA0A6 /* PBXTextBookmark */ = 6BB7FE2310F37CF7006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE2410F37CF7006DA0A6 /* PBXTextBookmark */ = 6BB7FE2410F37CF7006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE3A10F3817A006DA0A6 /* PBXTextBookmark */ = 6BB7FE3A10F3817A006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE3B10F3817A006DA0A6 /* PBXTextBookmark */ = 6BB7FE3B10F3817A006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE3C10F3817A006DA0A6 /* PBXTextBookmark */ = 6BB7FE3C10F3817A006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE3D10F3817A006DA0A6 /* PBXTextBookmark */ = 6BB7FE3D10F3817A006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE3E10F3817A006DA0A6 /* PBXTextBookmark */ = 6BB7FE3E10F3817A006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE3F10F3817A006DA0A6 /* PBXTextBookmark */ = 6BB7FE3F10F3817A006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE4010F3817A006DA0A6 /* PBXTextBookmark */ = 6BB7FE4010F3817A006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE4110F3817A006DA0A6 /* PBXTextBookmark */ = 6BB7FE4110F3817A006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE4210F3817A006DA0A6 /* PBXTextBookmark */ = 6BB7FE4210F3817A006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE4310F3817A006DA0A6 /* PBXTextBookmark */ = 6BB7FE4310F3817A006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE4410F3817A006DA0A6 /* PBXTextBookmark */ = 6BB7FE4410F3817A006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE4510F3817A006DA0A6 /* PBXTextBookmark */ = 6BB7FE4510F3817A006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE4610F3817A006DA0A6 /* PBXTextBookmark */ = 6BB7FE4610F3817A006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE4710F3817A006DA0A6 /* PBXTextBookmark */ = 6BB7FE4710F3817A006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE4810F3817A006DA0A6 /* PBXTextBookmark */ = 6BB7FE4810F3817A006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE4910F3817A006DA0A6 /* PBXTextBookmark */ = 6BB7FE4910F3817A006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE4A10F3817A006DA0A6 /* PBXTextBookmark */ = 6BB7FE4A10F3817A006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE4B10F3817A006DA0A6 /* PBXTextBookmark */ = 6BB7FE4B10F3817A006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE4C10F3817A006DA0A6 /* PBXTextBookmark */ = 6BB7FE4C10F3817A006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE4D10F3817A006DA0A6 /* PBXTextBookmark */ = 6BB7FE4D10F3817A006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE4E10F3817A006DA0A6 /* PBXTextBookmark */ = 6BB7FE4E10F3817A006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE4F10F3817A006DA0A6 /* PBXTextBookmark */ = 6BB7FE4F10F3817A006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE5010F3817A006DA0A6 /* PBXTextBookmark */ = 6BB7FE5010F3817A006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE5110F3817A006DA0A6 /* PBXTextBookmark */ = 6BB7FE5110F3817A006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE5210F3817A006DA0A6 /* PBXTextBookmark */ = 6BB7FE5210F3817A006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE5310F3817A006DA0A6 /* PBXTextBookmark */ = 6BB7FE5310F3817A006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE5410F3817A006DA0A6 /* PBXTextBookmark */ = 6BB7FE5410F3817A006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE5510F3817A006DA0A6 /* PBXTextBookmark */ = 6BB7FE5510F3817A006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE5610F3817A006DA0A6 /* PBXTextBookmark */ = 6BB7FE5610F3817A006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE5710F3817A006DA0A6 /* PBXTextBookmark */ = 6BB7FE5710F3817A006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE5810F3817A006DA0A6 /* PBXTextBookmark */ = 6BB7FE5810F3817A006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE5910F3817A006DA0A6 /* PBXTextBookmark */ = 6BB7FE5910F3817A006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE5A10F3817A006DA0A6 /* PBXTextBookmark */ = 6BB7FE5A10F3817A006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE5B10F3817A006DA0A6 /* PBXTextBookmark */ = 6BB7FE5B10F3817A006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE6010F381DC006DA0A6 /* PBXTextBookmark */ = 6BB7FE6010F381DC006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE6110F381DC006DA0A6 /* PBXTextBookmark */ = 6BB7FE6110F381DC006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE6210F381DC006DA0A6 /* PBXTextBookmark */ = 6BB7FE6210F381DC006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE6310F381DC006DA0A6 /* PBXTextBookmark */ = 6BB7FE6310F381DC006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE6410F381DC006DA0A6 /* PBXTextBookmark */ = 6BB7FE6410F381DC006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE6510F381DC006DA0A6 /* PBXTextBookmark */ = 6BB7FE6510F381DC006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE6B10F381FF006DA0A6 /* PBXTextBookmark */ = 6BB7FE6B10F381FF006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE6C10F381FF006DA0A6 /* PBXTextBookmark */ = 6BB7FE6C10F381FF006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE6D10F381FF006DA0A6 /* PBXTextBookmark */ = 6BB7FE6D10F381FF006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE6E10F381FF006DA0A6 /* PBXTextBookmark */ = 6BB7FE6E10F381FF006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE7210F38204006DA0A6 /* PBXTextBookmark */ = 6BB7FE7210F38204006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE7410F38224006DA0A6 /* PBXTextBookmark */ = 6BB7FE7410F38224006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE7510F38224006DA0A6 /* PBXTextBookmark */ = 6BB7FE7510F38224006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE7610F38224006DA0A6 /* PBXTextBookmark */ = 6BB7FE7610F38224006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE7710F38224006DA0A6 /* PBXTextBookmark */ = 6BB7FE7710F38224006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE7810F38224006DA0A6 /* PBXTextBookmark */ = 6BB7FE7810F38224006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE7910F38224006DA0A6 /* PBXTextBookmark */ = 6BB7FE7910F38224006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE7A10F38224006DA0A6 /* PBXTextBookmark */ = 6BB7FE7A10F38224006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE7B10F38224006DA0A6 /* PBXTextBookmark */ = 6BB7FE7B10F38224006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE8210F3830D006DA0A6 /* PBXTextBookmark */ = 6BB7FE8210F3830D006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE8310F3830D006DA0A6 /* PBXTextBookmark */ = 6BB7FE8310F3830D006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE8410F3830D006DA0A6 /* PBXTextBookmark */ = 6BB7FE8410F3830D006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE8510F3830D006DA0A6 /* PBXTextBookmark */ = 6BB7FE8510F3830D006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE8610F3830D006DA0A6 /* PBXTextBookmark */ = 6BB7FE8610F3830D006DA0A6 /* PBXTextBookmark */;
+ 6BB7FE8710F3830D006DA0A6 /* PBXTextBookmark */ = 6BB7FE8710F3830D006DA0A6 /* PBXTextBookmark */;
6BB93CE710CFEB5D00F74F2B = 6BB93CE710CFEB5D00F74F2B /* PBXTextBookmark */;
6BB93CEB10CFEB5D00F74F2B = 6BB93CEB10CFEB5D00F74F2B /* PBXTextBookmark */;
6BB93D0510CFFC1300F74F2B = 6BB93D0510CFFC1300F74F2B /* PBXTextBookmark */;
@@ -427,8 +645,8 @@
6B137C7B0F7FCBE400459200 /* MeshLoaderObj.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {915, 800}}";
- sepNavSelRange = "{1134, 62}";
- sepNavVisRange = "{915, 681}";
+ sepNavSelRange = "{1371, 0}";
+ sepNavVisRange = "{919, 677}";
};
};
6B137C7C0F7FCBE400459200 /* SDLMain.h */ = {
@@ -440,9 +658,9 @@
};
6B137C7E0F7FCBFE00459200 /* Recast.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {915, 9488}}";
- sepNavSelRange = "{11228, 0}";
- sepNavVisRange = "{10817, 598}";
+ sepNavIntBoundsRect = "{{0, 0}, {915, 9600}}";
+ sepNavSelRange = "{0, 918}";
+ sepNavVisRange = "{0, 1447}";
};
};
6B137C800F7FCBFE00459200 /* RecastLog.h */ = {
@@ -519,38 +737,38 @@
};
6B25B6100FFA62AD004F1BC4 /* Sample.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {915, 1392}}";
- sepNavSelRange = "{392, 14}";
- sepNavVisRange = "{111, 725}";
+ sepNavIntBoundsRect = "{{0, 0}, {915, 1632}}";
+ sepNavSelRange = "{1804, 0}";
+ sepNavVisRange = "{1749, 547}";
};
};
6B25B6140FFA62BE004F1BC4 /* Sample.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {915, 3024}}";
- sepNavSelRange = "{1284, 0}";
- sepNavVisRange = "{3048, 819}";
+ sepNavIntBoundsRect = "{{0, 0}, {915, 3456}}";
+ sepNavSelRange = "{1949, 0}";
+ sepNavVisRange = "{2601, 668}";
};
};
6B25B6180FFA62BE004F1BC4 /* main.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {915, 12000}}";
- sepNavSelRange = "{3928, 0}";
- sepNavVisRange = "{1250, 517}";
+ sepNavIntBoundsRect = "{{0, 0}, {915, 10576}}";
+ sepNavSelRange = "{12520, 0}";
+ sepNavVisRange = "{12361, 633}";
};
};
6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {915, 1376}}";
- sepNavSelRange = "{2395, 13}";
- sepNavVisRange = "{1664, 810}";
+ sepNavIntBoundsRect = "{{0, 0}, {915, 1248}}";
+ sepNavSelRange = "{1822, 0}";
+ sepNavVisRange = "{1485, 719}";
sepNavWindowFrame = "{{15, 78}, {1011, 695}}";
};
};
6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {1034, 14320}}";
- sepNavSelRange = "{12554, 0}";
- sepNavVisRange = "{12501, 672}";
+ sepNavIntBoundsRect = "{{0, 0}, {915, 14464}}";
+ sepNavSelRange = "{3515, 0}";
+ sepNavVisRange = "{3475, 484}";
};
};
6B555DAE100B211D00247EA3 /* imguiRenderGL.h */ = {
@@ -838,30 +1056,30 @@
};
6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {915, 9904}}";
- sepNavSelRange = "{1126, 109}";
- sepNavVisRange = "{814, 527}";
+ sepNavIntBoundsRect = "{{0, 0}, {915, 10624}}";
+ sepNavSelRange = "{1486, 0}";
+ sepNavVisRange = "{1436, 507}";
};
};
6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {915, 16112}}";
- sepNavSelRange = "{142, 0}";
- sepNavVisRange = "{217, 616}";
+ sepNavIntBoundsRect = "{{0, 0}, {915, 16464}}";
+ sepNavSelRange = "{1409, 0}";
+ sepNavVisRange = "{1213, 614}";
};
};
6BA1E88E10C7BFD3008007F6 /* Sample_SoloMeshSimple.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {915, 1120}}";
- sepNavSelRange = "{91, 0}";
- sepNavVisRange = "{0, 631}";
+ sepNavIntBoundsRect = "{{0, 0}, {915, 1312}}";
+ sepNavSelRange = "{1243, 0}";
+ sepNavVisRange = "{956, 666}";
};
};
6BA1E88F10C7BFD3008007F6 /* Sample_SoloMeshTiled.h */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {915, 1600}}";
- sepNavSelRange = "{189, 0}";
- sepNavVisRange = "{0, 737}";
+ sepNavIntBoundsRect = "{{0, 0}, {915, 1632}}";
+ sepNavSelRange = "{1012, 27}";
+ sepNavVisRange = "{128, 1276}";
};
};
6BA1E89310C7C227008007F6 /* PBXTextBookmark */ = {
@@ -926,18 +1144,2266 @@
};
6BB788160FC0472B003C24DB /* ChunkyTriMesh.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {915, 3920}}";
- sepNavSelRange = "{3997, 0}";
- sepNavVisRange = "{3627, 705}";
+ sepNavIntBoundsRect = "{{0, 0}, {915, 3792}}";
+ sepNavSelRange = "{1091, 0}";
+ sepNavVisRange = "{391, 908}";
};
};
6BB788180FC04753003C24DB /* ChunkyTriMesh.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {915, 800}}";
- sepNavSelRange = "{1242, 0}";
- sepNavVisRange = "{919, 781}";
+ sepNavSelRange = "{1267, 0}";
+ sepNavVisRange = "{0, 1176}";
};
};
+ 6BB7FC0910EBB6AA006DA0A6 /* NavMeshTesterTool.h */ = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {915, 1376}}";
+ sepNavSelRange = "{918, 0}";
+ sepNavVisRange = "{0, 1158}";
+ };
+ };
+ 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */ = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {915, 7600}}";
+ sepNavSelRange = "{919, 0}";
+ sepNavVisRange = "{0, 1223}";
+ };
+ };
+ 6BB7FD4810F3558D006DA0A6 /* ExtraLinkTool.h */ = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {915, 736}}";
+ sepNavSelRange = "{1183, 0}";
+ sepNavVisRange = "{837, 671}";
+ };
+ };
+ 6BB7FD4910F3559D006DA0A6 /* ExtraLinkTool.cpp */ = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {915, 2944}}";
+ sepNavSelRange = "{2550, 0}";
+ sepNavVisRange = "{2205, 562}";
+ };
+ };
+ 6BB7FD4B10F3564B006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */;
+ name = "Sample_SoloMeshSimple.cpp: 65";
+ rLen = 109;
+ rLoc = 2080;
+ rType = 0;
+ vrLen = 527;
+ vrLoc = 814;
+ };
+ 6BB7FD4C10F3564B006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */;
+ name = "Sample_TileMesh.h: 80";
+ rLen = 13;
+ rLoc = 2125;
+ rType = 0;
+ vrLen = 810;
+ vrLoc = 1664;
+ };
+ 6BB7FD4D10F3564B006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FC0910EBB6AA006DA0A6 /* NavMeshTesterTool.h */;
+ name = "NavMeshTesterTool.h: 1";
+ rLen = 1348;
+ rLoc = 919;
+ rType = 0;
+ vrLen = 570;
+ vrLoc = 0;
+ };
+ 6BB7FD4E10F3564B006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */;
+ name = "Sample.h: 19";
+ rLen = 15;
+ rLoc = 1377;
+ rType = 0;
+ vrLen = 720;
+ vrLoc = 111;
+ };
+ 6BB7FD4F10F3564B006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FD4810F3558D006DA0A6 /* ExtraLinkTool.h */;
+ name = "ExtraLinkTool.h: 1";
+ rLen = 589;
+ rLoc = 919;
+ rType = 0;
+ vrLen = 643;
+ vrLoc = 0;
+ };
+ 6BB7FD5010F3564B006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */;
+ name = "Sample_TileMesh.cpp: 539";
+ rLen = 0;
+ rLoc = 12792;
+ rType = 0;
+ vrLen = 707;
+ vrLoc = 5758;
+ };
+ 6BB7FD5110F3564B006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */;
+ name = "NavMeshTesterTool.cpp: 1";
+ rLen = 382;
+ rLoc = 919;
+ rType = 0;
+ vrLen = 690;
+ vrLoc = 0;
+ };
+ 6BB7FD5210F3564B006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FD4910F3559D006DA0A6 /* ExtraLinkTool.cpp */;
+ name = "ExtraLinkTool.cpp: 1";
+ rLen = 0;
+ rLoc = 919;
+ rType = 0;
+ vrLen = 669;
+ vrLoc = 0;
+ };
+ 6BB7FD5310F3564B006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */;
+ name = "Sample_TileMesh.cpp: 429";
+ rLen = 10;
+ rLoc = 9975;
+ rType = 0;
+ vrLen = 678;
+ vrLoc = 9366;
+ };
+ 6BB7FD5410F3564B006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */;
+ name = "Sample_TileMesh.h: 80";
+ rLen = 0;
+ rLoc = 2154;
+ rType = 0;
+ vrLen = 824;
+ vrLoc = 1599;
+ };
+ 6BB7FD5510F3564B006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */;
+ name = "Sample_TileMesh.cpp: 107";
+ rLen = 0;
+ rLoc = 2584;
+ rType = 0;
+ vrLen = 573;
+ vrLoc = 2025;
+ };
+ 6BB7FD5610F3564B006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */;
+ name = "Sample_TileMesh.h: 33";
+ rLen = 18;
+ rLoc = 1157;
+ rType = 0;
+ vrLen = 617;
+ vrLoc = 1029;
+ };
+ 6BB7FD5710F3564B006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */;
+ name = "Sample_TileMesh.cpp: 152";
+ rLen = 10;
+ rLoc = 3544;
+ rType = 0;
+ vrLen = 501;
+ vrLoc = 3208;
+ };
+ 6BB7FD5810F3564B006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */;
+ name = "Sample_TileMesh.h: 34";
+ rLen = 0;
+ rLoc = 1194;
+ rType = 0;
+ vrLen = 612;
+ vrLoc = 1029;
+ };
+ 6BB7FD5910F3564B006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */;
+ name = "Sample_TileMesh.cpp: 203";
+ rLen = 0;
+ rLoc = 4297;
+ rType = 0;
+ vrLen = 1019;
+ vrLoc = 4178;
+ };
+ 6BB7FD5A10F3564B006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */;
+ name = "Sample_SoloMeshSimple.cpp: 65";
+ rLen = 109;
+ rLoc = 2080;
+ rType = 0;
+ vrLen = 527;
+ vrLoc = 814;
+ };
+ 6BB7FD5B10F3564B006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */;
+ name = "Sample_TileMesh.cpp: 205";
+ rLen = 0;
+ rLoc = 4405;
+ rType = 0;
+ vrLen = 1036;
+ vrLoc = 4178;
+ };
+ 6BB7FD5C10F3564B006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */;
+ name = "Sample_TileMesh.h: 34";
+ rLen = 10;
+ rLoc = 1183;
+ rType = 0;
+ vrLen = 612;
+ vrLoc = 1029;
+ };
+ 6BB7FD5D10F3564B006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */;
+ name = "Sample_TileMesh.cpp: 206";
+ rLen = 0;
+ rLoc = 4480;
+ rType = 0;
+ vrLen = 1003;
+ vrLoc = 4178;
+ };
+ 6BB7FD5E10F3564B006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */;
+ name = "Sample_TileMesh.h: 80";
+ rLen = 13;
+ rLoc = 2125;
+ rType = 0;
+ vrLen = 810;
+ vrLoc = 1664;
+ };
+ 6BB7FD5F10F3564B006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */;
+ name = "Sample_TileMesh.cpp: 528";
+ rLen = 0;
+ rLoc = 12552;
+ rType = 0;
+ vrLen = 800;
+ vrLoc = 12168;
+ };
+ 6BB7FD6010F3564B006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */;
+ name = "Sample_TileMesh.cpp: 528";
+ rLen = 0;
+ rLoc = 12552;
+ rType = 0;
+ vrLen = 800;
+ vrLoc = 12168;
+ };
+ 6BB7FD6110F3564B006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FD4810F3558D006DA0A6 /* ExtraLinkTool.h */;
+ name = "ExtraLinkTool.h: 1";
+ rLen = 0;
+ rLoc = 1508;
+ rType = 0;
+ vrLen = 0;
+ vrLoc = 0;
+ };
+ 6BB7FD6210F3564B006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FD4910F3559D006DA0A6 /* ExtraLinkTool.cpp */;
+ name = "ExtraLinkTool.cpp: 1";
+ rLen = 0;
+ rLoc = 3914;
+ rType = 0;
+ vrLen = 0;
+ vrLoc = 0;
+ };
+ 6BB7FD6310F3564B006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FC0910EBB6AA006DA0A6 /* NavMeshTesterTool.h */;
+ name = "NavMeshTesterTool.h: 1";
+ rLen = 1348;
+ rLoc = 919;
+ rType = 0;
+ vrLen = 570;
+ vrLoc = 0;
+ };
+ 6BB7FD6410F3564B006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FD4810F3558D006DA0A6 /* ExtraLinkTool.h */;
+ name = "ExtraLinkTool.h: 51";
+ rLen = 0;
+ rLoc = 1231;
+ rType = 0;
+ vrLen = 711;
+ vrLoc = 499;
+ };
+ 6BB7FD6510F3564B006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */;
+ name = "Sample.h: 19";
+ rLen = 15;
+ rLoc = 1377;
+ rType = 0;
+ vrLen = 720;
+ vrLoc = 111;
+ };
+ 6BB7FD6610F3564B006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FD4810F3558D006DA0A6 /* ExtraLinkTool.h */;
+ name = "ExtraLinkTool.h: 1";
+ rLen = 589;
+ rLoc = 919;
+ rType = 0;
+ vrLen = 643;
+ vrLoc = 0;
+ };
+ 6BB7FD6710F3564B006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FD4910F3559D006DA0A6 /* ExtraLinkTool.cpp */;
+ name = "ExtraLinkTool.cpp: 1";
+ rLen = 0;
+ rLoc = 919;
+ rType = 0;
+ vrLen = 669;
+ vrLoc = 0;
+ };
+ 6BB7FD6810F3564B006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */;
+ name = "Sample_TileMesh.cpp: 539";
+ rLen = 0;
+ rLoc = 12792;
+ rType = 0;
+ vrLen = 707;
+ vrLoc = 5758;
+ };
+ 6BB7FD6910F3564B006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */;
+ name = "NavMeshTesterTool.cpp: 1";
+ rLen = 382;
+ rLoc = 919;
+ rType = 0;
+ vrLen = 690;
+ vrLoc = 0;
+ };
+ 6BB7FD6A10F3564B006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FD4910F3559D006DA0A6 /* ExtraLinkTool.cpp */;
+ name = "ExtraLinkTool.cpp: 16";
+ rLen = 0;
+ rLoc = 1242;
+ rType = 0;
+ vrLen = 596;
+ vrLoc = 26;
+ };
+ 6BB7FD7510F361BE006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FD4910F3559D006DA0A6 /* ExtraLinkTool.cpp */;
+ name = "ExtraLinkTool.cpp: 16";
+ rLen = 0;
+ rLoc = 1586;
+ rType = 0;
+ vrLen = 467;
+ vrLoc = 0;
+ };
+ 6BB7FD7C10F36BD5006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FC0910EBB6AA006DA0A6 /* NavMeshTesterTool.h */;
+ name = "NavMeshTesterTool.h: 10";
+ rLen = 0;
+ rLoc = 1090;
+ rType = 0;
+ vrLen = 570;
+ vrLoc = 0;
+ };
+ 6BB7FD7D10F36BD5006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */;
+ name = "NavMeshTesterTool.cpp: 425";
+ rLen = 0;
+ rLoc = 12133;
+ rType = 0;
+ vrLen = 1056;
+ vrLoc = 10485;
+ };
+ 6BB7FD7E10F36BD5006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */;
+ name = "Sample_TileMesh.cpp: 144";
+ rLen = 0;
+ rLoc = 3468;
+ rType = 0;
+ vrLen = 710;
+ vrLoc = 2869;
+ };
+ 6BB7FD7F10F36BD5006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB93C7C10CFE1D500F74F2B /* RecastDebugDraw.cpp */;
+ name = "RecastDebugDraw.cpp: 457";
+ rLen = 106;
+ rLoc = 12026;
+ rType = 0;
+ vrLen = 853;
+ vrLoc = 11632;
+ };
+ 6BB7FD8010F36BD5006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */;
+ name = "Sample_SoloMeshSimple.cpp: 159";
+ rLen = 17;
+ rLoc = 6062;
+ rType = 0;
+ vrLen = 747;
+ vrLoc = 4459;
+ };
+ 6BB7FD8110F36BD5006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FD4810F3558D006DA0A6 /* ExtraLinkTool.h */;
+ name = "ExtraLinkTool.h: 19";
+ rLen = 11;
+ rLoc = 1121;
+ rType = 0;
+ vrLen = 649;
+ vrLoc = 0;
+ };
+ 6BB7FD8210F36BD5006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FD4910F3559D006DA0A6 /* ExtraLinkTool.cpp */;
+ name = "ExtraLinkTool.cpp: 49";
+ rLen = 0;
+ rLoc = 1789;
+ rType = 0;
+ vrLen = 402;
+ vrLoc = 627;
+ };
+ 6BB7FD8310F36BD5006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */;
+ name = "NavMeshTesterTool.cpp: 110";
+ rLen = 0;
+ rLoc = 3110;
+ rType = 0;
+ vrLen = 699;
+ vrLoc = 4256;
+ };
+ 6BB7FD8410F36BD5006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FC0910EBB6AA006DA0A6 /* NavMeshTesterTool.h */;
+ name = "NavMeshTesterTool.h: 10";
+ rLen = 0;
+ rLoc = 1090;
+ rType = 0;
+ vrLen = 570;
+ vrLoc = 0;
+ };
+ 6BB7FD8510F36BD5006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FD4810F3558D006DA0A6 /* ExtraLinkTool.h */;
+ name = "ExtraLinkTool.h: 8";
+ rLen = 58;
+ rLoc = 1076;
+ rType = 0;
+ vrLen = 643;
+ vrLoc = 0;
+ };
+ 6BB7FD8610F36BD5006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FD4810F3558D006DA0A6 /* ExtraLinkTool.h */;
+ name = "ExtraLinkTool.h: 8";
+ rLen = 58;
+ rLoc = 1076;
+ rType = 0;
+ vrLen = 643;
+ vrLoc = 0;
+ };
+ 6BB7FD8710F36BD5006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FD4810F3558D006DA0A6 /* ExtraLinkTool.h */;
+ name = "ExtraLinkTool.h: 8";
+ rLen = 58;
+ rLoc = 1076;
+ rType = 0;
+ vrLen = 643;
+ vrLoc = 0;
+ };
+ 6BB7FD8810F36BD5006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FD4810F3558D006DA0A6 /* ExtraLinkTool.h */;
+ name = "ExtraLinkTool.h: 17";
+ rLen = 0;
+ rLoc = 1095;
+ rType = 0;
+ vrLen = 643;
+ vrLoc = 0;
+ };
+ 6BB7FD8910F36BD5006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FD4810F3558D006DA0A6 /* ExtraLinkTool.h */;
+ name = "ExtraLinkTool.h: 19";
+ rLen = 11;
+ rLoc = 1121;
+ rType = 0;
+ vrLen = 649;
+ vrLoc = 0;
+ };
+ 6BB7FD8A10F36BD5006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FD4910F3559D006DA0A6 /* ExtraLinkTool.cpp */;
+ name = "ExtraLinkTool.cpp: 49";
+ rLen = 0;
+ rLoc = 1789;
+ rType = 0;
+ vrLen = 402;
+ vrLoc = 627;
+ };
+ 6BB7FD8B10F36BD5006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FD4810F3558D006DA0A6 /* ExtraLinkTool.h */;
+ name = "ExtraLinkTool.h: 19";
+ rLen = 11;
+ rLoc = 1121;
+ rType = 0;
+ vrLen = 649;
+ vrLoc = 0;
+ };
+ 6BB7FD8C10F36BD5006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FD4910F3559D006DA0A6 /* ExtraLinkTool.cpp */;
+ name = "ExtraLinkTool.cpp: 126";
+ rLen = 0;
+ rLoc = 3772;
+ rType = 0;
+ vrLen = 760;
+ vrLoc = 1622;
+ };
+ 6BB7FD8F10F36C53006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FD4910F3559D006DA0A6 /* ExtraLinkTool.cpp */;
+ name = "ExtraLinkTool.cpp: 124";
+ rLen = 0;
+ rLoc = 3640;
+ rType = 0;
+ vrLen = 760;
+ vrLoc = 1622;
+ };
+ 6BB7FD9010F36C53006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BA1E88E10C7BFD3008007F6 /* Sample_SoloMeshSimple.h */;
+ name = "Sample_SoloMeshSimple.h: 18";
+ rLen = 0;
+ rLoc = 1268;
+ rType = 0;
+ vrLen = 631;
+ vrLoc = 0;
+ };
+ 6BB7FD9110F36C53006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */;
+ name = "Sample_TileMesh.cpp: 235";
+ rLen = 371;
+ rLoc = 5529;
+ rType = 0;
+ vrLen = 686;
+ vrLoc = 4981;
+ };
+ 6BB7FD9210F36C53006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */;
+ name = "Sample_SoloMeshSimple.cpp: 75";
+ rLen = 0;
+ rLoc = 2531;
+ rType = 0;
+ vrLen = 579;
+ vrLoc = 1038;
+ };
+ 6BB7FD9310F36C53006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FD4910F3559D006DA0A6 /* ExtraLinkTool.cpp */;
+ name = "ExtraLinkTool.cpp: 124";
+ rLen = 0;
+ rLoc = 3640;
+ rType = 0;
+ vrLen = 760;
+ vrLoc = 1622;
+ };
+ 6BB7FD9410F36C53006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BA1E88E10C7BFD3008007F6 /* Sample_SoloMeshSimple.h */;
+ name = "Sample_SoloMeshSimple.h: 18";
+ rLen = 0;
+ rLoc = 1268;
+ rType = 0;
+ vrLen = 631;
+ vrLoc = 0;
+ };
+ 6BB7FD9510F36C53006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */;
+ name = "Sample_SoloMeshSimple.cpp: 75";
+ rLen = 0;
+ rLoc = 2531;
+ rType = 0;
+ vrLen = 629;
+ vrLoc = 1038;
+ };
+ 6BB7FD9610F36C53006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */;
+ name = "Sample_TileMesh.cpp: 235";
+ rLen = 371;
+ rLoc = 5529;
+ rType = 0;
+ vrLen = 686;
+ vrLoc = 4981;
+ };
+ 6BB7FD9710F36C53006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */;
+ name = "Sample_SoloMeshSimple.cpp: 18";
+ rLen = 0;
+ rLoc = 1378;
+ rType = 0;
+ vrLen = 627;
+ vrLoc = 0;
+ };
+ 6BB7FD9A10F36D7A006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */;
+ name = "Sample_SoloMeshSimple.cpp: 21";
+ rLen = 0;
+ rLoc = 1427;
+ rType = 0;
+ vrLen = 1972;
+ vrLoc = 2667;
+ };
+ 6BB7FD9B10F36D7A006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */;
+ name = "NavMeshTesterTool.cpp: 280";
+ rLen = 0;
+ rLoc = 7609;
+ rType = 0;
+ vrLen = 736;
+ vrLoc = 6177;
+ };
+ 6BB7FD9C10F36D7A006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B137C7E0F7FCBFE00459200 /* Recast.h */;
+ name = "Recast.h: 349";
+ rLen = 0;
+ rLoc = 11581;
+ rType = 0;
+ vrLen = 593;
+ vrLoc = 11132;
+ };
+ 6BB7FD9D10F36D7A006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FD4910F3559D006DA0A6 /* ExtraLinkTool.cpp */;
+ name = "ExtraLinkTool.cpp: 75";
+ rLen = 7;
+ rLoc = 2326;
+ rType = 0;
+ vrLen = 465;
+ vrLoc = 938;
+ };
+ 6BB7FD9E10F36D7A006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */;
+ name = "Sample_SoloMeshSimple.cpp: 21";
+ rLen = 0;
+ rLoc = 1427;
+ rType = 0;
+ vrLen = 1972;
+ vrLoc = 2667;
+ };
+ 6BB7FD9F10F36D7A006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */;
+ name = "NavMeshTesterTool.cpp: 280";
+ rLen = 0;
+ rLoc = 7609;
+ rType = 0;
+ vrLen = 736;
+ vrLoc = 6177;
+ };
+ 6BB7FDA010F36D7A006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B137C7E0F7FCBFE00459200 /* Recast.h */;
+ name = "Recast.h: 349";
+ rLen = 0;
+ rLoc = 11581;
+ rType = 0;
+ vrLen = 593;
+ vrLoc = 11132;
+ };
+ 6BB7FDA110F36D7A006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FD4910F3559D006DA0A6 /* ExtraLinkTool.cpp */;
+ name = "ExtraLinkTool.cpp: 8";
+ rLen = 0;
+ rLoc = 1077;
+ rType = 0;
+ vrLen = 679;
+ vrLoc = 0;
+ };
+ 6BB7FDA310F36EFC006DA0A6 /* InputGeom.h */ = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {915, 1008}}";
+ sepNavSelRange = "{1231, 0}";
+ sepNavVisRange = "{1130, 873}";
+ };
+ };
+ 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */ = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {915, 2656}}";
+ sepNavSelRange = "{3463, 0}";
+ sepNavVisRange = "{3036, 784}";
+ };
+ };
+ 6BB7FDB010F376F4006DA0A6 /* main.cpp:573 */ = {
+ isa = PBXFileBreakpoint;
+ actions = (
+ );
+ breakpointStyle = 0;
+ continueAfterActions = 0;
+ countType = 0;
+ delayBeforeContinue = 0;
+ fileReference = 6B25B6180FFA62BE004F1BC4 /* main.cpp */;
+ functionName = "main(int argc, char *argv[])";
+ hitCount = 0;
+ ignoreCount = 0;
+ lineNumber = 573;
+ location = Recast;
+ modificationTime = 284393980.540733;
+ state = 1;
+ };
+ 6BB7FDB210F37703006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B137C7E0F7FCBFE00459200 /* Recast.h */;
+ name = "Recast.h: 1";
+ rLen = 918;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 1447;
+ vrLoc = 0;
+ };
+ 6BB7FDB310F37703006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FC0910EBB6AA006DA0A6 /* NavMeshTesterTool.h */;
+ name = "NavMeshTesterTool.h: 18";
+ rLen = 0;
+ rLoc = 918;
+ rType = 0;
+ vrLen = 1158;
+ vrLoc = 0;
+ };
+ 6BB7FDB410F37703006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */;
+ name = "NavMeshTesterTool.cpp: 19";
+ rLen = 0;
+ rLoc = 919;
+ rType = 0;
+ vrLen = 1223;
+ vrLoc = 0;
+ };
+ 6BB7FDB510F37703006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FD4810F3558D006DA0A6 /* ExtraLinkTool.h */;
+ name = "ExtraLinkTool.h: 19";
+ rLen = 0;
+ rLoc = 919;
+ rType = 0;
+ vrLen = 1149;
+ vrLoc = 0;
+ };
+ 6BB7FDB610F37703006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FD4910F3559D006DA0A6 /* ExtraLinkTool.cpp */;
+ name = "ExtraLinkTool.cpp: 18";
+ rLen = 0;
+ rLoc = 918;
+ rType = 0;
+ vrLen = 1206;
+ vrLoc = 0;
+ };
+ 6BB7FDB710F37703006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */;
+ name = "Sample.h: 19";
+ rLen = 0;
+ rLoc = 919;
+ rType = 0;
+ vrLen = 1272;
+ vrLoc = 0;
+ };
+ 6BB7FDB810F37703006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */;
+ name = "Sample.cpp: 19";
+ rLen = 0;
+ rLoc = 919;
+ rType = 0;
+ vrLen = 900;
+ vrLoc = 391;
+ };
+ 6BB7FDB910F37703006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BA1E88E10C7BFD3008007F6 /* Sample_SoloMeshSimple.h */;
+ name = "Sample_SoloMeshSimple.h: 19";
+ rLen = 0;
+ rLoc = 919;
+ rType = 0;
+ vrLen = 1184;
+ vrLoc = 0;
+ };
+ 6BB7FDBA10F37703006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */;
+ name = "Sample_SoloMeshSimple.cpp: 19";
+ rLen = 0;
+ rLoc = 919;
+ rType = 0;
+ vrLen = 1215;
+ vrLoc = 0;
+ };
+ 6BB7FDBB10F37703006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BA1E88F10C7BFD3008007F6 /* Sample_SoloMeshTiled.h */;
+ name = "Sample_SoloMeshTiled.h: 19";
+ rLen = 0;
+ rLoc = 919;
+ rType = 0;
+ vrLen = 1189;
+ vrLoc = 0;
+ };
+ 6BB7FDBC10F37703006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */;
+ name = "Sample_SoloMeshTiled.cpp: 19";
+ rLen = 0;
+ rLoc = 919;
+ rType = 0;
+ vrLen = 1253;
+ vrLoc = 59;
+ };
+ 6BB7FDBD10F37703006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */;
+ name = "Sample_TileMesh.h: 35";
+ rLen = 0;
+ rLoc = 1204;
+ rType = 0;
+ vrLen = 1182;
+ vrLoc = 0;
+ };
+ 6BB7FDBE10F37703006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */;
+ name = "Sample_TileMesh.cpp: 422";
+ rLen = 0;
+ rLoc = 9969;
+ rType = 0;
+ vrLen = 1212;
+ vrLoc = 0;
+ };
+ 6BB7FDBF10F37703006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B137C7B0F7FCBE400459200 /* MeshLoaderObj.h */;
+ name = "MeshLoaderObj.h: 38";
+ rLen = 0;
+ rLoc = 1395;
+ rType = 0;
+ vrLen = 1196;
+ vrLoc = 0;
+ };
+ 6BB7FDC010F37703006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB788180FC04753003C24DB /* ChunkyTriMesh.h */;
+ name = "ChunkyTriMesh.h: 38";
+ rLen = 0;
+ rLoc = 1267;
+ rType = 0;
+ vrLen = 1176;
+ vrLoc = 0;
+ };
+ 6BB7FDC110F37703006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB788160FC0472B003C24DB /* ChunkyTriMesh.cpp */;
+ name = "ChunkyTriMesh.cpp: 30";
+ rLen = 0;
+ rLoc = 1091;
+ rType = 0;
+ vrLen = 908;
+ vrLoc = 391;
+ };
+ 6BB7FDC210F37703006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FDA310F36EFC006DA0A6 /* InputGeom.h */;
+ name = "InputGeom.h: 35";
+ rLen = 37;
+ rLoc = 1206;
+ rType = 0;
+ vrLen = 873;
+ vrLoc = 1130;
+ };
+ 6BB7FDC310F37703006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */;
+ name = "InputGeom.cpp: 109";
+ rLen = 0;
+ rLoc = 2952;
+ rType = 0;
+ vrLen = 856;
+ vrLoc = 2601;
+ };
+ 6BB7FDC410F37703006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */;
+ name = "main.cpp: 592";
+ rLen = 0;
+ rLoc = 13582;
+ rType = 0;
+ vrLen = 791;
+ vrLoc = 13122;
+ };
+ 6BB7FDC510F37703006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FD4910F3559D006DA0A6 /* ExtraLinkTool.cpp */;
+ name = "ExtraLinkTool.cpp: 38";
+ rLen = 0;
+ rLoc = 1687;
+ rType = 0;
+ vrLen = 506;
+ vrLoc = 428;
+ };
+ 6BB7FDC610F37703006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FD4810F3558D006DA0A6 /* ExtraLinkTool.h */;
+ name = "ExtraLinkTool.h: 13";
+ rLen = 0;
+ rLoc = 1095;
+ rType = 0;
+ vrLen = 589;
+ vrLoc = 0;
+ };
+ 6BB7FDC710F37703006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */;
+ name = "main.cpp: 106";
+ rLen = 0;
+ rLoc = 2654;
+ rType = 0;
+ vrLen = 546;
+ vrLoc = 0;
+ };
+ 6BB7FDC810F37703006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */;
+ name = "Sample.h: 15";
+ rLen = 0;
+ rLoc = 1320;
+ rType = 0;
+ vrLen = 800;
+ vrLoc = 0;
+ };
+ 6BB7FDC910F37703006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BA1E88E10C7BFD3008007F6 /* Sample_SoloMeshSimple.h */;
+ name = "Sample_SoloMeshSimple.h: 9";
+ rLen = 0;
+ rLoc = 1125;
+ rType = 0;
+ vrLen = 631;
+ vrLoc = 0;
+ };
+ 6BB7FDCA10F37703006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */;
+ name = "Sample_SoloMeshSimple.cpp: 21";
+ rLen = 0;
+ rLoc = 1427;
+ rType = 0;
+ vrLen = 1938;
+ vrLoc = 2667;
+ };
+ 6BB7FDCB10F37703006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B137C7E0F7FCBFE00459200 /* Recast.h */;
+ name = "Recast.h: 1";
+ rLen = 918;
+ rLoc = 0;
+ rType = 0;
+ vrLen = 1447;
+ vrLoc = 0;
+ };
+ 6BB7FDCC10F37703006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FC0910EBB6AA006DA0A6 /* NavMeshTesterTool.h */;
+ name = "NavMeshTesterTool.h: 18";
+ rLen = 0;
+ rLoc = 918;
+ rType = 0;
+ vrLen = 1158;
+ vrLoc = 0;
+ };
+ 6BB7FDCD10F37703006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */;
+ name = "NavMeshTesterTool.cpp: 19";
+ rLen = 0;
+ rLoc = 919;
+ rType = 0;
+ vrLen = 1223;
+ vrLoc = 0;
+ };
+ 6BB7FDCE10F37703006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FD4810F3558D006DA0A6 /* ExtraLinkTool.h */;
+ name = "ExtraLinkTool.h: 19";
+ rLen = 0;
+ rLoc = 919;
+ rType = 0;
+ vrLen = 1149;
+ vrLoc = 0;
+ };
+ 6BB7FDCF10F37703006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FD4910F3559D006DA0A6 /* ExtraLinkTool.cpp */;
+ name = "ExtraLinkTool.cpp: 18";
+ rLen = 0;
+ rLoc = 918;
+ rType = 0;
+ vrLen = 1206;
+ vrLoc = 0;
+ };
+ 6BB7FDD010F37703006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */;
+ name = "Sample.h: 19";
+ rLen = 0;
+ rLoc = 919;
+ rType = 0;
+ vrLen = 1272;
+ vrLoc = 0;
+ };
+ 6BB7FDD110F37703006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */;
+ name = "Sample.cpp: 19";
+ rLen = 0;
+ rLoc = 919;
+ rType = 0;
+ vrLen = 900;
+ vrLoc = 391;
+ };
+ 6BB7FDD210F37703006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BA1E88E10C7BFD3008007F6 /* Sample_SoloMeshSimple.h */;
+ name = "Sample_SoloMeshSimple.h: 19";
+ rLen = 0;
+ rLoc = 919;
+ rType = 0;
+ vrLen = 1184;
+ vrLoc = 0;
+ };
+ 6BB7FDD310F37703006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */;
+ name = "Sample_SoloMeshSimple.cpp: 19";
+ rLen = 0;
+ rLoc = 919;
+ rType = 0;
+ vrLen = 1215;
+ vrLoc = 0;
+ };
+ 6BB7FDD410F37703006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BA1E88F10C7BFD3008007F6 /* Sample_SoloMeshTiled.h */;
+ name = "Sample_SoloMeshTiled.h: 19";
+ rLen = 0;
+ rLoc = 919;
+ rType = 0;
+ vrLen = 1189;
+ vrLoc = 0;
+ };
+ 6BB7FDD510F37703006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */;
+ name = "Sample_SoloMeshTiled.cpp: 19";
+ rLen = 0;
+ rLoc = 919;
+ rType = 0;
+ vrLen = 1253;
+ vrLoc = 59;
+ };
+ 6BB7FDD610F37703006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */;
+ name = "Sample_TileMesh.h: 35";
+ rLen = 0;
+ rLoc = 1204;
+ rType = 0;
+ vrLen = 1182;
+ vrLoc = 0;
+ };
+ 6BB7FDD710F37703006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */;
+ name = "Sample_TileMesh.cpp: 422";
+ rLen = 0;
+ rLoc = 9969;
+ rType = 0;
+ vrLen = 1212;
+ vrLoc = 0;
+ };
+ 6BB7FDD810F37703006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */;
+ name = "main.cpp: 19";
+ rLen = 0;
+ rLoc = 919;
+ rType = 0;
+ vrLen = 670;
+ vrLoc = 706;
+ };
+ 6BB7FDD910F37703006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B137C7B0F7FCBE400459200 /* MeshLoaderObj.h */;
+ name = "MeshLoaderObj.h: 38";
+ rLen = 0;
+ rLoc = 1395;
+ rType = 0;
+ vrLen = 1196;
+ vrLoc = 0;
+ };
+ 6BB7FDDA10F37703006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB788180FC04753003C24DB /* ChunkyTriMesh.h */;
+ name = "ChunkyTriMesh.h: 38";
+ rLen = 0;
+ rLoc = 1267;
+ rType = 0;
+ vrLen = 1176;
+ vrLoc = 0;
+ };
+ 6BB7FDDB10F37703006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB788160FC0472B003C24DB /* ChunkyTriMesh.cpp */;
+ name = "ChunkyTriMesh.cpp: 30";
+ rLen = 0;
+ rLoc = 1091;
+ rType = 0;
+ vrLen = 908;
+ vrLoc = 391;
+ };
+ 6BB7FDDC10F37703006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FDA310F36EFC006DA0A6 /* InputGeom.h */;
+ name = "InputGeom.h: 19";
+ rLen = 0;
+ rLoc = 919;
+ rType = 0;
+ vrLen = 1146;
+ vrLoc = 0;
+ };
+ 6BB7FDDD10F37703006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */;
+ name = "InputGeom.cpp: 18";
+ rLen = 0;
+ rLoc = 918;
+ rType = 0;
+ vrLen = 1235;
+ vrLoc = 0;
+ };
+ 6BB7FDDE10F37703006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FDA310F36EFC006DA0A6 /* InputGeom.h */;
+ name = "InputGeom.h: 46";
+ rLen = 0;
+ rLoc = 1408;
+ rType = 0;
+ vrLen = 799;
+ vrLoc = 516;
+ };
+ 6BB7FDDF10F37703006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */;
+ name = "main.cpp: 210";
+ rLen = 0;
+ rLoc = 4681;
+ rType = 0;
+ vrLen = 530;
+ vrLoc = 4386;
+ };
+ 6BB7FDE010F37703006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FDA310F36EFC006DA0A6 /* InputGeom.h */;
+ name = "InputGeom.h: 35";
+ rLen = 37;
+ rLoc = 1206;
+ rType = 0;
+ vrLen = 873;
+ vrLoc = 1130;
+ };
+ 6BB7FDE110F37703006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */;
+ name = "InputGeom.cpp: 18";
+ rLen = 0;
+ rLoc = 918;
+ rType = 0;
+ vrLen = 1083;
+ vrLoc = 1157;
+ };
+ 6BB7FDE210F37703006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */;
+ name = "main.cpp: 592";
+ rLen = 0;
+ rLoc = 13582;
+ rType = 0;
+ vrLen = 791;
+ vrLoc = 13122;
+ };
+ 6BB7FDE310F37703006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */;
+ name = "InputGeom.cpp: 109";
+ rLen = 0;
+ rLoc = 2952;
+ rType = 0;
+ vrLen = 856;
+ vrLoc = 2601;
+ };
+ 6BB7FDE410F37703006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */;
+ name = "main.cpp: 577";
+ rLen = 0;
+ rLoc = 13160;
+ rType = 0;
+ vrLen = 682;
+ vrLoc = 13149;
+ };
+ 6BB7FDE910F37785006DA0A6 /* Sample_SoloMeshSimple.cpp:186 */ = {
+ isa = PBXFileBreakpoint;
+ actions = (
+ );
+ breakpointStyle = 0;
+ continueAfterActions = 0;
+ countType = 0;
+ delayBeforeContinue = 0;
+ fileReference = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */;
+ functionName = "Sample_SoloMeshSimple::handleRender()";
+ hitCount = 0;
+ ignoreCount = 0;
+ lineNumber = 186;
+ location = Recast;
+ modificationTime = 284393980.540822;
+ state = 1;
+ };
+ 6BB7FDED10F377DD006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B137C7B0F7FCBE400459200 /* MeshLoaderObj.h */;
+ name = "MeshLoaderObj.h: 34";
+ rLen = 0;
+ rLoc = 1307;
+ rType = 0;
+ vrLen = 677;
+ vrLoc = 919;
+ };
+ 6BB7FDEE10F377DD006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */;
+ name = "InputGeom.cpp: 125";
+ rLen = 0;
+ rLoc = 3463;
+ rType = 0;
+ vrLen = 784;
+ vrLoc = 3036;
+ };
+ 6BB7FDEF10F377DD006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */;
+ name = "Sample_SoloMeshSimple.cpp: 186";
+ rLen = 0;
+ rLoc = 5998;
+ rType = 0;
+ vrLen = 688;
+ vrLoc = 5647;
+ };
+ 6BB7FDF010F377DD006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */;
+ name = "main.cpp: 624";
+ rLen = 0;
+ rLoc = 14216;
+ rType = 0;
+ vrLen = 898;
+ vrLoc = 13801;
+ };
+ 6BB7FDF110F377DD006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FDA310F36EFC006DA0A6 /* InputGeom.h */;
+ name = "InputGeom.h: 35";
+ rLen = 37;
+ rLoc = 1206;
+ rType = 0;
+ vrLen = 872;
+ vrLoc = 1130;
+ };
+ 6BB7FDF210F377DD006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */;
+ name = "main.cpp: 577";
+ rLen = 0;
+ rLoc = 13160;
+ rType = 0;
+ vrLen = 682;
+ vrLoc = 13149;
+ };
+ 6BB7FDF310F377DD006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */;
+ name = "InputGeom.cpp: 106";
+ rLen = 0;
+ rLoc = 2947;
+ rType = 0;
+ vrLen = 801;
+ vrLoc = 2681;
+ };
+ 6BB7FDF410F377DD006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B137C7B0F7FCBE400459200 /* MeshLoaderObj.h */;
+ name = "MeshLoaderObj.h: 34";
+ rLen = 0;
+ rLoc = 1307;
+ rType = 0;
+ vrLen = 677;
+ vrLoc = 919;
+ };
+ 6BB7FDF510F377DD006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */;
+ name = "InputGeom.cpp: 125";
+ rLen = 0;
+ rLoc = 3463;
+ rType = 0;
+ vrLen = 784;
+ vrLoc = 3036;
+ };
+ 6BB7FDF610F377DD006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */;
+ name = "main.cpp: 598";
+ rLen = 0;
+ rLoc = 13582;
+ rType = 0;
+ vrLen = 898;
+ vrLoc = 13801;
+ };
+ 6BB7FDF710F377DD006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */;
+ name = "Sample_SoloMeshSimple.cpp: 186";
+ rLen = 0;
+ rLoc = 6006;
+ rType = 0;
+ vrLen = 777;
+ vrLoc = 5558;
+ };
+ 6BB7FDF810F377DD006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */;
+ name = "main.cpp: 624";
+ rLen = 0;
+ rLoc = 14216;
+ rType = 0;
+ vrLen = 898;
+ vrLoc = 13801;
+ };
+ 6BB7FDF910F377DD006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */;
+ name = "Sample_SoloMeshSimple.cpp: 186";
+ rLen = 0;
+ rLoc = 5998;
+ rType = 0;
+ vrLen = 688;
+ vrLoc = 5647;
+ };
+ 6BB7FDFA10F377DD006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */;
+ name = "main.cpp: 624";
+ rLen = 0;
+ rLoc = 14216;
+ rType = 0;
+ vrLen = 898;
+ vrLoc = 13801;
+ };
+ 6BB7FDFB10F377DD006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FDA310F36EFC006DA0A6 /* InputGeom.h */;
+ name = "InputGeom.h: 35";
+ rLen = 0;
+ rLoc = 1231;
+ rType = 0;
+ vrLen = 872;
+ vrLoc = 1130;
+ };
+ 6BB7FE0F10F37CF7006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FDA310F36EFC006DA0A6 /* InputGeom.h */;
+ name = "InputGeom.h: 35";
+ rLen = 0;
+ rLoc = 1231;
+ rType = 0;
+ vrLen = 873;
+ vrLoc = 1130;
+ };
+ 6BB7FE1010F37CF7006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B137C7B0F7FCBE400459200 /* MeshLoaderObj.h */;
+ name = "MeshLoaderObj.h: 36";
+ rLen = 0;
+ rLoc = 1371;
+ rType = 0;
+ vrLen = 677;
+ vrLoc = 919;
+ };
+ 6BB7FE1110F37CF7006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */;
+ name = "Sample.cpp: 123";
+ rLen = 0;
+ rLoc = 2763;
+ rType = 0;
+ vrLen = 833;
+ vrLoc = 2256;
+ };
+ 6BB7FE1210F37CF7006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */;
+ name = "Sample.h: 86";
+ rLen = 56;
+ rLoc = 2489;
+ rType = 0;
+ vrLen = 818;
+ vrLoc = 2026;
+ };
+ 6BB7FE1310F37CF7006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BA1E88E10C7BFD3008007F6 /* Sample_SoloMeshSimple.h */;
+ name = "Sample_SoloMeshSimple.h: 78";
+ rLen = 56;
+ rLoc = 2139;
+ rType = 0;
+ vrLen = 680;
+ vrLoc = 1674;
+ };
+ 6BB7FE1410F37CF7006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */;
+ name = "Sample_SoloMeshSimple.cpp: 215";
+ rLen = 98;
+ rLoc = 6741;
+ rType = 0;
+ vrLen = 1200;
+ vrLoc = 6139;
+ };
+ 6BB7FE1510F37CF7006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */;
+ name = "Sample_SoloMeshTiled.cpp: 61";
+ rLen = 0;
+ rLoc = 1805;
+ rType = 0;
+ vrLen = 575;
+ vrLoc = 1240;
+ };
+ 6BB7FE1610F37CF7006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BA1E88F10C7BFD3008007F6 /* Sample_SoloMeshTiled.h */;
+ name = "Sample_SoloMeshTiled.h: 107";
+ rLen = 21;
+ rLoc = 2863;
+ rType = 0;
+ vrLen = 676;
+ vrLoc = 2369;
+ };
+ 6BB7FE1710F37CF7006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FDA310F36EFC006DA0A6 /* InputGeom.h */;
+ name = "InputGeom.h: 35";
+ rLen = 0;
+ rLoc = 1231;
+ rType = 0;
+ vrLen = 873;
+ vrLoc = 1130;
+ };
+ 6BB7FE1810F37CF7006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */;
+ name = "Sample.h: 56";
+ rLen = 6;
+ rLoc = 1795;
+ rType = 0;
+ vrLen = 702;
+ vrLoc = 1737;
+ };
+ 6BB7FE1910F37CF7006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */;
+ name = "Sample.h: 86";
+ rLen = 41;
+ rLoc = 2503;
+ rType = 0;
+ vrLen = 828;
+ vrLoc = 1861;
+ };
+ 6BB7FE1A10F37CF7006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */;
+ name = "Sample.cpp: 120";
+ rLen = 0;
+ rLoc = 2680;
+ rType = 0;
+ vrLen = 714;
+ vrLoc = 2109;
+ };
+ 6BB7FE1B10F37CF7006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */;
+ name = "Sample.h: 89";
+ rLen = 0;
+ rLoc = 2575;
+ rType = 0;
+ vrLen = 797;
+ vrLoc = 2053;
+ };
+ 6BB7FE1C10F37CF7006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */;
+ name = "Sample.cpp: 128";
+ rLen = 1;
+ rLoc = 2889;
+ rType = 0;
+ vrLen = 835;
+ vrLoc = 2254;
+ };
+ 6BB7FE1D10F37CF7006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */;
+ name = "Sample.h: 89";
+ rLen = 0;
+ rLoc = 2590;
+ rType = 0;
+ vrLen = 818;
+ vrLoc = 2026;
+ };
+ 6BB7FE1E10F37CF7006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */;
+ name = "Sample.cpp: 123";
+ rLen = 0;
+ rLoc = 2763;
+ rType = 0;
+ vrLen = 833;
+ vrLoc = 2256;
+ };
+ 6BB7FE1F10F37CF7006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */;
+ name = "Sample.h: 86";
+ rLen = 56;
+ rLoc = 2489;
+ rType = 0;
+ vrLen = 818;
+ vrLoc = 2026;
+ };
+ 6BB7FE2010F37CF7006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */;
+ name = "Sample_SoloMeshSimple.cpp: 341";
+ rLen = 0;
+ rLoc = 10275;
+ rType = 0;
+ vrLen = 1199;
+ vrLoc = 9966;
+ };
+ 6BB7FE2110F37CF7006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BA1E88E10C7BFD3008007F6 /* Sample_SoloMeshSimple.h */;
+ name = "Sample_SoloMeshSimple.h: 78";
+ rLen = 56;
+ rLoc = 2139;
+ rType = 0;
+ vrLen = 680;
+ vrLoc = 1674;
+ };
+ 6BB7FE2210F37CF7006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BA1E88F10C7BFD3008007F6 /* Sample_SoloMeshTiled.h */;
+ name = "Sample_SoloMeshTiled.h: 107";
+ rLen = 21;
+ rLoc = 2863;
+ rType = 0;
+ vrLen = 676;
+ vrLoc = 2369;
+ };
+ 6BB7FE2310F37CF7006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */;
+ name = "Sample_SoloMeshTiled.cpp: 61";
+ rLen = 0;
+ rLoc = 1805;
+ rType = 0;
+ vrLen = 575;
+ vrLoc = 1240;
+ };
+ 6BB7FE2410F37CF7006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BA1E88F10C7BFD3008007F6 /* Sample_SoloMeshTiled.h */;
+ name = "Sample_SoloMeshTiled.h: 107";
+ rLen = 56;
+ rLoc = 2831;
+ rType = 0;
+ vrLen = 676;
+ vrLoc = 2369;
+ };
+ 6BB7FE3A10F3817A006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BA1E88E10C7BFD3008007F6 /* Sample_SoloMeshSimple.h */;
+ name = "Sample_SoloMeshSimple.h: 33";
+ rLen = 0;
+ rLoc = 1243;
+ rType = 0;
+ vrLen = 666;
+ vrLoc = 956;
+ };
+ 6BB7FE3B10F3817A006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BA1E88F10C7BFD3008007F6 /* Sample_SoloMeshTiled.h */;
+ name = "Sample_SoloMeshTiled.h: 23";
+ rLen = 27;
+ rLoc = 1012;
+ rType = 0;
+ vrLen = 1276;
+ vrLoc = 128;
+ };
+ 6BB7FE3C10F3817A006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */;
+ name = "Sample.h: 58";
+ rLen = 0;
+ rLoc = 1804;
+ rType = 0;
+ vrLen = 547;
+ vrLoc = 1749;
+ };
+ 6BB7FE3D10F3817A006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */;
+ name = "Sample.cpp: 25";
+ rLen = 0;
+ rLoc = 1073;
+ rType = 0;
+ vrLen = 952;
+ vrLoc = 317;
+ };
+ 6BB7FE3E10F3817A006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */;
+ name = "main.cpp: 547";
+ rLen = 0;
+ rLoc = 12520;
+ rType = 0;
+ vrLen = 633;
+ vrLoc = 12361;
+ };
+ 6BB7FE3F10F3817A006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */;
+ name = "Sample_SoloMeshSimple.cpp: 99";
+ rLen = 100;
+ rLoc = 2410;
+ rType = 0;
+ vrLen = 610;
+ vrLoc = 2054;
+ };
+ 6BB7FE4010F3817A006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */;
+ name = "Sample_SoloMeshTiled.cpp: 37";
+ rLen = 0;
+ rLoc = 1361;
+ rType = 0;
+ vrLen = 686;
+ vrLoc = 963;
+ };
+ 6BB7FE4110F3817A006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */;
+ name = "Sample_TileMesh.cpp: 37";
+ rLen = 0;
+ rLoc = 1356;
+ rType = 0;
+ vrLen = 573;
+ vrLoc = 915;
+ };
+ 6BB7FE4210F3817A006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */;
+ name = "Sample_TileMesh.h: 67";
+ rLen = 0;
+ rLoc = 1886;
+ rType = 0;
+ vrLen = 763;
+ vrLoc = 1285;
+ };
+ 6BB7FE4310F3817A006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BA1E88F10C7BFD3008007F6 /* Sample_SoloMeshTiled.h */;
+ name = "Sample_SoloMeshTiled.h: 107";
+ rLen = 56;
+ rLoc = 2831;
+ rType = 0;
+ vrLen = 645;
+ vrLoc = 2400;
+ };
+ 6BB7FE4410F3817A006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */;
+ name = "Sample.h: 58";
+ rLen = 0;
+ rLoc = 1845;
+ rType = 0;
+ vrLen = 579;
+ vrLoc = 1606;
+ };
+ 6BB7FE4510F3817A006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BA1E88E10C7BFD3008007F6 /* Sample_SoloMeshSimple.h */;
+ name = "Sample_SoloMeshSimple.h: 78";
+ rLen = 0;
+ rLoc = 2224;
+ rType = 0;
+ vrLen = 646;
+ vrLoc = 1622;
+ };
+ 6BB7FE4610F3817A006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */;
+ name = "Sample.h: 90";
+ rLen = 0;
+ rLoc = 2576;
+ rType = 0;
+ vrLen = 799;
+ vrLoc = 2076;
+ };
+ 6BB7FE4710F3817A006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */;
+ name = "Sample.cpp: 132";
+ rLen = 0;
+ rLoc = 2907;
+ rType = 0;
+ vrLen = 732;
+ vrLoc = 2524;
+ };
+ 6BB7FE4810F3817A006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BA1E88E10C7BFD3008007F6 /* Sample_SoloMeshSimple.h */;
+ name = "Sample_SoloMeshSimple.h: 33";
+ rLen = 0;
+ rLoc = 1243;
+ rType = 0;
+ vrLen = 666;
+ vrLoc = 956;
+ };
+ 6BB7FE4910F3817A006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BA1E88F10C7BFD3008007F6 /* Sample_SoloMeshTiled.h */;
+ name = "Sample_SoloMeshTiled.h: 31";
+ rLen = 0;
+ rLoc = 1166;
+ rType = 0;
+ vrLen = 720;
+ vrLoc = 1082;
+ };
+ 6BB7FE4A10F3817A006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */;
+ name = "Sample_SoloMeshTiled.cpp: 42";
+ rLen = 0;
+ rLoc = 1458;
+ rType = 0;
+ vrLen = 879;
+ vrLoc = 1989;
+ };
+ 6BB7FE4B10F3817A006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */;
+ name = "Sample_SoloMeshTiled.cpp: 600";
+ rLen = 323;
+ rLoc = 16967;
+ rType = 0;
+ vrLen = 1175;
+ vrLoc = 16376;
+ };
+ 6BB7FE4C10F3817A006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */;
+ name = "Sample_SoloMeshTiled.cpp: 583";
+ rLen = 0;
+ rLoc = 16604;
+ rType = 0;
+ vrLen = 852;
+ vrLoc = 16114;
+ };
+ 6BB7FE4D10F3817A006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */;
+ name = "Sample.h: 57";
+ rLen = 0;
+ rLoc = 1804;
+ rType = 0;
+ vrLen = 704;
+ vrLoc = 1442;
+ };
+ 6BB7FE4E10F3817A006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */;
+ name = "Sample.cpp: 23";
+ rLen = 0;
+ rLoc = 1024;
+ rType = 0;
+ vrLen = 975;
+ vrLoc = 317;
+ };
+ 6BB7FE4F10F3817A006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */;
+ name = "Sample.h: 57";
+ rLen = 0;
+ rLoc = 1804;
+ rType = 0;
+ vrLen = 696;
+ vrLoc = 1442;
+ };
+ 6BB7FE5010F3817A006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BA1E88F10C7BFD3008007F6 /* Sample_SoloMeshTiled.h */;
+ name = "Sample_SoloMeshTiled.h: 23";
+ rLen = 27;
+ rLoc = 1012;
+ rType = 0;
+ vrLen = 1276;
+ vrLoc = 128;
+ };
+ 6BB7FE5110F3817A006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */;
+ name = "Sample.h: 58";
+ rLen = 0;
+ rLoc = 1804;
+ rType = 0;
+ vrLen = 547;
+ vrLoc = 1749;
+ };
+ 6BB7FE5210F3817A006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */;
+ name = "Sample.cpp: 25";
+ rLen = 0;
+ rLoc = 1073;
+ rType = 0;
+ vrLen = 952;
+ vrLoc = 317;
+ };
+ 6BB7FE5310F3817A006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */;
+ name = "Sample_SoloMeshTiled.cpp: 94";
+ rLen = 0;
+ rLoc = 2554;
+ rType = 0;
+ vrLen = 861;
+ vrLoc = 1955;
+ };
+ 6BB7FE5410F3817A006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */;
+ name = "Sample_TileMesh.h: 68";
+ rLen = 56;
+ rLoc = 1961;
+ rType = 0;
+ vrLen = 740;
+ vrLoc = 1495;
+ };
+ 6BB7FE5510F3817A006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */;
+ name = "Sample_TileMesh.h: 67";
+ rLen = 0;
+ rLoc = 1886;
+ rType = 0;
+ vrLen = 763;
+ vrLoc = 1285;
+ };
+ 6BB7FE5610F3817A006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */;
+ name = "main.cpp: 547";
+ rLen = 0;
+ rLoc = 12520;
+ rType = 0;
+ vrLen = 633;
+ vrLoc = 12361;
+ };
+ 6BB7FE5710F3817A006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */;
+ name = "Sample_SoloMeshSimple.cpp: 93";
+ rLen = 276;
+ rLoc = 2256;
+ rType = 0;
+ vrLen = 610;
+ vrLoc = 2054;
+ };
+ 6BB7FE5810F3817A006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */;
+ name = "Sample_SoloMeshTiled.cpp: 36";
+ rLen = 13;
+ rLoc = 1344;
+ rType = 0;
+ vrLen = 686;
+ vrLoc = 963;
+ };
+ 6BB7FE5910F3817A006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */;
+ name = "Sample_SoloMeshSimple.cpp: 99";
+ rLen = 100;
+ rLoc = 2410;
+ rType = 0;
+ vrLen = 610;
+ vrLoc = 2054;
+ };
+ 6BB7FE5A10F3817A006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */;
+ name = "Sample_TileMesh.cpp: 37";
+ rLen = 0;
+ rLoc = 1356;
+ rType = 0;
+ vrLen = 573;
+ vrLoc = 915;
+ };
+ 6BB7FE5B10F3817A006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */;
+ name = "Sample_TileMesh.h: 27";
+ rLen = 0;
+ rLoc = 1099;
+ rType = 0;
+ vrLen = 719;
+ vrLoc = 1485;
+ };
+ 6BB7FE6010F381DC006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */;
+ name = "Sample_TileMesh.h: 63";
+ rLen = 0;
+ rLoc = 1822;
+ rType = 0;
+ vrLen = 719;
+ vrLoc = 1485;
+ };
+ 6BB7FE6110F381DC006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */;
+ name = "Sample.cpp: 91";
+ rLen = 0;
+ rLoc = 2075;
+ rType = 0;
+ vrLen = 325;
+ vrLoc = 1806;
+ };
+ 6BB7FE6210F381DC006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */;
+ name = "Sample_TileMesh.cpp: 37";
+ rLen = 0;
+ rLoc = 1356;
+ rType = 0;
+ vrLen = 570;
+ vrLoc = 918;
+ };
+ 6BB7FE6310F381DC006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */;
+ name = "Sample_TileMesh.h: 63";
+ rLen = 0;
+ rLoc = 1822;
+ rType = 0;
+ vrLen = 719;
+ vrLoc = 1485;
+ };
+ 6BB7FE6410F381DC006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */;
+ name = "Sample.cpp: 91";
+ rLen = 0;
+ rLoc = 2075;
+ rType = 0;
+ vrLen = 325;
+ vrLoc = 1806;
+ };
+ 6BB7FE6510F381DC006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */;
+ name = "Sample_TileMesh.cpp: 154";
+ rLen = 0;
+ rLoc = 3515;
+ rType = 0;
+ vrLen = 455;
+ vrLoc = 3382;
+ };
+ 6BB7FE6810F381F1006DA0A6 /* Sample.cpp:81 */ = {
+ isa = PBXFileBreakpoint;
+ actions = (
+ );
+ breakpointStyle = 0;
+ continueAfterActions = 0;
+ countType = 0;
+ delayBeforeContinue = 0;
+ fileReference = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */;
+ functionName = "Sample::Sample()";
+ hitCount = 1;
+ ignoreCount = 0;
+ lineNumber = 81;
+ location = Recast;
+ modificationTime = 284393992.62761;
+ state = 1;
+ };
+ 6BB7FE6B10F381FF006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */;
+ name = "Sample.cpp: 78";
+ rLen = 0;
+ rLoc = 1935;
+ rType = 0;
+ vrLen = 336;
+ vrLoc = 1806;
+ };
+ 6BB7FE6C10F381FF006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */;
+ name = "Sample_TileMesh.cpp: 154";
+ rLen = 0;
+ rLoc = 3515;
+ rType = 0;
+ vrLen = 494;
+ vrLoc = 3389;
+ };
+ 6BB7FE6D10F381FF006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */;
+ name = "Sample.cpp: 78";
+ rLen = 0;
+ rLoc = 1935;
+ rType = 0;
+ vrLen = 336;
+ vrLoc = 1806;
+ };
+ 6BB7FE6E10F381FF006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */;
+ name = "Sample_TileMesh.cpp: 154";
+ rLen = 0;
+ rLoc = 3515;
+ rType = 0;
+ vrLen = 517;
+ vrLoc = 3386;
+ };
+ 6BB7FE7110F38203006DA0A6 /* Sample_TileMesh.cpp:169 */ = {
+ isa = PBXFileBreakpoint;
+ actions = (
+ );
+ breakpointStyle = 0;
+ continueAfterActions = 0;
+ countType = 0;
+ delayBeforeContinue = 0;
+ fileReference = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */;
+ functionName = "Sample_TileMesh::Sample_TileMesh()";
+ hitCount = 0;
+ ignoreCount = 0;
+ lineNumber = 169;
+ location = Recast;
+ modificationTime = 284393987.962665;
+ state = 1;
+ };
+ 6BB7FE7210F38204006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */;
+ name = "Sample_TileMesh.cpp: 154";
+ rLen = 0;
+ rLoc = 3515;
+ rType = 0;
+ vrLen = 484;
+ vrLoc = 3475;
+ };
+ 6BB7FE7410F38224006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */;
+ name = "Sample_TileMesh.cpp: 154";
+ rLen = 0;
+ rLoc = 3515;
+ rType = 0;
+ vrLen = 484;
+ vrLoc = 3475;
+ };
+ 6BB7FE7510F38224006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */;
+ name = "Sample.cpp: 81";
+ rLen = 0;
+ rLoc = 1949;
+ rType = 0;
+ vrLen = 668;
+ vrLoc = 2601;
+ };
+ 6BB7FE7610F38224006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */;
+ name = "Sample_SoloMeshSimple.cpp: 45";
+ rLen = 0;
+ rLoc = 1486;
+ rType = 0;
+ vrLen = 507;
+ vrLoc = 1436;
+ };
+ 6BB7FE7710F38224006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */;
+ name = "Sample_SoloMeshTiled.cpp: 37";
+ rLen = 0;
+ rLoc = 1361;
+ rType = 0;
+ vrLen = 686;
+ vrLoc = 963;
+ };
+ 6BB7FE7810F38224006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */;
+ name = "Sample_TileMesh.cpp: 154";
+ rLen = 0;
+ rLoc = 3515;
+ rType = 0;
+ vrLen = 484;
+ vrLoc = 3475;
+ };
+ 6BB7FE7910F38224006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */;
+ name = "Sample.cpp: 81";
+ rLen = 0;
+ rLoc = 1949;
+ rType = 0;
+ vrLen = 668;
+ vrLoc = 2601;
+ };
+ 6BB7FE7A10F38224006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */;
+ name = "Sample_SoloMeshSimple.cpp: 45";
+ rLen = 0;
+ rLoc = 1486;
+ rType = 0;
+ vrLen = 507;
+ vrLoc = 1436;
+ };
+ 6BB7FE7B10F38224006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */;
+ name = "Sample_SoloMeshTiled.cpp: 43";
+ rLen = 0;
+ rLoc = 1458;
+ rType = 0;
+ vrLen = 630;
+ vrLoc = 1139;
+ };
+ 6BB7FE8210F3830D006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */;
+ name = "Sample_SoloMeshTiled.cpp: 40";
+ rLen = 0;
+ rLoc = 1409;
+ rType = 0;
+ vrLen = 614;
+ vrLoc = 1213;
+ };
+ 6BB7FE8310F3830D006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FD4810F3558D006DA0A6 /* ExtraLinkTool.h */;
+ name = "ExtraLinkTool.h: 36";
+ rLen = 0;
+ rLoc = 1183;
+ rType = 0;
+ vrLen = 671;
+ vrLoc = 837;
+ };
+ 6BB7FE8410F3830D006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ comments = "error: 'm_nlinks' was not declared in this scope";
+ fRef = 6BB7FD4910F3559D006DA0A6 /* ExtraLinkTool.cpp */;
+ rLen = 1;
+ rLoc = 110;
+ rType = 1;
+ };
+ 6BB7FE8510F3830D006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */;
+ name = "Sample_SoloMeshTiled.cpp: 40";
+ rLen = 0;
+ rLoc = 1409;
+ rType = 0;
+ vrLen = 614;
+ vrLoc = 1213;
+ };
+ 6BB7FE8610F3830D006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FD4810F3558D006DA0A6 /* ExtraLinkTool.h */;
+ name = "ExtraLinkTool.h: 36";
+ rLen = 0;
+ rLoc = 1183;
+ rType = 0;
+ vrLen = 671;
+ vrLoc = 837;
+ };
+ 6BB7FE8710F3830D006DA0A6 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 6BB7FD4910F3559D006DA0A6 /* ExtraLinkTool.cpp */;
+ name = "ExtraLinkTool.cpp: 111";
+ rLen = 0;
+ rLoc = 2550;
+ rType = 0;
+ vrLen = 562;
+ vrLoc = 2205;
+ };
6BB93C7710CFE1D500F74F2B /* DebugDraw.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {915, 1168}}";
@@ -975,9 +3441,9 @@
};
6BB93C7C10CFE1D500F74F2B /* RecastDebugDraw.cpp */ = {
uiCtxt = {
- sepNavIntBoundsRect = "{{0, 0}, {922, 12736}}";
- sepNavSelRange = "{5238, 0}";
- sepNavVisRange = "{5002, 965}";
+ sepNavIntBoundsRect = "{{0, 0}, {922, 12912}}";
+ sepNavSelRange = "{12026, 106}";
+ sepNavVisRange = "{11632, 853}";
};
};
6BB93CE710CFEB5D00F74F2B /* PBXTextBookmark */ = {
@@ -1136,7 +3602,7 @@
fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */;
name = "main.cpp: 20";
rLen = 0;
- rLoc = 381;
+ rLoc = 1296;
rType = 0;
vrLen = 548;
vrLoc = 0;
@@ -1186,7 +3652,7 @@
fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */;
name = "Sample.h: 13";
rLen = 0;
- rLoc = 352;
+ rLoc = 1298;
rType = 0;
vrLen = 783;
vrLoc = 664;
@@ -1426,7 +3892,7 @@
fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */;
name = "Sample_TileMesh.h: 74";
rLen = 0;
- rLoc = 1686;
+ rLoc = 1598;
rType = 0;
vrLen = 557;
vrLoc = 1701;
@@ -1446,7 +3912,7 @@
fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */;
name = "Sample_TileMesh.h: 63";
rLen = 0;
- rLoc = 1685;
+ rLoc = 1597;
rType = 0;
vrLen = 566;
vrLoc = 1556;
@@ -1456,7 +3922,7 @@
fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */;
name = "Sample_TileMesh.h: 65";
rLen = 0;
- rLoc = 1686;
+ rLoc = 1598;
rType = 0;
vrLen = 537;
vrLoc = 1556;
@@ -1516,7 +3982,7 @@
fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */;
name = "Sample_TileMesh.h: 63";
rLen = 0;
- rLoc = 1685;
+ rLoc = 1597;
rType = 0;
vrLen = 524;
vrLoc = 1556;
@@ -1526,7 +3992,7 @@
fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */;
name = "Sample_TileMesh.cpp: 68";
rLen = 0;
- rLoc = 2076;
+ rLoc = 2157;
rType = 0;
vrLen = 717;
vrLoc = 1467;
@@ -1546,7 +4012,7 @@
fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */;
name = "Sample_TileMesh.h: 64";
rLen = 0;
- rLoc = 1685;
+ rLoc = 1597;
rType = 0;
vrLen = 524;
vrLoc = 1556;
@@ -1556,7 +4022,7 @@
fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */;
name = "Sample_TileMesh.cpp: 68";
rLen = 0;
- rLoc = 2076;
+ rLoc = 2157;
rType = 0;
vrLen = 717;
vrLoc = 1467;
@@ -1576,7 +4042,7 @@
fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */;
name = "Sample_TileMesh.cpp: 69";
rLen = 0;
- rLoc = 1986;
+ rLoc = 2067;
rType = 0;
vrLen = 411;
vrLoc = 1766;
@@ -1586,7 +4052,7 @@
fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */;
name = "Sample_TileMesh.h: 29";
rLen = 15;
- rLoc = 1137;
+ rLoc = 1106;
rType = 0;
vrLen = 1052;
vrLoc = 244;
@@ -1596,7 +4062,7 @@
fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */;
name = "Sample_TileMesh.cpp: 303";
rLen = 0;
- rLoc = 5546;
+ rLoc = 5877;
rType = 0;
vrLen = 716;
vrLoc = 6712;
@@ -1606,7 +4072,7 @@
fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */;
name = "Sample_TileMesh.h: 30";
rLen = 0;
- rLoc = 1170;
+ rLoc = 1139;
rType = 0;
vrLen = 1052;
vrLoc = 244;
@@ -1616,7 +4082,7 @@
fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */;
name = "Sample_TileMesh.cpp: 72";
rLen = 1;
- rLoc = 1900;
+ rLoc = 1981;
rType = 0;
vrLen = 740;
vrLoc = 2310;
@@ -1626,7 +4092,7 @@
fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */;
name = "Sample_TileMesh.h: 119";
rLen = 0;
- rLoc = 2436;
+ rLoc = 2166;
rType = 0;
vrLen = 179;
vrLoc = 2253;
@@ -1636,7 +4102,7 @@
fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */;
name = "Sample_TileMesh.cpp: 308";
rLen = 0;
- rLoc = 5546;
+ rLoc = 5877;
rType = 0;
vrLen = 719;
vrLoc = 6799;
@@ -1646,7 +4112,7 @@
fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */;
name = "Sample_TileMesh.h: 119";
rLen = 23;
- rLoc = 2389;
+ rLoc = 2119;
rType = 0;
vrLen = 131;
vrLoc = 2301;
@@ -1666,7 +4132,7 @@
fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */;
name = "Sample_TileMesh.cpp: 424";
rLen = 0;
- rLoc = 7537;
+ rLoc = 8068;
rType = 0;
vrLen = 597;
vrLoc = 9490;
@@ -1706,7 +4172,7 @@
fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */;
name = "Sample.cpp: 77";
rLen = 0;
- rLoc = 1324;
+ rLoc = 2244;
rType = 0;
vrLen = 671;
vrLoc = 1116;
@@ -1716,7 +4182,7 @@
fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */;
name = "Sample_TileMesh.cpp: 306";
rLen = 0;
- rLoc = 5349;
+ rLoc = 5682;
rType = 0;
vrLen = 701;
vrLoc = 7092;
@@ -1726,7 +4192,7 @@
fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */;
name = "Sample_TileMesh.h: 119";
rLen = 23;
- rLoc = 2389;
+ rLoc = 2119;
rType = 0;
vrLen = 151;
vrLoc = 2281;
@@ -1736,7 +4202,7 @@
fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */;
name = "Sample_TileMesh.cpp: 64";
rLen = 0;
- rLoc = 1766;
+ rLoc = 1847;
rType = 0;
vrLen = 550;
vrLoc = 1636;
@@ -1756,7 +4222,7 @@
fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */;
name = "Sample_TileMesh.cpp: 84";
rLen = 0;
- rLoc = 2072;
+ rLoc = 2153;
rType = 0;
vrLen = 550;
vrLoc = 1911;
@@ -1776,7 +4242,7 @@
fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */;
name = "Sample_TileMesh.cpp: 64";
rLen = 10;
- rLoc = 1797;
+ rLoc = 1878;
rType = 0;
vrLen = 475;
vrLoc = 1686;
@@ -1796,7 +4262,7 @@
fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */;
name = "Sample.h: 58";
rLen = 0;
- rLoc = 1862;
+ rLoc = 2696;
rType = 0;
vrLen = 874;
vrLoc = 711;
@@ -1816,7 +4282,7 @@
fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */;
name = "Sample.h: 32";
rLen = 0;
- rLoc = 786;
+ rLoc = 1750;
rType = 0;
vrLen = 877;
vrLoc = 1181;
@@ -1856,7 +4322,7 @@
fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */;
name = "Sample.h: 75";
rLen = 0;
- rLoc = 1824;
+ rLoc = 2650;
rType = 0;
vrLen = 833;
vrLoc = 1184;
@@ -1866,7 +4332,7 @@
fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */;
name = "Sample_TileMesh.h: 63";
rLen = 0;
- rLoc = 1685;
+ rLoc = 1597;
rType = 0;
vrLen = 496;
vrLoc = 1513;
@@ -1876,7 +4342,7 @@
fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */;
name = "Sample_TileMesh.cpp: 306";
rLen = 0;
- rLoc = 5389;
+ rLoc = 5722;
rType = 0;
vrLen = 514;
vrLoc = 6951;
@@ -1886,7 +4352,7 @@
fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */;
name = "Sample.h: 75";
rLen = 0;
- rLoc = 1824;
+ rLoc = 2650;
rType = 0;
vrLen = 733;
vrLoc = 70;
@@ -1895,8 +4361,8 @@
isa = PBXTextBookmark;
fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */;
name = "Sample_TileMesh.cpp: 312";
- rLen = 19;
- rLoc = 5484;
+ rLen = 0;
+ rLoc = 5777;
rType = 0;
vrLen = 543;
vrLoc = 7057;
@@ -1906,7 +4372,7 @@
fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */;
name = "Sample.h: 24";
rLen = 25;
- rLoc = 480;
+ rLoc = 1444;
rType = 0;
vrLen = 561;
vrLoc = 241;
@@ -1926,7 +4392,7 @@
fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */;
name = "Sample.h: 18";
rLen = 19;
- rLoc = 409;
+ rLoc = 1355;
rType = 0;
vrLen = 561;
vrLoc = 241;
@@ -1946,7 +4412,7 @@
fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */;
name = "Sample_TileMesh.cpp: 310";
rLen = 0;
- rLoc = 5441;
+ rLoc = 5774;
rType = 0;
vrLen = 509;
vrLoc = 7055;
@@ -2026,7 +4492,7 @@
fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */;
name = "Sample.cpp: 93";
rLen = 6;
- rLoc = 1681;
+ rLoc = 2783;
rType = 0;
vrLen = 483;
vrLoc = 1116;
@@ -2036,7 +4502,7 @@
fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */;
name = "Sample_TileMesh.cpp: 123";
rLen = 0;
- rLoc = 2841;
+ rLoc = 2922;
rType = 0;
vrLen = 693;
vrLoc = 2535;
@@ -2046,7 +4512,7 @@
fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */;
name = "Sample.h: 27";
rLen = 0;
- rLoc = 624;
+ rLoc = 1588;
rType = 0;
vrLen = 566;
vrLoc = 375;
@@ -2086,7 +4552,7 @@
fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */;
name = "Sample_TileMesh.cpp: 54";
rLen = 0;
- rLoc = 1530;
+ rLoc = 1611;
rType = 0;
vrLen = 520;
vrLoc = 1467;
@@ -2116,7 +4582,7 @@
fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */;
name = "Sample_TileMesh.cpp: 98";
rLen = 0;
- rLoc = 2425;
+ rLoc = 2506;
rType = 0;
vrLen = 504;
vrLoc = 2028;
@@ -2126,7 +4592,7 @@
fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */;
name = "Sample.h: 58";
rLen = 21;
- rLoc = 1250;
+ rLoc = 2136;
rType = 0;
vrLen = 498;
vrLoc = 852;
@@ -2136,7 +4602,7 @@
fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */;
name = "Sample.cpp: 70";
rLen = 0;
- rLoc = 1110;
+ rLoc = 2030;
rType = 0;
vrLen = 303;
vrLoc = 810;
@@ -2146,7 +4612,7 @@
fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */;
name = "Sample.h: 69";
rLen = 0;
- rLoc = 1443;
+ rLoc = 2329;
rType = 0;
vrLen = 705;
vrLoc = 1145;
@@ -2156,7 +4622,7 @@
fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */;
name = "Sample.cpp: 180";
rLen = 0;
- rLoc = 3821;
+ rLoc = 4799;
rType = 0;
vrLen = 512;
vrLoc = 3316;
@@ -2166,7 +4632,7 @@
fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */;
name = "Sample.h: 69";
rLen = 0;
- rLoc = 1527;
+ rLoc = 2413;
rType = 0;
vrLen = 821;
vrLoc = 1181;
@@ -2176,7 +4642,7 @@
fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */;
name = "Sample.cpp: 176";
rLen = 0;
- rLoc = 3821;
+ rLoc = 4799;
rType = 0;
vrLen = 705;
vrLoc = 3054;
@@ -2186,7 +4652,7 @@
fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */;
name = "Sample_TileMesh.h: 109";
rLen = 0;
- rLoc = 2225;
+ rLoc = 2017;
rType = 0;
vrLen = 154;
vrLoc = 2278;
@@ -2196,7 +4662,7 @@
fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */;
name = "Sample_TileMesh.cpp: 159";
rLen = 0;
- rLoc = 3668;
+ rLoc = 3716;
rType = 0;
vrLen = 500;
vrLoc = 3320;
@@ -2206,7 +4672,7 @@
fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */;
name = "main.cpp: 349";
rLen = 0;
- rLoc = 7429;
+ rLoc = 6182;
rType = 0;
vrLen = 802;
vrLoc = 7025;
@@ -2216,7 +4682,7 @@
fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */;
name = "Sample.cpp: 165";
rLen = 0;
- rLoc = 3576;
+ rLoc = 4554;
rType = 0;
vrLen = 775;
vrLoc = 2983;
@@ -2226,7 +4692,7 @@
fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */;
name = "Sample.h: 69";
rLen = 0;
- rLoc = 1527;
+ rLoc = 2413;
rType = 0;
vrLen = 821;
vrLoc = 1181;
@@ -2236,7 +4702,7 @@
fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */;
name = "Sample.cpp: 165";
rLen = 0;
- rLoc = 3576;
+ rLoc = 4554;
rType = 0;
vrLen = 775;
vrLoc = 2983;
@@ -2246,7 +4712,7 @@
fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */;
name = "Sample.h: 27";
rLen = 0;
- rLoc = 667;
+ rLoc = 1631;
rType = 0;
vrLen = 491;
vrLoc = 328;
@@ -2256,7 +4722,7 @@
fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */;
name = "Sample_TileMesh.cpp: 115";
rLen = 0;
- rLoc = 2739;
+ rLoc = 2820;
rType = 0;
vrLen = 714;
vrLoc = 2447;
@@ -2295,7 +4761,7 @@
ignoreCount = 0;
lineNumber = 282;
location = Recast;
- modificationTime = 283812903.91562;
+ modificationTime = 284393980.540556;
state = 1;
};
6BBB88D310EAA384008FEA1F /* PBXTextBookmark */ = {
@@ -2313,7 +4779,7 @@
fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */;
name = "Sample_TileMesh.cpp: 98";
rLen = 0;
- rLoc = 2425;
+ rLoc = 2506;
rType = 0;
vrLen = 480;
vrLoc = 1994;
@@ -2323,7 +4789,7 @@
fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */;
name = "main.cpp: 700";
rLen = 0;
- rLoc = 15879;
+ rLoc = 14576;
rType = 0;
vrLen = 631;
vrLoc = 15519;
@@ -2343,7 +4809,7 @@
fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */;
name = "Sample_TileMesh.cpp: 573";
rLen = 0;
- rLoc = 8868;
+ rLoc = 9094;
rType = 0;
vrLen = 407;
vrLoc = 14553;
@@ -2362,8 +4828,8 @@
isa = PBXTextBookmark;
fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */;
name = "Sample.h: 76";
- rLen = 53;
- rLoc = 1809;
+ rLen = 61;
+ rLoc = 2635;
rType = 0;
vrLen = 787;
vrLoc = 1249;
@@ -2373,7 +4839,7 @@
fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */;
name = "Sample_TileMesh.cpp: 632";
rLen = 0;
- rLoc = 10279;
+ rLoc = 10366;
rType = 0;
vrLen = 565;
vrLoc = 15643;
@@ -2383,7 +4849,7 @@
fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */;
name = "Sample_TileMesh.h: 111";
rLen = 0;
- rLoc = 2255;
+ rLoc = 2046;
rType = 0;
vrLen = 174;
vrLoc = 2258;
@@ -2393,7 +4859,7 @@
fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */;
name = "Sample_TileMesh.cpp: 622";
rLen = 0;
- rLoc = 10070;
+ rLoc = 10057;
rType = 0;
vrLen = 723;
vrLoc = 2508;
@@ -2403,7 +4869,7 @@
fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */;
name = "main.cpp: 696";
rLen = 0;
- rLoc = 15816;
+ rLoc = 14513;
rType = 0;
vrLen = 546;
vrLoc = 15519;
@@ -2413,7 +4879,7 @@
fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */;
name = "Sample_TileMesh.cpp: 122";
rLen = 0;
- rLoc = 2885;
+ rLoc = 2966;
rType = 0;
vrLen = 657;
vrLoc = 2594;
@@ -2433,7 +4899,7 @@
fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */;
name = "Sample_TileMesh.cpp: 289";
rLen = 0;
- rLoc = 5441;
+ rLoc = 5774;
rType = 0;
vrLen = 641;
vrLoc = 6480;
@@ -2443,7 +4909,7 @@
fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */;
name = "Sample.cpp: 165";
rLen = 0;
- rLoc = 3574;
+ rLoc = 4552;
rType = 0;
vrLen = 819;
vrLoc = 2939;
@@ -2452,8 +4918,8 @@
isa = PBXTextBookmark;
fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */;
name = "Sample.h: 76";
- rLen = 53;
- rLoc = 1809;
+ rLen = 61;
+ rLoc = 2635;
rType = 0;
vrLen = 820;
vrLoc = 1216;
@@ -2463,7 +4929,7 @@
fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */;
name = "Sample.cpp: 84";
rLen = 0;
- rLoc = 1325;
+ rLoc = 2245;
rType = 0;
vrLen = 381;
vrLoc = 1046;
@@ -2472,8 +4938,8 @@
isa = PBXTextBookmark;
fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */;
name = "Sample.h: 76";
- rLen = 53;
- rLoc = 1809;
+ rLen = 61;
+ rLoc = 2635;
rType = 0;
vrLen = 851;
vrLoc = 1185;
@@ -2483,7 +4949,7 @@
fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */;
name = "Sample.cpp: 76";
rLen = 0;
- rLoc = 1181;
+ rLoc = 2101;
rType = 0;
vrLen = 340;
vrLoc = 1046;
@@ -2493,7 +4959,7 @@
fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */;
name = "Sample.h: 63";
rLen = 0;
- rLoc = 1314;
+ rLoc = 2200;
rType = 0;
vrLen = 851;
vrLoc = 1185;
@@ -2503,7 +4969,7 @@
fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */;
name = "Sample.cpp: 80";
rLen = 0;
- rLoc = 1222;
+ rLoc = 2142;
rType = 0;
vrLen = 336;
vrLoc = 1093;
@@ -2513,7 +4979,7 @@
fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */;
name = "Sample_TileMesh.cpp: 216";
rLen = 0;
- rLoc = 5259;
+ rLoc = 5490;
rType = 0;
vrLen = 809;
vrLoc = 4384;
@@ -2523,7 +4989,7 @@
fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */;
name = "Sample_TileMesh.h: 35";
rLen = 0;
- rLoc = 1258;
+ rLoc = 1225;
rType = 0;
vrLen = 785;
vrLoc = 1452;
@@ -2533,7 +4999,7 @@
fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */;
name = "Sample_TileMesh.cpp: 165";
rLen = 0;
- rLoc = 3855;
+ rLoc = 3903;
rType = 0;
vrLen = 875;
vrLoc = 3936;
@@ -2542,7 +5008,7 @@
isa = PBXTextBookmark;
fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */;
name = "Sample_TileMesh.h: 27";
- rLen = 31;
+ rLen = 0;
rLoc = 1099;
rType = 0;
vrLen = 615;
@@ -2553,7 +5019,7 @@
fRef = 6BA1E88E10C7BFD3008007F6 /* Sample_SoloMeshSimple.h */;
name = "Sample_SoloMeshSimple.h: 8";
rLen = 0;
- rLoc = 165;
+ rLoc = 1084;
rType = 0;
vrLen = 627;
vrLoc = 0;
@@ -2562,8 +5028,8 @@
isa = PBXTextBookmark;
fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */;
name = "Sample_TileMesh.cpp: 229";
- rLen = 34;
- rLoc = 5509;
+ rLen = 0;
+ rLoc = 5777;
rType = 0;
vrLen = 749;
vrLoc = 4504;
@@ -2573,7 +5039,7 @@
fRef = 6BA1E88E10C7BFD3008007F6 /* Sample_SoloMeshSimple.h */;
name = "Sample_SoloMeshSimple.h: 5";
rLen = 0;
- rLoc = 119;
+ rLoc = 1038;
rType = 0;
vrLen = 630;
vrLoc = 0;
@@ -2582,8 +5048,8 @@
isa = PBXTextBookmark;
fRef = 6BA1E88E10C7BFD3008007F6 /* Sample_SoloMeshSimple.h */;
name = "Sample_SoloMeshSimple.h: 12";
- rLen = 9;
- rLoc = 253;
+ rLen = 0;
+ rLoc = 1160;
rType = 0;
vrLen = 634;
vrLoc = 0;
@@ -2603,7 +5069,7 @@
fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */;
name = "Sample_SoloMeshTiled.cpp: 186";
rLen = 0;
- rLoc = 5946;
+ rLoc = 7225;
rType = 0;
vrLen = 746;
vrLoc = 5683;
@@ -2623,7 +5089,7 @@
fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */;
name = "Sample.cpp: 80";
rLen = 0;
- rLoc = 1222;
+ rLoc = 2142;
rType = 0;
vrLen = 336;
vrLoc = 1093;
@@ -2633,7 +5099,7 @@
fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */;
name = "Sample.h: 26";
rLen = 0;
- rLoc = 577;
+ rLoc = 1541;
rType = 0;
vrLen = 735;
vrLoc = 111;
@@ -2643,7 +5109,7 @@
fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */;
name = "Sample_TileMesh.cpp: 377";
rLen = 60;
- rLoc = 8834;
+ rLoc = 9060;
rType = 0;
vrLen = 516;
vrLoc = 8290;
@@ -2653,7 +5119,7 @@
fRef = 6BA1E88E10C7BFD3008007F6 /* Sample_SoloMeshSimple.h */;
name = "Sample_SoloMeshSimple.h: 5";
rLen = 0;
- rLoc = 121;
+ rLoc = 1040;
rType = 0;
vrLen = 671;
vrLoc = 175;
@@ -2693,7 +5159,7 @@
fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */;
name = "Sample.cpp: 85";
rLen = 0;
- rLoc = 1284;
+ rLoc = 2204;
rType = 0;
vrLen = 819;
vrLoc = 3048;
@@ -2713,7 +5179,7 @@
fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */;
name = "Sample_SoloMeshTiled.cpp: 186";
rLen = 0;
- rLoc = 5946;
+ rLoc = 7225;
rType = 0;
vrLen = 746;
vrLoc = 5683;
@@ -2723,7 +5189,7 @@
fRef = 6BA1E88E10C7BFD3008007F6 /* Sample_SoloMeshSimple.h */;
name = "Sample_SoloMeshSimple.h: 5";
rLen = 0;
- rLoc = 121;
+ rLoc = 1040;
rType = 0;
vrLen = 709;
vrLoc = 764;
@@ -2733,7 +5199,7 @@
fRef = 6B25B6140FFA62BE004F1BC4 /* Sample.cpp */;
name = "Sample.cpp: 85";
rLen = 0;
- rLoc = 1284;
+ rLoc = 2204;
rType = 0;
vrLen = 819;
vrLoc = 3048;
@@ -2743,7 +5209,7 @@
fRef = 6BA1E88E10C7BFD3008007F6 /* Sample_SoloMeshSimple.h */;
name = "Sample_SoloMeshSimple.h: 55";
rLen = 0;
- rLoc = 1136;
+ rLoc = 2031;
rType = 0;
vrLen = 737;
vrLoc = 736;
@@ -2753,7 +5219,7 @@
fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */;
name = "Sample.h: 67";
rLen = 29;
- rLoc = 1381;
+ rLoc = 2267;
rType = 0;
vrLen = 828;
vrLoc = 976;
@@ -2763,7 +5229,7 @@
fRef = 6BA1E88E10C7BFD3008007F6 /* Sample_SoloMeshSimple.h */;
name = "Sample_SoloMeshSimple.h: 55";
rLen = 29;
- rLoc = 1075;
+ rLoc = 1970;
rType = 0;
vrLen = 727;
vrLoc = 736;
@@ -2772,8 +5238,8 @@
isa = PBXTextBookmark;
fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */;
name = "Sample_TileMesh.h: 75";
- rLen = 61;
- rLoc = 2255;
+ rLen = 0;
+ rLoc = 2046;
rType = 0;
vrLen = 809;
vrLoc = 1623;
@@ -2783,7 +5249,7 @@
fRef = 6BA1E88E10C7BFD3008007F6 /* Sample_SoloMeshSimple.h */;
name = "Sample_SoloMeshSimple.h: 66";
rLen = 0;
- rLoc = 1511;
+ rLoc = 2224;
rType = 0;
vrLen = 730;
vrLoc = 795;
@@ -2793,7 +5259,7 @@
fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */;
name = "Sample_SoloMeshTiled.cpp: 186";
rLen = 0;
- rLoc = 5946;
+ rLoc = 7225;
rType = 0;
vrLen = 746;
vrLoc = 5683;
@@ -2803,7 +5269,7 @@
fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */;
name = "Sample_SoloMeshTiled.cpp: 37";
rLen = 0;
- rLoc = 817;
+ rLoc = 1753;
rType = 0;
vrLen = 510;
vrLoc = 641;
@@ -2813,7 +5279,7 @@
fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */;
name = "Sample_SoloMeshTiled.cpp: 45";
rLen = 0;
- rLoc = 931;
+ rLoc = 1826;
rType = 0;
vrLen = 847;
vrLoc = 1373;
@@ -2823,7 +5289,7 @@
fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */;
name = "Sample_SoloMeshTiled.cpp: 86";
rLen = 0;
- rLoc = 1896;
+ rLoc = 3191;
rType = 0;
vrLen = 777;
vrLoc = 7108;
@@ -2833,7 +5299,7 @@
fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */;
name = "Sample_SoloMeshTiled.cpp: 260";
rLen = 0;
- rLoc = 7574;
+ rLoc = 9184;
rType = 0;
vrLen = 721;
vrLoc = 10888;
@@ -2843,7 +5309,7 @@
fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */;
name = "Sample_SoloMeshTiled.cpp: 408";
rLen = 0;
- rLoc = 11343;
+ rLoc = 12953;
rType = 0;
vrLen = 999;
vrLoc = 13764;
@@ -2853,7 +5319,7 @@
fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */;
name = "Sample_SoloMeshTiled.cpp: 544";
rLen = 0;
- rLoc = 14656;
+ rLoc = 16266;
rType = 0;
vrLen = 806;
vrLoc = 14288;
@@ -2863,7 +5329,7 @@
fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */;
name = "Sample_SoloMeshTiled.cpp: 580";
rLen = 0;
- rLoc = 15486;
+ rLoc = 16965;
rType = 0;
vrLen = 1001;
vrLoc = 15104;
@@ -2873,9 +5339,9 @@
fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */;
name = "Sample_SoloMeshTiled.cpp: 1003";
rLen = 0;
- rLoc = 30628;
+ rLoc = 31694;
rType = 0;
- vrLen = 2490;
+ vrLen = 2484;
vrLoc = 28144;
};
6BBB897C10EAB179008FEA1F /* PBXTextBookmark */ = {
@@ -2883,7 +5349,7 @@
fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */;
name = "Sample_SoloMeshTiled.cpp: 82";
rLen = 41;
- rLoc = 1815;
+ rLoc = 2833;
rType = 0;
vrLen = 718;
vrLoc = 1306;
@@ -2893,7 +5359,7 @@
fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */;
name = "Sample_SoloMeshSimple.cpp: 17";
rLen = 31;
- rLoc = 386;
+ rLoc = 1328;
rType = 0;
vrLen = 625;
vrLoc = 0;
@@ -2903,9 +5369,9 @@
fRef = 6BA1E88F10C7BFD3008007F6 /* Sample_SoloMeshTiled.h */;
name = "Sample_SoloMeshTiled.h: 78";
rLen = 0;
- rLoc = 1695;
+ rLoc = 2558;
rType = 0;
- vrLen = 740;
+ vrLen = 731;
vrLoc = 1547;
};
6BBB898610EAB1AA008FEA1F /* PBXTextBookmark */ = {
@@ -2913,7 +5379,7 @@
fRef = 6BA1E88810C7BFC9008007F6 /* Sample_SoloMeshSimple.cpp */;
name = "Sample_SoloMeshSimple.cpp: 17";
rLen = 31;
- rLoc = 386;
+ rLoc = 1328;
rType = 0;
vrLen = 625;
vrLoc = 0;
@@ -2923,7 +5389,7 @@
fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */;
name = "Sample_SoloMeshTiled.cpp: 7";
rLen = 0;
- rLoc = 142;
+ rLoc = 1061;
rType = 0;
vrLen = 616;
vrLoc = 217;
@@ -2933,7 +5399,7 @@
fRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */;
name = "Sample_SoloMeshTiled.cpp: 7";
rLen = 0;
- rLoc = 142;
+ rLoc = 1061;
rType = 0;
vrLen = 616;
vrLoc = 217;
@@ -2943,7 +5409,7 @@
fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */;
name = "Sample.h: 17";
rLen = 14;
- rLoc = 392;
+ rLoc = 1338;
rType = 0;
vrLen = 725;
vrLoc = 111;
@@ -2953,7 +5419,7 @@
fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */;
name = "Sample_TileMesh.h: 60";
rLen = 0;
- rLoc = 1790;
+ rLoc = 1702;
rType = 0;
vrLen = 833;
vrLoc = 1599;
@@ -2963,7 +5429,7 @@
fRef = 6BA1E88E10C7BFD3008007F6 /* Sample_SoloMeshSimple.h */;
name = "Sample_SoloMeshSimple.h: 4";
rLen = 0;
- rLoc = 91;
+ rLoc = 1010;
rType = 0;
vrLen = 631;
vrLoc = 0;
@@ -2973,7 +5439,7 @@
fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */;
name = "main.cpp: 196";
rLen = 0;
- rLoc = 3928;
+ rLoc = 2719;
rType = 0;
vrLen = 548;
vrLoc = 1207;
@@ -2983,7 +5449,7 @@
fRef = 6B25B6100FFA62AD004F1BC4 /* Sample.h */;
name = "Sample.h: 17";
rLen = 14;
- rLoc = 392;
+ rLoc = 1338;
rType = 0;
vrLen = 725;
vrLoc = 111;
@@ -2993,7 +5459,7 @@
fRef = 6B2AEC510FFB8946005BE9CC /* Sample_TileMesh.h */;
name = "Sample_TileMesh.h: 60";
rLen = 0;
- rLoc = 1790;
+ rLoc = 1702;
rType = 0;
vrLen = 833;
vrLoc = 1599;
@@ -3003,7 +5469,7 @@
fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */;
name = "Sample_TileMesh.cpp: 83";
rLen = 0;
- rLoc = 2028;
+ rLoc = 2109;
rType = 0;
vrLen = 454;
vrLoc = 1877;
@@ -3013,7 +5479,7 @@
fRef = 6BA1E88F10C7BFD3008007F6 /* Sample_SoloMeshTiled.h */;
name = "Sample_SoloMeshTiled.h: 4";
rLen = 0;
- rLoc = 89;
+ rLoc = 1008;
rType = 0;
vrLen = 737;
vrLoc = 0;
@@ -3023,7 +5489,7 @@
fRef = 6BA1E88E10C7BFD3008007F6 /* Sample_SoloMeshSimple.h */;
name = "Sample_SoloMeshSimple.h: 4";
rLen = 0;
- rLoc = 91;
+ rLoc = 1010;
rType = 0;
vrLen = 631;
vrLoc = 0;
@@ -3033,7 +5499,7 @@
fRef = 6B25B6180FFA62BE004F1BC4 /* main.cpp */;
name = "main.cpp: 196";
rLen = 0;
- rLoc = 3928;
+ rLoc = 2719;
rType = 0;
vrLen = 548;
vrLoc = 1207;
@@ -3043,7 +5509,7 @@
fRef = 6BA1E88F10C7BFD3008007F6 /* Sample_SoloMeshTiled.h */;
name = "Sample_SoloMeshTiled.h: 8";
rLen = 0;
- rLoc = 189;
+ rLoc = 1108;
rType = 0;
vrLen = 737;
vrLoc = 0;
@@ -3073,7 +5539,7 @@
fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */;
name = "Sample_TileMesh.cpp: 83";
rLen = 0;
- rLoc = 2028;
+ rLoc = 2109;
rType = 0;
vrLen = 454;
vrLoc = 1877;
@@ -3083,7 +5549,7 @@
fRef = 6BA1E88F10C7BFD3008007F6 /* Sample_SoloMeshTiled.h */;
name = "Sample_SoloMeshTiled.h: 8";
rLen = 0;
- rLoc = 189;
+ rLoc = 1108;
rType = 0;
vrLen = 737;
vrLoc = 0;
@@ -3113,7 +5579,7 @@
fRef = 6B2AEC520FFB8958005BE9CC /* Sample_TileMesh.cpp */;
name = "Sample_TileMesh.cpp: 97";
rLen = 0;
- rLoc = 2282;
+ rLoc = 2363;
rType = 0;
vrLen = 573;
vrLoc = 2076;
diff --git a/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.perspectivev3 b/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.perspectivev3
index 5b34b76c..010327bc 100644
--- a/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.perspectivev3
+++ b/RecastDemo/Build/Xcode/Recast.xcodeproj/memon.perspectivev3
@@ -280,14 +280,14 @@
PBXSmartGroupTreeModuleOutlineStateSelectionKey
- 42
+ 37
34
1
0
PBXSmartGroupTreeModuleOutlineStateVisibleRectKey
- {{0, 460}, {282, 660}}
+ {{0, 464}, {282, 660}}
PBXTopSmartGroupGIDs
@@ -322,7 +322,7 @@
PBXProjectModuleGUID
6B8632A30F78115100E2684A
PBXProjectModuleLabel
- Sample_TileMesh.cpp
+ ExtraLinkTool.cpp
PBXSplitModuleInNavigatorKey
Split0
@@ -330,11 +330,11 @@
PBXProjectModuleGUID
6B8632A40F78115100E2684A
PBXProjectModuleLabel
- Sample_TileMesh.cpp
+ ExtraLinkTool.cpp
_historyCapacity
0
bookmark
- 6BBB89A710EAC398008FEA1F
+ 6BB7FE8710F3830D006DA0A6
history
6B57D358108C66B200DDD053
@@ -359,27 +359,33 @@
6BB93D0A10CFFC1300F74F2B
6BB93D1510CFFC6D00F74F2B
6BB93D1B10CFFD7600F74F2B
- 6B98693110DF8929007D8D84
- 6B98693310DF8929007D8D84
6B9869F710DFFA98007D8D84
6B9869F810DFFA98007D8D84
6BBB87D710EA97CC008FEA1F
- 6BBB87D910EA97CC008FEA1F
- 6BBB87DA10EA97CC008FEA1F
6BBB883C10EA9B6F008FEA1F
6BBB884E10EA9ECC008FEA1F
6BBB889B10EAA094008FEA1F
- 6BBB894510EAAB73008FEA1F
- 6BBB898310EAB1AA008FEA1F
- 6BBB898810EAB225008FEA1F
- 6BBB898E10EABB10008FEA1F
- 6BBB898F10EABB10008FEA1F
- 6BBB899110EABB10008FEA1F
- 6BBB899210EABB10008FEA1F
- 6BBB899D10EABD34008FEA1F
- 6BBB899E10EABD34008FEA1F
6BBB899F10EABD34008FEA1F
- 6BBB89A010EABD34008FEA1F
+ 6BB7FD7F10F36BD5006DA0A6
+ 6BB7FDB210F37703006DA0A6
+ 6BB7FDB310F37703006DA0A6
+ 6BB7FDB410F37703006DA0A6
+ 6BB7FDC010F37703006DA0A6
+ 6BB7FDC110F37703006DA0A6
+ 6BB7FDEE10F377DD006DA0A6
+ 6BB7FE0F10F37CF7006DA0A6
+ 6BB7FE1010F37CF7006DA0A6
+ 6BB7FE3A10F3817A006DA0A6
+ 6BB7FE3B10F3817A006DA0A6
+ 6BB7FE3C10F3817A006DA0A6
+ 6BB7FE3E10F3817A006DA0A6
+ 6BB7FE6010F381DC006DA0A6
+ 6BB7FE7410F38224006DA0A6
+ 6BB7FE7510F38224006DA0A6
+ 6BB7FE7610F38224006DA0A6
+ 6BB7FE8210F3830D006DA0A6
+ 6BB7FE8310F3830D006DA0A6
+ 6BB7FE8410F3830D006DA0A6
prevStack
@@ -387,189 +393,98 @@
6B98693810DF8929007D8D84
6B98693910DF8929007D8D84
6B9869FC10DFFA98007D8D84
- 6BBB87E310EA97CC008FEA1F
- 6BBB87E410EA97CC008FEA1F
6BBB87E510EA97CC008FEA1F
- 6BBB87E610EA97CC008FEA1F
- 6BBB87E710EA97CC008FEA1F
- 6BBB87E810EA97CC008FEA1F
6BBB87E910EA97CC008FEA1F
- 6BBB87EB10EA97CC008FEA1F
- 6BBB87EC10EA97CC008FEA1F
- 6BBB87EF10EA97CC008FEA1F
- 6BBB87F010EA97CC008FEA1F
- 6BBB87F110EA97CC008FEA1F
- 6BBB87F410EA97CC008FEA1F
- 6BBB87F510EA97CC008FEA1F
- 6BBB87F610EA97CC008FEA1F
- 6BBB87F710EA97CC008FEA1F
- 6BBB87F810EA97CC008FEA1F
- 6BBB87FA10EA97CC008FEA1F
- 6BBB87FB10EA97CC008FEA1F
- 6BBB87FC10EA97CC008FEA1F
- 6BBB87FD10EA97CC008FEA1F
- 6BBB87FE10EA97CC008FEA1F
- 6BBB87FF10EA97CC008FEA1F
- 6BBB880010EA97CC008FEA1F
- 6BBB880110EA97CC008FEA1F
- 6BBB880210EA97CC008FEA1F
- 6BBB880310EA97CC008FEA1F
- 6BBB880510EA97CC008FEA1F
- 6BBB880610EA97CC008FEA1F
- 6BBB880710EA97CC008FEA1F
- 6BBB880810EA97CC008FEA1F
- 6BBB880910EA97CC008FEA1F
- 6BBB880A10EA97CC008FEA1F
- 6BBB880B10EA97CC008FEA1F
- 6BBB880C10EA97CC008FEA1F
- 6BBB880D10EA97CC008FEA1F
- 6BBB880E10EA97CC008FEA1F
- 6BBB880F10EA97CC008FEA1F
- 6BBB881010EA97CC008FEA1F
- 6BBB881110EA97CC008FEA1F
- 6BBB881210EA97CC008FEA1F
- 6BBB881310EA97CC008FEA1F
- 6BBB881410EA97CC008FEA1F
- 6BBB881510EA97CC008FEA1F
- 6BBB881610EA97CC008FEA1F
- 6BBB881710EA97CC008FEA1F
- 6BBB881810EA97CC008FEA1F
- 6BBB882710EA99CA008FEA1F
- 6BBB882810EA99CA008FEA1F
- 6BBB882910EA99CA008FEA1F
- 6BBB882A10EA99CA008FEA1F
- 6BBB883610EA9B3D008FEA1F
- 6BBB883710EA9B3D008FEA1F
- 6BBB883E10EA9B6F008FEA1F
6BBB883F10EA9B6F008FEA1F
6BBB885510EA9ECC008FEA1F
- 6BBB885610EA9ECC008FEA1F
- 6BBB885710EA9ECC008FEA1F
- 6BBB885810EA9ECC008FEA1F
- 6BBB885910EA9ECC008FEA1F
- 6BBB885A10EA9ECC008FEA1F
- 6BBB885B10EA9ECC008FEA1F
- 6BBB885C10EA9ECC008FEA1F
- 6BBB885D10EA9ECC008FEA1F
- 6BBB885E10EA9ECC008FEA1F
- 6BBB885F10EA9ECC008FEA1F
- 6BBB886010EA9ECC008FEA1F
- 6BBB886110EA9ECC008FEA1F
6BBB886210EA9ECC008FEA1F
- 6BBB886310EA9ECC008FEA1F
- 6BBB886410EA9ECC008FEA1F
- 6BBB886510EA9ECC008FEA1F
- 6BBB886610EA9ECC008FEA1F
- 6BBB886710EA9ECC008FEA1F
- 6BBB886810EA9ECC008FEA1F
- 6BBB886910EA9ECC008FEA1F
- 6BBB886A10EA9ECC008FEA1F
- 6BBB886B10EA9ECC008FEA1F
- 6BBB886C10EA9ECC008FEA1F
- 6BBB886D10EA9ECC008FEA1F
- 6BBB886E10EA9ECC008FEA1F
- 6BBB886F10EA9ECC008FEA1F
- 6BBB887010EA9ECC008FEA1F
- 6BBB887110EA9ECC008FEA1F
- 6BBB887210EA9ECC008FEA1F
- 6BBB887310EA9ECC008FEA1F
- 6BBB887410EA9ECC008FEA1F
- 6BBB887E10EA9FE6008FEA1F
- 6BBB887F10EA9FE6008FEA1F
- 6BBB888010EA9FE6008FEA1F
- 6BBB888110EA9FE6008FEA1F
- 6BBB888210EA9FE6008FEA1F
- 6BBB888310EA9FE6008FEA1F
- 6BBB888410EA9FE6008FEA1F
- 6BBB889610EAA050008FEA1F
6BBB889D10EAA094008FEA1F
- 6BBB88B410EAA316008FEA1F
- 6BBB88B510EAA316008FEA1F
- 6BBB88B610EAA316008FEA1F
- 6BBB88B710EAA316008FEA1F
- 6BBB88B810EAA316008FEA1F
- 6BBB88B910EAA316008FEA1F
- 6BBB88BA10EAA316008FEA1F
- 6BBB88BB10EAA316008FEA1F
- 6BBB88BC10EAA316008FEA1F
- 6BBB88BD10EAA316008FEA1F
- 6BBB88C110EAA316008FEA1F
- 6BBB88C210EAA316008FEA1F
- 6BBB88C310EAA316008FEA1F
- 6BBB88C510EAA316008FEA1F
- 6BBB88C610EAA316008FEA1F
- 6BBB88C710EAA316008FEA1F
- 6BBB88C810EAA316008FEA1F
- 6BBB88D310EAA384008FEA1F
- 6BBB88D410EAA384008FEA1F
- 6BBB88D510EAA384008FEA1F
- 6BBB88DA10EAA39C008FEA1F
- 6BBB88E410EAA3D9008FEA1F
- 6BBB88E510EAA3D9008FEA1F
- 6BBB88E610EAA3D9008FEA1F
- 6BBB88E710EAA3D9008FEA1F
- 6BBB88E810EAA3D9008FEA1F
- 6BBB88E910EAA3D9008FEA1F
- 6BBB88F010EAA44E008FEA1F
- 6BBB88F410EAA4E6008FEA1F
- 6BBB88FC10EAA614008FEA1F
- 6BBB88FD10EAA614008FEA1F
- 6BBB88FE10EAA614008FEA1F
- 6BBB88FF10EAA614008FEA1F
- 6BBB890010EAA614008FEA1F
- 6BBB890110EAA614008FEA1F
- 6BBB890210EAA614008FEA1F
- 6BBB890310EAA614008FEA1F
- 6BBB890A10EAA6C2008FEA1F
- 6BBB890D10EAA6C2008FEA1F
- 6BBB890E10EAA6C2008FEA1F
- 6BBB891B10EAA87B008FEA1F
- 6BBB891C10EAA87B008FEA1F
- 6BBB891D10EAA87B008FEA1F
- 6BBB891F10EAA87B008FEA1F
- 6BBB892310EAA87B008FEA1F
- 6BBB892510EAA87B008FEA1F
- 6BBB892710EAA87B008FEA1F
- 6BBB892810EAA87B008FEA1F
- 6BBB892910EAA87B008FEA1F
- 6BBB892A10EAA87B008FEA1F
- 6BBB892B10EAA87B008FEA1F
- 6BBB892F10EAA899008FEA1F
- 6BBB893A10EAAADC008FEA1F
- 6BBB893C10EAAADC008FEA1F
- 6BBB893D10EAAADC008FEA1F
- 6BBB893E10EAAADC008FEA1F
- 6BBB894A10EAAB73008FEA1F
- 6BBB894C10EAAB73008FEA1F
- 6BBB894E10EAAB73008FEA1F
- 6BBB895010EAAB73008FEA1F
- 6BBB895210EAAB73008FEA1F
- 6BBB895310EAAB73008FEA1F
- 6BBB895510EAAB73008FEA1F
- 6BBB896010EAAE6C008FEA1F
- 6BBB896110EAAE6C008FEA1F
- 6BBB896310EAAE6C008FEA1F
- 6BBB896C10EAB179008FEA1F
- 6BBB896E10EAB179008FEA1F
- 6BBB897010EAB179008FEA1F
- 6BBB897210EAB179008FEA1F
- 6BBB897410EAB179008FEA1F
- 6BBB897610EAB179008FEA1F
- 6BBB897810EAB179008FEA1F
- 6BBB897A10EAB179008FEA1F
- 6BBB897C10EAB179008FEA1F
- 6BBB898510EAB1AA008FEA1F
- 6BBB898610EAB1AA008FEA1F
- 6BBB898A10EAB225008FEA1F
- 6BBB899410EABB10008FEA1F
- 6BBB899510EABB10008FEA1F
- 6BBB899610EABB10008FEA1F
- 6BBB899710EABB10008FEA1F
- 6BBB899810EABB10008FEA1F
- 6BBB899910EABB10008FEA1F
- 6BBB89A110EABD34008FEA1F
- 6BBB89A210EABD34008FEA1F
- 6BBB89A310EABD34008FEA1F
+ 6BB7FD6110F3564B006DA0A6
+ 6BB7FD6310F3564B006DA0A6
+ 6BB7FD6410F3564B006DA0A6
+ 6BB7FD6510F3564B006DA0A6
+ 6BB7FD6610F3564B006DA0A6
+ 6BB7FD6910F3564B006DA0A6
+ 6BB7FD8310F36BD5006DA0A6
+ 6BB7FD8410F36BD5006DA0A6
+ 6BB7FD8510F36BD5006DA0A6
+ 6BB7FD8610F36BD5006DA0A6
+ 6BB7FD8710F36BD5006DA0A6
+ 6BB7FD8810F36BD5006DA0A6
+ 6BB7FD8910F36BD5006DA0A6
+ 6BB7FD8B10F36BD5006DA0A6
+ 6BB7FD9F10F36D7A006DA0A6
+ 6BB7FDC510F37703006DA0A6
+ 6BB7FDC610F37703006DA0A6
+ 6BB7FDC710F37703006DA0A6
+ 6BB7FDC810F37703006DA0A6
+ 6BB7FDCB10F37703006DA0A6
+ 6BB7FDCC10F37703006DA0A6
+ 6BB7FDCD10F37703006DA0A6
+ 6BB7FDCE10F37703006DA0A6
+ 6BB7FDCF10F37703006DA0A6
+ 6BB7FDD010F37703006DA0A6
+ 6BB7FDD810F37703006DA0A6
+ 6BB7FDD910F37703006DA0A6
+ 6BB7FDDA10F37703006DA0A6
+ 6BB7FDDB10F37703006DA0A6
+ 6BB7FDDC10F37703006DA0A6
+ 6BB7FDDD10F37703006DA0A6
+ 6BB7FDDE10F37703006DA0A6
+ 6BB7FDDF10F37703006DA0A6
+ 6BB7FDE010F37703006DA0A6
+ 6BB7FDE110F37703006DA0A6
+ 6BB7FDE210F37703006DA0A6
+ 6BB7FDE310F37703006DA0A6
+ 6BB7FDF210F377DD006DA0A6
+ 6BB7FDF310F377DD006DA0A6
+ 6BB7FDF410F377DD006DA0A6
+ 6BB7FDF510F377DD006DA0A6
+ 6BB7FDF610F377DD006DA0A6
+ 6BB7FDF810F377DD006DA0A6
+ 6BB7FDFA10F377DD006DA0A6
+ 6BB7FE1710F37CF7006DA0A6
+ 6BB7FE1810F37CF7006DA0A6
+ 6BB7FE1910F37CF7006DA0A6
+ 6BB7FE1A10F37CF7006DA0A6
+ 6BB7FE1B10F37CF7006DA0A6
+ 6BB7FE1C10F37CF7006DA0A6
+ 6BB7FE1D10F37CF7006DA0A6
+ 6BB7FE1E10F37CF7006DA0A6
+ 6BB7FE1F10F37CF7006DA0A6
+ 6BB7FE2110F37CF7006DA0A6
+ 6BB7FE2210F37CF7006DA0A6
+ 6BB7FE2310F37CF7006DA0A6
+ 6BB7FE4310F3817A006DA0A6
+ 6BB7FE4410F3817A006DA0A6
+ 6BB7FE4510F3817A006DA0A6
+ 6BB7FE4610F3817A006DA0A6
+ 6BB7FE4710F3817A006DA0A6
+ 6BB7FE4810F3817A006DA0A6
+ 6BB7FE4910F3817A006DA0A6
+ 6BB7FE4A10F3817A006DA0A6
+ 6BB7FE4B10F3817A006DA0A6
+ 6BB7FE4C10F3817A006DA0A6
+ 6BB7FE4D10F3817A006DA0A6
+ 6BB7FE4E10F3817A006DA0A6
+ 6BB7FE4F10F3817A006DA0A6
+ 6BB7FE5010F3817A006DA0A6
+ 6BB7FE5110F3817A006DA0A6
+ 6BB7FE5210F3817A006DA0A6
+ 6BB7FE5310F3817A006DA0A6
+ 6BB7FE5410F3817A006DA0A6
+ 6BB7FE5510F3817A006DA0A6
+ 6BB7FE5610F3817A006DA0A6
+ 6BB7FE5710F3817A006DA0A6
+ 6BB7FE5810F3817A006DA0A6
+ 6BB7FE5910F3817A006DA0A6
+ 6BB7FE6310F381DC006DA0A6
+ 6BB7FE6410F381DC006DA0A6
+ 6BB7FE7810F38224006DA0A6
+ 6BB7FE7910F38224006DA0A6
+ 6BB7FE7A10F38224006DA0A6
+ 6BB7FE8510F3830D006DA0A6
+ 6BB7FE8610F3830D006DA0A6
SplitCount
@@ -583,18 +498,18 @@
GeometryConfiguration
Frame
- {{0, 0}, {976, 515}}
+ {{0, 0}, {976, 527}}
RubberWindowFrame
0 59 1280 719 0 0 1280 778
Module
PBXNavigatorGroup
Proportion
- 515pt
+ 527pt
Proportion
- 158pt
+ 146pt
Tabs
@@ -608,7 +523,7 @@
GeometryConfiguration
Frame
- {{10, 27}, {976, 194}}
+ {{10, 27}, {976, 119}}
Module
XCDetailModule
@@ -662,7 +577,7 @@
GeometryConfiguration
Frame
- {{10, 27}, {976, 131}}
+ {{10, 27}, {976, 119}}
RubberWindowFrame
0 59 1280 719 0 0 1280 778
@@ -692,11 +607,11 @@
TableOfContents
- 6BBB881A10EA97CC008FEA1F
+ 6BB7FD6B10F3564B006DA0A6
1CA23ED40692098700951B8B
- 6BBB881B10EA97CC008FEA1F
+ 6BB7FD6C10F3564B006DA0A6
6B8632A30F78115100E2684A
- 6BBB881C10EA97CC008FEA1F
+ 6BB7FD6D10F3564B006DA0A6
1CA23EDF0692099D00951B8B
1CA23EE00692099D00951B8B
1CA23EE10692099D00951B8B
@@ -845,14 +760,14 @@
TableOfContents
- 6BBB882C10EA99CA008FEA1F
+ 6BB7FD6E10F3564B006DA0A6
1CCC7628064C1048000F2A68
1CCC7629064C1048000F2A68
- 6BBB882D10EA99CA008FEA1F
- 6BBB882E10EA99CA008FEA1F
- 6BBB882F10EA99CA008FEA1F
- 6BBB883010EA99CA008FEA1F
- 6BBB883110EA99CA008FEA1F
+ 6BB7FD6F10F3564B006DA0A6
+ 6BB7FD7010F3564B006DA0A6
+ 6BB7FD7110F3564B006DA0A6
+ 6BB7FD7210F3564B006DA0A6
+ 6BB7FD7310F3564B006DA0A6
ToolbarConfigUserDefaultsMinorVersion
2
@@ -884,8 +799,8 @@
5
WindowOrderList
- 6BBB888F10EAA01C008FEA1F
- 6BBB889010EAA01C008FEA1F
+ 6BB7FDE610F37703006DA0A6
+ 6BB7FDE710F37703006DA0A6
/Users/memon/Code/recastnavigation/RecastDemo/Build/Xcode/Recast.xcodeproj
WindowString
diff --git a/RecastDemo/Build/Xcode/Recast.xcodeproj/project.pbxproj b/RecastDemo/Build/Xcode/Recast.xcodeproj/project.pbxproj
index affada49..0021ee16 100644
--- a/RecastDemo/Build/Xcode/Recast.xcodeproj/project.pbxproj
+++ b/RecastDemo/Build/Xcode/Recast.xcodeproj/project.pbxproj
@@ -35,6 +35,8 @@
6BA1E88C10C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6BA1E88910C7BFC9008007F6 /* Sample_SoloMeshTiled.cpp */; };
6BB788170FC0472B003C24DB /* ChunkyTriMesh.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6BB788160FC0472B003C24DB /* ChunkyTriMesh.cpp */; };
6BB7FC0B10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */; };
+ 6BB7FD4A10F3559D006DA0A6 /* ExtraLinkTool.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6BB7FD4910F3559D006DA0A6 /* ExtraLinkTool.cpp */; };
+ 6BB7FDA510F36F0E006DA0A6 /* InputGeom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */; };
6BB93C7D10CFE1D500F74F2B /* DebugDraw.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6BB93C7A10CFE1D500F74F2B /* DebugDraw.cpp */; };
6BB93C7E10CFE1D500F74F2B /* DetourDebugDraw.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6BB93C7B10CFE1D500F74F2B /* DetourDebugDraw.cpp */; };
6BB93C7F10CFE1D500F74F2B /* RecastDebugDraw.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6BB93C7C10CFE1D500F74F2B /* RecastDebugDraw.cpp */; };
@@ -96,6 +98,10 @@
6BB788180FC04753003C24DB /* ChunkyTriMesh.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ChunkyTriMesh.h; path = ../../Include/ChunkyTriMesh.h; sourceTree = SOURCE_ROOT; };
6BB7FC0910EBB6AA006DA0A6 /* NavMeshTesterTool.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NavMeshTesterTool.h; path = ../../Include/NavMeshTesterTool.h; sourceTree = SOURCE_ROOT; };
6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = NavMeshTesterTool.cpp; path = ../../Source/NavMeshTesterTool.cpp; sourceTree = SOURCE_ROOT; };
+ 6BB7FD4810F3558D006DA0A6 /* ExtraLinkTool.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ExtraLinkTool.h; path = ../../Include/ExtraLinkTool.h; sourceTree = SOURCE_ROOT; };
+ 6BB7FD4910F3559D006DA0A6 /* ExtraLinkTool.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ExtraLinkTool.cpp; path = ../../Source/ExtraLinkTool.cpp; sourceTree = SOURCE_ROOT; };
+ 6BB7FDA310F36EFC006DA0A6 /* InputGeom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = InputGeom.h; path = ../../Include/InputGeom.h; sourceTree = SOURCE_ROOT; };
+ 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = InputGeom.cpp; path = ../../Source/InputGeom.cpp; sourceTree = SOURCE_ROOT; };
6BB93C7710CFE1D500F74F2B /* DebugDraw.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DebugDraw.h; path = ../../../DebugUtils/Include/DebugDraw.h; sourceTree = SOURCE_ROOT; };
6BB93C7810CFE1D500F74F2B /* DetourDebugDraw.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DetourDebugDraw.h; path = ../../../DebugUtils/Include/DetourDebugDraw.h; sourceTree = SOURCE_ROOT; };
6BB93C7910CFE1D500F74F2B /* RecastDebugDraw.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RecastDebugDraw.h; path = ../../../DebugUtils/Include/RecastDebugDraw.h; sourceTree = SOURCE_ROOT; };
@@ -141,6 +147,8 @@
6BB788160FC0472B003C24DB /* ChunkyTriMesh.cpp */,
6B137C7C0F7FCBE400459200 /* SDLMain.h */,
6B137C6E0F7FCBBB00459200 /* SDLMain.m */,
+ 6BB7FDA310F36EFC006DA0A6 /* InputGeom.h */,
+ 6BB7FDA410F36F0E006DA0A6 /* InputGeom.cpp */,
);
name = Classes;
sourceTree = "";
@@ -237,6 +245,8 @@
children = (
6BB7FC0910EBB6AA006DA0A6 /* NavMeshTesterTool.h */,
6BB7FC0A10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp */,
+ 6BB7FD4810F3558D006DA0A6 /* ExtraLinkTool.h */,
+ 6BB7FD4910F3559D006DA0A6 /* ExtraLinkTool.cpp */,
6B25B6100FFA62AD004F1BC4 /* Sample.h */,
6B25B6140FFA62BE004F1BC4 /* Sample.cpp */,
6BA1E88E10C7BFD3008007F6 /* Sample_SoloMeshSimple.h */,
@@ -363,6 +373,8 @@
6BB93C7F10CFE1D500F74F2B /* RecastDebugDraw.cpp in Sources */,
6BB93CF610CFEC4500F74F2B /* RecastDump.cpp in Sources */,
6BB7FC0B10EBB6AA006DA0A6 /* NavMeshTesterTool.cpp in Sources */,
+ 6BB7FD4A10F3559D006DA0A6 /* ExtraLinkTool.cpp in Sources */,
+ 6BB7FDA510F36F0E006DA0A6 /* InputGeom.cpp in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
diff --git a/RecastDemo/Include/ExtraLinkTool.h b/RecastDemo/Include/ExtraLinkTool.h
new file mode 100644
index 00000000..b0b7029c
--- /dev/null
+++ b/RecastDemo/Include/ExtraLinkTool.h
@@ -0,0 +1,45 @@
+//
+// Copyright (c) 2009 Mikko Mononen memon@inside.org
+//
+// This software is provided 'as-is', without any express or implied
+// warranty. In no event will the authors be held liable for any damages
+// arising from the use of this software.
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it
+// freely, subject to the following restrictions:
+// 1. The origin of this software must not be misrepresented; you must not
+// claim that you wrote the original software. If you use this software
+// in a product, an acknowledgment in the product documentation would be
+// appreciated but is not required.
+// 2. Altered source versions must be plainly marked as such, and must not be
+// misrepresented as being the original software.
+// 3. This notice may not be removed or altered from any source distribution.
+//
+
+#ifndef EXTRALINKTOOL_H
+#define EXTRALINKTOOL_H
+
+#include "Sample.h"
+
+// Tool to create extra links for InputGeom
+
+class ExtraLinkTool : public SampleTool
+{
+ Sample* m_sample;
+ float m_hitPos[3];
+ bool m_hitPosSet;
+
+public:
+ ExtraLinkTool();
+ ~ExtraLinkTool();
+
+ virtual int type() { return TOOL_EXTRA_LINK; }
+ virtual void init(Sample* sample);
+ virtual void reset();
+ virtual void handleMenu();
+ virtual void handleClick(const float* p, bool shift);
+ virtual void handleRender();
+ virtual void handleRenderOverlay(double* proj, double* model, int* view);
+};
+
+#endif // EXTRALINKTOOL_H
diff --git a/RecastDemo/Include/InputGeom.h b/RecastDemo/Include/InputGeom.h
new file mode 100644
index 00000000..391def8b
--- /dev/null
+++ b/RecastDemo/Include/InputGeom.h
@@ -0,0 +1,62 @@
+//
+// Copyright (c) 2009 Mikko Mononen memon@inside.org
+//
+// This software is provided 'as-is', without any express or implied
+// warranty. In no event will the authors be held liable for any damages
+// arising from the use of this software.
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it
+// freely, subject to the following restrictions:
+// 1. The origin of this software must not be misrepresented; you must not
+// claim that you wrote the original software. If you use this software
+// in a product, an acknowledgment in the product documentation would be
+// appreciated but is not required.
+// 2. Altered source versions must be plainly marked as such, and must not be
+// misrepresented as being the original software.
+// 3. This notice may not be removed or altered from any source distribution.
+//
+
+#ifndef INPUTGEOM_H
+#define INPUTGEOM_H
+
+#include "ChunkyTriMesh.h"
+#include "MeshLoaderObj.h"
+
+struct ExtraLink
+{
+ float spos[3]; // Start position of the link.
+ float epos[3]; // End position of the link.
+};
+
+class InputGeom
+{
+ rcChunkyTriMesh* m_chunkyMesh;
+ rcMeshLoaderObj* m_mesh;
+ float m_meshBMin[3], m_meshBMax[3];
+
+ static const int MAX_LINKS = 256;
+
+ ExtraLink m_links[MAX_LINKS];
+ int m_nlinks;
+
+public:
+ InputGeom();
+ ~InputGeom();
+
+ bool loadMesh(const char* filepath);
+
+ // Method to return static mesh data.
+ inline const rcMeshLoaderObj* getMesh() const { return m_mesh; }
+ inline const float* getMeshBoundsMin() const { return m_meshBMin; }
+ inline const float* getMeshBoundsMax() const { return m_meshBMax; }
+ inline const rcChunkyTriMesh* getChunkyMesh() const { return m_chunkyMesh; }
+ bool raycastMesh(float* src, float* dst, float& tmin);
+
+ // Extra links
+ int getExtraLinkCount() const { return m_nlinks; }
+ ExtraLink* getExtraLink(int i) { return &m_links[i]; }
+ void addExtraLink(const float* spos, const float* epos);
+ void deleteExtraLink(int i);
+};
+
+#endif // INPUTGEOM_H
diff --git a/RecastDemo/Include/NavMeshTesterTool.h b/RecastDemo/Include/NavMeshTesterTool.h
index e25173a0..9a662196 100644
--- a/RecastDemo/Include/NavMeshTesterTool.h
+++ b/RecastDemo/Include/NavMeshTesterTool.h
@@ -1,3 +1,21 @@
+//
+// Copyright (c) 2009 Mikko Mononen memon@inside.org
+//
+// This software is provided 'as-is', without any express or implied
+// warranty. In no event will the authors be held liable for any damages
+// arising from the use of this software.
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it
+// freely, subject to the following restrictions:
+// 1. The origin of this software must not be misrepresented; you must not
+// claim that you wrote the original software. If you use this software
+// in a product, an acknowledgment in the product documentation would be
+// appreciated but is not required.
+// 2. Altered source versions must be plainly marked as such, and must not be
+// misrepresented as being the original software.
+// 3. This notice may not be removed or altered from any source distribution.
+//
+
#ifndef NAVMESHTESTERTOOL_H
#define NAVMESHTESTERTOOL_H
diff --git a/RecastDemo/Include/Sample.h b/RecastDemo/Include/Sample.h
index 160048da..80365bf8 100644
--- a/RecastDemo/Include/Sample.h
+++ b/RecastDemo/Include/Sample.h
@@ -1,7 +1,26 @@
+//
+// Copyright (c) 2009 Mikko Mononen memon@inside.org
+//
+// This software is provided 'as-is', without any express or implied
+// warranty. In no event will the authors be held liable for any damages
+// arising from the use of this software.
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it
+// freely, subject to the following restrictions:
+// 1. The origin of this software must not be misrepresented; you must not
+// claim that you wrote the original software. If you use this software
+// in a product, an acknowledgment in the product documentation would be
+// appreciated but is not required.
+// 2. Altered source versions must be plainly marked as such, and must not be
+// misrepresented as being the original software.
+// 3. This notice may not be removed or altered from any source distribution.
+//
+
#ifndef RECASTSAMPLE_H
#define RECASTSAMPLE_H
#include "DebugDraw.h"
+#include "DetourNavMesh.h"
struct DebugDrawGL : public duDebugDraw
{
@@ -16,6 +35,7 @@ enum SampleToolType
TOOL_NONE = 0,
TOOL_TILE_EDIT,
TOOL_NAVMESH_TESTER,
+ TOOL_EXTRA_LINK,
};
struct SampleTool
@@ -34,12 +54,8 @@ struct SampleTool
class Sample
{
protected:
- const float* m_verts;
- int m_nverts;
- const int* m_tris;
- const float* m_trinorms;
- int m_ntris;
- float m_bmin[3], m_bmax[3];
+ class InputGeom* m_geom;
+ dtNavMesh* m_navMesh;
float m_cellSize;
float m_cellHeight;
@@ -69,12 +85,11 @@ public:
virtual void handleClick(const float* p, bool shift);
virtual void handleRender();
virtual void handleRenderOverlay(double* proj, double* model, int* view);
- virtual void handleMeshChanged(const float* verts, int nverts,
- const int* tris, const float* trinorms, int ntris,
- const float* bmin, const float* bmax);
+ virtual void handleMeshChanged(class InputGeom* geom);
virtual bool handleBuild();
- virtual class dtNavMesh* getNavMesh() { return 0; }
+ virtual class InputGeom* getInputGeom() { return m_geom; }
+ virtual class dtNavMesh* getNavMesh() { return m_navMesh; }
virtual float getAgentRadius() { return m_agentRadius; }
virtual float getAgentHeight() { return m_agentHeight; }
diff --git a/RecastDemo/Include/Sample_SoloMeshSimple.h b/RecastDemo/Include/Sample_SoloMeshSimple.h
index 81cbb80f..defed4db 100644
--- a/RecastDemo/Include/Sample_SoloMeshSimple.h
+++ b/RecastDemo/Include/Sample_SoloMeshSimple.h
@@ -1,3 +1,21 @@
+//
+// Copyright (c) 2009 Mikko Mononen memon@inside.org
+//
+// This software is provided 'as-is', without any express or implied
+// warranty. In no event will the authors be held liable for any damages
+// arising from the use of this software.
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it
+// freely, subject to the following restrictions:
+// 1. The origin of this software must not be misrepresented; you must not
+// claim that you wrote the original software. If you use this software
+// in a product, an acknowledgment in the product documentation would be
+// appreciated but is not required.
+// 2. Altered source versions must be plainly marked as such, and must not be
+// misrepresented as being the original software.
+// 3. This notice may not be removed or altered from any source distribution.
+//
+
#ifndef RECASTSAMPLESOLOMESHSIMPLE_H
#define RECASTSAMPLESOLOMESHSIMPLE_H
@@ -9,8 +27,6 @@
class Sample_SoloMeshSimple : public Sample //Sample_SoloMesh
{
protected:
- dtNavMesh* m_navMesh;
-
bool m_keepInterResults;
rcBuildTimes m_buildTimes;
@@ -57,12 +73,8 @@ public:
virtual void handleRender();
virtual void handleRenderOverlay(double* proj, double* model, int* view);
- virtual void handleMeshChanged(const float* verts, int nverts,
- const int* tris, const float* trinorms, int ntris,
- const float* bmin, const float* bmax);
+ virtual void handleMeshChanged(class InputGeom* geom);
virtual bool handleBuild();
-
- virtual class dtNavMesh* getNavMesh() { return m_navMesh; }
};
diff --git a/RecastDemo/Include/Sample_SoloMeshTiled.h b/RecastDemo/Include/Sample_SoloMeshTiled.h
index 75fc1a98..d8e776aa 100644
--- a/RecastDemo/Include/Sample_SoloMeshTiled.h
+++ b/RecastDemo/Include/Sample_SoloMeshTiled.h
@@ -1,3 +1,21 @@
+//
+// Copyright (c) 2009 Mikko Mononen memon@inside.org
+//
+// This software is provided 'as-is', without any express or implied
+// warranty. In no event will the authors be held liable for any damages
+// arising from the use of this software.
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it
+// freely, subject to the following restrictions:
+// 1. The origin of this software must not be misrepresented; you must not
+// claim that you wrote the original software. If you use this software
+// in a product, an acknowledgment in the product documentation would be
+// appreciated but is not required.
+// 2. Altered source versions must be plainly marked as such, and must not be
+// misrepresented as being the original software.
+// 3. This notice may not be removed or altered from any source distribution.
+//
+
#ifndef RECASTSAMPLESOLOMESHTILED_H
#define RECASTSAMPLESOLOMESHTILED_H
@@ -10,8 +28,6 @@
class Sample_SoloMeshTiled : public Sample
{
protected:
- dtNavMesh* m_navMesh;
-
struct Tile
{
inline Tile() : chf(0), solid(0), cset(0), pmesh(0), dmesh(0), buildTime(0) {}
@@ -39,7 +55,6 @@ protected:
float m_tileSize;
rcBuildTimes m_buildTimes;
- rcChunkyTriMesh* m_chunkyMesh;
rcPolyMesh* m_pmesh;
rcPolyMeshDetail* m_dmesh;
rcConfig m_cfg;
@@ -87,12 +102,8 @@ public:
virtual void handleRender();
virtual void handleRenderOverlay(double* proj, double* model, int* view);
- virtual void handleMeshChanged(const float* verts, int nverts,
- const int* tris, const float* trinorms, int ntris,
- const float* bmin, const float* bmax);
+ virtual void handleMeshChanged(class InputGeom* geom);
virtual bool handleBuild();
-
- virtual class dtNavMesh* getNavMesh() { return m_navMesh; }
};
diff --git a/RecastDemo/Include/Sample_TileMesh.h b/RecastDemo/Include/Sample_TileMesh.h
index 7adcc4cb..f0ecb1dc 100644
--- a/RecastDemo/Include/Sample_TileMesh.h
+++ b/RecastDemo/Include/Sample_TileMesh.h
@@ -24,18 +24,14 @@
#include "Recast.h"
#include "RecastLog.h"
#include "ChunkyTriMesh.h"
-#include "NavMeshTesterTool.h"
class Sample_TileMesh : public Sample
{
protected:
-
bool m_keepInterResults;
bool m_buildAll;
rcBuildTimes m_buildTimes;
- dtNavMesh* m_navMesh;
- rcChunkyTriMesh* m_chunkyMesh;
unsigned char* m_triflags;
rcHeightfield* m_solid;
rcCompactHeightfield* m_chf;
@@ -68,12 +64,8 @@ public:
virtual void handleDebugMode();
virtual void handleRender();
virtual void handleRenderOverlay(double* proj, double* model, int* view);
- virtual void handleMeshChanged(const float* verts, int nverts,
- const int* tris, const float* trinorms, int ntris,
- const float* bmin, const float* bmax);
+ virtual void handleMeshChanged(class InputGeom* geom);
virtual bool handleBuild();
-
- virtual class dtNavMesh* getNavMesh() { return m_navMesh; }
void buildTile(const float* pos);
void removeTile(const float* pos);
diff --git a/RecastDemo/Source/ExtraLinkTool.cpp b/RecastDemo/Source/ExtraLinkTool.cpp
new file mode 100644
index 00000000..64191cde
--- /dev/null
+++ b/RecastDemo/Source/ExtraLinkTool.cpp
@@ -0,0 +1,176 @@
+//
+// Copyright (c) 2009 Mikko Mononen memon@inside.org
+//
+// This software is provided 'as-is', without any express or implied
+// warranty. In no event will the authors be held liable for any damages
+// arising from the use of this software.
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it
+// freely, subject to the following restrictions:
+// 1. The origin of this software must not be misrepresented; you must not
+// claim that you wrote the original software. If you use this software
+// in a product, an acknowledgment in the product documentation would be
+// appreciated but is not required.
+// 2. Altered source versions must be plainly marked as such, and must not be
+// misrepresented as being the original software.
+// 3. This notice may not be removed or altered from any source distribution.
+//
+
+#define _USE_MATH_DEFINES
+#include
+#include
+#include
+#include
+#include "SDL.h"
+#include "SDL_opengl.h"
+#include "imgui.h"
+#include "ExtraLinkTool.h"
+#include "InputGeom.h"
+#include "Sample.h"
+#include "Recast.h"
+#include "RecastDebugDraw.h"
+#include "DetourDebugDraw.h"
+
+#ifdef WIN32
+# define snprintf _snprintf
+#endif
+
+static void drawCross(const float* p, const float s, const float dy)
+{
+ glBegin(GL_LINES);
+ glVertex3f(p[0]-s,p[1]+dy,p[2]);
+ glVertex3f(p[0]+s,p[1]+dy,p[2]);
+ glVertex3f(p[0],p[1]-s+dy,p[2]);
+ glVertex3f(p[0],p[1]+s+dy,p[2]);
+ glVertex3f(p[0],p[1]+dy,p[2]-s);
+ glVertex3f(p[0],p[1]+dy,p[2]+s);
+ glEnd();
+}
+
+ExtraLinkTool::ExtraLinkTool() :
+ m_sample(0),
+ m_hitPosSet(0)
+{
+}
+
+ExtraLinkTool::~ExtraLinkTool()
+{
+}
+
+void ExtraLinkTool::init(Sample* sample)
+{
+ m_sample = sample;
+}
+
+void ExtraLinkTool::reset()
+{
+ m_hitPosSet = false;
+}
+
+void ExtraLinkTool::handleMenu()
+{
+ if (m_hitPosSet)
+ {
+ imguiValue("Click to set link start.");
+ }
+ else
+ {
+ imguiValue("Click to set link end.");
+ }
+}
+
+void ExtraLinkTool::handleClick(const float* p, bool shift)
+{
+ if (!m_sample) return;
+ InputGeom* geom = m_sample->getInputGeom();
+ if (!geom) return;
+
+ if (shift)
+ {
+ // Delete
+ float nearestDist = FLT_MAX;
+ int nearestIndex = -1;
+ for (int i = 0; i < geom->getExtraLinkCount(); ++i)
+ {
+ ExtraLink* link = geom->getExtraLink(i);
+ float d;
+ d = vdistSqr(p, link->spos);
+ if (d < nearestDist)
+ {
+ nearestDist = d;
+ nearestIndex = i;
+ }
+ d = vdistSqr(p, link->epos);
+ if (d < nearestDist)
+ {
+ nearestDist = d;
+ nearestIndex = i;
+ }
+ }
+
+ if (nearestIndex != -1 &&
+ sqrtf(nearestDist) < m_sample->getAgentRadius())
+ {
+ geom->deleteExtraLink(nearestIndex);
+ }
+ }
+ else
+ {
+ // Create
+ if (!m_hitPosSet)
+ {
+ vcopy(m_hitPos, p);
+ m_hitPosSet = true;
+ }
+ else
+ {
+ geom->addExtraLink(m_hitPos, p);
+ m_hitPosSet = false;
+ }
+ }
+
+}
+
+void ExtraLinkTool::handleRender()
+{
+ if (m_hitPosSet)
+ {
+ const float s = m_sample->getAgentRadius();
+ glColor4ub(0,0,0,128);
+ glLineWidth(2.0f);
+ drawCross(m_hitPos, s, 0.1f);
+ glLineWidth(1.0f);
+ }
+
+ const float s = m_sample->getAgentRadius();
+
+ InputGeom* geom = m_sample->getInputGeom();
+ if (!geom) return;
+
+ DebugDrawGL dd;
+ const float linkCol[4] = {1,1,1,0.75f};
+ for (int i = 0; i < geom->getExtraLinkCount(); ++i)
+ {
+ ExtraLink* link = geom->getExtraLink(i);
+
+ duDebugDrawArc(&dd, link->spos, link->epos, linkCol, 2.0f);
+
+ glLineWidth(2.0f);
+ glColor4ub(0,0,0,255);
+ drawCross(link->spos, s, 0.1f);
+ drawCross(link->epos, s, 0.1f);
+ glLineWidth(1.0f);
+ }
+}
+
+void ExtraLinkTool::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))
+ {
+ imguiDrawText((int)x, (int)(y-25), IMGUI_ALIGN_CENTER, "Start", imguiRGBA(0,0,0,220));
+ }
+}
diff --git a/RecastDemo/Source/InputGeom.cpp b/RecastDemo/Source/InputGeom.cpp
new file mode 100644
index 00000000..db538d57
--- /dev/null
+++ b/RecastDemo/Source/InputGeom.cpp
@@ -0,0 +1,173 @@
+//
+// Copyright (c) 2009 Mikko Mononen memon@inside.org
+//
+// This software is provided 'as-is', without any express or implied
+// warranty. In no event will the authors be held liable for any damages
+// arising from the use of this software.
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it
+// freely, subject to the following restrictions:
+// 1. The origin of this software must not be misrepresented; you must not
+// claim that you wrote the original software. If you use this software
+// in a product, an acknowledgment in the product documentation would be
+// appreciated but is not required.
+// 2. Altered source versions must be plainly marked as such, and must not be
+// misrepresented as being the original software.
+// 3. This notice may not be removed or altered from any source distribution.
+//
+
+#define _USE_MATH_DEFINES
+#include
+#include "Recast.h"
+#include "RecastLog.h"
+#include "InputGeom.h"
+#include "ChunkyTriMesh.h"
+#include "MeshLoaderObj.h"
+
+
+
+static bool intersectSegmentTriangle(const float* sp, const float* sq,
+ const float* a, const float* b, const float* c,
+ float &t)
+{
+ float v, w;
+ float ab[3], ac[3], qp[3], ap[3], norm[3], e[3];
+ vsub(ab, b, a);
+ vsub(ac, c, a);
+ vsub(qp, sp, sq);
+
+ // Compute triangle normal. Can be precalculated or cached if
+ // intersecting multiple segments against the same triangle
+ vcross(norm, ab, ac);
+
+ // Compute denominator d. If d <= 0, segment is parallel to or points
+ // away from triangle, so exit early
+ float d = vdot(qp, norm);
+ if (d <= 0.0f) return false;
+
+ // Compute intersection t value of pq with plane of triangle. A ray
+ // intersects iff 0 <= t. Segment intersects iff 0 <= t <= 1. Delay
+ // dividing by d until intersection has been found to pierce triangle
+ vsub(ap, sp, a);
+ t = vdot(ap, norm);
+ if (t < 0.0f) return false;
+ if (t > d) return false; // For segment; exclude this code line for a ray test
+
+ // Compute barycentric coordinate components and test if within bounds
+ vcross(e, qp, ap);
+ v = vdot(ac, e);
+ if (v < 0.0f || v > d) return false;
+ w = -vdot(ab, e);
+ if (w < 0.0f || v + w > d) return false;
+
+ // Segment/ray intersects triangle. Perform delayed division
+ t /= d;
+
+ return true;
+}
+
+
+
+InputGeom::InputGeom() :
+ m_chunkyMesh(0),
+ m_mesh(0),
+ m_nlinks(0)
+{
+}
+
+InputGeom::~InputGeom()
+{
+ delete m_chunkyMesh;
+ delete m_mesh;
+}
+
+bool InputGeom::loadMesh(const char* filepath)
+{
+ if (m_mesh)
+ {
+ delete m_chunkyMesh;
+ m_chunkyMesh = 0;
+ delete m_mesh;
+ m_mesh = 0;
+ m_nlinks = 0;
+ }
+
+ m_mesh = new rcMeshLoaderObj;
+ if (!m_mesh)
+ {
+ if (rcGetLog())
+ rcGetLog()->log(RC_LOG_ERROR, "loadMesh: Out of memory 'm_mesh'.");
+ return false;
+ }
+ if (!m_mesh->load(filepath))
+ {
+ if (rcGetLog())
+ rcGetLog()->log(RC_LOG_ERROR, "buildTiledNavigation: Could not load '%s'", filepath);
+ return false;
+ }
+
+ rcCalcBounds(m_mesh->getVerts(), m_mesh->getVertCount(), m_meshBMin, m_meshBMax);
+
+ m_chunkyMesh = new rcChunkyTriMesh;
+ if (!m_chunkyMesh)
+ {
+ if (rcGetLog())
+ rcGetLog()->log(RC_LOG_ERROR, "buildTiledNavigation: Out of memory 'm_chunkyMesh'.");
+ return false;
+ }
+ if (!rcCreateChunkyTriMesh(m_mesh->getVerts(), m_mesh->getTris(), m_mesh->getTriCount(), 256, m_chunkyMesh))
+ {
+ if (rcGetLog())
+ rcGetLog()->log(RC_LOG_ERROR, "buildTiledNavigation: Failed to build chunky mesh.");
+ return false;
+ }
+
+ return true;
+}
+
+bool InputGeom::raycastMesh(float* src, float* dst, float& tmin)
+{
+ float dir[3];
+ vsub(dir, dst, src);
+
+ int nt = m_mesh->getTriCount();
+ const float* verts = m_mesh->getVerts();
+ const float* normals = m_mesh->getNormals();
+ const int* tris = m_mesh->getTris();
+ tmin = 1.0f;
+ bool hit = false;
+
+ for (int i = 0; i < nt*3; i += 3)
+ {
+ const float* n = &normals[i];
+ if (vdot(dir, n) > 0)
+ continue;
+
+ float t = 1;
+ if (intersectSegmentTriangle(src, dst,
+ &verts[tris[i]*3],
+ &verts[tris[i+1]*3],
+ &verts[tris[i+2]*3], t))
+ {
+ if (t < tmin)
+ tmin = t;
+ hit = true;
+ }
+ }
+
+ return hit;
+}
+
+void InputGeom::addExtraLink(const float* spos, const float* epos)
+{
+ if (m_nlinks >= MAX_LINKS) return;
+ ExtraLink* link = &m_links[m_nlinks++];
+ vcopy(link->spos, spos);
+ vcopy(link->epos, epos);
+}
+
+void InputGeom::deleteExtraLink(int i)
+{
+ m_nlinks--;
+ m_links[i] = m_links[m_nlinks];
+}
diff --git a/RecastDemo/Source/NavMeshTesterTool.cpp b/RecastDemo/Source/NavMeshTesterTool.cpp
index 6e6b68cf..4fbed966 100644
--- a/RecastDemo/Source/NavMeshTesterTool.cpp
+++ b/RecastDemo/Source/NavMeshTesterTool.cpp
@@ -1,3 +1,21 @@
+//
+// Copyright (c) 2009 Mikko Mononen memon@inside.org
+//
+// This software is provided 'as-is', without any express or implied
+// warranty. In no event will the authors be held liable for any damages
+// arising from the use of this software.
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it
+// freely, subject to the following restrictions:
+// 1. The origin of this software must not be misrepresented; you must not
+// claim that you wrote the original software. If you use this software
+// in a product, an acknowledgment in the product documentation would be
+// appreciated but is not required.
+// 2. Altered source versions must be plainly marked as such, and must not be
+// misrepresented as being the original software.
+// 3. This notice may not be removed or altered from any source distribution.
+//
+
#define _USE_MATH_DEFINES
#include
#include
diff --git a/RecastDemo/Source/Sample.cpp b/RecastDemo/Source/Sample.cpp
index 50154c8c..4789e956 100644
--- a/RecastDemo/Source/Sample.cpp
+++ b/RecastDemo/Source/Sample.cpp
@@ -1,7 +1,26 @@
+//
+// Copyright (c) 2009 Mikko Mononen memon@inside.org
+//
+// This software is provided 'as-is', without any express or implied
+// warranty. In no event will the authors be held liable for any damages
+// arising from the use of this software.
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it
+// freely, subject to the following restrictions:
+// 1. The origin of this software must not be misrepresented; you must not
+// claim that you wrote the original software. If you use this software
+// in a product, an acknowledgment in the product documentation would be
+// appreciated but is not required.
+// 2. Altered source versions must be plainly marked as such, and must not be
+// misrepresented as being the original software.
+// 3. This notice may not be removed or altered from any source distribution.
+//
+
#define _USE_MATH_DEFINES
#include
#include
#include "Sample.h"
+#include "InputGeom.h"
#include "Recast.h"
#include "RecastDebugDraw.h"
#include "imgui.h"
@@ -55,11 +74,8 @@ void DebugDrawGL::end()
Sample::Sample() :
- m_verts(0),
- m_nverts(0),
- m_tris(0),
- m_trinorms(0),
- m_ntris(0),
+ m_geom(0),
+ m_navMesh(0),
m_tool(0)
{
resetCommonSettings();
@@ -67,6 +83,7 @@ Sample::Sample() :
Sample::~Sample()
{
+ delete m_navMesh;
delete m_tool;
}
@@ -92,33 +109,28 @@ void Sample::handleDebugMode()
void Sample::handleRender()
{
- if (!m_verts || !m_tris || !m_trinorms)
+ if (!m_geom)
return;
DebugDrawGL dd;
// Draw mesh
- duDebugDrawTriMesh(&dd, m_verts, m_nverts, m_tris, m_trinorms, m_ntris, 0);
+ duDebugDrawTriMesh(&dd, m_geom->getMesh()->getVerts(), m_geom->getMesh()->getVertCount(),
+ m_geom->getMesh()->getTris(), m_geom->getMesh()->getNormals(), m_geom->getMesh()->getTriCount(), 0);
// Draw bounds
+ const float* bmin = m_geom->getMeshBoundsMin();
+ const float* bmax = m_geom->getMeshBoundsMax();
float col[4] = {1,1,1,0.5f};
- duDebugDrawBoxWire(&dd, m_bmin[0],m_bmin[1],m_bmin[2], m_bmax[0],m_bmax[1],m_bmax[2], col);
+ duDebugDrawBoxWire(&dd, bmin[0],bmin[1],bmin[2], bmax[0],bmax[1],bmax[2], col);
}
void Sample::handleRenderOverlay(double* proj, double* model, int* view)
{
}
-void Sample::handleMeshChanged(const float* verts, int nverts,
- const int* tris, const float* trinorms, int ntris,
- const float* bmin, const float* bmax)
+void Sample::handleMeshChanged(InputGeom* geom)
{
- m_verts = verts;
- m_nverts = nverts;
- m_tris = tris;
- m_trinorms = trinorms;
- m_ntris = ntris;
- vcopy(m_bmin, bmin);
- vcopy(m_bmax, bmax);
+ m_geom = geom;
}
void Sample::resetCommonSettings()
@@ -144,11 +156,16 @@ void Sample::handleCommonSettings()
imguiSlider("Cell Size", &m_cellSize, 0.1f, 1.0f, 0.01f);
imguiSlider("Cell Height", &m_cellHeight, 0.1f, 1.0f, 0.01f);
- int gw = 0, gh = 0;
- rcCalcGridSize(m_bmin, m_bmax, m_cellSize, &gw, &gh);
- char text[64];
- snprintf(text, 64, "Voxels %d x %d", gw, gh);
- imguiValue(text);
+ if (m_geom)
+ {
+ const float* bmin = m_geom->getMeshBoundsMin();
+ const float* bmax = m_geom->getMeshBoundsMax();
+ int gw = 0, gh = 0;
+ rcCalcGridSize(bmin, bmax, m_cellSize, &gw, &gh);
+ char text[64];
+ snprintf(text, 64, "Voxels %d x %d", gw, gh);
+ imguiValue(text);
+ }
imguiSeparator();
imguiLabel("Agent");
diff --git a/RecastDemo/Source/Sample_SoloMeshSimple.cpp b/RecastDemo/Source/Sample_SoloMeshSimple.cpp
index b5dc99e8..dcafe3d9 100644
--- a/RecastDemo/Source/Sample_SoloMeshSimple.cpp
+++ b/RecastDemo/Source/Sample_SoloMeshSimple.cpp
@@ -1,3 +1,21 @@
+//
+// Copyright (c) 2009 Mikko Mononen memon@inside.org
+//
+// This software is provided 'as-is', without any express or implied
+// warranty. In no event will the authors be held liable for any damages
+// arising from the use of this software.
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it
+// freely, subject to the following restrictions:
+// 1. The origin of this software must not be misrepresented; you must not
+// claim that you wrote the original software. If you use this software
+// in a product, an acknowledgment in the product documentation would be
+// appreciated but is not required.
+// 2. Altered source versions must be plainly marked as such, and must not be
+// misrepresented as being the original software.
+// 3. This notice may not be removed or altered from any source distribution.
+//
+
#define _USE_MATH_DEFINES
#include
#include
@@ -5,6 +23,7 @@
#include "SDL.h"
#include "SDL_opengl.h"
#include "imgui.h"
+#include "InputGeom.h"
#include "Sample.h"
#include "Sample_SoloMeshSimple.h"
#include "Recast.h"
@@ -15,6 +34,7 @@
#include "DetourNavMeshBuilder.h"
#include "DetourDebugDraw.h"
#include "NavMeshTesterTool.h"
+#include "ExtraLinkTool.h"
#ifdef WIN32
# define snprintf _snprintf
@@ -22,7 +42,6 @@
Sample_SoloMeshSimple::Sample_SoloMeshSimple() :
- m_navMesh(0),
m_keepInterResults(false),
m_triflags(0),
m_solid(0),
@@ -70,6 +89,19 @@ void Sample_SoloMeshSimple::handleSettings()
void Sample_SoloMeshSimple::handleTools()
{
+ int type = !m_tool ? TOOL_NONE : m_tool->type();
+
+ if (imguiCheck("Test Navmesh", type == TOOL_NAVMESH_TESTER))
+ {
+ setTool(new NavMeshTesterTool);
+ }
+ if (imguiCheck("Create Extra Links", type == TOOL_EXTRA_LINK))
+ {
+ setTool(new ExtraLinkTool);
+ }
+
+ imguiSeparator();
+
if (m_tool)
m_tool->handleMenu();
}
@@ -81,7 +113,7 @@ void Sample_SoloMeshSimple::handleDebugMode()
for (int i = 0; i < MAX_DRAWMODE; ++i)
valid[i] = false;
- if (m_verts && m_tris)
+ if (m_geom)
{
valid[DRAWMODE_NAVMESH] = m_navMesh != 0;
valid[DRAWMODE_NAVMESH_TRANS] = m_navMesh != 0;
@@ -151,7 +183,7 @@ void Sample_SoloMeshSimple::handleDebugMode()
void Sample_SoloMeshSimple::handleRender()
{
- if (!m_verts || !m_tris || !m_trinorms)
+ if (!m_geom || !m_geom->getMesh())
return;
float col[4];
@@ -164,20 +196,25 @@ void Sample_SoloMeshSimple::handleRender()
if (m_drawMode == DRAWMODE_MESH)
{
// Draw mesh
- duDebugDrawTriMeshSlope(&dd, m_verts, m_nverts, m_tris, m_trinorms, m_ntris, m_agentMaxSlope);
+ duDebugDrawTriMeshSlope(&dd, m_geom->getMesh()->getVerts(), m_geom->getMesh()->getVertCount(),
+ m_geom->getMesh()->getTris(), m_geom->getMesh()->getNormals(), m_geom->getMesh()->getTriCount(),
+ m_agentMaxSlope);
}
else if (m_drawMode != DRAWMODE_NAVMESH_TRANS)
{
// Draw mesh
- duDebugDrawTriMesh(&dd, m_verts, m_nverts, m_tris, m_trinorms, m_ntris, 0);
+ duDebugDrawTriMesh(&dd, m_geom->getMesh()->getVerts(), m_geom->getMesh()->getVertCount(),
+ m_geom->getMesh()->getTris(), m_geom->getMesh()->getNormals(), m_geom->getMesh()->getTriCount(), 0);
}
glDisable(GL_FOG);
glDepthMask(GL_FALSE);
// Draw bounds
+ const float* bmin = m_geom->getMeshBoundsMin();
+ const float* bmax = m_geom->getMeshBoundsMax();
col[0] = 1; col[1] = 1; col[2] = 1; col[3] = 0.5f;
- duDebugDrawBoxWire(&dd, m_bmin[0],m_bmin[1],m_bmin[2], m_bmax[0],m_bmax[1],m_bmax[2], col);
+ duDebugDrawBoxWire(&dd, bmin[0],bmin[1],bmin[2], bmax[0],bmax[1],bmax[2], col);
if (m_navMesh &&
(m_drawMode == DRAWMODE_NAVMESH ||
@@ -271,11 +308,9 @@ void Sample_SoloMeshSimple::handleRenderOverlay(double* proj, double* model, int
m_tool->handleRenderOverlay(proj, model, view);
}
-void Sample_SoloMeshSimple::handleMeshChanged(const float* verts, int nverts,
- const int* tris, const float* trinorms, int ntris,
- const float* bmin, const float* bmax)
+void Sample_SoloMeshSimple::handleMeshChanged(class InputGeom* geom)
{
- Sample::handleMeshChanged(verts, nverts, tris, trinorms, ntris, bmin, bmax);
+ Sample::handleMeshChanged(geom);
delete m_navMesh;
m_navMesh = 0;
if (m_tool)
@@ -287,7 +322,7 @@ void Sample_SoloMeshSimple::handleMeshChanged(const float* verts, int nverts,
bool Sample_SoloMeshSimple::handleBuild()
{
- if (!m_verts || ! m_tris)
+ if (!m_geom || !m_geom->getMesh())
{
if (rcGetLog())
rcGetLog()->log(RC_LOG_ERROR, "buildNavigation: Input mesh is not specified.");
@@ -296,6 +331,13 @@ bool Sample_SoloMeshSimple::handleBuild()
cleanup();
+ const float* bmin = m_geom->getMeshBoundsMin();
+ const float* bmax = m_geom->getMeshBoundsMin();
+ const float* verts = m_geom->getMesh()->getVerts();
+ const int nverts = m_geom->getMesh()->getVertCount();
+ const int* tris = m_geom->getMesh()->getTris();
+ const int ntris = m_geom->getMesh()->getTriCount();
+
//
// Step 1. Initialize build config.
//
@@ -319,8 +361,8 @@ bool Sample_SoloMeshSimple::handleBuild()
// Set the area where the navigation will be build.
// Here the bounds of the input mesh are used, but the
// area could be specified by an user defined box, etc.
- vcopy(m_cfg.bmin, m_bmin);
- vcopy(m_cfg.bmax, m_bmax);
+ vcopy(m_cfg.bmin, bmin);
+ vcopy(m_cfg.bmax, bmax);
rcCalcGridSize(m_cfg.bmin, m_cfg.bmax, m_cfg.cs, &m_cfg.width, &m_cfg.height);
// Reset build times gathering.
@@ -334,7 +376,7 @@ bool Sample_SoloMeshSimple::handleBuild()
{
rcGetLog()->log(RC_LOG_PROGRESS, "Building navigation:");
rcGetLog()->log(RC_LOG_PROGRESS, " - %d x %d cells", m_cfg.width, m_cfg.height);
- rcGetLog()->log(RC_LOG_PROGRESS, " - %.1fK verts, %.1fK tris", m_nverts/1000.0f, m_ntris/1000.0f);
+ rcGetLog()->log(RC_LOG_PROGRESS, " - %.1fK verts, %.1fK tris", nverts/1000.0f, ntris/1000.0f);
}
//
@@ -359,20 +401,20 @@ bool Sample_SoloMeshSimple::handleBuild()
// Allocate array that can hold triangle flags.
// If you have multiple meshes you need to process, allocate
// and array which can hold the max number of triangles you need to process.
- m_triflags = new unsigned char[m_ntris];
+ m_triflags = new unsigned char[ntris];
if (!m_triflags)
{
if (rcGetLog())
- rcGetLog()->log(RC_LOG_ERROR, "buildNavigation: Out of memory 'triangleFlags' (%d).", m_ntris);
+ rcGetLog()->log(RC_LOG_ERROR, "buildNavigation: Out of memory 'triangleFlags' (%d).", ntris);
return false;
}
// Find triangles which are walkable based on their slope and rasterize them.
// If your input data is multiple meshes, you can transform them here, calculate
// the flags for each of the meshes and rasterize them.
- memset(m_triflags, 0, m_ntris*sizeof(unsigned char));
- rcMarkWalkableTriangles(m_cfg.walkableSlopeAngle, m_verts, m_nverts, m_tris, m_ntris, m_triflags);
- rcRasterizeTriangles(m_verts, m_nverts, m_tris, m_triflags, m_ntris, *m_solid);
+ memset(m_triflags, 0, ntris*sizeof(unsigned char));
+ rcMarkWalkableTriangles(m_cfg.walkableSlopeAngle, verts, nverts, tris, ntris, m_triflags);
+ rcRasterizeTriangles(verts, nverts, tris, m_triflags, ntris, *m_solid);
if (!m_keepInterResults)
{
diff --git a/RecastDemo/Source/Sample_SoloMeshTiled.cpp b/RecastDemo/Source/Sample_SoloMeshTiled.cpp
index 9757204f..c7bd0460 100644
--- a/RecastDemo/Source/Sample_SoloMeshTiled.cpp
+++ b/RecastDemo/Source/Sample_SoloMeshTiled.cpp
@@ -1,3 +1,21 @@
+//
+// Copyright (c) 2009 Mikko Mononen memon@inside.org
+//
+// This software is provided 'as-is', without any express or implied
+// warranty. In no event will the authors be held liable for any damages
+// arising from the use of this software.
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it
+// freely, subject to the following restrictions:
+// 1. The origin of this software must not be misrepresented; you must not
+// claim that you wrote the original software. If you use this software
+// in a product, an acknowledgment in the product documentation would be
+// appreciated but is not required.
+// 2. Altered source versions must be plainly marked as such, and must not be
+// misrepresented as being the original software.
+// 3. This notice may not be removed or altered from any source distribution.
+//
+
#define _USE_MATH_DEFINES
#include
#include
@@ -5,6 +23,7 @@
#include "SDL.h"
#include "SDL_opengl.h"
#include "imgui.h"
+#include "InputGeom.h"
#include "Sample.h"
#include "Sample_SoloMeshTiled.h"
#include "Recast.h"
@@ -14,17 +33,16 @@
#include "DetourNavMeshBuilder.h"
#include "DetourDebugDraw.h"
#include "NavMeshTesterTool.h"
+#include "ExtraLinkTool.h"
#ifdef WIN32
# define snprintf _snprintf
#endif
Sample_SoloMeshTiled::Sample_SoloMeshTiled() :
- m_navMesh(0),
m_measurePerTileTimings(false),
m_keepInterResults(false),
m_tileSize(64),
- m_chunkyMesh(0),
m_pmesh(0),
m_dmesh(0),
m_tileSet(0),
@@ -42,8 +60,6 @@ Sample_SoloMeshTiled::~Sample_SoloMeshTiled()
void Sample_SoloMeshTiled::cleanup()
{
- delete m_chunkyMesh;
- m_chunkyMesh = 0;
delete m_tileSet;
m_tileSet = 0;
delete m_pmesh;
@@ -63,14 +79,19 @@ void Sample_SoloMeshTiled::handleSettings()
imguiLabel("Tiling");
imguiSlider("TileSize", &m_tileSize, 16.0f, 1024.0f, 16.0f);
- char text[64];
- int gw = 0, gh = 0;
- rcCalcGridSize(m_bmin, m_bmax, m_cellSize, &gw, &gh);
- const int ts = (int)m_tileSize;
- const int tw = (gw + ts-1) / ts;
- const int th = (gh + ts-1) / ts;
- snprintf(text, 64, "Tiles %d x %d", tw, th);
- imguiValue(text);
+ if (m_geom)
+ {
+ const float* bmin = m_geom->getMeshBoundsMin();
+ const float* bmax = m_geom->getMeshBoundsMax();
+ char text[64];
+ int gw = 0, gh = 0;
+ rcCalcGridSize(bmin, bmax, m_cellSize, &gw, &gh);
+ const int ts = (int)m_tileSize;
+ const int tw = (gw + ts-1) / ts;
+ const int th = (gh + ts-1) / ts;
+ snprintf(text, 64, "Tiles %d x %d", tw, th);
+ imguiValue(text);
+ }
imguiSeparator();
if (imguiCheck("Keep Itermediate Results", m_keepInterResults))
@@ -83,6 +104,19 @@ void Sample_SoloMeshTiled::handleSettings()
void Sample_SoloMeshTiled::handleTools()
{
+ int type = !m_tool ? TOOL_NONE : m_tool->type();
+
+ if (imguiCheck("Test Navmesh", type == TOOL_NAVMESH_TESTER))
+ {
+ setTool(new NavMeshTesterTool);
+ }
+ if (imguiCheck("Create Extra Links", type == TOOL_EXTRA_LINK))
+ {
+ setTool(new ExtraLinkTool);
+ }
+
+ imguiSeparator();
+
if (m_tool)
m_tool->handleMenu();
}
@@ -113,7 +147,7 @@ void Sample_SoloMeshTiled::handleDebugMode()
if (m_pmesh) hasPmesh = true;
if (m_dmesh) hasDmesh = true;
- if (m_verts && m_tris)
+ if (m_geom)
{
valid[DRAWMODE_NAVMESH] = m_navMesh != 0;
valid[DRAWMODE_NAVMESH_TRANS] = m_navMesh != 0;
@@ -183,7 +217,7 @@ void Sample_SoloMeshTiled::handleDebugMode()
void Sample_SoloMeshTiled::handleRender()
{
- if (!m_verts || !m_tris || !m_trinorms)
+ if (!m_geom || !m_geom->getMesh())
return;
float col[4];
@@ -196,25 +230,30 @@ void Sample_SoloMeshTiled::handleRender()
if (m_drawMode == DRAWMODE_MESH)
{
// Draw mesh
- duDebugDrawTriMeshSlope(&dd, m_verts, m_nverts, m_tris, m_trinorms, m_ntris, m_agentMaxSlope);
+ duDebugDrawTriMeshSlope(&dd, m_geom->getMesh()->getVerts(), m_geom->getMesh()->getVertCount(),
+ m_geom->getMesh()->getTris(), m_geom->getMesh()->getNormals(), m_geom->getMesh()->getTriCount(),
+ m_agentMaxSlope);
}
else if (m_drawMode != DRAWMODE_NAVMESH_TRANS)
{
// Draw mesh
- duDebugDrawTriMesh(&dd, m_verts, m_nverts, m_tris, m_trinorms, m_ntris, 0);
+ duDebugDrawTriMesh(&dd, m_geom->getMesh()->getVerts(), m_geom->getMesh()->getVertCount(),
+ m_geom->getMesh()->getTris(), m_geom->getMesh()->getNormals(), m_geom->getMesh()->getTriCount(), 0);
}
glDisable(GL_FOG);
glDepthMask(GL_FALSE);
// Draw bounds
+ const float* bmin = m_geom->getMeshBoundsMin();
+ const float* bmax = m_geom->getMeshBoundsMax();
col[0] = 1; col[1] = 1; col[2] = 1; col[3] = 0.5f;
- duDebugDrawBoxWire(&dd, m_bmin[0],m_bmin[1],m_bmin[2], m_bmax[0],m_bmax[1],m_bmax[2], col);
+ duDebugDrawBoxWire(&dd, bmin[0],bmin[1],bmin[2], bmax[0],bmax[1],bmax[2], col);
// Tiling grid.
const int ts = (int)m_tileSize;
int gw = 0, gh = 0;
- rcCalcGridSize(m_bmin, m_bmax, m_cellSize, &gw, &gh);
+ rcCalcGridSize(bmin, bmax, m_cellSize, &gw, &gh);
int tw = (gw + ts-1) / ts;
int th = (gh + ts-1) / ts;
const float s = ts*m_cellSize;
@@ -225,9 +264,9 @@ void Sample_SoloMeshTiled::handleRender()
for (int x = 0; x < tw; ++x)
{
float fx, fy, fz;
- fx = m_bmin[0] + x*s;
- fy = m_bmin[1];
- fz = m_bmin[2] + y*s;
+ fx = bmin[0] + x*s;
+ fy = bmin[1];
+ fz = bmin[2] + y*s;
glVertex3f(fx,fy,fz);
glVertex3f(fx+s,fy,fz);
@@ -543,11 +582,9 @@ void Sample_SoloMeshTiled::handleRenderOverlay(double* proj, double* model, int*
m_tool->handleRenderOverlay(proj, model, view);
}
-void Sample_SoloMeshTiled::handleMeshChanged(const float* verts, int nverts,
- const int* tris, const float* trinorms, int ntris,
- const float* bmin, const float* bmax)
+void Sample_SoloMeshTiled::handleMeshChanged(class InputGeom* geom)
{
- Sample::handleMeshChanged(verts, nverts, tris, trinorms, ntris, bmin, bmax);
+ Sample::handleMeshChanged(geom);
m_statTimePerTileSamples = 0;
m_statPolysPerTileSamples = 0;
if (m_tool)
@@ -559,7 +596,7 @@ void Sample_SoloMeshTiled::handleMeshChanged(const float* verts, int nverts,
bool Sample_SoloMeshTiled::handleBuild()
{
- if (!m_verts || ! m_tris)
+ if (!m_geom || !m_geom->getMesh() || !m_geom->getChunkyMesh())
{
if (rcGetLog())
rcGetLog()->log(RC_LOG_ERROR, "buildNavigation: Input mesh is not specified.");
@@ -576,6 +613,13 @@ bool Sample_SoloMeshTiled::handleBuild()
cleanup();
+ const float* bmin = m_geom->getMeshBoundsMin();
+ const float* bmax = m_geom->getMeshBoundsMin();
+ const float* verts = m_geom->getMesh()->getVerts();
+ const int nverts = m_geom->getMesh()->getVertCount();
+ const int ntris = m_geom->getMesh()->getTriCount();
+ const rcChunkyTriMesh* chunkyMesh = m_geom->getChunkyMesh();
+
// Init build configuration from GUI
memset(&m_cfg, 0, sizeof(m_cfg));
m_cfg.cs = m_cellSize;
@@ -597,8 +641,8 @@ bool Sample_SoloMeshTiled::handleBuild()
// Set the area where the navigation will be build.
// Here the bounds of the input mesh are used, but the
// area could be specified by an user defined box, etc.
- vcopy(m_cfg.bmin, m_bmin);
- vcopy(m_cfg.bmax, m_bmax);
+ vcopy(m_cfg.bmin, bmin);
+ vcopy(m_cfg.bmax, bmax);
rcCalcGridSize(m_cfg.bmin, m_cfg.bmax, m_cfg.cs, &m_cfg.width, &m_cfg.height);
// Reset build times gathering.
@@ -629,30 +673,13 @@ bool Sample_SoloMeshTiled::handleBuild()
rcGetLog()->log(RC_LOG_ERROR, "buildTiledNavigation: Out of memory 'tileSet->tiles' (%d).", m_tileSet->height * m_tileSet->width);
return false;
}
-
- // Build chunky trimesh for local polygon queries.
- rcTimeVal chunkyStartTime = rcGetPerformanceTimer();
- m_chunkyMesh = new rcChunkyTriMesh;
- if (!m_chunkyMesh)
- {
- if (rcGetLog())
- rcGetLog()->log(RC_LOG_ERROR, "buildTiledNavigation: Out of memory 'm_chunkyMesh'.");
- return false;
- }
- if (!rcCreateChunkyTriMesh(m_verts, m_tris, m_ntris, 256, m_chunkyMesh))
- {
- if (rcGetLog())
- rcGetLog()->log(RC_LOG_ERROR, "buildTiledNavigation: Could not build chunky mesh.");
- return false;
- }
- rcTimeVal chunkyEndTime = rcGetPerformanceTimer();
if (rcGetLog())
{
rcGetLog()->log(RC_LOG_PROGRESS, "Building navigation:");
rcGetLog()->log(RC_LOG_PROGRESS, " - %d x %d cells", m_cfg.width, m_cfg.height);
rcGetLog()->log(RC_LOG_PROGRESS, " - %d x %d tiles", m_tileSet->width, m_tileSet->height);
- rcGetLog()->log(RC_LOG_PROGRESS, " - %.1f verts, %.1f tris", m_nverts/1000.0f, m_ntris/1000.0f);
+ rcGetLog()->log(RC_LOG_PROGRESS, " - %.1f verts, %.1f tris", nverts/1000.0f, ntris/1000.0f);
}
// Initialize per tile config.
@@ -662,11 +689,14 @@ bool Sample_SoloMeshTiled::handleBuild()
tileCfg.height = m_cfg.tileSize + m_cfg.borderSize*2;
// Allocate array that can hold triangle flags for all geom chunks.
- unsigned char* triangleFlags = new unsigned char[m_chunkyMesh->maxTrisPerChunk];
+ unsigned char* triangleFlags = new unsigned char[chunkyMesh->maxTrisPerChunk];
if (!triangleFlags)
{
if (rcGetLog())
- rcGetLog()->log(RC_LOG_ERROR, "buildTiledNavigation: Out of memory 'triangleFlags' (%d).", m_chunkyMesh->maxTrisPerChunk);
+ {
+ rcGetLog()->log(RC_LOG_ERROR, "buildTiledNavigation: Out of memory 'triangleFlags' (%d).",
+ chunkyMesh->maxTrisPerChunk);
+ }
return false;
}
@@ -699,7 +729,7 @@ bool Sample_SoloMeshTiled::handleBuild()
tbmax[0] = tileCfg.bmax[0];
tbmax[1] = tileCfg.bmax[2];
int cid[256];// TODO: Make grow when returning too many items.
- const int ncid = rcGetChunksInRect(m_chunkyMesh, tbmin, tbmax, cid, 256);
+ const int ncid = rcGetChunksInRect(chunkyMesh, tbmin, tbmax, cid, 256);
if (!ncid)
continue;
@@ -719,15 +749,15 @@ bool Sample_SoloMeshTiled::handleBuild()
for (int i = 0; i < ncid; ++i)
{
- const rcChunkyTriMeshNode& node = m_chunkyMesh->nodes[cid[i]];
- const int* tris = &m_chunkyMesh->tris[node.i*3];
+ const rcChunkyTriMeshNode& node = chunkyMesh->nodes[cid[i]];
+ const int* tris = &chunkyMesh->tris[node.i*3];
const int ntris = node.n;
memset(triangleFlags, 0, ntris*sizeof(unsigned char));
rcMarkWalkableTriangles(tileCfg.walkableSlopeAngle,
- m_verts, m_nverts, tris, ntris, triangleFlags);
+ verts, nverts, tris, ntris, triangleFlags);
- rcRasterizeTriangles(m_verts, m_nverts, tris, triangleFlags, ntris, *solid);
+ rcRasterizeTriangles(verts, nverts, tris, triangleFlags, ntris, *solid);
}
rcFilterLedgeSpans(tileCfg.walkableHeight, tileCfg.walkableClimb, *solid);
@@ -756,7 +786,8 @@ bool Sample_SoloMeshTiled::handleBuild()
continue;
}
- if (!rcBuildRegions(*chf, tileCfg.walkableRadius, tileCfg.borderSize, tileCfg.minRegionSize, tileCfg.mergeRegionSize))
+ if (!rcBuildRegions(*chf, tileCfg.walkableRadius, tileCfg.borderSize,
+ tileCfg.minRegionSize, tileCfg.mergeRegionSize))
{
if (rcGetLog())
rcGetLog()->log(RC_LOG_ERROR, "buildTiledNavigation: [%d,%d] Could not build regions.", x, y);
@@ -958,8 +989,6 @@ bool Sample_SoloMeshTiled::handleBuild()
{
const float pc = 100.0f / rcGetDeltaTimeUsec(totStartTime, totEndTime);
- rcGetLog()->log(RC_LOG_PROGRESS, "Chunky Mesh: %.1fms (%.1f%%)", rcGetDeltaTimeUsec(chunkyStartTime, chunkyEndTime)/1000.0f, rcGetDeltaTimeUsec(chunkyStartTime, chunkyEndTime)*pc);
-
rcGetLog()->log(RC_LOG_PROGRESS, "Rasterize: %.1fms (%.1f%%)", m_buildTimes.rasterizeTriangles/1000.0f, m_buildTimes.rasterizeTriangles*pc);
rcGetLog()->log(RC_LOG_PROGRESS, "Build Compact: %.1fms (%.1f%%)", m_buildTimes.buildCompact/1000.0f, m_buildTimes.buildCompact*pc);
diff --git a/RecastDemo/Source/Sample_TileMesh.cpp b/RecastDemo/Source/Sample_TileMesh.cpp
index 08854d65..e056f3a9 100644
--- a/RecastDemo/Source/Sample_TileMesh.cpp
+++ b/RecastDemo/Source/Sample_TileMesh.cpp
@@ -23,6 +23,7 @@
#include "SDL.h"
#include "SDL_opengl.h"
#include "imgui.h"
+#include "InputGeom.h"
#include "Sample.h"
#include "Sample_TileMesh.h"
#include "Recast.h"
@@ -31,6 +32,8 @@
#include "DetourNavMesh.h"
#include "DetourNavMeshBuilder.h"
#include "DetourDebugDraw.h"
+#include "NavMeshTesterTool.h"
+#include "ExtraLinkTool.h"
#ifdef WIN32
# define snprintf _snprintf
@@ -150,8 +153,6 @@ public:
Sample_TileMesh::Sample_TileMesh() :
m_keepInterResults(false),
m_buildAll(true),
- m_navMesh(0),
- m_chunkyMesh(0),
m_triflags(0),
m_solid(0),
m_chf(0),
@@ -175,8 +176,6 @@ Sample_TileMesh::Sample_TileMesh() :
Sample_TileMesh::~Sample_TileMesh()
{
cleanup();
- delete m_navMesh;
- delete m_chunkyMesh;
}
void Sample_TileMesh::cleanup()
@@ -193,6 +192,8 @@ void Sample_TileMesh::cleanup()
m_pmesh = 0;
delete m_dmesh;
m_dmesh = 0;
+ delete m_navMesh;
+ m_navMesh = 0;
}
void Sample_TileMesh::handleSettings()
@@ -208,39 +209,53 @@ void Sample_TileMesh::handleSettings()
imguiLabel("Tiling");
imguiSlider("TileSize", &m_tileSize, 16.0f, 1024.0f, 16.0f);
- char text[64];
- int gw = 0, gh = 0;
- rcCalcGridSize(m_bmin, m_bmax, m_cellSize, &gw, &gh);
- const int ts = (int)m_tileSize;
- const int tw = (gw + ts-1) / ts;
- const int th = (gh + ts-1) / ts;
- snprintf(text, 64, "Tiles %d x %d", tw, th);
- imguiValue(text);
+ if (m_geom)
+ {
+ const float* bmin = m_geom->getMeshBoundsMin();
+ const float* bmax = m_geom->getMeshBoundsMax();
+ char text[64];
+ int gw = 0, gh = 0;
+ rcCalcGridSize(bmin, bmax, m_cellSize, &gw, &gh);
+ const int ts = (int)m_tileSize;
+ const int tw = (gw + ts-1) / ts;
+ const int th = (gh + ts-1) / ts;
+ snprintf(text, 64, "Tiles %d x %d", tw, th);
+ imguiValue(text);
- // Max tiles and max polys affect how the tile IDs are caculated.
- // There are 22 bits available for identifying a tile and a polygon.
- int tileBits = rcMin((int)ilog2(nextPow2(tw*th)), 14);
- if (tileBits > 14) tileBits = 14;
- int polyBits = 22 - tileBits;
- m_maxTiles = 1 << tileBits;
- m_maxPolysPerTile = 1 << polyBits;
- snprintf(text, 64, "Max Tiles %d", m_maxTiles);
- imguiValue(text);
- snprintf(text, 64, "Max Polys %d", m_maxPolysPerTile);
- imguiValue(text);
+ // Max tiles and max polys affect how the tile IDs are caculated.
+ // There are 22 bits available for identifying a tile and a polygon.
+ int tileBits = rcMin((int)ilog2(nextPow2(tw*th)), 14);
+ if (tileBits > 14) tileBits = 14;
+ int polyBits = 22 - tileBits;
+ m_maxTiles = 1 << tileBits;
+ m_maxPolysPerTile = 1 << polyBits;
+ snprintf(text, 64, "Max Tiles %d", m_maxTiles);
+ imguiValue(text);
+ snprintf(text, 64, "Max Polys %d", m_maxPolysPerTile);
+ imguiValue(text);
+ }
+ else
+ {
+ m_maxTiles = 0;
+ m_maxPolysPerTile = 0;
+ }
}
void Sample_TileMesh::handleTools()
{
int type = !m_tool ? TOOL_NONE : m_tool->type();
+ if (imguiCheck("Test Navmesh", type == TOOL_NAVMESH_TESTER))
+ {
+ setTool(new NavMeshTesterTool);
+ }
if (imguiCheck("Create Tiles", type == TOOL_TILE_EDIT))
{
setTool(new NavMeshTileTool);
}
- if (imguiCheck("Test Navmesh", type == TOOL_NAVMESH_TESTER))
+ if (imguiCheck("Create Extra Links", type == TOOL_EXTRA_LINK))
{
- setTool(new NavMeshTesterTool);
+ setTool(new ExtraLinkTool);
}
imguiSeparator();
@@ -288,24 +303,27 @@ static void getPolyCenter(dtNavMesh* navMesh, dtPolyRef ref, float* center)
void Sample_TileMesh::handleRender()
{
- if (!m_verts || !m_tris || !m_trinorms)
+ if (!m_geom || !m_geom->getMesh())
return;
DebugDrawGL dd;
// Draw mesh
- duDebugDrawTriMesh(&dd, m_verts, m_nverts, m_tris, m_trinorms, m_ntris, 0);
+ duDebugDrawTriMesh(&dd, m_geom->getMesh()->getVerts(), m_geom->getMesh()->getVertCount(),
+ m_geom->getMesh()->getTris(), m_geom->getMesh()->getNormals(), m_geom->getMesh()->getTriCount(), 0);
glDepthMask(GL_FALSE);
// Draw bounds
- float col[4] = {1,1,1,0.5f};
- duDebugDrawBoxWire(&dd, m_bmin[0],m_bmin[1],m_bmin[2], m_bmax[0],m_bmax[1],m_bmax[2], col);
+ const float* bmin = m_geom->getMeshBoundsMin();
+ const float* bmax = m_geom->getMeshBoundsMax();
+ const float col[4] = {1,1,1,0.5f};
+ duDebugDrawBoxWire(&dd, bmin[0],bmin[1],bmin[2], bmax[0],bmax[1],bmax[2], col);
// Tiling grid.
const int ts = (int)m_tileSize;
int gw = 0, gh = 0;
- rcCalcGridSize(m_bmin, m_bmax, m_cellSize, &gw, &gh);
+ rcCalcGridSize(bmin, bmax, m_cellSize, &gw, &gh);
int tw = (gw + ts-1) / ts;
int th = (gh + ts-1) / ts;
const float s = ts*m_cellSize;
@@ -316,9 +334,9 @@ void Sample_TileMesh::handleRender()
for (int x = 0; x < tw; ++x)
{
float fx, fy, fz;
- fx = m_bmin[0] + x*s;
- fy = m_bmin[1];
- fz = m_bmin[2] + y*s;
+ fx = bmin[0] + x*s;
+ fy = bmin[1];
+ fz = bmin[2] + y*s;
glVertex3f(fx,fy,fz);
glVertex3f(fx+s,fy,fz);
@@ -368,22 +386,10 @@ void Sample_TileMesh::handleRenderOverlay(double* proj, double* model, int* view
m_tool->handleRenderOverlay(proj, model, view);
}
-void Sample_TileMesh::handleMeshChanged(const float* verts, int nverts,
- const int* tris, const float* trinorms, int ntris,
- const float* bmin, const float* bmax)
+void Sample_TileMesh::handleMeshChanged(class InputGeom* geom)
{
- m_verts = verts;
- m_nverts = nverts;
- m_tris = tris;
- m_trinorms = trinorms;
- m_ntris = ntris;
- vcopy(m_bmin, bmin);
- vcopy(m_bmax, bmax);
-
- delete m_chunkyMesh;
- m_chunkyMesh = 0;
- delete m_navMesh;
- m_navMesh = 0;
+ Sample::handleMeshChanged(geom);
+
cleanup();
if (m_tool)
@@ -395,7 +401,7 @@ void Sample_TileMesh::handleMeshChanged(const float* verts, int nverts,
bool Sample_TileMesh::handleBuild()
{
- if (!m_verts || !m_tris)
+ if (!m_geom || !m_geom->getMesh())
{
if (rcGetLog())
rcGetLog()->log(RC_LOG_ERROR, "buildTiledNavigation: No vertices and triangles.");
@@ -410,29 +416,18 @@ bool Sample_TileMesh::handleBuild()
rcGetLog()->log(RC_LOG_ERROR, "buildTiledNavigation: Could not allocate navmesh.");
return false;
}
- if (!m_navMesh->init(m_bmin, m_tileSize*m_cellSize, m_tileSize*m_cellSize, m_agentMaxClimb*m_cellHeight, m_maxTiles, m_maxPolysPerTile, 2048))
+ const float* bmin = m_geom->getMeshBoundsMin();
+ const float tileWorldWidth = m_tileSize*m_cellSize;
+ const float tileWorldHeight = m_tileSize*m_cellSize;
+ const float portalHeight = m_agentMaxClimb*m_cellHeight;
+
+ if (!m_navMesh->init(bmin, tileWorldWidth, tileWorldHeight, portalHeight, m_maxTiles, m_maxPolysPerTile, 2048))
{
if (rcGetLog())
rcGetLog()->log(RC_LOG_ERROR, "buildTiledNavigation: Could not init navmesh.");
return false;
}
- // Build chunky mesh.
- delete m_chunkyMesh;
- m_chunkyMesh = new rcChunkyTriMesh;
- if (!m_chunkyMesh)
- {
- if (rcGetLog())
- rcGetLog()->log(RC_LOG_ERROR, "buildTiledNavigation: Out of memory 'm_chunkyMesh'.");
- return false;
- }
- if (!rcCreateChunkyTriMesh(m_verts, m_tris, m_ntris, 256, m_chunkyMesh))
- {
- if (rcGetLog())
- rcGetLog()->log(RC_LOG_ERROR, "buildTiledNavigation: Could not build chunky mesh.");
- return false;
- }
-
if (m_buildAll)
buildAllTiles();
@@ -447,19 +442,22 @@ void Sample_TileMesh::buildTile(const float* pos)
if (!m_navMesh)
return;
+ const float* bmin = m_geom->getMeshBoundsMin();
+ const float* bmax = m_geom->getMeshBoundsMax();
+
const float ts = m_tileSize*m_cellSize;
- const int tx = (int)floorf((pos[0]-m_bmin[0]) / ts);
- const int ty = (int)floorf((pos[2]-m_bmin[2]) / ts);
+ const int tx = (int)floorf((pos[0] - bmin[0]) / ts);
+ const int ty = (int)floorf((pos[2] - bmin[2]) / ts);
if (tx < 0 || ty < 0)
return;
- m_tileBmin[0] = m_bmin[0] + tx*ts;
- m_tileBmin[1] = m_bmin[1];
- m_tileBmin[2] = m_bmin[2] + ty*ts;
+ m_tileBmin[0] = bmin[0] + tx*ts;
+ m_tileBmin[1] = bmin[1];
+ m_tileBmin[2] = bmin[2] + ty*ts;
- m_tileBmax[0] = m_bmin[0] + (tx+1)*ts;
- m_tileBmax[1] = m_bmax[1];
- m_tileBmax[2] = m_bmin[2] + (ty+1)*ts;
+ m_tileBmax[0] = bmin[0] + (tx+1)*ts;
+ m_tileBmax[1] = bmax[1];
+ m_tileBmax[2] = bmin[2] + (ty+1)*ts;
m_tileCol[0] = 0.3f; m_tileCol[1] = 0.8f; m_tileCol[2] = 0; m_tileCol[3] = 1;
@@ -482,17 +480,22 @@ void Sample_TileMesh::removeTile(const float* pos)
if (!m_navMesh)
return;
+ const float* bmin = m_geom->getMeshBoundsMin();
+ const float* bmax = m_geom->getMeshBoundsMax();
+
const float ts = m_tileSize*m_cellSize;
- const int tx = (int)floorf((pos[0]-m_bmin[0]) / ts);
- const int ty = (int)floorf((pos[2]-m_bmin[2]) / ts);
+ const int tx = (int)floorf((pos[0] - bmin[0]) / ts);
+ const int ty = (int)floorf((pos[2] - bmin[2]) / ts);
+ if (tx < 0 || ty < 0)
+ return;
- m_tileBmin[0] = m_bmin[0] + tx*ts;
- m_tileBmin[1] = m_bmin[1];
- m_tileBmin[2] = m_bmin[2] + ty*ts;
+ m_tileBmin[0] = bmin[0] + tx*ts;
+ m_tileBmin[1] = bmin[1];
+ m_tileBmin[2] = bmin[2] + ty*ts;
- m_tileBmax[0] = m_bmin[0] + (tx+1)*ts;
- m_tileBmax[1] = m_bmax[1];
- m_tileBmax[2] = m_bmin[2] + (ty+1)*ts;
+ m_tileBmax[0] = bmin[0] + (tx+1)*ts;
+ m_tileBmax[1] = bmax[1];
+ m_tileBmax[2] = bmin[2] + (ty+1)*ts;
m_tileCol[0] = 0.8f; m_tileCol[1] = 0.1f; m_tileCol[2] = 0; m_tileCol[3] = 1;
@@ -504,8 +507,10 @@ void Sample_TileMesh::removeTile(const float* pos)
void Sample_TileMesh::buildAllTiles()
{
+ const float* bmin = m_geom->getMeshBoundsMin();
+ const float* bmax = m_geom->getMeshBoundsMax();
int gw = 0, gh = 0;
- rcCalcGridSize(m_bmin, m_bmax, m_cellSize, &gw, &gh);
+ rcCalcGridSize(bmin, bmax, m_cellSize, &gw, &gh);
const int ts = (int)m_tileSize;
const int tw = (gw + ts-1) / ts;
const int th = (gh + ts-1) / ts;
@@ -515,13 +520,13 @@ void Sample_TileMesh::buildAllTiles()
{
for (int x = 0; x < tw; ++x)
{
- m_tileBmin[0] = m_bmin[0] + x*tcs;
- m_tileBmin[1] = m_bmin[1];
- m_tileBmin[2] = m_bmin[2] + y*tcs;
+ m_tileBmin[0] = bmin[0] + x*tcs;
+ m_tileBmin[1] = bmin[1];
+ m_tileBmin[2] = bmin[2] + y*tcs;
- m_tileBmax[0] = m_bmin[0] + (x+1)*tcs;
- m_tileBmax[1] = m_bmax[1];
- m_tileBmax[2] = m_bmin[2] + (y+1)*tcs;
+ m_tileBmax[0] = bmin[0] + (x+1)*tcs;
+ m_tileBmax[1] = bmax[1];
+ m_tileBmax[2] = bmin[2] + (y+1)*tcs;
int dataSize = 0;
unsigned char* data = buildTileMesh(m_tileBmin, m_tileBmax, dataSize);
@@ -539,8 +544,10 @@ void Sample_TileMesh::buildAllTiles()
void Sample_TileMesh::removeAllTiles()
{
+ const float* bmin = m_geom->getMeshBoundsMin();
+ const float* bmax = m_geom->getMeshBoundsMax();
int gw = 0, gh = 0;
- rcCalcGridSize(m_bmin, m_bmax, m_cellSize, &gw, &gh);
+ rcCalcGridSize(bmin, bmax, m_cellSize, &gw, &gh);
const int ts = (int)m_tileSize;
const int tw = (gw + ts-1) / ts;
const int th = (gh + ts-1) / ts;
@@ -552,7 +559,7 @@ void Sample_TileMesh::removeAllTiles()
unsigned char* Sample_TileMesh::buildTileMesh(const float* bmin, const float* bmax, int& dataSize)
{
- if (!m_verts || ! m_tris)
+ if (!m_geom || !m_geom->getMesh() || !m_geom->getChunkyMesh())
{
if (rcGetLog())
rcGetLog()->log(RC_LOG_ERROR, "buildNavigation: Input mesh is not specified.");
@@ -561,6 +568,11 @@ unsigned char* Sample_TileMesh::buildTileMesh(const float* bmin, const float* bm
cleanup();
+ const float* verts = m_geom->getMesh()->getVerts();
+ const int nverts = m_geom->getMesh()->getVertCount();
+ const int ntris = m_geom->getMesh()->getTriCount();
+ const rcChunkyTriMesh* chunkyMesh = m_geom->getChunkyMesh();
+
// Init build configuration from GUI
memset(&m_cfg, 0, sizeof(m_cfg));
m_cfg.cs = m_cellSize;
@@ -599,7 +611,7 @@ unsigned char* Sample_TileMesh::buildTileMesh(const float* bmin, const float* bm
{
rcGetLog()->log(RC_LOG_PROGRESS, "Building navigation:");
rcGetLog()->log(RC_LOG_PROGRESS, " - %d x %d cells", m_cfg.width, m_cfg.height);
- rcGetLog()->log(RC_LOG_PROGRESS, " - %.1fK verts, %.1fK tris", m_nverts/1000.0f, m_ntris/1000.0f);
+ rcGetLog()->log(RC_LOG_PROGRESS, " - %.1fK verts, %.1fK tris", nverts/1000.0f, ntris/1000.0f);
}
// Allocate voxel heighfield where we rasterize our input data to.
@@ -620,11 +632,11 @@ unsigned char* Sample_TileMesh::buildTileMesh(const float* bmin, const float* bm
// Allocate array that can hold triangle flags.
// If you have multiple meshes you need to process, allocate
// and array which can hold the max number of triangles you need to process.
- m_triflags = new unsigned char[m_chunkyMesh->maxTrisPerChunk];
+ m_triflags = new unsigned char[chunkyMesh->maxTrisPerChunk];
if (!m_triflags)
{
if (rcGetLog())
- rcGetLog()->log(RC_LOG_ERROR, "buildNavigation: Out of memory 'triangleFlags' (%d).", m_chunkyMesh->maxTrisPerChunk);
+ rcGetLog()->log(RC_LOG_ERROR, "buildNavigation: Out of memory 'triangleFlags' (%d).", chunkyMesh->maxTrisPerChunk);
return 0;
}
@@ -635,7 +647,7 @@ unsigned char* Sample_TileMesh::buildTileMesh(const float* bmin, const float* bm
tbmax[0] = m_cfg.bmax[0];
tbmax[1] = m_cfg.bmax[2];
int cid[256];// TODO: Make grow when returning too many items.
- const int ncid = rcGetChunksInRect(m_chunkyMesh, tbmin, tbmax, cid, 256);
+ const int ncid = rcGetChunksInRect(chunkyMesh, tbmin, tbmax, cid, 256);
if (!ncid)
return 0;
@@ -643,17 +655,17 @@ unsigned char* Sample_TileMesh::buildTileMesh(const float* bmin, const float* bm
for (int i = 0; i < ncid; ++i)
{
- const rcChunkyTriMeshNode& node = m_chunkyMesh->nodes[cid[i]];
- const int* tris = &m_chunkyMesh->tris[node.i*3];
+ const rcChunkyTriMeshNode& node = chunkyMesh->nodes[cid[i]];
+ const int* tris = &chunkyMesh->tris[node.i*3];
const int ntris = node.n;
m_tileTriCount += ntris;
memset(m_triflags, 0, ntris*sizeof(unsigned char));
rcMarkWalkableTriangles(m_cfg.walkableSlopeAngle,
- m_verts, m_nverts, tris, ntris, m_triflags);
+ verts, nverts, tris, ntris, m_triflags);
- rcRasterizeTriangles(m_verts, m_nverts, tris, m_triflags, ntris, *m_solid);
+ rcRasterizeTriangles(verts, nverts, tris, m_triflags, ntris, *m_solid);
}
if (!m_keepInterResults)
diff --git a/RecastDemo/Source/main.cpp b/RecastDemo/Source/main.cpp
index 7008a75d..9a8b4071 100644
--- a/RecastDemo/Source/main.cpp
+++ b/RecastDemo/Source/main.cpp
@@ -1,3 +1,21 @@
+//
+// Copyright (c) 2009 Mikko Mononen memon@inside.org
+//
+// This software is provided 'as-is', without any express or implied
+// warranty. In no event will the authors be held liable for any damages
+// arising from the use of this software.
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it
+// freely, subject to the following restrictions:
+// 1. The origin of this software must not be misrepresented; you must not
+// claim that you wrote the original software. If you use this software
+// in a product, an acknowledgment in the product documentation would be
+// appreciated but is not required.
+// 2. Altered source versions must be plainly marked as such, and must not be
+// misrepresented as being the original software.
+// 3. This notice may not be removed or altered from any source distribution.
+//
+
#include
#define _USE_MATH_DEFINES
#include
@@ -13,7 +31,7 @@
#include "imguiRenderGL.h"
#include "Recast.h"
#include "RecastDebugDraw.h"
-#include "MeshLoaderObj.h"
+#include "InputGeom.h"
#include "Sample_SoloMeshSimple.h"
#include "Sample_SoloMeshTiled.h"
@@ -24,16 +42,6 @@
#endif
-
-/*GLFont g_font;
-void drawText(int x, int y, int dir, const char* text, unsigned int col)
-{
- if (dir < 0)
- g_font.drawText((float)x - g_font.getTextLength(text), (float)y, text, col);
- else
- g_font.drawText((float)x, (float)y, text, col);
-}*/
-
struct FileList
{
static const int MAX_FILES = 256;
@@ -114,80 +122,6 @@ static void scanDirectory(const char* path, const char* ext, FileList& list)
list.sort();
}
-bool intersectSegmentTriangle(const float* sp, const float* sq,
- const float* a, const float* b, const float* c,
- float &t)
-{
- float v, w;
- float ab[3], ac[3], qp[3], ap[3], norm[3], e[3];
- vsub(ab, b, a);
- vsub(ac, c, a);
- vsub(qp, sp, sq);
-
- // Compute triangle normal. Can be precalculated or cached if
- // intersecting multiple segments against the same triangle
- vcross(norm, ab, ac);
-
- // Compute denominator d. If d <= 0, segment is parallel to or points
- // away from triangle, so exit early
- float d = vdot(qp, norm);
- if (d <= 0.0f) return false;
-
- // Compute intersection t value of pq with plane of triangle. A ray
- // intersects iff 0 <= t. Segment intersects iff 0 <= t <= 1. Delay
- // dividing by d until intersection has been found to pierce triangle
- vsub(ap, sp, a);
- t = vdot(ap, norm);
- if (t < 0.0f) return false;
- if (t > d) return false; // For segment; exclude this code line for a ray test
-
- // Compute barycentric coordinate components and test if within bounds
- vcross(e, qp, ap);
- v = vdot(ac, e);
- if (v < 0.0f || v > d) return false;
- w = -vdot(ab, e);
- if (w < 0.0f || v + w > d) return false;
-
- // Segment/ray intersects triangle. Perform delayed division
- t /= d;
-
- return true;
-}
-
-static bool raycast(rcMeshLoaderObj& mesh, float* src, float* dst, float& tmin)
-{
- float dir[3];
- vsub(dir, dst, src);
-
- int nt = mesh.getTriCount();
- const float* verts = mesh.getVerts();
- const float* normals = mesh.getNormals();
- const int* tris = mesh.getTris();
- tmin = 1.0f;
- bool hit = false;
-
- for (int i = 0; i < nt*3; i += 3)
- {
- const float* n = &normals[i];
- if (vdot(dir, n) > 0)
- continue;
-
- float t = 1;
- if (intersectSegmentTriangle(src, dst,
- &verts[tris[i]*3],
- &verts[tris[i+1]*3],
- &verts[tris[i+2]*3], t))
- {
- if (t < tmin)
- tmin = t;
- hit = true;
- }
- }
-
- return hit;
-}
-
-
struct SampleItem
{
Sample* (*create)();
@@ -272,13 +206,11 @@ int main(int argc, char *argv[])
FileList meshFiles;
char meshName[128] = "Choose Mesh...";
- rcMeshLoaderObj* mesh = 0;
- float meshBMin[3], meshBMax[3];
+ InputGeom* geom = 0;
float mpos[3];
bool mposSet = false;
-
Sample* sample = 0;
rcLog log;
@@ -331,11 +263,11 @@ int main(int argc, char *argv[])
else if (event.button.button == SDL_BUTTON_LEFT)
{
// Hit test mesh.
- if (mesh && sample)
+ if (geom && sample)
{
// Hit test mesh.
float t;
- if (raycast(*mesh, rays, raye, t))
+ if (geom->raycastMesh(rays, raye, t))
{
if (SDL_GetModState() & KMOD_CTRL)
{
@@ -544,16 +476,18 @@ int main(int argc, char *argv[])
scanDirectory("Meshes", ".obj", meshFiles);
}
}
- if (mesh)
+ if (geom)
{
char text[64];
- snprintf(text, 64, "Verts: %.1fk Tris: %.1fk", mesh->getVertCount()/1000.0f, mesh->getTriCount()/1000.0f);
+ snprintf(text, 64, "Verts: %.1fk Tris: %.1fk",
+ geom->getMesh()->getVertCount()/1000.0f,
+ geom->getMesh()->getTriCount()/1000.0f);
imguiValue(text);
}
imguiSeparator();
}
- if (mesh && sample)
+ if (geom && sample)
{
sample->handleSettings();
@@ -610,11 +544,9 @@ int main(int argc, char *argv[])
{
delete sample;
sample = newSample;
- if (mesh && sample)
+ if (geom && sample)
{
- sample->handleMeshChanged(mesh->getVerts(), mesh->getVertCount(),
- mesh->getTris(), mesh->getNormals(), mesh->getTriCount(),
- meshBMin, meshBMax);
+ sample->handleMeshChanged(geom);
}
showSample = false;
}
@@ -642,42 +574,47 @@ int main(int argc, char *argv[])
meshName[sizeof(meshName)-1] = '\0';
showLevels = false;
- delete mesh;
- mesh = 0;
+ delete geom;
+ geom = 0;
char path[256];
strcpy(path, "Meshes/");
strcat(path, meshName);
- mesh = new rcMeshLoaderObj;
- if (!mesh || !mesh->load(path))
+ geom = new InputGeom;
+ if (!geom || !geom->loadMesh(path))
{
- delete mesh;
- mesh = 0;
+ delete geom;
+ geom = 0;
+
+ showLog = true;
+ logScroll = 0;
+ printf("Build log %s:\n", meshName);
+ for (int i = 0; i < log.getMessageCount(); ++i)
+ printf("%s\n", log.getMessageText(i));
}
-
- if (mesh)
- rcCalcBounds(mesh->getVerts(), mesh->getVertCount(), meshBMin, meshBMax);
-
- if (sample)
+ if (sample && geom)
{
- sample->handleMeshChanged(mesh->getVerts(), mesh->getVertCount(),
- mesh->getTris(), mesh->getNormals(), mesh->getTriCount(),
- meshBMin, meshBMax);
+ sample->handleMeshChanged(geom);
+ }
+
+ if (geom)
+ {
+ const float* bmin = geom->getMeshBoundsMin();
+ const float* bmax = geom->getMeshBoundsMax();
+ // Reset camera and fog to match the mesh bounds.
+ camr = sqrtf(rcSqr(bmax[0]-bmin[0]) +
+ rcSqr(bmax[1]-bmin[1]) +
+ rcSqr(bmax[2]-bmin[2])) / 2;
+ camx = (bmax[0] + bmin[0]) / 2 + camr;
+ camy = (bmax[1] + bmin[1]) / 2 + camr;
+ camz = (bmax[2] + bmin[2]) / 2 + camr;
+ camr *= 3;
+ rx = 45;
+ ry = -45;
+ glFogf(GL_FOG_START, camr*0.2f);
+ glFogf(GL_FOG_END, camr*1.25f);
}
-
- // Reset camera and fog to match the mesh bounds.
- camr = sqrtf(rcSqr(meshBMax[0]-meshBMin[0]) +
- rcSqr(meshBMax[1]-meshBMin[1]) +
- rcSqr(meshBMax[2]-meshBMin[2])) / 2;
- camx = (meshBMax[0] + meshBMin[0]) / 2 + camr;
- camy = (meshBMax[1] + meshBMin[1]) / 2 + camr;
- camz = (meshBMax[2] + meshBMin[2]) / 2 + camr;
- camr *= 3;
- rx = 45;
- ry = -45;
- glFogf(GL_FOG_START, camr*0.2f);
- glFogf(GL_FOG_END, camr*1.25f);
}
imguiEndScrollArea();
@@ -695,7 +632,7 @@ int main(int argc, char *argv[])
}
// Tools
- if (showTools && showMenu && mesh && sample)
+ if (showTools && showMenu && geom && sample)
{
if (imguiBeginScrollArea("Tools", 10, height - 10 - 250, 200, 250, &toolsScroll))
mouseOverMenu = true;
@@ -737,7 +674,7 @@ int main(int argc, char *argv[])
SDL_Quit();
delete sample;
- delete mesh;
+ delete geom;
return 0;
}