We don't care as much about ultra-compatibility with RecastDemo or Tests. C++20 seems fairly universal at this point considering Unreal 5 ships with it as the default requirement.
We want to keep the other stuff to C++98 still because eventaully we'll convert it to C99 and not having a ton of modern C++ features everywhere make it significantly easier.
* Replaced references to rcIntArray with rcTempVector<int>
rcIntArray is deprecated and has been replaced with rcTempVector. The current implementation is just a wrapper for rcTempVector.
* remove rcIntArray implementation
Since it's no longer referenced
There's a bug in doxygen's markdown html generator when specifying header text that's just link text. This is fixed in newer versions of doxygen, but the ubuntu images in github actions runners don't have a new enough version to work around this. Instead, just write out the html explicitly for now.
- Add SDL_WINDOW_RESIZABLE flag to enable window resizing
- Handle SDL_WINDOWEVENT_RESIZED event to update window dimensions
- Update OpenGL viewport and projection matrix when window is resized
This change allows users to resize the application window while maintaining
proper aspect ratio and rendering.
Fast math is not required, but it speeds up some calculations at the expense of accuracy. There are some functions like dtMathIsfinite that use floating point functions that become undefined behavior when compiled with fast-math, so we need to conditionally short-circuit these functions when compiled with that flag.
-Wnan-infinity-disabled is complaining about the isfinite call in dtMathIsfinite.
This also sets the linux runner explicitly to Ubuntu 24.04, since ubuntu-latest defaults to 22.04 for some reason. This also updates gcc and clang to the latest versions in apt and logs their version to the run output. We need at least clang18 to disable the -Wnan-infinity-disabled warning for Catch.
Finally, this also removes some unused code that was throwing a warning (and thus an error) on newer compiler versions.
size can become negative if req > maxPath. This may happen when visited buffer is larger than path buffer.
Add tests to cover different use cases of the function including Should add visited points not present in path up to the path capacity to cover the fix.
List tests files explicitly. When new file is added CMake does not add it to the already generated list if GLOB is used.
This adds some unit tests for the functions in RecastFilter.cpp, and updates docs around these functions. This also splits up the Tests_Recast.cpp file into a few smaller, more focused files.
* Code cleanup and minor refactor in RecastFilter.cpp rcFilterLedgeSpans
Because span.smax is always > 0, bot > 0 as well, and (-walkableClimb - bot) is always < -walkableClimb. Furthermore, as long as minNeighborHeight < -walkableClimb' at least once, there is no need to continue the traversal.
* Code cleanup and minor refactor in RecastFilter.cpp rcFilterLedgeSpans
Because span.smax is always > 0, bot > 0 as well, and (-walkableClimb - bot) is always < -walkableClimb. Furthermore, as long as minNeighborHeight < -walkableClimb' at least once, there is no need to continue the traversal.
* Update RecastFilter.cpp
Revise Comment
Added logo, updated doxyfile, fixed alignment of top-level readme, and changed the logo url to an s3-hosted file since github has restrictions that prevent it from loading on recastnav.com
A lot of the auxiliary project documentation was pretty old, redundant, or could use some polishing. This change fixes up some wording, grammar, layout and generally cleans up the docs a bit. It's not perfection, but it's an improvement
I also tried to streamline and beautify the top-level `README.md` to be more appealing, clear, and to direct people to the official docs. To this end, I moved the building instructions to This is based on what I've seen in some other popular github projects.