Commit Graph

17151 Commits (db32b8de917b2290c679d8ded4b0057ffdd8b61e)

Author SHA1 Message Date
fredzio 0fac172413 Remove wrong line that slipped in yesterday. 4 years ago
Andrei Kortunov 50352daf90 Rework knockdown and knockout animations fallbacks 4 years ago
Evil Eye 582f1503c1 Merge branch 'setpos' into 'master'
Unbreak SetPos and the mods using it (#5919)

See merge request OpenMW/openmw!696
4 years ago
fredzio 7a67492d81 Unbreak SetPos and the mods using it.
To make SetPos works with async physics, it was modified to register a
position offset that would be applied to the real position during the
simulation.

A common pattern to teleport NPC in scripts is a sequence of SetPos/Disable/Enable in the same frame.
Since Disable/Enable creates a new physics actor using last known
RefData::Position, the registered offset never get a chance to be applied.

Modify disable() to call moveObject with the offset applied, so that the newly created physics actor will have up-to-date position
4 years ago
fredzio b58244ac26 Guard the Bullet drawing method with a read lock on the
btCollisionWorld. It closes a race on the collision shapes coordinates.
4 years ago
fredzio dbd6e3bfee Replace pointless usage of shared_ptr by unique_ptr / non-owning raw
pointer for btCollisionWorld.
4 years ago
fredzio ccd3cbc69a Use saved actor position instead of reading again RefData in unstuck. It
is a race condition to do so.
4 years ago
Andrei Kortunov 5fce5b12f4 Merge branch 'drop_the_bird' into 'master'
Disallow inserting containers, creatures, and npcs from the save game not present in content files

Closes #5884

See merge request OpenMW/openmw!683
4 years ago
Andrei Kortunov b61337643e Merge branch 'issue-5680' into 'master'
change aim calculation

See merge request OpenMW/openmw!685
4 years ago
Max 2cd96e56d5 create constant and use constant in other parts of the code base 4 years ago
Max e56efdd562 change aim calculation 4 years ago
elsid 453e94ea9f
Use half extents for destination distance tolerance in AiEscort
For actors moving in water destination may be located at such z coordinate
that they can't reach.
4 years ago
elsid f32e1790bc
Add half extents to AiEscord max distance
For actors with big bounding box given constants may not work properly like
it's not possible to get close enough to actor from a given angle to make it
move.
4 years ago
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.
4 years ago
Evil Eye cf5a93d712 Also run NPC validation for modified base records 4 years ago
Evil Eye e79036f4e0 Don't erase the player 4 years ago
psi29a 1af50b7e23 Merge branch 'sound_cleanup' into 'master'
Sound cleanup

See merge request OpenMW/openmw!567
4 years ago
psi29a 415591b7ed Merge branch 'ai_reaction_deviation' into 'master'
Distribute AI reactions and engage combat calls over time

See merge request OpenMW/openmw!674
4 years ago
Evil Eye 5e1960a76a Disallow inserting containers, creatures, and npcs from the save game not present in content files 4 years ago
Evil Eye 8e9bd5c0bd Don't throw an exception when equipping a bound item fails 4 years ago
Evil Eye 580fa78034 Don't purge summon effects with invalid creature ids 4 years ago
wareya 63f01d8c5f Prevent physics death spiral by falling back to true delta time when needed 4 years ago
psi29a 86bd173d69 Merge branch 'refactoring' into 'master'
"static const" -> "static constexpr" in headers

See merge request OpenMW/openmw!676
4 years ago
Petr Mikheev 7bbbe40abe "static const" -> "static constexpr" in headers 4 years ago
wareya e722c99e62 forgot to initialize these variables 4 years ago
wareya 40265bf118 make unstucking slightly smarter (can turn itself off, also acts like flat ground) 4 years ago
elsid 62c0ecbbd0
Separate engage combat timer for each actor
Use DeviatingPeriodicTimer to distribute calls over time. This reduces
stuttering and make AI more natural.
4 years ago
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.
4 years ago
Andrei Kortunov 54daa234bd Reset watched stats upon reload or new game start 4 years ago
wareya 1471ef003a fix async physics interpolation 4 years ago
AnyOldName3 162b25c180 Fix sunglare on Mesa
The sunglare works by comparing an occlusion query with depth testing on
against one with depth testing off to determine if there's anything
closer to the camera than the maximum depth buffer value. For the depth-
tested query, the depth range is set from 1 to 1 so it's always drawn at
the maximum distance. Originally, we had the depth function set to LESS,
meaning that the query would always fail as 1 is not less than 1, but
also glPolygonOffset was used to move the query by "the smallest value
that is guaranteed to produce a resolvable offset for a given
implementation" closer to the camera. While other driver and hardware
combinations do that, Mesa seems to be clamping to the depth range, so
still failing.

Instead, it's simpler to just get rid of the polygon offset and change
the depth test to LEQUAL as 1 *is* less than or equal to 1, but not than
any other possible depth buffer value.
4 years ago
Evil Eye d1e8c6b223 Merge branch 'magical_rat' into 'master'
Register copied Spells with SpellList

See merge request OpenMW/openmw!662
4 years ago
AnyOldName3 ba74fbf30e Fix MyGUI log
Also actually print an error to the regular log when the MyGUI log can't
be opened so we notice if we kill it again in under five years.
4 years ago
Bret Curtis 40c989d732 allman style 4 years ago
Evil Eye c2580d60e9 Register copied Spells with SpellList 4 years ago
Bret Curtis 9fc0649fb6 a better check to avoid the mCell assertion, so compariing nullptr to current cell will refurn false anyway 4 years ago
Bret Curtis 49545e6d29 add comments as to why we need to check that the player is grounded or not; only run once during initial cell loading 4 years ago
Bret Curtis fff1df9ee4 revert some blank lines 4 years ago
Bret Curtis c067782814 proper fix that traces down the player when a cell is loaded; we also only run once if the current cell being loaded is the one that the player is in. 4 years ago
Bret Curtis 1479f98793 hacky solution with debug; seems that player is added before cell so tracing down will not find anything 4 years ago
Bret Curtis 19ad7d7f0c Resolve #5895 by setting the initial mOnGround state to false; we do this because the movement solver runs one frame behind so when we run through the loop the first time we assume we are on the ground even though we may be 400 units in the air. 4 years ago
psi29a 514a55ed4c Merge branch 'fix_5846' into 'master'
Fix #5846 (headtracking)

Closes #5846

See merge request OpenMW/openmw!652
4 years ago
glassmancody.info 6255b0492b Resolve crashes on exit with visible MyGUI widgets 4 years ago
Petr Mikheev 447c3b9489 Fix 5846 4 years ago
elsid 9275dd2dcb
Avoid virtual dispatch in SoundManager dtor 4 years ago
elsid b0311ce9f1
Remove DEFAULT_OUTPUT macros 4 years ago
elsid e30a59772c
Remove DEFAULT_DECODER macros 4 years ago
Evil Eye 4db2f79a3c Merge branch 'setpos' into 'master'
Use relative movement inside of SetPos

See merge request OpenMW/openmw!649
4 years ago
fredzio cb39f8fb01 Use moveObjectBy in SetPos 4 years ago
fredzio 03b86c232b Apply the position offset even if the simulation is not performed
because we're too fast.
4 years ago