예제 #1
0
        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;
                }
            }
        }
예제 #2
0
 bool ActorWillTravel(Actor actor, HashSetList <int> travelActorNetIds)
 {
     return(!actor.pendingKill && (((actor.netID == 0) || !actor.replicates) && actor.nonReplicatedActorShouldTravel) || ((actor.netID != 0) && travelActorNetIds.Contains(actor.netID)));
 }