Actually increment iterators to be erased.
Closes#6163
See merge request OpenMW/openmw!1027
(cherry picked from commit 7c246b28e7cb8c514b22214309fc9fed7fc40edc)
5ec2ddb4 Actually increment iterators to be erased.
Correctly track added and removed state to fix various alpha testing issues
Closes#6119
See merge request OpenMW/openmw!989
(cherry picked from commit 94be4eba18d328391a2c2aea85bb029e80b32cee)
0e57622b Correctly track added and removed state
e42b3bf9 Adapt destination alpha factor for AMD
84a9face Disable coverage adjustment for blended objects
Fix new game guard 3 (#6126)
Closes#6126
See merge request OpenMW/openmw!976
(cherry picked from commit 89ca56632c6bc37f07e430e7f5cd23d855610b19)
a3942a1e Remove redundant check for y coordinate in inRange function
cc08a45c Move include where it is needed
7e1630a7 Remove redundant getPolyHeight wrapper
793c30ab Check dtNavMeshQuery::getPolyHeight status
a54c4bc2 Check dtNavMeshQuery::findStraightPath status
94e460ba Use proper check for distance
5624fe19 Consider path not found when there is navmesh query error
Optimize off mesh connections
See merge request OpenMW/openmw!969
(cherry picked from commit 9dcea247d2cd7d25d719fabc142cef5360233e2a)
3e98db8d Fix styleguide
7f65a2c4 Remove unused code
81e569c3 Move OffMeshConnectionsManager implementation into cpp
a8ba9a0e Cleanup unused tile positions from OffMeshConnectionsManager
ff1af5e8 Use only off mesh connections starting or ending in a given tile
1552e7e3 Add pathgrid edges as one direction off mesh connection
Ensure original (removed) state overrides replacement state when recreating shaders
Closes#6108
See merge request OpenMW/openmw!966
(cherry picked from commit 07a7a903a7a034b661adc1b033af928a9cd68528)
8a1b4bde Ensure original (removed) state overrides replacement state when recreating shaders
0e122b1e Avoid copy and deep equality check
2147c18c Do not overwrite old removed state with old dummy state
Adding Object Paging Min Size combo box to Advanced -> Visuals
See merge request OpenMW/openmw!917
(cherry picked from commit f66196588c16a9a16211d8f400ce7812127f26c0)
9f2f5174 Adding Object Paging Min Size combo box to Advanced -> Visuals
89950e55 Preventing type conversion of double to float for objectPagingMinSize
Corresponding recast mesh tiles can be updated but navmesh tiles may never
appear for them. Report back zero navmesh version to allow oscillating recast
objects detection to work. This version is always less than any generated
navmesh tile version so any report for generated navmesh will override it.
If zero navmesh version is reported after recast mesh tile got report about
generated navmesh tile it is a no-op since generated version is always greater
than zero.
To fix all possible situations when active message box overlaps with loading
screen progress.
The only used condition to center loading screen progress by height is
number of message boxes > 0. No need to pass it through interface.
LoadingScreen can check it inside setLabel function.
Before this change LightBuffer copy constructor copied only mData pointer into
a new object. Then memcpy was applied to an overlapping source and destination
that is UB.
Replace configureLayout function by a special constructor. That copies all
mData values and a pointer to a buffer object into a newly allocated object.
The idea is to avoid std::map lookup for each CellRef. Instead generate a
sequence of added and removed RefNums into a vector then order them by RefNum
using a stable sort that preserves relative order of elements with the same
RefNum. RefIDs are stored in a different vector to avoid std::string move ctor
calls when swapping elements while sorting. Reversed iteration over added and
removed RefNums for each unique RefNum is an equivalent to what map-based
algorithm produces. The main benefit from sorting a vector is a data locality
that means less cache misses for each access. Reduces ESMStore::countRecords
perf cycles by 25%.
When game exit is requests when initial loading screen is active LightManager
can be destructed in the main thread before LightManagerStateAttribute::apply
is completed by different thread. Given that it uses raw pointer at some point
it becomes dangling because object is destructed this leads to UB and eventual
SIGSEGV.
When player tile changes distance to player that is part of jobs priority is
invalidated. So jobs are no longer in the right order. This can lead to
processing of farests tiles first.
Sort queue each time player tile is changed.