ObjectDeliverer
ObjectDeliverer copied to clipboard
Bugs ObjectDeliveryBoxUsingJson UE5.4.3 - Fix inside
Unfortunately the game crashes when using "Create Dynamic Object Delivery Box Using Json" or using "Create Custom Object Delivery Box Using Json" with "Write Type" Serializer. Because the ConstructorHelpers can now only be accessed within constructors.
Also the Map for "Create Custom Object Delivery Box Using Json" is not used at all.
To fix this replace the following functions:
ODObjectUtil.cpp:
bool UODObjectUtil::FindClass(const FString& ClassName, UClass*& Class)
{
UClass* LoadedClass = FSoftClassPath(ClassName).TryLoadClass<UObject>();
bool bFound = false;
if (LoadedClass)
{
LoadedClass->AddToRoot();
bFound = true;
Class = LoadedClass;
}
if (!bFound) UE_LOG(LogObjectDeliverer, Error, TEXT("Can't find class."));
return bFound;
}
ODJsonSerializer.cpp:
TSharedPtr<FJsonObject> UODJsonSerializer::CreateJsonObject(const UObject* Obj, int64 CheckFlags /*= 0*/, int64 SkipFlags /*= 0*/)
{
return UObjectToJsonObject(Obj->GetClass(), Obj, CheckFlags, SkipFlags);
}
ODOverrideJsonSerializer.cpp:
TSharedPtr<FJsonObject> UODWriteTypeJsonSerializer::UObjectToJsonObject(UODJsonSerializer* JsonSerializer, const UObject* Obj, int64 CheckFlags, int64 SkipFlags) const
{
TSharedPtr<FJsonObject> JsonObject = MakeShareable(new FJsonObject());
if (!Obj) return JsonObject;
JsonObject->SetStringField(TEXT("Type"), Obj->GetClass()->GetPathName());
TSharedPtr<FJsonObject> JsonObjectBody = MakeShareable(new FJsonObject());
for (TFieldIterator<FProperty> PropIt(Obj->GetClass(), EFieldIteratorFlags::IncludeSuper); PropIt; ++PropIt)
{
JsonSerializer->AddJsonValue(JsonObjectBody, Obj, *PropIt, CheckFlags, SkipFlags);
}
JsonObject->SetObjectField(TEXT("Body"), JsonObjectBody);
return JsonObject;
}