コード例 #1
0
    private void SerializePacketInternal(NetDataWriter externalWriter, INetSerializable packet, bool prependLength)
    {
        byte value;
        INetworkPacketSubSerializer <TData> networkPacketSubSerializer;

        if (!this.TryGetPacketType(packet.GetType(), out value, out networkPacketSubSerializer))
        {
            return;
        }
        NetDataWriter netDataWriter = prependLength ? this._internalWriter : externalWriter;

        netDataWriter.Put(value);
        if (networkPacketSubSerializer != null)
        {
            networkPacketSubSerializer.Serialize(netDataWriter, packet);
        }
        else
        {
            packet.Serialize(netDataWriter);
        }
        if (prependLength)
        {
            externalWriter.PutVarUInt((uint)this._internalWriter.Length);
            externalWriter.Put(this._internalWriter.Data, 0, this._internalWriter.Length);
            this._internalWriter.Reset();
        }
    }
コード例 #2
0
 public void SendKnown(NetManager netManager, INetSerializable o, DeliveryMethod deliveryMethod = DeliveryMethod.ReliableOrdered)
 {
     using (var nw = new NetDataWriter())
     {
         WriteHash(o.GetType(), nw);
         o.Serialize(nw);
         netManager.SendToAll(nw, deliveryMethod);
     }
 }
コード例 #3
0
 public void Serialize(NetDataWriter writer, INetSerializable packet)
 {
     writer.Put(packet.GetType().ToString());
     packet.Serialize(writer);
 }