UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
OnlineReplStructs.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3//
4// Unreal networking serialization helpers
5//
6
7#pragma once
8
9#include "CoreMinimal.h"
11#include "UObject/Class.h"
12#include "Online/CoreOnline.h"
13#include "OnlineReplStructs.generated.h"
14
15class FJsonValue;
16enum class EUniqueIdEncodingFlags : uint8;
17
24USTRUCT(BlueprintType, DisplayName = "Unique Net Id")
26{
28
30 {
31 }
32
36
41
46
51
56
61
62 virtual ~FUniqueNetIdRepl() {}
63
64 virtual void SetUniqueNetId(const FUniqueNetIdPtr& UniqueNetId) override
65 {
66 ReplicationBytes.Empty();
68 }
69
70 virtual void SetAccountId(const UE::Online::FAccountId& AccountId) override
71 {
72 ReplicationBytes.Empty();
74 }
75
77 bool ExportTextItem(FString& ValueStr, FUniqueNetIdRepl const& DefaultValue, UObject* Parent, int32 PortFlags, UObject* ExportRootScope) const;
78
80 bool ImportTextItem(const TCHAR*& Buffer, int32 PortFlags, UObject* Parent, FOutputDevice* ErrorText);
81
83 ENGINE_API bool NetSerialize(FArchive& Ar, class UPackageMap* Map, bool& bOutSuccess);
84
85 void NetSerializeLoadV1Encoded(FArchive& Ar, const EUniqueIdEncodingFlags EncodingFlags, bool& bOutSuccess);
86 void NetSerializeLoadV1Unencoded(FArchive& Ar, const EUniqueIdEncodingFlags EncodingFlags, bool& bOutSuccess);
87 void NetSerializeLoadV2(FArchive& Ar, const EUniqueIdEncodingFlags EncodingFlags, bool& bOutSuccess);
88
90 ENGINE_API friend FArchive& operator<<( FArchive& Ar, FUniqueNetIdRepl& UniqueNetId);
91
93 bool Serialize(FArchive& Ar);
94
98 ENGINE_API void FromJson(const FString& InValue);
99
104 {
105 if (Value.IsValid())
106 {
107 return GetTypeHash(*Value);
108 }
109 else
110 {
111 // If we hit this, something went wrong and we have received an unhashable wrapper.
112 return INDEX_NONE;
113 }
114 }
115
116protected:
117
119 void UniqueIdFromString(FName Type, const FString& Contents);
121 void MakeReplicationData();
122 void MakeReplicationDataV1();
123 void MakeReplicationDataV2();
126 TArray<uint8> ReplicationBytes;
127
128 static bool ShouldExportTextItemAsQuotedString(const FString& NetIdStr);
129};
130
132template<>
134{
135 enum
136 {
137 // Can be copied via assignment operator
138 WithCopy = true,
139 // Requires custom serialization
140 WithSerializer = true,
141 // Requires custom net serialization
142 WithNetSerializer = true,
143 // Can share serialization state across connections
144 WithNetSharedSerialization = true,
145 // Requires custom Identical operator for rep notifies in PostReceivedBunch()
146 WithIdenticalViaEquality = true,
147 // Export contents of this struct as a string (displayall, obj dump, etc)
148 WithExportTextItem = true,
149 // Import string contents as a unique id
150 WithImportTextItem = true
151 };
152 static constexpr EPropertyObjectReferenceType WithSerializerObjectReferences = EPropertyObjectReferenceType::None;
153};
154
@ INDEX_NONE
Definition CoreMiscDefines.h:150
FPlatformTypes::TYPE_OF_NULLPTR TYPE_OF_NULLPTR
The type of the C++ nullptr keyword.
Definition Platform.h:1157
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
FArchive & operator<<(FArchive &Ar, FEnvQueryDebugProfileData::FStep &Data)
Definition EnvQueryTypes.cpp:489
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define USTRUCT(...)
Definition ObjectMacros.h:746
EPropertyObjectReferenceType
Definition ObjectMacros.h:533
#define GENERATED_USTRUCT_BODY(...)
Definition ObjectMacros.h:767
EUniqueIdEncodingFlags
Definition OnlineReplStructs.cpp:28
ENGINE_API void TestUniqueIdRepl(class UWorld *InWorld)
Definition OnlineReplStructs.cpp:640
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Archive.h:1208
Definition JsonValue.h:22
EJson Type
Definition JsonValue.h:134
Definition NameTypes.h:617
Definition OutputDevice.h:133
Definition CoreOnline.h:102
Definition Array.h:670
Definition SharedPointer.h:692
Definition SharedPointer.h:153
Definition CoreOnline.h:309
Definition Object.h:95
Definition CoreNet.h:191
Definition World.h:918
Definition OnlineReplStructs.h:26
FUniqueNetIdRepl(const FUniqueNetIdWrapper &InWrapper)
Definition OnlineReplStructs.h:42
friend uint32 GetTypeHash(FUniqueNetIdRepl const &Value)
Definition OnlineReplStructs.h:103
FUniqueNetIdRepl(const FUniqueNetIdPtr &InUniqueNetId)
Definition OnlineReplStructs.h:52
virtual void SetAccountId(const UE::Online::FAccountId &AccountId) override
Definition OnlineReplStructs.h:70
FUniqueNetIdRepl(const FUniqueNetId &InUniqueNetId)
Definition OnlineReplStructs.h:57
virtual void SetUniqueNetId(const FUniqueNetIdPtr &UniqueNetId) override
Definition OnlineReplStructs.h:64
FUniqueNetIdRepl(const FUniqueNetIdRepl &InWrapper)
Definition OnlineReplStructs.h:37
FUniqueNetIdRepl(const FUniqueNetIdRef &InUniqueNetId)
Definition OnlineReplStructs.h:47
virtual ~FUniqueNetIdRepl()
Definition OnlineReplStructs.h:62
FUniqueNetIdRepl(TYPE_OF_NULLPTR)
Definition OnlineReplStructs.h:33
Definition CoreOnline.h:504
virtual void SetAccountId(const UE::Online::FAccountId &AccountId)
Definition CoreOnline.h:623
virtual void SetUniqueNetId(const FUniqueNetIdPtr &InUniqueNetId)
Definition CoreOnline.h:618
Definition StructOpsTypeTraits.h:11
Definition StructOpsTypeTraits.h:46