public MonoBehaviorAssetData( BinaryReader reader, int length, SerializedAssets.TypeRef typeRef, Apk.Version version ) { int startOffset = (int)reader.BaseStream.Position; gameObject = new AssetPtr(reader); enabled = reader.ReadInt32(); script = new AssetPtr(reader); name = reader.ReadAlignedString(); int headerLen = (int)reader.BaseStream.Position - startOffset; if (typeRef.scriptID.SequenceEqual(LevelBehaviorData.ScriptID)) { data = new LevelBehaviorData(reader, length - headerLen); return; } if (typeRef.scriptID.SequenceEqual(LevelCollectionBehaviorData.ScriptID)) { data = new LevelCollectionBehaviorData(reader, length - headerLen); return; } if (typeRef.scriptID.SequenceEqual(BeatmapDataBehaviorData.ScriptID)) { data = new BeatmapDataBehaviorData(reader, length - headerLen, version); return; } if (typeRef.scriptID.SequenceEqual(LevelPackBehaviorData.ScriptID)) { data = new LevelPackBehaviorData(reader, length - headerLen, version); return; } if (typeRef.scriptID.SequenceEqual(ColorManager.ScriptID)) { data = new ColorManager(reader, length - headerLen); return; } if (typeRef.scriptID.SequenceEqual(SimpleColor.ScriptID)) { data = new SimpleColor(reader, length - headerLen); return; } if (typeRef.scriptID.SequenceEqual(BeatmapLevelPackCollection.ScriptID)) { data = new BeatmapLevelPackCollection(reader, length - headerLen); return; } if (typeRef.scriptID.SequenceEqual(AlwaysOwnedBehaviorData.ScriptID)) { data = new AlwaysOwnedBehaviorData(reader, length - headerLen); return; } switch (script.pathID) { default: data = new UnknownBehaviorData(reader, length - headerLen); break; } if (!(data is UnknownBehaviorData)) { Console.WriteLine($"Type: {data.GetType()} ScriptHash: {BitConverter.ToString(typeRef.scriptID).Replace("-", "")}"); } }