elsid
1cdbbef7ee
Use blank CellRef as default
...
Default constructed CellRef has some fields uninitialized.
2024-08-30 20:46:56 +02:00
elsid
ca8869042b
Move LiveCellRef where possible
2024-08-30 20:46:55 +02:00
Andrei Kortunov
9e55425b71
Use std::move() in /apps/openmw
2024-01-25 09:03:30 +04:00
Evil Eye
e63933efa6
Use NAM9 for stack count
2023-12-31 17:12:46 +00:00
Evil Eye
dc781bad5d
Use fixed size unsigned ints for inventory offsets
2023-10-24 17:51:12 +02:00
Petr Mikheev
892f6d1aee
Make LiveCellRef to remove itself from PtrRegistry in destructor (to prevent potential use after free); Update ContainerStore::mPtr after copying container/actor.
2023-09-09 21:54:13 +02:00
Andrei Kortunov
7da8f388f5
More Coverity fixes
2023-09-01 16:49:39 +04:00
Petr Mikheev
55a9ab4f52
Add obj.parentContainer
in Lua. Refactor ContainerStore::mPtr, ContainerStore::mActor.
2023-08-27 23:45:19 +02:00
Mads Buvik Sandvei
364f2a98e9
Use refnum instead of slot for items during spellcast
2023-07-25 21:23:59 +00:00
Mads Buvik Sandvei
fe0b640f85
Use copyItem() when not moving full stack.
2023-07-17 17:58:39 +02:00
Mads Buvik Sandvei
0f608f388e
Generate new refnum for the new stack created when unstacking.
2023-07-08 14:51:49 +02:00
Kindi
a176e0f9ea
Partial ammo equipping
2023-06-28 09:32:15 +00:00
Evil Eye
e9bcad4e05
Autocalculate enchantment costs and charges
2023-06-17 22:25:47 +02:00
elsid
9012207e32
Make WorldModel a front-end for PtrRegistry
2023-05-31 21:44:27 +02:00
elsid
ce91784085
Move Ptr registry into a separate type
...
There is no dependency on the rest of the WorldModel state.
2023-05-28 13:04:17 +02:00
Petr Mikheev
86fce41a39
Keep refnum when moving objects to/from inventory ( #6148 )
2023-05-07 17:19:44 +02:00
Petr Mikheev
f1beaa7b8c
Put ESMStore to Environment
2023-04-20 21:45:49 +02:00
fredzio
fbd7ae3e2d
Move getLevelledItem implementaiton in .cpp
2023-04-06 08:52:54 +02:00
elsid
069d4255b9
Make ESM::RefId to be fixed size cheap to copy
...
Use std::variant. Store refId strings in unordered_set and use pointer to an
item there. Inserts to unordered_set do not invalidate pointers to values so the
pointer is always valid. Elements are not removed. Assume there is finite number
of string refIds.
2023-03-19 17:20:43 +01:00
elsid
b5ec584be2
Replace ESM::RefId::sEmpty by default constructed RefId where possible
...
Static const is only required to provide a reference or a pointer when it is not
possible with default constructed temporary.
2023-02-18 01:07:15 +01:00
Petr Mikheev
e7120f189b
Unset RefNums after copying containers (otherwise copies will have the same RefNums, but they should be unique)
2023-01-21 23:43:00 +01:00
Petr Mikheev
5983f22290
Remember actor in the actor's InventoryStore instead passing the actor in every call
2023-01-21 23:43:00 +01:00
florent.teppe
1ef1de974d
script blacklist => RefId
...
Applies changes from review
Fixed clang format
Clang format + review.
2022-12-27 19:16:21 +01:00
florent.teppe
42e45723b7
Fixes issue in MW script compilation that would silently produce the wrong bytecode
...
Fixes issue when fetching MyGui values that were stored as RefId but fetched as String
Removed some uncessary copies, fixed issues with lowercase and uneeded changes
2022-12-27 19:15:57 +01:00
florent.teppe
30a020883e
Avoids unecessary copies
...
Fixed issue with lowerCase
Oups fixed compialtion on openMW_test_suite
2022-12-27 19:15:57 +01:00
florent.teppe
65cdd489fb
create a specific esm reader function for RefID to avoid allocation for string and then again for RefId
...
Fixed some types
removed useless header
applied clang format
fixed compile tests
fixed clang tidy, and closer to logic before this MR
Removed hardcoded refids
unless there is a returned value we don't use static RefIds
can use == between RefId and hardcoded string
Fix clang format
Fixed a few instances where std::string was used, when only const std::string& was needed
removed unused variable
2022-12-27 19:15:57 +01:00
fteppe
7da38113be
Changed more hardcoded RefId to be static to avoid multiple runtime creations
...
adresses multiple review comments
2022-12-27 19:15:56 +01:00
fteppe
c8bb733360
removed clear() function, the only way to change the Id from the outside is from the assignment operator
...
replaced ciEqual with == operator
2022-12-27 19:15:55 +01:00
fteppe
125b21de20
Initial commit: In ESM structures, replace the string members that are RefIds to other records, to a new strong type
...
The strong type is actually just a string underneath, but this will help in the future to have a distinction so it's easier to search and replace when we use an integer ID
Slowly going through all the changes to make, still hundreds of errors
a lot of functions/structures use std::string or stringview to designate an ID. So it takes time
Continues slowly replacing ids. There are technically more and more compilation errors
I have good hope that there is a point where the amount of errors will dramatically go down as all the main functions use the ESM::RefId type
Continue moving forward, changes to the stores
slowly moving along
Starting to see the fruit of those changes.
still many many error, but more and more Irun into a situation where a function is sandwiched between two functions that use the RefId type.
More replacements. Things are starting to get easier
I can see more and more often the issue is that the function is awaiting a RefId, but is given a string
there is less need to go down functions and to fix a long list of them.
Still moving forward, and for the first time error count is going down!
Good pace, not sure about topics though, mId and mName are actually the same thing and are used interchangeably
Cells are back to using string for the name, haven't fixed everything yet. Many other changes
Under the bar of 400 compilation errors.
more good progress <100 compile errors!
More progress
Game settings store can use string for find, it was a bit absurd how every use of it required to create refId from string
some more progress on other fronts
Mostly game settings clean
one error opened a lot of other errors. Down to 18, but more will prbably appear
only link errors left??
Fixed link errors
OpenMW compiles, and launches, with some issues, but still!
2022-12-27 19:15:54 +01:00
elsid
843753da14
Remove unused includes
2022-10-09 16:44:18 +02:00
clang-format-bot
ddb0522bbf
Apply clang-format to code base
2022-09-22 21:35:26 +03:00
florent.teppe
0dd529ab1d
With the records include removed from store.hpp, need to include the relevant files accross the codebase.Lots of touched files, but very little done
2022-09-06 13:26:13 +02:00
Evil Eye
dfcd34372d
Use more string_view
2022-08-28 15:06:31 +02:00
Evil Eye
19bd2f3c3d
Use more string_view and const string&
2022-08-27 13:07:59 +02:00
Evil Eye
0cded25033
Remove various string copies
2022-08-24 20:38:52 +02:00
Evil Eye
150d1840d6
Use more string_view and const string&
2022-08-22 16:55:53 +02:00
elsid
84944a7530
Store RefData::mBaseNode as osg::ref_ptr
...
Direct leak of 16197408 byte(s) in 56241 object(s) allocated from:
#0 0x5572356d4d42 in operator new(unsigned long) (/home/elsid/dev/openmw/build/clang/asan/openmw+0xae0d42)
#1 0x557236938196 in (anonymous namespace)::addObject(MWWorld::Ptr const&, MWWorld::World const&, std::__1::vector<ESM::RefNum, std::__1::allocator<ESM::RefNum> > const&, MWPhysics::PhysicsSystem&, MWRender::RenderingManager&) /home/elsid/dev/openmw/apps/openmw/mwworld/scene.cpp:119:42
#2 0x55723692e51b in MWWorld::Scene::insertCell(MWWorld::CellStore&, Loading::Listener*)::$_7::operator()(MWWorld::Ptr const&) const /home/elsid/dev/openmw/apps/openmw/mwworld/scene.cpp:913:62
#3 0x55723692e51b in void (anonymous namespace)::InsertVisitor::insert<MWWorld::Scene::insertCell(MWWorld::CellStore&, Loading::Listener*)::$_7>(MWWorld::Scene::insertCell(MWWorld::CellStore&, Loading::Listener*)::$_7&&) /home/elsid/dev/openmw/apps/openmw/mwworld/scene.cpp:230:21
#4 0x55723692e51b in MWWorld::Scene::insertCell(MWWorld::CellStore&, Loading::Listener*) /home/elsid/dev/openmw/apps/openmw/mwworld/scene.cpp:913:23
#5 0x55723692d451 in MWWorld::Scene::loadCell(MWWorld::CellStore*, Loading::Listener*, bool, osg::Vec3f const&) /home/elsid/dev/openmw/apps/openmw/mwworld/scene.cpp:449:9
#6 0x5572369299f5 in MWWorld::Scene::changeCellGrid(osg::Vec3f const&, int, int, bool) /home/elsid/dev/openmw/apps/openmw/mwworld/scene.cpp:612:17
#7 0x557236928521 in MWWorld::Scene::update(float) /home/elsid/dev/openmw/apps/openmw/mwworld/scene.cpp:315:13
#8 0x5572368d4c98 in MWWorld::World::update(float, bool) /home/elsid/dev/openmw/apps/openmw/mwworld/worldimp.cpp:1833:22
#9 0x557236ebbb72 in OMW::Engine::frame(float) /home/elsid/dev/openmw/apps/openmw/engine.cpp:418:25
#10 0x557236ed250a in OMW::Engine::go() /home/elsid/dev/openmw/apps/openmw/engine.cpp:1102:14
#11 0x557236eb621a in runApplication(int, char**) /home/elsid/dev/openmw/apps/openmw/main.cpp:228:17
#12 0x55723774d622 in wrapApplication(int (*)(int, char**), int, char**, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, bool) /home/elsid/dev/openmw/components/debug/debugging.cpp:328:19
#13 0x557236eb651f in main /home/elsid/dev/openmw/apps/openmw/main.cpp:240:12
#14 0x7fbf58a3f2cf (/usr/lib/libc.so.6+0x232cf) (BuildId: e637217a46491314667a7a37b2155cb07afc1a40)
Direct leak of 396288 byte(s) in 1376 object(s) allocated from:
#0 0x5572356d4d42 in operator new(unsigned long) (/home/elsid/dev/openmw/build/clang/asan/openmw+0xae0d42)
#1 0x557236938196 in (anonymous namespace)::addObject(MWWorld::Ptr const&, MWWorld::World const&, std::__1::vector<ESM::RefNum, std::__1::allocator<ESM::RefNum> > const&, MWPhysics::PhysicsSystem&, MWRender::RenderingManager&) /home/elsid/dev/openmw/apps/openmw/mwworld/scene.cpp:119:42
#2 0x55723692e51b in MWWorld::Scene::insertCell(MWWorld::CellStore&, Loading::Listener*)::$_7::operator()(MWWorld::Ptr const&) const /home/elsid/dev/openmw/apps/openmw/mwworld/scene.cpp:913:62
#3 0x55723692e51b in void (anonymous namespace)::InsertVisitor::insert<MWWorld::Scene::insertCell(MWWorld::CellStore&, Loading::Listener*)::$_7>(MWWorld::Scene::insertCell(MWWorld::CellStore&, Loading::Listener*)::$_7&&) /home/elsid/dev/openmw/apps/openmw/mwworld/scene.cpp:230:21
#4 0x55723692e51b in MWWorld::Scene::insertCell(MWWorld::CellStore&, Loading::Listener*) /home/elsid/dev/openmw/apps/openmw/mwworld/scene.cpp:913:23
#5 0x55723692d451 in MWWorld::Scene::loadCell(MWWorld::CellStore*, Loading::Listener*, bool, osg::Vec3f const&) /home/elsid/dev/openmw/apps/openmw/mwworld/scene.cpp:449:9
#6 0x5572369299f5 in MWWorld::Scene::changeCellGrid(osg::Vec3f const&, int, int, bool) /home/elsid/dev/openmw/apps/openmw/mwworld/scene.cpp:612:17
#7 0x557236936eb2 in MWWorld::Scene::changeToExteriorCell(ESM::Position const&, bool, bool) /home/elsid/dev/openmw/apps/openmw/mwworld/scene.cpp:888:9
#8 0x55723689a5ac in MWWorld::World::changeToExteriorCell(ESM::Position const&, bool, bool) /home/elsid/dev/openmw/apps/openmw/mwworld/worldimp.cpp:1003:22
#9 0x5572368c249d in MWWorld::World::changeToCell(ESM::CellId const&, ESM::Position const&, bool, bool) /home/elsid/dev/openmw/apps/openmw/mwworld/worldimp.cpp:1014:13
#10 0x557236e9bbce in MWState::StateManager::loadGame(MWState::Character const*, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) /home/elsid/dev/openmw/apps/openmw/mwstate/statemanagerimp.cpp:545:52
#11 0x557236e998db in MWState::StateManager::loadGame(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) /home/elsid/dev/openmw/apps/openmw/mwstate/statemanagerimp.cpp:377:17
#12 0x557236ed18fb in OMW::Engine::go() /home/elsid/dev/openmw/apps/openmw/engine.cpp:1066:24
#13 0x557236eb621a in runApplication(int, char**) /home/elsid/dev/openmw/apps/openmw/main.cpp:228:17
#14 0x55723774d622 in wrapApplication(int (*)(int, char**), int, char**, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, bool) /home/elsid/dev/openmw/components/debug/debugging.cpp:328:19
#15 0x557236eb651f in main /home/elsid/dev/openmw/apps/openmw/main.cpp:240:12
#16 0x7fbf58a3f2cf (/usr/lib/libc.so.6+0x232cf) (BuildId: e637217a46491314667a7a37b2155cb07afc1a40)
2022-08-21 20:58:37 +02:00
Evil Eye
685906afdf
Make getScript return string_view
2022-08-11 22:51:55 +02:00
elsid
f99ed6f1db
Split components/misc/stringops.hpp into multiple headers
...
Replace all ciEqual overloads with one having std::string_view as argument.
2022-08-03 22:06:24 +02:00
elsid
1b117af5e1
Use descriptive names for range elements
...
iter does not describe the nature of the object. Range-based for loop provides
elements of the iterator range, not iterators.
2022-07-04 21:03:45 +02:00
elsid
fdf6e58ea3
Split apps/openmw/mwmechanics/actorutil.hpp
2022-06-26 16:42:29 +02:00
Evil Eye
ac78b537d2
Address feedback
2022-05-22 09:29:03 +02:00
Evil Eye
c6ca0e78c9
Make getStringLiteral return a string_view
2022-05-21 01:21:55 +02:00
ζeh Matt
d83a381f79
Refactor and rename some things around Misc::Rng
2022-03-06 17:28:28 +02:00
psi29a
6f7a067e0c
Merge branch 'esmrename' into 'master'
...
esm refactor work
See merge request OpenMW/openmw!1575
2022-01-27 17:52:42 +00:00
Petr Mikheev
203ee492c8
Remove getRefIdRef
because it is the same as getRefId
.
2022-01-23 21:01:44 +01:00
Bret Curtis
d1fb854521
move most of the files from esm to esm3, keep common code in esm; this is make space for a future with esm4
...
esm typo
esm typo
2022-01-23 17:04:48 +01:00
Petr Mikheev
a8acc19988
Avoid copying std::string in MWWorld::Ptr::getTypeDescription()
2021-10-12 00:18:23 +02:00
Bo Svensson
ef906cbfa8
improves MWClass mapping ( #3166 )
...
Currently, we use a peculiar mapping of ESM classes by their std::type_info::name. This mapping is an undefined behaviour because std::type_info::name is strictly implementation defined. It could return a non-unique value on some platforms. With this PR we use the unsigned int sRecordId of the ESM class as a more efficient lookup type that does not build on undefined behaviour. We can expect marginally faster save-game loading with these changes as well.
2021-10-11 13:46:21 +02:00
elsid
403f0a72f0
Do not copy RefId when need to compare
...
Makes ContainerStore::stacks ~4x times faster when adding 4k different items
in a single frame.
2021-09-06 22:52:09 +02:00