OpenMetaverse.AgentManager.CrossedRegionHandler C# (CSharp) Method

CrossedRegionHandler() private method

Allows agent to cross over (walk, fly, vehicle) in to neighboring simulators
private CrossedRegionHandler ( Packet packet, Simulator sim ) : void
packet OpenMetaverse.Packets.Packet
sim Simulator
return void
        private void CrossedRegionHandler(Packet packet, Simulator sim)
        {
            CrossedRegionPacket crossing = (CrossedRegionPacket)packet;
            string seedCap = Utils.BytesToString(crossing.RegionData.SeedCapability);
            IPEndPoint endPoint = new IPEndPoint(crossing.RegionData.SimIP, crossing.RegionData.SimPort);

            Logger.DebugLog("Crossed in to new region area, attempting to connect to " + endPoint.ToString(), Client);

            Simulator oldSim = Client.Network.CurrentSim;
            Simulator newSim = Client.Network.Connect(endPoint, crossing.RegionData.RegionHandle, true, seedCap);

            if (newSim != null)
            {
                Logger.Log("Finished crossing over in to region " + newSim.ToString(), Helpers.LogLevel.Info, Client);

                if (OnRegionCrossed != null)
                {
                    try { OnRegionCrossed(oldSim, newSim); }
                    catch (Exception e) { Logger.Log(e.Message, Helpers.LogLevel.Error, Client, e); }
                }
            }
            else
            {
                // The old simulator will (poorly) handle our movement still, so the connection isn't
                // completely shot yet
                Logger.Log("Failed to connect to new region " + endPoint.ToString() + " after crossing over",
                    Helpers.LogLevel.Warning, Client);
            }
        }