public void Deserialize(IUnrealStream stream) { UncompressedOffset = stream.ReadInt32(); UncompressedSize = stream.ReadInt32(); CompressedOffset = stream.ReadInt32(); CompressedSize = stream.ReadInt32(); }
public void Deserialize( IUnrealStream stream ) { UncompressedOffset = stream.ReadInt32(); UncompressedSize = stream.ReadInt32(); CompressedOffset = stream.ReadInt32(); CompressedSize = stream.ReadInt32(); }
public void Deserialize(IUnrealStream stream) { _CompressedSize = stream.ReadInt32(); _UncompressedSize = stream.ReadInt32(); _CompressedData = new byte[_CompressedSize]; stream.Read(_CompressedData, 0, _CompressedSize); }
public override void Deserialize(IUnrealStream stream) { Value.Pitch = stream.ReadInt32(); Decompiler.AlignSize(sizeof(int)); Value.Yaw = stream.ReadInt32(); Decompiler.AlignSize(sizeof(int)); Value.Roll = stream.ReadInt32(); Decompiler.AlignSize(sizeof(int)); }
public void Deserialize(IUnrealStream stream) { ExportsCount = stream.ReadInt32(); NamesCount = stream.ReadInt32(); if (stream.Version >= VNetObjectsCount) { NetObjectsCount = stream.ReadInt32(); } }
public void Deserialize(IUnrealStream stream) { _StartU = stream.ReadInt32(); _StartV = stream.ReadInt32(); _USize = stream.ReadInt32(); _VSize = stream.ReadInt32(); _TextureIndex = stream.ReadByte(); }
public void Deserialize( IUnrealStream stream ) { _StartU = stream.ReadInt32(); _StartV = stream.ReadInt32(); _USize = stream.ReadInt32(); _VSize = stream.ReadInt32(); _TextureIndex = stream.ReadByte(); }
public override void Deserialize(IUnrealStream stream) { // Version stream.ReadInt32(); // Line stream.ReadInt32(); // Pos stream.ReadInt32(); // Code stream.ReadByte(); Decompiler.AlignSize(13); }
public void Deserialize( IUnrealStream stream ) { _Signature = stream.ReadUInt32(); if( _Signature != UnrealPackage.Signature ) { throw new System.IO.FileLoadException( "Unrecognized signature!" ); } _BlockSize = stream.ReadInt32(); _CompressedSize = stream.ReadInt32(); _UncompressedSize = stream.ReadInt32(); int blockCount = (int)Math.Ceiling( _UncompressedSize / (float)_BlockSize ); Blocks = new UArray<CompressedChunkBlock>( stream, blockCount ); }
public void Deserialize( IUnrealStream stream ) { #if APB if( stream.Package.Build == UnrealPackage.GameBuild.BuildName.APB && stream.Package.LicenseeVersion >= 32 ) { stream.Skip( 16 ); } #endif ExportsCount = stream.ReadInt32(); NamesCount = stream.ReadInt32(); if( stream.Version >= VNetObjectsCount ) { NetObjectsCount = stream.ReadInt32(); } }
public void Deserialize(IUnrealStream stream) { _Signature = stream.ReadUInt32(); if (_Signature != UnrealPackage.Signature) { throw new System.IO.FileLoadException("Unrecognized signature!"); } _BlockSize = stream.ReadInt32(); _CompressedSize = stream.ReadInt32(); _UncompressedSize = stream.ReadInt32(); int blockCount = (int)Math.Ceiling(_UncompressedSize / (float)_BlockSize); Blocks = new UArray <CompressedChunkBlock>(stream, blockCount); }
public void Deserialize(IUnrealStream stream) { #if APB if (stream.Package.Build == UnrealPackage.GameBuild.BuildName.APB && stream.Package.LicenseeVersion >= 32) { stream.Skip(16); } #endif ExportsCount = stream.ReadInt32(); NamesCount = stream.ReadInt32(); if (stream.Version >= VNetObjectsCount) { NetObjectsCount = stream.ReadInt32(); } }
public static void Deserialize(this List <int> indexes, IUnrealStream stream) { indexes.Capacity = stream.ReadInt32(); for (int i = 0; i < indexes.Capacity; ++i) { indexes.Add(stream.ReadIndex()); } }
public void Deserialize(IUnrealStream stream) { Log.Debug($"Reading import {Index} at {stream.Position}"); PackageName = stream.ReadNameReference(); _ClassName = stream.ReadNameReference(); ClassIndex = (int)_ClassName; OuterIndex = stream.ReadInt32(); // ObjectIndex, though always written as 32bits regardless of build. ObjectName = stream.ReadNameReference(); }
public void Deserialize( IUnrealStream stream ) { Console.WriteLine( "Reading import " + Index + " at " + stream.Position ); PackageName = stream.ReadNameReference(); _ClassName = stream.ReadNameReference(); ClassIndex = (int)_ClassName; OuterIndex = stream.ReadInt32(); // ObjectIndex, though always written as 32bits regardless of build. ObjectName = stream.ReadNameReference(); }
public void Deserialize(IUnrealStream stream) { Console.WriteLine("Reading import " + Index + " at " + stream.Position); PackageName = stream.ReadNameReference(); _ClassName = stream.ReadNameReference(); ClassIndex = (int)_ClassName; OuterIndex = stream.ReadInt32(); // ObjectIndex, though always written as 32bits regardless of build. ObjectName = stream.ReadNameReference(); }
public void Deserialize(IUnrealStream stream) { Class = stream.ReadObjectIndex(); // Deep stream.ReadInt32(); // ScriptTextCRC stream.ReadUInt32(); }
public void Deserialize( IUnrealStream stream ) { Class = stream.ReadObjectIndex(); // Deep stream.ReadInt32(); // ScriptTextCRC stream.ReadUInt32(); }
public void Deserialize(IUnrealStream stream) { if (stream.Version >= 63) { // Offset to (Width = ...) WidthOffset = stream.ReadUInt32(); long opos = stream.Position; stream.Seek(WidthOffset, System.IO.SeekOrigin.Begin); Width = stream.ReadUInt32(); Height = stream.ReadUInt32(); stream.Seek(opos, System.IO.SeekOrigin.Begin); } int mipMapSize = stream.ReadIndex(); Pixels = new int[mipMapSize]; switch (Owner._Format.Decompile().Substring(6)) { case "TEXF_RGBA8": case "5": for (int i = 0; i < mipMapSize; ++i) { Pixels[i] = stream.ReadInt32(); } break; case "TEXF_DXT1": case "3": for (int i = 0; i < mipMapSize / 2; ++i) { byte c = stream.ReadByte(); Pixels[i++] = c & 0xF0; Pixels[i] = c & 0x0F; } // PostProcess: // 4x4 4bit per pixel, 16bit per color: 5bits red; 6bits green; 5bits blue. // break; } // Width, Height. See above! stream.Skip(8); BitsWidth = stream.ReadByte(); BitsHeight = stream.ReadByte(); }
public void Deserialize( IUnrealStream stream ) { if( stream.Version >= 63 ) { // Offset to (Width = ...) WidthOffset = stream.ReadUInt32(); long opos = stream.Position; stream.Seek( WidthOffset, System.IO.SeekOrigin.Begin ); Width = stream.ReadUInt32(); Height = stream.ReadUInt32(); stream.Seek( opos, System.IO.SeekOrigin.Begin ); } int mipMapSize = stream.ReadIndex(); Pixels = new int[mipMapSize]; switch( Owner._Format.Decompile().Substring( 6 ) ) { case "TEXF_RGBA8": case "5": for( int i = 0; i < mipMapSize; ++ i ) { Pixels[i] = stream.ReadInt32(); } break; case "TEXF_DXT1": case "3": for( int i = 0; i < mipMapSize / 2; ++ i ) { byte c = stream.ReadByte(); Pixels[i ++] = c & 0xF0; Pixels[i] = c & 0x0F; } // PostProcess: // 4x4 4bit per pixel, 16bit per color: 5bits red; 6bits green; 5bits blue. // break; } // Width, Height. See above! stream.Skip( 8 ); BitsWidth = stream.ReadByte(); BitsHeight = stream.ReadByte(); }
//public Dictionary<int, int> Components; //public List<int> NetObjects; #endregion // @Warning - Only supports Official builds. public void Serialize( IUnrealStream stream ) { stream.Write( ClassTable.Object ); stream.Write( SuperTable.Object ); stream.Write( (int)OuterTable.Object ); stream.Write( ObjectName ); if( stream.Version >= VArchetype ) { ArchetypeIndex = stream.ReadInt32(); } stream.UW.Write( stream.Version >= VObjectFlagsToULONG ? ObjectFlags : (uint)ObjectFlags ); stream.WriteIndex( SerialSize ); // Assumes SerialSize has been updated to @Object's buffer size. if( SerialSize > 0 || stream.Version >= VSerialSizeConditionless ) { // SerialOffset has to be set and written after this object has been serialized. stream.WriteIndex( SerialOffset ); // Assumes the same as @SerialSize comment. } // TODO: Continue. }
//public Dictionary<int, int> Components; //public List<int> NetObjects; #endregion // @Warning - Only supports Official builds. public void Serialize(IUnrealStream stream) { stream.Write(ClassTable.Object); stream.Write(SuperTable.Object); stream.Write((int)OuterTable.Object); stream.Write(ObjectName); if (stream.Version >= VArchetype) { ArchetypeIndex = stream.ReadInt32(); } stream.UW.Write(stream.Version >= VObjectFlagsToULONG ? ObjectFlags : (uint)ObjectFlags); stream.WriteIndex(SerialSize); // Assumes SerialSize has been updated to @Object's buffer size. if (SerialSize > 0 || stream.Version >= VSerialSizeConditionless) { // SerialOffset has to be set and written after this object has been serialized. stream.WriteIndex(SerialOffset); // Assumes the same as @SerialSize comment. } // TODO: Continue. }
public void Deserialize(IUnrealStream stream) { #if DCUO if (stream.Package.Build == UnrealPackage.GameBuild.BuildName.DCUO) { //DCUO doesn't null terminate name table entries int size = stream.ReadInt32(); var strBytes = new byte[size]; stream.Read(strBytes, 0, size); if (stream.BigEndianCode) { Array.Reverse(strBytes); } Name = System.Text.Encoding.ASCII.GetString(strBytes); } else { #endif Name = stream.ReadText(); #if DCUO } #endif Flags = stream.Version >= QWORDVersion?stream.ReadUInt64() : stream.ReadUInt32(); #if DEOBFUSCATE // De-obfuscate names that contain unprintable characters! foreach (char c in Name) { if (!char.IsLetterOrDigit(c)) { Name = "N" + TableIndex + "_OBF"; break; } } #endif }
public void Deserialize(IUnrealStream stream) { if (stream.Version <= 540) { // e.g. Core.Object.X _FieldName = stream.ReadText(); } else { // TODO: Possibly linked to a non-ufield? _Field = (UField)stream.ReadObject(); _Field.MetaData = this; } int length = stream.ReadInt32(); Tags = new Dictionary <string, string>(length); for (var i = 0; i < length; ++i) { var key = stream.ReadNameReference(); string value = stream.ReadText(); Tags.Add(key.Name, value); } }
public override void Deserialize(IUnrealStream stream) { var label = String.Empty; int labelPos = -1; do { if (label != String.Empty) { Decompiler._Labels.Add ( new ULabelEntry { Name = label, Position = labelPos } ); } label = stream.ReadName(); Decompiler.AlignNameSize(); labelPos = stream.ReadInt32(); Decompiler.AlignSize(sizeof(int)); } while(String.Compare(label, "None", StringComparison.OrdinalIgnoreCase) != 0); }
public void Deserialize(IUnrealStream stream) { ClassIndex = stream.ReadObjectIndex(); SuperIndex = stream.ReadObjectIndex(); OuterIndex = stream.ReadInt32(); // ObjectIndex, though always written as 32bits regardless of build. #if BIOSHOCK if (stream.Package.Build == UnrealPackage.GameBuild.BuildName.Bioshock && stream.Version >= 132) { stream.Skip(sizeof(int)); } #endif ObjectName = stream.ReadNameReference(); if (stream.Version >= VArchetype) { ArchetypeIndex = stream.ReadInt32(); } _ObjectFlagsOffset = stream.Position; ObjectFlags = stream.ReadUInt32(); if (stream.Version >= VObjectFlagsToULONG #if BIOSHOCK || (stream.Package.Build == UnrealPackage.GameBuild.BuildName.Bioshock && stream.Package.LicenseeVersion >= 40) #endif ) { ObjectFlags = (ObjectFlags << 32) | stream.ReadUInt32(); } SerialSize = stream.ReadIndex(); if (SerialSize > 0 || stream.Version >= VSerialSizeConditionless) { SerialOffset = stream.ReadIndex(); } #if BIOSHOCK if (stream.Package.Build == UnrealPackage.GameBuild.BuildName.Bioshock && stream.Version >= 130) { stream.Skip(sizeof(int)); } #endif if (stream.Version < 220) { return; } if (stream.Version < 543 #if ALPHAPROTOCOL && stream.Package.Build != UnrealPackage.GameBuild.BuildName.AlphaProtcol #endif ) { int componentMapCount = stream.ReadInt32(); stream.Skip(componentMapCount * 12); //if( componentMapCount > 0 ) //{ // Components = new Dictionary<int, int>( componentMapCount ); // for( int i = 0; i < componentMapCount; ++ i ) // { // Components.Add( stream.ReadNameIndex(), stream.ReadObjectIndex() ); // } //} } if (stream.Version < 247) { return; } ExportFlags = stream.ReadUInt32(); if (stream.Version < 322) { return; } #if BIOSHOCK if (stream.Package.Build == UnrealPackage.GameBuild.BuildName.Bioshock_Infinite) { var unk = stream.ReadUInt32(); if (unk == 1) { var flags = stream.ReadUInt32(); if ((flags & 1) != 0x0) { stream.ReadUInt32(); } stream.Skip(16); // guid stream.ReadUInt32(); // 01000020 } return; } #endif #if MKKE if (stream.Package.Build != UnrealPackage.GameBuild.BuildName.MKKE) { #endif int netObjectCount = stream.ReadInt32(); stream.Skip(netObjectCount * 4); //if( netObjectCount > 0 ) //{ // NetObjects = new List<int>( netObjectCount ); // for( int i = 0; i < netObjectCount; ++ i ) // { // NetObjects.Add( stream.ReadObjectIndex() ); // } //} #if MKKE } #endif stream.Skip(16); // Package guid if (stream.Version > 486) // 475? 486(> Stargate Worlds) { stream.Skip(4); // Package flags } }
public override void Deserialize( IUnrealStream stream ) { // Version stream.ReadInt32(); // Line stream.ReadInt32(); // Pos stream.ReadInt32(); // Code stream.ReadByte(); Decompiler.AlignSize( 13 ); }
public void Deserialize(IUnrealStream stream) { ClassIndex = stream.ReadObjectIndex(); SuperIndex = stream.ReadObjectIndex(); OuterIndex = stream.ReadInt32(); // ObjectIndex, though always written as 32bits regardless of build. ObjectName = stream.ReadNameReference(); if (stream.Version >= VArchetype) { ArchetypeIndex = stream.ReadInt32(); } _ObjectFlagsOffset = stream.Position; ObjectFlags = stream.ReadUInt64(); //if( stream.Version >= VObjectFlagsToULONG ) //{ // //ObjectFlags = (ObjectFlags << 32) | stream.ReadUInt32(); // ObjectFlags = (ObjectFlags << 32) | stream.ReadUInt64(); //} SerialSize = stream.ReadIndex(); SerialOffset = (int)stream.ReadInt64(); if (stream.Version < 220) { return; } if (stream.Version < 543) { int componentMapCount = stream.ReadInt32(); stream.Skip(componentMapCount * 12); //if( componentMapCount > 0 ) //{ // Components = new Dictionary<int, int>( componentMapCount ); // for( int i = 0; i < componentMapCount; ++ i ) // { // Components.Add( stream.ReadNameIndex(), stream.ReadObjectIndex() ); // } //} } if (stream.Version < 247) { return; } ExportFlags = stream.ReadUInt32(); if (stream.Version < 322) { return; } int netObjectCount = stream.ReadInt32(); stream.Skip(netObjectCount * 4); //if( netObjectCount > 0 ) //{ // NetObjects = new List<int>( netObjectCount ); // for( int i = 0; i < netObjectCount; ++ i ) // { // NetObjects.Add( stream.ReadObjectIndex() ); // } //} stream.Skip(16); // Package guid if (stream.Version > 486) // 475? 486(> Stargate Worlds) { stream.Skip(4); // Package flags } }
public void Deserialize( IUnrealStream stream ) { ClassIndex = stream.ReadObjectIndex(); SuperIndex = stream.ReadObjectIndex(); OuterIndex = stream.ReadInt32(); // ObjectIndex, though always written as 32bits regardless of build. #if BIOSHOCK if( stream.Package.Build == UnrealPackage.GameBuild.BuildName.Bioshock && stream.Version >= 132 ) { stream.Skip( sizeof(int) ); } #endif ObjectName = stream.ReadNameReference(); if( stream.Version >= VArchetype ) { ArchetypeIndex = stream.ReadInt32(); } _ObjectFlagsOffset = stream.Position; ObjectFlags = stream.ReadUInt32(); if( stream.Version >= VObjectFlagsToULONG #if BIOSHOCK || (stream.Package.Build == UnrealPackage.GameBuild.BuildName.Bioshock && stream.Package.LicenseeVersion >= 40) #endif ) { ObjectFlags = (ObjectFlags << 32) | stream.ReadUInt32(); } SerialSize = stream.ReadIndex(); if( SerialSize > 0 || stream.Version >= VSerialSizeConditionless ) { SerialOffset = stream.ReadIndex(); } #if BIOSHOCK if( stream.Package.Build == UnrealPackage.GameBuild.BuildName.Bioshock && stream.Version >= 130 ) { stream.Skip( sizeof(int) ); } #endif if( stream.Version < 220 ) return; if( stream.Version < 543 #if ALPHAPROTOCOL && stream.Package.Build != UnrealPackage.GameBuild.BuildName.AlphaProtcol #endif #if TRANSFORMERS && (stream.Package.Build != UnrealPackage.GameBuild.BuildName.Transformers || stream.Package.LicenseeVersion < 37) #endif ) { int componentMapCount = stream.ReadInt32(); stream.Skip( componentMapCount * 12 ); //if( componentMapCount > 0 ) //{ // Components = new Dictionary<int, int>( componentMapCount ); // for( int i = 0; i < componentMapCount; ++ i ) // { // Components.Add( stream.ReadNameIndex(), stream.ReadObjectIndex() ); // } //} } if( stream.Version < 247 ) return; ExportFlags = stream.ReadUInt32(); if( stream.Version < 322 ) return; #if TRANSFORMERS if( stream.Package.Build == UnrealPackage.GameBuild.BuildName.Transformers && stream.Package.LicenseeVersion >= 116 ) { var flag = stream.ReadByte(); if( flag == 0 ) { return; } } #endif #if BIOSHOCK if( stream.Package.Build == UnrealPackage.GameBuild.BuildName.Bioshock_Infinite ) { var unk = stream.ReadUInt32(); if( unk == 1 ) { var flags = stream.ReadUInt32(); if( (flags & 1) != 0x0 ) { stream.ReadUInt32(); } stream.Skip( 16 ); // guid stream.ReadUInt32(); // 01000020 } return; } #endif #if MKKE if( stream.Package.Build != UnrealPackage.GameBuild.BuildName.MKKE ) { #endif int netObjectCount = stream.ReadInt32(); stream.Skip( netObjectCount * 4 ); //if( netObjectCount > 0 ) //{ // NetObjects = new List<int>( netObjectCount ); // for( int i = 0; i < netObjectCount; ++ i ) // { // NetObjects.Add( stream.ReadObjectIndex() ); // } //} #if MKKE } #endif stream.Skip( 16 ); // Package guid if( stream.Version > 486 ) // 475? 486(> Stargate Worlds) { stream.Skip( 4 ); // Package flags } }
public override void Deserialize(IUnrealStream stream) { LocalIndex = stream.ReadInt32(); Decompiler.AlignSize(sizeof(int)); }
public void Deserialize( IUnrealStream stream ) { _CompressedSize = stream.ReadInt32(); _UncompressedSize = stream.ReadInt32(); _CompressedData = new byte[_CompressedSize]; stream.Read( _CompressedData, 0, _CompressedSize ); }
public override void Deserialize( IUnrealStream stream ) { var label = String.Empty; int labelPos = -1; do { if( label != String.Empty ) { Decompiler._Labels.Add ( new ULabelEntry { Name = label, Position = labelPos } ); } label = stream.ReadName(); Decompiler.AlignNameSize(); labelPos = stream.ReadInt32(); Decompiler.AlignSize( sizeof(int) ); } while( String.Compare( label, "None", StringComparison.OrdinalIgnoreCase ) != 0 ); }
public override void Deserialize( IUnrealStream stream ) { Value = stream.ReadInt32(); Decompiler.AlignSize( sizeof(int) ); }