protected override void BeginTravel(string travelLevel, HashSetList <int> travelActorNetIDs) { base.BeginTravel(travelLevel, travelActorNetIDs); // tell clients to travel for (int i = 0; i < connectionList.Count; ++i) { var channel = connectionList[i]; if (channel.owningPlayer != null) { if ((travelActorNetIDs == null) || !travelActorNetIDs.Contains(channel.owningPlayer.netID)) { channel.owningPlayer = null; } } if (channel.didHandshake && !channel.pendingConnect && (channel.clientLevel == currentLevel)) { channel.connection.driverConnection.blocking = true; channel.connection.SendReliable(NetMsgs.ClientTravel.New(travelLevel, travelActorNetIDs)); channel.clientLevel = null; channel.levelStarted = false; channel.isTraveling = true; } } }
bool ActorWillTravel(Actor actor, HashSetList <int> travelActorNetIds) { return(!actor.pendingKill && (((actor.netID == 0) || !actor.replicates) && actor.nonReplicatedActorShouldTravel) || ((actor.netID != 0) && travelActorNetIds.Contains(actor.netID))); }