public object ReadInstance(UnPackage package, BinaryReader reader, UnExport export) { reader.ReadBytes(20); int textLength = reader.ReadInt32(); return(new string(Encoding.Default.GetChars(reader.ReadBytes(textLength)))); }
public UE3PropertyListInstanceReader(UnPackage package, BinaryReader reader, UnExport export, UnContainer owner) { _package = package; _reader = reader; _export = export; _owner = owner; }
public static UnPackage ReadPackage(BinaryReader reader, string baseDir) { UnPackage package = DoReadPackage(reader); package.LoadImportedDeclarations(new UE3PackageReader(baseDir)); return(package); }
public object ReadInstance(UnPackage package, BinaryReader reader, UnExport export) { reader.ReadBytes(12); int super = reader.ReadInt32(); int children = reader.ReadInt32(); reader.ReadBytes(12); int line = reader.ReadInt32(); int textPos = reader.ReadInt32(); int scriptSize = reader.ReadInt32(); byte[] bytecode = reader.ReadBytes(scriptSize); int nativeIndex = reader.ReadInt16(); int operatorPrecedence = reader.ReadByte(); int functionFlags = reader.ReadInt32(); if ((functionFlags & _flagSet.GetMask("Net")) != 0) { reader.ReadInt16(); // repOffset } int friendlyNameIndex = reader.ReadInt32(); reader.ReadInt32(); return(new UnFunction(export, package.Names[friendlyNameIndex].Name, new FlagValues(functionFlags, _flagSet), bytecode, nativeIndex, operatorPrecedence)); }
public object ReadInstance(UnPackage package, BinaryReader reader, UnExport export) { reader.ReadBytes(20); int valueSize = reader.ReadInt32(); string value = new string(reader.ReadChars(valueSize)); return new UnConst(export, value.Trim('\0')); }
private static UnPackage DoReadPackage(BinaryReader reader) { var signature = reader.ReadInt32(); var packageVersion = reader.ReadInt32(); var firstExportOffset = reader.ReadInt32(); var folderNameLength = reader.ReadInt32(); var folderName = reader.ReadBytes(folderNameLength); var packageFlags = reader.ReadInt32(); var namesCount = reader.ReadInt32(); var namesOffset = reader.ReadInt32(); var exportsCount = reader.ReadInt32(); var exportsOffset = reader.ReadInt32(); var importsCount = reader.ReadInt32(); var importsOffset = reader.ReadInt32(); reader.ReadInt32(); // unknown var guid = reader.ReadBytes(16); var generationsCount = reader.ReadInt32(); for (int i = 0; i < generationsCount; i++) { reader.ReadBytes(12); } var engineVersion = reader.ReadInt32(); var cookerVersion = reader.ReadInt32(); if (engineVersion == 3240) { reader.ReadBytes(28); } Stream dataStream; if ((packageFlags & 0x00800000) != 0) { var compressionFlag = reader.ReadInt32(); var chunkedStream = new ChunkedStream(reader.BaseStream); var chunkCount = reader.ReadInt32(); for (int i = 0; i < chunkCount; i++) { var uncompressedOffset = reader.ReadInt32(); var uncompressedSize = reader.ReadInt32(); var compressedOffset = reader.ReadInt32(); var compressedSize = reader.ReadInt32(); chunkedStream.AddChunk(uncompressedOffset, uncompressedSize, compressedOffset, compressedSize); } dataStream = chunkedStream; } else { dataStream = reader.BaseStream; } UnPackage package = new UnPackage(dataStream); RegisterInstanceReaders(package); ReadNames(package, dataStream, namesOffset, namesCount); ReadImports(package, dataStream, importsOffset, importsCount); ReadExports(package, dataStream, exportsOffset, exportsCount); return(package); }
public object ReadInstance(UnPackage package, BinaryReader reader, UnExport export) { reader.ReadBytes(20); int valueSize = reader.ReadInt32(); string value = new string(reader.ReadChars(valueSize)); return(new UnConst(export, value.Trim('\0'))); }
public object ReadInstance(UnPackage package, BinaryReader reader, UnExport export) { int[] values = new int[11]; for (int i = 0; i < 11; i++) values[i] = reader.ReadInt32(); int flags = reader.ReadInt32(); return new UnScriptStruct(export, flags, values [3]); }
public object ReadInstance(UnPackage package, BinaryReader reader, UnExport export) { int[] values = new int[11]; for (int i = 0; i < 11; i++) { values[i] = reader.ReadInt32(); } int flags = reader.ReadInt32(); return(new UnScriptStruct(export, flags, values [3])); }
public object ReadInstance(UnPackage package, BinaryReader reader, UnExport export) { reader.ReadBytes(20); int valueCount = reader.ReadInt32(); var values = new List<string>(); for(int i=0; i<valueCount; i++) { int index = (int) reader.ReadInt64(); values.Add(export.Package.Names[index].Name); } return new UnEnum(export, values); }
public object ReadInstance(UnPackage package, BinaryReader reader, UnExport export) { reader.ReadBytes(40); int scriptSize = reader.ReadInt32(); byte[] script = reader.ReadBytes(scriptSize); reader.ReadBytes(22); int methodCount = reader.ReadInt32(); for(int i=0; i<methodCount; i++) { reader.ReadBytes(12); } return new UnState(export, script); }
public object ReadInstance(UnPackage package, BinaryReader reader, UnExport export) { reader.ReadBytes(20); int valueCount = reader.ReadInt32(); var values = new List <string>(); for (int i = 0; i < valueCount; i++) { int index = (int)reader.ReadInt64(); values.Add(export.Package.Names[index].Name); } return(new UnEnum(export, values)); }
public object ReadInstance(UnPackage package, BinaryReader reader, UnExport export) { reader.ReadBytes(40); int scriptSize = reader.ReadInt32(); byte[] script = reader.ReadBytes(scriptSize); reader.ReadBytes(22); int methodCount = reader.ReadInt32(); for (int i = 0; i < methodCount; i++) { reader.ReadBytes(12); } return(new UnState(export, script)); }
public object ReadInstance(UnPackage package, BinaryReader reader, UnExport export) { reader.ReadInt32(); int superIndex = reader.ReadInt32(); reader.ReadInt32(); int scriptTextIndex = reader.ReadInt32(); for (int i = 0; i < 4; i++) reader.ReadInt32(); int scriptSize = reader.ReadInt32(); var bytecode = reader.ReadBytes(scriptSize); for (int i = 0; i < 4; i++) reader.ReadInt32(); reader.ReadInt16(); reader.ReadInt32(); int methodCount = reader.ReadInt32(); for (int i = 0; i < methodCount * 3; i++) reader.ReadInt32(); int flags = reader.ReadInt32(); reader.ReadByte(); int outerIndex = reader.ReadInt32(); var outerInstance = package.ResolveClassItem(outerIndex); var configNameIndex = reader.ReadInt64(); var config = package.Names[(int) configNameIndex].Name; int hideCategoriesCount = reader.ReadInt32(); var hideCategories = new List<string>(); for (int i = 0; i < hideCategoriesCount; i++) { var nameIndex = reader.ReadInt64(); var name = package.Names[(int) nameIndex].Name; hideCategories.Add(name); } int c3 = reader.ReadInt32(); for (int i = 0; i < c3 * 3; i++) reader.ReadInt32(); var interfaceCount = reader.ReadInt32(); var interfaces = new List<UnPackageItem>(); for(int i=0; i<interfaceCount; i++) { var intfIndex = reader.ReadInt32(); reader.ReadInt32(); interfaces.Add(package.ResolveClassItem(intfIndex)); } reader.ReadInt32(); int defaultPropertiesIndex = reader.ReadInt32(); UnExport defaultProperties = defaultPropertiesIndex == 0 ? null : package.ResolveClassItem(defaultPropertiesIndex).Resolve(); return new UnClass(export, superIndex, outerInstance, bytecode, new FlagValues(flags, _flagSet), defaultProperties, config, hideCategories, interfaces); }
public object ReadInstance(UnPackage package, BinaryReader reader, UnExport export) { // 44 bytes reader.ReadBytes(16); int next = reader.ReadInt32(); int arraySize = reader.ReadInt32(); int flags = reader.ReadInt32(); reader.ReadInt32(); int category = (int)reader.ReadInt64(); reader.ReadInt32(); var repOffset = ((flags & _flagSet.GetMask("Net")) != 0) ? reader.ReadInt16() : (short)-1; return(CreateProperty(export, arraySize, new FlagValues(flags, _flagSet), category, reader, repOffset)); }
private static void ReadImports(UnPackage package, Stream stream, int offset, int count) { stream.Position = offset; var reader = new BinaryReader(stream); for (int i = 0; i < count; i++) { var packageNameIndex = reader.ReadInt32(); reader.ReadInt32(); var classNameIndex = reader.ReadInt32(); reader.ReadInt32(); var outer = reader.ReadInt32(); var objectNameIndex = reader.ReadInt32(); var flags = reader.ReadInt32(); package.AddImport(packageNameIndex, classNameIndex, outer, objectNameIndex, flags); } }
private static void ReadExports(UnPackage package, Stream stream, int offset, int count) { stream.Position = offset; var reader = new BinaryReader(stream); for (int i = 0; i < count; i++) { var classIndex = reader.ReadInt32(); var superIndex = reader.ReadInt32(); var outerIndex = reader.ReadInt32(); var objectNameIndex = reader.ReadInt32(); reader.ReadInt32(); // exportNameSuffix reader.ReadInt32(); // archetypeIndex var flags = reader.ReadInt64(); var exportSize = reader.ReadInt32(); var exportOffset = reader.ReadInt32(); var componentMapCount = reader.ReadInt32(); for (int j = 0; j < componentMapCount * 3; j++) { reader.ReadInt32(); } var exportFlags = reader.ReadInt32(); var netObjectCount = reader.ReadInt32(); for (int j = 0; j < netObjectCount; j++) { reader.ReadInt32(); } if (netObjectCount == 0) { reader.ReadInt32(); } for (int j = 0; j < 4; j++) { reader.ReadInt32(); // GUID } if (netObjectCount > 0) { reader.ReadInt32(); } package.AddExport(objectNameIndex, classIndex, outerIndex, exportOffset, exportSize); } package.ResolveExports(); }
private static void ReadNames(UnPackage package, Stream stream, int offset, int count) { stream.Position = offset; var reader = new BinaryReader(stream); for (int i = 0; i < count; i++) { var nameLength = reader.ReadInt32(); string name; if (nameLength < 0) { var bytes = reader.ReadBytes(-2 * nameLength); name = new string(Encoding.Unicode.GetChars(bytes)).Trim('\0'); } else { name = new string(reader.ReadChars(nameLength)).Trim('\0'); } var flags = reader.ReadInt64(); package.AddName(name, flags); } }
public object ReadInstance(UnPackage package, BinaryReader reader, UnExport export) { reader.ReadBytes(12); int super = reader.ReadInt32(); int children = reader.ReadInt32(); reader.ReadBytes(12); int line = reader.ReadInt32(); int textPos = reader.ReadInt32(); int scriptSize = reader.ReadInt32(); byte[] bytecode = reader.ReadBytes(scriptSize); int nativeIndex = reader.ReadInt16(); int operatorPrecedence = reader.ReadByte(); int functionFlags = reader.ReadInt32(); if ((functionFlags & _flagSet.GetMask("Net")) != 0) { reader.ReadInt16(); // repOffset } int friendlyNameIndex = reader.ReadInt32(); reader.ReadInt32(); return new UnFunction(export, package.Names[friendlyNameIndex].Name, new FlagValues(functionFlags, _flagSet), bytecode, nativeIndex, operatorPrecedence); }
private static void RegisterInstanceReaders(UnPackage package) { package.PropertyListReader = new UE3PropertyListReader(); package.RegisterInstanceReader("Class", new UE3ClassReader()); package.RegisterInstanceReader("Function", new UE3FunctionReader()); package.RegisterInstanceReader("IntProperty", new UE3ClassPropertyReader()); package.RegisterInstanceReader("FloatProperty", new UE3ClassPropertyReader()); package.RegisterInstanceReader("StrProperty", new UE3ClassPropertyReader()); package.RegisterInstanceReader("BoolProperty", new UE3ClassPropertyReader()); package.RegisterInstanceReader("NameProperty", new UE3ClassPropertyReader()); package.RegisterInstanceReader("ObjectProperty", new UE3StructPropertyReader()); package.RegisterInstanceReader("ByteProperty", new UE3TypedClassPropertyReader()); package.RegisterInstanceReader("ComponentProperty", new UE3TypedClassPropertyReader()); package.RegisterInstanceReader("StructProperty", new UE3StructPropertyReader()); package.RegisterInstanceReader("ClassProperty", new UE3ClassClassPropertyReader()); package.RegisterInstanceReader("ArrayProperty", new UE3ArrayClassPropertyReader()); package.RegisterInstanceReader("DelegateProperty", new UE3DelegateClassPropertyReader()); package.RegisterInstanceReader("Enum", new UE3EnumReader()); package.RegisterInstanceReader("Const", new UE3ConstReader()); package.RegisterInstanceReader("ScriptStruct", new UE3ScriptStructReader()); package.RegisterInstanceReader("State", new UE3StateReader()); package.RegisterInstanceReader("TextBuffer", new UE3TextBufferReader()); }
public object ReadInstance(UnPackage package, BinaryReader reader, UnExport export) { reader.ReadInt32(); int superIndex = reader.ReadInt32(); reader.ReadInt32(); int scriptTextIndex = reader.ReadInt32(); for (int i = 0; i < 4; i++) { reader.ReadInt32(); } int scriptSize = reader.ReadInt32(); var bytecode = reader.ReadBytes(scriptSize); for (int i = 0; i < 4; i++) { reader.ReadInt32(); } reader.ReadInt16(); reader.ReadInt32(); int methodCount = reader.ReadInt32(); for (int i = 0; i < methodCount * 3; i++) { reader.ReadInt32(); } int flags = reader.ReadInt32(); reader.ReadByte(); int outerIndex = reader.ReadInt32(); var outerInstance = package.ResolveClassItem(outerIndex); var configNameIndex = reader.ReadInt64(); var config = package.Names[(int)configNameIndex].Name; int hideCategoriesCount = reader.ReadInt32(); var hideCategories = new List <string>(); for (int i = 0; i < hideCategoriesCount; i++) { var nameIndex = reader.ReadInt64(); var name = package.Names[(int)nameIndex].Name; hideCategories.Add(name); } int c3 = reader.ReadInt32(); for (int i = 0; i < c3 * 3; i++) { reader.ReadInt32(); } var interfaceCount = reader.ReadInt32(); var interfaces = new List <UnPackageItem>(); for (int i = 0; i < interfaceCount; i++) { var intfIndex = reader.ReadInt32(); reader.ReadInt32(); interfaces.Add(package.ResolveClassItem(intfIndex)); } reader.ReadInt32(); int defaultPropertiesIndex = reader.ReadInt32(); UnExport defaultProperties = defaultPropertiesIndex == 0 ? null : package.ResolveClassItem(defaultPropertiesIndex).Resolve(); return(new UnClass(export, superIndex, outerInstance, bytecode, new FlagValues(flags, _flagSet), defaultProperties, config, hideCategories, interfaces)); }
private static void ReadExports(UnPackage package, Stream stream, int offset, int count) { stream.Position = offset; var reader = new BinaryReader(stream); for (int i = 0; i < count; i++) { var classIndex = reader.ReadInt32(); var superIndex = reader.ReadInt32(); var outerIndex = reader.ReadInt32(); var objectNameIndex = reader.ReadInt32(); reader.ReadInt32(); // exportNameSuffix reader.ReadInt32(); // archetypeIndex var flags = reader.ReadInt64(); var exportSize = reader.ReadInt32(); var exportOffset = reader.ReadInt32(); var componentMapCount = reader.ReadInt32(); for (int j = 0; j < componentMapCount*3; j++) { reader.ReadInt32(); } var exportFlags = reader.ReadInt32(); var netObjectCount = reader.ReadInt32(); for (int j = 0; j < netObjectCount; j++) { reader.ReadInt32(); } if (netObjectCount == 0) { reader.ReadInt32(); } for(int j=0; j<4; j++) { reader.ReadInt32(); // GUID } if (netObjectCount > 0) { reader.ReadInt32(); } package.AddExport(objectNameIndex, classIndex, outerIndex, exportOffset, exportSize); } package.ResolveExports(); }
public UnPropertyList ReadPropertyList(UnPackage package, BinaryReader reader, UnExport export, UnClass owner) { return new UE3PropertyListInstanceReader(package, reader, export, owner).Read(); }
public object ReadInstance(UnPackage package, BinaryReader reader, UnExport export) { reader.ReadBytes(20); int textLength = reader.ReadInt32(); return new string(Encoding.Default.GetChars(reader.ReadBytes(textLength))); }
private static void ReadNames(UnPackage package, Stream stream, int offset, int count) { stream.Position = offset; var reader = new BinaryReader(stream); for(int i=0; i<count; i++) { var nameLength = reader.ReadInt32(); string name; if (nameLength < 0) { var bytes = reader.ReadBytes(-2*nameLength); name = new string(Encoding.Unicode.GetChars(bytes)).Trim('\0'); } else { name = new string(reader.ReadChars(nameLength)).Trim('\0'); } var flags = reader.ReadInt64(); package.AddName(name, flags); } }
private static UnPackage DoReadPackage(BinaryReader reader) { var signature = reader.ReadInt32(); var packageVersion = reader.ReadInt32(); var firstExportOffset = reader.ReadInt32(); var folderNameLength = reader.ReadInt32(); var folderName = reader.ReadBytes(folderNameLength); var packageFlags = reader.ReadInt32(); var namesCount = reader.ReadInt32(); var namesOffset = reader.ReadInt32(); var exportsCount = reader.ReadInt32(); var exportsOffset = reader.ReadInt32(); var importsCount = reader.ReadInt32(); var importsOffset = reader.ReadInt32(); reader.ReadInt32(); // unknown var guid = reader.ReadBytes(16); var generationsCount = reader.ReadInt32(); for (int i = 0; i < generationsCount; i++) { reader.ReadBytes(12); } var engineVersion = reader.ReadInt32(); var cookerVersion = reader.ReadInt32(); if (engineVersion == 3240) { reader.ReadBytes(28); } Stream dataStream; if ((packageFlags & 0x00800000) != 0) { var compressionFlag = reader.ReadInt32(); var chunkedStream = new ChunkedStream(reader.BaseStream); var chunkCount = reader.ReadInt32(); for(int i=0; i<chunkCount; i++) { var uncompressedOffset = reader.ReadInt32(); var uncompressedSize = reader.ReadInt32(); var compressedOffset = reader.ReadInt32(); var compressedSize = reader.ReadInt32(); chunkedStream.AddChunk(uncompressedOffset, uncompressedSize, compressedOffset, compressedSize); } dataStream = chunkedStream; } else { dataStream = reader.BaseStream; } UnPackage package = new UnPackage(dataStream); RegisterInstanceReaders(package); ReadNames(package, dataStream, namesOffset, namesCount); ReadImports(package, dataStream, importsOffset, importsCount); ReadExports(package, dataStream, exportsOffset, exportsCount); return package; }
public UnPropertyList ReadPropertyList(UnPackage package, BinaryReader reader, UnExport export, UnClass owner) { return(new UE3PropertyListInstanceReader(package, reader, export, owner).Read()); }