215 Commits

Author SHA1 Message Date
Brian Swenson
c02d6fa81e -Wunused-but-set-variable flagged variables removed 2022-06-03 02:24:29 -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
Bret Curtis
63a4ee4c1e
Add version and pkgconfig (#474)
* Add version and pkgconfig

* simply versioning

Co-authored-by: Bret Curtis <bret.curtis@pegus.digital>
2021-03-05 17:24:04 +01:00
elsid
1f25f9cc29 Install .pdb files only with MSVC 2021-03-05 17:21:50 +01: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
Yoann Potinet
65b314a44e Fix shared library build 2020-10-31 10:38:31 +01:00
Jan Haller
e679507845
Improve debug builds for MSVC (#443)
* Add -d suffix for debug libraries

* Export PDB files for each Debug library
2020-10-30 10:41:54 +01:00
Alexey Sokolov
9337e12418
Several fixes for make install (#437)
* Don't install test

* Install to the correct directory (e.g. lib64)

* Install includes to /usr/include/recastnavigation
2020-09-24 10:08:03 +02:00
Icecream95 (gitlab.com/icecream95)
57610fa6ef Explicitly define winding as being signed 2019-10-21 14:44:25 +02:00
Jakob Botsch Nielsen
33a9eb1cce Document detail triangle edge flags 2019-03-16 16:18:23 +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
elsid
7bfd9a1d4c Add aliases with namespace for library build targets 2018-10-31 23:13:42 +01:00
elsid
2b31aa9d79 Bind include directories to library build target 2018-10-31 23:13:42 +01:00
Jarrett
56dbf4c482 Allow 64 bit windows builds (#301) 2018-10-16 00:02:51 +02:00
MoYummy
13dc549bbe Improve triangulateHull to start from an ear with shortest perimeter 2018-08-25 12:18:27 +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
mbabinski-at-google
3ddb9ba074 Convert lvlStacks to be vectors of structs instead of a bag of ints. (#323) 2018-05-17 17:35:05 +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
mbabinski-at-google
18562383f4 Remove redundant copying in rcBuildRegions. (#314)
Remove dstReg and dstDist from rcBuildRegions entirely -- just use temporary scratch space in expandRegions.
This saves a considerable amount of time when the number of spans is large. A sample map tried has 16M spans, and only writes at most 4000 of them.
2018-04-27 22:08:52 +02:00
Roman Siromakha
4566d01c8f Support build by CMake (#310) 2018-04-21 00:16:52 +02:00
elsid
367065415c Unconditionally initialize rcCompactHeightfield borderSize
To avoid uninitialized value when borderSize <= 0.
2018-03-20 00:01:57 +01: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
Ben Hymers
d11c1bdbac Fix multiline comment warning 2017-01-12 11:31:29 +00:00
Acai
787ce2c18d Fix log errors in rcBuildLayerRegions. (#242) 2016-11-27 12:12:54 +01:00
Jakob Botsch Nielsen
7a88c13946 Add an assertion for alloc in rcIntArray::doResize (#219)
Fix #170
2016-07-13 11:30:13 +02:00
Jakob Botsch Nielsen
9763478a9a Detect all overflows in rcBuildHeightfieldLayers (#214)
The function now fails if it fails to insert all layers because the
array overflowed. Previously this would silently corrupt the heap.
2016-07-08 01:51:23 +03: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
d9c6fc58ce Remove redundant double assignment 2016-03-15 08:02:28 +00:00
Ben Hymers
e344fe8295 Remove dead code in rcBuildRegions
The code is checking for an invalid region ID, after setting it to a valid value
2016-03-15 07:56:57 +00:00
Ben Hymers
c208fd332c Minor typo and style changes 2016-03-14 09:03:40 +00:00
Ben Hymers
d7d58b98d9 Fix ReSharper warnings: remove unused methods 2016-02-26 08:41:17 +00:00
Graham Pentheny
6ee79b25a8 Merge pull request #169 from wbierman/master
Detect, log and fail in the event of an overflow of region ids in watershed partitioning
2016-01-21 13:21:03 -05:00
Bill Bierman
e49017ac63 Detect, log and fail in the event of an overflow of region ids in watershed partitioning 2016-01-21 07:07:40 -10: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
Bill Bierman
92bc6ce5bd Change if to else-if to avoid unnecessary comparison 2016-01-19 11:34:04 -10: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
f002387afc Merge pull request #151 from Janiels/fix-detail-sampling
Use flood fill for potentially overlapping polys
2016-01-14 16:48:13 +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
Jakob Botsch Nielsen
c1f9fd8406 Fix heap corruption when collecting region layers
The collecting could overflow the neighbours array due to a missing boundary
check.

Fix #30
2016-01-02 13:33:27 +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
Jakob Botsch Nielsen
35fb7d5c16 Merge pull request #78 from grahamboree/RC_SPAN_HEIGHT_BITS_fix
Use RC_SPAN_HEIGHT_BITS when setting the bitfield size of rcSpan::smin and rcSpan::smax
2015-12-17 14:16:02 +01:00
jackpoz
18b537c23f Fix 2 "unused parameter" build warnings 2015-06-28 21:32:16 +02:00