Skip to content

Fix actor simulation running when completely idle

cykoder requested to merge cykoder/openmw:fix-actor-sim-when-idle into master

Fixes:

Retains edge cases, such as lifts. The vanilla engine does not seem to process actor physics when they are completely idle, OpenMW is currently doing so and it breaks certain functionality. Historical issue/PR: https://github.com/OpenMW/openmw/pull/1893

This likely doesnt match completely vanilla behaviour entirely, as #5862 is probably achieved by not even checking for ground underneath the actor (which this MR does). An alternative implementation that may also fix #5862 is possible by just not resetting the standing on ptr for the idle actor, and then there is no need to call doTrace to check if on ground. However, this has a few issues too:

  • Water walking then doesnt get checked
  • If object is removed from under actor by certain means, they will stay floating
  • If "remembered" ground isnt valid anymore (moved or disabled) then it will be incorrect
  • Probably more I can't think of atm
Edited by cykoder

Merge request reports