Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void UObject::Serialize( FArchive& Ar )
- {
- SetFlags( RF_DebugSerialize );
- // Make sure this object's class's data is loaded.
- if( Class != UClass::StaticClass() )
- Ar.Preload( Class );
- // Special info.
- if( (!Ar.IsLoading() && !Ar.IsSaving()) )
- Ar << Name << Outer << Class;
- if( !Ar.IsLoading() && !Ar.IsSaving() )
- Ar << _Linker;
- // Execution stack.
- //!!how does the stack work in conjunction with transaction tracking?
- if( !Ar.IsTrans() )
- {
- if( GetFlags() & RF_HasStack )
- {
- if( !StateFrame )
- StateFrame = new FStateFrame( this );
- Ar << StateFrame->Node << StateFrame->StateNode;
- Ar << StateFrame->ProbeMask;
- Ar << StateFrame->LatentAction;
- if( StateFrame->Node )
- {
- Ar.Preload( StateFrame->Node );
- if( Ar.IsSaving() && StateFrame->Code )
- check(StateFrame->Code>=&StateFrame->Node->Script(0) && StateFrame->Code<&StateFrame->Node->Script(StateFrame->Node->Script.Num()));
- INT Offset = StateFrame->Code ? StateFrame->Code - &StateFrame->Node->Script(0) : INDEX_NONE;
- Ar << Offset;
- if( Offset!=INDEX_NONE )
- if( Offset<0 || Offset>=StateFrame->Node->Script.Num() )
- appErrorf( TEXT("%s: Offset mismatch: %i %i"), *GetFullName(), Offset, StateFrame->Node->Script.Num() );
- StateFrame->Code = Offset!=INDEX_NONE ? &StateFrame->Node->Script(Offset) : NULL;
- }
- else StateFrame->Code = NULL;
- }
- else if( StateFrame )
- {
- delete StateFrame;
- StateFrame = NULL;
- }
- }
- // Serialize object properties which are defined in the class.
- if( Class != UClass::StaticClass() )
- {
- if( (Ar.IsLoading() || Ar.IsSaving()) && !Ar.IsTrans() )
- GetClass()->SerializeTaggedProperties( Ar, (BYTE*)this, Class );
- else
- GetClass()->SerializeBin( Ar, (BYTE*)this, 0 );
- }
- // Memory counting.
- SIZE_T Size = GetClass()->GetPropertiesSize();
- Ar.CountBytes( Size, Size );
- }
Advertisement
Add Comment
Please, Sign In to add comment