private void OnDestroyRemotableActor(ref DestroyRemotableActor p) { int index = p.Index; lock (sync) { Player player; if (!players.TryGetValue(p.SenderConnection, out player)) { return; } if (player.Index != (index & 0xff)) { return; } if (!remotableActors.Remove(index)) { return; } } Send(new DestroyRemoteObject { Index = index }, 5, playerConnections, NetDeliveryMethod.ReliableUnordered, PacketChannels.Main); }
public override void RemoveActor(ActorBase actor) { base.RemoveActor(actor); IRemotableActor remotableActor = actor as IRemotableActor; if (remotableActor == null) { return; } int actorIndex = remotableActor.Index; if (!localRemotableActors.Remove(actorIndex)) { return; } DestroyRemotableActor p = new DestroyRemotableActor(); p.Index = actorIndex; net.Send(p, 5, NetDeliveryMethod.ReliableUnordered, PacketChannels.Main); }