UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
NetSerializer.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
8#include <limits>
9
17#if 0
18// Example.h
20USTRUCT()
22{
24};
25
27
28// Example.cpp
30{
32 static constexpr uint32 Version = 0;
33
34 // The various traits are optional and need only be specified if different from the defaults listed below.
35
37 static constexpr bool bIsForwardingSerializer = false;
42 static constexpr bool bHasConnectionSpecificSerialization = false;
44 static constexpr bool bHasCustomNetReference = false;
46 static constexpr bool bHasDynamicState = false;
48 static constexpr bool bUseDefaultDelta = true;
49
54 typedef FSomeSourceType SourceType;
55
60 typedef FSomePodType QuantizedType;
61
63 typedef FNetSerializerConfig ConfigType;
64
66 inline static const ConfigType DefaultConfig;
67
68
70 static void Serialize(FNetSerializationContext&, const FNetSerializeArgs&);
72 static void Deserialize(FNetSerializationContext&, const FNetDeserializeArgs&);
73
79 static void SerializeDelta(FNetSerializationContext&, const FNetSerializeDeltaArgs&);
80
86 static void DeserializeDelta(FNetSerializationContext&, const FNetDeserializeDeltaArgs&);
87
94 static void Quantize(FNetSerializationContext&, const FNetQuantizeArgs&);
95
101 static void Dequantize(FNetSerializationContext&, const FNetDequantizeArgs&);
102
104 static bool IsEqual(FNetSerializationContext&, const FNetIsEqualArgs&);
105
107 static bool Validate(FNetSerializationContext&, const FNetValidateArgs&);
108
110 static void CloneDynamicState(FNetSerializationContext&, const FNetCloneDynamicStateArgs&);
111
113 static void FreeDynamicState(FNetSerializationContext&, const FNetFreeDynamicStateArgs&);
114
116 static void CollectNetReferences(FNetSerializationContext&, const FNetCollectReferencesArgs&);
117
119 static void Apply(FNetSerializationContext&, const FNetApplyArgs&);
120};
122
128#endif
129
130namespace UE::Net
131{
132 class FNetBitArrayView;
133 class FNetMemoryContext;
134}
135
136namespace UE::Net
137{
138
141
149
163
177
188
198
212
227
250
266
283
297
315
330
340
370
401
402}
403
405
406namespace UE::Net
407{
408
409template<typename NetSerializerImpl>
411{
412public:
413 static constexpr FNetSerializer ConstructNetSerializer(const TCHAR* Name)
414 {
416 Builder.Validate();
417
418 FNetSerializer Serializer = {};
419 Serializer.Version = Builder.GetVersion();
420 Serializer.Traits = Builder.GetTraits();
421
422 Serializer.Serialize = Builder.GetSerializeFunction();
423 Serializer.Deserialize = Builder.GetDeserializeFunction();
424 Serializer.SerializeDelta = Builder.GetSerializeDeltaFunction();
425 Serializer.DeserializeDelta = Builder.GetDeserializeDeltaFunction();
426 Serializer.Quantize = Builder.GetQuantizeFunction();
427 Serializer.Dequantize = Builder.GetDequantizeFunction();
428 Serializer.IsEqual = Builder.GetIsEqualFunction();
429 Serializer.Validate = Builder.GetValidateFunction();
430 Serializer.CloneDynamicState = Builder.GetCloneDynamicStateFunction();
431 Serializer.FreeDynamicState = Builder.GetFreeDynamicStateFunction();
433 Serializer.Apply = Builder.GetApplyFunction();
434
435 Serializer.DefaultConfig = Builder.GetDefaultConfig();
436
437 static_assert(Builder.GetQuantizedTypeSize() <= std::numeric_limits<uint16>::max(), "");
438 Serializer.QuantizedTypeSize = static_cast<uint16>(Builder.GetQuantizedTypeSize());
439 static_assert(Builder.GetQuantizedTypeAlignment() <= std::numeric_limits<uint16>::max(), "");
440 Serializer.QuantizedTypeAlignment = static_cast<uint16>(Builder.GetQuantizedTypeAlignment());
441
442 static_assert(Builder.GetConfigTypeSize() <= std::numeric_limits<uint16>::max(), "");
443 Serializer.ConfigTypeSize = static_cast<uint16>(Builder.GetConfigTypeSize());
444 static_assert(Builder.GetConfigTypeAlignment() <= std::numeric_limits<uint16>::max(), "");
445 Serializer.ConfigTypeAlignment = static_cast<uint16>(Builder.GetConfigTypeAlignment());
446
447 Serializer.Name = Name;
448 return Serializer;
449 }
450};
451
452}
453
455#define UE_NET_DECLARE_SERIALIZER(SerializerName, Api) struct Api SerializerName ## NetSerializerInfo \
456{ \
457 static const UE::Net::FNetSerializer Serializer; \
458 static uint32 GetQuantizedTypeSize(); \
459 static uint32 GetQuantizedTypeAlignment(); \
460 static const FNetSerializerConfig* GetDefaultConfig(); \
461};
462
464#define UE_NET_IMPLEMENT_SERIALIZER(SerializerName) const UE::Net::FNetSerializer SerializerName ## NetSerializerInfo::Serializer = UE::Net::TNetSerializer<SerializerName>::ConstructNetSerializer(TEXT(#SerializerName)); \
465 uint32 SerializerName ## NetSerializerInfo::GetQuantizedTypeSize() { return UE::Net::TNetSerializerBuilder<SerializerName>::GetQuantizedTypeSize(); }; \
466 uint32 SerializerName ## NetSerializerInfo::GetQuantizedTypeAlignment() { return UE::Net::TNetSerializerBuilder<SerializerName>::GetQuantizedTypeAlignment(); }; \
467 const FNetSerializerConfig* SerializerName ## NetSerializerInfo::GetDefaultConfig() { return UE::Net::TNetSerializerBuilder<SerializerName>::GetDefaultConfig(); };
468
470#define UE_NET_GET_SERIALIZER(SerializerName) static_cast<const UE::Net::FNetSerializer&>(SerializerName ## NetSerializerInfo::Serializer)
472#define UE_NET_GET_SERIALIZER_INTERNAL_TYPE_SIZE(SerializerName) SerializerName ## NetSerializerInfo::GetQuantizedTypeSize()
474#define UE_NET_GET_SERIALIZER_INTERNAL_TYPE_ALIGNMENT(SerializerName) SerializerName ## NetSerializerInfo::GetQuantizedTypeAlignment()
476#define UE_NET_GET_SERIALIZER_DEFAULT_CONFIG(SerializerName) SerializerName ## NetSerializerInfo::GetDefaultConfig()
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
FPlatformTypes::UPTRINT UPTRINT
An unsigned integer the same size as a pointer.
Definition Platform.h:1146
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define ENUM_CLASS_FLAGS(Enum)
Definition EnumClassFlags.h:6
bool IsEqual(TRangeBound< FFrameNumber > A, TRangeBound< FFrameNumber > B)
Definition MovieSceneTransformTests.cpp:15
#define UE_NET_IMPLEMENT_SERIALIZER(SerializerName)
Definition NetSerializer.h:464
#define UE_NET_DECLARE_SERIALIZER(SerializerName, Api)
Definition NetSerializer.h:455
const bool
Definition NetworkReplayStreaming.h:178
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define USTRUCT(...)
Definition ObjectMacros.h:746
uint16_t uint16
Definition binka_ue_file_header.h:7
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition NetSerializationContext.h:31
Definition NetSerializerBuilder.inl:112
static NetIsEqualFunction GetIsEqualFunction()
Definition NetSerializerBuilder.inl:381
static constexpr uint32 GetConfigTypeSize()
Definition NetSerializerBuilder.inl:428
static NetQuantizeFunction GetQuantizeFunction()
Definition NetSerializerBuilder.inl:367
static NetCollectNetReferencesFunction GetCollectNetReferencesFunction()
Definition NetSerializerBuilder.inl:394
static NetDeserializeDeltaFunction GetDeserializeDeltaFunction(const T *=nullptr)
Definition NetSerializerBuilder.inl:354
static const FNetSerializerConfig * GetDefaultConfig()
Definition NetSerializerBuilder.inl:421
static constexpr uint32 GetQuantizedTypeAlignment()
Definition NetSerializerBuilder.inl:449
static void Validate()
Definition NetSerializerBuilder.inl:470
static NetSerializeDeltaFunction GetSerializeDeltaFunction()
Definition NetSerializerBuilder.inl:341
static NetValidateFunction GetValidateFunction()
Definition NetSerializerBuilder.inl:388
static NetSerializeFunction GetSerializeFunction()
Definition NetSerializerBuilder.inl:327
static constexpr ENetSerializerTraits GetTraits()
Definition NetSerializerBuilder.inl:457
static NetDeserializeFunction GetDeserializeFunction()
Definition NetSerializerBuilder.inl:333
static constexpr uint32 GetVersion()
Definition NetSerializerBuilder.inl:285
static NetFreeDynamicStateFunction GetFreeDynamicStateFunction()
Definition NetSerializerBuilder.inl:414
static constexpr uint32 GetQuantizedTypeSize()
Definition NetSerializerBuilder.inl:440
static NetCloneDynamicStateFunction GetCloneDynamicStateFunction()
Definition NetSerializerBuilder.inl:407
static NetDequantizeFunction GetDequantizeFunction()
Definition NetSerializerBuilder.inl:374
static constexpr uint32 GetConfigTypeAlignment()
Definition NetSerializerBuilder.inl:434
static NetApplyFunction GetApplyFunction()
Definition NetSerializerBuilder.inl:400
Definition NetSerializer.h:411
static constexpr FNetSerializer ConstructNetSerializer(const TCHAR *Name)
Definition NetSerializer.h:413
@ Apply
Definition NavigationModifier.h:49
Version
Definition NNEModelData.cpp:15
@ None
Definition ReplicationDataStreamDebug.h:25
Definition NetworkVersion.cpp:28
void(* NetQuantizeFunction)(FNetSerializationContext &, const FNetQuantizeArgs &)
Definition NetSerializer.h:249
const FNetSerializerConfig * NetSerializerConfigParam
Definition NetSerializer.h:140
void(* NetCloneDynamicStateFunction)(FNetSerializationContext &, const FNetCloneDynamicStateArgs &)
Definition NetSerializer.h:314
void(* NetSerializeDeltaFunction)(FNetSerializationContext &, const FNetSerializeDeltaArgs &)
Definition NetSerializer.h:211
void(* NetDequantizeFunction)(FNetSerializationContext &, const FNetDequantizeArgs &)
Definition NetSerializer.h:265
void(* NetFreeDynamicStateFunction)(FNetSerializationContext &, const FNetFreeDynamicStateArgs &)
Definition NetSerializer.h:329
bool(* NetValidateFunction)(FNetSerializationContext &, const FNetValidateArgs &)
Definition NetSerializer.h:296
ENetSerializerTraits
Definition NetSerializer.h:347
bool(* NetIsEqualFunction)(FNetSerializationContext &, const FNetIsEqualArgs &)
Definition NetSerializer.h:282
void(* NetCollectNetReferencesFunction)(FNetSerializationContext &, const FNetCollectReferencesArgs &)
Definition NetSerializer.h:176
UPTRINT NetSerializerValuePointer
Definition NetSerializer.h:139
void(* NetDeserializeFunction)(FNetSerializationContext &, const FNetDeserializeArgs &)
Definition NetSerializer.h:197
void(* NetApplyFunction)(FNetSerializationContext &, const FNetApplyArgs &)
Definition NetSerializer.h:339
void(* NetDeserializeDeltaFunction)(FNetSerializationContext &, const FNetDeserializeDeltaArgs &)
Definition NetSerializer.h:226
void(* NetSerializeFunction)(FNetSerializationContext &, const FNetSerializeArgs &)
Definition NetSerializer.h:187
void Quantize(double &InOutValue)
Definition ModuleInput.cpp:37
Definition NetSerializerConfig.h:17
Definition NetSerializer.h:333
NetSerializerValuePointer Source
Definition NetSerializer.h:335
NetSerializerValuePointer Target
Definition NetSerializer.h:337
Definition NetSerializer.h:308
NetSerializerValuePointer Target
Definition NetSerializer.h:312
NetSerializerValuePointer Source
Definition NetSerializer.h:310
Definition NetSerializer.h:170
NetSerializerValuePointer Source
Definition NetSerializer.h:172
NetSerializerValuePointer Collector
Definition NetSerializer.h:174
Definition NetSerializer.h:259
NetSerializerValuePointer Source
Definition NetSerializer.h:261
NetSerializerValuePointer Target
Definition NetSerializer.h:263
Definition NetSerializer.h:194
NetSerializerValuePointer Target
Definition NetSerializer.h:195
Definition NetSerializer.h:222
NetSerializerValuePointer Prev
Definition NetSerializer.h:224
Definition NetSerializer.h:325
NetSerializerValuePointer Source
Definition NetSerializer.h:327
Definition NetSerializer.h:274
NetSerializerValuePointer Source1
Definition NetSerializer.h:278
NetSerializerValuePointer Source0
Definition NetSerializer.h:276
bool bStateIsQuantized
Definition NetSerializer.h:280
Definition NetSerializer.h:243
NetSerializerValuePointer Target
Definition NetSerializer.h:247
NetSerializerValuePointer Source
Definition NetSerializer.h:245
Definition NetSerializer.h:183
NetSerializerValuePointer Source
Definition NetSerializer.h:185
Definition NetSerializer.h:207
NetSerializerValuePointer Prev
Definition NetSerializer.h:209
Definition NetSerializer.h:155
FNetSerializerChangeMaskParam ChangeMaskInfo
Definition NetSerializer.h:159
NetSerializerConfigParam NetSerializerConfig
Definition NetSerializer.h:157
uint32 Version
Definition NetSerializer.h:161
Definition NetSerializer.h:143
uint32 BitOffset
Definition NetSerializer.h:145
uint32 BitCount
Definition NetSerializer.h:147
Definition NetSerializer.h:377
const TCHAR * Name
Definition NetSerializer.h:399
NetApplyFunction Apply
Definition NetSerializer.h:392
NetCollectNetReferencesFunction CollectNetReferences
Definition NetSerializer.h:391
NetValidateFunction Validate
Definition NetSerializer.h:388
uint16 ConfigTypeSize
Definition NetSerializer.h:396
NetQuantizeFunction Quantize
Definition NetSerializer.h:385
NetDeserializeDeltaFunction DeserializeDelta
Definition NetSerializer.h:384
NetSerializeDeltaFunction SerializeDelta
Definition NetSerializer.h:383
const FNetSerializerConfig * DefaultConfig
Definition NetSerializer.h:393
NetIsEqualFunction IsEqual
Definition NetSerializer.h:387
uint16 QuantizedTypeSize
Definition NetSerializer.h:394
ENetSerializerTraits Traits
Definition NetSerializer.h:379
NetDequantizeFunction Dequantize
Definition NetSerializer.h:386
uint16 ConfigTypeAlignment
Definition NetSerializer.h:397
NetFreeDynamicStateFunction FreeDynamicState
Definition NetSerializer.h:390
NetDeserializeFunction Deserialize
Definition NetSerializer.h:382
uint16 QuantizedTypeAlignment
Definition NetSerializer.h:395
uint32 Version
Definition NetSerializer.h:378
NetSerializeFunction Serialize
Definition NetSerializer.h:381
NetCloneDynamicStateFunction CloneDynamicState
Definition NetSerializer.h:389
Definition NetSerializer.h:292
NetSerializerValuePointer Source
Definition NetSerializer.h:294