protected override void Deserialize() { base.Deserialize(); // --SuperField if (!Package.IsConsoleCooked()) { ScriptText = _Buffer.ReadObject() as UTextBuffer; Record("ScriptText", ScriptText); } Children = _Buffer.ReadObject() as UField; Record("Children", Children); if (Package.Version < VFriendlyNameMoved) { // Moved to UFunction in UE3 FriendlyName = _Buffer.ReadNameReference(); Record("FriendlyName", FriendlyName); } if (Package.Version >= VStructFlags) { if (Package.Version >= VCppText && !Package.IsConsoleCooked() #if VANGUARD && Package.Build.Name != UnrealPackage.GameBuild.BuildName.Vanguard #endif ) { CppText = _Buffer.ReadObject() as UTextBuffer; Record("CppText", CppText); } if (Package.Version < VStructFlagsMoved) { StructFlags = _Buffer.ReadUInt32(); Record("StructFlags", (StructFlags)StructFlags); // Note: Bioshock inherits from the SWAT4's UE2 build. #if BIOSHOCK if (Package.Build == UnrealPackage.GameBuild.BuildName.Bioshock) { // TODO: Unknown data, might be related to the above Swat4 data. var unknown = _Buffer.ReadObjectIndex(); Record("???", TryGetIndexObject(unknown)); } #endif // This is high likely to be only for "Irrational Games" builds. if (Package.Version >= VProcessedText #if VANGUARD && Package.Build.Name != UnrealPackage.GameBuild.BuildName.Vanguard #endif ) { ProcessedText = _Buffer.ReadObject() as UTextBuffer; Record("ProcessedText", ProcessedText); } } } if (!Package.IsConsoleCooked()) { Line = _Buffer.ReadInt32(); Record("Line", Line); TextPos = _Buffer.ReadInt32(); Record("TextPos", TextPos); } #if TRANSFORMERS if (Package.Build == UnrealPackage.GameBuild.BuildName.Transformers) { // The line where the struct's code body ends. _Buffer.Skip(4); } #endif ByteScriptSize = _Buffer.ReadInt32(); Record("ByteScriptSize", ByteScriptSize); const int vDataScriptSize = 639; var hasFixedScriptSize = Package.Version >= vDataScriptSize #if TRANSFORMERS && Package.Build != UnrealPackage.GameBuild.BuildName.Transformers #endif ; if (hasFixedScriptSize) { DataScriptSize = _Buffer.ReadInt32(); Record("DataScriptSize", DataScriptSize); } else { DataScriptSize = ByteScriptSize; } ScriptOffset = _Buffer.Position; // Code Statements if (DataScriptSize <= 0) { return; } ByteCodeManager = new UByteCodeDecompiler(this); if (hasFixedScriptSize) { _Buffer.Skip(DataScriptSize); } else { const int moonbaseVersion = 587; const int shadowcomplexVersion = 590; const int mohaVersion = 421; var isTrueScriptSize = Package.Version == mohaVersion || ( Package.Version >= UnrealPackage.VINDEXDEPRECATED && (Package.Version <moonbaseVersion && Package.Version> shadowcomplexVersion) ); if (isTrueScriptSize) { _Buffer.Skip(DataScriptSize); } else { ByteCodeManager.Deserialize(); } } }
protected override void Deserialize() { base.Deserialize(); // --SuperField if( !Package.IsConsoleCooked() ) { ScriptText = _Buffer.ReadObject() as UTextBuffer; Record( "ScriptText", ScriptText ); } Children = _Buffer.ReadObject() as UField; Record( "Children", Children ); if( Package.Version < VFriendlyNameMoved ) { // Moved to UFunction in UE3 FriendlyName = _Buffer.ReadNameReference(); Record( "FriendlyName", FriendlyName ); } if( Package.Version >= VStructFlags ) { if( Package.Version >= VCppText && !Package.IsConsoleCooked() #if VANGUARD && Package.Build.Name != UnrealPackage.GameBuild.BuildName.Vanguard #endif ) { CppText = _Buffer.ReadObject() as UTextBuffer; Record( "CppText", CppText ); } if( Package.Version < VStructFlagsMoved ) { StructFlags = _Buffer.ReadUInt32(); Record( "StructFlags", (StructFlags)StructFlags ); // Note: Bioshock inherits from the SWAT4's UE2 build. #if BIOSHOCK if( Package.Build == UnrealPackage.GameBuild.BuildName.Bioshock ) { // TODO: Unknown data, might be related to the above Swat4 data. var unknown = _Buffer.ReadObjectIndex(); Record( "???", TryGetIndexObject( unknown ) ); } #endif // This is high likely to be only for "Irrational Games" builds. if( Package.Version >= VProcessedText #if VANGUARD && Package.Build.Name != UnrealPackage.GameBuild.BuildName.Vanguard #endif ) { ProcessedText = _Buffer.ReadObject() as UTextBuffer; Record( "ProcessedText", ProcessedText ); } } } if( !Package.IsConsoleCooked() ) { Line = _Buffer.ReadInt32(); Record( "Line", Line ); TextPos = _Buffer.ReadInt32(); Record( "TextPos", TextPos ); } #if TRANSFORMERS if( Package.Build == UnrealPackage.GameBuild.BuildName.Transformers ) { // The line where the struct's code body ends. _Buffer.Skip( 4 ); } #endif ByteScriptSize = _Buffer.ReadInt32(); Record( "ByteScriptSize", ByteScriptSize ); const int vDataScriptSize = 639; var hasFixedScriptSize = Package.Version >= vDataScriptSize #if TRANSFORMERS && Package.Build != UnrealPackage.GameBuild.BuildName.Transformers #endif ; if( hasFixedScriptSize ) { DataScriptSize = _Buffer.ReadInt32(); Record( "DataScriptSize", DataScriptSize ); } else { DataScriptSize = ByteScriptSize; } ScriptOffset = _Buffer.Position; // Code Statements if( DataScriptSize <= 0 ) return; ByteCodeManager = new UByteCodeDecompiler( this ); if( hasFixedScriptSize ) { _Buffer.Skip( DataScriptSize ); } else { const int moonbaseVersion = 587; const int shadowcomplexVersion = 590; const int mohaVersion = 421; var isTrueScriptSize = Package.Version == mohaVersion || ( Package.Version >= UnrealPackage.VINDEXDEPRECATED && (Package.Version < moonbaseVersion && Package.Version > shadowcomplexVersion ) ); if( isTrueScriptSize ) { _Buffer.Skip( DataScriptSize ); } else { ByteCodeManager.Deserialize(); } } }
protected override void Deserialize() { base.Deserialize(); // --SuperField if (!Package.IsConsoleCooked()) { ScriptText = _Buffer.ReadObject() as UTextBuffer; Record("ScriptText", ScriptText); } Children = _Buffer.ReadObject() as UField; Record("Children", Children); if (Package.Version < VFriendlyNameMoved) { // Moved to UFunction in UE3 FriendlyName = _Buffer.ReadNameReference(); Record("FriendlyName", FriendlyName); } if (Package.Version >= VStructFlags) { if (Package.Version >= VCppText && !Package.IsConsoleCooked()) { CppText = _Buffer.ReadObject() as UTextBuffer; Record("CppText", CppText); } if (Package.Version < VStructFlagsMoved) { StructFlags = _Buffer.ReadUInt32(); Record("StructFlags", (StructFlags)StructFlags); // This is high likely to be only for "Irrational Games" builds. if (Package.Version >= VProcessedText) { ProcessedText = _Buffer.ReadObject() as UTextBuffer; Record("ProcessedText", ProcessedText); } } } if (!Package.IsConsoleCooked()) { Line = _Buffer.ReadInt32(); Record("Line", Line); TextPos = _Buffer.ReadInt32(); Record("TextPos", TextPos); } ByteScriptSize = _Buffer.ReadInt32(); Record("ByteScriptSize", ByteScriptSize); const int vDataScriptSize = 639; var hasFixedScriptSize = Package.Version >= vDataScriptSize; if (hasFixedScriptSize) { DataScriptSize = _Buffer.ReadInt32(); Record("DataScriptSize", DataScriptSize); } else { DataScriptSize = ByteScriptSize; } ScriptOffset = _Buffer.Position; // Code Statements if (DataScriptSize <= 0) { return; } ByteCodeManager = new UByteCodeDecompiler(this); if (hasFixedScriptSize) { _Buffer.Skip(DataScriptSize); } else { const int moonbaseVersion = 587; const int shadowcomplexVersion = 590; const int mohaVersion = 421; var isTrueScriptSize = Package.Version == mohaVersion || ( Package.Version >= UnrealPackage.VINDEXDEPRECATED && (Package.Version <moonbaseVersion && Package.Version> shadowcomplexVersion) ); if (isTrueScriptSize) { _Buffer.Skip(DataScriptSize); } else { ByteCodeManager.Deserialize(); } } }