internal UArrayEnumeratorClass(UArray <T> array) { _ptr = array.Address; _len = array.Length; _index = 0; Current = default; }
protected override void Deserialize() { base.Deserialize(); _Format = Properties.Find( "Format" ); MipMaps = new UArray<MipMap>(); MipMaps.Deserialize( _Buffer, delegate( MipMap mm ){ mm.Owner = this; } ); }
protected override void Deserialize() { base.Deserialize(); _Format = Properties.Find("Format"); MipMaps = new UArray <MipMap>(); MipMaps.Deserialize(_Buffer, delegate(MipMap mm){ mm.Owner = this; }); }
public void Test1() { var u = new UArray <int>(6); var rg = new[] { 1, 2, 3, 4, 5, 6 }; u.CopyFrom(rg); Assert.True(u.SequenceEqual(rg)); u.Dispose(); Assert.True(!u.IsAllocated); }
public void GlobalSetup() { u1 = new(5); u2 = new int[5]; for (int i = 0; i < 5; i++) { u1[i] = i; u2[i] = i; } }
public void Deserialize(IUnrealStream stream) { if (stream.ReadUInt32() != Signature) { throw new System.IO.FileLoadException(stream + " isn't a UnrealMod file!"); } Summary = new FileSummary(); Summary.Deserialize(stream); stream.Seek(Summary.FileTableOffset, System.IO.SeekOrigin.Begin); FileTableList = new UArray <FileTable>(stream); }
public void Deserialize( IUnrealStream stream ) { if( stream.ReadUInt32() != Signature ) { throw new System.IO.FileLoadException( stream + " isn't a UnrealMod file!" ); } Summary = new FileSummary(); Summary.Deserialize( stream ); stream.Seek( Summary.FileTableOffset, System.IO.SeekOrigin.Begin ); FileTableList = new UArray<FileTable>( stream ); }
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( stream.Version <= 540 ) { // e.g. Core.Object.X FieldName = stream.ReadText(); } else { FieldIndex = stream.ReadObjectIndex(); } MetaTags = new UArray<UMetaTag>(); MetaTags.Deserialize( stream, tag => tag.Owner = Owner ); }
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); }
protected override void Deserialize() { base.Deserialize(); _Characters = new UArray <FontCharacter>(_Buffer); // Textures // Kerning _Buffer.ReadInt32(); // Remap _Buffer.UR.ReadBoolean(); }
protected override void Deserialize() { base.Deserialize(); _Characters = new UArray<FontCharacter>( _Buffer ); // Textures // Kerning _Buffer.ReadInt32(); // Remap _Buffer.UR.ReadBoolean(); }
static void Main(string[] args) { string net = args[0]; string pn1 = args[1]; string pn2 = args[2]; int equal = 0; int unequal = 0; Options.InitializeNNAnalysis(); NeuralNet nn = MNIST.GetNN(net); Console.WriteLine("Initialized network"); Bitmap x1 = new Bitmap(pn1); Bitmap x2 = new Bitmap(pn2); int[] dat1 = UDraw.FromBitmap(x1, MNIST.InputCoordinates.RowCount, MNIST.InputCoordinates.ColumnCount, false); int[] dat2 = UDraw.FromBitmap(x2, MNIST.InputCoordinates.RowCount, MNIST.InputCoordinates.ColumnCount, false); int lab1 = NNAnalysis.Utils.ULabel.Label(nn, UArray.ToDoubleArray(dat1), true); int lab2 = NNAnalysis.Utils.ULabel.Label(nn, UArray.ToDoubleArray(dat2), true); if (lab1 == lab2) { equal++; } else { unequal++; } Console.Write("Label for {0} is: {1}-{2}", pn1, lab1, lab2); Console.WriteLine(", equals = {0}", (lab1 == lab2)); //Console.WriteLine("Label for {0} is: {1}", pn2, lab2); }
protected override void Deserialize() { base.Deserialize(); if( Package.Version <= 61 ) { var oldClassRecordSize = _Buffer.ReadIndex(); Record( "oldClassRecordSize", oldClassRecordSize ); } #if BIOSHOCK if( Package.Build == UnrealPackage.GameBuild.BuildName.Bioshock ) { var unknown = _Buffer.ReadInt32(); Record( "???Bioshock_Int32", unknown ); } #endif ClassFlags = _Buffer.ReadUInt32(); Record( "ClassFlags", (ClassFlags)ClassFlags ); // Both were deprecated since then // TODO: Corrigate Version if( Package.Version < 140 ) { ClassGuid = _Buffer.ReadGuid(); Record( "ClassGuid", ClassGuid ); // Use ReadCount because Vanguard does no longer uses indexes but an int32 for arrays. var depSize = ReadCount(); Record( "DepSize", depSize ); if( depSize > 0 ) { ClassDependencies = new UArray<Dependency>( _Buffer, depSize ); Record( "ClassDependencies", ClassDependencies ); } PackageImports = DeserializeGroup( "PackageImports" ); } if( Package.Version >= 62 ) { // TODO: Corrigate Version // At least since Bioshock(140) - 547(APB) if( Package.Version >= 140 && Package.Version < 547 ) { var unknown = _Buffer.ReadByte(); Record( "???", unknown ); } // Class Name Extends Super.Name Within _WithinIndex // Config(_ConfigIndex); Within = _Buffer.ReadObject() as UClass; Record( "Within", Within ); ConfigName = _Buffer.ReadNameReference(); Record( "ConfigName", ConfigName ); const int vHideCategoriesOldOrder = 539; var isHideCategoriesOldOrder = Package.Version <= vHideCategoriesOldOrder #if TERA || Package.Build == UnrealPackage.GameBuild.BuildName.Tera #endif ; // TODO: Corrigate Version if( Package.Version >= 100 ) { // TODO: Corrigate Version if( Package.Version >= 220 ) { // TODO: Corrigate Version if( isHideCategoriesOldOrder && !Package.IsConsoleCooked() && !Package.Build.IsXenonCompressed ) { DeserializeHideCategories(); } DeserializeComponentsMap(); // RoboBlitz(369) // TODO: Corrigate Version if( Package.Version >= 369 ) { DeserializeInterfaces(); } } if( !Package.IsConsoleCooked() && !Package.Build.IsXenonCompressed ) { if( Package.Version >= 603 #if TERA && Package.Build != UnrealPackage.GameBuild.BuildName.Tera #endif ) { DontSortCategories = DeserializeGroup( "DontSortCategories" ); } // TODO: Corrigate Version if( Package.Version < 220 || !isHideCategoriesOldOrder ) { DeserializeHideCategories(); } // TODO: Corrigate Version if( Package.Version >= 185 ) { // 490:GoW1, 576:CrimeCraft if( (!HasClassFlag( Flags.ClassFlags.CollapseCategories )) || Package.Version <= vHideCategoriesOldOrder || Package.Version >= 576) { AutoExpandCategories = DeserializeGroup( "AutoExpandCategories" ); } if( Package.Version > 670 ) { AutoCollapseCategories = DeserializeGroup( "AutoCollapseCategories" ); if( Package.Version >= 749 #if SPECIALFORCE2 && Package.Build != UnrealPackage.GameBuild.BuildName.SpecialForce2 #endif ) { // bForceScriptOrder ForceScriptOrder = _Buffer.ReadInt32() > 0; Record( "ForceScriptOrder", ForceScriptOrder ); #if DISHONORED if( Package.Build == UnrealPackage.GameBuild.BuildName.Dishonored ) { var unk = _Buffer.ReadNameIndex(); Record( "??DISHONORED_NameIndex", Package.Names[unk] ); } #endif if( Package.Version >= UnrealPackage.VCLASSGROUP ) { #if DISHONORED if( Package.Build == UnrealPackage.GameBuild.BuildName.Dishonored ) { NativeClassName = _Buffer.ReadText(); Record( "NativeClassName", NativeClassName ); goto skipClassGroups; } #endif ClassGroups = DeserializeGroup( "ClassGroups" ); if( Package.Version >= 813 ) { NativeClassName = _Buffer.ReadText(); Record( "NativeClassName", NativeClassName ); } } #if DISHONORED skipClassGroups:; #endif } } // FIXME: Found first in(V:655), Definitely not in APB and GoW 2 // TODO: Corrigate Version if( Package.Version > 575 && Package.Version < 674 #if TERA && Package.Build != UnrealPackage.GameBuild.BuildName.Tera #endif ) { int unk2 = _Buffer.ReadInt32(); Record( "??Int32", unk2 ); #if SINGULARITY if( Package.Build == UnrealPackage.GameBuild.BuildName.Singularity ) { _Buffer.Skip( 8 ); } #endif } } } if( Package.Version >= UnrealPackage.VDLLBIND ) { DLLBindName = _Buffer.ReadNameReference(); Record( "DLLBindName", DLLBindName ); #if REMEMBERME if( Package.Build == UnrealPackage.GameBuild.BuildName.RememberMe ) { var unknownName = _Buffer.ReadNameReference(); Record( "??RM_Name", unknownName ); } #endif #if DISHONORED if( Package.Build == UnrealPackage.GameBuild.BuildName.Dishonored ) { ClassGroups = DeserializeGroup( "ClassGroups" ); } #endif #if BORDERLANDS2 if( Package.Build == UnrealPackage.GameBuild.BuildName.Borderlands2 ) { var unkval = _Buffer.ReadByte(); Record( "??BL2_Byte", unkval ); } #endif } } } // In later UE3 builds, defaultproperties are stored in separated objects named DEFAULT_namehere, // TODO: Corrigate Version if( Package.Version >= 322 ) { Default = _Buffer.ReadObject(); Record( "Default", Default ); } else { #if SWAT4 if( Package.Build == UnrealPackage.GameBuild.BuildName.Swat4 ) { // We are done here! return; } #endif DeserializeProperties(); } }
protected override void Deserialize() { base.Deserialize(); _MetaFields = new UArray<UMetaField>(); _MetaFields.Deserialize( _Buffer, field => field.Owner = Package ); }
public void Deserialize( UPackageStream stream ) { // Read as one variable due Big Endian Encoding. Version = stream.ReadUInt32(); LicenseeVersion = (ushort)(Version >> 16); Version = (Version & 0xFFFFU); Console.WriteLine( "\tPackage Version:" + Version + "/" + LicenseeVersion ); Build = new GameBuild( this ); Console.WriteLine( "\tBuild:" + Build.Name ); stream.BuildDetected( Build ); if( Version >= VHeaderSize ) { #if BIOSHOCK if( Build == GameBuild.BuildName.Bioshock_Infinite ) { var unk = stream.ReadInt32(); } #endif #if MKKE if( Build == GameBuild.BuildName.MKKE ) { stream.Skip( 8 ); } #endif #if TRANSFORMERS if( Build == GameBuild.BuildName.Transformers && LicenseeVersion >= 55 ) { if( LicenseeVersion >= 181 ) { stream.Skip( 16 ); } stream.Skip( 4 ); } #endif // Offset to the first class(not object) in the package. HeaderSize = stream.ReadUInt32(); Console.WriteLine( "\tHeader Size: " + HeaderSize ); if( Version >= VGroup ) { // UPK content category e.g. Weapons, Sounds or Meshes. Group = stream.ReadText(); } } // Bitflags such as AllowDownload. PackageFlags = stream.ReadUInt32(); Console.WriteLine( "\tPackage Flags:" + PackageFlags ); // Summary data such as ObjectCount. _TablesData = new TablesData(); _TablesData.Deserialize( stream ); if( Version < 68 ) { int heritageCount = stream.ReadInt32(); int heritageOffset = stream.ReadInt32(); stream.Seek( heritageOffset, SeekOrigin.Begin ); _Heritages = new List<ushort>( heritageCount ); for( var i = 0; i < heritageCount; ++ i ) { _Heritages.Add( stream.ReadUShort() ); } } else { #if THIEFDEADLYSHADOWS if( Build == GameBuild.BuildName.Thief_DS ) { stream.Skip( 4 ); } #endif #if BORDERLANDS if( Build == GameBuild.BuildName.Borderlands ) { stream.Skip( 4 ); } #endif #if MKKE if( Build == GameBuild.BuildName.MKKE ) { stream.Skip( 4 ); } #endif GUID = stream.ReadGuid(); Console.Write( "\r\n\tGUID:" + GUID + "\r\n" ); #if TERA if( Build == GameBuild.BuildName.Tera ) { stream.Position -= 4; } #endif #if MKKE if( Build != GameBuild.BuildName.MKKE ) { #endif int generationCount = stream.ReadInt32(); Generations = new UArray<UGenerationTableItem>( stream, generationCount ); Console.WriteLine( "Deserialized {0} generations", Generations.Count ); #if MKKE } #endif #if TERA if( Build == GameBuild.BuildName.Tera ) { _TablesData.NamesCount = (uint)Generations.Last().NamesCount; } #endif if( Version >= VEngineVersion ) { // The Engine Version this package was created with EngineVersion = stream.ReadInt32(); Console.WriteLine( "\tEngineVersion:" + EngineVersion ); if( Version >= VCOOKEDPACKAGES ) { // The Cooker Version this package was cooked with CookerVersion = stream.ReadInt32(); Console.WriteLine( "\tCookerVersion:" + CookerVersion ); // Read compressed info? if( Version >= VCompression ) { if( IsCooked() ) { CompressionFlags = stream.ReadUInt32(); Console.WriteLine( "\tCompressionFlags:" + CompressionFlags ); CompressedChunks = new UArray<CompressedChunk>{Capacity = stream.ReadInt32()}; //long uncookedSize = stream.Position; if( CompressedChunks.Capacity > 0 ) { CompressedChunks.Deserialize( stream, CompressedChunks.Capacity ); return; //try //{ // UPackageStream outStream = new UPackageStream( packagePath + ".dec", System.IO.FileMode.Create, FileAccess.ReadWrite ); // //File.SetAttributes( packagePath + ".dec", FileAttributes.Temporary ); // outStream.Package = pkg; // outStream._BigEndianCode = stream._BigEndianCode; // var headerBytes = new byte[uncookedSize]; // stream.Seek( 0, SeekOrigin.Begin ); // stream.Read( headerBytes, 0, (int)uncookedSize ); // outStream.Write( headerBytes, 0, (int)uncookedSize ); // foreach( var chunk in pkg.CompressedChunks ) // { // chunk.Decompress( stream, outStream ); // } // outStream.Flush(); // pkg.Stream = outStream; // stream = outStream; // return pkg; //} //catch( Exception e ) //{ // throw new DecompressPackageException(); //} } } } } } } // Read the name table if( _TablesData.NamesCount > 0 ) { Console.WriteLine( "P: " + stream.Position + " NP: " + _TablesData.NamesOffset ); stream.Seek( _TablesData.NamesOffset, SeekOrigin.Begin ); Names = new List<UNameTableItem>( (int)_TablesData.NamesCount ); for( var i = 0; i < _TablesData.NamesCount; ++ i ) { var nameEntry = new UNameTableItem{Offset = (int)stream.Position, Index = i}; nameEntry.Deserialize( stream ); nameEntry.Size = (int)(stream.Position - nameEntry.Offset); Names.Add( nameEntry ); } Console.WriteLine( "Deserialized {0} names", Names.Count ); } // Read Import Table if( _TablesData.ImportsCount > 0 ) { Console.WriteLine( "P: " + stream.Position + " IP: " + _TablesData.ImportsOffset ); stream.Seek( _TablesData.ImportsOffset, SeekOrigin.Begin ); Imports = new List<UImportTableItem>( (int)_TablesData.ImportsCount ); for( var i = 0; i < _TablesData.ImportsCount; ++ i ) { var imp = new UImportTableItem{Offset = (int)stream.Position, Index = i, Owner = this}; imp.Deserialize( stream ); imp.Size = (int)(stream.Position - imp.Offset); Imports.Add( imp ); } Console.WriteLine( "Deserialized {0} imports", Imports.Count ); } // Read Export Table if( _TablesData.ExportsCount > 0 ) { Console.WriteLine( "P: " + stream.Position + " EP: " + _TablesData.ExportsOffset ); stream.Seek( _TablesData.ExportsOffset, SeekOrigin.Begin ); Exports = new List<UExportTableItem>( (int)_TablesData.ExportsCount ); for( var i = 0; i < _TablesData.ExportsCount; ++ i ) { var exp = new UExportTableItem{Offset = (int)stream.Position, Index = i, Owner = this}; // For the GetObjectName like functions try { exp.Deserialize( stream ); } catch { Console.WriteLine( "Failed to deserialize export object at index:" + i ); break; } finally { exp.Size = (int)(stream.Position - exp.Offset); Exports.Add( exp ); } } Console.WriteLine( "Deserialized {0} exports", Exports.Count ); } /*if( pkg.Data.DependsOffset > 0 ) { stream.Seek( pkg.Data.DependsOffset, SeekOrigin.Begin ); pkg._DependsTableList = new List<UnrealDependsTable>( (int)pkg.Data.DependsCount ); for( var i = 0; i < pkg.Data.DependsCount; ++ i ) { var dep = new UnrealDependsTable{TableOffset = stream.Position, TableIndex = i, Owner = pkg}; dep.Deserialize( stream ); dep.TableSize = (int)(stream.Position - dep.TableOffset); pkg.DependsTableList.Add( dep ); } Console.WriteLine( "Deserialized {0} dependencies", pkg.DependsTableList.Count ); }*/ HeaderSize = stream.Position; }