elsid
fea4fb6e69
Make AiPursue path destination to be as close as possible to target
...
Even when target is not reachable actor will try to run there either because
target navmesh polygon is selected within extended area or because partial path
is built to the closest possible polygon.
2021-08-18 23:44:36 +02:00
psi29a
6360bdc859
Merge branch 'navmesh_job' into 'master'
...
Store async navmesh jobs in the same container until they are processed
See merge request OpenMW/openmw!1131
2021-08-17 09:20:54 +00:00
psi29a
6595c731f7
Merge branch 'fix_rc_poly_mesh_flags_length' into 'master'
...
Fix flags length for rcPolyMesh
See merge request OpenMW/openmw!1134
2021-08-17 09:19:32 +00:00
elsid
46fa3ce083
Fix flags length for rcPolyMesh
...
recastnavigation documentation of rcPolyMesh is misleading. It says flags field
length is maxpolys when actually it's allocated as npolys.
2021-08-12 22:43:06 +02:00
elsid
54a676f2e3
Add functions to get length of recast type arrays
...
To avoid duplicating same formulas in multiple places.
2021-08-12 22:43:01 +02:00
elsid
05258ed644
Remove redundant TileCachedRecastMeshManager::hasTile function
...
It's used only for tests. getMesh is a valid replacement.
2021-08-12 22:40:06 +02:00
elsid
8ac8d56e8c
Mark TileCachedRecastMeshManager member functions as const where possible
2021-08-12 22:39:25 +02:00
elsid
09b1a2e3c6
Make unchanging Job fields const
2021-08-12 22:25:25 +02:00
elsid
21ce4fe637
Use structured binding
2021-08-12 22:25:25 +02:00
elsid
8bca9eec80
Use single set to store pushed tiles
2021-08-12 22:25:24 +02:00
elsid
a97b2ced27
Use single map to store last updates
2021-08-12 22:25:24 +02:00
elsid
bfcc430822
Use single map to store processing tiles
2021-08-12 22:25:24 +02:00
elsid
902b0f9f84
Store jobs in the same container until they are processed
...
Push to queue and reorder only iterators.
2021-08-12 22:24:02 +02:00
elsid
8db640289c
Use single set to store pushed jobs for tiles
2021-08-12 22:05:44 +02:00
elsid
a99266a60e
Do not measure total navmesh generation duration
...
This is not a useful thing anymore.
2021-08-12 21:44:10 +02:00
elsid
9460a8760e
Move operator<< for UpdateNavMeshStatus to header
2021-08-12 20:23:57 +02:00
elsid
94e71d9b14
Avoid division by zero
2021-08-09 17:58:33 +02:00
elsid
0985d8e03d
Handle failed NavMesh allocation
2021-08-09 17:54:19 +02:00
elsid
a6260453ea
Add missing initialization
2021-08-09 17:54:19 +02:00
elsid
86e6d3dac8
Do not cache navmesh when only object transformation is changed
...
This saves cache capacity when a scene contains objects contantly transforming
by scripts and causing changes in navmesh. The probability to get cache hit for
such states is almost zero because even a constant change in a single float
value may give up to 2^32 different states.
2021-08-08 02:38:20 +02:00
elsid
3cbe93358a
Move dtNavMeshParams initialization to where it's required
2021-08-08 02:30:48 +02:00
elsid
41b02ff1aa
Copy only required RecastMeshObject fields
2021-08-07 12:38:01 +02:00
elsid
c91ef34a70
Avoid using a specific type for stored ref_ptr to extend lifetime
2021-08-07 12:20:55 +02:00
elsid
050b7d31aa
Create RecastMesh outside critical section
...
To not lock main thread when it tries to update objects.
2021-08-03 12:21:56 +02:00
elsid
c8987bda2f
Store reference to BulletShapeInstance for btCollisionShape
...
To keep btCollisionShape lifetime.
2021-08-03 12:21:56 +02:00
elsid
4574e5f565
Remove redundant Navigator API functions
2021-08-03 12:21:55 +02:00
elsid
9a5ec5fd03
Store heightfields as array of heights instead of triangles
...
To reduce size of RecastMesh and therefore cache size.
2021-07-26 00:22:21 +02:00
elsid
fdee9db20c
Consider RecastMeshManager not empty when there is water
2021-07-26 00:22:21 +02:00
elsid
24b802b3d8
Simplify adding water to recast mesh
...
Remove redundant computations and conversions.
2021-07-26 00:22:21 +02:00
elsid
5d6c93566d
Rename DetourNavigator::Water -> Cell
2021-07-26 00:22:21 +02:00
elsid
753767d6d9
Store only water shift
...
Rotation is not used.
2021-07-26 00:22:20 +02:00
elsid
da4ec31cd8
Remove redundant RecastMeshManager::Water
2021-07-26 00:22:20 +02:00
elsid
a1549321d7
Move Water struct out of RecastMesh class
2021-07-26 00:22:20 +02:00
elsid
d60edb36aa
Make RecastMesh independent from recast scale factor
...
To avoid scaling until it's required by delaying coordinates conversion until
navmesh generation.
2021-07-26 00:22:20 +02:00
elsid
af7059373c
Make RecastMesh independent from the order of RecastMeshBuilder calls
...
To make sure RecastMesh objects are equal if built with the same data but in
different order. Will be used later when there will be more than one place
building RecasMesh objects.
2021-07-26 00:22:20 +02:00
elsid
07c70dfb73
Remove unused local variables
2021-07-26 00:22:20 +02:00
elsid
d2b935684d
Add missing include
2021-07-21 11:37:50 +02:00
elsid
beeb882ea8
Do not use off mesh connections as a part of navmesh cache key
...
To reduce cache size and make it more flexible.
Adding off mesh connections to the navmesh is the last step of navmesh
generation and it's very fast comparing to other steps (microseconds vs
milliseconds). Having less cache size makes get and set operations almost 2x
times faster that also have an order of microseconds. So in total there is
no performance impact.
2021-07-14 12:19:17 +02:00
elsid
09f9075842
Use RecastMeshBuilder once to create RecastMesh
...
This allows to move all data out of the object instead of copying.
2021-07-04 22:18:05 +02:00
elsid
0193c95b26
Shrink to fit recast mesh data
2021-07-04 22:18:05 +02:00
elsid
94e460ba1e
Use proper check for distance
...
To avoid invalid results for r < 1.
2021-06-30 20:11:41 +02:00
elsid
a54c4bc2e9
Check dtNavMeshQuery::findStraightPath status
2021-06-30 20:10:57 +02:00
elsid
793c30ab8d
Check dtNavMeshQuery::getPolyHeight status
...
Otherwise when it fails a node with zero height will be added to a path.
2021-06-30 20:06:48 +02:00
elsid
7e1630a7ad
Remove redundant getPolyHeight wrapper
2021-06-30 20:04:16 +02:00
elsid
cc08a45c31
Move include where it is needed
2021-06-30 20:02:08 +02:00
elsid
a3942a1e0a
Remove redundant check for y coordinate in inRange function
2021-06-30 20:00:43 +02:00
Petr Mikheev
4b98d460da
Merge branch 'const_moar' into 'master'
...
Sprinkle some const ref
See merge request OpenMW/openmw!963
2021-06-29 17:28:51 +00:00
psi29a
67f32263b2
Merge branch 'fix_malexa_escape' into 'master'
...
Inscribe physical bounding box into navmesh agent cylinder (#6114 )
Closes #6114
See merge request OpenMW/openmw!967
2021-06-28 14:26:08 +00:00
elsid
1552e7e3e3
Add pathgrid edges as one direction off mesh connection
2021-06-27 17:48:44 +02:00
elsid
ff1af5e8ec
Use only off mesh connections starting or ending in a given tile
2021-06-27 17:48:41 +02:00