How UEnums are replicated

dose UE4 net serialize all UEnums as 1 byte or its smart enough to compress by max value of the enum?
for instance the following enum must be serialized in 2 bits.

UENUM()
enum EState : uint8
{
	Default,
	Move,
	Crouch,
	Swim,
}

bool UEnumProperty::NetSerializeItem(FArchive& Ar, UPackageMap* Map, void* Data, TArray* MetaData) const
{
if (Ar.EngineNetVer() < HISTORY_FIX_ENUM_SERIALIZATION)
{
Ar.SerializeBits(Data, FMath::CeilLogTwo64(Enum->GetMaxEnumValue()));
}
else
{
Ar.SerializeBits(Data, FMath::CeilLogTwo64(Enum->GetMaxEnumValue() + 1));
}
return 1;
}

1 Like