bool UStructProperty::NetSerializeItem( FArchive& Ar, UPackageMap* Map, void* Data, TArray<uint8> * MetaData ) const { //------------------------------------------------ // Custom NetSerialization //------------------------------------------------ if (Struct->StructFlags & STRUCT_NetSerializeNative) { UScriptStruct::ICppStructOps* CppStructOps = Struct->GetCppStructOps(); check(CppStructOps); // else should not have STRUCT_NetSerializeNative bool bSuccess = true; bool bMapped = CppStructOps->NetSerialize(Ar, Map, bSuccess, Data); if (!bSuccess) { UE_LOG(LogProperty, Warning, TEXT("Native NetSerialize %s (%s) failed."), *GetFullName(), *Struct->GetFullName() ); } return bMapped; } UE_LOG( LogProperty, Fatal, TEXT( "Deprecated code path" ) ); return 1; }
virtual void NetSerializeStruct( UScriptStruct* Struct, FArchive& Ar, UPackageMap* Map, void* Data, bool& bHasUnmapped ) { if (Struct->StructFlags & STRUCT_NetSerializeNative) { UScriptStruct::ICppStructOps* CppStructOps = Struct->GetCppStructOps(); check(CppStructOps); // else should not have STRUCT_NetSerializeNative check(!Struct->InheritedCppStructOps()); // else should not have STRUCT_NetSerializeNative bool bSuccess = true; if (!CppStructOps->NetSerialize(Ar, Map, bSuccess, Data)) { bHasUnmapped = true; } if (!bSuccess) { UE_LOG(LogRep, Warning, TEXT("NetSerializeStruct: Native NetSerialize %s failed."), *Struct->GetFullName()); } } else { TSharedPtr<FRepLayout> RepLayout = Driver->GetStructRepLayout(Struct); RepLayout->SerializePropertiesForStruct(Struct, Ar, Map, Data, bHasUnmapped); } }