florent.teppe
a3bd6e7e47
ESM::ExteriorCellIndex => ESM::ExteriorCellLocation
2023-05-12 22:05:55 +02:00
florent.teppe
393357abc0
ESM::Cell::positionToCellIndex returns a ESM::ExteriorCellIndex
...
and takes a worldspace id as input
ESM::getCellSize takes a wordspace as input.
removed useless static in static inline funcs
2023-05-12 22:05:55 +02:00
florent.teppe
559830f59a
applies review comments
...
Removes ToLowercase after .serializeText
removed unused variable
!ptr => ptr == nullptr
better indentation + error message on throw
friend struct std::hash<...> useless on struct with all public fields.
2023-05-12 22:05:55 +02:00
florent.teppe
3d06cabf6a
indexToPosition moved from world -> esm/util.hpp
2023-05-12 22:05:55 +02:00
florent.teppe
1cf0cd5628
moved mwworld/cellutils.hpp -> esm/util.hpp
2023-05-12 22:05:54 +02:00
florent.teppe
75561abfca
Factorises code and fixes preload bug.
2023-05-12 22:05:54 +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
elsid
0601d7213e
Remove ESM::RefId::sEmpty
...
This variable is only required to return empty RefId as const reference. There
is no point in doing so for a type cheap to copy.
2023-04-26 21:15:16 +02:00
florent.teppe
3bbf60373a
Keep things coherent between references and and cell table
2023-04-20 10:03:34 +02:00
psi29a
70ddca78bf
Merge branch 'ref_id_print_tests' into 'master'
...
Add more tests for printing RefId and clarify some constants
See merge request OpenMW/openmw!2945
2023-04-20 07:29:05 +00:00
elsid
7db14b3392
Add more tests for printing RefId and clarify some constants
2023-04-20 02:35:14 +02:00
elsid
c97df7d770
Check FormIdRefId value in constructor
2023-04-20 02:19:05 +02:00
Petr Mikheev
00beb06391
Initial Lua bindings for ESM4 types; bindings for ESM4Door.
2023-04-20 01:47:16 +02:00
Evil Eye
97fb06d8c9
Add RefId::is
2023-04-13 17:43:13 +02:00
elsid
20129568e6
Replace VisitorCellIdIsESM3Ext with RefId::getIf function
2023-04-13 01:06:27 +02:00
Petr Mikheev
ff774d6406
Load more ESM4 records
2023-04-09 18:52:11 +02:00
Petr Mikheev
f09a689a4f
Merge ESM::RefNum and ESM4::FormId
2023-04-09 00:23:32 +02:00
elsid
bd10becb65
Use lexicographical comparison in ESM3ExteriorCellRefId::operator<
2023-04-08 16:22:01 +02:00
elsid
794050df63
Fix and add tests for ESM3ExteriorCellRefId serialization and text representation
2023-04-08 01:06:11 +02:00
florent.teppe
0d17e20490
Implements serialize/deserialize
...
fixes test compilation.
2023-04-03 18:41:25 +02:00
florent.teppe
21bd28542a
Applies review advice
...
2d coord hash moved to hash.hpp file
format version adds suffix to be more coherent
don't use ESM::RefId::sEmpty
RefId equality with string_view, conversion to refId unecessary
action teleport remove test that mCellId is empty
removes some const references, when copy is enough
invalid refid => empty refid
removes useless change
2023-04-03 14:17:35 +02:00
florent.teppe
d782d37ee2
Make sure Vec2iRefId is trivially copyable on GCC 11.3
...
std::pair<int, int> isn't trivially copyable on some compilers
so a specific struct is defined, it's an int pair, but it should be recognised by GCC 11.3 as trivially copyable
Vec2iRefId => ESM3ExteriorCellRefId
more explcit name and use mX,mY instead of pair
renamed files and enum
2023-04-03 14:17:31 +02:00
florent.teppe
4c15064a83
Create new Vec2i RefId for ESM3 exterior cells.
...
Applies the necessary changes to use !2708 for the new Id type
2023-04-03 14:17:16 +02:00
florent.teppe
c39dd576f8
Gets rid of most ESM::CellId
2023-04-03 14:16:05 +02:00
psi29a
0a791528bc
Merge branch 'fix_index_ref_id_hash' into 'master'
...
Shift record type value for IndexRefId hash
See merge request OpenMW/openmw!2885
2023-04-02 21:52:29 +00:00
elsid
171a25645a
Make sure there are tests for all RefId types
2023-04-02 15:46:21 +02:00
elsid
258aec223a
Shift record type value for IndexRefId hash
2023-04-02 15:00:03 +02:00
elsid
90ed24f4c9
Split type traits for ESM4, ESM3 and unite common
2023-03-26 19:07:23 +02:00
psi29a
8f80895b59
Merge branch 'build_fix' into 'master'
...
Add missing include
See merge request OpenMW/openmw!2860
2023-03-26 11:09:47 +00:00
Andrei Kortunov
e1bee039ac
Add missing include
2023-03-26 11:31:25 +04:00
elsid
b7fdca0fe6
Use serialized ESM::RefId for Lua records
2023-03-25 18:19:46 +01:00
elsid
cd4027ffd6
Do not use ESM::RefId::getRefIdString for spell id
2023-03-24 01:57:35 +01:00
elsid
04d7781424
Support not only StringRefId for checking first person body part
2023-03-19 17:49:41 +01:00
elsid
e6cf516e12
Support index RefId as pair of record type and std::uint32_t
2023-03-19 17:20:48 +01:00
elsid
86293af084
Support generated RefId as std::uint64_t
2023-03-19 17:20:48 +01:00
elsid
0992624c8b
Support reading and writing typed ESM::RefId to ESM
2023-03-19 17:20:48 +01: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
83d212fe0f
Use SFINAE to avoid conflicts between visit functions
2023-03-17 23:37:11 +01:00
elsid
cd6a5b5a0e
Support asymmetric comparison between ESM::RefId and std::string_view
2023-03-03 15:44:18 +01:00
elsid
dfcea389be
Add helper functions for string comparison to RefId
2023-03-03 00:39:55 +01:00
elsid
6518688120
Reorder RefId members
2023-03-02 23:29:40 +01:00
elsid
2fcb94064d
Support RefId comparison with std::string_view
2023-02-28 23:04:48 +01:00
elsid
996153f78d
Convert RefId to class
2023-02-15 23:20:44 +01:00
elsid
6d261d38dd
Add functions to read and write ESM::RefId and use them
...
To be later changed with another implementation.
2023-02-13 22:07:58 +01:00
elsid
80e6d6cbe3
Support variable size strings in ESM3
2023-02-13 10:18:32 +01:00
elsid
2e64155c0f
Use signed type for left record and files size in ESM3 reader context
...
Otherwise reading some of the records like ESM::CellRef without a subrecord
after could lead to underflow of ESM_Context::leftRec which makes
ESM::ESMReader::hasMoreSubs to return true and load hangs for a while trying to
read the same subrecord many times.
Fix ESM::Variant tests since it's now required to have a record for any ESM
data. Add 16 (size of record header) to all expected data sizes.
2023-02-11 16:09:14 +01:00
florent.teppe
084207af64
Avoids a lot a special cases for ESM3 vs ESM4 cells.
2023-02-04 23:25:06 +01:00
florent.teppe
1caed2de2a
Applies some review comments.
...
Proper visit for ESM::CellVariant
Fixed MWWorldCell constructor
2023-02-04 17:09:54 +01:00
florent.teppe
ebfee18e35
implements std::visit for CellVariant, fixes struct vs class forward decl
2023-01-29 11:28:39 +01:00