Skip to content

Commit 719b33c

Browse files
committed
release 1.4.2
1 parent 883b7dd commit 719b33c

21 files changed

Lines changed: 132 additions & 40 deletions

File tree

DataConfig/Source/DataConfigCore/Private/DataConfig/Deserialize/Handlers/MsgPack/DcMsgPackTransientDeserializers.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -92,15 +92,16 @@ static FORCEINLINE_DEBUGGABLE FDcResult ReadTransientWeakObjectPtr(FDcReader* Re
9292
return DcOk();
9393
}
9494

95-
static FORCEINLINE_DEBUGGABLE FDcResult ReadTransientScriptDelegate(FDcReader* Reader, DcSerDeCommon::FScriptDelegateAccess& ValueAccess)
95+
template<typename TDelegate>
96+
static FORCEINLINE_DEBUGGABLE FDcResult ReadTransientScriptDelegate(FDcReader* Reader, DcSerDeCommon::TDelegateAccess<TDelegate>& ValueAccess)
9697
{
9798
using DcSerDeCommon::FWeakObjectPtrAccess;
98-
FWeakObjectPtrAccess& WeakAccess = (FWeakObjectPtrAccess&)ValueAccess.Object;
99+
FWeakObjectPtrAccess& WeakAccess = (FWeakObjectPtrAccess&)ValueAccess.GetObject();
99100

100101
DC_TRY(Reader->ReadArrayRoot());
101102
DC_TRY(Reader->ReadInt32(&WeakAccess.ObjectIndex));
102103
DC_TRY(Reader->ReadInt32(&WeakAccess.ObjectSerialNumber));
103-
DC_TRY(ReadTransientName(Reader, ValueAccess.FunctionName));
104+
DC_TRY(ReadTransientName(Reader, ValueAccess.GetFunctionName()));
104105
DC_TRY(Reader->ReadArrayEnd());
105106

106107
return DcOk();
@@ -109,6 +110,7 @@ static FORCEINLINE_DEBUGGABLE FDcResult ReadTransientScriptDelegate(FDcReader* R
109110
static FORCEINLINE_DEBUGGABLE FDcResult ReadTransientMulticastScriptDelegate(FDcReader* Reader, DcSerDeCommon::FMulticastScriptDelegateAccess& ValueAccess)
110111
{
111112
using DcSerDeCommon::FScriptDelegateAccess;
113+
using FInvocationAccess = DcSerDeCommon::FMulticastScriptDelegateAccess::TypeInvocationAccess;
112114
DC_TRY(Reader->ReadArrayRoot());
113115

114116
while(true)
@@ -118,7 +120,7 @@ static FORCEINLINE_DEBUGGABLE FDcResult ReadTransientMulticastScriptDelegate(FDc
118120
if (Next == EDcDataEntry::ArrayEnd)
119121
break;
120122

121-
FScriptDelegateAccess& DelgateAccess = (FScriptDelegateAccess&)ValueAccess.InvocationList.AddDefaulted_GetRef();
123+
FInvocationAccess& DelgateAccess = (FInvocationAccess&)ValueAccess.GetInvocationList().AddDefaulted_GetRef();
122124
DC_TRY(ReadTransientScriptDelegate(Reader, DelgateAccess));
123125
}
124126

DataConfig/Source/DataConfigCore/Private/DataConfig/Property/DcPropertyWriteStates.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ FDcResult FDcWriteStateStruct::WriteStructRootAccess(FDcPropertyWriter* Parent,
175175
State = EState::ExpectKeyOrEnd;
176176
if (Access.Flag & FDcStructAccess::WriteCheckName)
177177
{
178-
return DcExpect(Access.Name == StructClass->GetFName(), [=] {
178+
return DcExpect(Access.Name == StructClass->GetFName(), [&] {
179179
return DC_FAIL(DcDReadWrite, StructNameMismatch)
180180
<< StructClass->GetFName() << Access.Name
181181
<< Parent->FormatHighlight();
@@ -201,7 +201,7 @@ FDcResult FDcWriteStateStruct::WriteStructEndAccess(FDcPropertyWriter* Parent, F
201201
State = EState::Ended;
202202
if (Access.Flag & FDcStructAccess::WriteCheckName)
203203
{
204-
return DcExpect(Access.Name == StructClass->GetFName(), [=] {
204+
return DcExpect(Access.Name == StructClass->GetFName(), [&] {
205205
return DC_FAIL(DcDReadWrite, StructNameMismatch)
206206
<< StructClass->GetFName() << Access.Name
207207
<< Parent->FormatHighlight();
@@ -351,7 +351,7 @@ FDcResult FDcWriteStateClass::WriteClassRootAccess(FDcPropertyWriter* Parent, FD
351351
{
352352
if (Access.Flag & FDcClassAccess::WriteCheckName)
353353
{
354-
DC_TRY(DcExpect(Class->GetFName() == Access.Name, [=]{
354+
DC_TRY(DcExpect(Class->GetFName() == Access.Name, [&]{
355355
return DC_FAIL(DcDReadWrite, ClassNameMismatch)
356356
<< Class->GetFName() << Access.Name
357357
<< Parent->FormatHighlight();
@@ -414,7 +414,7 @@ FDcResult FDcWriteStateClass::WriteClassEndAccess(FDcPropertyWriter* Parent, FDc
414414
{
415415
if (Access.Flag & FDcClassAccess::WriteCheckName)
416416
{
417-
DC_TRY(DcExpect(Class->GetFName() == Access.Name, [=] {
417+
DC_TRY(DcExpect(Class->GetFName() == Access.Name, [&] {
418418
return DC_FAIL(DcDReadWrite, ClassNameMismatch)
419419
<< Class->GetFName() << Access.Name
420420
<< Parent->FormatHighlight();

DataConfig/Source/DataConfigCore/Private/DataConfig/Serialize/Handlers/MsgPack/DcMsgPackTransientSerializers.cpp

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,27 +30,30 @@ static FORCEINLINE_DEBUGGABLE FDcResult WriteTransientName(FDcWriter* Writer, co
3030
return DcOk();
3131
}
3232

33-
static FORCEINLINE_DEBUGGABLE FDcResult WriteTransientScriptDelegate(FDcWriter* Writer, const DcSerDeCommon::FScriptDelegateAccess& ValueAccess)
33+
template<typename TDelegate>
34+
static FORCEINLINE_DEBUGGABLE FDcResult WriteTransientScriptDelegate(FDcWriter* Writer, DcSerDeCommon::TDelegateAccess<TDelegate>& ValueAccess)
3435
{
3536
using DcSerDeCommon::FWeakObjectPtrAccess;
36-
FWeakObjectPtrAccess& WeakAccess = (FWeakObjectPtrAccess&)(ValueAccess.Object);
37+
FWeakObjectPtrAccess& WeakAccess = (FWeakObjectPtrAccess&)(ValueAccess.GetObject());
3738

3839
DC_TRY(Writer->WriteArrayRoot());
3940
DC_TRY(Writer->WriteInt32(WeakAccess.ObjectIndex));
4041
DC_TRY(Writer->WriteInt32(WeakAccess.ObjectSerialNumber));
41-
DC_TRY(WriteTransientName(Writer, ValueAccess.FunctionName));
42+
DC_TRY(WriteTransientName(Writer, ValueAccess.GetFunctionName()));
4243
DC_TRY(Writer->WriteArrayEnd());
4344

4445
return DcOk();
4546
}
4647

47-
static FORCEINLINE_DEBUGGABLE FDcResult WriteTransientMulticastScriptDelegate(FDcWriter* Writer, const DcSerDeCommon::FMulticastScriptDelegateAccess& ValueAccess)
48+
static FORCEINLINE_DEBUGGABLE FDcResult WriteTransientMulticastScriptDelegate(FDcWriter* Writer, DcSerDeCommon::FMulticastScriptDelegateAccess& ValueAccess)
4849
{
4950
using DcSerDeCommon::FScriptDelegateAccess;
51+
using FInvocationAccess = DcSerDeCommon::FMulticastScriptDelegateAccess::TypeInvocationAccess;
52+
5053
DC_TRY(Writer->WriteArrayRoot());
51-
for (int Ix = 0; Ix < ValueAccess.InvocationList.Num(); Ix++)
54+
for (int Ix = 0; Ix < ValueAccess.GetInvocationList().Num(); Ix++)
5255
{
53-
FScriptDelegateAccess& DelegateAccess = (FScriptDelegateAccess&)(ValueAccess.InvocationList[Ix]);
56+
FInvocationAccess& DelegateAccess = (FInvocationAccess&)(ValueAccess.GetInvocationList()[Ix]);
5457
DC_TRY(WriteTransientScriptDelegate(Writer, DelegateAccess));
5558
}
5659
DC_TRY(Writer->WriteArrayEnd());
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
#pragma once
22

3-
#define DATA_CONFIG_CORE_VERSION "1.4.1"
4-
#define DATA_CONFIG_CORE_VERSION_NUMBER 10401
3+
#define DATA_CONFIG_CORE_VERSION "1.4.2"
4+
#define DATA_CONFIG_CORE_VERSION_NUMBER 10402

DataConfig/Source/DataConfigCore/Public/DataConfig/Misc/DcDataVariant.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ struct FDcDataVariant
3737

3838
template<
3939
typename T,
40-
typename TActual = typename TRemoveConst<typename TRemoveReference<T>::Type>::Type,
40+
typename TActual = typename DcTypeUtils::TRemoveConst<typename TRemoveReference<T>::Type>::Type,
4141
typename X = typename TEnableIf<TDcIsDataVariantCompatible<TActual>::Value, void>::Type
4242
>
4343
FDcDataVariant(T&& InValue)
@@ -55,7 +55,7 @@ struct FDcDataVariant
5555
template<typename T>
5656
FORCEINLINE void Initialize(T InValue)
5757
{
58-
using TActual = typename TRemoveConst<typename TRemoveReference<T>::Type>::Type;
58+
using TActual = typename DcTypeUtils::TRemoveConst<typename TRemoveReference<T>::Type>::Type;
5959
DataType = DcTypeUtils::TDcDataEntryType<TActual>::Value;
6060
bDataTypeOnly = false;
6161

DataConfig/Source/DataConfigCore/Public/DataConfig/Misc/DcTypeUtils.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,5 +94,16 @@ struct TIsSame
9494
#endif
9595
};
9696

97+
template<typename T>
98+
struct TRemoveConst
99+
{
100+
#if UE_VERSION_OLDER_THAN(5, 3, 0)
101+
using Type = typename ::TRemoveConst<T>::Type;
102+
#else
103+
using Type = std::remove_const_t<T>;
104+
#endif
105+
};
106+
107+
97108
} // namespace DcTypeUtils
98109

DataConfig/Source/DataConfigCore/Public/DataConfig/Property/DcPropertyUtils.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,10 @@ DATACONFIGCORE_API FString GetFormatPropertyTypeName(UScriptStruct* Struct);
5454
DATACONFIGCORE_API FString GetFormatPropertyTypeName(UClass* Class);
5555
DATACONFIGCORE_API FString GetFormatPropertyTypeName(const FFieldVariant& Field);
5656

57+
#if ENGINE_MAJOR_VERSION == 5
58+
FORCEINLINE FString GetFormatPropertyTypeName(TObjectPtr<UClass> Ptr) { return GetFormatPropertyTypeName(Ptr.Get()); }
59+
FORCEINLINE FString GetFormatPropertyTypeName(TObjectPtr<UScriptStruct> Ptr) { return GetFormatPropertyTypeName(Ptr.Get()); }
60+
#endif
5761

5862
DATACONFIGCORE_API bool IsSubObjectProperty(FObjectProperty* ObjectProperty);
5963
DATACONFIGCORE_API bool IsUnsignedProperty(FNumericProperty* NumericProperty);

DataConfig/Source/DataConfigCore/Public/DataConfig/SerDe/DcDeserializeCommon.inl

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
#include "DataConfig/Diagnostic/DcDiagnosticSerDe.h"
1313
#include "DataConfig/SerDe/DcSerDeUtils.h"
1414
#include "UObject/Package.h"
15+
#include "Misc/EngineVersionComparison.h"
1516

1617
FORCEINLINE_DEBUGGABLE FDcResult TryReadObjectReference(FDcDeserializeContext& Ctx, FObjectPropertyBase* ObjectProperty, UObject*& OutObject)
1718
{
@@ -28,8 +29,14 @@ FORCEINLINE_DEBUGGABLE FDcResult TryReadObjectReference(FDcDeserializeContext& C
2829
&& Value.EndsWith(TEXT("'")))
2930
{
3031
// SkeletalMesh'/Engine/EditorMeshes/SkeletalMesh/DefaultSkeletalMesh.DefaultSkeletalMesh'
31-
// UE4 copied reference style
32+
// UE copied reference style
33+
34+
#if UE_VERSION_OLDER_THAN(5, 3, 0)
3235
UObject* Loaded = nullptr;
36+
#else
37+
TObjectPtr<UObject> Loaded = nullptr;
38+
#endif
39+
3340
const TCHAR* ValueBuffer = *Value;
3441
if (FObjectPropertyBase::ParseObjectPropertyValue(
3542
ObjectProperty,

DataConfig/Source/DataConfigCore/Public/DataConfig/SerDe/DcSerDeCommon.h

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,18 +13,27 @@ struct FWeakObjectPtrAccess
1313
};
1414
static_assert(sizeof(FWeakObjectPtrAccess) == sizeof(FWeakObjectPtr), "FWeakObjectPtrAccess stale");
1515

16-
struct FScriptDelegateAccess
16+
template<typename TDelegate>
17+
struct TDelegateAccess : public TDelegate
1718
{
18-
FWeakObjectPtr Object;
19-
FName FunctionName;
19+
FORCEINLINE FWeakObjectPtr& GetObject() { return this->Object; }
20+
FORCEINLINE FName& GetFunctionName() { return this->FunctionName; }
2021
};
21-
static_assert(sizeof(FScriptDelegateAccess) == sizeof(FScriptDelegate), "FScriptDelegateAccess stale");
2222

23-
struct FMulticastScriptDelegateAccess
23+
using FScriptDelegateAccess = TDelegateAccess<FScriptDelegate>;
24+
25+
struct FMulticastScriptDelegateAccess : public FMulticastScriptDelegate
2426
{
25-
FMulticastScriptDelegate::FInvocationList InvocationList;
27+
#if UE_VERSION_OLDER_THAN(5, 3, 0)
28+
using TypeInvocationList = FMulticastScriptDelegate::FInvocationList;
29+
#else
30+
using TypeInvocationList = FMulticastScriptDelegate::InvocationListType;
31+
#endif
32+
33+
using TypeInvocationAccess = TDelegateAccess<typename TypeInvocationList::ElementType>;
34+
35+
FORCEINLINE TypeInvocationList& GetInvocationList() { return InvocationList; }
2636
};
27-
static_assert(sizeof(FMulticastScriptDelegateAccess) == sizeof(FMulticastScriptDelegate), "FMulticastScriptDelegateAccess stale");
2837

2938
struct FTextAccess
3039
{

DataConfig/Source/DataConfigEditorExtra/Private/DataConfig/EditorExtra/SerDe/DcSerDeBlueprint.cpp

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,14 @@ static FDcResult TryReadClassReferenceWithBlueprint(FDcDeserializeContext& Ctx,
9090
&& Value.EndsWith(TEXT("'")))
9191
{
9292
// SkeletalMesh'/Engine/EditorMeshes/SkeletalMesh/DefaultSkeletalMesh.DefaultSkeletalMesh'
93-
// UE4 copied reference style
93+
// UE copied reference style
94+
#if UE_VERSION_OLDER_THAN(5, 3, 0)
9495
UObject* Loaded = nullptr;
96+
#else
97+
TObjectPtr<UObject> Loaded = nullptr;
98+
#endif
99+
100+
95101
const TCHAR* ValueBuffer = *Value;
96102
if (FObjectPropertyBase::ParseObjectPropertyValue(
97103
ObjectProperty,

0 commit comments

Comments
 (0)