101 Commits

Author SHA1 Message Date
Graham Pentheny
ee2d4ef6e6 Updated dead links in comments with archived versions
Fixes #623
2023-05-21 01:37:27 -04:00
andriyDev
6d1f9711b3
Mark input data structures as const. (#625) 2023-04-20 19:16:35 -04:00
Graham Pentheny
a4be369ac3 Removed rcPolyMeshDetail destructor to maintain backwards-compatibility
https://github.com/recastnavigation/recastnavigation/pull/598#discussion_r1059522812
2023-01-02 14:05:02 -05:00
Graham Pentheny
7501007439
More Recast code cleanup (#598)
* Code formatting, dosctring consolidation, spelling fixes
* Fixed rule-of-three for rcCompactHeightfield, rcHeightfieldLayerSet, rcContourSet, rcPolyMesh
* Better names for variables and parameters mostly in Recast.cpp
* Added constructor and destructor to rcPolyMeshDetail
* Remove redundant default-value specifiers in constructor initialization lists.
2022-12-29 14:57:46 -05:00
Graham Pentheny
b51925bb87
Cleanup Rasterization Code (#592)
Mostly just improving variable names for clarity.

Removed a redundant base-case check in AddSpan that resulted in a small but measurable perf improvement due to removing a branch. Also tightened up the bounding box overlap check so it early-outs faster, which also has a small perf improvement to rasterization times.

Updated docstrings for user-facing functions.

* Moved docstring comments to the header with the rest of the docstring
* Removed unused function
* Make a cpp-only function static
* Added docstring for rasterizeTri
* Use spaces to indent function parameter lists so they look good regardless of the editor's tab width
* Better parameter names for rcClamp
* Cleanup code formatting, a couple variable names, and some comments in rasterizeTri
* Clean up dividePoly, added rcAxis enum
* Cleanup rasterizeTri docstring
* Faster overlapBounds check in rasterization
* Renamed some vars in rasterizeTri
* cleanup addSpan and remove redundant branch
* addSpan docstring
* Cleanup the implementations of rcRasterizeTriangle and rcRasterizeTriangles overloads
* Added docstrings and renamed vars in rcAllocSpan and rcFreeSpan
* Clean up rcRasterizeTriangle and rcRasterizeTriangles in the header.  Removed redundant const qualifiers on value parameters
* Better parameter names for rasterizeTri, updated docstring, fixed some incorrect comments
* Improved parameter names of rcRasterizeTriangle, rcRasterizeTriangles, and rcAddSpan
* Fixed some old variable names referenced in the docstring for rcAddSpan
2022-12-22 12:16:04 -05:00
Graham Pentheny
2b0c244d12
Updated doxygen output (#581)
- 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`
2022-11-23 00:13:38 -05:00
Graham Pentheny
5111139558
Fixes for many low-severity compiler warnings (#576)
* 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.
2022-11-11 21:03:03 -05:00
Andrei Kortunov
30edaf442c Fix -Wextra-semi GCC warnings by removing redundant semicolons 2022-10-11 23:45:27 -04:00
Prin_E
5a870d427e Fixed RecastDemo crash in macOS 10.11+
* Set hints to always use OpenGL render driver (instead of Metal driver)
* Compile error fix in Xcode 13
2022-03-20 15:33:19 -04:00
Gleb Mazovetskiy
e75adf86f9
Avoid reallocs of temp vectors (#467)
* 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
2021-02-15 12:27:21 +01:00
Jakob Botsch Nielsen
3087e805b0 Add a matching placement delete for placement new
Even though it is a no-op this is good style and avoids a warning with
MSVC.

Fix #359
2018-11-05 14:26:08 +01:00
Jarrett
56dbf4c482 Allow 64 bit windows builds (#301) 2018-10-16 00:02:51 +02:00
Jakob Botsch Nielsen
5c24b5960f Fix warning due to signedness
Fixes #334
2018-06-16 17:04:54 +02:00
Maciej Babinski
ba12abead9 Add more constructors. 2018-05-22 13:09:26 +02:00
mbabinski-at-google
9235b4a0c4 Add rcNew/rcDelete, template functions that allocate/deallocate objects using rcAlloc/rcFree. (#324)
Add rcNew/rcDelete, template functions that allocate/deallocate objects using rcAlloc/rcNew.
The intention is to use these to move construction logic out of rcAllocateFooObject/rcFreeFooObject and into constructors/destructors, giving users flexbility in how objects are allocated. In particular, this allows stack allocation.
2018-05-18 15:40:37 +02:00
mbabinski-at-google
1284a2b191 Remove placement-new in RecastRegion.cpp in favor of rcTempVector. (#326) 2018-05-18 13:50:42 +02:00
Maciej Babinski
bec073c947 Switch expandRegions to using a rcTempVector of structs rather than a blob of ints.
Also updates rcVector::clear() to not require the contained type to be default-constructible.
2018-05-15 16:43:11 +02:00
mbabinski-at-google
fa7debb0c3 Add homebrewed rcVector class and tests, and use it to implement rcIntArray. (#318)
This implements most of the std::vector interface, with some minor elisions of
infrequently used methods such as "insert", and some STL bookkeeping.
Performance is favorable compared to std::vector, and, in some cases, somewhat
better than naive code to manually manage a malloc'd dynamic array.

BM_FlatArray_Push:                     100 iterations in   72889721 nanos:  728897.21 nanos/it
BM_FlatArray_Fill:                     100 iterations in    2700746 nanos:   27007.46 nanos/it
BM_FlatArray_Memset:                   100 iterations in    2687810 nanos:   26878.10 nanos/it
BM_rcVector_Push:                      100 iterations in   51114316 nanos:  511143.16 nanos/it
BM_rcVector_PushPreallocated:          100 iterations in    9532106 nanos:   95321.06 nanos/it
BM_rcVector_Assign:                    100 iterations in    2371534 nanos:   23715.34 nanos/it
BM_rcVector_AssignIndices:             100 iterations in    2573052 nanos:   25730.52 nanos/it
BM_rcVector_Resize:                    100 iterations in    2455761 nanos:   24557.61 nanos/it
BM_stdvector_Push:                     100 iterations in   71739167 nanos:  717391.67 nanos/it
BM_stdvector_PushPreallocated:         100 iterations in   15723737 nanos:  157237.37 nanos/it
BM_stdvector_Assign:                   100 iterations in    2564985 nanos:   25649.85 nanos/it
BM_stdvector_AssignIndices:            100 iterations in    5174923 nanos:   51749.23 nanos/it
BM_stdvector_Resize:                   100 iterations in    2520054 nanos:   25200.54 nanos/it
2018-05-13 16:22:56 +02:00
Domenico Albani
dfd40071c5 Assertion failure custom function (#250)
Implement custom functions to be called when an assertion fails.
2017-01-23 23:02:46 +01:00
grahamboree
c9bacf3c9c Unit tests for a good number of Recast functions.
These are by no means complete coverage of the functions they test, but are at least a start.  For consistency, all floating point comparisons use Approx(), regardless of whether they need to or not.

Removed unnecessary C++11 unique_ptr stuff, now that rcHeightfield has a constructor and destructor.
2016-03-29 01:04:51 -04:00
grahamboree
61dbce80e9 Added Constructor and Destructor to rcHeightfield. 2016-03-20 18:42:14 -04:00
Ben Hymers
d7d58b98d9 Fix ReSharper warnings: remove unused methods 2016-02-26 08:41:17 +00:00
Graham Pentheny
b7a83e0afb Fixed rule of 3 violations in many places.
* Added virtual qualifier to a few destructors in subclasses.
* Removed a few empty destructors that didn't need to be explicitly defined.
* Fixed a few typos
* Removed unnecessary empty virtual destructors in some classes with parent's who derrived from a class with a virtual destructor
2016-01-20 11:57:32 -05:00
Ben Hymers
551d1b250e Use size_t for rcAlloc and dtAlloc
This was already partly done by @cexikitin in #65, I'm just finishing it
off in their absence!

Closes #65
2016-01-15 00:36:18 +00:00
Jakob Botsch Nielsen
0143337a64 Merge pull request #154 from Janiels/fix-detail-unsampled-heights
Increase recover radius for unsampled heights
2016-01-14 22:18:43 +01:00
Jakob Botsch Nielsen
b99d62047b Increase recover radius for unsampled heights
When the detail mesh sampling sees an unset height it previously tried
to recover by looking for heights of neighbors. When the heightfield was
not eroded this recovery would fail since the contour simplification
could mean that the nearest valid cell was further away than a neighbor.
We now walk adjacent cells in a spiral to find a height and do this
depending on the max simplification error.

Fix #153
2016-01-14 19:20:43 +01:00
Jakob Botsch Nielsen
5fce286267 Use flood fill for potentially overlapping polys
This changes the detail sampling to find height data by using the flood
fill method for polygons that were merged because of a border vertex
removal. This could potentially cause overlapping polygons to receive
the same region IDs which would later make the fast-path sampling in
getHeightData sample the wrong heights.

Also includes optimizations for this path and getHeightData itself.
Previously the seeding was responsible for 25% of the total time spent
in getHeightData in these cases. We now use the direction and prefer
moving directly towards the center of the polygon. This makes the
overhead of seedArrayWithPolyCenter virtually nonexistent (~2%
according to profiling).

Fix #146
2016-01-14 11:25:48 +01:00
Rafael Stahl
15025e8519 handle the case when allocSpan fails to allocate memory. adds bool return types to rcAddSpan, rcRasterizeTriangle and rcRasterizeTriangles 2015-12-18 16:41:02 +01:00
Rafael Stahl
6d3c9b38ba add rcScopedTimer to fix timers not being stopped on all paths and to prevent it in the future. 2015-12-18 14:48:31 +01:00
Graham Pentheny
df6fac219b Use RC_SPAN_HEIGHT_BITS when setting the bitfield size of smin and smax in rcSpan. 2015-01-31 17:18:02 -05:00
Kromster80
5df28b45bc Matched the implementation/docs name of the parameter 2014-10-30 13:35:37 +03:00
Janiels
89233e807d Fix comment in rcHeightfieldLayer 2014-06-14 15:43:22 +02:00
Mikko Mononen
3cb87f2432 Merge branch 'master' of https://github.com/memononen/recastnavigation 2014-06-13 13:25:07 +03:00
Mikko Mononen
a89bb843d7 Added new method to partition heighfield
- added layer based heighfield partitioning
- the method is a bit slower than monotone partitioning, but does not
suffer from the long thin ploys
- the method partitions the heighfield into non-overlapping areas, but
does not try to resolve holes
- improved contour hole merging so that it can properly handle all
kinds of holes
- improved polygon triangulation to handle overlapping segments
- improved small and long polygon detail mesh generation
- updated samples to include all 3 partition methods and little
documentation to help to choose between them
2014-06-13 13:25:01 +03:00
Mikko Mononen
64828488b1 Fixed docs of maxSimplificationError units. 2013-12-22 18:24:58 +02:00
grahamboree
b493e7e6f6 Added rcIngoreUnused which can be called to ignore unused parameters. 2013-10-14 16:32:20 -04:00
Mikko Mononen
d2b4b09e16 - Added rcOffsetPoly() helper function to expand polygon areas 2012-06-02 10:13:59 +00:00
Mikko Mononen
db0baf4741 Fix for issue 192. 2012-03-10 20:53:04 +00:00
Mikko Mononen
f91363ff06 Added rcCopyPolyMesh function. 2012-02-27 19:02:16 +00:00
Stephen Pratt
79a61cbdb1 Recast: Removed unused inline functions and standardized tab/space use.
Removed the unused rcAlign4 function from Recast.h.
Removed the unused rcVequal function from Recast.h.
Standardized the use of tab/space indenting in the API documentation.
2011-09-13 13:14:40 +00:00
Stephen Pratt
6f5c9f9b82 Recast: Detail API documentation for the members declared in Recast.h. (Complete)
Recast.h: Completed rcPolyMeshDetail through end, plus updates to existing documentation.
Configuration: Removed DebugUtils directory from the document build.
Configuration: Fixed issue 179. (Backslashes)
2011-08-29 23:03:16 +00:00
Stephen Pratt
5553d19d59 Recast: Detail API documentation for the elements declared in Recast.h. (Partial)
The elements through rcPolyMesh are complete.
2011-08-22 21:49:21 +00:00
Stephen Pratt
2198f85997 Recast: Detail API documentation covering the elements declared in RecastAlloc.h. 2011-08-22 21:46:43 +00:00
Cameron hart
d5729c678b Changed header comments to use Doxygen format and added configuration Doxyfile. 2011-05-06 23:22:08 +00:00
Mikko Mononen
69f00ef893 Fixed type on rcAddSpan definition in header file. 2011-04-30 05:43:07 +00:00
Mikko Mononen
1de5e2f119 DETOUR API CHANGE!
- Detour Navmesh supports layers
- Allow to disable Navmesh BV-tree
- Added DetourTileCache
- Cleaned up Recast layer code
- Moved portal edge detection to Recast
- Removed polymesh border offset
- Removed lean heighfield
2011-03-25 09:16:38 +00:00
Mikko Mononen
b6a93f063a Removed layer portals, added cons, which stores connectivity and portals. Layer heights is stored as bytes. 2011-03-11 15:12:15 +00:00
Mikko Mononen
e84d563bfe Added boxmapped texturing to input mesh, helps visualize it better. Added polymesh generation for layered heighfields. 2011-03-06 15:40:33 +00:00
Mikko Mononen
6cb0413cc7 Layer progress: Fixed reg building with multiple areas. Added contour generation. 2011-03-06 08:26:55 +00:00
Mikko Mononen
ce6f2a52fc Fixed mem leaks with layers. Added layer region generation test. 2011-02-27 20:39:17 +00:00