bool IPacketHandler.OnPacket(byte packetId, Context context, Network.ByteInStream stream) { Actor actor = stream.ReadActor(); ushort size = stream.ReadUShort(); if (actor != null) { if (context.IsServer) { if (stream.Player.OwnedActors.Contains(actor)) { return actor.Synchronizable.UnpackSyncData(stream); } else { log.Warn("Got synchronized data from {0} for {1}, but that player does not own that actor", stream.Player, actor); } } else { return actor.Synchronizable.UnpackSyncData(stream); } } stream.Skip(4); stream.Skip(size); return true; }
bool IPacketHandler.OnPacket(byte packetId, Context context, Network.ByteInStream stream) { Actor actor; ushort actorId = stream.ReadUShort(); byte size = stream.ReadByte(); if (context.GetActor(actorId, out actor)) { if (verify(context, actor, stream)) { if (actor.HasStateStream) { actor.LastStateStreamUpdateTime = context.Time.LocalTime; actor.StateStreamer.Unpack(stream); if (context.IsServer) { foreach (Player s in actor.Subscribers) { s.Connection.Queue(actor, false); } } return true; } else { log.Error("{0} does not have a state stream, yet it received state stream packet from {1}", actor, stream.Connection.Player); } } else { log.Warn("{0} is not allowed to send transform replication to {1}, ignoring", stream.Connection.Player, actor); } } stream.Skip(size); return true; }