static bool AreIdentical(UObject* ObjectA, UObject* ObjectB) { if (!ObjectA || !ObjectB || (ObjectA->GetClass() != ObjectB->GetClass())) { return false; } bool Result = true; for (UProperty* Prop = ObjectA->GetClass()->PropertyLink; Prop && Result; Prop = Prop->PropertyLinkNext) { bool bConsiderProperty = Prop->ShouldDuplicateValue(); //Should the property be compared at all? if (bConsiderProperty) { for (int32 Idx = 0; (Idx < Prop->ArrayDim) && Result; Idx++) { if (!Prop->Identical_InContainer(ObjectA, ObjectB, Idx, PPF_DeepComparison)) { Result = false; } } } } if (Result) { // Allow the component to compare its native/ intrinsic properties. Result = ObjectA->AreNativePropertiesIdenticalTo(ObjectB); } return Result; }