1
0
Fork 1
mirror of https://github.com/TES3MP/openmw-tes3mp.git synced 2025-01-15 21:49:56 +00:00
openmw-tes3mp/apps/openmw/mwworld
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
..
action.cpp Make the PlayMode and PlayType enums scoped 2017-09-15 02:36:59 -07:00
action.hpp Adjustments to RemoveItem behavior 2017-04-13 22:33:13 +09:00
actionalchemy.cpp Include cleanup 2019-02-19 18:40:33 +03:00
actionalchemy.hpp Mark overrided methods by override keyword 2020-10-16 22:18:54 +04:00
actionapply.cpp Added MWMechanics::isPlayerInCombat() 2015-09-10 18:48:34 +12:00
actionapply.hpp Mark overrided methods by override keyword 2020-10-16 22:18:54 +04:00
actiondoor.cpp Opening doors 2013-04-28 14:59:15 +02:00
actiondoor.hpp Mark overrided methods by override keyword 2020-10-16 22:18:54 +04:00
actioneat.cpp Include cleanup 2019-02-19 18:40:33 +03:00
actioneat.hpp Mark overrided methods by override keyword 2020-10-16 22:18:54 +04:00
actionequip.cpp Improve equipment logic (bug #5223) 2019-12-14 22:30:27 +04:00
actionequip.hpp Mark overrided methods by override keyword 2020-10-16 22:18:54 +04:00
actionharvest.cpp Rework container resolution (#3006) 2020-10-13 17:46:32 +02:00
actionharvest.hpp Mark overrided methods by override keyword 2020-10-16 22:18:54 +04:00
actionopen.cpp Allow ActionOpen and ActionTalk only for player (bug #5210 2019-11-18 12:41:11 +04:00
actionopen.hpp Mark overrided methods by override keyword 2020-10-16 22:18:54 +04:00
actionread.cpp Implement sBookSkillMessage GMST 2018-04-02 21:12:38 +03:00
actionread.hpp Mark overrided methods by override keyword 2020-10-16 22:18:54 +04:00
actionrepair.cpp Remove redundant includes 2019-02-23 08:02:12 +04:00
actionrepair.hpp Mark overrided methods by override keyword 2020-10-16 22:18:54 +04:00
actionsoulgem.cpp Include cleanup 2019-02-19 18:40:33 +03:00
actionsoulgem.hpp Mark overrided methods by override keyword 2020-10-16 22:18:54 +04:00
actiontake.cpp Use drag and drop for ActionTake when InventoryWindow is active (bug #4543) 2018-09-10 15:18:07 +04:00
actiontake.hpp Mark overrided methods by override keyword 2020-10-16 22:18:54 +04:00
actiontalk.cpp Allow ActionOpen and ActionTalk only for player (bug #5210 2019-11-18 12:41:11 +04:00
actiontalk.hpp Mark overrided methods by override keyword 2020-10-16 22:18:54 +04:00
actionteleport.cpp Fix follower aggression when traveling. Summoning still has problems but less intrusive than current implementation. 2020-10-03 20:05:17 +00:00
actionteleport.hpp Mark overrided methods by override keyword 2020-10-16 22:18:54 +04:00
actiontrap.cpp Implement and use getDistanceToFacedObject() 2016-07-08 23:28:49 +09:00
actiontrap.hpp Mark overrided methods by override keyword 2020-10-16 22:18:54 +04:00
cellpreloader.cpp Merge pull request #3018 from akortunov/emplace 2020-11-01 01:58:56 +03:00
cellpreloader.hpp avoid pagerebuild when reloading a same save 2020-06-13 00:22:28 +02:00
cellref.cpp Avoid copying strings in SearchVisitor and readReferenceCollection 2019-10-28 19:28:14 +03:00
cellref.hpp Avoid copying strings in SearchVisitor and readReferenceCollection 2019-10-28 19:28:14 +03:00
cellreflist.hpp Fix possible reference duplication when the refID is modified by a plugin (Bug #3471) 2016-07-22 03:58:23 +02:00
cells.cpp Replace zeroes and nulls by nullptrs 2020-11-29 11:14:07 +04:00
cells.hpp Merge branch 'radioactive' into 'master' 2020-10-20 16:56:22 +00:00
cellstore.cpp Replace zeroes and nulls by nullptrs 2020-11-29 11:14:07 +04:00
cellstore.hpp Allow targeting non-unique actors with StartScript (bug #2311) 2020-05-10 14:57:06 +02:00
cellvisitors.hpp Replace all NULLs to nullptr 2018-10-09 10:21:12 +04:00
class.cpp Merge branch 'movement_refactoring' into 'master' 2020-08-27 11:54:30 +00:00
class.hpp Rework container resolution (#3006) 2020-10-13 17:46:32 +02:00
containerstore.cpp Use range based for loops and auto 2020-12-04 18:34:51 +01:00
containerstore.hpp Fix remove item regression 2020-10-26 20:13:24 +01:00
contentloader.hpp Remove redundant includes 2019-02-23 08:02:12 +04:00
customdata.cpp Native graphics herbalism support (feature #5010) 2019-05-02 23:03:47 +04:00
customdata.hpp Native graphics herbalism support (feature #5010) 2019-05-02 23:03:47 +04:00
datetimemanager.cpp Introduce a separate class to control world date and time 2020-06-05 12:07:32 +04:00
datetimemanager.hpp Introduce a separate class to control world date and time 2020-06-05 12:07:32 +04:00
doorstate.hpp Add enum type for door state 2019-08-25 15:21:00 +02:00
esmloader.cpp Silence -Wreorder warnings, and remove -Wno-reorder. 2015-05-21 22:46:44 -05:00
esmloader.hpp Mark overrided methods by override keyword 2020-10-16 22:18:54 +04:00
esmstore.cpp Replace zeroes and nulls by nullptrs 2020-11-29 11:14:07 +04:00
esmstore.hpp Replace zeroes and nulls by nullptrs 2020-11-29 11:14:07 +04:00
failedaction.cpp Play locked sounds on locked objects instead of actors 2016-08-10 21:31:14 +09:00
failedaction.hpp Mark overrided methods by override keyword 2020-10-16 22:18:54 +04:00
globals.cpp Introduce a separate class to control world date and time 2020-06-05 12:07:32 +04:00
globals.hpp Remove NAME handling from MWWorld::Globals 2015-07-10 00:29:40 +03:00
inventorystore.cpp Merge pull request #3018 from akortunov/emplace 2020-11-01 01:58:56 +03:00
inventorystore.hpp Fix remove item regression 2020-10-26 20:13:24 +01:00
livecellref.cpp Use new logging system for game itself 2018-08-14 23:05:43 +04:00
livecellref.hpp Mark overrided methods by override keyword 2020-10-16 22:18:54 +04:00
localscripts.cpp Use emplace_back instead of push_back 2020-10-18 10:27:35 +04:00
localscripts.hpp Vanilla-compatible activate / onActivate (Fixes #1629) 2016-02-26 13:08:35 +01:00
manualref.cpp Replace zeroes and nulls by nullptrs 2020-11-29 11:14:07 +04:00
manualref.hpp Move manualref code out of header 2015-02-09 15:01:49 +01:00
nullaction.hpp Mark overrided methods by override keyword 2020-10-16 22:18:54 +04:00
player.cpp Replace zeroes and nulls by nullptrs 2020-11-29 11:14:07 +04:00
player.hpp Slightly reduce code duplication 2020-01-09 22:17:01 +03:00
projectilemanager.cpp Don't allow projectiles to stand still when they hit an ally. 2020-12-14 22:23:01 +01:00
projectilemanager.hpp Don't allow projectiles to stand still when they hit an ally. 2020-12-14 22:23:01 +01:00
ptr.cpp Replace zeroes and nulls by nullptrs 2020-11-29 11:14:07 +04:00
ptr.hpp Replace zeroes and nulls by nullptrs 2020-11-29 11:14:07 +04:00
recordcmp.hpp Include cleanup 2019-02-19 18:40:33 +03:00
refdata.cpp Replace zeroes and nulls by nullptrs 2020-11-29 11:14:07 +04:00
refdata.hpp Rework container resolution (#3006) 2020-10-13 17:46:32 +02:00
scene.cpp Unconditionally call actor->resetPosition in adjustPosition. 2020-12-12 18:17:26 +01:00
scene.hpp Get rid of ECLD and dependencies 2020-06-17 13:09:16 +04:00
store.cpp Replace zeroes and nulls by nullptrs 2020-11-29 11:14:07 +04:00
store.hpp Replace zeroes and nulls by nullptrs 2020-11-29 11:14:07 +04:00
timestamp.cpp Correct an error in the timestamp subtracting logic (Fixes #3105) 2015-12-26 00:26:13 +01:00
timestamp.hpp fixed warning C4099: 2015-03-06 21:36:42 +13:00
weather.cpp Change moon phase to an enum class 2020-10-26 22:16:31 +01:00
weather.hpp remove forward declaration 2020-10-27 19:23:07 +01:00
worldimp.cpp Restore pre-async handling of absolute actors positionning 2020-12-20 19:23:09 +01:00
worldimp.hpp Introduce World::moveObjectBy() function to translate an object relatively to 2020-12-18 08:40:38 +01:00