UELib.Core.UObject.Deserialize C# (CSharp) 메소드

Deserialize() 보호된 메소드

Deserialize this object's structure from the _Buffer stream.
protected Deserialize ( ) : void
리턴 void
        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 DEUSEXINVISIBLEWAR
                if( Package.Build == UnrealPackage.GameBuild.BuildName.DeusEx_IW )
                {
                    // var native private const int ObjectInternalPropertyHash[1]
                    _Buffer.Skip( 4 );
                }
            #endif

            #if THIEFDEADLYSHADOWS
                if( Package.Build == UnrealPackage.GameBuild.BuildName.Thief_DS )
                {
                    // var native private const int ObjectInternalPropertyHash[1]
                    _Buffer.Skip( 4 );
                }
            #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
        }