UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
NetRefHandleManager.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "Containers/Array.h"
7#include "Containers/Map.h"
8
9#include "CoreTypes.h"
10
11#include "Delegates/Delegate.h"
12
14
15#include "Iris/IrisConstants.h"
16
22
25
26#include "UObject/ObjectPtr.h"
27
29namespace UE::Net
30{
31 struct FReplicationProtocol;
32 struct FReplicationInstanceProtocol;
33
34 namespace Private
35 {
36 class FReplicationProtocolManager;
37
38 struct FCreateNetObjectParams;
39 }
40}
41
42namespace UE::Net::Private
43{
44
46
60
69
70// Internal class to manage NetHandles and their internal data
72{
73public:
74 // We will never assign InvalidInternalIndex
75 enum { InvalidInternalIndex = 0U };
76
77 // We need to store some internal data for Replicated objects
78 // $TODO: This should be split up into separate array according to usage patterns, it is getting a bit too large
132
133 // We want to handle both actual Networked and "network addressable" handles in the same way
134 // As we expect the number of FNetRefHandles to be much greater than the actual number of Replicated Objects we
135 // use a map to map from Handle to InternalIndex, only Replicated Objects will ever be assigned an InternalNetHandle
138
139public:
140
150
152
153 void Init(const FInitParams& InitParams);
154 void Deinit();
155
157 void OnPreSendUpdate();
158
160 void OnPostSendUpdate();
161
162 // Return true if this is a scopable index
163 bool IsScopableIndex(FInternalNetRefIndex InternalIndex) const { return GlobalScopableInternalIndices.GetBit(InternalIndex); }
164
165 static FNetRefHandle MakeNetRefHandle(uint64 Id, uint32 ReplicationSystemId);
167
168 // Returns a valid handle if the wanted handle can be allocated
169 FNetRefHandle AllocateNetRefHandle(bool bIsStatic);
170
171 // Create local Net Object
173
174 // Create NetObject on request from remote
176
177 // Attach Instance protocol to handle
178 // Instance can be null, we only track the Instance for legacy support
180
181 // Used when we want to detach the instance protocol due to async destroy
183
186
187 // Creates a DestructionInfo Handle which is used to replicate persistently destroyed static objects when late joining or streaming in levels with static objects that already has been destroyed
188 // Returns a new handle used to replicate the destruction info, and adds a cross-reference to the original handle being destroyed if that still exists
189 // Handle is a reference to an already replicated Handle that is about to be destroyed
191
193
194 // Mark object as no longer scopable, object will be removed from scope for all connections
196
197 TArrayView<const FInternalNetRefIndex> GetObjectsPendingDestroy() const { return MakeArrayView(PendingDestroyInternalIndices); }
199
202
203 inline const FReplicatedObjectData& GetReplicatedObjectData(FInternalNetRefIndex InternalIndex) const;
204
207 inline const TNetChunkedArray<uint8*>& GetReplicatedObjectStateBuffers() const { return ReplicatedObjectStateBuffers; }
208
210
213
215 inline bool IsLocal(FInternalNetRefIndex InternalIndex) const;
216
218 inline bool IsLocalNetRefHandle(FNetRefHandle Handle) const;
219
221 inline bool IsRemoteNetRefHandle(FNetRefHandle Handle) const;
222
225
226 // Get Handle from internal index
228
229 // Get internal index from handle
231
232 // Get internal index from NetHandle
234
236 const FNetBitArrayView GetGlobalScopableInternalIndices() const { return MakeNetBitArrayView(GlobalScopableInternalIndices); }
237
239 const FNetBitArrayView GetCurrentFrameScopableInternalIndices() const { check(ScopeFrameData.bIsValid); return MakeNetBitArrayView(ScopeFrameData.CurrentFrameScopableInternalIndices); }
240
242 const FNetBitArrayView GetPrevFrameScopableInternalIndices() const { check(ScopeFrameData.bIsValid); return MakeNetBitArrayView(ScopeFrameData.PrevFrameScopableInternalIndices); }
243
245 FNetBitArrayView GetRelevantObjectsInternalIndices() const { return MakeNetBitArrayView(RelevantObjectsInternalIndices); }
246
248 FNetBitArrayView GetPolledObjectsInternalIndices() const { return MakeNetBitArrayView(PolledObjectsInternalIndices); }
249
251 FNetBitArrayView GetDirtyObjectsToQuantize() const { return MakeNetBitArrayView(DirtyObjectsToQuantize); }
252
253 // Get bitarray for all internal indices that currently are assigned
254 const FNetBitArrayView GetAssignedInternalIndices() const { return MakeNetBitArrayView(AssignedInternalIndices); }
255
256 // SubObjects
257 const FNetBitArray& GetSubObjectInternalIndices() const { return SubObjectInternalIndices; }
258 const FNetBitArrayView GetSubObjectInternalIndicesView() const { return MakeNetBitArrayView(SubObjectInternalIndices); }
259
263
267
269
271 {
272 return SubObjectInternalIndices.GetBit(InternalIndex);
273 }
274
275 // DependentObjects
276 const FNetBitArrayView GetDependentObjectInternalIndices() const { return MakeNetBitArrayView(DependentObjectInternalIndices); }
277 const FNetBitArrayView GetObjectsWithDependentObjectsInternalIndices() const { return MakeNetBitArrayView(ObjectsWithDependentObjectsInternalIndices); }
278
281
282 // Creation dependency API
285
287 {
288 return MakeNetBitArrayView(ObjectsWithCreationDependencies);
289 }
290
292
293 // Remove DependentHandles from all dependent object tracking
294 // $TODO: This might need a pass ObjectReplicationBridge as well since most likely also must restore filter/polling logic
296
297 void SetShouldPropagateChangedStates(FNetRefHandle Handle, bool bShouldPropagateChangedStates);
298 void SetShouldPropagateChangedStates(FInternalNetRefIndex ObjectInternalIndex, bool bShouldPropagateChangedStates);
299
301 FInternalNetRefIndex GetCurrentMaxInternalNetRefIndex() const { return CurrentMaxInternalNetRefIndex; };
302
304 uint32 GetMaxActiveObjectCount() const { return MaxActiveObjectCount; }
305
307 uint32 GetActiveObjectCount() const { return ActiveObjectCount; }
308
309 // We do refcount objects tracked by each connection in order to know when it is safe to reuse an InternalIndex
311 void ReleaseNetObjectRef(FInternalNetRefIndex InternalIndex) { check(ReplicatedObjectRefCount[InternalIndex] > 0); --ReplicatedObjectRefCount[InternalIndex]; }
313
314 // Get dependent objects for the given ParentIndex
316
317 // Get all parents of the given DependentIndex
319
320 // Get all subobjects for the given OwnerIndex, Note: only valid for the root
322
323 // Get child subobjects for a object, used when we do hierarchical operations such as conditional serialization
325
326 // Get child subobjects and conditionals array if one exists, if there are no child subobjects the method returns false
327 inline bool GetChildSubObjects(FInternalNetRefIndex OwnerIndex, FChildSubObjectsInfo& OutInfo) const;
328
330 const FRefHandleMap& GetReplicatedHandles() const { return RefHandleToInternalIndex; }
331
332 // Get the replicated object represented by a given internal index.
333 UObject* GetReplicatedObjectInstance(FInternalNetRefIndex ObjectIndex) const { return ReplicatedInstances[ObjectIndex]; }
334
336 const TNetChunkedArray<TObjectPtr<UObject>>& GetReplicatedInstances() const { return ReplicatedInstances; }
337
339
340 bool GetIsDestroyedStartupObject(FInternalNetRefIndex InternalIndex) const { return DestroyedStartupObjectInternalIndices.GetBit(InternalIndex); }
342
343 const FNetBitArrayView GetDestroyedStartupObjectInternalIndices() const { return MakeNetBitArrayView(DestroyedStartupObjectInternalIndices); }
344
346 const FNetBitArrayView GetWantToBeDormantInternalIndices() const { return MakeNetBitArrayView(WantToBeDormantInternalIndices); }
347 FNetBitArrayView GetWantToBeDormantInternalIndices() { return MakeNetBitArrayView(WantToBeDormantInternalIndices); }
348
350 const FNetBitArrayView GetDormantObjectsPendingFlushNet() const { return MakeNetBitArrayView(DormantObjectsPendingFlushNet); }
351 FNetBitArrayView GetDormantObjectsPendingFlushNet() { return MakeNetBitArrayView(DormantObjectsPendingFlushNet); }
352
354 FNetBitArrayView GetObjectsWithPreUpdate() const { return MakeNetBitArrayView(ObjectsWithPreUpdate); }
355
357 FNetBitArrayView GetObjectsWithFullPushBasedDirtiness() const { return MakeNetBitArrayView(ObjectsWithFullPushBasedDirtiness); }
358
359public:
360
362 [[nodiscard]] FString PrintObjectFromIndex(FInternalNetRefIndex ObjectIndex) const;
363 [[nodiscard]] FString PrintObjectFromNetRefHandle(FNetRefHandle ObjectHandle) const;
364
365public:
366
369 FOnNetChunkedArrayIncrease::RegistrationType& GetOnNetChunkedArrayIncreaseDelegate() const { return OnNetChunkedArrayIncrease; };
370
372 uint32 GetHighestNetChunkedArrayInternalIndex() const { return HighestNetChunkedArrayInternalIndex; };
373
376 FOnMaxInternalNetRefIndexIncreased::RegistrationType& GetOnMaxInternalNetRefIndexIncreasedDelegate() const { return OnMaxInternalNetRefIndexIncreased; };
377
380 FOnInternalNetRefIndicesFreed::RegistrationType& GetOnInternalNetRefIndicesFreedDelegate() const { return OnInternalNetRefIndicesFreed; };
381
382public:
383
384 // Iterate over all dependent objects and their dependent objects
385 template <typename T>
386 void ForAllDependentObjectsRecursive(FInternalNetRefIndex ObjectIndex, T&& Functor) const
387 {
388 if (ObjectsWithDependentObjectsInternalIndices.GetBit(ObjectIndex))
389 {
391 {
392 Functor(DependentObjectInfo.NetRefIndex);
394 }
395 return;
396 }
397 };
398
399private:
400
401 void InitNetBitArray(FNetBitArray* NetBitArray);
402
403 FInternalNetRefIndex InternalCreateNetObject(const FNetRefHandle NetRefHandle, const FNetHandle GlobalHandle, const FCreateNetObjectParams& Params);
404
405 void InternalDestroyNetObject(FInternalNetRefIndex InternalIndex);
406
408 void ClearStateForFreedInternalIndex(FInternalNetRefIndex FreedInternalIndex);
409
410 static uint64 MakeNetRefHandleId(uint64 Seed, bool bIsStatic);
411 uint64 GetNextNetRefHandleId(uint64 HandleIndex) const;
412
413 // Get the next free internal index, returns InvalidInternalIndex if a free one cannot be found
414 FInternalNetRefIndex GetNextFreeInternalIndex() const;
415
417
418 inline void SetIsSubObject(FInternalNetRefIndex InternalIndex, bool IsSubObject) { SubObjectInternalIndices.SetBitValue(InternalIndex, IsSubObject); }
419 void InternalRemoveSubObject(FInternalNetRefIndex RootObjectInternalIndex, FInternalNetRefIndex SubObjectInternalIndex, bool bRemoveFromSubObjectArray = true);
420
422 void InternalRemoveAllDependencies(FInternalNetRefIndex DependentInternalIndex);
423 bool AddingDependencyWouldCreateCircularDependency(FInternalNetRefIndex ParentInternalIndex, FInternalNetRefIndex DependentInternalIndex) const;
424
429 FInternalNetRefIndex GrowNetObjectLists();
430
432 void GrowNetChunkedArrayBuffers(FInternalNetRefIndex InternalIndex);
433
435 void MaxInternalNetRefIndexIncreased(uint32 NewBitCount);
436
437private:
438
439 // Max allowed replicated object count
440 uint32 MaxActiveObjectCount = 0;
441
442 // The current replicated object count
443 uint32 ActiveObjectCount = 0;
444
445 // By how many indexes to grow the NetObjectLists when we hit the highest index.
446 FInternalNetRefIndex InternalNetRefIndexGrowSize = 0;
447
448 // The maximum internal index that NetObjectLists need to be able to reference
449 FInternalNetRefIndex CurrentMaxInternalNetRefIndex = 0;
450
451 // The highest internal index currently allocated for NetChunkedArrays
452 uint32 HighestNetChunkedArrayInternalIndex = 0;
453
454 uint32 ReplicationSystemId = UE::Net::InvalidReplicationSystemId;
455
456 FRefHandleMap RefHandleToInternalIndex;
457 FNetHandleMap NetHandleToInternalIndex;
458
459 struct FScopeFrameData
460 {
461 FScopeFrameData() : bIsValid(false) { }
462
463 // Controls if the frame data can be read or not
464 uint32 bIsValid : 1;
465
466 // Bitset used in order to track assigned internal which are scopable
467 FNetBitArray CurrentFrameScopableInternalIndices;
468
469 // Which internal indices were used last net frame. This can be used to find out which ones are new and deleted this frame.
470 FNetBitArray PrevFrameScopableInternalIndices;
471 };
472
474 FNetBitArray GlobalScopableInternalIndices;
475
477 FScopeFrameData ScopeFrameData;
478
480 FNetBitArray RelevantObjectsInternalIndices;
481
483 FNetBitArray PolledObjectsInternalIndices;
484
486 FNetBitArray DirtyObjectsToQuantize;
487
488 // Bitset containing all internal indices that are assigned
489 FNetBitArray AssignedInternalIndices;
490
491 // Bitset containing all internal indices that are SubObjects
492 FNetBitArray SubObjectInternalIndices;
493
494 // Bitset containing all internal indices that are dependentObjects
495 FNetBitArray DependentObjectInternalIndices;
496
497 // Dependent objects that need their parent to be relevant too
498
499 // Objects that cannot be created until the parents they depend on also exist
500 FNetBitArray ObjectsWithCreationDependencies;
501
502 // Bitset containing all internal indices that have dependentObjects
503 FNetBitArray ObjectsWithDependentObjectsInternalIndices;
504
505 // Bitset marking internal indices of static objects that are permanently destroyed
506 // We use this for special scoping
507 FNetBitArray DestroyedStartupObjectInternalIndices;
508
509 // Bitset marking internal indices that wants to be dormant
510 FNetBitArray WantToBeDormantInternalIndices;
511
512 // Set of dormant objects that have requested a NetFlushDormancy
513 FNetBitArray DormantObjectsPendingFlushNet;
514
515 // Bitset marking internal indices that is flagged as requiring PreUpdate
516 FNetBitArray ObjectsWithPreUpdate;
517
518 // Bitset marking internal indices that is flagged as supporting FullPushBasedDirtiness
519 FNetBitArray ObjectsWithFullPushBasedDirtiness;
520
521 // Both are marked in DestroyedStartupObjectsInternalIndicies
522 // When one is destroyed both mapping will be cleared
523 // Map OriginalIndex -> DestructionInfoIndex
524 // Map DestructionInfoIndex -> Orignal
525 TMap<uint32, uint32> DestroyedStartupObject;
526
527 // Array used in order to track objects pending destroy
528 TArray<FInternalNetRefIndex> PendingDestroyInternalIndices;
529
530 // Just an array containing data about our replicated objects
531 TNetChunkedArray<FReplicatedObjectData> ReplicatedObjectData;
532
533 // Pointers to state buffers for all replicated objects
534 TNetChunkedArray<uint8*> ReplicatedObjectStateBuffers;
535
536 // Refcounts for all tracked objects
537 TNetChunkedArray<uint16> ReplicatedObjectRefCount;
538
539 // Raw pointers to all bound instances
540 TNetChunkedArray<TObjectPtr<UObject>> ReplicatedInstances;
541
542 // Index ready to be assigned to the next replicated object
543 // Index 0 is always reserved, for both static and dynamic handles
544 uint64 NextStaticHandleIndex = 1;
545 uint64 NextDynamicHandleIndex = 1;
546
547 //TODO: Rename this variable its not exclusive to subobjects
548 FNetDependencyData SubObjects;
549
550 FReplicationProtocolManager& ReplicationProtocolManager;
551
552 // Delegates
553 mutable FOnMaxInternalNetRefIndexIncreased OnMaxInternalNetRefIndexIncreased;
554 mutable FOnNetChunkedArrayIncrease OnNetChunkedArrayIncrease;
555 mutable FOnInternalNetRefIndicesFreed OnInternalNetRefIndicesFreed;
556
557 // Track NetBitArrays owned by the NetRefHandleManager so they can automatically be resized.
558 TArray<FNetBitArray*> OwnedNetBitArrays;
559};
560
566
572
578
584
586{
587 if (const FInternalNetRefIndex* InternalIndex = RefHandleToInternalIndex.Find(IncompleteHandle))
588 {
589 return GetReplicatedObjectDataNoCheck(*InternalIndex).RefHandle;
590 }
591 else
592 {
594 }
595}
596
609
611{
612 return RefHandleToInternalIndex.Contains(Handle);
613}
614
616{
617 return (InternalIndex != InvalidInternalIndex) && (ReplicatedObjectStateBuffers[InternalIndex] != nullptr);
618}
619
624
626{
628 {
629 // For the time being only replicated objects owned by this peer has a state buffer
630 return ReplicatedObjectStateBuffers[InternalIndex] == nullptr;
631 }
632
633 return false;
634}
635
641
646
651
653{
654 return SubObjects.GetChildSubObjects(OwnerIndex, OutInfo);
655}
656
661
666
667}
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
constexpr auto MakeArrayView(OtherRangeType &&Other)
Definition ArrayView.h:873
#define check(expr)
Definition AssertionMacros.h:314
FPlatformTypes::uint64 uint64
A 64-bit unsigned integer.
Definition Platform.h:1117
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define ENUM_CLASS_FLAGS(Enum)
Definition EnumClassFlags.h:6
void Init()
Definition LockFreeList.h:4
EIrisAsyncLoadingPriority
Definition ObjectReferenceTypes.h:14
int32 InternalIndex
Definition VulkanMemory.cpp:4036
uint8_t uint8
Definition binka_ue_file_header.h:8
uint16_t uint16
Definition binka_ue_file_header.h:7
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition UObjectGlobals.h:2492
Definition ArrayView.h:139
Definition Array.h:670
Definition UnrealString.h.inl:34
Definition NetBitArray.h:337
Definition NetBitArray.h:74
bool GetBit(uint32 Index) const
Definition NetBitArray.h:1253
void SetBitValue(uint32 Index, bool bValue)
Definition NetBitArray.h:1233
Definition NetHandle.h:32
Definition NetRefHandle.h:25
static FNetRefHandle GetInvalid()
Definition NetRefHandle.h:28
FInternalNetRefIndexArray * GetInternalIndexArray(FInternalNetRefIndex InternalIndex)
Definition NetDependencyData.h:145
bool GetChildSubObjects(FInternalNetRefIndex InternalIndex, FChildSubObjectsInfo &OutInfo) const
Definition NetDependencyData.h:101
FDependentObjectInfoArray * GetDependentObjectInfoArray(FInternalNetRefIndex InternalIndex)
Definition NetDependencyData.h:60
@ DependentParentObjects
Definition NetDependencyData.h:47
@ SubObjects
Definition NetDependencyData.h:45
@ ChildSubObjects
Definition NetDependencyData.h:46
Definition NetRefHandleManager.h:72
const uint8 * GetReplicatedObjectStateBufferNoCheck(FInternalNetRefIndex InternalObjectIndex) const
Definition NetRefHandleManager.h:205
const FRefHandleMap & GetReplicatedHandles() const
Definition NetRefHandleManager.h:330
FNetBitArrayView GetRelevantObjectsInternalIndices() const
Definition NetRefHandleManager.h:245
bool SetSubObjectNetCondition(FInternalNetRefIndex SubObjectInternalIndex, FLifeTimeConditionStorage SubObjectCondition, bool &bOutWasModified)
Definition NetRefHandleManager.cpp:758
FNetRefHandle CreateNetObject(FNetRefHandle WantedHandle, FNetHandle GlobalHandle, const FCreateNetObjectParams &Params)
Definition NetRefHandleManager.cpp:350
void DestroyNetObject(FNetRefHandle Handle)
Definition NetRefHandleManager.cpp:558
FString PrintObjectFromIndex(FInternalNetRefIndex ObjectIndex) const
Definition NetRefHandleManager.cpp:1209
const TNetChunkedArray< TObjectPtr< UObject > > & GetReplicatedInstances() const
Definition NetRefHandleManager.h:336
FReplicatedObjectData & GetReplicatedObjectDataNoCheck(FInternalNetRefIndex InternalIndex)
Definition NetRefHandleManager.h:201
void ForAllDependentObjectsRecursive(FInternalNetRefIndex ObjectIndex, T &&Functor) const
Definition NetRefHandleManager.h:386
uint32 GetHighestNetChunkedArrayInternalIndex() const
Definition NetRefHandleManager.h:372
void Deinit()
Definition NetRefHandleManager.cpp:98
const FNetBitArrayView GetWantToBeDormantInternalIndices() const
Definition NetRefHandleManager.h:346
TArrayView< const FInternalNetRefIndex > GetChildSubObjects(FInternalNetRefIndex ParentObjectIndex) const
Definition NetRefHandleManager.h:657
FOnMaxInternalNetRefIndexIncreased::RegistrationType & GetOnMaxInternalNetRefIndexIncreasedDelegate() const
Definition NetRefHandleManager.h:376
void DestroyObjectsPendingDestroy()
Definition NetRefHandleManager.cpp:577
void OnPostSendUpdate()
Definition NetRefHandleManager.cpp:1198
FNetRefHandle CreateHandleForDestructionInfo(FNetRefHandle Handle, const FCreateNetObjectParams &Params)
Definition NetRefHandleManager.cpp:520
FInternalNetRefIndex GetRootObjectInternalIndexOfSubObject(FInternalNetRefIndex SubObjectIndex) const
Definition NetRefHandleManager.cpp:826
const FNetBitArrayView GetDependentObjectInternalIndices() const
Definition NetRefHandleManager.h:276
const FReplicationInstanceProtocol * DetachInstanceProtocol(FInternalNetRefIndex InternalIndex)
Definition NetRefHandleManager.cpp:304
void AddNetObjectRef(FInternalNetRefIndex InternalIndex)
Definition NetRefHandleManager.h:310
FNetBitArrayView GetObjectsWithFullPushBasedDirtiness() const
Definition NetRefHandleManager.h:357
const FNetBitArrayView GetPrevFrameScopableInternalIndices() const
Definition NetRefHandleManager.h:242
FOnInternalNetRefIndicesFreed::RegistrationType & GetOnInternalNetRefIndicesFreedDelegate() const
Definition NetRefHandleManager.h:380
const FNetBitArrayView GetObjectsWithDependentObjectsInternalIndices() const
Definition NetRefHandleManager.h:277
@ InvalidInternalIndex
Definition NetRefHandleManager.h:75
const FNetBitArrayView GetGlobalScopableInternalIndices() const
Definition NetRefHandleManager.h:236
const FNetBitArrayView GetDestroyedStartupObjectInternalIndices() const
Definition NetRefHandleManager.h:343
bool GetIsDestroyedStartupObject(FInternalNetRefIndex InternalIndex) const
Definition NetRefHandleManager.h:340
FNetBitArrayView GetDirtyObjectsToQuantize() const
Definition NetRefHandleManager.h:251
const FNetBitArrayView GetObjectsWithCreationDependencies() const
Definition NetRefHandleManager.h:286
FNetBitArrayView GetPolledObjectsInternalIndices() const
Definition NetRefHandleManager.h:248
bool AddSubObject(FNetRefHandle RootObjectHandle, FNetRefHandle SubObjectHandle, FNetRefHandle RelativeOtherSubObjectHandle, EAddSubObjectFlags Flags=EAddSubObjectFlags::Default)
Definition NetRefHandleManager.cpp:605
FNetBitArrayView GetWantToBeDormantInternalIndices()
Definition NetRefHandleManager.h:347
FString PrintObjectFromNetRefHandle(FNetRefHandle ObjectHandle) const
Definition NetRefHandleManager.cpp:1241
uint32 GetActiveObjectCount() const
Definition NetRefHandleManager.h:307
FNetRefHandle GetCompleteNetRefHandle(FNetRefHandle IncompleteHandle) const
Definition NetRefHandleManager.h:585
TArrayView< const FDependentObjectInfo > GetDependentObjectInfos(FInternalNetRefIndex ParentIndex) const
Definition NetRefHandleManager.h:315
bool IsLocal(FInternalNetRefIndex InternalIndex) const
Definition NetRefHandleManager.h:615
bool IsSubObject(FInternalNetRefIndex InternalIndex) const
Definition NetRefHandleManager.h:270
void AddReferencedObjects(FReferenceCollector &Collector)
Definition NetRefHandleManager.cpp:1150
void ReleaseNetObjectRef(FInternalNetRefIndex InternalIndex)
Definition NetRefHandleManager.h:311
FInternalNetRefIndex GetInternalIndexFromNetHandle(FNetHandle Handle) const
Definition NetRefHandleManager.h:573
bool AddDependentObject(FNetRefHandle ParentHandle, FNetRefHandle DependentHandle, EDependentObjectSchedulingHint SchedulingHint)
Definition NetRefHandleManager.cpp:831
const FReplicatedObjectData & GetReplicatedObjectData(FInternalNetRefIndex InternalIndex) const
Definition NetRefHandleManager.h:561
const FNetBitArrayView GetCurrentFrameScopableInternalIndices() const
Definition NetRefHandleManager.h:239
bool IsScopableIndex(FInternalNetRefIndex InternalIndex) const
Definition NetRefHandleManager.h:163
TArrayView< const FInternalNetRefIndex > GetObjectsPendingDestroy() const
Definition NetRefHandleManager.h:197
uint32 GetMaxActiveObjectCount() const
Definition NetRefHandleManager.h:304
FOnNetChunkedArrayIncrease::RegistrationType & GetOnNetChunkedArrayIncreaseDelegate() const
Definition NetRefHandleManager.h:369
FNetBitArrayView GetDormantObjectsPendingFlushNet()
Definition NetRefHandleManager.h:351
const FNetBitArray & GetSubObjectInternalIndices() const
Definition NetRefHandleManager.h:257
uint8 * GetReplicatedObjectStateBufferNoCheck(FInternalNetRefIndex InternalObjectIndex)
Definition NetRefHandleManager.h:206
bool HasInstanceProtocol(FInternalNetRefIndex InternalIndex) const
Definition NetRefHandleManager.cpp:323
FInternalNetRefIndex GetInternalIndex(FNetRefHandle Handle) const
Definition NetRefHandleManager.h:567
bool IsNetRefHandleAssigned(FNetRefHandle Handle) const
Definition NetRefHandleManager.h:610
TArrayView< const FInternalNetRefIndex > GetDependentObjectParents(FInternalNetRefIndex DependentIndex) const
Definition NetRefHandleManager.h:662
uint16 GetNetObjectRefCount(FInternalNetRefIndex ObjectInternalIndex) const
Definition NetRefHandleManager.h:312
const TNetChunkedArray< uint8 * > & GetReplicatedObjectStateBuffers() const
Definition NetRefHandleManager.h:207
void RemoveFromScope(FInternalNetRefIndex InternalIndex)
Definition NetRefHandleManager.cpp:549
FNetRefHandle GetNetRefHandleFromInternalIndex(FInternalNetRefIndex InternalIndex) const
Definition NetRefHandleManager.h:579
bool IsLocalNetRefHandle(FNetRefHandle Handle) const
Definition NetRefHandleManager.h:620
FNetBitArrayView GetObjectsWithPreUpdate() const
Definition NetRefHandleManager.h:354
void SetShouldPropagateChangedStates(FNetRefHandle Handle, bool bShouldPropagateChangedStates)
Definition NetRefHandleManager.cpp:1144
const FNetBitArrayView GetDormantObjectsPendingFlushNet() const
Definition NetRefHandleManager.h:350
void RemoveDependentObject(FNetRefHandle ParentHandle, FNetRefHandle DependentHandle)
Definition NetRefHandleManager.cpp:1082
bool AddCreationDependency(FNetRefHandle Parent, FNetRefHandle Child)
Definition NetRefHandleManager.cpp:919
UObject * GetReplicatedObjectInstance(FInternalNetRefIndex ObjectIndex) const
Definition NetRefHandleManager.h:333
static FNetRefHandle MakeNetRefHandle(uint64 Id, uint32 ReplicationSystemId)
Definition NetRefHandleManager.cpp:1163
void OnPreSendUpdate()
Definition NetRefHandleManager.cpp:1189
void RemoveCreationDependency(FNetRefHandle Parent, FNetRefHandle Child)
Definition NetRefHandleManager.cpp:958
const FReplicatedObjectData & GetReplicatedObjectDataNoCheck(FInternalNetRefIndex InternalIndex) const
Definition NetRefHandleManager.h:200
TMulticastDelegate< void(const TConstArrayView< FInternalNetRefIndex > &FreedIndices)> FOnInternalNetRefIndicesFreed
Definition NetRefHandleManager.h:379
FNetRefHandle AllocateNetRefHandle(bool bIsStatic)
Definition NetRefHandleManager.cpp:329
static FNetRefHandle MakeNetRefHandleFromId(uint64 Id)
Definition NetRefHandleManager.cpp:1176
TMap< FNetRefHandle, FInternalNetRefIndex > FRefHandleMap
Definition NetRefHandleManager.h:136
TConstArrayView< const FInternalNetRefIndex > GetCreationDependencies(FInternalNetRefIndex ChildInternalIndex) const
Definition NetRefHandleManager.cpp:986
bool IsRemoteNetRefHandle(FNetRefHandle Handle) const
Definition NetRefHandleManager.h:625
TMulticastDelegate< void(FInternalNetRefIndex HighestInternalIndex)> FOnNetChunkedArrayIncrease
Definition NetRefHandleManager.h:368
EIrisAsyncLoadingPriority GetIrisAsyncLoadingPriority(FInternalNetRefIndex InternalIndex) const
Definition NetRefHandleManager.h:597
FInternalNetRefIndex GetCurrentMaxInternalNetRefIndex() const
Definition NetRefHandleManager.h:301
void RemoveSubObject(FNetRefHandle SubObjectHandle)
Definition NetRefHandleManager.cpp:743
uint32 GetOriginalDestroyedStartupObjectIndex(FInternalNetRefIndex InternalIndex) const
Definition NetRefHandleManager.h:636
FNetRefHandle CreateNetObjectFromRemote(FNetRefHandle WantedHandle, const FCreateNetObjectParams &Params)
Definition NetRefHandleManager.cpp:384
TMulticastDelegate< void(FInternalNetRefIndex MaxInternalIndex)> FOnMaxInternalNetRefIndexIncreased
Definition NetRefHandleManager.h:375
const FNetBitArrayView GetSubObjectInternalIndicesView() const
Definition NetRefHandleManager.h:258
const FNetBitArrayView GetAssignedInternalIndices() const
Definition NetRefHandleManager.h:254
TArrayView< const FInternalNetRefIndex > GetSubObjects(FInternalNetRefIndex OwnerIndex) const
Definition NetRefHandleManager.h:647
void AttachInstanceProtocol(FInternalNetRefIndex InternalIndex, const FReplicationInstanceProtocol *InstanceProtocol, UObject *Instance)
Definition NetRefHandleManager.cpp:289
TMap< FNetHandle, FInternalNetRefIndex > FNetHandleMap
Definition NetRefHandleManager.h:137
FNetRefHandle GetRootObjectOfAnyObject(FNetRefHandle NetRefHandle) const
Definition NetRefHandleManager.cpp:804
FNetRefHandle GetRootObjectOfSubObject(FNetRefHandle SubObjectHandle) const
Definition NetRefHandleManager.cpp:818
Definition ReplicationProtocolManager.h:25
Definition NetChunkedArray.h:23
Definition Object.h:95
Definition OverriddenPropertySet.cpp:45
Definition NetworkVersion.cpp:28
EAddSubObjectFlags
Definition NetRefHandleManager.h:48
@ None
Definition ReplicationDataStreamDebug.h:25
ERemoveDependentObjectFlags
Definition NetRefHandleManager.h:62
uint32 FInternalNetRefIndex
Definition ReplicationStateStorage.h:20
int8 FLifeTimeConditionStorage
Definition NetDependencyData.h:14
Definition NetworkVersion.cpp:28
EDependentObjectSchedulingHint
Definition ReplicationSystemTypes.h:37
uint8 FNetObjectFactoryId
Definition NetObjectFactoryRegistry.h:18
@ InvalidNetObjectFactoryId
Definition NetObjectFactoryRegistry.h:19
constexpr uint32 InvalidReplicationSystemId
Definition IrisConstants.h:10
FNetBitArrayView MakeNetBitArrayView(const FNetBitArrayView::StorageWordType *Storage, uint32 BitCount)
Definition NetBitArray.h:1677
@ false
Definition radaudio_common.h:23
Definition ReplicationProtocol.h:42
Definition ReplicationProtocol.h:83
Definition NetDependencyData.h:21
Definition NetRefHandleManagerTypes.h:18
Definition NetDependencyData.h:28
Definition NetRefHandleManager.h:143
uint32 InternalNetRefIndexGrowSize
Definition NetRefHandleManager.h:148
uint32 ReplicationSystemId
Definition NetRefHandleManager.h:144
uint32 InternalNetRefIndexInitSize
Definition NetRefHandleManager.h:146
uint32 MaxActiveObjectCount
Definition NetRefHandleManager.h:145
uint32 NetChunkedArrayCount
Definition NetRefHandleManager.h:147
bool IsSubObject() const
Definition NetRefHandleManager.h:127
FNetHandle NetHandle
Definition NetRefHandleManager.h:87
uint16 bHasDependentObjects
Definition NetRefHandleManager.h:114
EIrisAsyncLoadingPriority IrisAsyncLoadingPriority
Definition NetRefHandleManager.h:103
uint8 * ReceiveStateBuffer
Definition NetRefHandleManager.h:91
bool IsDependentObject() const
Definition NetRefHandleManager.h:130
FNetObjectFactoryId NetFactoryId
Definition NetRefHandleManager.h:100
const FReplicationProtocol * Protocol
Definition NetRefHandleManager.h:89
uint16 bDestroySubObjectWithOwner
Definition NetRefHandleManager.h:112
bool IsOwnedSubObject() const
Definition NetRefHandleManager.h:124
uint16 bShouldPropagateChangedStates
Definition NetRefHandleManager.h:110
FReplicatedObjectData()
Definition NetRefHandleManager.h:81
uint16 bWantsFullPoll
Definition NetRefHandleManager.h:117
uint16 bIsDependentObject
Definition NetRefHandleManager.h:113
FInternalNetRefIndex SubObjectRootIndex
Definition NetRefHandleManager.h:94
uint16 bHasCachedCreationInfo
Definition NetRefHandleManager.h:119
const FReplicationInstanceProtocol * InstanceProtocol
Definition NetRefHandleManager.h:90
uint16 bNeedsFullCopyAndQuantize
Definition NetRefHandleManager.h:116
FInternalNetRefIndex SubObjectParentIndex
Definition NetRefHandleManager.h:97
uint16 bPendingEndReplication
Definition NetRefHandleManager.h:118
uint16 bAllowDestroyInstanceFromRemote
Definition NetRefHandleManager.h:115
uint16 Flags
Definition NetRefHandleManager.h:107
uint16 bTearOff
Definition NetRefHandleManager.h:111
FNetRefHandle RefHandle
Definition NetRefHandleManager.h:86