elsid
9f808fbe3a
Move findPath-like navigator functions into a separate header
2021-11-06 00:34:06 +01:00
elsid
9950132a5f
Allow travelling actors find path over pathgrid navmesh area type
...
In addition to other navmesh areas. This makes actors behaviour closer to
vanilla when pathgrid is correct.
2021-09-29 01:05:23 +02:00
psi29a
4bf22f3ca0
Merge branch 'fix_pathgrid_path' into 'master'
...
Use pathgrid path when destination is closer to different graph component node
See merge request OpenMW/openmw!1155
2021-09-08 09:55:42 +00:00
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
elsid
9112c65afc
Use pathgrid path when destination is closer to different graph component node
...
Partially revert d863267d5cb5f4062937f86c37af3b0c8f9479cf to restore 0.46
behaviour for pathgrid based pathfinding.
2021-08-18 19:52:10 +02:00
elsid
5624fe1911
Consider path not found when there is navmesh query error
...
Fix a specific case when the guard at the start of the game fails to find path
due to failed getPolyHeight call that results into a partial path to the
target.
2021-06-30 20:13:27 +02:00
elsid
e7d68d3d1b
Validate almost straight shortcuts by navmesh raycast
...
Check whether it's possible to actually move over navmesh by such shortcut.
2021-06-21 18:50:45 +02:00
jvoisin
be371ccd9f
An another pass
2021-04-30 20:27:33 +02:00
elsid
39c0ce9ddf
Build limited path for far destinations
...
When distance between start and end point is greater than max radius of area
possibly covered by navmesh there is no way to find path via navmesh. Also if
distance is greater than cell size navmesh might not exists withing mentioned
area because cell is not loaded therefore navmesh is not generated. So minumum
of these values is used to limit max path distance. Assuming that path
actually exists it's possible to build path to the edge of a circle. When
actor reaches initial edge path is built further. However it will not be
optimal.
2021-03-23 23:23:12 +01:00
Petr Mikheev
9590377f22
Don't ignore Z in path finding if actor can move by Z.
2021-01-29 22:30:20 +01:00
Petr Mikheev
642ca02e35
Shorten almost straight paths only if smooth movement is enabled; reduce angle limit for the shortening.
2021-01-29 22:30:01 +01:00
elsid
a3ab8dfbb4
Revert "Merge branch 'movement_fix2' into 'master'"
...
This reverts merge request !496
2021-01-28 12:48:19 +00:00
Petr Mikheev
bc2cec86e9
Fix bug: NPCs doesn't move if the target is exactly above or exactly below.
2021-01-26 00:05:28 +01:00
Evil Eye
2a583e2337
consider empty paths as not constructed
2021-01-08 17:24:13 +01:00
Evil Eye
57c92673bc
Consider a path completed if it was non-empty
2020-12-30 16:09:12 +01:00
Petr Mikheev
71ba94a89a
Smooth turning; smooth stopping; combat headtracking
2020-09-22 22:50:44 +02:00
elsid
b095ca6c86
Use actor speed to define area cost for pathfinding
2020-06-13 02:24:52 +02:00
elsid
d863267d5c
Do not fallback to direct path without pathgrid
...
Assume this might happen only due buildPath call when navmesh can't
provide path.
2020-06-12 21:46:10 +02:00
elsid
c4cd3b2c4f
Add pathgrid to navmesh as off mesh connection
2020-06-12 21:04:02 +02:00
elsid
d86669843e
Remove unseud pointTolerance argument
2020-05-16 18:44:12 +02:00
elsid
349040ffb2
Use status codes to handle navigator errors instead of exceptions
...
For find path use case.
2020-02-04 22:33:56 +01:00
elsid
f7caeefddb
Fallback to straight path when navmesh and pathgrind are not available
2020-01-29 11:14:07 +01:00
elsid
e4d0af6a6d
Use z coordinate for path distance when diff by z is greater then actor height
2019-10-19 22:01:32 +02:00
elsid
81832f8e17
Reuse distance functions
2019-10-19 12:51:37 +02:00
elsid
6c46d929c2
Build path to first pathgrid node by navmesh
2019-08-03 16:10:55 +02:00
Andrei Kortunov
14b756a692
Use a generic logging system for RecastNavigation
2019-04-08 20:31:21 +04:00
elsid
a65f60e1f1
Build path only by navmesh for wandering near spawn
2019-03-21 23:15:47 +03:00
elsid
ff67a9e233
Build straight path for wandering flying and water creatures
2019-03-21 23:15:47 +03:00
elsid
ea80a81538
Drop path points while tolerance allows
2019-03-08 22:33:34 +03:00
elsid
b9f21ec81a
Use custom steps size to make smooth path depending on half extents
2019-03-08 22:33:34 +03:00
elsid
5405efd3b5
Do not build path by navigator for pure water and flying creatures
...
They don't need to move by surfaces and to open/close doors.
2019-03-05 22:45:05 +03:00
elsid
49d81241db
Merge branch 'master' into pathfinder_detour
2018-10-28 17:08:09 +03:00
elsid
03d4ce5e49
Log find path exception with level verbose, add more info to message
2018-10-15 23:25:42 +03:00
Andrei Kortunov
ca07e3a364
Check for obstacle before back up (bug #4656 )
2018-10-14 12:22:43 +04:00
elsid
e57504ae7c
Lower log level
2018-10-13 22:22:15 +03:00
elsid
bbd82a743a
Use different tolerance for path point and destination
2018-10-13 22:16:34 +03:00
elsid
661da42bd2
Build path by navigator
2018-10-13 22:16:33 +03:00
elsid
d02beae5a8
Find path for actors according to their abilities to swim and walk
2018-10-13 22:16:33 +03:00
elsid
fafba8ea0c
Use recastnavigation to find path
2018-10-13 22:16:25 +03:00
elsid
4fe764c3a5
Update and check for complete Pathfinder path by different methods
2018-10-13 22:16:24 +03:00
elsid
b6dd2119a6
Make Pathfinder constructor inline
2018-10-13 22:16:24 +03:00
elsid
92f52287bf
Make PathFinder::ClearPath inline
2018-10-13 22:16:24 +03:00
elsid
3655f19373
Set PathFinder::mCell to nullptr when clear path
2018-10-13 22:16:23 +03:00
elsid
85bbf9d034
Clear path without check for empty
2018-10-13 22:16:23 +03:00
elsid
ca3d0594b3
Do not store pointer to Pathgrid in PathFinder
2018-10-13 22:16:23 +03:00
elsid
3565d92e11
Make PathFinder::getPathCell inline
2018-10-13 22:16:23 +03:00
elsid
6d89241178
Check is path completed by osg::Vec3f position
2018-10-13 22:16:21 +03:00
elsid
2c6daa74a9
Simplify PathFinder::checkPathCompleted
2018-10-13 22:16:21 +03:00
elsid
31340a212a
Fix functions name style
2018-10-13 22:16:21 +03:00
elsid
9b3756f8bc
Store path points in deque
2018-10-13 22:16:20 +03:00