1
0
mirror of https://gitlab.com/OpenMW/openmw.git synced 2025-01-26 18:35:20 +00:00

265 Commits

Author SHA1 Message Date
ζeh Matt
18f16eac4c
Refactor DetourNavigator to pass prng along, use world prng for AiWander 2022-05-17 20:37:15 +03:00
ζeh Matt
c3d02492df
Cleanup stopMovement 2022-03-29 19:49:02 +03:00
ζeh Matt
8103ff2e6f
Make the CI happy 2022-03-21 17:49:42 +02:00
ζeh Matt
08fae7be6e
Pass the prng from world where appropriate 2022-03-21 17:49:42 +02:00
elsid
595c2e0a8e
Use unique_ptr to manage AiPackage lifetime 2022-02-23 00:39:30 +01:00
Bret Curtis
d1fb854521 move most of the files from esm to esm3, keep common code in esm; this is make space for a future with esm4
esm typo

esm typo
2022-01-23 17:04:48 +01:00
Evil Eye
231da19aa4 Load repeat flag and use reset argument 2021-11-20 11:02:58 +01:00
elsid
9f808fbe3a
Move findPath-like navigator functions into a separate header 2021-11-06 00:34:06 +01:00
elsid
c0ef4417c3
Check AiTravel destination for other actors presence
Use faster aabbTest but without destance filter. To avoid dependency on a
specific constant and correctly handle situations when there is a big
difference between actors sizes.
2021-09-29 01:05:23 +02:00
elsid
d36595e09e
Make sure PathFinder::getClosestPoint is not called with failing precondition
Pathgrid should be not nullptr and points should be not empty.
2021-09-23 01:48:54 +02: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
fredzio
88a5ca440b Change moveObject() to take a osg::Vec3f argument instead of 3 floats
for readability.
2021-07-30 23:24:49 +02:00
Evil Eye
c5aa3d4f77 Don't stop and turn to the player while sneaking or jumping 2021-05-09 19:55:27 +02:00
jvoisin
ee2446d5c4 Trim even more 2021-04-30 20:11:41 +02:00
elsid
675c0ab72f
Apply uniform random deviation to AI reaction timer
This allows to distribute AI reaction calls over time.

Before this change actors appearing at the same frame will react in the same
frame over and over because AI reaction period is constant. It creates a
non-uniform CPU usage over frames. If a single frame has too many AI reactions
it may cause stuttering when there are too many actors on a scene for current
system.

Another concern is a synchronization of actions between creatures and NPC.
They start to go or hit at the same frame that is unnatural.
2021-03-20 14:47:54 +01:00
Petr Mikheev
b838782557 Avoid collisions between actors. 2020-09-22 22:50:44 +02:00
Petr Mikheev
bd6b984022 Smoothing speed in CharacterController 2020-09-22 22:50:44 +02:00
Petr Mikheev
71ba94a89a Smooth turning; smooth stopping; combat headtracking 2020-09-22 22:50:44 +02:00
Andrei Kortunov
e6036e13b9 Use more C++11 loops in game mechanics code 2020-07-25 15:54:49 +04:00
elsid
b095ca6c86
Use actor speed to define area cost for pathfinding 2020-06-13 02:24:52 +02:00
elsid
c4cd3b2c4f
Add pathgrid to navmesh as off mesh connection 2020-06-12 21:04:02 +02:00
elsid
5b34ef224b
Replace AiPackage virtual methods by options 2020-06-06 12:00:17 +02:00
elsid
da8ea9d8c7
Mark not changing AiPackages fields as const 2020-06-04 23:12:23 +02:00
Bret Curtis
18bb6dd223
Merge pull request #2859 from elsid/aipackage_single_clone
Single clone function definition for all AI packages
2020-06-01 01:21:57 +02:00
Capostrophic
efd5f13b2b Make greeting-related actor data temporary (bug #5397) 2020-05-30 00:51:58 +03:00
elsid
8e0934cbd8
Single AI package clone definition 2020-05-20 20:15:29 +02:00
elsid
d86669843e
Remove unseud pointTolerance argument 2020-05-16 18:44:12 +02:00
elsid
256c9917a4
Make AiWander::isPackageCompleted const 2020-05-16 18:44:12 +02:00
elsid
131f2557b1
Split functions to remove redundant clearPath argument 2020-05-16 18:44:12 +02:00
elsid
b8513e0318
Remove unused arguments 2020-05-16 18:44:12 +02:00
elsid
489a92de95
Check for hidden path only for actors wandering manually
Actors who doesn't wander over pathgrid.
2020-05-16 16:26:42 +02:00
elsid
e616188265
Do not allow wandering actor to have empty path 2020-05-16 16:11:30 +02:00
elsid
71350c6dff
Remove redundant variable 2020-05-16 16:11:30 +02:00
elsid
9404b1dd72
Stop wandering when destination is hidden or occupied by other actor 2020-02-10 22:29:54 +01:00
elsid
4a0c056489
Do not wander to occupied area by other actor 2020-02-10 22:29:54 +01:00
elsid
85414e2353
Check for line of sight for wander destination 2020-02-10 22:29:54 +01:00
Andrei Kortunov
1db51a9e08 Re-work wandering outside of initial cell (bug #5261, bug #5262) 2020-02-02 11:02:19 +04:00
elsid
8e0b638145
Fix start position for AiWander random point selection 2020-01-28 20:29:52 +01:00
elsid
1e106013a0
Use navmesh to find wander destination outside pathgrid for ground based actors
Use dtNavMeshQuery::findRandomPointAroundCircle from recastnavigation
2020-01-21 00:01:06 +01:00
Andrei Kortunov
69aceb5c1e Split greetings from AiWander (bug #4594) 2019-10-10 09:28:40 +04:00
elsid
6c46d929c2
Build path to first pathgrid node by navmesh 2019-08-03 16:10:55 +02:00
Capostrophic
b8afe14206 Disallow paralyzed actors to greet the player (bug #5074) 2019-06-29 13:31:36 +03:00
Capostrophic
25e52f7dfe Use 2D distance for fight rating of vertically moving actors (bug #4961) 2019-06-05 21:41:02 +03:00
elsid
287433efa8
Stop walking for water and flying creatures after single stuck 2019-03-21 23:15:47 +03: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
ebdff5d96e
Check for height map when cast ray for AiWander path 2019-03-21 23:15:47 +03:00
elsid
e033b0c565
Avoid build path through the ground for flying wandering creatures 2019-03-21 23:15:46 +03:00
elsid
e82d65a2c7
Use if-continue to skip build path 2019-03-21 23:15:46 +03:00
elsid
1218e4e15d
Use player half extents only to find path in exterior cells 2019-03-04 22:59:20 +03:00