UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
NetBitStreamUtil.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreTypes.h"
10#include "Iris/IrisConfig.h"
11
12namespace UE::Net
13{
14
17{
18public:
20 : Writer(InWriter)
21 , OriginalPos(InWriter.GetPosBits())
22 {
23#if UE_NETBITSTREAMWRITER_VALIDATE
24 check(!Writer.IsOverflown());
25#endif
26
27 Writer.Seek(WritePos);
28 }
29
31 {
32#if UE_NETBITSTREAMWRITER_VALIDATE
33 check(Writer.GetPosBits() <= OriginalPos);
34#endif
35 Writer.Seek(OriginalPos);
36 }
37
38private:
39 FNetBitStreamWriter& Writer;
40 const uint32 OriginalPos;
41};
42
43
48{
49public:
51 : Writer(InWriter)
52 , StartPos(InWriter.GetPosBits())
53 {
54 }
55
57 {
58 if (Writer.IsOverflown())
59 {
60 Writer.Seek(StartPos);
61 }
62 }
63
64 void Rollback()
65 {
66 Writer.Seek(StartPos);
67 }
68
69 uint32 GetStartPos() const { return StartPos; }
70
71private:
72 FNetBitStreamWriter& Writer;
73 const uint32 StartPos;
74};
75
80{
81 Writer->WriteBits((uint32)Value, 32);
82 Writer->WriteBits((uint32)(Value >> 32), 32);
83}
84
89{
90 uint64 Value = Reader->ReadBits(32);
91 uint64 HighValue = Reader->ReadBits(32);
92 Value |= HighValue << 32;
93
94 return Value;
95}
96
101{
102 WriteUint64(Writer, static_cast<uint64>(Value));
103}
104
109{
110 uint64 Value = ReadUint64(Reader);
111 return static_cast<int64>(Value);
112}
113
115IRISCORE_API void WritePackedUint64(FNetBitStreamWriter* Writer, uint64 Value);
116
118IRISCORE_API uint64 ReadPackedUint64(FNetBitStreamReader* Reader);
119
121IRISCORE_API void WritePackedInt64(FNetBitStreamWriter* Writer, int64 Value);
122
124IRISCORE_API int64 ReadPackedInt64(FNetBitStreamReader* Reader);
125
127IRISCORE_API void WritePackedUint32(FNetBitStreamWriter* Writer, uint32 Value);
128
130IRISCORE_API uint32 ReadPackedUint32(FNetBitStreamReader* Reader);
131
133IRISCORE_API void WritePackedInt32(FNetBitStreamWriter* Writer, int32 Value);
134
136IRISCORE_API int32 ReadPackedInt32(FNetBitStreamReader* Reader);
137
139IRISCORE_API void WritePackedUint16(FNetBitStreamWriter* Writer, uint16 Value);
140
142IRISCORE_API uint16 ReadPackedUint16(FNetBitStreamReader* Reader);
143
145IRISCORE_API void ReadString(FNetBitStreamReader* Reader, FString& OutString);
146
148IRISCORE_API void WriteString(FNetBitStreamWriter* Writer, const FString& String);
149
151IRISCORE_API void WriteString(FNetBitStreamWriter* Writer, FStringView String);
152
154IRISCORE_API void WriteVector(FNetBitStreamWriter* Writer, const FVector& Vector);
155
157IRISCORE_API void ReadVector(FNetBitStreamReader* Reader, FVector& Vector);
158
160IRISCORE_API void WriteVector(FNetBitStreamWriter* Writer, const FVector& Vector, const FVector& DefaultValue, float Epsilon);
161
163IRISCORE_API void ReadVector(FNetBitStreamReader* Reader, FVector& OutVector, const FVector& DefaultValue);
164
166IRISCORE_API void WriteRotator(FNetBitStreamWriter* Writer, const FRotator& Vector);
167
169IRISCORE_API void ReadRotator(FNetBitStreamReader* Reader, FRotator& Vector);
170
176IRISCORE_API void WriteRotator(FNetBitStreamWriter* Writer, const FRotator& Rotator, const FRotator& DefaultValue, float Epsilon);
177
179IRISCORE_API void ReadRotator(FNetBitStreamReader* Reader, FRotator& OutRotator, const FRotator& DefaultValue);
180
191
196
201IRISCORE_API void WriteSparseBitArrayDelta(FNetBitStreamWriter* Writer, const uint32* Data, const uint32* OldData, uint32 BitCount);
202
206IRISCORE_API void ReadSparseBitArrayDelta(FNetBitStreamReader* Reader, uint32* OutData, const uint32* OldData, uint32 BitCount);
207
211IRISCORE_API void WriteSentinelBits(FNetBitStreamWriter* Writer, uint32 BitCount = 32U);
212
217IRISCORE_API bool ReadAndVerifySentinelBits(FNetBitStreamReader* Reader, const TCHAR* ErrorString = TEXT("Sentinel"), uint32 BitCount = 32U);
218
224IRISCORE_API void WriteBytes(FNetBitStreamWriter* Writer, const uint8* Src, uint32 BytesToWrite);
225
230IRISCORE_API void ReadBytes(FNetBitStreamReader* Reader, uint8* Destination, uint32 BytesToRead);
231
233IRISCORE_API void WriteConditionallyQuantizedVector(FNetBitStreamWriter* Writer, const FVector& Vector, const FVector& DefaultValue, bool bQuantize);
234
236IRISCORE_API void ReadConditionallyQuantizedVector(FNetBitStreamReader* Reader, FVector& OutVector, const FVector& DefaultValue);
237
238} // end namespace UE::Net
#define check(expr)
Definition AssertionMacros.h:314
#define TEXT(x)
Definition Platform.h:1272
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
FPlatformTypes::int64 int64
A 64-bit signed integer.
Definition Platform.h:1127
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
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
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 NetBitStreamReader.h:11
IRISCORE_API uint32 ReadBits(uint32 BitCount)
Definition NetBitStreamReader.cpp:54
Definition NetBitStreamUtil.h:48
void Rollback()
Definition NetBitStreamUtil.h:64
FNetBitStreamRollbackScope(FNetBitStreamWriter &InWriter)
Definition NetBitStreamUtil.h:50
~FNetBitStreamRollbackScope()
Definition NetBitStreamUtil.h:56
uint32 GetStartPos() const
Definition NetBitStreamUtil.h:69
Definition NetBitStreamUtil.h:17
FNetBitStreamWriteScope(FNetBitStreamWriter &InWriter, uint32 WritePos)
Definition NetBitStreamUtil.h:19
~FNetBitStreamWriteScope()
Definition NetBitStreamUtil.h:30
Definition NetBitStreamWriter.h:11
bool IsOverflown() const
Definition NetBitStreamWriter.h:72
IRISCORE_API void Seek(uint32 BitPosition)
Definition NetBitStreamWriter.cpp:215
uint32 GetPosBits() const
Definition NetBitStreamWriter.h:60
IRISCORE_API void WriteBits(uint32 Value, uint32 BitCount)
Definition NetBitStreamWriter.cpp:59
@ None
Definition ReplicationDataStreamDebug.h:25
void WriteSparseBitArrayDelta(FNetBitStreamWriter *Writer, const uint32 *Data, const uint32 *OldData, uint32 BitCount, WriteSparseUint32Func &&WriteSparseUint32Function)
Definition NetBitStreamUtil.cpp:711
void ReadSparseBitArray(FNetBitStreamReader *Reader, uint32 *OutData, uint32 BitCount, GetDataFunc &&GetDataFunction, ReadSparseUint32Func &&ReadSparseUint32Function)
Definition NetBitStreamUtil.cpp:650
void WriteSparseBitArray(FNetBitStreamWriter *Writer, const uint32 *Data, uint32 BitCount, GetDataFunc &&GetDataFunction, WriteSparseUint32Func &&WriteSparseUint32Function)
Definition NetBitStreamUtil.cpp:589
void ReadSparseBitArrayDelta(FNetBitStreamReader *Reader, uint32 *OutData, const uint32 *OldData, uint32 BitCount, ReadSparseUint32Func &&ReadSparseUint32Function)
Definition NetBitStreamUtil.cpp:764
Definition NetworkVersion.cpp:28
void WriteRotator(FNetBitStreamWriter *Writer, const FRotator &Rotator)
Definition NetBitStreamUtil.cpp:367
void WriteSentinelBits(FNetBitStreamWriter *Writer, uint32 BitCount)
Definition NetBitStreamUtil.cpp:910
void WritePackedInt64(FNetBitStreamWriter *Writer, int64 Value)
Definition NetBitStreamUtil.cpp:55
void WriteString(FNetBitStreamWriter *Writer, FStringView StringView)
Definition NetBitStreamUtil.cpp:160
void ReadConditionallyQuantizedVector(UE::Net::FNetBitStreamReader *Reader, FVector &OutVector, const FVector &DefaultValue)
Definition NetBitStreamUtil.cpp:1018
uint64 ReadUint64(FNetBitStreamReader *Reader)
Definition NetBitStreamUtil.h:88
void WriteBytes(FNetBitStreamWriter *Writer, const uint8 *Src, uint32 BytesToWrite)
Definition NetBitStreamUtil.cpp:952
uint32 ReadPackedUint32(FNetBitStreamReader *Reader)
Definition NetBitStreamUtil.cpp:108
int64 ReadInt64(FNetBitStreamReader *Reader)
Definition NetBitStreamUtil.h:108
void WriteConditionallyQuantizedVector(UE::Net::FNetBitStreamWriter *Writer, const FVector &Vector, const FVector &DefaultValue, bool bQuantize)
Definition NetBitStreamUtil.cpp:981
uint16 ReadPackedUint16(FNetBitStreamReader *Reader)
Definition NetBitStreamUtil.cpp:151
void ReadString(FNetBitStreamReader *Reader, FString &OutString)
Definition NetBitStreamUtil.cpp:230
uint64 ReadPackedUint64(FNetBitStreamReader *Reader)
Definition NetBitStreamUtil.cpp:37
void ReadRotator(FNetBitStreamReader *Reader, FRotator &Rotator)
Definition NetBitStreamUtil.cpp:390
void ReadBytes(FNetBitStreamReader *Reader, uint8 *Destination, uint32 BytesToRead)
Definition NetBitStreamUtil.cpp:923
void WriteUint64(FNetBitStreamWriter *Writer, uint64 Value)
Definition NetBitStreamUtil.h:79
int64 ReadPackedInt64(FNetBitStreamReader *Reader)
Definition NetBitStreamUtil.cpp:74
void WritePackedUint16(FNetBitStreamWriter *Writer, uint16 Value)
Definition NetBitStreamUtil.cpp:140
void ReadVector(FNetBitStreamReader *Reader, FVector &Vector)
Definition NetBitStreamUtil.cpp:321
ESparseBitArraySerializationHint
Definition NetBitStreamUtil.h:182
void WritePackedUint64(FNetBitStreamWriter *Writer, uint64 Value)
Definition NetBitStreamUtil.cpp:18
void WriteVector(FNetBitStreamWriter *Writer, const FVector &Vector)
Definition NetBitStreamUtil.cpp:298
void WritePackedUint32(FNetBitStreamWriter *Writer, uint32 Value)
Definition NetBitStreamUtil.cpp:97
void WriteInt64(FNetBitStreamWriter *Writer, int64 Value)
Definition NetBitStreamUtil.h:100
bool ReadAndVerifySentinelBits(FNetBitStreamReader *Reader, const TCHAR *ErrorString, uint32 BitCount)
Definition NetBitStreamUtil.cpp:915
void WritePackedInt32(FNetBitStreamWriter *Writer, int32 Value)
Definition NetBitStreamUtil.cpp:117
int32 ReadPackedInt32(FNetBitStreamReader *Reader)
Definition NetBitStreamUtil.cpp:127