1
0
Fork 1
mirror of https://github.com/TES3MP/openmw-tes3mp.git synced 2025-03-31 10:36:44 +00:00
openmw-tes3mp/apps/openmw/mwphysics
fredzio 5bd921fa3a Restore pre-async handling of absolute actors positionning
One of the issue since the introduction of async physics is the quirky
handling of scripted moves. Previous attempt to account for them was
based on detecting changes in actor position while the physics thread is
running. To this end, semantics of Actor::updatePosition() (which is
responsible for set the absolute position of an actor in the world) was
toned down to merely store the desired position, with the physics system
actually responsible for moving the actor. For the cases were complete
override of the physics simulation was needed, I introduced
Actor::resetPosition(), which actually have same semantics as
original updatePosition(). This in turn introduced a loads of new bugs
when the weakened semantics broke key assumptions inside the engine
(spawning, summoning, teleport, etc).
Instead of tracking them down, count on the newly introduced support for
object relative movements in the engine (World::moveObjectBy) to
register relative movements and restore original handling of absolute positionning.

Changes are relatively small:
- move resetPosition() content into updatePosition()
- call updatePosition() everywhere it was called before
- remove all added calls to the now non-existing resetPosition()

tldr; ditch last month worth of bug introduction and eradication and redo
it properly
2020-12-20 19:23:09 +01:00
..
actor.cpp Restore pre-async handling of absolute actors positionning 2020-12-20 19:23:09 +01:00
actor.hpp Restore pre-async handling of absolute actors positionning 2020-12-20 19:23:09 +01:00
closestnotmeconvexresultcallback.cpp Don't allow projectiles to stand still when they hit an ally. 2020-12-14 22:23:01 +01:00
closestnotmeconvexresultcallback.hpp Mark overrided methods by override keyword 2020-10-16 22:18:54 +04:00
closestnotmerayresultcallback.cpp When doing a ray cast to the next projectile position, ignore collisions 2020-12-15 21:34:58 +01:00
closestnotmerayresultcallback.hpp Projectile to projectile collision 2020-12-08 09:06:34 +01:00
collisiontype.hpp Use a separate collision type for doors (Fixes #1962) 2015-12-18 18:32:42 +01:00
constants.hpp Separate Stepper 2020-03-31 00:38:34 +03: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
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 Support bullet with double precision 2020-05-13 19:24:28 +02:00
heightfield.hpp Support bullet with double precision 2020-05-13 19:24:28 +02:00
movementsolver.cpp Don't cache Ptr, it can be updated while the simulation is running. 2020-12-18 22:22:37 +01:00
movementsolver.hpp We need to update the collision world after each step. 2020-10-15 06:41:22 +02:00
mtphysics.cpp Restore pre-async handling of absolute actors positionning 2020-12-20 19:23:09 +01:00
mtphysics.hpp Embed physics simulation results inside of actor class. 2020-12-18 12:54:02 +01:00
object.cpp Generate physics collisions for projectiles (bug #3372) 2020-12-08 09:05:38 +01:00
object.hpp Process movement queue in one or several background threads 2020-10-15 06:41:35 +02:00
physicssystem.cpp Restore pre-async handling of absolute actors positionning 2020-12-20 19:23:09 +01:00
physicssystem.hpp Restore pre-async handling of absolute actors positionning 2020-12-20 19:23:09 +01:00
projectile.cpp Don't allow projectiles to stand still when they hit an ally. 2020-12-14 22:23:01 +01:00
projectile.hpp Don't allow projectiles to stand still when they hit an ally. 2020-12-14 22:23:01 +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 Modify projectile collision to work with async physics 2020-12-08 09:06:33 +01:00
stepper.cpp Separate Stepper 2020-03-31 00:38:34 +03:00
stepper.hpp Separate Stepper 2020-03-31 00:38:34 +03:00
trace.cpp Generate physics collisions for projectiles (bug #3372) 2020-12-08 09:05:38 +01:00
trace.h Use tracer hit height to skip stepping up in movement solver. 2016-12-24 23:07:44 +01:00