public Field(UnityBinaryReader reader) { Version = reader.ReadInt16(); Depth = reader.ReadByte(); IsArray = reader.ReadBool(); _typeOffset = reader.ReadInt32(); _nameOffset = reader.ReadInt32(); Size = reader.ReadInt32(); Index = reader.ReadInt32(); Flags = reader.ReadInt32(); }
private void ReadEmbedded(UnityBinaryReader reader, int version, int typeVersion) { int fieldCount = reader.ReadInt32(); int stringTableLength = reader.ReadInt32(); TypeFields.Capacity = fieldCount; TypeFields.Clear(); for (int i = 0; i < fieldCount; i++) { var field = new Field(reader); TypeFields.Add(field); } ReadStringTable(reader, stringTableLength); }
void UnityElement.Read(UnityBinaryReader reader, int version) { BufferedPath = reader.ReadString(); Guid = new Guid128(); Guid.Read(reader, version); Type = reader.ReadInt32(); AssetPath = reader.ReadString(); }
private void Read(UnityBinaryReader reader, int version) { _format = version; HasTypeTree = true; if (version <= 6) { UnityVersion = $"Unsupported Format"; TypeVersion = 0; return; } UnityVersion = reader.ReadString(); TypeVersion = reader.ReadInt32(); if (version >= 13) { HasTypeTree = reader.ReadBool(); } var fieldCount = reader.ReadInt32(); if (version > 13) { for (int i = 0; i < fieldCount; i++) { Types_0D.Add(new Type_0D(reader, version, TypeVersion, HasTypeTree)); } } else { throw new NotImplementedException(); for (int i = 0; i < fieldCount; i++) { //Types_07.Add(new Type_07(reader, format, Version, HasTypeTree)); } } if (version < 14) { _unknown = reader.ReadInt32(); } }
protected void Read(UnityBinaryReader reader, int version) { if (reader == null) { throw new ArgumentNullException(nameof(reader)); } int count = reader.ReadInt32(); Items.Capacity = count; Items.Clear(); for (int i = 0; i < count; i++) { var item = new Item(); item.Read(reader, version); Items.Add(item); } }
public Type_0D(UnityBinaryReader reader, int version, int typeVersion, bool embedded) { if (reader == null) { throw new ArgumentNullException(nameof(reader)); } if (version < 13) { throw new ArgumentOutOfRangeException(nameof(version), "this type does not support the given format"); } ClassID = reader.ReadInt32(); if (version < 16) { _unknown = 0; } else { _unknown = reader.ReadByte(); } if (version < 17) { ScriptIndex = -1; } else { ScriptIndex = reader.ReadInt16(); } if (ClassID < 0 || ClassID == 114) { ScriptID = new Hash128(); ScriptID.Read(reader, version); } PropertiesHash = new Hash128(); PropertiesHash.Read(reader, version); if (embedded) { ReadEmbedded(reader, version, typeVersion); } }
void UnityElement.Read(UnityBinaryReader reader, int version) { FileID = reader.ReadInt32(); PathID = reader.ReadInt64(); }
public AssetFileInfo(AssetsFile file, UnityBinaryReader reader) : this() { /* Read basic info */ if (file.Header.Version < 14) { Index = reader.ReadUInt32(); } else { Index = reader.ReadUInt64(); } //v1 /* * DataOffset = reader.ReadUInt32(); * FileSize = reader.ReadUInt32(); * FileTypeOrIndex = reader.ReadInt32(); * InheritedUnityClass = reader.ReadInt16(); * ScriptIndex = reader.ReadInt16(); */ //v2 DataOffset = reader.ReadUInt32(); FileSize = reader.ReadUInt32(); FileTypeOrIndex = reader.ReadInt32(); InheritedUnityClass = reader.ReadInt16(); ScriptIndex = reader.ReadInt16(); //v3 (first v2) Unknown = reader.ReadByte(); /* Advanced */ if (file.Header.Version < 16) { FileType = FileTypeOrIndex; } else { if (FileTypeOrIndex < file.TypeTree.Types_0D.Count) { var type = file.TypeTree.Types_0D[FileTypeOrIndex]; if (type.ScriptIndex == -1) { FileType = type.ClassID; InheritedUnityClass = type.ClassID; ScriptIndex = -1; } else { FileType = -1 - type.ScriptIndex; InheritedUnityClass = type.ClassID; ScriptIndex = type.ScriptIndex; } } else { } } AbsolutePos = file.Header.DataOffset + DataOffset; if (IsKnownUnityType(FileType) || true) { long pos = reader.Position; try { #error fix this, pls reader.Position = AbsolutePos; int length = reader.ReadInt32(); if (length > 100 && false) { if (Debugger.IsAttached) { Debugger.Break(); } } Name = reader.ReadStringFixed(length); } finally { reader.Position = pos; } } }