Skip to content

Commit 32dd7da

Browse files
committed
add some rewinding cadence stuff
1 parent 9763bcd commit 32dd7da

6 files changed

Lines changed: 147 additions & 6 deletions

File tree

AnimeStudio/ClassIDType.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -313,6 +313,7 @@ public enum ClassIDType
313313
AudioMixerLiveUpdateBool = 100009,
314314
Polygon2D = 100010,
315315
//void = 100011,
316+
MiniColliderHandler = 100014,
316317
NapAssetBundleIndexAsset = 6776977,
317318
TilemapCollider2D = 19719996,
318319
DLSSViewPort = 57190968,
@@ -366,6 +367,7 @@ public enum ClassIDType
366367
BuiltAssetBundleInfoSet = 668709126,
367368
SpriteAtlas = 687078895,
368369
RayTracingShaderImporter = 747330370,
370+
OccluderMesh = 752891091,
369371
RayTracingShader = 825902497,
370372
NapLODMeshFilter = 827083203,
371373
LightStateTransitionPreset = 849312072,
@@ -388,6 +390,7 @@ public enum ClassIDType
388390
MdbComponent = 1152437158,
389391
SceneVisibilityState = 1154873562,
390392
LookAtConstraint = 1183024399,
393+
PipelineStateObjectCollection = 1196786179,
391394
SpriteAtlasImporter = 1210832254,
392395
MultiArtifactTestImporter = 1223240404,
393396
PBDWindZone = 1242241234,
@@ -404,6 +407,7 @@ public enum ClassIDType
404407
RenderPassAttachment = 1571458007,
405408
TestObjectVectorPairStringBool = 1628831178,
406409
GridLayout = 1742807556,
410+
BakedAnimationSetBindings = 1762992873,
407411
AssemblyDefinitionImporter = 1766753193,
408412
ParentConstraint = 1773428102,
409413
FakeComponent = 1803986026,

AnimeStudio/Classes/AnimationClip.cs

Lines changed: 120 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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();

AnimeStudio/Classes/Material.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,11 @@ public Material(ObjectReader reader) : base(reader)
147147
var m_ShaderKeywords = reader.ReadStringArray();
148148
}
149149

150+
if (reader.Game.Type.IsRewindingCadence())
151+
{
152+
var m_VertexSkinningFlag = reader.ReadUInt32();
153+
}
154+
150155
if (version[0] > 2021 || (version[0] == 2021 && version[1] >= 3)) //2021.3 and up
151156
{
152157
var m_ValidKeywords = reader.ReadStringArray();
@@ -175,6 +180,11 @@ public Material(ObjectReader reader) : base(reader)
175180
var m_CustomRenderQueue = reader.ReadInt32();
176181
}
177182

183+
if (reader.Game.Type.IsRewindingCadence())
184+
{
185+
var m_RenderingUsageMask = reader.ReadUInt32();
186+
}
187+
178188
if (reader.Game.Type.IsLoveAndDeepspace())
179189
{
180190
var m_MaterialType = reader.ReadUInt32();

AnimeStudio/Classes/Mesh.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -616,6 +616,12 @@ public Mesh(ObjectReader reader) : base(reader)
616616
}
617617
var m_KeepVertices = reader.ReadBoolean();
618618
var m_KeepIndices = reader.ReadBoolean();
619+
if (reader.Game.Type.IsRewindingCadence())
620+
{
621+
var m_VertexAttributePacking = reader.ReadBoolean();
622+
var m_IsDisableAutoUpload = reader.ReadBoolean();
623+
var m_VertexAttributePackingMask = reader.ReadUInt32();
624+
}
619625
if (reader.Game.Type.IsArknightsEndfieldCB3() || reader.Game.Type.IsArknightsEndfield())
620626
{
621627
var m_CollisionMeshOnly = reader.ReadBoolean();

AnimeStudio/Classes/Texture2D.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,10 @@ public Texture2D(ObjectReader reader) : base(reader)
118118
reader.AlignStream(); //m_IgnoreMipmapLimit
119119
var m_MipmapLimitGroupName = reader.ReadAlignedString();
120120
}
121+
if (reader.Game.Type.IsRewindingCadence())
122+
{
123+
var m_IsDisableAutoUpload = reader.ReadBoolean();
124+
}
121125
if (version[0] >= 3) //3.0.0 - 5.4
122126
{
123127
if (version[0] < 5 || (version[0] == 5 && version[1] <= 4))

AnimeStudio/GameManager.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ private static void LoadGames()
7171
Games.Add(index++, new Game(GameType.SchoolGirlStrikers, "Schoolgirl Strikers"));
7272
Games.Add(index++, new Game(GameType.ExAstris, "ExAstris"));
7373
Games.Add(index++, new Game(GameType.PerpetualNovelty, "Perpetual Novelty"));
74+
Games.Add(index++, new Game(GameType.RewindingCadence, "Rewinding Cadence"));
7475

7576
// unity cn
7677
var list = UnityCNManager.ReadJson();
@@ -258,6 +259,7 @@ public enum GameType
258259
FrostpunkBeyondTheIce,
259260
CatFantasy,
260261
UnityCNCustomKey,
262+
RewindingCadence,
261263
}
262264

263265

@@ -301,6 +303,7 @@ public static class GameTypes
301303
public static bool IsLoveAndDeepspace(this GameType type) => type == GameType.LoveAndDeepspace;
302304
public static bool IsExAstris(this GameType type) => type == GameType.ExAstris;
303305
public static bool IsPerpetualNovelty(this GameType type) => type == GameType.PerpetualNovelty;
306+
public static bool IsRewindingCadence(this GameType type) => type == GameType.RewindingCadence;
304307
public static bool IsGIGroup(this GameType type) => type switch
305308
{
306309
GameType.GI or GameType.GI_Pack or GameType.GI_CB1 or GameType.GI_CB2 or GameType.GI_CB3 or GameType.GI_CB3Pre => true,

0 commit comments

Comments
 (0)