UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
NetTokenStructDefines.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "UObject/Class.h"
6
7namespace UE::Net
8{
9
10template<typename T>
20
21};
22
23// Optional, declares a default Native NetSerializer StructOpts and IRIS NetSerializer methods that serializes the struct as a NetToken by default.
24#define UE_NET_DECLARE_NAMED_NETTOKEN_STRUCT_SERIALIZERS(NAME, API) \
25 template<> struct TStructOpsTypeTraits<F##NAME> : public UE::Net::TNetTokenStructOpsTypeTraits<F##NAME> {}; \
26 namespace UE::Net \
27 { \
28 UE_NET_DECLARE_SERIALIZER(F##NAME##NetSerializer, API);\
29 }
30
31// Optional, declares a default native NetSerializer method, GetTokenStoreName method and Equality operators (for equality via identity) for a NetToken Struct type
32#define UE_NET_NETTOKEN_GENERATED_BODY(NAME, API) \
33 inline static FName TokenStoreName = TEXT( PREPROCESSOR_TO_STRING(F##NAME) );\
34 static FName GetTokenStoreName() \
35 { \
36 return TokenStoreName; \
37 } \
38 API bool NetSerialize(FArchive& Ar, UPackageMap* Map, bool& bOutSuccess); \
39 API bool operator==(const F##NAME& Other) const; \
40 API bool operator!=(const F##NAME& Other) const;
41
42// Optional, implements a default NetSerializer method and Native IRIS NetSerializer methods that works for NetToken types by default
43#define UE_NET_IMPLEMENT_NAMED_NETTOKEN_STRUCT_SERIALIZERS(NAME) \
44 bool F##NAME::NetSerialize(FArchive& Ar, UPackageMap* Map, bool& bOutSuccess) \
45 { \
46 bOutSuccess = bOutSuccess && UE::Net::TStructNetTokenDataStoreHelper<F##NAME>::NetSerializeAndExportToken(Ar, Map, *static_cast<F##NAME*>(this)); \
47 return true; \
48 } \
49 bool F##NAME::operator==(const F##NAME& Other) const \
50 { \
51 return GetUniqueKey() == Other.GetUniqueKey(); \
52 }; \
53 bool F##NAME::operator!=(const F##NAME& Other) const \
54 { \
55 return GetUniqueKey() != Other.GetUniqueKey(); \
56 } \
57 namespace UE::Net { \
58 struct F##NAME##NetSerializer : public TStructAsNetTokenNetSerializerImpl<F##NAME> { \
59 static const uint32 Version = 0; \
60 static inline const ConfigType DefaultConfig = ConfigType(); \
61 };\
62 UE_NET_IMPLEMENT_SERIALIZER(F##NAME##NetSerializer); \
63 UE_NET_IMPLEMENT_FORWARDING_NETSERIALIZER_AND_REGISTRY_DELEGATES(NAME, F##NAME##NetSerializer); \
64 }
Definition NetworkVersion.cpp:28
Definition StructOpsTypeTraits.h:11
Definition NetTokenStructDefines.h:12
@ WithNetSharedSerialization
Definition NetTokenStructDefines.h:17
@ WithIdenticalViaEquality
Definition NetTokenStructDefines.h:16
@ WithNetSerializer
Definition NetTokenStructDefines.h:15