Nebula
Serialization

NetworkWriter

Writes Nebula messages to a growable little-endian byte buffer.

generated from the sources
public sealed class NetworkWriter

Writes Nebula messages to a growable little-endian byte buffer. The writer does not apply bit packing or quantization. Reuse an instance and call Reset between messages.

Constructors

NetworkWriter

public NetworkWriter(int capacity = 1024);

Properties

Position

public int Position { get; }

Length

public int Length { get; }

Buffer

public byte[] Buffer { get; }

Methods

Reset

public void Reset();

Rewind

public void Rewind(int length);

Drop everything written after length (a value from Length).

ToSegment

public ArraySegment<byte> ToSegment();

ToArray

public byte[] ToArray();

WriteByte

public void WriteByte(byte value);

WriteBool

public void WriteBool(bool value);

WriteSByte

public void WriteSByte(sbyte value);

WriteUShort

public void WriteUShort(ushort value);

WriteShort

public void WriteShort(short value);

WriteUInt

public void WriteUInt(uint value);

WriteInt

public void WriteInt(int value);

WriteULong

public void WriteULong(ulong value);

WriteLong

public void WriteLong(long value);

WriteFloat

public void WriteFloat(float value);

WriteDouble

public void WriteDouble(double value);

WriteString

public void WriteString(string value);

WriteBytes

public void WriteBytes(ArraySegment<byte> bytes);
public void WriteBytes(byte[] bytes);

Length-prefixed byte blob (ushort length).

WriteRaw

public void WriteRaw(ArraySegment<byte> bytes);

Raw bytes with no length prefix.

WriteVector2

public void WriteVector2(Vector2 v);

WriteVector3

public void WriteVector3(Vector3 v);

WriteQuaternion

public void WriteQuaternion(Quaternion q);

WriteHalf

public void WriteHalf(float value);

IEEE half (2 bytes). ~3 significant digits: fine for positions within a few hundred metres and for unit-range values.

WriteCompressedQuaternion

public void WriteCompressedQuaternion(Quaternion q);

Smallest-three quaternion compression: 4 bytes instead of 16. The largest component is dropped (its sign is normalised away) and the other three are quantised to 10 bits each in [-1/sqrt2, 1/sqrt2]; worst-case error is about 0.1 degrees.

WritePreciseQuaternion

public void WritePreciseQuaternion(Quaternion q);

Smallest-three quaternion compression at 15 bits per component: 6 bytes, worst-case error about 0.005 degrees (WriteCompressedQuaternion is 4 bytes and about 0.1 to 0.16 degrees). Read it with NetworkReader.ReadPreciseQuaternion.

WriteColor

public void WriteColor(Color c);

ReserveUShort

public int ReserveUShort();

Reserve a ushort slot to be patched later (e.g. a count written after a loop).

PatchUShort

public void PatchUShort(int at, ushort value);

PatchByte

public void PatchByte(int at, byte value);

PatchInt

public void PatchInt(int at, int value);

On this page