123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- #include "Native/NativeInterfaceJSStructSerializerBackend.h"
- #include "NativeInterfaceJSScripting.h"
- #include "UObject/UnrealType.h"
- #include "UObject/PropertyPortFlags.h"
- #include "Templates/Casts.h"
- void FNativeInterfaceJSStructSerializerBackend::WriteProperty(const FStructSerializerState& State, int32 ArrayIndex)
- {
-
- if (FObjectProperty* ObjectProperty = CastField<FObjectProperty>(State.ValueProperty))
- {
- WriteUObject(State, CastFieldChecked<FObjectProperty>(State.ValueProperty)->GetPropertyValue_InContainer(State.ValueData, ArrayIndex));
- }
-
- else
- {
- FJsonStructSerializerBackend::WriteProperty(State, ArrayIndex);
- }
- }
- void FNativeInterfaceJSStructSerializerBackend::WriteUObject(const FStructSerializerState& State, UObject* Value)
- {
-
- FString RawValue = Scripting->ConvertObject(Value);
- if ((State.ValueProperty == nullptr) || (State.ValueProperty->ArrayDim > 1) || State.ValueProperty->GetOwner< FArrayProperty>())
- {
- GetWriter()->WriteRawJSONValue(RawValue);
- }
- else if (State.KeyProperty != nullptr)
- {
- FString KeyString;
- State.KeyProperty->ExportTextItem_Direct(KeyString, State.KeyData, nullptr, nullptr, PPF_None);
- GetWriter()->WriteRawJSONValue(KeyString, RawValue);
- }
- else
- {
- GetWriter()->WriteRawJSONValue(Scripting->GetBindingName(State.ValueProperty), RawValue);
- }
- }
- FNativeInterfaceJSStructSerializerBackend::FNativeInterfaceJSStructSerializerBackend(TSharedRef<class FNativeInterfaceJSScripting> InScripting, FMemoryWriter& Writer)
- : FJsonStructSerializerBackend(Writer, EStructSerializerBackendFlags::Default)
- , Scripting(InScripting)
- {
- }
|