FArchive& FArchiveDescribeReference::operator<<( class UObject*& Obj ) { if (Obj == Target) { if (GSerializedProperty) { Output.Logf(TEXT(" [%s]"), *GSerializedProperty->GetFullName()); } else { Output.Logf(TEXT(" [native]")); } PTRINT BigOffset = ((uint8*)&Obj) - (uint8*)Source; if (BigOffset > 0 && BigOffset < Source->GetClass()->GetPropertiesSize()) { int32 Offset = int32(BigOffset); UClass* UseClass = Source->GetClass(); UClass* SuperClass = UseClass->GetSuperClass(); while (1) { if (!SuperClass || Offset >= SuperClass->GetPropertiesSize()) { break; } UseClass = SuperClass; SuperClass = UseClass->GetSuperClass(); } Output.Logf(TEXT(" class %s offset %d, offset from UObject %d "), *UseClass->GetName(), SuperClass ? Offset - SuperClass->GetPropertiesSize() : Offset, Offset); } } return *this; }