Alexei Kotov
db6f76fea8
Skip more CIS1/CIS2 and skip all PRTN subrecords
...
Avoid formatting problems with newly added skipped FO4 blocks
2023-08-17 02:12:32 +03:00
Alexei Kotov
3118800dbd
Skip ESM4 destructible data for all relevant records
2023-08-17 02:12:32 +03:00
Alexei Kotov
271c14030a
Maybe load FO4 ingestible records
2023-08-17 02:12:32 +03:00
Alexei Kotov
0efc9865f6
Alphabetize SubRecordTypes and include all subrecords used in FO4
...
SUA_BTXT => SUB_BTXT
2023-08-17 02:12:32 +03:00
Alexei Kotov
d15f301193
Load FO4 activator records
2023-08-17 02:12:32 +03:00
Alexei Kotov
a2ed295f1f
Update ESM4 LTEX loading
...
Load grasses into a list
Fix FO4 loading
Load Havok parameters for FNV
2023-08-17 02:12:32 +03:00
Alexei Kotov
d74df61ce5
Load FO4 acoustic space records
2023-08-17 02:12:32 +03:00
Alexei Kotov
5bce6d8d44
Maybe load some FO4 static records
2023-08-17 02:12:32 +03:00
Alexei Kotov
1a7d68cd33
Skip FO4 SOUN::REPT
2023-08-17 02:12:32 +03:00
Alexei Kotov
c706a46dc4
ESM4::RACE: fix loading more than 5 head parts in FO4
2023-08-17 02:12:31 +03:00
Alexei Kotov
426eae3843
ESM4::RACE: don't use current index if it's unset
...
To be safer. Doesn't help with FO4 segfaults though
2023-08-17 02:12:31 +03:00
Alexei Kotov
4605894a5a
Updating RACE for FO4, first pass
2023-08-17 02:12:31 +03:00
Alexei Kotov
0c05bbea37
Skip CTDA target condition subrecords
2023-08-17 02:12:31 +03:00
Alexei Kotov
22fb744751
Skip PRPS object property subrecords
2023-08-17 02:12:31 +03:00
Alexei Kotov
84d693324b
ESM4: read texture set material
2023-08-17 02:12:31 +03:00
Alexei Kotov
e426dd045f
Read string GMSTs correctly in >=TES5
2023-08-17 02:12:31 +03:00
Alexei Kotov
0e94ff4a73
Support unsigned int GMSTs
2023-08-17 02:12:31 +03:00
Alexei Kotov
891be9744d
Skip TES4::TNAM
2023-08-17 02:12:31 +03:00
Zackhasacat
3e8a1cce7c
Load ESM4 Terminal objects, add lua bindings for them
2023-08-15 06:23:38 +00:00
elsid
5abbc56bf2
Use proper cell size for ESM4 cells in CoordinateConverter
2023-08-13 02:24:22 +02:00
Petr Mikheev
5d54ca6fdb
Refactor components/esm4
2023-08-05 13:12:24 +02:00
psi29a
9c2a2e1946
Merge branch 'nvpp_fixes' into 'master'
...
Improve safety of NVPP ESM records
See merge request OpenMW/openmw!3307
2023-08-03 07:15:43 +00:00
psi29a
4aaffa72e5
Merge branch 'more_coverity_fixes' into 'master'
...
More coverity fixes
See merge request OpenMW/openmw!3304
2023-08-03 07:15:34 +00:00
Andrei Kortunov
4e531524be
Improve safety of NVPP ESM records
2023-08-01 10:39:34 +04:00
Andrei Kortunov
1ae2a994f0
Avoid null pointer dereference
2023-07-31 16:35:29 +04:00
elsid
798f3cc385
Support ESM4 record FullName, CellFlags, X, Y fields by esmtool
2023-07-30 18:20:10 +02:00
elsid
fd01b4cad7
Avoid casts to read cell flags
2023-07-30 17:59:54 +02:00
Petr Mikheev
9b511fdf7a
Load ESM4 actors
2023-07-26 11:47:50 +02:00
Alexei Kotov
32022e9b5c
Read STAT::MNAM
2023-07-24 10:36:39 +03:00
Alexei Kotov
727e5c5af2
Read IDLM model data
2023-07-17 22:51:25 +03:00
Alexei Kotov
1e7fef979a
Skip MISC destruction data
2023-07-17 22:51:25 +03:00
Alexei Kotov
09f6032c9b
Skip TACT::VMAD/MODS
2023-07-17 22:51:25 +03:00
Alexei Kotov
332f38b7ab
Read SCRL::YNAM/ZNAM
2023-07-17 22:51:25 +03:00
Alexei Kotov
7e1e43f9c6
Allow GMSTs with empty EDID
2023-07-17 22:51:25 +03:00
Alexei Kotov
22cc7f3020
Skip LIGH destruction data
2023-07-17 22:51:25 +03:00
Alexei Dobrohotov
c6882dbc6b
Skip REFR::XPTL
...
Needed by Yukichigai Unofficial Patch
2023-07-13 10:22:25 +03:00
elsid
11204d35d6
Use zlib directly for ESM4
...
Fallback to decompression by block of fixed size when decompressing the
whole archive fails.
2023-06-10 00:12:57 +02:00
elsid
f841a1377f
Skip ATTR subrecord in CLAS record
...
Present in FalloutNV.esm.
2023-06-09 23:44:39 +02:00
elsid
e8ef1a2a0c
Add default initialization for ESM4::TeleportDest::flags
2023-06-04 01:50:08 +02:00
jvoisin
3152078c7e
Restore missing std::endl removed by an overeager regex
2023-06-01 13:48:41 +02:00
jvoisin
0e33730f5d
Remove useless logging
...
As suggested in https://gitlab.com/OpenMW/openmw/-/merge_requests/3086#note_1413234840
2023-06-01 13:31:48 +02:00
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
2023-06-01 13:31:48 +02:00
psi29a
27a879de9a
Merge branch 'tree_and_furniture' into 'master'
...
Load ESM4::Tree and ESM4::Furniture
See merge request OpenMW/openmw!3040
2023-06-01 09:15:46 +00:00
Petr Mikheev
5cb4c66266
Avoid using ESM4::Cell with uninitialized fields
2023-05-29 22:37:25 +02:00
Petr Mikheev
1b669db017
Load ESM4::Tree and ESM4::Furniture
2023-05-29 18:47:27 +02:00
florent.teppe
12304d36aa
std::cout => Log(Debug::Verbose)
2023-05-29 12:10:42 +02:00
florent.teppe
ad8cfde4e0
ESM::LandData no longer a virtual interface
...
instead it is constructed from ESM::Land or ESM4::Land
2023-05-29 12:10:42 +02:00
florent.teppe
f600730459
fixes functions that were virtual but not tagged as override.
2023-05-29 12:10:41 +02:00
florent.teppe
2bb17279df
linux build
...
clang format 14.0
Arm64 build
2023-05-29 12:10:41 +02:00
florent.teppe
d0211acf9e
Fixes bug in terrain loading + collision heightmap works
...
although terrain rendering is 100% broken right now
2023-05-29 11:32:13 +02:00
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.
2023-05-29 11:31:37 +02:00
florent.teppe
fffcf52316
land manager cache's key is an ExteriorCellLocation
...
ESM4::Land is now a ESM::LandData
2023-05-29 11:31:37 +02:00
jvoisin
c98c532213
Replace all asserts in components/esm[34] with throw
2023-05-27 16:10:53 +02:00
jvoisin
44a65512e8
Replace another assert with a throw
2023-05-26 10:23:58 +00:00
elsid
2f18da08d7
Add missing include
2023-05-23 12:26:16 +02:00
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.
2023-05-22 22:09:08 +02:00
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.
2023-05-22 22:09:08 +02:00
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.
2023-05-22 22:09:06 +02:00
Alexei Kotov
401ebfd7f2
Merge branch 'fix_oblivion_loading' into 'master'
...
Fix Oblivion loading
See merge request OpenMW/openmw!3050
2023-05-22 18:18:35 +00:00
jvoisin
a9bf671992
Fix Oblivion loading
...
Found by elsid@, and due to !3043
2023-05-22 18:24:39 +02:00
jvoisin
8b654f276d
Replace all the asserts
with throw
in components/esm4/reader.cpp
2023-05-22 17:42:32 +02:00
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
```
2023-05-21 20:07:52 +02:00
psi29a
e1754b840a
Merge branch 'fix_empty_vector' into 'master'
...
Guard an undefined behaviour
Closes #6725
See merge request OpenMW/openmw!3037
2023-05-21 17:33:13 +00:00
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.
2023-05-20 19:35:06 +02:00
jvoisin
cde7aeac3d
Replace an asert
with a conditional throw
...
The assert is reachable, resulting in a brutal `abort`
instead of a nice exception.
2023-05-20 19:33:14 +02:00
Petr Mikheev
be26fbdacb
Explicitly intialize the fields in ESM4::Cell
that don't have default constructors.
2023-05-18 20:21:47 +02:00
Petr Mikheev
61232f4b75
Fix uninitialized mWaterLevel in esm4/loadwrld.cpp
2023-05-18 02:10:39 +02:00
elsid
15f3e3ae71
Support ESM4 IDLE record
2023-05-17 22:59:34 +02:00
elsid
584c0dbcdc
Support reading bool GMST by ESM4
2023-05-17 22:59:34 +02:00
elsid
010db45a10
Read ESM::FormId using ESM4::Reader::getFormId
2023-05-17 22:59:29 +02:00
florent.teppe
93b3d9238c
mWater level disabled for skyrim.
2023-05-12 22:05:54 +02:00
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
2023-05-12 22:05:54 +02:00
florent.teppe
a62e75fd19
Initial attempt at loading esm4 exteriors
2023-05-12 22:05:52 +02:00
Bret Curtis
95fff7b77b
show which file is not found
2023-05-10 21:43:55 +02:00
jvoisin
c7a3f43915
Minor header cleanup
...
This has been done via CLion's "unused include directive",
set to "detect completely unused".
2023-04-30 16:26:03 +02:00
Petr Mikheev
7b6f0cefb9
Fix regressions in ESM4 reader caused by !2902
2023-04-22 17:07:54 +02:00
Petr Mikheev
3546d2b3e5
Make Store<ESM4::Reference> to use FormId instead of RefId
2023-04-20 01:47:16 +02:00
Petr Mikheev
00beb06391
Initial Lua bindings for ESM4 types; bindings for ESM4Door.
2023-04-20 01:47:16 +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
psi29a
aad9ce53db
Merge branch 'esm4_gmst' into 'master'
...
Support loading ESM4 GMST records
See merge request OpenMW/openmw!2892
2023-04-04 09:51:02 +00:00
elsid
dbed00842e
Split components/esm4/common.hpp header
2023-04-04 10:12:20 +02:00
elsid
87ac85223a
Support loading ESM4 GMST records
2023-04-04 09:59:35 +02:00
florent.teppe
f99e65843a
Removes most cellId.hpp include, simplifies id generation for cells.
2023-04-03 14:16:32 +02:00
florent.teppe
6895a452ef
restores the concept of worldspace for MWWorld::Cell
2023-04-03 14:16:04 +02:00
florent.teppe
a3a7767093
applies review changes
...
filepos changed to an actual file pos
moved lambda declaration out of function call
2023-03-28 17:11:30 +02:00
florent.teppe
464092e323
fix oblivion and skyrim
2023-03-28 17:11:30 +02:00
florent.teppe
34dd24b261
Initial changes to detect when context isn't usable
2023-03-28 17:11:30 +02:00
elsid
90ed24f4c9
Split type traits for ESM4, ESM3 and unite common
2023-03-26 19:07:23 +02:00
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
2023-03-18 09:30:48 +00:00
Shi Han
a90e3b8c3b
Move from std::atoi to std::from_char
2023-03-18 09:30:48 +00:00
elsid
67e96d48ba
Use relative to content file path to find strings file
...
To be used by esmtool when VFS is not used.
2023-03-18 03:00:18 +01:00
psi29a
a60f657f5a
Merge branch 'fast_cell4_load' into 'master'
...
Lazy loading of ESM4::reference
See merge request OpenMW/openmw!2804
2023-03-17 21:46:37 +00:00
Alexei Dobrohotov
3d87bc185d
Updates to ESM4::Ammunition loading
2023-03-13 01:36:07 +03:00
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.
2023-03-04 23:40:41 +01:00
Alexei Dobrohotov
540fa00f12
Don't use ESM4::Lighting fog power as fog density
2023-02-27 05:50:58 +03:00
Cédric Mocquillon
6e23ad82d5
Load esm files from vfs
2023-02-19 21:58:19 +01:00
florent.teppe
a71a86e64a
Load light models in the engine. Doesn't emit light
2023-02-06 20:22:17 +01:00
psi29a
4032c447e9
Merge branch 'load-ESM4-Cell' into 'master'
...
Can load and coc into an interrior oblivion cell
See merge request OpenMW/openmw!2647
2023-02-06 08:56:23 +00:00
florent.teppe
1caed2de2a
Applies some review comments.
...
Proper visit for ESM::CellVariant
Fixed MWWorldCell constructor
2023-02-04 17:09:54 +01:00