* Reorder unlock and notify_all calls to avoid notifying when not all worker
threads are waiting.
* Make sure main thread does not attempt to exclusively lock mSimulationMutex
while not all workers are done with previous frame.
* Replace mNewFrame flag by counter to avoid modification from multiple
threads.
This preserves the functionality of Reflect effects, which relies on inflict() getting far enough for a dedicated player or actor, without also processing parts of inflict() that should be skipped for them.
This had been broken by fr3dz10's physics rewrites from the earlier part of the year that made it so dedicated players were always regarded by the movement solver as being on the ground.
This had apparently been broken by the fact that I had made inventory listeners get run only for actors in active cells in 385ef55848. Strangely, the player Ptr passed to fireEquipmentChangedEvent() when unequipping items has as its cell the player's original spawn cell instead of the current cell, causing the active cell check to return false in most locations for the player.
- enchanted arrow explode upon hit the water plane
- non enchanted arrow disappear (or more accurately, they hit nothingness)
- enchanted arrow shot underwater explode immediately
- non enchanted arrow disappear immediately
Also, solve a bug that occured previously and could theoritically still happens where we use the last tested collision position for instead of the last registered hit:
Use the hit position as saved inside Projectile::hit() instead of the last position saved inside the callback.
If a projectile collides with several objects (bottom of the sea and water surface for instance), the last collision tested won't necessarily be the impact position as we have no control over the order in which the tests are performed.
Make sure PathFinder::getClosestPoint is not called with failing precondition (#6294)
Closes#6294
See merge request OpenMW/openmw!1236
(cherry picked from commit baa33799de3cb27d9d3805e164b9d7ccea6a3e4d)
d36595e0 Make sure PathFinder::getClosestPoint is not called with failing precondition
Ignore time to destination when giving way (#6296)
See merge request OpenMW/openmw!1234
(cherry picked from commit 14516b9fd603bf603ca2ae366bc0884106fd368c)
5893b884 Ignore time to destination when giving way (#6296)
ESM::Cell's getDescription() method was modified by aa5161f99e despite being used heavily by TES3MP. All instances of it in the TES3MP code have now been changed into the newly added getShortDescription() that is identical to the previous getDescription().
Use pathgrid path when destination is closer to different graph component node
See merge request OpenMW/openmw!1155
(cherry picked from commit 4bf22f3ca0e5e5776c09cb8d5ad9793986373975)
9112c65a Use pathgrid path when destination is closer to different graph component node
The variable has been included since TES3MP's earliest proof of concept, but never used for anything. It is now possible to get and set it, due to semi-popular demand.
Make it possible to opt out of composing variables
Closes#6186
See merge request OpenMW/openmw!1076
(cherry picked from commit 15d278de554818fef6fecf300456800523e91adf)
4727ae4b Make it possible to opt out of composing variables
04e9b6d2 Abort on duplicate content file
mCanWaterWalk was set to false and updated during next frame's simulation
mOnGround is set to true but then was updated as part of the scene
loading logic.
Don't put player in the air after going out of tcl
See merge request OpenMW/openmw!1009
(cherry picked from commit 6d08a1d7318ae076839738d173b884fcc7b1a348)
6ad2cf8e Skip simulation result after calling Actor::updatePosition(). Otherwise
Maybe fix#6071Closes#6071
See merge request OpenMW/openmw!1010
(cherry picked from commit 64750820957773a00d449d29551bb15fbf5fe08b)
1650dabe Assign the return value of weak_ptr::lock() to a variable, so that the
Fix black objects in object paging debug view
See merge request OpenMW/openmw!1011
(cherry picked from commit 5287c9627c92b77c25581dbb9ac9d0b0dc4c9698)
389b8300 fix black objects with OP batch debug due to unitialized uniform
LOD issue with object paging
See merge request OpenMW/openmw!1007
(cherry picked from commit 5688b7b4d8df93fbf28307d2259c57f8d878eeb8)
269cd310 Use same world coordinates to compute distances