Skip to main content

Struct FastBufferWriter

Optimized class used for writing values into a byte stream FastBufferReader BytePacker ByteUnpacker

Implements#

System.IDisposable

Inherited Members#

System.ValueType.Equals(System.Object)

System.ValueType.GetHashCode()

System.ValueType.ToString()

System.Object.Equals(System.Object, System.Object)

System.Object.GetType()

System.Object.ReferenceEquals(System.Object, System.Object)

Namespace: Unity.Netcode#
Assembly: MLAPI.dll#
Syntax#
public struct FastBufferWriter : IDisposable

Constructors#

FastBufferWriter(Int32, Allocator, Int32)#

Create a FastBufferWriter.

Declaration#
public FastBufferWriter(int size, Allocator allocator, int maxSize = -1)
Parameters#
TypeNameDescription
System.Int32sizeSize of the buffer to create
AllocatorallocatorAllocator to use in creating it
System.Int32maxSizeMaximum size the buffer can grow to. If less than size, buffer cannot grow.

Properties#

Capacity#

The current total buffer size

Declaration#
public readonly int Capacity { get; }
Property Value#
TypeDescription
System.Int32

IsInitialized#

Gets a value indicating whether the writer has been initialized and a handle allocated.

Declaration#
public readonly bool IsInitialized { get; }
Property Value#
TypeDescription
System.Boolean

Length#

The total amount of bytes that have been written to the stream

Declaration#
public readonly int Length { get; }
Property Value#
TypeDescription
System.Int32

MaxCapacity#

The maximum possible total buffer size

Declaration#
public readonly int MaxCapacity { get; }
Property Value#
TypeDescription
System.Int32

Position#

The current write position

Declaration#
public readonly int Position { get; }
Property Value#
TypeDescription
System.Int32

Methods#

CopyFrom(FastBufferWriter)#

Copy the contents of another writer into this writer. The contents will be copied from the beginning of the other writer to its current position. They will be copied to this writer starting at this writer's current position.

Declaration#
public void CopyFrom(FastBufferWriter other)
Parameters#
TypeNameDescription
FastBufferWriterotherWriter to copy to

CopyTo(FastBufferWriter)#

Copy the contents of this writer into another writer. The contents will be copied from the beginning of this writer to its current position. They will be copied to the other writer starting at the other writer's current position.

Declaration#
public void CopyTo(FastBufferWriter other)
Parameters#
TypeNameDescription
FastBufferWriterotherWriter to copy to

Dispose()#

System.IDisposable implementation that frees the allocated buffer

Declaration#
public void Dispose()

EnterBitwiseContext()#

Retrieve a BitWriter to be able to perform bitwise operations on the buffer. No bytewise operations can be performed on the buffer until bitWriter.Dispose() has been called. At the end of the operation, FastBufferWriter will remain byte-aligned.

Declaration#
public BitWriter EnterBitwiseContext()
Returns#
TypeDescription
BitWriterA BitWriter

GetUnsafePtr()#

Gets a direct pointer to the underlying buffer

Declaration#
public byte *GetUnsafePtr()
Returns#
TypeDescription
System.Byte*

GetUnsafePtrAtCurrentPosition()#

Gets a direct pointer to the underlying buffer at the current read position

Declaration#
public byte *GetUnsafePtrAtCurrentPosition()
Returns#
TypeDescription
System.Byte*

GetWriteSize(String, Boolean)#

Get the required size to write a string

Declaration#
public static int GetWriteSize(string s, bool oneByteChars = false)
Parameters#
TypeNameDescription
System.StringsThe string to write
System.BooleanoneByteCharsWhether or not to use one byte per character. This will only allow ASCII
Returns#
TypeDescription
System.Int32

GetWriteSize\<T>()#

Get the size required to write an unmanaged value of type T

Declaration#
public static int GetWriteSize<T>()
where T : struct
Returns#
TypeDescription
System.Int32
Type Parameters#
NameDescription
T

GetWriteSize\<T>(in T)#

Get the write size for a FixedString

Declaration#
public static int GetWriteSize<T>(in T value)
where T : struct, INativeList<byte>, IUTF8Bytes
Parameters#
TypeNameDescription
Tvalue
Returns#
TypeDescription
System.Int32
Type Parameters#
NameDescription
T

GetWriteSize\<T>(in T, FastBufferWriter.ForStructs)#

Get the write size for any general unmanaged value The ForStructs value here makes this the lowest-priority overload so other versions will be prioritized over this if they match

Declaration#
public static int GetWriteSize<T>(in T value, FastBufferWriter.ForStructs unused = default(FastBufferWriter.ForStructs))
where T : struct
Parameters#
TypeNameDescription
Tvalue
FastBufferWriter.ForStructsunused
Returns#
TypeDescription
System.Int32
Type Parameters#
NameDescription
T

GetWriteSize\<T>(T[], Int32, Int32)#

Get the required size to write an unmanaged array

Declaration#
public static int GetWriteSize<T>(T[] array, int count = -1, int offset = 0)
where T : struct
Parameters#
TypeNameDescription
T[]arrayThe array to write
System.Int32countThe amount of elements to write
System.Int32offsetWhere in the array to start
Returns#
TypeDescription
System.Int32
Type Parameters#
NameDescription
T

Seek(Int32)#

Move the write position in the stream. Note that moving forward past the current length will extend the buffer's Length value even if you don't write.

Declaration#
public void Seek(int where)
Parameters#
TypeNameDescription
System.Int32whereAbsolute value to move the position to, truncated to Capacity

ToArray()#

Returns an array representation of the underlying byte buffer. !!Allocates a new array!!

Declaration#
public byte[] ToArray()
Returns#
TypeDescription
System.Byte[]

Truncate(Int32)#

Truncate the stream by setting Length to the specified value. If Position is greater than the specified value, it will be moved as well.

Declaration#
public void Truncate(int where = -1)
Parameters#
TypeNameDescription
System.Int32whereThe value to truncate to. If -1, the current position will be used.

TryBeginWrite(Int32)#

Allows faster serialization by batching bounds checking. When you know you will be writing multiple fields back-to-back and you know the total size, you can call TryBeginWrite() once on the total size, and then follow it with calls to WriteValue() instead of WriteValueSafe() for faster serialization.

Unsafe write operations will throw OverflowException in editor and development builds if you go past the point you've marked using TryBeginWrite(). In release builds, OverflowException will not be thrown for performance reasons, since the point of using TryBeginWrite is to avoid bounds checking in the following operations in release builds.

Declaration#
public bool TryBeginWrite(int bytes)
Parameters#
TypeNameDescription
System.Int32bytesAmount of bytes to write
Returns#
TypeDescription
System.BooleanTrue if the write is allowed, false otherwise
Exceptions#
TypeCondition
System.InvalidOperationExceptionIf called while in a bitwise context

TryBeginWriteInternal(Int32)#

Internal version of TryBeginWrite. Differs from TryBeginWrite only in that it won't ever move the AllowedWriteMark backward.

Declaration#
public bool TryBeginWriteInternal(int bytes)
Parameters#
TypeNameDescription
System.Int32bytes
Returns#
TypeDescription
System.Boolean
Exceptions#
TypeCondition
System.InvalidOperationException

TryBeginWriteValue\<T>(in T)#

Allows faster serialization by batching bounds checking. When you know you will be writing multiple fields back-to-back and you know the total size, you can call TryBeginWrite() once on the total size, and then follow it with calls to WriteValue() instead of WriteValueSafe() for faster serialization.

Unsafe write operations will throw OverflowException in editor and development builds if you go past the point you've marked using TryBeginWrite(). In release builds, OverflowException will not be thrown for performance reasons, since the point of using TryBeginWrite is to avoid bounds checking in the following operations in release builds. Instead, attempting to write past the marked position in release builds will write to random memory and cause undefined behavior, likely including instability and crashes.

Declaration#
public bool TryBeginWriteValue<T>(in T value)
where T : struct
Parameters#
TypeNameDescription
TvalueThe value of the type T you want to write
Returns#
TypeDescription
System.BooleanTrue if the write is allowed, false otherwise
Type Parameters#
NameDescription
TThe value type to write
Exceptions#
TypeCondition
System.InvalidOperationExceptionIf called while in a bitwise context

WriteByte(Byte)#

Write a byte to the stream.

Declaration#
public void WriteByte(byte value)
Parameters#
TypeNameDescription
System.BytevalueValue to write

WriteBytes(Byte*, Int32, Int32)#

Write multiple bytes to the stream

Declaration#
public void WriteBytes(byte *value, int size, int offset = 0)
Parameters#
TypeNameDescription
System.Byte*valueValue to write
System.Int32sizeNumber of bytes to write
System.Int32offsetOffset into the buffer to begin writing

WriteBytes(Byte[], Int32, Int32)#

Write multiple bytes to the stream

Declaration#
public void WriteBytes(byte[] value, int size = -1, int offset = 0)
Parameters#
TypeNameDescription
System.Byte[]valueValue to write
System.Int32sizeNumber of bytes to write
System.Int32offsetOffset into the buffer to begin writing

WriteByteSafe(Byte)#

Write a byte to the stream.

"Safe" version - automatically performs bounds checking. Less efficient than bounds checking for multiple writes at once by calling TryBeginWrite.

Declaration#
public void WriteByteSafe(byte value)
Parameters#
TypeNameDescription
System.BytevalueValue to write

WriteBytesSafe(Byte*, Int32, Int32)#

Write multiple bytes to the stream

"Safe" version - automatically performs bounds checking. Less efficient than bounds checking for multiple writes at once by calling TryBeginWrite.

Declaration#
public void WriteBytesSafe(byte *value, int size, int offset = 0)
Parameters#
TypeNameDescription
System.Byte*valueValue to write
System.Int32sizeNumber of bytes to write
System.Int32offsetOffset into the buffer to begin writing

WriteBytesSafe(Byte[], Int32, Int32)#

Write multiple bytes to the stream

"Safe" version - automatically performs bounds checking. Less efficient than bounds checking for multiple writes at once by calling TryBeginWrite.

Declaration#
public void WriteBytesSafe(byte[] value, int size = -1, int offset = 0)
Parameters#
TypeNameDescription
System.Byte[]valueValue to write
System.Int32sizeNumber of bytes to write
System.Int32offsetOffset into the buffer to begin writing

WriteNetworkSerializable\<T>(in T)#

Write an INetworkSerializable

Declaration#
public void WriteNetworkSerializable<T>(in T value)
where T : INetworkSerializable
Parameters#
TypeNameDescription
TvalueThe value to write
Type Parameters#
NameDescription
T

WriteNetworkSerializable\<T>(T[], Int32, Int32)#

Write an array of INetworkSerializables

Declaration#
public void WriteNetworkSerializable<T>(T[] array, int count = -1, int offset = 0)
where T : INetworkSerializable
Parameters#
TypeNameDescription
T[]arrayThe value to write
System.Int32count
System.Int32offset
Type Parameters#
NameDescription
T

WritePartialValue\<T>(T, Int32, Int32)#

Write a partial value. The specified number of bytes is written from the value and the rest is ignored.

Declaration#
public void WritePartialValue<T>(T value, int bytesToWrite, int offsetBytes = 0)
where T : struct
Parameters#
TypeNameDescription
TvalueValue to write
System.Int32bytesToWriteNumber of bytes
System.Int32offsetBytesOffset into the value to begin reading the bytes
Type Parameters#
NameDescription
T
Exceptions#
TypeCondition
System.InvalidOperationException
System.OverflowException

WriteValue(in Color)#

Write a Color

Declaration#
public void WriteValue(in Color value)
Parameters#
TypeNameDescription
Colorvaluethe value to write

WriteValue(Color[])#

Write a Color array

Declaration#
public void WriteValue(Color[] value)
Parameters#
TypeNameDescription
Color[]valuethe values to write

WriteValue(in Color32)#

Write a Color32

Declaration#
public void WriteValue(in Color32 value)
Parameters#
TypeNameDescription
Color32valuethe value to write

WriteValue(Color32[])#

Write a Color32 array

Declaration#
public void WriteValue(Color32[] value)
Parameters#
TypeNameDescription
Color32[]valuethe values to write

WriteValue(in Quaternion)#

Write a Quaternion

Declaration#
public void WriteValue(in Quaternion value)
Parameters#
TypeNameDescription
Quaternionvaluethe value to write

WriteValue(Quaternion[])#

Write a Quaternion array

Declaration#
public void WriteValue(Quaternion[] value)
Parameters#
TypeNameDescription
Quaternion[]valuethe values to write

WriteValue(in Ray)#

Write a Ray

Declaration#
public void WriteValue(in Ray value)
Parameters#
TypeNameDescription
Rayvaluethe value to write

WriteValue(Ray[])#

Write a Ray array

Declaration#
public void WriteValue(Ray[] value)
Parameters#
TypeNameDescription
Ray[]valuethe values to write

WriteValue(in Ray2D)#

Write a Ray2D

Declaration#
public void WriteValue(in Ray2D value)
Parameters#
TypeNameDescription
Ray2Dvaluethe value to write

WriteValue(Ray2D[])#

Write a Ray2D array

Declaration#
public void WriteValue(Ray2D[] value)
Parameters#
TypeNameDescription
Ray2D[]valuethe values to write

WriteValue(String, Boolean)#

Writes a string

Declaration#
public void WriteValue(string s, bool oneByteChars = false)
Parameters#
TypeNameDescription
System.StringsThe string to write
System.BooleanoneByteCharsWhether or not to use one byte per character. This will only allow ASCII

WriteValue(in Vector2)#

Write a Vector2

Declaration#
public void WriteValue(in Vector2 value)
Parameters#
TypeNameDescription
Vector2valuethe value to write

WriteValue(Vector2[])#

Write a Vector2 array

Declaration#
public void WriteValue(Vector2[] value)
Parameters#
TypeNameDescription
Vector2[]valuethe values to write

WriteValue(in Vector2Int)#

Write a Vector2Int

Declaration#
public void WriteValue(in Vector2Int value)
Parameters#
TypeNameDescription
Vector2Intvaluethe value to write

WriteValue(Vector2Int[])#

Write a Vector2Int array

Declaration#
public void WriteValue(Vector2Int[] value)
Parameters#
TypeNameDescription
Vector2Int[]valuethe values to write

WriteValue(in Vector3)#

Write a Vector3

Declaration#
public void WriteValue(in Vector3 value)
Parameters#
TypeNameDescription
Vector3valuethe value to write

WriteValue(Vector3[])#

Write a Vector3 array

Declaration#
public void WriteValue(Vector3[] value)
Parameters#
TypeNameDescription
Vector3[]valuethe values to write

WriteValue(in Vector3Int)#

Write a Vector3Int

Declaration#
public void WriteValue(in Vector3Int value)
Parameters#
TypeNameDescription
Vector3Intvaluethe value to write

WriteValue(Vector3Int[])#

Write a Vector3Int array

Declaration#
public void WriteValue(Vector3Int[] value)
Parameters#
TypeNameDescription
Vector3Int[]valuethe value to write

WriteValue(in Vector4)#

Write a Vector4

Declaration#
public void WriteValue(in Vector4 value)
Parameters#
TypeNameDescription
Vector4valuethe value to write

WriteValue(Vector4[])#

Write a Vector4

Declaration#
public void WriteValue(Vector4[] value)
Parameters#
TypeNameDescription
Vector4[]valuethe values to write

WriteValue\<T>(in T, FastBufferWriter.ForEnums)#

Write an enum value

Declaration#
public void WriteValue<T>(in T value, FastBufferWriter.ForEnums unused = default(FastBufferWriter.ForEnums))
where T : struct, Enum
Parameters#
TypeNameDescription
TvalueThe value to write
FastBufferWriter.ForEnumsunusedAn unused parameter used for enabling overload resolution based on generic constraints
Type Parameters#
NameDescription
TThe type being serialized

WriteValue\<T>(in T, FastBufferWriter.ForFixedStrings)#

Write a FixedString value. Writes only the part of the string that's actually used. When calling TryBeginWrite, ensure you calculate the write size correctly (preferably by calling FastBufferWriter.GetWriteSize())

Declaration#
public void WriteValue<T>(in T value, FastBufferWriter.ForFixedStrings unused = default(FastBufferWriter.ForFixedStrings))
where T : struct, INativeList<byte>, IUTF8Bytes
Parameters#
TypeNameDescription
Tvaluethe value to write
FastBufferWriter.ForFixedStringsunusedAn unused parameter used for enabling overload resolution based on generic constraints
Type Parameters#
NameDescription
TThe type being serialized

WriteValue\<T>(in T, FastBufferWriter.ForNetworkSerializable)#

Write a NetworkSerializable value

Declaration#
public void WriteValue<T>(in T value, FastBufferWriter.ForNetworkSerializable unused = default(FastBufferWriter.ForNetworkSerializable))
where T : INetworkSerializable
Parameters#
TypeNameDescription
TvalueThe value to write
FastBufferWriter.ForNetworkSerializableunusedAn unused parameter used for enabling overload resolution based on generic constraints
Type Parameters#
NameDescription
TThe type being serialized

WriteValue\<T>(in T, FastBufferWriter.ForPrimitives)#

Write a primitive value (int, bool, etc) Accepts any value that implements the given interfaces, but is not guaranteed to work correctly on values that are not primitives.

Declaration#
public void WriteValue<T>(in T value, FastBufferWriter.ForPrimitives unused = default(FastBufferWriter.ForPrimitives))
where T : struct, IComparable, IConvertible, IComparable<T>, IEquatable<T>
Parameters#
TypeNameDescription
TvalueThe value to write
FastBufferWriter.ForPrimitivesunusedAn unused parameter used for enabling overload resolution based on generic constraints
Type Parameters#
NameDescription
TThe type being serialized

WriteValue\<T>(in T, FastBufferWriter.ForStructs)#

Write a struct

Declaration#
public void WriteValue<T>(in T value, FastBufferWriter.ForStructs unused = default(FastBufferWriter.ForStructs))
where T : struct, INetworkSerializeByMemcpy
Parameters#
TypeNameDescription
TvalueThe value to write
FastBufferWriter.ForStructsunusedAn unused parameter used for enabling overload resolution based on generic constraints
Type Parameters#
NameDescription
TThe type being serialized

WriteValue\<T>(T[], FastBufferWriter.ForEnums)#

Write an enum array

Declaration#
public void WriteValue<T>(T[] value, FastBufferWriter.ForEnums unused = default(FastBufferWriter.ForEnums))
where T : struct, Enum
Parameters#
TypeNameDescription
T[]valueThe values to write
FastBufferWriter.ForEnumsunusedAn unused parameter used for enabling overload resolution based on generic constraints
Type Parameters#
NameDescription
TThe type being serialized

WriteValue\<T>(T[], FastBufferWriter.ForNetworkSerializable)#

Write a NetworkSerializable array

Declaration#
public void WriteValue<T>(T[] value, FastBufferWriter.ForNetworkSerializable unused = default(FastBufferWriter.ForNetworkSerializable))
where T : INetworkSerializable
Parameters#
TypeNameDescription
T[]valueThe values to write
FastBufferWriter.ForNetworkSerializableunusedAn unused parameter used for enabling overload resolution based on generic constraints
Type Parameters#
NameDescription
TThe type being serialized

WriteValue\<T>(T[], FastBufferWriter.ForPrimitives)#

Write a primitive value array (int, bool, etc) Accepts any value that implements the given interfaces, but is not guaranteed to work correctly on values that are not primitives.

Declaration#
public void WriteValue<T>(T[] value, FastBufferWriter.ForPrimitives unused = default(FastBufferWriter.ForPrimitives))
where T : struct, IComparable, IConvertible, IComparable<T>, IEquatable<T>
Parameters#
TypeNameDescription
T[]valueThe values to write
FastBufferWriter.ForPrimitivesunusedAn unused parameter used for enabling overload resolution based on generic constraints
Type Parameters#
NameDescription
TThe type being serialized

WriteValue\<T>(T[], FastBufferWriter.ForStructs)#

Write a struct array

Declaration#
public void WriteValue<T>(T[] value, FastBufferWriter.ForStructs unused = default(FastBufferWriter.ForStructs))
where T : struct, INetworkSerializeByMemcpy
Parameters#
TypeNameDescription
T[]valueThe values to write
FastBufferWriter.ForStructsunusedAn unused parameter used for enabling overload resolution based on generic constraints
Type Parameters#
NameDescription
TThe type being serialized

WriteValueSafe(in Color)#

Write a Color

"Safe" version - automatically performs bounds checking. Less efficient than bounds checking for multiple writes at once by calling TryBeginWrite.

Declaration#
public void WriteValueSafe(in Color value)
Parameters#
TypeNameDescription
Colorvaluethe value to write

WriteValueSafe(Color[])#

Write a Collor array

"Safe" version - automatically performs bounds checking. Less efficient than bounds checking for multiple writes at once by calling TryBeginWrite.

Declaration#
public void WriteValueSafe(Color[] value)
Parameters#
TypeNameDescription
Color[]valuethe values to write

WriteValueSafe(in Color32)#

Write a Color32

"Safe" version - automatically performs bounds checking. Less efficient than bounds checking for multiple writes at once by calling TryBeginWrite.

Declaration#
public void WriteValueSafe(in Color32 value)
Parameters#
TypeNameDescription
Color32valuethe value to write

WriteValueSafe(Color32[])#

Write a Color32 array

"Safe" version - automatically performs bounds checking. Less efficient than bounds checking for multiple writes at once by calling TryBeginWrite.

Declaration#
public void WriteValueSafe(Color32[] value)
Parameters#
TypeNameDescription
Color32[]valuethe values to write

WriteValueSafe(in Quaternion)#

Write a Quaternion

"Safe" version - automatically performs bounds checking. Less efficient than bounds checking for multiple writes at once by calling TryBeginWrite.

Declaration#
public void WriteValueSafe(in Quaternion value)
Parameters#
TypeNameDescription
Quaternionvaluethe value to write

WriteValueSafe(Quaternion[])#

Write a Quaternion array

"Safe" version - automatically performs bounds checking. Less efficient than bounds checking for multiple writes at once by calling TryBeginWrite.

Declaration#
public void WriteValueSafe(Quaternion[] value)
Parameters#
TypeNameDescription
Quaternion[]valuethe values to write

WriteValueSafe(in Ray)#

Write a Ray

"Safe" version - automatically performs bounds checking. Less efficient than bounds checking for multiple writes at once by calling TryBeginWrite.

Declaration#
public void WriteValueSafe(in Ray value)
Parameters#
TypeNameDescription
Rayvaluethe value to write

WriteValueSafe(Ray[])#

Write a Ray array

"Safe" version - automatically performs bounds checking. Less efficient than bounds checking for multiple writes at once by calling TryBeginWrite.

Declaration#
public void WriteValueSafe(Ray[] value)
Parameters#
TypeNameDescription
Ray[]valuethe values to write

WriteValueSafe(in Ray2D)#

Write a Ray2D

"Safe" version - automatically performs bounds checking. Less efficient than bounds checking for multiple writes at once by calling TryBeginWrite.

Declaration#
public void WriteValueSafe(in Ray2D value)
Parameters#
TypeNameDescription
Ray2Dvaluethe value to write

WriteValueSafe(Ray2D[])#

Write a Ray2D array

"Safe" version - automatically performs bounds checking. Less efficient than bounds checking for multiple writes at once by calling TryBeginWrite.

Declaration#
public void WriteValueSafe(Ray2D[] value)
Parameters#
TypeNameDescription
Ray2D[]valuethe values to write

WriteValueSafe(String, Boolean)#

Writes a string

"Safe" version - automatically performs bounds checking. Less efficient than bounds checking for multiple writes at once by calling TryBeginWrite.

Declaration#
public void WriteValueSafe(string s, bool oneByteChars = false)
Parameters#
TypeNameDescription
System.StringsThe string to write
System.BooleanoneByteCharsWhether or not to use one byte per character. This will only allow ASCII

WriteValueSafe(in Vector2)#

Write a Vector2

"Safe" version - automatically performs bounds checking. Less efficient than bounds checking for multiple writes at once by calling TryBeginWrite.

Declaration#
public void WriteValueSafe(in Vector2 value)
Parameters#
TypeNameDescription
Vector2valuethe value to write

WriteValueSafe(Vector2[])#

Write a Vector2 array

"Safe" version - automatically performs bounds checking. Less efficient than bounds checking for multiple writes at once by calling TryBeginWrite.

Declaration#
public void WriteValueSafe(Vector2[] value)
Parameters#
TypeNameDescription
Vector2[]valuethe values to write

WriteValueSafe(in Vector2Int)#

Write a Vector2Int

"Safe" version - automatically performs bounds checking. Less efficient than bounds checking for multiple writes at once by calling TryBeginWrite.

Declaration#
public void WriteValueSafe(in Vector2Int value)
Parameters#
TypeNameDescription
Vector2Intvaluethe value to write

WriteValueSafe(Vector2Int[])#

Write a Vector2Int array

"Safe" version - automatically performs bounds checking. Less efficient than bounds checking for multiple writes at once by calling TryBeginWrite.

Declaration#
public void WriteValueSafe(Vector2Int[] value)
Parameters#
TypeNameDescription
Vector2Int[]valuethe values to write

WriteValueSafe(in Vector3)#

Write a Vector3

"Safe" version - automatically performs bounds checking. Less efficient than bounds checking for multiple writes at once by calling TryBeginWrite.

Declaration#
public void WriteValueSafe(in Vector3 value)
Parameters#
TypeNameDescription
Vector3valuethe value to write

WriteValueSafe(Vector3[])#

Write a Vector3 array

"Safe" version - automatically performs bounds checking. Less efficient than bounds checking for multiple writes at once by calling TryBeginWrite.

Declaration#
public void WriteValueSafe(Vector3[] value)
Parameters#
TypeNameDescription
Vector3[]valuethe values to write

WriteValueSafe(in Vector3Int)#

Write a Vector3Int

"Safe" version - automatically performs bounds checking. Less efficient than bounds checking for multiple writes at once by calling TryBeginWrite.

Declaration#
public void WriteValueSafe(in Vector3Int value)
Parameters#
TypeNameDescription
Vector3Intvaluethe value to write

WriteValueSafe(Vector3Int[])#

Write a Vector3Int array

"Safe" version - automatically performs bounds checking. Less efficient than bounds checking for multiple writes at once by calling TryBeginWrite.

Declaration#
public void WriteValueSafe(Vector3Int[] value)
Parameters#
TypeNameDescription
Vector3Int[]valuethe values to write

WriteValueSafe(in Vector4)#

Write a Vector4

"Safe" version - automatically performs bounds checking. Less efficient than bounds checking for multiple writes at once by calling TryBeginWrite.

Declaration#
public void WriteValueSafe(in Vector4 value)
Parameters#
TypeNameDescription
Vector4valuethe value to write

WriteValueSafe(Vector4[])#

Write a Vector4 array

"Safe" version - automatically performs bounds checking. Less efficient than bounds checking for multiple writes at once by calling TryBeginWrite.

Declaration#
public void WriteValueSafe(Vector4[] value)
Parameters#
TypeNameDescription
Vector4[]valuethe values to write

WriteValueSafe\<T>(in T, FastBufferWriter.ForEnums)#

Write an enum value

"Safe" version - automatically performs bounds checking. Less efficient than bounds checking for multiple writes at once by calling TryBeginWrite.

Declaration#
public void WriteValueSafe<T>(in T value, FastBufferWriter.ForEnums unused = default(FastBufferWriter.ForEnums))
where T : struct, Enum
Parameters#
TypeNameDescription
TvalueThe value to write
FastBufferWriter.ForEnumsunusedAn unused parameter used for enabling overload resolution based on generic constraints
Type Parameters#
NameDescription
TThe type being serialized

WriteValueSafe\<T>(in T, FastBufferWriter.ForFixedStrings)#

Write a FixedString value. Writes only the part of the string that's actually used.

"Safe" version - automatically performs bounds checking. Less efficient than bounds checking for multiple writes at once by calling TryBeginWrite.

Declaration#
public void WriteValueSafe<T>(in T value, FastBufferWriter.ForFixedStrings unused = default(FastBufferWriter.ForFixedStrings))
where T : struct, INativeList<byte>, IUTF8Bytes
Parameters#
TypeNameDescription
Tvaluethe value to write
FastBufferWriter.ForFixedStringsunusedAn unused parameter used for enabling overload resolution based on generic constraints
Type Parameters#
NameDescription
TThe type being serialized

WriteValueSafe\<T>(in T, FastBufferWriter.ForNetworkSerializable)#

Write a NetworkSerializable value

"Safe" version - automatically performs bounds checking. Less efficient than bounds checking for multiple writes at once by calling TryBeginWrite.

Declaration#
public void WriteValueSafe<T>(in T value, FastBufferWriter.ForNetworkSerializable unused = default(FastBufferWriter.ForNetworkSerializable))
where T : INetworkSerializable
Parameters#
TypeNameDescription
TvalueThe value to write
FastBufferWriter.ForNetworkSerializableunusedAn unused parameter used for enabling overload resolution based on generic constraints
Type Parameters#
NameDescription
TThe type being serialized

WriteValueSafe\<T>(in T, FastBufferWriter.ForPrimitives)#

Write a primitive value (int, bool, etc) Accepts any value that implements the given interfaces, but is not guaranteed to work correctly on values that are not primitives.

"Safe" version - automatically performs bounds checking. Less efficient than bounds checking for multiple writes at once by calling TryBeginWrite.

Declaration#
public void WriteValueSafe<T>(in T value, FastBufferWriter.ForPrimitives unused = default(FastBufferWriter.ForPrimitives))
where T : struct, IComparable, IConvertible, IComparable<T>, IEquatable<T>
Parameters#
TypeNameDescription
TvalueThe value to write
FastBufferWriter.ForPrimitivesunusedAn unused parameter used for enabling overload resolution based on generic constraints
Type Parameters#
NameDescription
TThe type being serialized

WriteValueSafe\<T>(in T, FastBufferWriter.ForStructs)#

Write a struct

"Safe" version - automatically performs bounds checking. Less efficient than bounds checking for multiple writes at once by calling TryBeginWrite.

Declaration#
public void WriteValueSafe<T>(in T value, FastBufferWriter.ForStructs unused = default(FastBufferWriter.ForStructs))
where T : struct, INetworkSerializeByMemcpy
Parameters#
TypeNameDescription
TvalueThe value to write
FastBufferWriter.ForStructsunusedAn unused parameter used for enabling overload resolution based on generic constraints
Type Parameters#
NameDescription
TThe type being serialized

WriteValueSafe\<T>(T[], FastBufferWriter.ForEnums)#

Write an enum array

"Safe" version - automatically performs bounds checking. Less efficient than bounds checking for multiple writes at once by calling TryBeginWrite.

Declaration#
public void WriteValueSafe<T>(T[] value, FastBufferWriter.ForEnums unused = default(FastBufferWriter.ForEnums))
where T : struct, Enum
Parameters#
TypeNameDescription
T[]valueThe values to write
FastBufferWriter.ForEnumsunusedAn unused parameter used for enabling overload resolution based on generic constraints
Type Parameters#
NameDescription
TThe type being serialized

WriteValueSafe\<T>(T[], FastBufferWriter.ForNetworkSerializable)#

Write a NetworkSerializable array

"Safe" version - automatically performs bounds checking. Less efficient than bounds checking for multiple writes at once by calling TryBeginWrite.

Declaration#
public void WriteValueSafe<T>(T[] value, FastBufferWriter.ForNetworkSerializable unused = default(FastBufferWriter.ForNetworkSerializable))
where T : INetworkSerializable
Parameters#
TypeNameDescription
T[]valueThe values to write
FastBufferWriter.ForNetworkSerializableunusedAn unused parameter used for enabling overload resolution based on generic constraints
Type Parameters#
NameDescription
TThe type being serialized

WriteValueSafe\<T>(T[], FastBufferWriter.ForPrimitives)#

Write a primitive value (int, bool, etc) Accepts any value that implements the given interfaces, but is not guaranteed to work correctly on values that are not primitives.

"Safe" version - automatically performs bounds checking. Less efficient than bounds checking for multiple writes at once by calling TryBeginWrite.

Declaration#
public void WriteValueSafe<T>(T[] value, FastBufferWriter.ForPrimitives unused = default(FastBufferWriter.ForPrimitives))
where T : struct, IComparable, IConvertible, IComparable<T>, IEquatable<T>
Parameters#
TypeNameDescription
T[]valueThe value to write
FastBufferWriter.ForPrimitivesunusedAn unused parameter used for enabling overload resolution based on generic constraints
Type Parameters#
NameDescription
TThe type being serialized

WriteValueSafe\<T>(T[], FastBufferWriter.ForStructs)#

Write a struct array

"Safe" version - automatically performs bounds checking. Less efficient than bounds checking for multiple writes at once by calling TryBeginWrite.

Declaration#
public void WriteValueSafe<T>(T[] value, FastBufferWriter.ForStructs unused = default(FastBufferWriter.ForStructs))
where T : struct, INetworkSerializeByMemcpy
Parameters#
TypeNameDescription
T[]valueThe values to write
FastBufferWriter.ForStructsunusedAn unused parameter used for enabling overload resolution based on generic constraints
Type Parameters#
NameDescription
TThe type being serialized

Implements#

System.IDisposable