Exemple #1
0
 internal UArrayEnumeratorClass(UArray <T> array)
 {
     _ptr    = array.Address;
     _len    = array.Length;
     _index  = 0;
     Current = default;
 }
Exemple #2
0
        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; });
        }
Exemple #4
0
    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);
    }
Exemple #5
0
    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);
        }
Exemple #7
0
        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 );
            }
Exemple #9
0
 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 );
 }
Exemple #10
0
            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);
            }
Exemple #11
0
        protected override void Deserialize()
        {
            base.Deserialize();

            _Characters = new UArray <FontCharacter>(_Buffer);

            // Textures

            // Kerning
            _Buffer.ReadInt32();

            // Remap

            _Buffer.UR.ReadBoolean();
        }
Exemple #12
0
        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);
        }
Exemple #14
0
        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();
            }
        }
Exemple #15
0
 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;
        }