1
0
mirror of https://gitlab.com/OpenMW/openmw.git synced 2025-01-31 06:32:39 +00:00

40 Commits

Author SHA1 Message Date
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
psi29a
7b4f7b7f07 Merge branch 'adjust_refnum' into 'master'
Adjust FormId in FormIdRefId and for items in containers when loading saves

See merge request OpenMW/openmw!3293
2023-08-08 08:54:00 +00:00
Petr Mikheev
5d54ca6fdb Refactor components/esm4 2023-08-05 13:12:24 +02:00
Petr Mikheev
9a9f9d7081 Adjust FormId in FormIdRefId and for items in containers when loading saves 2023-07-30 02:01:09 +02:00
Petr Mikheev
4d004e4730 Avoid unnecessary LiveCellRef copying in a couple of places; change initialization order in WorldModel; 2023-07-24 23:36:24 +02:00
Petr Mikheev
d830ae37b1 Add special cell for objects created via Lua scripts and not yet added into the world 2023-07-04 17:15:14 +02:00
elsid
a91f376892
Do not rely on exceptions to handle absent cell 2023-06-02 13:18:09 +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
elsid
60139c6bd5
Use WorldModel::mStore instead of MWBase::Environment::get().getESMStore() 2023-05-27 15:49:36 +02:00
elsid
183202cd65
Remove WorldModel::getCellByPosition function
It's used in a single place. Move the code there.
2023-05-27 15:49:36 +02:00
elsid
b6cd6402cc
Use ranged for loop 2023-05-27 15:49:36 +02:00
elsid
a04eb9d26c
Move WorldModel::getPtr(const ESM::RefId&, CellStore&) to CellStore
The function does not depend on WorldModel.
2023-05-27 15:49:36 +02:00
elsid
df6630a15c
Move WorldModel private functions to bottom
This is API class. A reader most likely need to know public functions first.
2023-05-27 15:49:36 +02:00
elsid
181c894e4c
Skip already visited cells when looking for ptr 2023-05-26 22:51:03 +02:00
elsid
466a7cedbb
Convert pointer to referece where nullptr is not acceptable 2023-05-26 22:42:50 +02:00
Petr Mikheev
ce7f6f31c9 Additional Lua bindings for cells 2023-05-13 20:59:55 +02:00
florent.teppe
a3bd6e7e47 ESM::ExteriorCellIndex => ESM::ExteriorCellLocation 2023-05-12 22:05:55 +02:00
florent.teppe
141878f30d int x, int y , ESM::RefId worldspace => ESM::ExteriorCellIndex
also removed the changeToExteriorCell that only took a position as input, didn't work with esm4.
2023-05-12 22:05:53 +02:00
florent.teppe
1d03b54694 maps with tuple key instead of map of map
instead of using a map with key as exterior and map of <int ,int >, Cell as value we use a single map with a tuple x,y,exterior as key
2023-05-12 22:05:53 +02:00
florent.teppe
a62e75fd19 Initial attempt at loading esm4 exteriors 2023-05-12 22:05:52 +02:00
florent.teppe
53cc9f3614 functions return reference instead of ptr
because the function can never return an nullptr, we return a reference.
2023-04-20 15:55:40 +02:00
Petr Mikheev
60a8d08e66 Refactor teleporting in Lua; fix a bug in worldmodel.cpp 2023-04-17 19:07:30 +02:00
Petr Mikheev
f09a689a4f Merge ESM::RefNum and ESM4::FormId 2023-04-09 00:23:32 +02:00
florent.teppe
c39dd576f8 Gets rid of most ESM::CellId 2023-04-03 14:16:05 +02:00
florent.teppe
3f678c3b0a Dest Door and teleport use ESM::RefId
This changes a lot of files as a consequence.
Still buggy, moving to exterior doesn't bring to the right place yet
coc "seyda neen" doesn't work. SO I broke somehting when fetching a cell from a name
2023-04-03 14:16:03 +02:00
florent.teppe
96e42d1666 Cellstore uses RefId. 2023-04-03 14:16:03 +02:00
elsid
4cf5136143
Mark WorldModel copy ctor and assignment operators as delete 2023-03-12 17:32:43 +01:00
elsid
48fde4b517
Use default initializers for WorldModel members 2023-03-12 17:32:43 +01:00
Petr Mikheev
1c2f24d1ca Remove unused searchInContainers in WorldModel::getPtr 2023-02-23 01:57:23 +01:00
Petr Mikheev
47b7c71c73 Remove unused functions 2023-02-23 01:57:23 +01:00
florent.teppe
562e129bd0 encapsulations of esm3 cell and esm4 cells. 2023-01-26 22:37:31 +01:00
florent.teppe
cddf6f29d6 Nothing can be loaded yet. Just foundations. 2023-01-26 22:36:11 +01:00
florent.teppe
3780033837 Reverts Cell name to a string 2023-01-21 18:39:42 +01:00
Petr Mikheev
aef2e9d8de Replace World::getExterior with WorldModel::getCell 2022-12-28 22:06:49 +01:00
Petr Mikheev
0fef8f12d0 Remove functions WorldModel::rest and WorldModel::recharge 2022-12-28 12:45:11 +01:00
Petr Mikheev
b8fb013edf Merge MWLua::ObjectRegistry and MWWorld::WorldModel 2022-12-28 12:45:11 +01:00
florent.teppe
2c30575b3b CellName is now a RefId, makes more sense that way. 2022-12-27 19:16:21 +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
Petr Mikheev
ac6303a83a Rename MWWorld::Cells -> WorldModel 2022-12-15 20:45:18 +01:00