From 3e928b1d196fa1c91c715b46f0db9e0640abd9eb Mon Sep 17 00:00:00 2001 From: Algorithman Date: Sat, 11 May 2019 22:12:10 +0200 Subject: [PATCH 1/2] Additional stuff for #39 --- .../Internal/HotReload/SharpHotReloadClassReinstancer.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Source/USharp/Private/ExportedFunctions/Internal/HotReload/SharpHotReloadClassReinstancer.cpp b/Source/USharp/Private/ExportedFunctions/Internal/HotReload/SharpHotReloadClassReinstancer.cpp index 99feec1..c905b4d 100644 --- a/Source/USharp/Private/ExportedFunctions/Internal/HotReload/SharpHotReloadClassReinstancer.cpp +++ b/Source/USharp/Private/ExportedFunctions/Internal/HotReload/SharpHotReloadClassReinstancer.cpp @@ -635,7 +635,7 @@ void FSharpHotReloadClassReinstancer::UpdateDefaultProperties() else 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); } @@ -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); } From 59b031d1239102192efddfeadb22f498b56fa67b Mon Sep 17 00:00:00 2001 From: Algorithman Date: Sat, 11 May 2019 22:19:31 +0200 Subject: [PATCH 2/2] Also fix for #39 --- .../HotReload/SharpHotReloadClassReinstancer.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Source/USharp/Private/ExportedFunctions/Internal/HotReload/SharpHotReloadClassReinstancer.cpp b/Source/USharp/Private/ExportedFunctions/Internal/HotReload/SharpHotReloadClassReinstancer.cpp index c905b4d..d56c028 100644 --- a/Source/USharp/Private/ExportedFunctions/Internal/HotReload/SharpHotReloadClassReinstancer.cpp +++ b/Source/USharp/Private/ExportedFunctions/Internal/HotReload/SharpHotReloadClassReinstancer.cpp @@ -628,11 +628,7 @@ 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 && DefaultSubobjectPtr->GetClass()->IsChildOf((UClass*)NewPropertyInfo.Property->GetOuter())) @@ -640,6 +636,10 @@ void FSharpHotReloadClassReinstancer::UpdateDefaultProperties() PropertyToUpdate.NewValuePtr = PropertyToUpdate.Property->ContainerPtrToValuePtr(DefaultSubobjectPtr); } } + else + { + PropertyToUpdate.NewValuePtr = PropertyToUpdate.Property->ContainerPtrToValuePtr(NewClass->GetDefaultObject()); + } if (PropertyToUpdate.NewValuePtr) { PropertyToUpdate.OldSerializedValuePtr = OldSerializedValuePtr;