public static BitReaderWriter ReadFrom(BitStream stream) { Debug.Assert(stream.Reading, "Read stream should be set for reading!"); // Move current position after the data uint dataBitLen = stream.ReadUInt32Variant(); var reader = new BitReaderWriter(stream, stream.BitPosition); stream.SetBitPositionRead(stream.BitPosition + (int)dataBitLen); return reader; }
public static BitReaderWriter ReadFrom(BitStream stream) { Debug.Assert(stream.Reading, "Read stream should be set for reading!"); // Move current position after the data uint dataBitLen = stream.ReadUInt32Variant(); var reader = new BitReaderWriter(stream, stream.BitPosition); stream.SetBitPositionRead(stream.BitPosition + (int)dataBitLen); return(reader); }
public static TypeId ReadTypeId(this VRage.Library.Collections.BitStream stream) { return(new TypeId(stream.ReadUInt32Variant())); }
/// <summary> /// Serializes id to hash list. /// Server sends the hashlist to client, client reorders type table to same order as server. /// </summary> public void Serialize(BitStream stream) { if (stream.Writing) { stream.WriteVariant((uint)m_idToType.Count); for (int i = 0; i < m_idToType.Count; i++) { stream.WriteInt32(m_idToType[i].TypeHash); } } else { int count = (int)stream.ReadUInt32Variant(); Debug.Assert(m_idToType.Count == count, "Number of received types does not match number of registered types"); m_staticEventTable = new MyEventTable(null); for (int i = 0; i < count; i++) { int typeHash = stream.ReadInt32(); Debug.Assert(m_hashLookup.ContainsKey(typeHash), "Type hash not found!"); var type = m_hashLookup[typeHash]; m_idToType[i] = type; m_staticEventTable.AddStaticEvents(type.Type); } } }