Example #1
0
        /// <summary>
        /// Deserialize this object's structure from the _Buffer stream.
        /// </summary>
        protected virtual void Deserialize()
        {
#if DEBUG
            #if LOG_RECORDS
            Log.WriteLine("");
            #endif
            Record(Name, this);
            Record("ExportSize", ExportTable.SerialSize);
#endif
            // TODO: Corrigate version
            if (Package.Version >= 322)
            {
                // TODO: Corrigate version. Fix component detection!
                //if (_Buffer.Version > 400
                //    && HasObjectFlag(Flags.ObjectFlagsHO.PropertiesObject)
                //    && HasObjectFlag(Flags.ObjectFlagsHO.ArchetypeObject))
                //{
                //    var componentClass = _Buffer.ReadObjectIndex();
                //    var componentName = _Buffer.ReadNameIndex();
                //}

                var netIndex = _Buffer.ReadObjectIndex();
                Record("netIndex", TryGetIndexObject(netIndex));
            }
            else
            {
                if (HasObjectFlag(Flags.ObjectFlagsLO.HasStack))
                {
                    int node = _Buffer.ReadIndex();
                    Record("node", GetIndexObject(node));
                    _Buffer.ReadIndex();    // stateNode
                    _Buffer.ReadUInt64();   // probeMask
                    _Buffer.ReadUInt32();   // latentAction
                    if (node != 0)
                    {
                        _Buffer.ReadIndex();    // Offset
                    }
                }
            }

            if (!IsClassType("Class"))
            {
                // REMINDER:Ends with a NameIndex referencing to "None"; 1/4/8 bytes
                DeserializeProperties();
            }
        }
Example #2
0
        /// <summary>
        /// Deserialize this object's structure from the _Buffer stream.
        /// </summary>
        protected virtual void Deserialize()
        {
#if DEBUG
            #if LOG_RECORDS
            Console.WriteLine("");
            #endif
            Record(Name, this);
            Record("ExportSize", ExportTable.SerialSize);
#endif
            // TODO: Corrigate version
            if (Package.Version >= 322
#if MKKE
                && Package.Build != UnrealPackage.GameBuild.BuildName.MKKE
#endif
                )
            {
                // TODO: Corrigate version. Fix component detection!
                //if( _Buffer.Version > 400
                //    && HasObjectFlag( Flags.ObjectFlagsHO.PropertiesObject )
                //    && HasObjectFlag( Flags.ObjectFlagsHO.ArchetypeObject ) )
                //{
                //    var componentClass = _Buffer.ReadObjectIndex();
                //    var componentName = _Buffer.ReadNameIndex();
                //}

                var netIndex = _Buffer.ReadObjectIndex();
                Record("netIndex", TryGetIndexObject(netIndex));
            }
            else
            {
                if (HasObjectFlag(Flags.ObjectFlagsLO.HasStack))
                {
                    int node = _Buffer.ReadIndex();
                    Record("node", GetIndexObject(node));
                    _Buffer.ReadIndex();    // stateNode
                    _Buffer.ReadUInt64();   // probeMask
                    _Buffer.ReadUInt32();   // latentAction
                    if (node != 0)
                    {
                        _Buffer.ReadIndex();    // Offset
                    }
                }
#if SWAT4
                if (Package.Build == UnrealPackage.GameBuild.BuildName.Swat4)
                {
                    // 8 bytes: Value: 3
                    // 4 bytes: Value: 1
                    _Buffer.Skip(12);
                }
#endif

#if BIOSHOCK
                if (Package.Build == UnrealPackage.GameBuild.BuildName.Bioshock)
                {
                    _Buffer.Skip(8);
                }
#endif
            }

            if (!IsClassType("Class"))
            {
#if SWAT4
                if (Package.Build != UnrealPackage.GameBuild.BuildName.Swat4)
                {
#endif
                // REMINDER:Ends with a NameIndex referencing to "None"; 1/4/8 bytes
                DeserializeProperties();
#if SWAT4
            }
            else
            {
                _Buffer.Skip(1);
            }
#endif
            }
#if UNREAL2
            else if (Package.Build == UnrealPackage.GameBuild.BuildName.Unreal2)
            {
                int count = _Buffer.ReadIndex();
                for (int i = 0; i < count; ++i)
                {
                    _Buffer.ReadObjectIndex();
                }
            }
#endif
        }