public void Serialize(IUnrealStream stream)
 {
     stream.Write(original.PackageName);
     stream.Write(original._ClassName);
     stream.Write(newOuterIndex); // Always an ordinary integer
     stream.Write(original.ObjectName);
 }
Example #2
0
 public void Serialize(IUnrealStream stream)
 {
     // TODO: Implement code
     stream.Write(UncompressedOffset);
     stream.Write(UncompressedSize);
     stream.Write(CompressedOffset);
     stream.Write(CompressedSize);
 }
 public void Serialize( IUnrealStream stream )
 {
     // TODO: Implement code
     stream.Write( UncompressedOffset );
     stream.Write( UncompressedSize );
     stream.Write( CompressedOffset );
     stream.Write( CompressedSize );
 }
Example #4
0
 public void Serialize(IUnrealStream stream)
 {
     Log.Info($"Writing import {ObjectName} at {stream.Position}");
     stream.Write(PackageName);
     stream.Write(_ClassName);
     stream.Write(OuterTable != null ? (int)OuterTable.Object : 0);   // Always an ordinary integer
     stream.Write(ObjectName);
 }
Example #5
0
 public void Serialize(IUnrealStream stream)
 {
     Console.WriteLine("Writing import " + ObjectName + " at " + stream.Position);
     stream.Write(PackageName);
     stream.Write(_ClassName);
     stream.Write(OuterTable != null ? (int)OuterTable.Object : 0);   // Always an ordinary integer
     stream.Write(ObjectName);
 }
 public void Serialize( IUnrealStream stream )
 {
     Console.WriteLine( "Writing import " + ObjectName + " at " + stream.Position );
     stream.Write( PackageName );
     stream.Write( _ClassName );
     stream.Write( OuterTable != null ? (int)OuterTable.Object : 0 ); // Always an ordinary integer
     stream.Write( ObjectName );
 }
 public void Serialize( IUnrealStream stream )
 {
     stream.Write( ExportsCount );
     stream.Write( NamesCount );
     if( stream.Version >= VNetObjectsCount )
     {
         stream.Write( NetObjectsCount );
     }
 }
Example #8
0
 public void Serialize(IUnrealStream stream)
 {
     stream.Write(ExportsCount);
     stream.Write(NamesCount);
     if (stream.Version >= VNetObjectsCount)
     {
         stream.Write(NetObjectsCount);
     }
 }
        public override void Write(IUnrealStream stream, UnrealPackage package)
        {
            FixNameIndexAtPosition(package, "SizeX", 4);
            FixNameIndexAtPosition(package, "IntProperty", 12);


            FixNameIndexAtPosition(package, "None", 32);
            stream.Write(minimalByteArray, 0, serialSize - 4);
            stream.Write((int)stream.Position + sizeof(int));
        }
Example #10
0
 internal void Serialize(IUnrealStream stream)
 {
     stream.Write(sizeX);
     stream.Write(sizeY);
     stream.Write(dataSize);
     if (dataSize > 0)
     {
         stream.Write(data, 0, data.Length);
     }
 }
Example #11
0
 public void Serialize(IUnrealStream stream)
 {
     stream.WriteIndex(_Index);
     if (stream.Version >= VNameNumbered)
     {
         Console.WriteLine(_Number + " " + _Text);
         stream.Write((uint)_Number + 1);
     }
 }
Example #12
0
 public void Serialize( IUnrealStream stream )
 {
     stream.WriteIndex( _Index );
     if( stream.Version >= VNameNumbered )
     {
         Console.WriteLine( _Number + " " + _Text );
         stream.Write( (uint)_Number + 1 );
     }
 }
        public void Serialize(IUnrealStream stream)
        {
            stream.WriteIndex(Index);

            if (stream.Version < VNameNumbered)
            {
                return;
            }

            Console.WriteLine(_Number + " " + Text);
            stream.Write((uint)_Number + 1);
        }
Example #14
0
        //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.
        }
Example #15
0
        //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.
        }
Example #16
0
        public void Serialize(IUnrealStream stream)
        {
            var offsetList = new List <int>();

            thumbnailDataOffset = (int)stream.Position;
            foreach (var thumbnailData in thumbnailDataTable)
            {
                offsetList.Add((int)stream.Position);
                thumbnailData.Serialize(stream);
            }

            thumbnailTableOffset = (int)stream.Position;
            stream.Write(thumbnailTable.Count());
            for (int i = 0; i < thumbnailTable.Count(); i++)
            {
                thumbnailTable[i].dataOffset = offsetList[i];
                thumbnailTable[i].Serialize(stream);
            }
        }
Example #17
0
        public void Write(IUnrealStream stream, UnrealPackage package)
        {
            FixNameIndexAtPosition(package, "SizeX", 4);
            FixNameIndexAtPosition(package, "IntProperty", 12);

            FixNameIndexAtPosition(package, "SizeY", 32);
            FixNameIndexAtPosition(package, "IntProperty", 40);

            FixNameIndexAtPosition(package, "OriginalSizeX", 60);
            FixNameIndexAtPosition(package, "IntProperty", 68);

            FixNameIndexAtPosition(package, "OriginalSizeY", 88);
            FixNameIndexAtPosition(package, "IntProperty", 96);

            FixNameIndexAtPosition(package, "OriginalSizeX", 60);
            FixNameIndexAtPosition(package, "IntProperty", 68);

            FixNameIndexAtPosition(package, "Format", 116);
            FixNameIndexAtPosition(package, "ByteProperty", 124);

            FixNameIndexAtPosition(package, "EPixelFormat", 140);
            FixNameIndexAtPosition(package, "PF_A8R8G8B8", 148);

            FixNameIndexAtPosition(package, "bIsSourceArtUncompressed", 156);
            FixNameIndexAtPosition(package, "BoolProperty", 164);

            FixNameIndexAtPosition(package, "CompressionNone", 181);
            FixNameIndexAtPosition(package, "BoolProperty", 189);

            FixNameIndexAtPosition(package, "MipGenSettings", 206);
            FixNameIndexAtPosition(package, "ByteProperty", 214);

            FixNameIndexAtPosition(package, "TextureMipGenSettings", 230);
            FixNameIndexAtPosition(package, "TMGS_NoMipmaps", 238);

            FixNameIndexAtPosition(package, "LightingGuid", 246);
            FixNameIndexAtPosition(package, "StructProperty", 254);

            FixNameIndexAtPosition(package, "Guid", 270);
            FixNameIndexAtPosition(package, "None", 294);

            stream.Write(minimalTex2D, 0, serialSize);
        }
Example #18
0
        public override void Write(IUnrealStream stream, UnrealPackage package)
        {
            FixNameIndexAtPosition(package, "ClothingAssets", 4);
            FixNameIndexAtPosition(package, "ArrayProperty", 12);
            FixNameIndexAtPosition(package, "LODInfo", 36);
            FixNameIndexAtPosition(package, "ArrayProperty", 44);
            FixNameIndexAtPosition(package, "DisplayFactor", 64);
            FixNameIndexAtPosition(package, "FloatProperty", 72);
            FixNameIndexAtPosition(package, "LODHysteresis", 92);
            FixNameIndexAtPosition(package, "FloatProperty", 100);
            FixNameIndexAtPosition(package, "LODMaterialMap", 120);
            FixNameIndexAtPosition(package, "ArrayProperty", 128);
            FixNameIndexAtPosition(package, "bEnableShadowCasting", 148);
            FixNameIndexAtPosition(package, "ArrayProperty", 156);
            FixNameIndexAtPosition(package, "TriangleSortSettings", 177);
            FixNameIndexAtPosition(package, "ArrayProperty", 185);
            FixNameIndexAtPosition(package, "TriangleSorting", 205);
            FixNameIndexAtPosition(package, "ByteProperty", 213);
            FixNameIndexAtPosition(package, "TriangleSortOption", 229);
            FixNameIndexAtPosition(package, "TRISORT_None", 237);
            FixNameIndexAtPosition(package, "CustomLeftRightAxis", 245);
            FixNameIndexAtPosition(package, "ByteProperty", 253);
            FixNameIndexAtPosition(package, "TriangleSortAxis", 269);
            FixNameIndexAtPosition(package, "TSA_X_Axis", 277);
            FixNameIndexAtPosition(package, "CustomLeftRightBoneName", 285);
            FixNameIndexAtPosition(package, "NameProperty", 293);
            FixNameIndexAtPosition(package, "None", 309);
            FixNameIndexAtPosition(package, "None", 317);
            FixNameIndexAtPosition(package, "bDisableCompressions", 325);
            FixNameIndexAtPosition(package, "BoolProperty", 333);
            FixNameIndexAtPosition(package, "bHasBeenSimplified", 350);
            FixNameIndexAtPosition(package, "BoolProperty", 358);
            FixNameIndexAtPosition(package, "None", 375);
            FixNameIndexAtPosition(package, "SourceFilePath", 383);
            FixNameIndexAtPosition(package, "StrProperty", 391);
            FixNameIndexAtPosition(package, "SourceFileTimestamp", 472);
            FixNameIndexAtPosition(package, "StrProperty", 480);
            FixNameIndexAtPosition(package, "None", 520);


            stream.Write(minimalByteArray, 0, serialSize);
        }
Example #19
0
        public override void Write(IUnrealStream stream, UnrealPackage package)
        {
            //FixNameIndexAtPosition(package, "StaticMesh", 0);

            FixNameIndexAtPosition(package, "SourceFileTimestamp", 4);
            FixNameIndexAtPosition(package, "StrProperty", 12);

            FixNameIndexAtPosition(package, "SourceFilePath", 52);
            FixNameIndexAtPosition(package, "StrProperty", 60);

            FixNameIndexAtPosition(package, "LightMapCoordinateIndex", 86);
            FixNameIndexAtPosition(package, "IntProperty", 94);

            FixNameIndexAtPosition(package, "LightMapResolution", 114);
            FixNameIndexAtPosition(package, "IntProperty", 122);

            FixNameIndexAtPosition(package, "None", 142);


            stream.Write(minimalByteArray, 0, serialSize);
        }
Example #20
0
        public void Serialize( IUnrealStream stream )
        {
            // Serialize tables
            var namesBuffer = new UObjectStream( stream );
            foreach( var name in Names )
            {
                name.Serialize( namesBuffer );
            }

            var importsBuffer = new UObjectStream( stream );
            foreach( var import in Imports )
            {
                import.Serialize( importsBuffer );
            }

            var exportsBuffer = new UObjectStream( stream );
            foreach( var export in Exports )
            {
                //export.Serialize( exportsBuffer );
            }

            stream.Seek( 0, SeekOrigin.Begin );

            stream.Write( Signature );

            // Serialize header
            var version = (int)(Version & 0x0000FFFFU) | (LicenseeVersion << 16);
            stream.Write( version );

            var headerSizePosition = stream.Position;
            if( Version >= VHeaderSize )
            {
                stream.Write( (int)HeaderSize );
                if( Version >= VGroup )
                {
                    stream.WriteString( Group );
                }
            }

            stream.Write( PackageFlags );

            _TablesData.NamesCount = (uint)Names.Count;
            _TablesData.ExportsCount = (uint)Exports.Count;
            _TablesData.ImportsCount = (uint)Imports.Count;

            var tablesDataPosition = stream.Position;
            _TablesData.Serialize( stream );

            // TODO: Serialize Heritages

            stream.Write( Guid.NewGuid().ToByteArray(), 0, 16 );
            Generations.Serialize( stream );

            if( Version >= VEngineVersion )
            {
                stream.Write( EngineVersion );
                if( Version >= VCOOKEDPACKAGES )
                {
                    stream.Write( CookerVersion );

                    if( Version >= VCompression )
                    {
                        if( IsCooked() )
                        {
                            stream.Write( CompressionFlags );
                            CompressedChunks.Serialize( stream );
                        }
                    }
                }
            }

            // TODO: Unknown data
            stream.Write( (uint)0 );

            // Serialize objects

            // Write tables

            // names
            Console.WriteLine( "Writing names at position " + stream.Position );
            _TablesData.NamesOffset = (uint)stream.Position;
            var namesBytes = namesBuffer.GetBuffer();
            stream.Write( namesBytes, 0, (int)namesBuffer.Length );

            // imports
            Console.WriteLine( "Writing imports at position " + stream.Position );
            _TablesData.ImportsOffset = (uint)stream.Position;
            var importsBytes = importsBuffer.GetBuffer();
            stream.Write( importsBytes, 0, (int)importsBuffer.Length );

            // exports
            Console.WriteLine( "Writing exports at position " + stream.Position );

            // Serialize tables data again now that offsets are known.
            var currentPosition = stream.Position;
            stream.Seek( tablesDataPosition, SeekOrigin.Begin );
            _TablesData.Serialize( stream );
            stream.Seek( currentPosition, SeekOrigin.Begin );
        }
Example #21
0
        + sizeof(int) * 3;             //name length, group length, dataOffset

        internal void Serialize(IUnrealStream stream)
        {
            stream.WriteString(name);
            stream.WriteString(group);
            stream.Write(dataOffset);
        }
Example #22
0
            public void Serialize( IUnrealStream stream )
            {
                stream.Write( NamesCount );
                stream.Write( NamesOffset );

                stream.Write( ExportsCount );
                stream.Write( ExportsOffset );

                stream.Write( ImportsCount );
                stream.Write( ImportsOffset );

                if( stream.Version < 415 )
                    return;

                // DependsOffset
                stream.Write( DependsOffset );
            }
Example #23
0
 public override void Write(IUnrealStream stream, UnrealPackage package)
 {
     FixNameIndexAtPosition(package, "None", 4);
     stream.Write(minimalByteArray, 0, serialSize);
 }