UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
PolymorphicNetSerializer.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "NetSerializer.h"
8#include "Containers/Array.h"
9
10#include "PolymorphicNetSerializer.generated.h"
11
12class UScriptStruct;
13namespace UE::Net
14{
15 struct FReplicationStateDescriptor;
16}
17
18namespace UE::Net
19{
20
22{
26
32
34 inline const uint32 GetTypeIndex(const UScriptStruct* ScriptStruct) const;
35 inline const FTypeInfo* GetTypeInfo(uint32 TypeIndex) const;
37
38private:
39 TArray<FTypeInfo> RegisteredTypes;
41 int32 EstimatedScriptStructCount = 4096;
42};
43
44}
45
46USTRUCT()
48{
50
51 UE::Net::FPolymorphicNetSerializerScriptStructCache RegisteredTypes;
52};
53
54USTRUCT()
59
60namespace UE::Net
61{
62
64{
65 static_assert(InvalidTypeIndex == 0U, "Expected InvalidTypeIndex to be 0");
66 if ((TypeIndex - 1U) >= static_cast<uint32>(RegisteredTypes.Num()))
67 {
68 return nullptr;
69 }
70 return &RegisteredTypes.GetData()[TypeIndex - 1U];
71}
72
74{
75 if (ScriptStruct)
76 {
77 const int32 ArrayIndex = RegisteredTypes.IndexOfByPredicate([&ScriptStruct](const FTypeInfo& TypeInfo) { return TypeInfo.ScriptStruct == ScriptStruct; } );
78 if (ArrayIndex != INDEX_NONE)
79 {
80 return static_cast<uint32>(ArrayIndex + 1);
81 }
82 }
83
84 return InvalidTypeIndex;
85}
86
87}
@ INDEX_NONE
Definition CoreMiscDefines.h:150
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
constexpr bool EnumHasAnyFlags(Enum Flags, Enum Contains)
Definition EnumClassFlags.h:35
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define USTRUCT(...)
Definition ObjectMacros.h:746
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Array.h:670
Definition RefCounting.h:454
Definition Class.h:1720
Definition NetworkVersion.cpp:28
EReplicationStateTraits
Definition ReplicationStateDescriptor.h:163
Definition AdvancedWidgetsModule.cpp:13
Definition NetSerializerConfig.h:17
Definition PolymorphicNetSerializer.h:56
Definition PolymorphicNetSerializer.h:48
const UScriptStruct * ScriptStruct
Definition PolymorphicNetSerializer.h:29
TRefCountPtr< const FReplicationStateDescriptor > Descriptor
Definition PolymorphicNetSerializer.h:30
Definition PolymorphicNetSerializer.h:22
@ MaxRegisteredTypeCount
Definition PolymorphicNetSerializer.h:24
@ InvalidTypeIndex
Definition PolymorphicNetSerializer.h:25
bool CanHaveNetReferences() const
Definition PolymorphicNetSerializer.h:36
const FTypeInfo * GetTypeInfo(uint32 TypeIndex) const
Definition PolymorphicNetSerializer.h:63
@ RegisteredTypeBits
Definition PolymorphicNetSerializer.h:23
IRISCORE_API void InitForType(const UScriptStruct *InScriptStruct)
Definition PolymorphicNetSerializer.cpp:20
const uint32 GetTypeIndex(const UScriptStruct *ScriptStruct) const
Definition PolymorphicNetSerializer.h:73