public void Decode(RailBitBuffer buffer, Func <RailBitBuffer, T> decode) { IEnumerable <T> decoded = buffer.UnpackAll(decode); foreach (T delta in decoded) { received.Add(delta); } }
private void DecodeView(RailBitBuffer buffer) { IEnumerable <KeyValuePair <EntityId, RailViewEntry> > decoded = buffer.UnpackAll( buf => new KeyValuePair <EntityId, RailViewEntry>( buf.ReadEntityId(), // Read: [EntityId] new RailViewEntry( buf.ReadTick(), // Read: [LastReceivedTick] Tick.INVALID, // (Local tick not transmitted) buf.ReadBool())) // Read: [IsFrozen] ); foreach (KeyValuePair <EntityId, RailViewEntry> pair in decoded) { View.RecordUpdate(pair.Key, pair.Value); } }
private static void DecodeEvents( RailPacketIncoming packet, IRailEventConstruction eventCreator, RailBitBuffer buffer) { IEnumerable <RailEvent> decoded = buffer.UnpackAll( buf => RailEvent.Decode( eventCreator, eventCreator.EventTypeCompressor, buf, packet.SenderTick)); foreach (RailEvent evnt in decoded) { packet.Events.Add(evnt); } }
public void DecodeView(RailBitBuffer buffer) { IEnumerable<KeyValuePair<EntityId, RailViewEntry>> decoded = buffer.UnpackAll( () => { return new KeyValuePair<EntityId, RailViewEntry>( buffer.ReadEntityId(), // Read: [EntityId] new RailViewEntry( buffer.ReadTick(), // Read: [Tick] buffer.ReadBool())); // Read: [IsFrozen] }); foreach (var pair in decoded) this.view.RecordUpdate(pair.Key, pair.Value); #endif }