Navigation
API > API/Runtime > API/Runtime/IrisCore
Partial implementation of ReplicationBridge that can be used as a foundation for implementing support for replicating objects derived from UObject
| Name | UObjectReplicationBridge |
| Type | class |
| Header File | /Engine/Source/Runtime/Net/Iris/Public/Iris/ReplicationSystem/ObjectReplicationBridge.h |
| Include Path | #include "Iris/ReplicationSystem/ObjectReplicationBridge.h" |
Syntax
UCLASS (Transient, MinimalAPI)
class UObjectReplicationBridge : public UReplicationBridge
Inheritance Hierarchy
- UObjectBase → UObjectBaseUtility → UObject → UReplicationBridge → UObjectReplicationBridge
Derived Classes
Constructors
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
UObjectReplicationBridge() |
Iris/ReplicationSystem/ObjectReplicationBridge.h |
Destructors
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
virtual ~UObjectReplicationBridge() |
Iris/ReplicationSystem/ObjectReplicationBridge.h |
Structs
| Name | Remarks |
|---|---|
| FClassFilterInfo | Filtering. |
| FClassPrioritizerInfo | Prioritization. |
| FPollInfo | |
| FRootObjectReplicationParams | |
| FSubObjectReplicationParams | |
| FUpdateWorldInfoContext |
Enums
Public
| Name | Remarks |
|---|---|
| EPrintDebugInfoTraits | Print traits to control what gets logged in PrintIrisDebugInfoForNetHandle |
Typedefs
| Name | Type | Remarks | Include Path |
|---|---|---|---|
| EGetRefHandleFlags | UE::Net::EGetRefHandleFlags | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
| FInstancePreUpdateFunction | TFunction< void(TArrayView< UObject * >, const UObjectReplicationBridge *)> | Helper method that calls provided PreUpdateFunction and polls state data for all replicated instances with the NeedsPoll trait. | Iris/ReplicationSystem/ObjectReplicationBridge.h |
Variables
Protected
| Name | Type | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|---|
| ArchetypesAlreadyPrinted | TMap< FObjectKey, bool > | Iris/ReplicationSystem/ObjectReplicationBridge.h | ||
| bBlockStartRootObjectReplication | bool | Set to true when the system does not allow new root objects to be replicated at this moment. | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
| bHasDirtyClassesInPollPeriodOverrides | bool | Iris/ReplicationSystem/ObjectReplicationBridge.h | ||
| bHasPollOverrides | bool | Iris/ReplicationSystem/ObjectReplicationBridge.h | ||
| CachedCreationHeaders | TMap< FNetRefHandle, TUniquePtr< const UE::Net::FNetObjectCreationHeader > > | When we flush objects, we might need to defer sending creation info. | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
| ClassesFlaggedCritical | TMap< FName, bool > | Classes that may force a disconnection when a protocol mismatch is detected. | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
| ClassesIrisAsyncLoadingPriority | TMap< FName, EIrisAsyncLoadingPriority > | Classes that have an async loading priority. | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
| ClassesWithDeltaCompression | TMap< FName, bool > | Delta compression. | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
| ClassesWithDynamicFilter | TMap< FName, FClassFilterInfo > | Filter mapping. | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
| ClassesWithoutPollPeriodOverride | TSet< FName > | Exact classes without poll period override. | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
| ClassesWithPollPeriodOverride | TMap< FName, FPollInfo > | Iris/ReplicationSystem/ObjectReplicationBridge.h | ||
| ClassesWithPrioritizer | TMap< FName, FClassPrioritizerInfo > | Prioritizer mapping. | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
| ClassesWithTypeStats | TMap< FName, FName > | Type stats. | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
| ClassHierarchyPollPeriodOverrides | TMap< FName, FPollInfo > | Iris/ReplicationSystem/ObjectReplicationBridge.h | ||
| ClassNamesToIgnoreProtocolMismatch | TArray< FString > | List of class names that will not prevent replication to happen when a protocol mismatch is detected. | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
| ConfigClassPathNameCache | TMap< const UClass *, FName > | Iris/ReplicationSystem/ObjectReplicationBridge.h | ||
| DefaultSpatialFilterHandle | UE::Net::FNetObjectFilterHandle | Iris/ReplicationSystem/ObjectReplicationBridge.h | ||
| DefaultSpatialFilterName | FName | Iris/ReplicationSystem/ObjectReplicationBridge.h | ||
| DestructionInfoProtocol | const UE::Net::FReplicationProtocol * | Pre-built protocol used to send destruction requests for static objects. | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
| GarbageCollectionAffectedObjects | UE::Net::FNetBitArray | Objects that needs to update their object references due to garbage collection. | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
| MaxTickRate | float | The maximum tick per second of the engine. Default is to use 30hz | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
| NetObjectFactories | TArray< TObjectPtr< UNetObjectFactory > > | Iris/ReplicationSystem/ObjectReplicationBridge.h | ||
| ObjectsWithObjectReferences | UE::Net::FNetBitArray | Objects which has object references and could be affected by garbage collection. | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
| OnCustomConditionChangedHandle | FDelegateHandle | Iris/ReplicationSystem/ObjectReplicationBridge.h | ||
| OnDynamicConditionChangedHandle | FDelegateHandle | Iris/ReplicationSystem/ObjectReplicationBridge.h | ||
| PollFrequencyLimiter | UE::Net::Private::FObjectPollFrequencyLimiter * | Iris/ReplicationSystem/ObjectReplicationBridge.h | ||
| PreUpdateInstanceFunction | FInstancePreUpdateFunction | Iris/ReplicationSystem/ObjectReplicationBridge.h | ||
| ShouldSubclassUseSameFilterFunction | TFunction< bool(const UClass *, const UClass *)> | Iris/ReplicationSystem/ObjectReplicationBridge.h | ||
| ShouldUseDefaultSpatialFilterFunction | TFunction< bool(const UClass *)> | Iris/ReplicationSystem/ObjectReplicationBridge.h | ||
| StaticObjectsPendingDestroy | TMap< FNetRefHandle, UE::Net::Private::FStaticDestructionInfo > | Track the static objects that are destroyed so clients can be told to delete them after loading the level. | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
| UReplicationSystem | friend | Iris/ReplicationSystem/ObjectReplicationBridge.h | ||
| WorldLocationOOBWarnings | TSet< FObjectKey > | Tells if we already logged a warning about a given object or a class type that had a location that is out of bounds. | Iris/ReplicationSystem/ObjectReplicationBridge.h |
Functions
Public
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
void AddCreationDependencyLink
(
FNetRefHandle Parent, |
Force the child to only be created after the parent exists on a client. | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
void AddDependentObject
(
FNetRefHandle Parent, |
Adds a dependent object. | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
void AddStaticDestructionInfo
(
const FString& ObjectPath, |
Add static destruction info, this is used when stably named objects are destroyed prior to starting replication | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
FString DescribeObjectReference
(
const UE::Net::FNetObjectReference& ObjectRef, |
Describe the NetObjectReference | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
| Return the name of the default spatial filter config. | Iris/ReplicationSystem/ObjectReplicationBridge.h | ||
UNetObjectFactory * GetNetFactory
(
UE::Net::FNetObjectFactoryId FactoryId |
Returns the associated factory created for this bridge. | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
bool GetObjectWantsToBeDormant
(
FNetRefHandle Handle |
Returns whether the object wants to be dormant. | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
UE::Net::FNetObjectReference GetOrCreateObjectReference
(
const FString& Path, |
Get or create NetObjectReference for object identified by path relative to outer. | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
UE::Net::FNetObjectReference GetOrCreateObjectReference
(
const UObject* Instance |
Get or create NetObjectReference for object instance. | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
UObject * GetPreRegisteredObject
(
FNetRefHandle Handle |
Get the Object from a handle, even if the object was pre-registered and hasn't replicated yet. | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
UObject * GetReplicatedObject
(
FNetRefHandle Handle |
Get the Object from a replicated handle, if the handle is invalid or not is a replicated handle the function will return nullptr | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
FNetRefHandle GetReplicatedRefHandle
(
FNetHandle Handle |
Get NetRefHandle from a NetHandle. | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
FNetRefHandle GetReplicatedRefHandle
(
const UObject* Object, |
Get NetRefHandle from a replicated UObject. | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
FNetRefHandle GetRootObjectOfAnyObject
(
FNetRefHandle NetRefHandle |
Returns the root object handle associated with any object. | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
FNetRefHandle GetRootObjectOfSubObject
(
FNetRefHandle SubObjectHandle |
Get the handle of the root object of any replicated subobject. | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
bool IsNetRefHandlePreRegistered
(
FNetRefHandle Handle |
Return true only if Handle was registered via PreRegisterNewObjectReferenceHandle or PreregisterObjectWithReferenceHandle | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
void NetFlushDormantObject
(
FNetRefHandle Handle |
Trigger a single poll to refresh the dirty values of a dormant object. | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
virtual bool ObjectLevelHasFinishedLoading
(
UObject* Object |
Returns true of the level that the Object belongs to has finished loading. | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
UE::Net::FNetRefHandle PreRegisterNewObjectReferenceHandle
(
UObject* Instance |
Creates a NetRefHandle explicitly for object Instance and flags it as pre-registered in the ObjectReferenceCache. | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
void PreRegisterObjectWithReferenceHandle
(
const UObject* Instance, |
Directly assigns Handle to object Instance and flags it as pre-registered in the ObjectReferenceCache. | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
void PrintAlwaysRelevantObjects
(
uint32 ArgTraits |
Iris/ReplicationSystem/ObjectReplicationBridge.h | ||
void PrintDebugInfoForNetRefHandle
(
const FNetRefHandle NetHandle, |
Iris/ReplicationSystem/ObjectReplicationBridge.h | ||
void PrintDebugInfoForNetRefHandlesAndConnections
(
const TArray< FNetRefHandle >& NetHandles, |
Iris/ReplicationSystem/ObjectReplicationBridge.h | ||
void PrintDynamicFilterClassConfig
(
uint32 ArgTraits |
Debug functions that are triggered via console commands declared in ObjectReplicationBridgeDebugging.cpp. | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
| Iris/ReplicationSystem/ObjectReplicationBridge.h | |||
void PrintPushBasedStatuses() |
Iris/ReplicationSystem/ObjectReplicationBridge.h | ||
void PrintRelevantObjects
(
uint32 ArgTraits |
Iris/ReplicationSystem/ObjectReplicationBridge.h | ||
| Iris/ReplicationSystem/ObjectReplicationBridge.h | |||
void PrintReplicatedObjects
(
uint32 ArgTraits |
Iris/ReplicationSystem/ObjectReplicationBridge.h | ||
virtual bool RemapPathForPIE
(
uint32 ConnectionId, |
PIE package name remapping support. | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
void RemoveCreationDependencyLink
(
FNetRefHandle Parent, |
Remove a creation dependency link on the child | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
void RemoveDependentObject
(
FNetRefHandle Parent, |
Remove dependent object from parent. | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
UObject * ResolveObjectReference
(
const UE::Net::FNetObjectReference& ObjectRef, |
Try to resolve UObject from NetObjectReference, this function tries to resolve the object by loading if necessary. | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
virtual void SendErrorWithNetRefHandle
(
UE::Net::ENetRefHandleError ErrorType, |
Tell the remote connection that we detected a reading error with a specific replicated object | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
void SetClassDynamicFilterConfig
(
FName ClassPathName, |
Iris/ReplicationSystem/ObjectReplicationBridge.h | ||
void SetClassDynamicFilterConfig
(
FName ClassPathName, |
Set the object filter to use for objects of this class and any derived classes without an explicit config. | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
void SetClassTypeStatsConfig
(
FName ClassPathName, |
Set the TypeStats to use for specified class and any derived classes without explicit config | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
void SetClassTypeStatsConfig
(
const FString& ClassPathName, |
Iris/ReplicationSystem/ObjectReplicationBridge.h | ||
void SetObjectWantsToBeDormant
(
FNetRefHandle Handle, |
Set whether object should go dormant. | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
void SetPollFrequency
(
FNetRefHandle RootHandle, |
Set poll frequency on root object and its subobjects. They will be polled on the same frame. | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
void SetSubObjectNetCondition
(
FNetRefHandle SubObjectHandle, |
Set NetCondition for a subobject, the condition is used to determine if the SubObject should replicate or not. | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
bool ShouldUseVerboseCsvStats() |
Getter for CVar net.Iris.UseVerboseIrisCsvStats which is true if we want per-class iris stats output to CSV | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
FNetRefHandle StartReplicatingRootObject
(
UObject* Instance, |
Start replicating a RootObject and return a valid NetRefHandle if successful. | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
FNetRefHandle StartReplicatingSubObject
(
UObject* Instance, |
Start replicating a SubObject and return a valid NetRefHandle if successful. | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
void StopReplicatingNetObject
(
UObject* Instance, |
Stop replicating any type of NetObject. | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
FNetRefHandle StoreDestructionInfo
(
FNetRefHandle Handle, |
Store static destruction info for the replicated object. | Iris/ReplicationSystem/ObjectReplicationBridge.h |
Protected
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
uint8 ConvertPollFrequencyIntoFrames
(
float PollFrequency |
Transform a poll frequency (in updates per second) to an equivalent number of frames. | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
| Parses a list of arguments and returns a list of Connection's that match them Ex: ConnectionId=1 or ConnectionId=1,5,7 | Iris/ReplicationSystem/ObjectReplicationBridge.h | ||
bool FindOrCachePollFrequency
(
const UClass* Class, |
Finds the final poll frequency for a class and cache it for future lookups. | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
void ForceUpdateWorldLocation
(
FNetRefHandle NetRefHandle, |
Force the specified object to update it's cached WorldLocation data. | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
EIrisAsyncLoadingPriority GetClassIrisAsyncLoadingPriority
(
const UClass* Class |
Find the configured async loading priority for a given class. | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
bool GetClassPollFrequency
(
const UClass* Class, |
Find the poll period of a class if it was configured with an override. | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
UE::Net::FNetObjectFilterHandle GetDynamicFilter
(
const UClass* Class, |
Retrieves the dynamic filter to set for the given class. | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
FInstancePreUpdateFunction GetInstancePreUpdateFunction() |
Get the function that we should call before copying state data. | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
float GetMaxTickRate() |
Current max tick rate set by the engine | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
UObject * GetObjectFromReferenceHandle
(
FNetRefHandle RefHandle |
Lookup the UObject associated with the provided Handle. | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
bool IsClassCritical
(
const UClass* Class |
Returns true if the class is considered critical and we force a disconnection if a protocol mismatch prevents instances of this class from replicating. | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
virtual bool IsClassReplicatedByDefault
(
const UClass* Class |
Returns true if the class is replicated by default. This bridge will assume so. | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
void LoadConfig() |
Re-initialize config-driven parameters found in ObjectReplicationBridgeConfig. | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
virtual void OnProtocolMismatchDetected
(
FNetRefHandle ObjectHandle |
Called when we found a divergence between the local and remote protocols when trying to instantiate a remote replicated object. | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
virtual FString PrintConnectionInfo
(
uint32 ConnectionId |
Returns the most relevant description of the client tied to this connection id. | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
void ReinitPollFrequency() |
Re-initialize the poll frequency of all replicated root objects. | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
void SetInstancePreUpdateFunction
(
FInstancePreUpdateFunction InPreUpdateFunction |
Set the function that we should call before copying state data. | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
void SetMaxTickRate
(
float InMaxTickRate |
Change the max tick rate to match the one from the engine | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
void SetPollWithObject
(
FNetRefHandle ObjectToPollWith, |
Force polling of Object when ObjectToPollWith is polled. | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
void SetShouldSubclassUseSameFilterFunction
(
TFunction< bool(const UClass*Class, const UClass*Subclass)> |
Set the function used to determine whether two classes are to be considered equal when it comes to filtering. | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
| Set the function used to determine whether an object should use the default spatial filter unless the class is configured to use some other filter. | Iris/ReplicationSystem/ObjectReplicationBridge.h |
Overridden from UReplicationBridge
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
virtual bool CacheNetRefHandleCreationInfo
(
FNetRefHandle Handle |
Cache info required to allow deferred writing of NetRefHandleCreationInfo | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
virtual void Deinitialize() |
Deinitializes the bridge. Is called during ReplicationSystem deinitialization. | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
virtual void DetachInstance
(
FNetRefHandle Handle |
Called when we detach instance protocol from the local instance | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
virtual void Initialize
(
UReplicationSystem* InReplicationSystem |
Initializes the bridge. Is called during ReplicationSystem initialization. | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
virtual void OnErrorWithNetRefHandleReported
(
UE::Net::ENetRefHandleError ErrorType, |
Called when a remote connection has a critical error caused by a specific NetRefHandle | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
virtual void OnPostReceiveUpdate() |
Invoked after we processed all incoming data | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
virtual void OnPostSendUpdate() |
Invoked after we sent data to all connections. | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
virtual void OnProtocolMismatchReported
(
FNetRefHandle RefHandle, |
Called when a remote connection detected a protocol mismatch when trying to instantiate the NetRefHandle replicated object. | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
virtual void OnStartPreSendUpdate() |
Invoked when the ReplicationSystem starts the PreSendUpdate tick. | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
virtual void PreSendUpdate() |
Invoked before ReplicationSystem copies dirty state data. | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
virtual void PreSendUpdateSingleHandle
(
FNetRefHandle Handle |
Invoked before ReplicationSystem copies dirty state data for a single replicated object. | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
virtual void PruneStaleObjects() |
Invoked post garbage collect to allow us to detect stale objects | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
virtual void RemoveDestructionInfosForGroup
(
UE::Net::FNetObjectGroupHandle GroupHandle |
Remove destruction infos associated with group Passing in an invalid group handle indicates that we should remove all destruction infos | Iris/ReplicationSystem/ObjectReplicationBridge.h | |
virtual void UpdateInstancesWorldLocation() |
Update world locations in FWorldLocations for objects that support it. | Iris/ReplicationSystem/ObjectReplicationBridge.h |