@@ -444,6 +444,49 @@ public SubMesh(ObjectReader reader)
444
444
}
445
445
}
446
446
447
+ public class VGPackedHierarchyNode
448
+ {
449
+ public Vector4 [ ] LODBounds = new Vector4 [ 8 ] ;
450
+ public Vector3 [ ] BoxBoundsCenter = new Vector3 [ 8 ] ;
451
+ public uint [ ] MinLODError_MaxParentLODError = new uint [ 8 ] ;
452
+ public Vector3 [ ] BoxBoundsExtent = new Vector3 [ 8 ] ;
453
+ public uint [ ] ChildStartReference = new uint [ 8 ] ;
454
+ public uint [ ] ResourcePageIndex_NumPages_GroupPartSize = new uint [ 8 ] ;
455
+
456
+ public VGPackedHierarchyNode ( BinaryReader reader )
457
+ {
458
+ for ( var i = 0 ; i < 8 ; i ++ )
459
+ {
460
+ LODBounds [ i ] = reader . ReadVector4 ( ) ;
461
+ BoxBoundsCenter [ i ] = reader . ReadVector3 ( ) ;
462
+ MinLODError_MaxParentLODError [ i ] = reader . ReadUInt32 ( ) ;
463
+ BoxBoundsExtent [ i ] = reader . ReadVector3 ( ) ;
464
+ ChildStartReference [ i ] = reader . ReadUInt32 ( ) ;
465
+ ResourcePageIndex_NumPages_GroupPartSize [ i ] = reader . ReadUInt32 ( ) ;
466
+ }
467
+ }
468
+ }
469
+
470
+ public class VGPageStreamingState
471
+ {
472
+ public uint BulkOffset ;
473
+ public uint BulkSize ;
474
+ public uint PageSize ;
475
+ public uint DependenciesStart ;
476
+ public uint DependenciesNum ;
477
+ public uint Flags ;
478
+
479
+ public VGPageStreamingState ( BinaryReader reader )
480
+ {
481
+ BulkOffset = reader . ReadUInt32 ( ) ;
482
+ BulkSize = reader . ReadUInt32 ( ) ;
483
+ PageSize = reader . ReadUInt32 ( ) ;
484
+ DependenciesStart = reader . ReadUInt32 ( ) ;
485
+ DependenciesNum = reader . ReadUInt32 ( ) ;
486
+ Flags = reader . ReadUInt32 ( ) ;
487
+ }
488
+ }
489
+
447
490
public sealed class Mesh : NamedObject
448
491
{
449
492
private bool m_Use16BitIndices = true ;
@@ -542,6 +585,36 @@ public Mesh(ObjectReader reader) : base(reader)
542
585
var m_KeepVertices = reader . ReadBoolean ( ) ;
543
586
var m_KeepIndices = reader . ReadBoolean ( ) ;
544
587
}
588
+ if ( version . IsTuanjie )
589
+ {
590
+ var m_LightmapUseUV1 = reader . ReadInt32 ( ) ;
591
+ var m_fileScale = reader . ReadSingle ( ) ;
592
+ var NumInputTriangles = reader . ReadUInt32 ( ) ;
593
+ var NumInputVertices = reader . ReadUInt32 ( ) ;
594
+ var NumInputMeshes = reader . ReadUInt16 ( ) ;
595
+ var NumInputTexCoords = reader . ReadUInt16 ( ) ;
596
+ var ResourceFlags = reader . ReadUInt32 ( ) ;
597
+ var RootClusterPageSize = reader . ReadInt32 ( ) ;
598
+ reader . Position += RootClusterPageSize ; //skip byte[] RootClusterPage
599
+ var ImposterAtlasSize = reader . ReadInt32 ( ) ;
600
+ reader . Position += ImposterAtlasSize * 2 ; //skip ushort[] ImposterAtlas
601
+ var HierarchyNodesSize = reader . ReadInt32 ( ) ;
602
+ for ( var i = 0 ; i < HierarchyNodesSize ; i ++ )
603
+ {
604
+ _ = new VGPackedHierarchyNode ( reader ) ;
605
+ }
606
+ var HierarchyRootOffsetsSize = reader . ReadInt32 ( ) ;
607
+ reader . Position += HierarchyRootOffsetsSize * 4 ; //skip uint[] HierarchyRootOffsets
608
+ var PageStreamingStatesSize = reader . ReadInt32 ( ) ;
609
+ for ( var i = 0 ; i < PageStreamingStatesSize ; i ++ )
610
+ {
611
+ _ = new VGPageStreamingState ( reader ) ;
612
+ }
613
+ var PageDependenciesSize = reader . ReadInt32 ( ) ;
614
+ reader . Position += PageDependenciesSize * 4 ; //skip uint[] PageDependencies
615
+ var streamableClusterPageSize = reader . ReadInt32 ( ) ;
616
+ reader . Position += streamableClusterPageSize ; //skip byte[] streamableClusterPageSize
617
+ }
545
618
reader . AlignStream ( ) ;
546
619
547
620
//Unity fixed it in 2017.3.1p1 and later versions
0 commit comments