Navigation
API > API/Runtime > API/Runtime/IrisCore
TPolymorphicStructNetSerializerImpl
Helper to implement serializers that requires dynamic polymorphism. It can either be used to declare a typed serializer or be used as an internal helper. ExternalSourceType is the class/struct that has the TSharedPtr
!BIG DISCLAIMER:!
This serializer was written to mimic the behavior seen in FGameplayAbilityTargetDataHandle and FGameplayEffectContextHandle which both are written with the intent of being used for RPCs and not being used for replicated properties and uses a TSharedPointer to hold the polymorphic struct
That said, IF the serializer is used for replicated properties it has very specific requirements on the implementation of the SourceType to work correctly.
The sourcetype MUST provide a custom assignment operator performing a deep-copy/clone
The sourcetype MUST define a comparison operator that compares the instance data of the stored ExternalSourceItemType
TStructOpsTypeTraits::WithCopy and TStructOpsTypeTraits::WithIdenticalViaEquality must be specified
| Name | TPolymorphicStructNetSerializerImpl |
| Type | struct |
| Header File | /Engine/Source/Runtime/Net/Iris/Public/Iris/Serialization/PolymorphicNetSerializerImpl.h |
| Include Path | #include "Iris/Serialization/PolymorphicNetSerializerImpl.h" |
Syntax
template<typename ExternalSourceType, typename ExternalSourceItemType, TSharedPtr < ExternalSourceItemType > & GetItem>
struct TPolymorphicStructNetSerializerImpl : protected UE::Net::Private::FPolymorphicStructNetSerializerInternal
Inheritance Hierarchy
- FPolymorphicStructNetSerializerInternal → TPolymorphicStructNetSerializerImpl
Structs
| Name | Remarks |
|---|---|
| FQuantizedData | |
| FSourceItemTypeDeleter |
Typedefs
| Name | Type | Remarks | Include Path |
|---|---|---|---|
| ConfigType | FPolymorphicStructNetSerializerConfig | Iris/Serialization/PolymorphicNetSerializerImpl.h | |
| FTypeInfo | FPolymorphicNetSerializerScriptStructCache::FTypeInfo | Iris/Serialization/PolymorphicNetSerializerImpl.h | |
| QuantizedType | FQuantizedData | Iris/Serialization/PolymorphicNetSerializerImpl.h | |
| SourceItemType | ExternalSourceItemType | Iris/Serialization/PolymorphicNetSerializerImpl.h | |
| SourceType | ExternalSourceType | Iris/Serialization/PolymorphicNetSerializerImpl.h | |
| ThisType | TPolymorphicStructNetSerializerImpl< ExternalSourceType, ExternalSourceItemType, GetItem > | Iris/Serialization/PolymorphicNetSerializerImpl.h |
Constants
| Name | Type | Remarks | Include Path |
|---|---|---|---|
| bHasCustomNetReference | bool | Iris/Serialization/PolymorphicNetSerializerImpl.h | |
| bHasDynamicState | bool | Traits. | Iris/Serialization/PolymorphicNetSerializerImpl.h |
| bIsForwardingSerializer | bool | Iris/Serialization/PolymorphicNetSerializerImpl.h |
Functions
Static
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
static void CloneDynamicState
(
FNetSerializationContext&, |
Iris/Serialization/PolymorphicNetSerializerImpl.h | ||
static void CollectNetReferences
(
FNetSerializationContext&, |
Iris/Serialization/PolymorphicNetSerializerImpl.h | ||
static void Dequantize
(
FNetSerializationContext&, |
Iris/Serialization/PolymorphicNetSerializerImpl.h | ||
static void Deserialize
(
FNetSerializationContext&, |
Iris/Serialization/PolymorphicNetSerializerImpl.h | ||
static void DeserializeDelta
(
FNetSerializationContext&, |
Iris/Serialization/PolymorphicNetSerializerImpl.h | ||
static void FreeDynamicState
(
FNetSerializationContext&, |
Iris/Serialization/PolymorphicNetSerializerImpl.h | ||
static void InitTypeCache() |
Iris/Serialization/PolymorphicNetSerializerImpl.h | ||
static void InternalFreeItem
(
FNetSerializationContext& Context, |
Iris/Serialization/PolymorphicNetSerializerImpl.h | ||
static bool IsEqual
(
FNetSerializationContext&, |
Iris/Serialization/PolymorphicNetSerializerImpl.h | ||
static void Quantize
(
FNetSerializationContext&, |
Iris/Serialization/PolymorphicNetSerializerImpl.h | ||
static void Serialize
(
FNetSerializationContext&, |
TPolymorphicStructNetSerializerImpl | Iris/Serialization/PolymorphicNetSerializerImpl.h | |
static void SerializeDelta
(
FNetSerializationContext&, |
Iris/Serialization/PolymorphicNetSerializerImpl.h | ||
static bool Validate
(
FNetSerializationContext&, |
Iris/Serialization/PolymorphicNetSerializerImpl.h |