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(); }
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); } }
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; } } }