1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2025-07-01 20:11:35 +00:00
Commit graph

333 commits

Author SHA1 Message Date
AnyOldName3
48572e4c96 Even more elses 2025-04-10 18:32:52 +01:00
AnyOldName3
37dc1a6a76 Remove redundant elses 2025-04-10 16:51:23 +01:00
AnyOldName3
15162a734d Avoid IO in resolveParentFileIndices
In the olden days, we passed it a vector of open ESMReader instances, as they knew the filenames and sizes, so were a convenient source of this knowledge.

When the ReadersCache was introduced as a pool of readers to limit the maximum number of simultaneously open file handles (to avoid going over the OS' limit) it was a poor substitute.
* We iterate over all the earlier readers in order in a double loop, which is the worst case scenario for an LRU pool as once we're past the size limit, we're guaranteed maximum thrashing - the least recently used item is the most likely to be used next, so the worst to evict.
* We didn't want to read any ESM files, just know whether they'd been read and what their sizes were, so didn't want to open a file handle, which the ReadersCache forced us to do.

Obviously, opening lots of file handles isn't fast, and as this was an operation done for each content file which iterated over the file's masters and within that loop iterated over every loaded file, that's O(n^3) complexity in the worst case, and for things like delta plugin merged plugins, they hit the worst case in long load orders.

This resolves the freeze reported as https://gitlab.com/OpenMW/openmw/-/issues/8425, but there may be other freezes on launch.
2025-04-10 16:16:19 +01:00
elsid
51d73e37df
Fix msvc warnings
components\lua\configuration.cpp(133): warning C4267: 'argument': conversion from 'size_t' to 'int', possible loss of data
components\esm3\effectlist.cpp(35): warning C4267: '=': conversion from 'size_t' to 'uint32_t', possible loss of data
components_tests\misc\testmathutil.cpp(54): warning C4305: 'argument': truncation from 'const double' to 'osg::Vec3f::value_type'
components_tests\misc\testmathutil.cpp(62): warning C4305: 'argument': truncation from 'const double' to 'osg::Vec3f::value_type'
components_tests\misc\testmathutil.cpp(131): warning C4305: 'argument': truncation from 'const double' to 'osg::Vec3f::value_type'
components_tests\misc\testmathutil.cpp(135): warning C4305: 'argument': truncation from 'const double' to 'osg::Vec3f::value_type'
components_tests\misc\testmathutil.cpp(135): warning C4305: 'argument': truncation from 'const double' to 'osg::Vec3f::value_type'
components_tests\misc\testmathutil.cpp(139): warning C4305: 'argument': truncation from 'const double' to 'osg::Vec3f::value_type'
2025-03-09 17:55:17 +01:00
Evil Eye
d57d5d9247 Save interior fog bounds center to preserve rotation when expanding them 2024-11-24 11:49:33 +01:00
Evil Eye
ffe164b28d Add a test and address feedback 2024-10-06 11:32:24 +02:00
Evil Eye
7ce83c6cc8 Ensure NAME is null terminated for TESCS compatibility 2024-10-03 22:22:51 +02:00
psi29a
d1059aee8c Merge branch 'test_ptr' into 'master'
Add tests for MWWorld::Ptr

See merge request OpenMW/openmw!4344
2024-09-26 07:36:23 +00:00
elsid
cd6e49796e
Properly initialize local static pointers and collections
Static variables should be initalized once instead of initializing them with
nullptr and then doing actual initialization behind if condition. Otherwise a
race condition may happen leading to undefined behaviour.
2024-09-21 13:52:43 +02:00
elsid
1cdbbef7ee
Use blank CellRef as default
Default constructed CellRef has some fields uninitialized.
2024-08-30 20:46:56 +02:00
Evil Eye
5c4deb3f88 Prevent older binaries from incorrectly loading newer saves 2024-07-25 22:37:44 +02:00
elsid
5c3ae3d94c
Make loading and saving script record more robust
* Check the header presence before using it.
* Write the header based on the actual content.
2024-06-21 20:37:37 +02:00
elsid
4571a8b88a
Remove unused SCHD type 2024-06-21 15:39:17 +02:00
Dave Corley
798208f6e5 FIX: Bad rebase 2024-06-10 02:03:00 -05:00
Dave Corley
80360ca5eb downgrade clang-format pls 2024-06-10 02:02:31 -05:00
Dave Corley
3066695630 FIX(loadland.cpp): Minor rebase fail 2024-06-10 02:02:31 -05:00
Dave Corley
bdf99c701b Fix(CS): Use ESM flags and not internal ones for verifying presence of a subrecord 2024-06-10 02:02:31 -05:00
Dave Corley
89bce6f678 Fix(CS): Enum name in accordance with current standards 2024-06-10 02:02:31 -05:00
Dave Corley
6f2ae4a33b Cleanup(CS): Improve readability and clean up some implementations 2024-06-10 02:02:31 -05:00
Dave Corley
51df924d37 Fix(Land): Restore vanilla behavior of ignoring LAND subrecords which
are not flagged to actually exist
2024-06-10 02:02:31 -05:00
Dave Corley
b111d28ede Fix(CS): Generate blank lands at default height, not water level 2024-06-10 02:02:26 -05:00
Dave Corley
18d6598565 Feat(CS): Add enum for actual LAND flags 2024-06-10 01:58:34 -05:00
psi29a
9087de1596 Merge branch 'esm3_land' into 'master'
Add unit tests for saving and loading ESM3 Land

See merge request OpenMW/openmw!4159
2024-06-08 10:47:58 +00:00
elsid
044748725c
Add unit tests for saving and loading ESM3 Land 2024-06-07 00:22:24 +02:00
Evil Eye
ca6baed366 Fix LTEX overriding and allow deletion 2024-06-03 16:42:27 +02:00
Evil Eye
cdfd305ac3 Convert constant effect equipment slots to refnums 2024-05-24 16:59:48 +02:00
Evil Eye
77d554594f Add ReadersCache::clear 2024-05-19 20:39:23 +02:00
elsid
01166b1f26
Split ESM headers 2024-05-03 01:55:20 +02:00
Evil Eye
6e79064a57 Fix editor oddities 2024-04-12 18:32:47 +02:00
Evil Eye
a4625ea784 Deduplicate dialogue filter parsing 2024-04-11 22:29:33 +02:00
Evil Eye
fb4edda45d Validate INFO filters when loading the record 2024-04-11 16:55:00 +02:00
psi29a
2056da358d Merge branch 'opencs-projectile-speed' into 'master'
OpenMW-CS: Editing and verifying of projectile speed for magic effects

See merge request OpenMW/openmw!3939
2024-03-28 09:04:50 +00:00
psi29a
e8038d353f Merge branch 'esmstuff' into 'master'
Use more decomposition, string_view, and implicit sizes in ESM code

See merge request OpenMW/openmw!3975
2024-03-27 19:40:18 +00:00
Sam Hellawell
deb8894035 ESM::MagicEffect::blank() set the default to 1
Signed-off-by: Sam Hellawell <sshellawell@gmail.com>
2024-03-27 09:26:04 +00:00
psi29a
f7f7502d60 Merge branch 'i-said-it-was-unlocked-damn-you' into 'master'
Fix(CS): Actually allow unlocking doors ( #7899 )

Closes #7899

See merge request OpenMW/openmw!3982
2024-03-27 07:32:53 +00:00
Dave Corley
2e68786331 Fix(CS): Actually allow unlocking doors ( #7899 ) 2024-03-27 07:32:53 +00:00
Mads Buvik Sandvei
e0b11c14c2 Remove unused member mStackable 2024-03-26 14:44:02 +00:00
psi29a
012d10703f Merge branch 'spellcast-refactor' into 'master'
Spellcast related Lua API + spellcasting/activespell refactor

See merge request OpenMW/openmw!3922
2024-03-25 13:50:23 +00:00
Mads Buvik Sandvei
320d8ef014 Spellcast related Lua API + spellcasting/activespell refactor 2024-03-25 13:50:23 +00:00
Evil Eye
5a0aed3a78 Use more decomposition, string_view, and implicit sizes in ESM code 2024-03-23 12:15:09 +01:00
AnyOldName3
818a99a870 Review 2024-03-21 16:18:18 +00:00
AnyOldName3
da8150e2e4 Even more MSVC-specific warnings that evaded detection in CI 2024-03-21 15:51:29 +00:00
Dave Corley
fcff1a6739 Fix #7887, use actual instead of reported size for script data 2024-03-17 16:14:52 -05:00
Evil Eye
b52f721318 Use getSubComposite to read AMBI 2024-03-14 17:08:23 +01:00
Evil Eye
1499dd2654 Add getCompositeSize and handle NPC data 2024-03-06 18:16:55 +01:00
Evil Eye
cef59e8928 Replace fixed size writeHNT calls with decomposition 2024-03-03 19:39:19 +01:00
Evil Eye
958f70736f Implement auto calculated potion values 2024-03-02 12:45:48 +01:00
Mads Buvik Sandvei
c82c111ee1 Use correct index for Athletics_SwimOneSecond 2024-02-27 19:28:51 +01:00
Alexei Kotov
46f863a32e Merge branch 'help-i-cant-swim' into 'master'
Fix(editor): Don't save dirty water height values

Closes #7841

See merge request OpenMW/openmw!3881
2024-02-26 21:50:50 +00:00
psi29a
619ccf7107 Merge branch 'decomposition' into 'master'
Use decompose to remove more instances of pragma pack

See merge request OpenMW/openmw!3906
2024-02-26 11:23:17 +00:00