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(); } }
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); } }
public void Serialize(NetDataWriter writer, INetSerializable packet) { writer.Put(packet.GetType().ToString()); packet.Serialize(writer); }