1
0
Fork 1
mirror of https://github.com/TES3MP/openmw-tes3mp.git synced 2025-01-15 21:19:57 +00:00
openmw-tes3mp/apps/openmw/mwphysics
fredzio 31d8ce266b Close a race between main and physics threads when actor is positioned by scripts.
When a position is forced, the actor position in physics subsystem is
overriden. The background physics thread is not made aware of this,
its result are simply discarded.

There is a short window where this doesn't work (in this
example, actor is at A and script moves it to B)
1) actor position is set to B. (among others, Actor::mPosition is set to B)
2) physics thread reset Actor::mPosition with stale value (around A)
3) main thread read simulation result, reset Actor::mSkipSimulation flag => actor is at B
4) physics thread fetch latest Actor::mPosition value, which is around A
5) main thread read simulation result, actor is around A

To avoid this situation, do not perform 2) until after 3) occurs. This
way, at 4) starts the simulation with up-to-date Actor::mPosition
2021-03-06 10:41:55 +01:00
..
actor.cpp Close a race between main and physics threads when actor is positioned by scripts. 2021-03-06 10:41:55 +01:00
actor.hpp Revert "Remove physics dependency on basenode" 2021-01-29 16:51:13 +04:00
actorconvexcallback.cpp Use convexSweepTest for projectile movement to solve any 2021-01-21 20:36:33 +01:00
actorconvexcallback.hpp Use convexSweepTest for projectile movement to solve any 2021-01-21 20:36:33 +01:00
closestnotmerayresultcallback.cpp Use convexSweepTest for projectile movement to solve any 2021-01-21 20:36:33 +01:00
closestnotmerayresultcallback.hpp Use convexSweepTest for projectile movement to solve any 2021-01-21 20:36:33 +01:00
collisiontype.hpp Use a separate collision type for doors (Fixes #1962) 2015-12-18 18:32:42 +01:00
constants.hpp values for this higher than sGroundOffset cause jittering on some surface; use safe-seeming value slightly less than sGroundOffset 2020-12-27 22:16:11 +00:00
contacttestresultcallback.cpp Do not block a door when it turns away. 2020-11-01 23:01:18 +01:00
contacttestresultcallback.hpp Do not block a door when it turns away. 2020-11-01 23:01:18 +01:00
contacttestwrapper.cpp values for this higher than sGroundOffset cause jittering on some surface; use safe-seeming value slightly less than sGroundOffset 2020-12-27 22:16:11 +00:00
contacttestwrapper.h values for this higher than sGroundOffset cause jittering on some surface; use safe-seeming value slightly less than sGroundOffset 2020-12-27 22:16:11 +00:00
deepestnotmecontacttestresultcallback.cpp Visualize hand to hand hits 2020-10-26 13:48:15 +01:00
deepestnotmecontacttestresultcallback.hpp Visualize hand to hand hits 2020-10-26 13:48:15 +01:00
hasspherecollisioncallback.hpp components/compiler cleanup; also cleaned up related cascading warnings; fixed up final/override issues 2020-10-22 23:57:53 +02:00
heightfield.cpp heightfield: Only buildAccelerator on Bullet 2.89+ 2021-03-01 08:27:24 +00:00
heightfield.hpp Make all physics object manage their own resources 2021-01-10 14:56:35 +01:00
movementsolver.cpp Ignore projectiles inside of MovementSolver::unstuck. It is normal for actors to be inside of a 2021-02-07 18:32:03 +01:00
movementsolver.hpp values for this higher than sGroundOffset cause jittering on some surface; use safe-seeming value slightly less than sGroundOffset 2020-12-27 22:16:11 +00:00
mtphysics.cpp Collect all available stats if OPENMW_OSG_STATS_FILE is set and point to 2021-01-27 08:04:33 +00:00
mtphysics.hpp Move stats update into their own function. 2020-12-18 21:18:04 +01:00
object.cpp Revert "Remove physics dependency on basenode" 2021-01-29 16:51:13 +04:00
object.hpp Revert "Remove physics dependency on basenode" 2021-01-29 16:51:13 +04:00
physicssystem.cpp Merge branch 'boltsize' into 'master' 2021-02-15 08:40:30 +00:00
physicssystem.hpp Merge branch 'boltsize' into 'master' 2021-02-15 08:40:30 +00:00
projectile.cpp Use convexSweepTest for projectile movement to solve any 2021-01-21 20:36:33 +01:00
projectile.hpp Use convexSweepTest for projectile movement to solve any 2021-01-21 20:36:33 +01:00
projectileconvexcallback.cpp Remove a brainfart from precise projectile handling: all non-actor 2021-01-27 07:15:09 +01:00
projectileconvexcallback.hpp Use convexSweepTest for projectile movement to solve any 2021-01-21 20:36:33 +01:00
ptrholder.hpp Don't cache Ptr, it can be updated while the simulation is running. 2020-12-18 22:22:37 +01:00
raycasting.hpp Use convexSweepTest for projectile movement to solve any 2021-01-21 20:36:33 +01:00
stepper.cpp values for this higher than sGroundOffset cause jittering on some surface; use safe-seeming value slightly less than sGroundOffset 2020-12-27 22:16:11 +00:00
stepper.hpp values for this higher than sGroundOffset cause jittering on some surface; use safe-seeming value slightly less than sGroundOffset 2020-12-27 22:16:11 +00:00
trace.cpp Use convexSweepTest for projectile movement to solve any 2021-01-21 20:36:33 +01:00
trace.h Use tracer hit height to skip stepping up in movement solver. 2016-12-24 23:07:44 +01:00