UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
RemoteObjectTransfer.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreTypes.h"
8#include "Async/Async.h"
10
11namespace UE::Net
12{
13 struct FRemoteObjectReferenceNetSerializer;
14}
15
17
25
30{
34
35 inline int32 GetNumBytes() const
36 {
37 int32 Num = 0;
38 for (const FRemoteObjectBytes& Chunk : Bytes)
39 {
40 Num += Chunk.Bytes.Num();
41 }
42 return Num;
43 }
44};
45
47{
57
65
72
79
87
96
101
105 UE_DEPRECATED(5.6, "RemoteObjectIdToObjectPtr is deprecated use FObjectPtr(FRemoteObjectId) instead.")
107 {
108#if UE_WITH_REMOTE_OBJECT_HANDLE
109 return FObjectPtr(UE::CoreUObject::Private::FRemoteObjectHandlePrivate::FromIdNoResolve(RemoteId));
110#else
111 return FObjectPtr();
112#endif
113 }
114
121
126
132
134
136
139
142
144 extern COREUOBJECT_API TDelegate<void(FRemoteWorkPriority /*RequestPriority*/, FRemoteObjectId /*ObjectId*/, FRemoteServerId /*LastKnownResidentServerId*/, FRemoteServerId /*DestinationServerId*/)> RequestRemoteObjectDelegate;
145
147 extern COREUOBJECT_API TMulticastDelegate<void(const FRemoteObjectData& /*ObjectData*/, const FUObjectMigrationContext& /*MigrationContext*/)> OnObjectDataReceivedDelegate;
148
150 extern COREUOBJECT_API TMulticastDelegate<void(const TArray<UObject*>& /*MigratedObjects*/, const FUObjectMigrationContext& /*MigrationContext*/)> OnObjectsReceivedDelegate;
151
153 extern COREUOBJECT_API TMulticastDelegate<void(const FRemoteObjectData& /*ObjectData*/, const FUObjectMigrationContext& /*MigrationContext*/)> OnObjectDataSentDelegate;
154
159 extern COREUOBJECT_API TMulticastDelegate<void(const TSet<UObject*>& /*MigratedObjects*/, const FUObjectMigrationContext& /*MigrationContext*/)> OnObjectsSentDelegate;
160
163
166
169
170} // namespace UE::RemoveObject::Transfer
171
173{
174private:
176 FRemoteObjectId ObjectId;
178 FRemoteServerId ServerId;
179
180public:
182
185
187
188 template <typename T>
190 : FRemoteObjectReference(FObjectPtr(Ptr.GetHandle()))
191 {
192 }
193
195
196 template <typename T>
199 {
200 }
201
203 {
204 return ObjectId == Other.ObjectId;
205 }
206
210
216 {
217 return ServerId;
218 }
223
225 COREUOBJECT_API bool NetSerialize(FArchive& Ar, class UPackageMap* Map, bool& bOutSuccess);
226
228
229private:
232};
233
234template<>
236{
237 enum
238 {
241 };
242};
243
245{
246 Ref.Serialize(Ar);
247 return Ar;
248}
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
#define UE_FORCEINLINE_HINT
Definition Platform.h:723
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
@ Num
Definition MetalRHIPrivate.h:234
FArchive & operator<<(FArchive &Ar, FRemoteObjectReference &Ref)
Definition RemoteObjectTransfer.h:244
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Archive.h:1208
Definition Array.h:670
Definition DelegateSignatureImpl.inl:310
Definition DelegateSignatureImpl.inl:1029
Definition Object.h:95
Definition CoreNet.h:191
Definition NetworkVersion.cpp:28
bool IsRemote(FRemoteObjectId ObjectId)
Definition RemoteObject.cpp:535
Definition RemoteObjectPrivate.h:115
void MigrateObjectToRemoteServer(FRemoteObjectId ObjectId, FRemoteServerId DestinationServerId)
Definition RemoteObjectTransfer.cpp:1164
void InitRemoteObjectTransfer()
Definition RemoteObjectTransfer.cpp:1198
void RegisterRemoteObjectId(FRemoteObjectId Id, FRemoteServerId ResidentServerId)
Definition RemoteObjectTransfer.cpp:1146
const FRemoteServerId DatabaseId(ERemoteServerIdConstants::Database)
Definition RemoteObjectTransfer.h:133
void TransferObjectOwnershipToRemoteServer(UObject *Object, FRemoteServerId DestinationServerId)
Definition RemoteObjectTransfer.cpp:1059
COREUOBJECT_API TDelegate< void(const FMigrateSendParams &)> RemoteObjectTransferDelegate
void MigrateObjectFromRemoteServer(FRemoteObjectId ObjectId, FRemoteServerId CurrentOwnerServerId, UObject *DestinationOuter)
Definition RemoteObjectTransfer.cpp:959
void MigrateObjectToRemoteServerWithExplicitPriority(FRemoteWorkPriority RequestPriority, FRemoteObjectId ObjectId, FRemoteServerId DestinationServerId)
Definition RemoteObjectTransfer.cpp:1170
void OnObjectDataDenied(FRemoteObjectId ObjectId, FRemoteServerId RemoteServerId)
Definition RemoteObjectTransfer.cpp:1192
COREUOBJECT_API TMulticastDelegate< void(const FRemoteObjectData &, const FUObjectMigrationContext &)> OnObjectDataSentDelegate
COREUOBJECT_API TDelegate< void(const FMigrateSendParams &)> StoreRemoteObjectDataDelegate
COREUOBJECT_API TMulticastDelegate< void(const TSet< UObject * > &, const FUObjectMigrationContext &)> OnObjectsSentDelegate
COREUOBJECT_API TMulticastDelegate< void(FRemoteTransactionId, FRemoteObjectId)> OnObjectTouchedDelegate
void RegisterSharedObject(UObject *Object)
Definition RemoteObjectTransfer.cpp:1141
UE_FORCEINLINE_HINT FObjectPtr RemoteObjectIdToObjectPtr(FRemoteObjectId RemoteId)
Definition RemoteObjectTransfer.h:106
void TouchResidentObject(UObject *Object)
Definition RemoteObjectTransfer.cpp:1024
COREUOBJECT_API TDelegate< void(FRemoteObjectId, FRemoteServerId)> RemoteObjectDeniedTransferDelegate
COREUOBJECT_API TDelegate< void(FRemoteWorkPriority, FRemoteObjectId, FRemoteServerId, FRemoteServerId)> RequestRemoteObjectDelegate
COREUOBJECT_API TMulticastDelegate< void(const FRemoteObjectData &, const FUObjectMigrationContext &)> OnObjectDataReceivedDelegate
COREUOBJECT_API TMulticastDelegate< void(const TArray< UObject * > &, const FUObjectMigrationContext &)> OnObjectsReceivedDelegate
COREUOBJECT_API TDelegate< void(const FUObjectMigrationContext &)> RestoreRemoteObjectDataDelegate
void OnObjectDataReceived(FRemoteServerId OwnerServerId, FRemoteServerId PhysicsId, uint32 PhysicsLocalIslandId, FRemoteObjectId ObjectId, FRemoteServerId RemoteServerId, FRemoteObjectData &Data)
Definition RemoteObjectTransfer.cpp:1175
void GetAllBorrowedObjects(TArray< FRemoteObjectId > &OutBorrowedObjectIds)
Definition RemoteObjectTransfer.cpp:1151
Definition ObjectPtr.h:55
Definition RemoteObjectTransfer.h:22
TArray< uint8 > Bytes
Definition RemoteObjectTransfer.h:23
Definition RemoteObjectTransfer.h:30
FRemoteObjectTables Tables
Definition RemoteObjectTransfer.h:31
TArray< FPackedRemoteObjectPathName > PathNames
Definition RemoteObjectTransfer.h:32
int32 GetNumBytes() const
Definition RemoteObjectTransfer.h:35
TArray< FRemoteObjectBytes > Bytes
Definition RemoteObjectTransfer.h:33
Definition RemoteObjectTypes.h:212
Definition RemoteObjectPathName.h:73
Definition RemoteObjectTransfer.h:173
COREUOBJECT_API bool NetSerialize(FArchive &Ar, class UPackageMap *Map, bool &bOutSuccess)
Definition RemoteObjectTransfer.cpp:1358
FRemoteObjectReference(const FRemoteObjectReference &)=default
COREUOBJECT_API FWeakObjectPtr ToWeakPtr() const
Definition RemoteObjectTransfer.cpp:1344
FRemoteObjectReference()=default
friend FArchive & operator<<(FArchive &Ar, FRemoteObjectReference &Ref)
Definition RemoteObjectTransfer.h:244
UE_FORCEINLINE_HINT bool operator==(const FRemoteObjectReference &Other) const
Definition RemoteObjectTransfer.h:202
UE_FORCEINLINE_HINT FRemoteServerId GetSharingServerId() const
Definition RemoteObjectTransfer.h:215
FRemoteObjectReference & operator=(const FRemoteObjectReference &)=default
FRemoteObjectReference(const TWeakObjectPtr< T > &WeakPtr)
Definition RemoteObjectTransfer.h:197
UE_FORCEINLINE_HINT FRemoteObjectId GetRemoteId() const
Definition RemoteObjectTransfer.h:211
COREUOBJECT_API UObject * Resolve() const
Definition RemoteObjectTransfer.cpp:1353
FRemoteObjectReference(const TObjectPtr< T > &Ptr)
Definition RemoteObjectTransfer.h:189
COREUOBJECT_API FObjectPtr ToObjectPtr() const
Definition RemoteObjectTransfer.cpp:1339
UE_FORCEINLINE_HINT bool IsRemote() const
Definition RemoteObjectTransfer.h:219
Definition RemoteObjectPathName.h:11
Definition RemoteObjectTypes.h:49
Definition RemoteExecutor.h:14
Definition RemoteExecutor.h:53
Definition UObjectMigrationContext.h:62
Definition WeakObjectPtr.h:49
Definition ObjectPtr.h:488
Definition StructOpsTypeTraits.h:11
@ WithNetSerializer
Definition StructOpsTypeTraits.h:26
@ WithSerializer
Definition StructOpsTypeTraits.h:23
Definition StructOpsTypeTraits.h:46
Definition WeakObjectPtrTemplates.h:25
Definition RemoteObjectReferenceNetSerializer.cpp:16
Definition RemoteObjectTransfer.h:50
FRemoteObjectData ObjectData
Definition RemoteObjectTransfer.h:55
FUObjectMigrationContext & MigrationContext
Definition RemoteObjectTransfer.h:52