@@ -201,7 +201,7 @@ private bool LoadAssetsFile(FileReader reader)
201
201
{
202
202
if ( ! assetsFileListHash . Contains ( reader . FileName ) )
203
203
{
204
- Logger . Info ( $ "Loading { reader . FullPath } ") ;
204
+ Logger . Info ( $ "Loading \" { reader . FullPath } \" ") ;
205
205
try
206
206
{
207
207
var assetsFile = new SerializedFile ( reader , this ) ;
@@ -248,13 +248,13 @@ private bool LoadAssetsFile(FileReader reader)
248
248
}
249
249
catch ( Exception e )
250
250
{
251
- Logger . Warning ( $ "Failed to read assets file { reader . FullPath } \r \n { e } ") ;
251
+ Logger . Warning ( $ "Failed to read assets file \" { reader . FullPath } \" \n { e } ") ;
252
252
reader . Dispose ( ) ;
253
253
}
254
254
}
255
255
else
256
256
{
257
- Logger . Info ( $ "Skipping { reader . FullPath } ") ;
257
+ Logger . Info ( $ "Skipping \" { reader . FullPath } \" ") ;
258
258
reader . Dispose ( ) ;
259
259
}
260
260
return true ;
@@ -284,38 +284,46 @@ private bool LoadAssetsFromMemory(FileReader reader, string originalPath, UnityV
284
284
}
285
285
catch ( Exception e )
286
286
{
287
- Logger . Warning ( $ "Failed to read assets file { reader . FullPath } from { Path . GetFileName ( originalPath ) } \r \n { e } ") ;
287
+ Logger . Warning ( $ "Failed to read assets file \" { reader . FullPath } \" from { Path . GetFileName ( originalPath ) } \n { e } ") ;
288
288
resourceFileReaders . TryAdd ( reader . FileName , reader ) ;
289
289
}
290
290
}
291
291
else
292
292
{
293
- Logger . Info ( $ "Skipping { originalPath } ({ reader . FileName } )") ;
293
+ Logger . Info ( $ "Skipping \" { originalPath } \" ({ reader . FileName } )") ;
294
294
}
295
295
return true ;
296
296
}
297
297
298
298
private bool LoadBundleFile ( FileReader reader , string originalPath = null )
299
299
{
300
- Logger . Info ( "Loading " + reader . FullPath ) ;
300
+ Logger . Info ( $ "Loading \" { reader . FullPath } \" ") ;
301
+ Logger . Debug ( $ "Bundle offset: { reader . Position } ") ;
302
+ var bundleStream = new OffsetStream ( reader ) ;
303
+ var bundleReader = new FileReader ( reader . FullPath , bundleStream ) ;
304
+
301
305
try
302
306
{
303
- var bundleFile = new BundleFile ( reader , ZstdEnabled , specifiedUnityVersion ) ;
304
- foreach ( var file in bundleFile . fileList )
307
+ var bundleFile = new BundleFile ( bundleReader , ZstdEnabled , specifiedUnityVersion ) ;
308
+ var isLoaded = LoadBundleFiles ( bundleReader , bundleFile , originalPath ) ;
309
+ if ( ! isLoaded )
310
+ return false ;
311
+
312
+ while ( bundleFile . IsMultiBundle && isLoaded )
305
313
{
306
- var dummyPath = Path . Combine ( Path . GetDirectoryName ( reader . FullPath ) , file . fileName ) ;
307
- var subReader = new FileReader ( dummyPath , file . stream ) ;
308
- if ( subReader . FileType == FileType . AssetsFile )
309
- {
310
- if ( ! LoadAssetsFromMemory ( subReader , originalPath ?? reader . FullPath , bundleFile . m_Header . unityRevision ) )
311
- return false ;
312
- }
313
- else
314
+ bundleStream . Offset = reader . Position ;
315
+ bundleReader = new FileReader ( $ "{ reader . FullPath } _0x{ bundleStream . Offset : X} ", bundleStream ) ;
316
+ if ( bundleReader . Position > 0 )
314
317
{
315
- resourceFileReaders . TryAdd ( file . fileName , subReader ) ;
318
+ bundleStream . Offset += bundleReader . Position ;
319
+ bundleReader . FullPath = $ "{ reader . FullPath } _0x{ bundleStream . Offset : X} ";
320
+ bundleReader . FileName = $ "{ reader . FileName } _0x{ bundleStream . Offset : X} ";
316
321
}
322
+ Logger . Info ( $ "[MultiBundle] Loading \" { reader . FileName } \" from offset: 0x{ bundleStream . Offset : X} ") ;
323
+ bundleFile = new BundleFile ( bundleReader , ZstdEnabled , specifiedUnityVersion ) ;
324
+ isLoaded = LoadBundleFiles ( bundleReader , bundleFile , originalPath ?? reader . FullPath ) ;
317
325
}
318
- return true ;
326
+ return isLoaded ;
319
327
}
320
328
catch ( NotSupportedException e )
321
329
{
@@ -324,23 +332,42 @@ private bool LoadBundleFile(FileReader reader, string originalPath = null)
324
332
}
325
333
catch ( Exception e )
326
334
{
327
- var str = $ "Error while reading bundle file { reader . FullPath } ";
335
+ var str = $ "Error while reading bundle file \" { bundleReader . FullPath } \" ";
328
336
if ( originalPath != null )
329
337
{
330
338
str += $ " from { Path . GetFileName ( originalPath ) } ";
331
339
}
332
- Logger . Warning ( $ "{ str } \r \ n{ e } ") ;
340
+ Logger . Warning ( $ "{ str } \n { e } ") ;
333
341
return true ;
334
342
}
335
343
finally
336
344
{
337
- reader . Dispose ( ) ;
345
+ bundleReader . Dispose ( ) ;
338
346
}
339
347
}
340
348
349
+ private bool LoadBundleFiles ( FileReader reader , BundleFile bundleFile , string originalPath = null )
350
+ {
351
+ foreach ( var file in bundleFile . fileList )
352
+ {
353
+ var dummyPath = Path . Combine ( Path . GetDirectoryName ( reader . FullPath ) , file . fileName ) ;
354
+ var subReader = new FileReader ( dummyPath , file . stream ) ;
355
+ if ( subReader . FileType == FileType . AssetsFile )
356
+ {
357
+ if ( ! LoadAssetsFromMemory ( subReader , originalPath ?? reader . FullPath , bundleFile . m_Header . unityRevision ) )
358
+ return false ;
359
+ }
360
+ else
361
+ {
362
+ resourceFileReaders . TryAdd ( file . fileName , subReader ) ;
363
+ }
364
+ }
365
+ return true ;
366
+ }
367
+
341
368
private void LoadWebFile ( FileReader reader )
342
369
{
343
- Logger . Info ( "Loading " + reader . FullPath ) ;
370
+ Logger . Info ( $ "Loading \" { reader . FullPath } \" " ) ;
344
371
try
345
372
{
346
373
var webFile = new WebFile ( reader ) ;
@@ -367,7 +394,7 @@ private void LoadWebFile(FileReader reader)
367
394
}
368
395
catch ( Exception e )
369
396
{
370
- Logger . Error ( $ "Error while reading web file { reader . FullPath } ", e ) ;
397
+ Logger . Error ( $ "Error while reading web file \" { reader . FullPath } \" ", e ) ;
371
398
}
372
399
finally
373
400
{
@@ -427,7 +454,7 @@ private void LoadZipFile(FileReader reader)
427
454
}
428
455
catch ( Exception e )
429
456
{
430
- Logger . Warning ( $ "Error while reading zip split file { basePath } \r \n { e } ") ;
457
+ Logger . Warning ( $ "Error while reading zip split file \" { basePath } \" \n { e } ") ;
431
458
}
432
459
}
433
460
@@ -461,7 +488,7 @@ private void LoadZipFile(FileReader reader)
461
488
}
462
489
catch ( Exception e )
463
490
{
464
- Logger . Warning ( $ "Error while reading zip entry { entry . FullName } \r \n { e } ") ;
491
+ Logger . Warning ( $ "Error while reading zip entry \" { entry . FullName } \" \n { e } ") ;
465
492
}
466
493
}
467
494
}
0 commit comments