Skip to content

Commit fedd8ac

Browse files
hcdd0304praydog
andauthored
Support loading texture from loose files (#1669)
* Add loose texture loader * Enable for other games up * Merge loose texture loader to loose file loader * Fix compile error * Fix enable macro * Remove conditional compilation for MHWILDS --------- Co-authored-by: praydog <2909949+praydog@users.noreply.github.com>
1 parent ee8f0d9 commit fedd8ac

7 files changed

Lines changed: 938 additions & 0 deletions

CMakeLists.txt

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -505,6 +505,7 @@ if(REF_BUILD_RE2_SDK OR REF_BUILD_FRAMEWORK) # build-re2-sdk
505505
"shared/sdk/ReClass_Internal_RE8.hpp"
506506
"shared/sdk/ReClass_Internal_RE9.hpp"
507507
"shared/sdk/ReClass_Internal_SF6.hpp"
508+
"shared/sdk/ReClass_LooseTextureLoader_Internal.hpp"
508509
"shared/sdk/Renderer.cpp"
509510
"shared/sdk/Renderer.hpp"
510511
"shared/sdk/ResourceManager.cpp"
@@ -1464,6 +1465,7 @@ if(REF_BUILD_RE2_TDB66SDK OR REF_BUILD_FRAMEWORK) # build-re2tdb66-sdk
14641465
"shared/sdk/ReClass_Internal_RE8.hpp"
14651466
"shared/sdk/ReClass_Internal_RE9.hpp"
14661467
"shared/sdk/ReClass_Internal_SF6.hpp"
1468+
"shared/sdk/ReClass_LooseTextureLoader_Internal.hpp"
14671469
"shared/sdk/Renderer.cpp"
14681470
"shared/sdk/Renderer.hpp"
14691471
"shared/sdk/ResourceManager.cpp"
@@ -2415,6 +2417,8 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework
24152417
"src/mods/IntegrityCheckBypass.hpp"
24162418
"src/mods/LooseFileLoader.cpp"
24172419
"src/mods/LooseFileLoader.hpp"
2420+
"src/mods/LooseTextureLoader.cpp"
2421+
"src/mods/LooseTextureLoader.hpp"
24182422
"src/mods/ManualFlashlight.cpp"
24192423
"src/mods/ManualFlashlight.hpp"
24202424
"src/mods/MethodDatabase.cpp"
@@ -2620,6 +2624,8 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework
26202624
"src/mods/IntegrityCheckBypass.hpp"
26212625
"src/mods/LooseFileLoader.cpp"
26222626
"src/mods/LooseFileLoader.hpp"
2627+
"src/mods/LooseTextureLoader.cpp"
2628+
"src/mods/LooseTextureLoader.hpp"
26232629
"src/mods/ManualFlashlight.cpp"
26242630
"src/mods/ManualFlashlight.hpp"
26252631
"src/mods/MethodDatabase.cpp"
@@ -2834,6 +2840,7 @@ if(REF_BUILD_RE3_SDK OR REF_BUILD_FRAMEWORK) # build-re3-sdk
28342840
"shared/sdk/ReClass_Internal_RE8.hpp"
28352841
"shared/sdk/ReClass_Internal_RE9.hpp"
28362842
"shared/sdk/ReClass_Internal_SF6.hpp"
2843+
"shared/sdk/ReClass_LooseTextureLoader_Internal.hpp"
28372844
"shared/sdk/Renderer.cpp"
28382845
"shared/sdk/Renderer.hpp"
28392846
"shared/sdk/ResourceManager.cpp"
@@ -3793,6 +3800,7 @@ if(REF_BUILD_RE3_TDB67SDK OR REF_BUILD_FRAMEWORK) # build-re3tdb67-sdk
37933800
"shared/sdk/ReClass_Internal_RE8.hpp"
37943801
"shared/sdk/ReClass_Internal_RE9.hpp"
37953802
"shared/sdk/ReClass_Internal_SF6.hpp"
3803+
"shared/sdk/ReClass_LooseTextureLoader_Internal.hpp"
37963804
"shared/sdk/Renderer.cpp"
37973805
"shared/sdk/Renderer.hpp"
37983806
"shared/sdk/ResourceManager.cpp"
@@ -4744,6 +4752,8 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework
47444752
"src/mods/IntegrityCheckBypass.hpp"
47454753
"src/mods/LooseFileLoader.cpp"
47464754
"src/mods/LooseFileLoader.hpp"
4755+
"src/mods/LooseTextureLoader.cpp"
4756+
"src/mods/LooseTextureLoader.hpp"
47474757
"src/mods/ManualFlashlight.cpp"
47484758
"src/mods/ManualFlashlight.hpp"
47494759
"src/mods/MethodDatabase.cpp"
@@ -4949,6 +4959,8 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework
49494959
"src/mods/IntegrityCheckBypass.hpp"
49504960
"src/mods/LooseFileLoader.cpp"
49514961
"src/mods/LooseFileLoader.hpp"
4962+
"src/mods/LooseTextureLoader.cpp"
4963+
"src/mods/LooseTextureLoader.hpp"
49524964
"src/mods/ManualFlashlight.cpp"
49534965
"src/mods/ManualFlashlight.hpp"
49544966
"src/mods/MethodDatabase.cpp"
@@ -5154,6 +5166,8 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework
51545166
"src/mods/IntegrityCheckBypass.hpp"
51555167
"src/mods/LooseFileLoader.cpp"
51565168
"src/mods/LooseFileLoader.hpp"
5169+
"src/mods/LooseTextureLoader.cpp"
5170+
"src/mods/LooseTextureLoader.hpp"
51575171
"src/mods/ManualFlashlight.cpp"
51585172
"src/mods/ManualFlashlight.hpp"
51595173
"src/mods/MethodDatabase.cpp"
@@ -5368,6 +5382,7 @@ if(REF_BUILD_RE4_SDK OR REF_BUILD_FRAMEWORK) # build-re4-sdk
53685382
"shared/sdk/ReClass_Internal_RE8.hpp"
53695383
"shared/sdk/ReClass_Internal_RE9.hpp"
53705384
"shared/sdk/ReClass_Internal_SF6.hpp"
5385+
"shared/sdk/ReClass_LooseTextureLoader_Internal.hpp"
53715386
"shared/sdk/Renderer.cpp"
53725387
"shared/sdk/Renderer.hpp"
53735388
"shared/sdk/ResourceManager.cpp"
@@ -6329,6 +6344,7 @@ if(REF_BUILD_RE7_SDK OR REF_BUILD_FRAMEWORK) # build-re7-sdk
63296344
"shared/sdk/ReClass_Internal_RE8.hpp"
63306345
"shared/sdk/ReClass_Internal_RE9.hpp"
63316346
"shared/sdk/ReClass_Internal_SF6.hpp"
6347+
"shared/sdk/ReClass_LooseTextureLoader_Internal.hpp"
63326348
"shared/sdk/Renderer.cpp"
63336349
"shared/sdk/Renderer.hpp"
63346350
"shared/sdk/ResourceManager.cpp"
@@ -7288,6 +7304,7 @@ if(REF_BUILD_RE7_TDB49SDK OR REF_BUILD_FRAMEWORK) # build-re7tdb49-sdk
72887304
"shared/sdk/ReClass_Internal_RE8.hpp"
72897305
"shared/sdk/ReClass_Internal_RE9.hpp"
72907306
"shared/sdk/ReClass_Internal_SF6.hpp"
7307+
"shared/sdk/ReClass_LooseTextureLoader_Internal.hpp"
72917308
"shared/sdk/Renderer.cpp"
72927309
"shared/sdk/Renderer.hpp"
72937310
"shared/sdk/ResourceManager.cpp"
@@ -8239,6 +8256,8 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework
82398256
"src/mods/IntegrityCheckBypass.hpp"
82408257
"src/mods/LooseFileLoader.cpp"
82418258
"src/mods/LooseFileLoader.hpp"
8259+
"src/mods/LooseTextureLoader.cpp"
8260+
"src/mods/LooseTextureLoader.hpp"
82428261
"src/mods/ManualFlashlight.cpp"
82438262
"src/mods/ManualFlashlight.hpp"
82448263
"src/mods/MethodDatabase.cpp"
@@ -8444,6 +8463,8 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework
84448463
"src/mods/IntegrityCheckBypass.hpp"
84458464
"src/mods/LooseFileLoader.cpp"
84468465
"src/mods/LooseFileLoader.hpp"
8466+
"src/mods/LooseTextureLoader.cpp"
8467+
"src/mods/LooseTextureLoader.hpp"
84478468
"src/mods/ManualFlashlight.cpp"
84488469
"src/mods/ManualFlashlight.hpp"
84498470
"src/mods/MethodDatabase.cpp"
@@ -8658,6 +8679,7 @@ if(REF_BUILD_RE8_SDK OR REF_BUILD_FRAMEWORK) # build-re8-sdk
86588679
"shared/sdk/ReClass_Internal_RE8.hpp"
86598680
"shared/sdk/ReClass_Internal_RE9.hpp"
86608681
"shared/sdk/ReClass_Internal_SF6.hpp"
8682+
"shared/sdk/ReClass_LooseTextureLoader_Internal.hpp"
86618683
"shared/sdk/Renderer.cpp"
86628684
"shared/sdk/Renderer.hpp"
86638685
"shared/sdk/ResourceManager.cpp"
@@ -9610,6 +9632,8 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework
96109632
"src/mods/IntegrityCheckBypass.hpp"
96119633
"src/mods/LooseFileLoader.cpp"
96129634
"src/mods/LooseFileLoader.hpp"
9635+
"src/mods/LooseTextureLoader.cpp"
9636+
"src/mods/LooseTextureLoader.hpp"
96139637
"src/mods/ManualFlashlight.cpp"
96149638
"src/mods/ManualFlashlight.hpp"
96159639
"src/mods/MethodDatabase.cpp"
@@ -9824,6 +9848,7 @@ if(REF_BUILD_DMC5_SDK OR REF_BUILD_FRAMEWORK) # build-dmc5-sdk
98249848
"shared/sdk/ReClass_Internal_RE8.hpp"
98259849
"shared/sdk/ReClass_Internal_RE9.hpp"
98269850
"shared/sdk/ReClass_Internal_SF6.hpp"
9851+
"shared/sdk/ReClass_LooseTextureLoader_Internal.hpp"
98279852
"shared/sdk/Renderer.cpp"
98289853
"shared/sdk/Renderer.hpp"
98299854
"shared/sdk/ResourceManager.cpp"
@@ -10774,6 +10799,8 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework
1077410799
"src/mods/IntegrityCheckBypass.hpp"
1077510800
"src/mods/LooseFileLoader.cpp"
1077610801
"src/mods/LooseFileLoader.hpp"
10802+
"src/mods/LooseTextureLoader.cpp"
10803+
"src/mods/LooseTextureLoader.hpp"
1077710804
"src/mods/ManualFlashlight.cpp"
1077810805
"src/mods/ManualFlashlight.hpp"
1077910806
"src/mods/MethodDatabase.cpp"
@@ -10988,6 +11015,7 @@ if(REF_BUILD_MHRISE_SDK OR REF_BUILD_FRAMEWORK) # build-mhrise-sdk
1098811015
"shared/sdk/ReClass_Internal_RE8.hpp"
1098911016
"shared/sdk/ReClass_Internal_RE9.hpp"
1099011017
"shared/sdk/ReClass_Internal_SF6.hpp"
11018+
"shared/sdk/ReClass_LooseTextureLoader_Internal.hpp"
1099111019
"shared/sdk/Renderer.cpp"
1099211020
"shared/sdk/Renderer.hpp"
1099311021
"shared/sdk/ResourceManager.cpp"
@@ -11940,6 +11968,8 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework
1194011968
"src/mods/IntegrityCheckBypass.hpp"
1194111969
"src/mods/LooseFileLoader.cpp"
1194211970
"src/mods/LooseFileLoader.hpp"
11971+
"src/mods/LooseTextureLoader.cpp"
11972+
"src/mods/LooseTextureLoader.hpp"
1194311973
"src/mods/ManualFlashlight.cpp"
1194411974
"src/mods/ManualFlashlight.hpp"
1194511975
"src/mods/MethodDatabase.cpp"
@@ -12154,6 +12184,7 @@ if(REF_BUILD_SF6_SDK OR REF_BUILD_FRAMEWORK) # build-sf6-sdk
1215412184
"shared/sdk/ReClass_Internal_RE8.hpp"
1215512185
"shared/sdk/ReClass_Internal_RE9.hpp"
1215612186
"shared/sdk/ReClass_Internal_SF6.hpp"
12187+
"shared/sdk/ReClass_LooseTextureLoader_Internal.hpp"
1215712188
"shared/sdk/Renderer.cpp"
1215812189
"shared/sdk/Renderer.hpp"
1215912190
"shared/sdk/ResourceManager.cpp"
@@ -13106,6 +13137,8 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework
1310613137
"src/mods/IntegrityCheckBypass.hpp"
1310713138
"src/mods/LooseFileLoader.cpp"
1310813139
"src/mods/LooseFileLoader.hpp"
13140+
"src/mods/LooseTextureLoader.cpp"
13141+
"src/mods/LooseTextureLoader.hpp"
1310913142
"src/mods/ManualFlashlight.cpp"
1311013143
"src/mods/ManualFlashlight.hpp"
1311113144
"src/mods/MethodDatabase.cpp"
@@ -13320,6 +13353,7 @@ if(REF_BUILD_DD2_SDK OR REF_BUILD_FRAMEWORK) # build-dd2-sdk
1332013353
"shared/sdk/ReClass_Internal_RE8.hpp"
1332113354
"shared/sdk/ReClass_Internal_RE9.hpp"
1332213355
"shared/sdk/ReClass_Internal_SF6.hpp"
13356+
"shared/sdk/ReClass_LooseTextureLoader_Internal.hpp"
1332313357
"shared/sdk/Renderer.cpp"
1332413358
"shared/sdk/Renderer.hpp"
1332513359
"shared/sdk/ResourceManager.cpp"
@@ -14272,6 +14306,8 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework
1427214306
"src/mods/IntegrityCheckBypass.hpp"
1427314307
"src/mods/LooseFileLoader.cpp"
1427414308
"src/mods/LooseFileLoader.hpp"
14309+
"src/mods/LooseTextureLoader.cpp"
14310+
"src/mods/LooseTextureLoader.hpp"
1427514311
"src/mods/ManualFlashlight.cpp"
1427614312
"src/mods/ManualFlashlight.hpp"
1427714313
"src/mods/MethodDatabase.cpp"
@@ -14486,6 +14522,7 @@ if(REF_BUILD_MHWILDS_SDK OR REF_BUILD_FRAMEWORK) # build-mhwilds-sdk
1448614522
"shared/sdk/ReClass_Internal_RE8.hpp"
1448714523
"shared/sdk/ReClass_Internal_RE9.hpp"
1448814524
"shared/sdk/ReClass_Internal_SF6.hpp"
14525+
"shared/sdk/ReClass_LooseTextureLoader_Internal.hpp"
1448914526
"shared/sdk/Renderer.cpp"
1449014527
"shared/sdk/Renderer.hpp"
1449114528
"shared/sdk/ResourceManager.cpp"
@@ -15438,6 +15475,8 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework
1543815475
"src/mods/IntegrityCheckBypass.hpp"
1543915476
"src/mods/LooseFileLoader.cpp"
1544015477
"src/mods/LooseFileLoader.hpp"
15478+
"src/mods/LooseTextureLoader.cpp"
15479+
"src/mods/LooseTextureLoader.hpp"
1544115480
"src/mods/ManualFlashlight.cpp"
1544215481
"src/mods/ManualFlashlight.hpp"
1544315482
"src/mods/MethodDatabase.cpp"
@@ -15652,6 +15691,7 @@ if(REF_BUILD_MHSTORIES3_SDK OR REF_BUILD_FRAMEWORK) # build-mhstories3-sdk
1565215691
"shared/sdk/ReClass_Internal_RE8.hpp"
1565315692
"shared/sdk/ReClass_Internal_RE9.hpp"
1565415693
"shared/sdk/ReClass_Internal_SF6.hpp"
15694+
"shared/sdk/ReClass_LooseTextureLoader_Internal.hpp"
1565515695
"shared/sdk/Renderer.cpp"
1565615696
"shared/sdk/Renderer.hpp"
1565715697
"shared/sdk/ResourceManager.cpp"
@@ -16604,6 +16644,8 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework
1660416644
"src/mods/IntegrityCheckBypass.hpp"
1660516645
"src/mods/LooseFileLoader.cpp"
1660616646
"src/mods/LooseFileLoader.hpp"
16647+
"src/mods/LooseTextureLoader.cpp"
16648+
"src/mods/LooseTextureLoader.hpp"
1660716649
"src/mods/ManualFlashlight.cpp"
1660816650
"src/mods/ManualFlashlight.hpp"
1660916651
"src/mods/MethodDatabase.cpp"
@@ -17984,6 +18026,7 @@ if(REF_BUILD_RE9_SDK OR REF_BUILD_FRAMEWORK) # build-re9-sdk
1798418026
"shared/sdk/ReClass_Internal_RE8.hpp"
1798518027
"shared/sdk/ReClass_Internal_RE9.hpp"
1798618028
"shared/sdk/ReClass_Internal_SF6.hpp"
18029+
"shared/sdk/ReClass_LooseTextureLoader_Internal.hpp"
1798718030
"shared/sdk/Renderer.cpp"
1798818031
"shared/sdk/Renderer.hpp"
1798918032
"shared/sdk/ResourceManager.cpp"
@@ -18936,6 +18979,8 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework
1893618979
"src/mods/IntegrityCheckBypass.hpp"
1893718980
"src/mods/LooseFileLoader.cpp"
1893818981
"src/mods/LooseFileLoader.hpp"
18982+
"src/mods/LooseTextureLoader.cpp"
18983+
"src/mods/LooseTextureLoader.hpp"
1893918984
"src/mods/ManualFlashlight.cpp"
1894018985
"src/mods/ManualFlashlight.hpp"
1894118986
"src/mods/MethodDatabase.cpp"
@@ -19150,6 +19195,7 @@ if(REF_BUILD_PRAGMATA_SDK OR REF_BUILD_FRAMEWORK) # build-pragmata-sdk
1915019195
"shared/sdk/ReClass_Internal_RE8.hpp"
1915119196
"shared/sdk/ReClass_Internal_RE9.hpp"
1915219197
"shared/sdk/ReClass_Internal_SF6.hpp"
19198+
"shared/sdk/ReClass_LooseTextureLoader_Internal.hpp"
1915319199
"shared/sdk/Renderer.cpp"
1915419200
"shared/sdk/Renderer.hpp"
1915519201
"shared/sdk/ResourceManager.cpp"
@@ -20102,6 +20148,8 @@ if(REF_BUILD_FRAMEWORK AND CMAKE_SIZEOF_VOID_P EQUAL 8) # build-framework
2010220148
"src/mods/IntegrityCheckBypass.hpp"
2010320149
"src/mods/LooseFileLoader.cpp"
2010420150
"src/mods/LooseFileLoader.hpp"
20151+
"src/mods/LooseTextureLoader.cpp"
20152+
"src/mods/LooseTextureLoader.hpp"
2010520153
"src/mods/ManualFlashlight.cpp"
2010620154
"src/mods/ManualFlashlight.hpp"
2010720155
"src/mods/MethodDatabase.cpp"
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
#pragma once
2+
3+
#include <cstddef>
4+
#include <cstdint>
5+
6+
struct REPakData {
7+
std::uint8_t unk0[200];
8+
uintptr_t dstorage_file_ptr;
9+
};
10+
11+
static_assert(offsetof(REPakData, dstorage_file_ptr) == 200, "REPakData::dstorage_file_ptr is not at offset 200");
12+
13+
struct REPakEntryData {
14+
REPakData* pak_data;
15+
uint32_t index_in_pak;
16+
};
17+
18+
// Above 0xFFFF0000
19+
static constexpr uint32_t FAKE_INVALID_INDEX_IN_PAK = 0xFFFFDEAD;
20+
21+
struct REUniversalStream;
22+
23+
#pragma pack(push, 1)
24+
struct DStorageDataUploadState {
25+
std::uint64_t unk0;
26+
std::uint64_t dest_to_upload;
27+
std::uint64_t offset_source_data;
28+
std::uint64_t unk18;
29+
std::uint8_t unk20[40];
30+
uintptr_t upload_finish_callback;
31+
REUniversalStream* stream;
32+
std::uint8_t unk50[48];
33+
};
34+
#pragma pack(pop)
35+
36+
struct REUniversalStreamVtable {
37+
uintptr_t unk0[2];
38+
uint64_t (*read_file)(REUniversalStream *this_ptr, void *buffer, uint64_t size);
39+
uintptr_t unk18[8];
40+
uint64_t (*seek_file)(REUniversalStream *this_ptr, uint64_t offset);
41+
};
42+
43+
static_assert(offsetof(REUniversalStreamVtable, read_file) == 16, "read_file offset is incorrect!");
44+
static_assert(offsetof(REUniversalStreamVtable, seek_file) == 88, "seek_file offset is incorrect!");
45+
46+
static_assert(offsetof(DStorageDataUploadState, stream) == 80, "DStorageDataUploadState::stream is not at offset 80");
47+
static_assert(sizeof(DStorageDataUploadState) == 136, "DStorageDataUploadState size is not 136 bytes");
48+
49+
#pragma pack(push, 1)
50+
struct REUniversalStream {
51+
REUniversalStreamVtable* vtable;
52+
std::uint8_t unk8[80];
53+
uintptr_t win32_file_handle;
54+
DStorageDataUploadState dstorage_upload_state;
55+
std::uint64_t pak_entry_handle;
56+
uintptr_t dstorage_file_ptr;
57+
std::uint8_t unkF8[12];
58+
uintptr_t in_memory_buffer_ptr;
59+
std::uint64_t current_offset;
60+
std::uint8_t gap114[12];
61+
bool pending_operation_finished;
62+
std::uint8_t gap121[7];
63+
std::uint64_t submitted_bytes_count;
64+
std::uint64_t processed_bytes_count;
65+
66+
REPakEntryData* get_pak_entry_data() {
67+
const auto handle_info_ptr = static_cast<uintptr_t>(pak_entry_handle >> 16);
68+
if (handle_info_ptr == 0) {
69+
return nullptr;
70+
}
71+
return reinterpret_cast<REPakEntryData*>(handle_info_ptr);
72+
}
73+
74+
void set_pak_entry_data(REPakEntryData* entry_data) {
75+
const uint64_t lower_bits = pak_entry_handle & 0xFFFF;
76+
pak_entry_handle = (static_cast<uint64_t>(reinterpret_cast<uintptr_t>(entry_data)) << 16) | lower_bits;
77+
}
78+
};
79+
#pragma pack(pop)
80+
81+
static_assert(offsetof(REUniversalStream, pak_entry_handle) == 232, "pak_entry_handle offset is incorrect!");
82+
static_assert(offsetof(REUniversalStream, current_offset) == 268, "current_offset is incorrect!");
83+
static_assert(offsetof(REUniversalStream, pending_operation_finished) == 288, "pending_operation_finished offset is incorrect!");
84+
static_assert(offsetof(REUniversalStream, submitted_bytes_count) == 296, "submitted_bytes_count offset is incorrect!");
85+
static_assert(offsetof(REUniversalStream, processed_bytes_count) == 304, "processed_bytes_count offset is incorrect!");
86+

src/REFramework.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -504,6 +504,8 @@ REFramework::REFramework(HMODULE reframework_module)
504504
startup_lookup_thread->detach();
505505
#endif
506506

507+
LooseTextureLoader::get().early_initialize();
508+
507509
#if FAULTY_FILE_DETECTOR_ENABLED
508510
FaultyFileDetector::early_init();
509511
#endif

0 commit comments

Comments
 (0)