@@ -71,6 +71,42 @@ private int ToSerializedVersion(int[] version)
7171 }
7272 }
7373
74+ public class CompressMetaData1
75+ {
76+ public float m_Range ;
77+ public float m_Min ;
78+ public float m_BitRate ;
79+ public float m_BitFixed ;
80+ public int m_SegmentBegin ;
81+ public int m_SegmentEnd ;
82+
83+ public CompressMetaData1 ( ObjectReader reader )
84+ {
85+ m_Range = reader . ReadFloat ( ) ;
86+ m_Min = reader . ReadFloat ( ) ;
87+ m_BitRate = reader . ReadFloat ( ) ;
88+ m_BitFixed = reader . ReadFloat ( ) ;
89+ m_SegmentBegin = reader . ReadInt32 ( ) ;
90+ m_SegmentEnd = reader . ReadInt32 ( ) ;
91+ }
92+ }
93+
94+ public class CompressMetaData2
95+ {
96+ public Vector3 m_Range ;
97+ public Vector3 m_Min ;
98+ public Vector3 m_BitRate ;
99+ public Vector3 m_BitFixed ;
100+
101+ public CompressMetaData2 ( ObjectReader reader )
102+ {
103+ m_Range = reader . ReadVector3 ( ) ;
104+ m_Min = reader . ReadVector3 ( ) ;
105+ m_BitRate = reader . ReadVector3 ( ) ;
106+ m_BitFixed = reader . ReadVector3 ( ) ;
107+ }
108+ }
109+
74110 public class AnimationCurve < T > : IYAMLExportable where T : IYAMLExportable
75111 {
76112 public List < Keyframe < T > > m_Curve ;
@@ -86,7 +122,7 @@ public AnimationCurve()
86122 m_Curve = new List < Keyframe < T > > ( ) ;
87123 }
88124
89- public AnimationCurve ( ObjectReader reader , Func < T > readerFunc )
125+ public AnimationCurve ( ObjectReader reader , Func < T > readerFunc , int type = 0 )
90126 {
91127 var version = reader . version ;
92128 int numCurves = reader . ReadInt32 ( ) ;
@@ -102,6 +138,34 @@ public AnimationCurve(ObjectReader reader, Func<T> readerFunc)
102138 {
103139 m_RotationOrder = reader . ReadInt32 ( ) ;
104140 }
141+ if ( reader . Game . Type . IsRewindingCadence ( ) )
142+ {
143+ if ( type == 0 ) {
144+ var m_Range = reader . ReadQuaternion ( ) ;
145+ var m_Min = reader . ReadQuaternion ( ) ;
146+ var m_BitRate = reader . ReadQuaternion ( ) ;
147+ var m_BitFixed = reader . ReadQuaternion ( ) ;
148+ } else if ( type == 1 ) {
149+ var m_Range = reader . ReadFloat ( ) ;
150+ var m_Min = reader . ReadFloat ( ) ;
151+ var m_IsBitCompress = reader . ReadBoolean ( ) ;
152+
153+ var m_MetaData = new List < CompressMetaData1 > ( ) ;
154+ var m_MetaDataCount = reader . ReadInt32 ( ) ;
155+ for ( int i = 0 ; ( i < m_MetaDataCount ) ; i ++ )
156+ {
157+ m_MetaData . Add ( new CompressMetaData1 ( reader ) ) ;
158+ }
159+ } else if ( type == 2 )
160+ {
161+ var m_MetaData = new List < CompressMetaData2 > ( ) ;
162+ var m_MetaDataCount = reader . ReadInt32 ( ) ;
163+ for ( int i = 0 ; ( i < m_MetaDataCount ) ; i ++ )
164+ {
165+ m_MetaData . Add ( new CompressMetaData2 ( reader ) ) ;
166+ }
167+ }
168+ }
105169 }
106170
107171 public YAMLNode ExportYAML ( int [ ] version )
@@ -141,7 +205,7 @@ public QuaternionCurve(string path)
141205
142206 public QuaternionCurve ( ObjectReader reader )
143207 {
144- curve = new AnimationCurve < Quaternion > ( reader , reader . ReadQuaternion ) ;
208+ curve = new AnimationCurve < Quaternion > ( reader , reader . ReadQuaternion , 1 ) ;
145209 path = reader . ReadAlignedString ( ) ;
146210 }
147211
@@ -430,7 +494,7 @@ public Vector3Curve(string path)
430494
431495 public Vector3Curve ( ObjectReader reader )
432496 {
433- curve = new AnimationCurve < Vector3 > ( reader , reader . ReadVector3 ) ;
497+ curve = new AnimationCurve < Vector3 > ( reader , reader . ReadVector3 , 2 ) ;
434498 path = reader . ReadAlignedString ( ) ;
435499 }
436500
@@ -485,15 +549,15 @@ public FloatCurve(ObjectReader reader)
485549 {
486550 var version = reader . version ;
487551
488- curve = new AnimationCurve < Float > ( reader , reader . ReadFloat ) ;
552+ curve = new AnimationCurve < Float > ( reader , reader . ReadFloat , 1 ) ;
489553 attribute = reader . ReadAlignedString ( ) ;
490554 path = reader . ReadAlignedString ( ) ;
491555 classID = ( ClassIDType ) reader . ReadInt32 ( ) ;
492556 script = new PPtr < MonoScript > ( reader ) ;
493557 if ( version [ 0 ] == 2022 && version [ 1 ] >= 2 ) //2022.2 and up
494558 {
495559 flags = reader . ReadInt32 ( ) ;
496- }
560+ }
497561 }
498562
499563 public YAMLNode ExportYAML ( int [ ] version )
@@ -1767,6 +1831,23 @@ public AnimClipAclCompressedBuffer(EndianBinaryReader reader)
17671831 }
17681832 }
17691833
1834+ public class BindingToCurveIndices
1835+ {
1836+ public uint [ ] positionIndices ;
1837+ public uint [ ] quaternionIndices ;
1838+ public uint [ ] scaleIndices ;
1839+
1840+ public BindingToCurveIndices ( ObjectReader reader )
1841+ {
1842+ var positionIndicesCount = reader . ReadInt32 ( ) ;
1843+ positionIndices = reader . ReadUInt32Array ( positionIndicesCount ) ;
1844+ var quaternionIndicesCount = reader . ReadInt32 ( ) ;
1845+ quaternionIndices = reader . ReadUInt32Array ( quaternionIndicesCount ) ;
1846+ var scaleIndicesCount = reader . ReadInt32 ( ) ;
1847+ scaleIndices = reader . ReadUInt32Array ( scaleIndicesCount ) ;
1848+ }
1849+ }
1850+
17701851 public class AnimationClipBindingConstant : IYAMLExportable
17711852 {
17721853 public List < GenericBinding > genericBindings ;
@@ -1789,6 +1870,12 @@ public AnimationClipBindingConstant(ObjectReader reader)
17891870 {
17901871 pptrCurveMapping . Add ( new PPtr < Object > ( reader ) ) ;
17911872 }
1873+
1874+ if ( reader . Game . Type . IsRewindingCadence ( ) )
1875+ {
1876+ var bindingToCurveIndices = new BindingToCurveIndices ( reader ) ;
1877+ var bindingsHash = reader . ReadUInt32 ( ) ;
1878+ }
17921879 }
17931880
17941881 public YAMLNode ExportYAML ( int [ ] version )
@@ -1864,6 +1951,10 @@ public AnimationEvent(ObjectReader reader)
18641951 {
18651952 hashCodeType = reader . ReadInt32 ( ) ;
18661953 }
1954+ if ( reader . Game . Type . IsRewindingCadence ( ) )
1955+ {
1956+ var enableCustomEventExtension = reader . ReadBoolean ( ) ;
1957+ }
18671958 }
18681959
18691960 public YAMLNode ExportYAML ( int [ ] version )
@@ -1880,6 +1971,20 @@ public YAMLNode ExportYAML(int[] version)
18801971 }
18811972 }
18821973
1974+ public class TransformInfo
1975+ {
1976+ public Vector3 [ ] PositionValues ;
1977+ public Vector4 [ ] QuaternionValues ;
1978+ public Vector3 [ ] ScaleValues ;
1979+
1980+ public TransformInfo ( ObjectReader reader )
1981+ {
1982+ PositionValues = reader . ReadVector3Array ( ) ;
1983+ QuaternionValues = reader . ReadVector4Array ( ) ;
1984+ ScaleValues = reader . ReadVector3Array ( ) ;
1985+ }
1986+ }
1987+
18831988 public enum AnimationType
18841989 {
18851990 Legacy = 1 ,
@@ -2023,7 +2128,7 @@ public AnimationClip(ObjectReader reader) : base(reader)
20232128 }
20242129 if ( version [ 0 ] >= 4 ) //4.0 and up
20252130 {
2026- if ( reader . Game . Type . IsGI ( ) )
2131+ if ( reader . Game . Type . IsGI ( ) || reader . Game . Type . IsRewindingCadence ( ) )
20272132 {
20282133 var muscleClipSize = reader . ReadInt32 ( ) ;
20292134 if ( muscleClipSize < 0 )
@@ -2071,6 +2176,10 @@ public AnimationClip(ObjectReader reader) : base(reader)
20712176 var m_HasMotionFloatCurves = reader . ReadBoolean ( ) ;
20722177 reader . AlignStream ( ) ;
20732178 }
2179+ if ( reader . Game . Type . IsRewindingCadence ( ) )
2180+ {
2181+ var m_AvatarDefaultPose = new TransformInfo ( reader ) ;
2182+ }
20742183 int numEvents = reader . ReadInt32 ( ) ;
20752184 m_Events = new List < AnimationEvent > ( ) ;
20762185 for ( int i = 0 ; i < numEvents ; i ++ )
@@ -2086,6 +2195,11 @@ public AnimationClip(ObjectReader reader) : base(reader)
20862195 var m_TotalSize = reader . ReadUInt32 ( ) ;
20872196 var m_TransitionRotateCurveIndex = reader . ReadUInt16 ( ) ;
20882197 }
2198+ if ( reader . Game . Type . IsRewindingCadence ( ) )
2199+ {
2200+ var m_UseDefaultPoseAdditive = reader . ReadBoolean ( ) ;
2201+ var m_AvatarDefaultPoseHash = reader . ReadInt32 ( ) ;
2202+ }
20892203 if ( version [ 0 ] >= 2017 ) //2017 and up
20902204 {
20912205 reader . AlignStream ( ) ;
0 commit comments