1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2026-02-01 22:18:25 +00:00
Commit graph

374 commits

Author SHA1 Message Date
Telvanni 4Life
c6cc1be347 - Fixed OpenMW-CS incorrectly passing magic effect ids
- Resolved merge conflicts with !4323
- Minor refactor of affectsSkill helper function
- Removed redundant class definition
2026-01-08 14:36:38 -05:00
Telvanni 4Life
9159788c9b Address reviewer feedback and ran clang-format on modified files:
- Changed reverse lookup map constructor for gmsts, names, and ESM::MagicEffectIds to be more generic.
- Changed refIdToIndex to use map instead of array traversal.
- Removed redundant check from refIdToGmstString.
- Removed sMagicEffectNames and associated map. Removed dead code from loadmgef.cpp/hpp.
- Changed return types of magic effect bindings to RefId.
- Reverted ESMStore search to find.
- Changed std::map to std::unordered_map for faster lookups in resistance and weakness functions.
- Changed loadmgef To methods to pass RefId by value.
- Removed StringRefId alias MagicEffectId.
- Changed all effectId arguments in PR to pass-by-value.
- Removed ESM::MagicEffect::refIdToName function.
- Changed effect key type from long to ESM::RefId in OpGetEffect of mwscript.
- Removed superfluous MWWorld::Store<ESM::GameSettings> argument to MagicEffect store's setUp method.
- Removed transformation code from decompose for ENAM and IRDT structs.
- Changed resistance and weakness maps to initialization to use initialization instead of assignment.
- Changed sGmstEffectIds to constexpr array since all parameters are known at compile time.
- Changed getBoundItemsMap to use an unordered_map and have string_view values.
- MagicEffect store definition removed (uses standard template class TypedDynamicStore).
- Fixed bug in calculating sun damage that would have made vampires daywalkers in Mournhold.
- Removed polymorphic EffectKey constructor and added overload to getOrDefault.
- Placed ESM spec IRDT and ENAM structs in anonymous namespace.
- Added exception if attempting to serialize ENAM subrecords with out of bounds index.
- Added include format statements to satisfy Ubuntu CI linker.
2026-01-08 07:44:06 -05:00
Telvanni 4Life
8820c1b08b Cleaned up loadmgef and addressed potential memory corruption issues to string view lifetimes. 2026-01-08 07:40:43 -05:00
Telvanni 4Life
495207e2a5 Triune Tests of Strength, Block, and Breathing Water. The ending of the words is ALMSIVI. 2026-01-08 07:40:39 -05:00
Telvanni 4Life
2c76043cf5 - Changed sol magic bindings to use RefIds instead of integer indexes for magic effects.
- Fixed silly namespace oversight causing linker errors.
- Fixed type mismatches occluded by linker errors.
- Fixed unit tests.
2026-01-08 07:40:02 -05:00
Telvanni 4Life
3e586ed693 Changed IRDTstruct (alchemical ingredient magic effects) to use RefIds instead of int for effectId.
Changed various structs (ENAMstruct, EffectKey, SummonKey) to use RefId instead of strict StringRefId to account for null effects.
2026-01-08 07:33:38 -05:00
Telvanni 4Life
c581ab3242 Changed magic effects to use RefIds in activespells, magiceffects, creaturestats, and summoning. 2026-01-08 07:27:11 -05:00
Telvanni 4Life
90fce49d17 Changed MagicEffect from IndexedStore to TypedDynamicStore in ESMStore. 2026-01-08 07:16:37 -05:00
Telvanni 4Life
bf5e7ba3f6 Changed ActiveSpells and ENAM struct to use only RefIds. Serialization still uses indexes for backward compatibility. 2026-01-08 07:16:30 -05:00
Telvanni 4Life
85c15ff643 Changed magic effects to use RefIds in loadmgef 2026-01-08 07:07:52 -05:00
psi29a
f0e31e69dd Merge branch 'refnumhitman' into 'master'
Replace ActorIds with RefNums

Closes #7602

See merge request OpenMW/openmw!4323
2026-01-08 09:23:20 +00:00
Evil Eye
dbeaa25985 Fix mistakes 2025-12-26 11:40:35 +01:00
Evil Eye
63f5c9777e Fix rebase induced issues 2025-12-26 11:07:31 +01:00
Evil Eye
20ddb848d4 Stop using actor ids in the essimporter and tests 2025-12-26 11:07:31 +01:00
Evil Eye
9cb437c9d3 Remove actor ids 2025-12-26 11:07:30 +01:00
Evil Eye
c4bc040b4b Replace actor ids in magic effects with refnums 2025-12-26 11:07:30 +01:00
Evil Eye
8020bfcafd Track projectile casters using RefNum 2025-12-26 11:07:30 +01:00
Evil Eye
1d24ad54d9 Replace actor ids with RefNums in ai packages 2025-12-26 11:07:30 +01:00
Evil Eye
1bcc403544 Use a RefMum to track spawned levelled creatures 2025-12-26 11:07:29 +01:00
elsid
64c24800c6
Simplify initialization 2025-12-25 13:04:45 +01:00
Evil Eye
60e6b94498 Fix the spelling of mercantile 2025-12-19 04:30:51 +03:00
Evil Eye
5fde484997 Rename faction rank reaction to reputation 2025-12-09 17:54:13 +01:00
Evil Eye
8b79e5d459 Simplify fallback 2025-12-03 16:40:25 +01:00
Evil Eye
2c4559e507 Match x86 for every possible float value 2025-12-02 22:01:58 +01:00
Evil Eye
be73f2b019 Prevent UB when reading global variables 2025-12-01 20:58:25 +01:00
Alexei Kotov
c31b4efc01 Merge branch 'globaltargetnumberone' into 'master'
Improve support for global script targets

Closes #2316, #7830, and #2311

See merge request OpenMW/openmw!4812
2025-11-27 01:16:25 +03:00
AnyOldName3
0a9f5a3c66 Resolve merge conflicts from !4938 and !4956 2025-11-02 18:05:38 +00:00
Evil Eye
5242610366 Differentiate between invalid and unapplied effects and stop marking unapplied revertable effects as applied in godmode 2025-10-14 21:26:06 +02:00
AnyOldName3
06cb00bb0b Resolve merge conflicts from !4924 and !4928
luamanagerimp still needs float frameDuration, and reordering a bunch of fields in the scene manager conflicted with changing the type of maxanisotropy.
2025-10-04 23:08:20 +01:00
Evil Eye
f7292680d6 Fix most conversion warnings in components 2025-09-18 22:00:55 +02:00
AnyOldName3
98291f1377 First batch of warning fixes 2025-09-18 00:38:08 +01:00
Evil Eye
5d4fc96062 Bump us up to 0.51 2025-08-30 14:21:31 +02:00
elsid
dea69b229c
Remove small translation units
Remove .cpp files with small amount of code which don't have additional
includes compared to corresponding .hpp files. This reduces the total
size of preprocessed code of the project and should reduce compilation
time.
2025-08-29 00:41:47 +02:00
Evil Eye
a085036a92 Resolve a number of Coverity defects 2025-08-06 19:52:09 +02:00
elsid
d121b606b6
Fix and enforce local variable naming 2025-08-05 21:27:48 +02:00
Evil Eye
35a9a47eac Convert global script targets 2025-07-27 17:04:14 +02:00
Dave Corley
7bc507eb58 FIX: Skip only the current subrecord when reading quest status 2025-07-10 17:08:47 +03:00
psi29a
2ffc44c31f Merge branch 'filenameexceptions' into 'master'
Remove file name naming convention check exceptions (#7249)

Closes #7249

See merge request OpenMW/openmw!4551
2025-07-01 20:45:33 +00:00
psi29a
ac7b3e9de9 Merge branch 'itshappening' into 'master'
Bump us up to 0.50.0

See merge request OpenMW/openmw!4502
2025-07-01 20:23:24 +00:00
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
Alexei Kotov
ac9505b536 Rename components/to_utf8 directory and files to follow naming conventions 2025-02-23 00:18:07 +03:00
Evil Eye
40cba7962c Bump us up to 0.50.0 2025-01-06 16:43:54 +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