/// <summary> /// /// </summary> /// <param name="packet"></param> /// <param name="simulator"></param> private void TeleportHandler(Packet packet, Simulator simulator) { if (packet.Type == PacketType.TeleportStart) { TeleportMessage = "Teleport started"; TeleportStat = TeleportStatus.Start; if (OnBeginTeleport != null) { OnBeginTeleport(TeleportMessage, TeleportStat); } } else if (packet.Type == PacketType.TeleportProgress) { TeleportMessage = Helpers.FieldToString(((TeleportProgressPacket)packet).Info.Message); TeleportStat = TeleportStatus.Progress; if (OnBeginTeleport != null) { OnBeginTeleport(TeleportMessage, TeleportStat); } } else if (packet.Type == PacketType.TeleportFailed) { TeleportMessage = Helpers.FieldToString(((TeleportFailedPacket)packet).Info.Reason); TeleportStat = TeleportStatus.Failed; if (OnBeginTeleport != null) { OnBeginTeleport(TeleportMessage, TeleportStat); } OnBeginTeleport = null; } else if (packet.Type == PacketType.TeleportFinish) { TeleportFinishPacket finish = (TeleportFinishPacket)packet; // Connect to the new sim Simulator sim = Client.Network.Connect(new IPAddress((long)finish.Info.SimIP), finish.Info.SimPort, simulator.CircuitCode, true); if (sim != null) { TeleportMessage = "Teleport finished"; TeleportStat = TeleportStatus.Finished; // Move the avatar in to the new sim CompleteAgentMovementPacket move = new CompleteAgentMovementPacket(); move.AgentData.AgentID = Client.Network.AgentID; move.AgentData.SessionID = Client.Network.SessionID; move.AgentData.CircuitCode = simulator.CircuitCode; Client.Network.SendPacket((Packet)move); Client.DebugLog(move.ToString()); Client.Log("Moved to new sim " + Client.Network.CurrentSim.Region.Name + "(" + Client.Network.CurrentSim.IPEndPoint.ToString() + ")", Helpers.LogLevel.Info); if (OnBeginTeleport != null) { OnBeginTeleport(TeleportMessage, TeleportStat); } else { // Sleep a little while so we can collect parcel information System.Threading.Thread.Sleep(1000); } } else { TeleportMessage = "Failed to connect to the new sim after a teleport"; TeleportStat = TeleportStatus.Failed; Client.Log(TeleportMessage, Helpers.LogLevel.Warning); if (OnBeginTeleport != null) { OnBeginTeleport(TeleportMessage, TeleportStat); } } OnBeginTeleport = null; } }
/// <summary> /// /// </summary> /// <param name="packet"></param> /// <param name="simulator"></param> private void TeleportHandler(Packet packet, Simulator simulator) { if (packet.Type == PacketType.TeleportStart) { TeleportMessage = "Teleport started"; TeleportStat = TeleportStatus.Start; if (OnBeginTeleport != null) { OnBeginTeleport(TeleportMessage, TeleportStat); } } else if (packet.Type == PacketType.TeleportProgress) { TeleportMessage = Helpers.FieldToString(((TeleportProgressPacket)packet).Info.Message); TeleportStat = TeleportStatus.Progress; if (OnBeginTeleport != null) { OnBeginTeleport(TeleportMessage, TeleportStat); } } else if (packet.Type == PacketType.TeleportFailed) { TeleportMessage = Helpers.FieldToString(((TeleportFailedPacket)packet).Info.Reason); TeleportStat = TeleportStatus.Failed; if (OnBeginTeleport != null) { OnBeginTeleport(TeleportMessage, TeleportStat); } OnBeginTeleport = null; } else if (packet.Type == PacketType.TeleportFinish) { TeleportFinishPacket finish = (TeleportFinishPacket)packet; // Connect to the new sim Simulator sim = Client.Network.Connect(new IPAddress((long)finish.Info.SimIP), finish.Info.SimPort, simulator.CircuitCode, true); if ( sim != null) { TeleportMessage = "Teleport finished"; TeleportStat = TeleportStatus.Finished; // Move the avatar in to the new sim CompleteAgentMovementPacket move = new CompleteAgentMovementPacket(); move.AgentData.AgentID = Client.Network.AgentID; move.AgentData.SessionID = Client.Network.SessionID; move.AgentData.CircuitCode = simulator.CircuitCode; Client.Network.SendPacket((Packet)move); Client.DebugLog(move.ToString()); Client.Log("Moved to new sim " + Client.Network.CurrentSim.Region.Name + "(" + Client.Network.CurrentSim.IPEndPoint.ToString() + ")", Helpers.LogLevel.Info); if (OnBeginTeleport != null) { OnBeginTeleport(TeleportMessage, TeleportStat); } else { // Sleep a little while so we can collect parcel information System.Threading.Thread.Sleep(1000); } } else { TeleportMessage = "Failed to connect to the new sim after a teleport"; TeleportStat = TeleportStatus.Failed; Client.Log(TeleportMessage, Helpers.LogLevel.Warning); if (OnBeginTeleport != null) { OnBeginTeleport(TeleportMessage, TeleportStat); } } OnBeginTeleport = null; } }