- Upgraded doxyfile to latest format
- Fixed a bunch of warnings and errors in docstrings that doxygen was complaining about
- Added the doxygen-awesome theme to modernize the output
- Removed a duplicate screenshot we'd had in the docs folder
- Moved the RecastDemo screenshot into the Docs/images folder
- Changed the doxygen main page to be the README.md since the dedicated main page file we had was nearly identical but out of date
- Added CONTRIBUTING.md so it's part of the generated doxygen output
- Removed duplicate license file to avoid confusion
- Combined the FAQ with the Recast_api.txt, since the FAQ was essentially just better docs for the members of `rcConfig`
The goal here is to replace the current (slightly broken) Travis + Appveyor setup with something that covers more cases and is a bit better supported and easier to maintain. This hopefully helps us catch cross-platform issues quicker. For example, the linux and clang compilation issues that have existed for a while could have been caught if we were building those targets in CI.
This adds a build script that builds the following configurations for every repo commit and PR:
macOS, premake, Debug
macOS, premake, Release
linux, premake, gcc, Debug
linux, premake, gcc, Release
linux, premake, clang, Debug
linux, premake, clang, Release
linux, cmake, Debug
linux, cmake, Release
windows, premake, vs2019, Debug
windows, premake, vs2019, Release
windows, premake, vs2022, Debug
windows, premake, vs2022, Release
windows, cmake, vs2019, Debug
windows, cmake, vs2019, Release
windows, cmake, vs2022, Debug
windows, cmake, vs2022, Release
It also builds and runs the catch tests executable in the following configurations. A failed test will fail the build.
macOS, premake, Debug
linux, premake, clang, Debug
windows, premake, vs2022, Debug
It doesn't currently build cmake on macOS because there is a one blocker there (#577). We could also add additional builds like cmake with both clang and gcc on linux, but for now this is much better coverage than we have currently.
This makes the default xcode project generated by premake work out of the box, and is generally easier for mac users. Especially those who don't have permissions to modify /Library/Frameworks/
- Look for SDL in RecastDemo/Bin by default rather than /Library/Frameworks/
- Updated README build instructions
- Ignore SDL2.framework in RecastDemo/Bin
* Fixes for many low-severity compiler warnings
Mostly a lot of pedantic things like end-of-file newlines and commas on the last enum value. However some fixes like the weak v-tables warnings fixes might help with code gen. It's unclear if the linker is able to elide multiple copies of the same type's v-table in different translation units, (sometimes it can) but these fixes ensure we don't have to rely on it.
Also remove hard-coded filter on gmake premake target since it's deprecated in favor of gmake2. It also doesn't matter; what matters is that we filter on gcc, since the warnings we've disabled don't exist in clang and will throw errors.
The premake script generates some deprecation warnings when generating with premake5:
- "configuration" has been deprecated in favor of "filter"
- "solution" was renamed to "workspace"
* Use clear() instead of resize(0) for temp vectors
Nicer style
* rcVectorBase::resize: Avoid realloc on grow
When capacity is sufficient, do not realloc the whole buffer
* rcVector: Grow exponentially on resize
* Validate constraint: #polygons per tile
When adding a tile to a NavMesh, ensure that the number of polygons in that tile fit in the poly ID address space.
* Improve dtNavMeshParams field documentation
-Wno-error does not ignore unknown warnings on old GCC versions causing
problems when using it for new warnings. On the other hand, -Wno-X will
ignore unknown warnings, so we can use this instead.
Fix#403Fix#413
* Make dtClosestHeightPointTriangle use no epsilon (except for checking
denominator)
* When point is outside poly, directly find closest height from boundary
detail edges instead of first interpolating and then finding height from
detail tris.
* When point is inside poly, if all dtClosestHeightPointTriangle queries
failed, then find height from detail edges. This should only happen if
the point is right on top of an internal detail tri edge.