diff --git a/Source/USharp/Private/ExportedFunctions/Internal/HotReload/SharpHotReloadClassReinstancer.cpp b/Source/USharp/Private/ExportedFunctions/Internal/HotReload/SharpHotReloadClassReinstancer.cpp index 99feec1..d56c028 100644 --- a/Source/USharp/Private/ExportedFunctions/Internal/HotReload/SharpHotReloadClassReinstancer.cpp +++ b/Source/USharp/Private/ExportedFunctions/Internal/HotReload/SharpHotReloadClassReinstancer.cpp @@ -628,18 +628,18 @@ void FSharpHotReloadClassReinstancer::UpdateDefaultProperties() PropertyToUpdate.NewValuePtr = nullptr; PropertyToUpdate.SubobjectName = NewPropertyInfo.SubobjectName; - if (NewPropertyInfo.Property->GetOuter() == NewClass) - { - PropertyToUpdate.NewValuePtr = PropertyToUpdate.Property->ContainerPtrToValuePtr(NewClass->GetDefaultObject()); - } - else if (NewPropertyInfo.SubobjectName != NAME_None) + if (NewPropertyInfo.SubobjectName != NAME_None) { UObject* DefaultSubobjectPtr = FindDefaultSubobject(DefaultSubobjectArray, NewPropertyInfo.SubobjectName); - if (DefaultSubobjectPtr && NewPropertyInfo.Property->GetOuter() == DefaultSubobjectPtr->GetClass()) + if (DefaultSubobjectPtr && DefaultSubobjectPtr->GetClass()->IsChildOf((UClass*)NewPropertyInfo.Property->GetOuter())) { PropertyToUpdate.NewValuePtr = PropertyToUpdate.Property->ContainerPtrToValuePtr(DefaultSubobjectPtr); } } + else + { + PropertyToUpdate.NewValuePtr = PropertyToUpdate.Property->ContainerPtrToValuePtr(NewClass->GetDefaultObject()); + } if (PropertyToUpdate.NewValuePtr) { PropertyToUpdate.OldSerializedValuePtr = OldSerializedValuePtr; @@ -671,7 +671,7 @@ void FSharpHotReloadClassReinstancer::UpdateDefaultProperties() else { UObject* DefaultSubobjectPtr = FindDefaultSubobject(DefaultSubobjectArray, PropertyToUpdate.SubobjectName); - if (DefaultSubobjectPtr && PropertyToUpdate.Property->GetOuter() == DefaultSubobjectPtr->GetClass()) + if (DefaultSubobjectPtr && DefaultSubobjectPtr->GetClass()->IsChildOf((UClass*)PropertyToUpdate.Property->GetOuter())) { InstanceValuePtr = PropertyToUpdate.Property->ContainerPtrToValuePtr(DefaultSubobjectPtr); }