20#include "NetSerialization.generated.h"
27template<
typename ValueType>
51template<
typename ValueType>
178template<
int32 ScaleFactor,
int32 MaxBitsPerComponent>
186 int32 Bias = 1<<(Bits+1);
196 float fact = (
float)ScaleFactor;
207template<
int32 ScaleFactor,
int32 MaxBitsPerComponent>
213template<
int32 ScaleFactor,
int32 MaxBitsPerComponent>
219template<
int32 ScaleFactor,
int32 MaxBitsPerComponent>
228 return UE::Net::Private::LegacyReadPackedVector<ScaleFactor, MaxBitsPerComponent>(
Value, Ar);
232template<
int32 ScaleFactor,
int32 MaxBitsPerComponent>
242 const bool bRet = UE::Net::Private::LegacyReadPackedVector<ScaleFactor, MaxBitsPerComponent>(AsFloat, Ar);
248template<
int32 ScaleFactor,
int32 MaxBitsPerComponent>
255 return UE::Net::SerializeQuantizedVector<ScaleFactor>(
Value, Ar);
260 return UE::Net::Private::LegacyReadPackedVector<ScaleFactor, MaxBitsPerComponent>(
Value, Ar);
264template<
int32 ScaleFactor,
int32 MaxBitsPerComponent>
271 return UE::Net::SerializeQuantizedVector<ScaleFactor>(
Value, Ar);
277 const bool bRet = UE::Net::Private::LegacyReadPackedVector<ScaleFactor, MaxBitsPerComponent>(AsFloat, Ar);
285template<
int32 MaxValue, u
int32 NumBits>
295template<
int32 MaxValue, u
int32 NumBits,
typename T UE_REQUIRES(std::is_
floating_po
int_v<T> && NumBits < 32)>
296bool WriteFixedCompressedFloat(const T Value, FArchive& Ar)
298 using Details = TFixedCompressedFloatDetails<MaxValue, NumBits>;
302 if ( MaxValue > Details::MaxBitValue )
305 const T
Scale = T(Details::MaxBitValue)/MaxValue;
317 if (
Delta > Details::MaxDelta)
323 Ar.SerializeInt(
Delta, Details::SerIntMax );
328template<
int32 MaxValue, u
int32 NumBits,
typename T UE_REQUIRES(std::is_
floating_po
int_v<T> && NumBits < 32)>
329bool ReadFixedCompressedFloat(T& Value, FArchive& Ar)
331 using Details = TFixedCompressedFloatDetails<MaxValue, NumBits>;
334 Ar.SerializeInt(Delta, Details::SerIntMax);
335 T UnscaledValue = static_cast<T>( static_cast<
int32>(Delta) - Details::Bias );
337 if constexpr (MaxValue > Details::MaxBitValue)
340 constexpr T InvScale = MaxValue / (T)Details::MaxBitValue;
346 constexpr T InvScale = T(1) / (T)
Scale;
359template<
int32 MaxValue, u
int32 NumBits>
377template<
int32 MaxValue, u
int32 NumBits>
408USTRUCT(meta = (HasNativeMake =
"/Script/Engine.KismetMathLibrary.MakeVector_NetQuantize", HasNativeBreak =
"/Script/Engine.KismetMathLibrary.BreakVector_NetQuantize"))
425 FVector::operator=(
InVec);
453USTRUCT(meta = (HasNativeMake =
"/Script/Engine.KismetMathLibrary.MakeVector_NetQuantize10", HasNativeBreak =
"/Script/Engine.KismetMathLibrary.BreakVector_NetQuantize10"))
470 FVector::operator=(
InVec);
498USTRUCT(meta = (HasNativeMake =
"/Script/Engine.KismetMathLibrary.MakeVector_NetQuantize100", HasNativeBreak =
"/Script/Engine.KismetMathLibrary.BreakVector_NetQuantize100"))
539USTRUCT(meta = (HasNativeMake =
"/Script/Engine.KismetMathLibrary.MakeVector_NetQuantizeNormal", HasNativeBreak =
"/Script/Engine.KismetMathLibrary.BreakVector_NetQuantizeNormal"))
556 FVector::operator=(
InVec);
617template<
int32 MaxNum,
typename T,
typename A>
627 ArrayNum =
Array.Num();
628 if (ArrayNum > MaxNum)
642 if (ArrayNum > MaxNum)
649 Array.AddDefaulted(ArrayNum);
655template<
int32 MaxNum,
typename T,
typename A>
658 bool bOutSuccess =
true;
662 for (
int32 idx=0; idx < ArrayNum && Ar.
IsError() ==
false; ++idx)
672template<
int32 MaxNum,
typename T,
typename A>
675 bool bOutSuccess =
true;
679 for (
int32 idx=0; idx < ArrayNum && Ar.
IsError() ==
false; ++idx)
681 Array[idx].NetSerialize(Ar, PackageMap, bOutSuccess);
#define check(expr)
Definition AssertionMacros.h:314
EForceInit
Definition CoreMiscDefines.h:154
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
UE::Math::TVector< double > FVector3d
Definition MathFwd.h:60
int32 SafeNetSerializeTArray_HeaderOnly(FArchive &Ar, TArray< T, A > &Array, bool &bOutSuccess)
Definition NetSerialization.h:618
bool NetSerializeOptionalValue(const bool bIsSaving, FArchive &Ar, ValueType &Value, const ValueType &DefaultValue, class UPackageMap *PackageMap)
Definition NetSerialization.h:52
bool SafeNetSerializeTArray_WithNetSerialize(FArchive &Ar, TArray< T, A > &Array, class UPackageMap *PackageMap)
Definition NetSerialization.h:673
bool SafeNetSerializeTArray_Default(FArchive &Ar, TArray< T, A > &Array)
Definition NetSerialization.h:656
bool SerializeFixedVector(FVector3f &Vector, FArchive &Ar)
Definition NetSerialization.h:360
bool SerializeOptionalValue(const bool bIsSaving, FArchive &Ar, ValueType &Value, const ValueType &DefaultValue)
Definition NetSerialization.h:28
bool SerializePackedVector(FVector3f &Value, FArchive &Ar)
Definition NetSerialization.h:249
bool WritePackedVector(FVector3f Value, FArchive &Ar)
Definition NetSerialization.h:208
bool ReadPackedVector(FVector3f &Value, FArchive &Ar)
Definition NetSerialization.h:220
const bool
Definition NetworkReplayStreaming.h:178
#define USTRUCT(...)
Definition ObjectMacros.h:746
#define GENERATED_USTRUCT_BODY(...)
Definition ObjectMacros.h:767
USkinnedMeshComponent float
Definition SkinnedMeshComponent.h:60
Definition Archive.h:1208
virtual void SerializeInt(uint32 &Value, uint32 Max)
Definition Archive.h:1717
virtual CORE_API uint32 EngineNetVer() const
Definition Archive.cpp:1497
virtual CORE_API void UsingCustomVersion(const struct FGuid &Guid)
Definition Archive.cpp:590
UE_FORCEINLINE_HINT bool IsLoading() const
Definition Archive.h:236
UE_FORCEINLINE_HINT bool IsSaving() const
Definition Archive.h:248
virtual void SerializeBits(void *V, int64 LengthBits)
Definition Archive.h:1707
UE_FORCEINLINE_HINT bool IsError() const
Definition Archive.h:362
constexpr int32 MaxValue
Definition LandscapeDataAccess.h:26
bool NetDeltaSerialize(FNetDeltaSerializeInfo &DeltaParms, void *Data)
Definition Class.h:1314
Definition NetworkVersion.cpp:28
bool ReadQuantizedVector(const int32 Scale, T &Value, FArchive &Ar)
Definition QuantizedVectorSerialization.cpp:111
bool WriteQuantizedVector(const int32 Scale, const T &Value, FArchive &Ar)
Definition QuantizedVectorSerialization.cpp:38
bool LegacyReadPackedVector(FVector3f &Value, FArchive &Ar)
Definition NetSerialization.h:179
@ Max
Definition EscalationStates.h:607
CORE_API static const FGuid Guid
Definition EngineNetworkCustomVersion.h:106
@ Ver21AndViewPitchOnly_DONOTUSE
Definition EngineNetworkCustomVersion.h:81
@ PackedVectorLWCSupport
Definition EngineNetworkCustomVersion.h:78
Definition NetSerialization.h:500
bool NetSerialize(FArchive &Ar, class UPackageMap *Map, bool &bOutSuccess)
Definition NetSerialization.h:516
FVector_NetQuantize100(const FVector3f &InVec)
Definition NetSerialization.h:513
FVector_NetQuantize100(double InX, double InY, double InZ)
Definition NetSerialization.h:509
FVector_NetQuantize100(const FVector3d &InVec)
Definition NetSerialization.h:514
Definition NetSerialization.h:455
FVector_NetQuantize10(double InX, double InY, double InZ)
Definition NetSerialization.h:464
FVector_NetQuantize10(const FVector &InVec)
Definition NetSerialization.h:468
bool NetSerialize(FArchive &Ar, class UPackageMap *Map, bool &bOutSuccess)
Definition NetSerialization.h:473
Definition NetSerialization.h:541
FVector_NetQuantizeNormal(const FVector &InVec)
Definition NetSerialization.h:554
bool NetSerialize(FArchive &Ar, class UPackageMap *Map, bool &bOutSuccess)
Definition NetSerialization.h:559
FVector_NetQuantizeNormal(double InX, double InY, double InZ)
Definition NetSerialization.h:550
Definition NetSerialization.h:410
bool NetSerialize(FArchive &Ar, class UPackageMap *Map, bool &bOutSuccess)
Definition NetSerialization.h:428
FVector_NetQuantize(double InX, double InY, double InZ)
Definition NetSerialization.h:419
FVector_NetQuantize(const FVector &InVec)
Definition NetSerialization.h:423
Definition NetSerialization.h:287
static constexpr int32 Bias
Definition NetSerialization.h:290
static constexpr int32 SerIntMax
Definition NetSerialization.h:291
static constexpr int32 MaxBitValue
Definition NetSerialization.h:289
static constexpr int32 MaxDelta
Definition NetSerialization.h:292
Definition StructOpsTypeTraits.h:11
@ WithNetSharedSerialization
Definition StructOpsTypeTraits.h:31
@ WithNetSerializer
Definition StructOpsTypeTraits.h:26
@ WithNetDeltaSerializer
Definition StructOpsTypeTraits.h:27
Definition StructOpsTypeTraits.h:46