Ejemplo n.º 1
0
 public void Encode(
     RailBitBuffer buffer,
     int maxTotalSize,
     int maxIndividualSize,
     Action <T, RailBitBuffer> encode)
 {
     // TODO: prevent loss of data if there are too many pending or the individual size is too large.
     buffer.PackToSize(
         maxTotalSize,
         maxIndividualSize,
         pending,
         encode,
         val => sent.Add(val));
 }
Ejemplo n.º 2
0
 private void EncodeView(RailBitBuffer buffer, Tick localTick, int reservedBytes)
 {
     buffer.PackToSize(
         RailConfig.PACKCAP_MESSAGE_TOTAL - reservedBytes,
         int.MaxValue,
         view.GetOrdered(localTick),
         (pair, buf) =>
     {
         buf.WriteEntityId(pair.Key);                // Write: [EntityId]
         buf.WriteTick(pair.Value.LastReceivedTick); // Write: [LastReceivedTick]
         // (Local tick not transmitted)
         buf.WriteBool(pair.Value.IsFrozen);         // Write: [IsFrozen]
     });
 }
Ejemplo n.º 3
0
 /// <summary>
 ///     Writes as many events as possible up to maxSize and returns the number
 ///     of events written in the batch. Also increments the total counter.
 /// </summary>
 private static void EncodeEvents(
     RailPacketOutgoing packet,
     IRailEventConstruction eventCreator,
     RailBitBuffer buffer,
     int maxSize)
 {
     packet.EventsWritten += buffer.PackToSize(
         maxSize,
         RailConfig.MAXSIZE_EVENT,
         packet.GetNextEvents(),
         (evnt, buf) => evnt.Encode(
             eventCreator.EventTypeCompressor,
             buf,
             packet.SenderTick),
         evnt => evnt.RegisterSent());
 }
Ejemplo n.º 4
0
    protected void EncodeView(RailBitBuffer buffer, int reservedBytes)
    {
      buffer.PackToSize(
        RailConfig.PACKCAP_MESSAGE_TOTAL - reservedBytes,
        int.MaxValue,
        this.view.GetOrdered(),
        (pair) =>
        {
          buffer.WriteEntityId(pair.Key);        // Write: [EntityId]
          buffer.WriteTick(pair.Value.Tick);     // Write: [Tick]
          buffer.WriteBool(pair.Value.IsFrozen); // Write: [IsFrozen]
        });
#endif
    }