Alexei Kotov
e426dd045f
Read string GMSTs correctly in >=TES5
1 year ago
Alexei Kotov
0e94ff4a73
Support unsigned int GMSTs
1 year ago
Alexei Kotov
891be9744d
Skip TES4::TNAM
1 year ago
Zackhasacat
3e8a1cce7c
Load ESM4 Terminal objects, add lua bindings for them
1 year ago
elsid
5abbc56bf2
Use proper cell size for ESM4 cells in CoordinateConverter
1 year ago
Petr Mikheev
5d54ca6fdb
Refactor components/esm4
1 year ago
psi29a
9c2a2e1946
Merge branch 'nvpp_fixes' into 'master'
...
Improve safety of NVPP ESM records
See merge request OpenMW/openmw!3307
1 year ago
psi29a
4aaffa72e5
Merge branch 'more_coverity_fixes' into 'master'
...
More coverity fixes
See merge request OpenMW/openmw!3304
1 year ago
Andrei Kortunov
4e531524be
Improve safety of NVPP ESM records
1 year ago
Andrei Kortunov
1ae2a994f0
Avoid null pointer dereference
1 year ago
elsid
798f3cc385
Support ESM4 record FullName, CellFlags, X, Y fields by esmtool
1 year ago
elsid
fd01b4cad7
Avoid casts to read cell flags
1 year ago
Petr Mikheev
9b511fdf7a
Load ESM4 actors
1 year ago
Alexei Kotov
32022e9b5c
Read STAT::MNAM
1 year ago
Alexei Kotov
727e5c5af2
Read IDLM model data
1 year ago
Alexei Kotov
1e7fef979a
Skip MISC destruction data
1 year ago
Alexei Kotov
09f6032c9b
Skip TACT::VMAD/MODS
1 year ago
Alexei Kotov
332f38b7ab
Read SCRL::YNAM/ZNAM
1 year ago
Alexei Kotov
7e1e43f9c6
Allow GMSTs with empty EDID
1 year ago
Alexei Kotov
22cc7f3020
Skip LIGH destruction data
1 year ago
Alexei Dobrohotov
c6882dbc6b
Skip REFR::XPTL
...
Needed by Yukichigai Unofficial Patch
1 year ago
elsid
11204d35d6
Use zlib directly for ESM4
...
Fallback to decompression by block of fixed size when decompressing the
whole archive fails.
2 years ago
elsid
f841a1377f
Skip ATTR subrecord in CLAS record
...
Present in FalloutNV.esm.
2 years ago
elsid
e8ef1a2a0c
Add default initialization for ESM4::TeleportDest::flags
2 years ago
jvoisin
3152078c7e
Restore missing std::endl removed by an overeager regex
2 years ago
jvoisin
0e33730f5d
Remove useless logging
...
As suggested in https://gitlab.com/OpenMW/openmw/-/merge_requests/3086#note_1413234840
2 years ago
jvoisin
a58dc6fd30
Use the logging system instead of std::cout in components/esm4
...
- Remove debug-related includes
- Add some trivial missing includes
- Remove useless {}
- Move the known-but-skipped-records are the end of the switch-cases
- Always throw on unknown records
2 years ago
psi29a
27a879de9a
Merge branch 'tree_and_furniture' into 'master'
...
Load ESM4::Tree and ESM4::Furniture
See merge request OpenMW/openmw!3040
2 years ago
Petr Mikheev
5cb4c66266
Avoid using ESM4::Cell with uninitialized fields
2 years ago
Petr Mikheev
1b669db017
Load ESM4::Tree and ESM4::Furniture
2 years ago
florent.teppe
12304d36aa
std::cout => Log(Debug::Verbose)
2 years ago
florent.teppe
ad8cfde4e0
ESM::LandData no longer a virtual interface
...
instead it is constructed from ESM::Land or ESM4::Land
2 years ago
florent.teppe
f600730459
fixes functions that were virtual but not tagged as override.
2 years ago
florent.teppe
2bb17279df
linux build
...
clang format 14.0
Arm64 build
2 years ago
florent.teppe
d0211acf9e
Fixes bug in terrain loading + collision heightmap works
...
although terrain rendering is 100% broken right now
2 years ago
florent.teppe
c35c7b3640
ESM4::Land loaded, added to store and to land objects
...
it does not work yet. Some things are displayed, but it looks all wrong.
2 years ago
florent.teppe
fffcf52316
land manager cache's key is an ExteriorCellLocation
...
ESM4::Land is now a ESM::LandData
2 years ago
jvoisin
c98c532213
Replace all asserts in components/esm[34] with throw
2 years ago
jvoisin
44a65512e8
Replace another assert with a throw
2 years ago
elsid
2f18da08d7
Add missing include
2 years ago
elsid
7c16ecb258
Skip more unknown ESM4 subrecords
...
CNAM from HDPT is a part of Dawnguard.esm.
ATKR from RACE is a part of Dawnguard.esm.
CIS2 from SCRL is a part of Dragonborn.esm.
SPMV from RACE is a part of Dragonborn.esm.
2 years ago
elsid
e537d1d0d4
Ignore missing localization string files by esmtool
...
Dawnguard.esm from Skyrim depends on files stored in Dawnguard.bsa which is not
processed by esmtool.
2 years ago
elsid
358b7ad3ec
Keep ESM4 localized strings in memory
...
Size of the files is in order of megabytes at max. Storing offset lookup table
to read from file on demand is less efficient than reading from memory for such
size.
Read and store offsets first. Sort them to read values sequentially. Memoize
last offset and value to avoid reading the same value twice. Use seek only when
current possition does not match offset. Optimize seek for short distance by
calling read instead.
2 years ago
Alexei Kotov
401ebfd7f2
Merge branch 'fix_oblivion_loading' into 'master'
...
Fix Oblivion loading
See merge request OpenMW/openmw!3050
2 years ago
jvoisin
a9bf671992
Fix Oblivion loading
...
Found by elsid@, and due to !3043
2 years ago
jvoisin
8b654f276d
Replace all the `asserts` with `throw` in components/esm4/reader.cpp
2 years ago
jvoisin
534e20cf3a
Replace another `assert` with a `throw`
...
It fixes the following crash:
```nasm
[----------------------------------registers-----------------------------------]
RAX: 0xffffffffffffffe4
RBX: 0x7fffffffbd88 --> 0x0
RCX: 0x555555861f01 --> 0xd6000055555582fa
RDX: 0x1
RSI: 0x0
RDI: 0xff
RBP: 0x2e94
RSP: 0x7fffffff9bb0 --> 0x0
RIP: 0x55555574e286 (<_ZN4ESM44Cell4loadERNS_6ReaderE+182>: mov eax,DWORD PTR [rax+0xc])
R8 : 0x0
R9 : 0x555555836bd0 --> 0x555555861f90 --> 0x100000000000000
R10: 0xffffffff
R11: 0x0
R12: 0x7fffffffbd88 --> 0x0
R13: 0x7fffffffbd30 --> 0x7fffffffbd28 --> 0xff0001
R14: 0x7fffffff9da0 --> 0x10fc
R15: 0x7fffffff9ea8 --> 0x7fffffff9eb8 --> 0x0
EFLAGS: 0x10206 (carry PARITY adjust zero sign trap INTERRUPT direction overflow)
[-------------------------------------code-------------------------------------]
0x55555574e27c <_ZN4ESM44Cell4loadERNS_6ReaderE+172>: mov rdi,r12
0x55555574e27f <_ZN4ESM44Cell4loadERNS_6ReaderE+175>: xor esi,esi
0x55555574e281 <_ZN4ESM44Cell4loadERNS_6ReaderE+177>: call 0x5555557edfb0 <_ZNK4ESM46Reader3grpEm>
=> 0x55555574e286 <_ZN4ESM44Cell4loadERNS_6ReaderE+182>: mov eax,DWORD PTR [rax+0xc]
0x55555574e289 <_ZN4ESM44Cell4loadERNS_6ReaderE+185>: cmp eax,0xff
0x55555574e28e <_ZN4ESM44Cell4loadERNS_6ReaderE+190>: ja 0x55555574e314 <_ZN4ESM44Cell4loadERNS_6ReaderE+324>
0x55555574e294 <_ZN4ESM44Cell4loadERNS_6ReaderE+196>: cmp al,0x5
0x55555574e296 <_ZN4ESM44Cell4loadERNS_6ReaderE+198>: jne 0x55555574e314 <_ZN4ESM44Cell4loadERNS_6ReaderE+324>
[------------------------------------stack-------------------------------------]
0000| 0x7fffffff9bb0 --> 0x0
0008| 0x7fffffff9bb8 --> 0x0
0016| 0x7fffffff9bc0 --> 0x0
0024| 0x7fffffff9bc8 --> 0x0
0032| 0x7fffffff9bd0 --> 0x0
0040| 0x7fffffff9bd8 --> 0x0
0048| 0x7fffffff9be0 --> 0x0
0056| 0x7fffffff9be8 --> 0x0
[------------------------------------------------------------------------------]
Legend: code, data, rodata, value
Stopped reason: SIGSEGV
0x000055555574e286 in ESM4::Cell::load (this=0x7fffffff9da0, reader=...) at /home/jvoisin/dev/openmw/openmw/components/esm4/loadcell.cpp:68
68 if (reader.grp().type == ESM4::Grp_ExteriorSubCell && reader.grp().label.grid[1] == 0
gdb-peda$ bt
this=<optimized out>, reader=...) at /home/jvoisin/dev/openmw/openmw/apps/esmtool/tes4.cpp:547
recordInvocable=...) at /home/jvoisin/dev/openmw/openmw/./components/esm4/readerutils.hpp:31
at /home/jvoisin/dev/openmw/openmw/./components/esm4/readerutils.hpp:23
at ../csu/libc-start.c:381
```
2 years ago
psi29a
e1754b840a
Merge branch 'fix_empty_vector' into 'master'
...
Guard an undefined behaviour
Closes #6725
See merge request OpenMW/openmw!3037
2 years ago
jvoisin
81bd034a9e
Guard an undefined behaviour
...
`std::vector.back()` on an empty `std::vector` is undefined.
This should fix #6725 .
Thanks to @Capostrophic for the investigation.
2 years ago
jvoisin
cde7aeac3d
Replace an `asert` with a conditional throw
...
The assert is reachable, resulting in a brutal `abort`
instead of a nice exception.
2 years ago
Petr Mikheev
be26fbdacb
Explicitly intialize the fields in `ESM4::Cell` that don't have default constructors.
2 years ago
Petr Mikheev
61232f4b75
Fix uninitialized mWaterLevel in esm4/loadwrld.cpp
2 years ago
elsid
15f3e3ae71
Support ESM4 IDLE record
2 years ago
elsid
584c0dbcdc
Support reading bool GMST by ESM4
2 years ago
elsid
010db45a10
Read ESM::FormId using ESM4::Reader::getFormId
2 years ago
florent.teppe
93b3d9238c
mWater level disabled for skyrim.
2 years ago
florent.teppe
3de08e654f
Better handling of water levels for exterior cells.
...
Especially for skyrim and it's weird water level values in exteriors.
If we don't have a valid exterior water level we use the world's water level
2 years ago
florent.teppe
a62e75fd19
Initial attempt at loading esm4 exteriors
2 years ago
Bret Curtis
95fff7b77b
show which file is not found
2 years ago
jvoisin
c7a3f43915
Minor header cleanup
...
This has been done via CLion's "unused include directive",
set to "detect completely unused".
2 years ago
Petr Mikheev
7b6f0cefb9
Fix regressions in ESM4 reader caused by !2902
2 years ago
Petr Mikheev
3546d2b3e5
Make Store<ESM4::Reference> to use FormId instead of RefId
2 years ago
Petr Mikheev
00beb06391
Initial Lua bindings for ESM4 types; bindings for ESM4Door.
2 years ago
Petr Mikheev
ff774d6406
Load more ESM4 records
2 years ago
Petr Mikheev
f09a689a4f
Merge ESM::RefNum and ESM4::FormId
2 years ago
psi29a
aad9ce53db
Merge branch 'esm4_gmst' into 'master'
...
Support loading ESM4 GMST records
See merge request OpenMW/openmw!2892
2 years ago
elsid
dbed00842e
Split components/esm4/common.hpp header
2 years ago
elsid
87ac85223a
Support loading ESM4 GMST records
2 years ago
florent.teppe
f99e65843a
Removes most cellId.hpp include, simplifies id generation for cells.
2 years ago
florent.teppe
6895a452ef
restores the concept of worldspace for MWWorld::Cell
2 years ago
florent.teppe
a3a7767093
applies review changes
...
filepos changed to an actual file pos
moved lambda declaration out of function call
2 years ago
florent.teppe
464092e323
fix oblivion and skyrim
2 years ago
florent.teppe
34dd24b261
Initial changes to detect when context isn't usable
2 years ago
elsid
90ed24f4c9
Split type traits for ESM4, ESM3 and unite common
2 years ago
psi29a
d64eea2fc6
Merge branch '7113-move-from-std-atoi-to-std-from_char' into 'master'
...
Move from std::atoi to std::from_char
Closes #7113
See merge request OpenMW/openmw!2760
2 years ago
Shi Han
a90e3b8c3b
Move from std::atoi to std::from_char
2 years ago
elsid
67e96d48ba
Use relative to content file path to find strings file
...
To be used by esmtool when VFS is not used.
2 years ago
psi29a
a60f657f5a
Merge branch 'fast_cell4_load' into 'master'
...
Lazy loading of ESM4::reference
See merge request OpenMW/openmw!2804
2 years ago
Alexei Dobrohotov
3d87bc185d
Updates to ESM4::Ammunition loading
2 years ago
florent.teppe
214cb8d8fe
Only loads ESM4::reference when they are needed
...
and only those from the cell they are a part of.
The cell stores where it starts in the file for quick access later.
2 years ago
Alexei Dobrohotov
540fa00f12
Don't use ESM4::Lighting fog power as fog density
2 years ago
Cédric Mocquillon
6e23ad82d5
Load esm files from vfs
2 years ago
florent.teppe
a71a86e64a
Load light models in the engine. Doesn't emit light
2 years ago
psi29a
4032c447e9
Merge branch 'load-ESM4-Cell' into 'master'
...
Can load and coc into an interrior oblivion cell
See merge request OpenMW/openmw!2647
2 years ago
florent.teppe
1caed2de2a
Applies some review comments.
...
Proper visit for ESM::CellVariant
Fixed MWWorldCell constructor
2 years ago
elsid
f1dbd9b959
Fix -Wduplicated-branches warnings
2 years ago
elsid
c79c14da91
Fix -Wnon-virtual-dtor warnings
2 years ago
Andrzej Głuszak
c9e5f0208d
Replace boost::scoped_array with std::vector
2 years ago
elsid
d541436b15
Support parent, type and value fields in esmtool for ESM4
2 years ago
elsid
e7acced5e9
Move metafunctions to check ESM4 field existence to a separate header
2 years ago
elsid
5bb088218e
Restore original formId
...
To make sure esmtool prints original value and not a result of conversion.
2 years ago
florent.teppe
f9da66e9ee
Greatly improved how the variant on MWWorld::CellRef works
2 years ago
florent.teppe
531e55e04c
Better handling of the esm3 vs esm4 cell problem
...
Common attribute are in one structure that has two constructors, one for ESM3 vs ESM4 Cell
Mood part of MWWorld::Cell
2 years ago
florent.teppe
c896a2ca48
Crashfix on launch
2 years ago
florent.teppe
e81e278363
Implements some cell params + linux compile fix
2 years ago
florent.teppe
562e129bd0
encapsulations of esm3 cell and esm4 cells.
2 years ago
florent.teppe
3b2d9161c4
Applied review advice
...
better deals with templated functions meant for esm3 used by esm4s.
simplified loading of esm4 and dealing with unhandled record types.
2 years ago
florent.teppe
077cf97bc4
The esm4 reader logic is mutualised
...
to avoid copy pasting code, readerutils gives functions that take visitors as params to decide how a record must be handled
Check encoder exists, and get value of stateless encoder.
fixes code formatting conventions
Fixed output of record with RefId
also fixed readTypedRecord and readRecord to have the proper return types
Check if the type has a sRecordId
2 years ago
florent.teppe
c721a6cafa
Initial commit to load ESM4
...
Some data is actually loaded and store in ESM Store
Any new ESM4 will go through the same code path and be automatically sent to the right store
2 years ago
elsid
baa39c06bb
Move fourCC to a separate file
2 years ago
elsid
843753da14
Remove unused includes
2 years ago
elsid
063fff7fa4
Fix and prevent -Wextra-semi warning
2 years ago
clang-format-bot
ddb0522bbf
Apply clang-format to code base
2 years ago
elsid
6f00641c8a
Fix reading array of zero terminated strings
...
NIFZ and KFFZ subrecords store multiple strings separated by \0 character.
2 years ago
elsid
4f7dcd5ae5
Fix conversion to UTF8 for ESM4 Reader strings
...
toUtf8 returns a string view to the input when input string is ASCII and nothing
is written to the buffer which means output string of Reader::getStringImpl is
not modified.
Move input to the output string and resize it in this case.
2 years ago
Project579
886b8c7af2
Fix build error with stdlibc++ due to includes shuffling.
2 years ago
Project579
a13709c510
Replace implicit convertions from std::filesystem::path to std::string with correctly converting functions.
2 years ago
Project579
e5c417c968
Make sure all paths are passed as std::filesystem::path instead of std::string where possible.
2 years ago
elsid
ac1688f9c1
Remove ESM::Reader base class
...
This class does not serve any useful purpose now. It was added as a first step
in attempt to define common interface for ESM3 and ESM4 readers. But this is not
going to happen.
2 years ago
florent.teppe
252550d86f
Added records for ESM4s the throw std:: logic error ensures at compile time that there is no collision
...
static_assert doesn't work because the function can be called at run time
2 years ago
AnyOldName3
4e8e2e1c60
Eliminate &thing[0] pattern
2 years ago
elsid
f99ed6f1db
Split components/misc/stringops.hpp into multiple headers
...
Replace all ciEqual overloads with one having std::string_view as argument.
2 years ago
elsid
6c8ed4d19c
Move Files::IStreamPtr alias to a separate header
...
To avoid transitive include of Windows.h all over the engine.
2 years ago
Andrei Kortunov
14b5674d32
Init missing data members
3 years ago
Andrei Kortunov
523ad825c2
There is no point to compare an unsigned value with 0
3 years ago
jvoisin
aeb3733e57
Remove boost:: constructs
...
Namely boost::scoped_array and boost::to_lower_copy.
3 years ago
jvoisin
4e4debb1cb
Remove even more of boost::filesystem
3 years ago
jvoisin
331363d469
Merge branch 'fix_uninit' into 'master'
...
Fix uninitialized coverity warnings
See merge request OpenMW/openmw!1819
3 years ago
Evil Eye
a64979e25d
Replace empty std::string assignments
3 years ago
jvoisin
143dcad0e8
Use an `if` instead of an assert
3 years ago
elsid
b67a0a8f2b
Fix uninitialized coverity warnings
3 years ago
elsid
d2510284ec
Support TES4 in esmtool dump
3 years ago
elsid
4b28d51d5e
Remove virtual modifiers from ESM4 record functions
...
There is no need to have virtual functions.
3 years ago
elsid
2c9b6fffe5
Remove preloading logic from ESM4::Cell
...
This logic does not belong here. If client of ESM4::Cell needs to cache load
results it can be done separately.
3 years ago
elsid
13c970b37a
Add const modifier to encoder type
3 years ago
elsid
c7ba4100e1
Remove undefined and redundant ESM4 record type constructors
3 years ago
psi29a
f99f818c0c
Merge branch 'esm4_cleanup' into 'master'
...
ESM4 cleanup
See merge request OpenMW/openmw!1792
3 years ago
elsid
4a49bc4941
Remove undefined constructor declaration
3 years ago
elsid
d71a1efa92
Rename components/esm4/acti.hpp -> components/esm4/loadacti.hpp
3 years ago
elsid
d5fb2f8091
Use ESM::fourCC to define ESM4 record types
3 years ago
elsid
3abcf3dd0d
Fix style guide
3 years ago
elsid
94c1d0cced
Use unique_ptr to store istream
3 years ago
elsid
5eb8c4aebe
Avoid redundant conversion to const char* and use make_shared
3 years ago
elsid
f516e34688
Remove used-defined constructors from ESM4 types
...
To avoid explicit initialization. It should happen in the load functions anyway.
* Move all non-zero initializations to corresponding class definition.
* Replace std::vector by std::array when it has constant size.
3 years ago
psi29a
1c1581bdab
Merge branch 'check_esm4_compilation' into 'master'
...
Check ESM4 compilation
See merge request OpenMW/openmw!1677
3 years ago
elsid
96463cbb02
Remove malformed and unused esm4/records.hpp file
3 years ago
elsid
cccfb14785
Remove user-defined constructor from ESM4::Quest
...
To avoid explicit initialization. It should happen in the load functions anyway.
3 years ago
elsid
139ae9325a
Fix compile errors by using StatelessUtf8Encoder
3 years ago
Bret Curtis
8113620dce
handle a few wearnings raised as errors
3 years ago
cc9cii
ba3ae448d4
Initial import of esm4 by cc9cii
3 years ago