UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
IrisObjectReferencePackageMap.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "UObject/CoreNet.h"
7#include "IrisObjectReferencePackageMap.generated.h"
8
9// Forward declarations
10class FNetworkGUID;
12
13namespace UE::Net
14{
15 class FIrisObjectReferencePackageMapWriteScope;
16 class FIrisObjectReferencePackageMapReadScope;
17
18 // In order to properly capture exported data when calling in to old style NetSerialize methods
19 // we need to capture and inject certain types.
39
40 // Scope that calls InitForRead on target PackageMap and invalidates set PackageMapExports on scope exit.
51
52 // Scope that calls InitForWrite on target PackageMap and invalidates set PackageMapExports on scope exit.
63}
64
70UCLASS(transient, MinimalAPI)
72{
73public:
75
76 // We override SerializeObject in order to be able to capture object references
77 virtual bool SerializeObject(FArchive& Ar, UClass* InClass, UObject*& Obj, FNetworkGUID* OutNetGUID) override;
78
79 // Override SerializeName in order to be able to capture name and serialize them with iris instead.
80 virtual bool SerializeName(FArchive& Ar, FName& InName);
81
82 virtual const UE::Net::FNetTokenResolveContext* GetNetTokenResolveContext() const override { return &NetTokenResolveContext; }
83
84 // Init for read, we need to set the exports from which we are going to read our data.
86
87 // Init for write, all captured exports will be serialized as in index and added to the PackageMapExports for later export using iris.
88 IRISCORE_API void InitForWrite(UE::Net::FIrisPackageMapExports* PackageMapExports);
89
90private:
93
94 UE::Net::FIrisPackageMapExports* PackageMapExportsForReading = nullptr;
95 UE::Net::FIrisPackageMapExports* PackageMapExportsForWriting = nullptr;
96 UE::Net::FNetTokenResolveContext NetTokenResolveContext;
97};
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define UCLASS(...)
Definition ObjectMacros.h:776
Definition Archive.h:1208
Definition NameTypes.h:617
Definition NetworkGuid.h:12
Definition Array.h:670
void Reset(SizeType NewSize=0)
Definition Array.h:2246
UE_REWRITE bool IsEmpty() const
Definition Array.h:1133
Definition ContainerAllocationPolicies.h:894
Definition Class.h:3793
Definition IrisObjectReferencePackageMap.h:42
UIrisObjectReferencePackageMap * GetPackageMap()
Definition IrisObjectReferencePackageMap.h:46
IRISCORE_API ~FIrisObjectReferencePackageMapReadScope()
Definition IrisObjectReferencePackageMap.cpp:128
Definition IrisObjectReferencePackageMap.h:54
IRISCORE_API ~FIrisObjectReferencePackageMapWriteScope()
Definition IrisObjectReferencePackageMap.cpp:155
UIrisObjectReferencePackageMap * GetPackageMap()
Definition IrisObjectReferencePackageMap.h:58
Definition NetToken.h:112
Definition IrisObjectReferencePackageMap.h:72
virtual const UE::Net::FNetTokenResolveContext * GetNetTokenResolveContext() const override
Definition IrisObjectReferencePackageMap.h:82
Definition Object.h:95
Definition CoreNet.h:191
Definition NetworkVersion.cpp:28
Definition IrisObjectReferencePackageMap.h:21
bool IsEmpty() const
Definition IrisObjectReferencePackageMap.h:25
FNameArray Names
Definition IrisObjectReferencePackageMap.h:37
TArray< FName, TInlineAllocator< 4 > > FNameArray
Definition IrisObjectReferencePackageMap.h:23
void Reset()
Definition IrisObjectReferencePackageMap.h:30
FObjectReferenceArray References
Definition IrisObjectReferencePackageMap.h:36
TArray< TObjectPtr< UObject >, TInlineAllocator< 4 > > FObjectReferenceArray
Definition IrisObjectReferencePackageMap.h:22