UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
NetIDVariant.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
6#include "Misc/NetworkGuid.h"
7#include "Misc/TVariant.h"
9
10class FArchive;
11
12namespace UE::Net
13{
14
20{
21public:
23 struct FEmptyID {};
24
26
28 FNetIDVariant() = default;
29
30 explicit ENGINE_API FNetIDVariant(FNetworkGUID NetGUID);
31 explicit ENGINE_API FNetIDVariant(FNetRefHandle NetRefHandle);
32
35
37 bool ENGINE_API IsValid() const;
38
41 {
42 return Variant;
43 }
44
46 bool ENGINE_API operator==(const FNetIDVariant& RHS) const;
47
49 ENGINE_API FString ToString() const;
50
51private:
52 FVariantType Variant;
53};
54
56{
57 // Assuming the internal index of TVariant is uint8 (which it is) even though the public API uses SIZE_T
58 uint8 TypeIndex = static_cast<uint8>(NetID.GetVariant().GetIndex());
59
60 uint32 IDHash = 0;
61 if (NetID.GetVariant().IsType<FNetworkGUID>())
62 {
63 IDHash = GetTypeHash(NetID.GetVariant().Get<FNetworkGUID>());
64 }
65 else if (NetID.GetVariant().IsType<FNetRefHandle>())
66 {
67 IDHash = GetTypeHash(NetID.GetVariant().Get<FNetRefHandle>());
68 }
69
70 return HashCombineFast(TypeIndex, IDHash);
71}
72
73}
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
constexpr uint32 HashCombineFast(uint32 A, uint32 B)
Definition TypeHash.h:74
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 NetworkGuid.h:12
Definition NetIDVariant.h:20
ENGINE_API FString ToString() const
Definition NetIDVariant.cpp:106
friend ENGINE_API FArchive & operator<<(FArchive &Ar, FNetIDVariant &NetID)
Definition NetIDVariant.cpp:55
bool ENGINE_API operator==(const FNetIDVariant &RHS) const
Definition NetIDVariant.cpp:19
FVariantType GetVariant() const
Definition NetIDVariant.h:40
bool ENGINE_API IsValid() const
Definition NetIDVariant.cpp:38
TVariant< FEmptyID, FNetworkGUID, FNetRefHandle > FVariantType
Definition NetIDVariant.h:25
Definition NetRefHandle.h:25
Definition NetworkVersion.cpp:28
uint32 GetTypeHash(const FNetIDVariant &NetID)
Definition NetIDVariant.h:55
Definition NetIDVariant.h:23