diff --git a/libsecondlife-cs/MainAvatar.cs b/libsecondlife-cs/MainAvatar.cs index 01e9a774..b2eeaab9 100644 --- a/libsecondlife-cs/MainAvatar.cs +++ b/libsecondlife-cs/MainAvatar.cs @@ -46,16 +46,18 @@ namespace libsecondlife /// public enum TeleportStatus { - /// + /// Unknown status None, - /// Teleport Start + /// Teleport initialized Start, - /// Teleport in Progress + /// Teleport in progress Progress, - /// Teleport Failed + /// Teleport failed Failed, - /// Teleport Completed - Finished + /// Teleport completed + Finished, + /// Teleport cancelled + Cancelled } /// @@ -437,6 +439,8 @@ namespace libsecondlife Client.Network.RegisterCallback(PacketType.TeleportProgress, callback); Client.Network.RegisterCallback(PacketType.TeleportFailed, callback); Client.Network.RegisterCallback(PacketType.TeleportFinish, callback); + Client.Network.RegisterCallback(PacketType.TeleportCancel, callback); + Client.Network.RegisterCallback(PacketType.TeleportLocal, callback); // Instant Message callback Client.Network.RegisterCallback(PacketType.ImprovedInstantMessage, new NetworkManager.PacketCallback(InstantMessageHandler)); @@ -1487,6 +1491,31 @@ namespace libsecondlife Client.Log(teleportMessage, Helpers.LogLevel.Warning); } } + else if (packet.Type == PacketType.TeleportCancel) + { + Client.DebugLog("TeleportCancel received from " + simulator.ToString()); + + teleportMessage = "Cancelled."; + TeleportStat = TeleportStatus.Cancelled; + + tpFinished = true; + } + else if (packet.Type == PacketType.TeleportLocal) + { + TeleportLocalPacket local = (TeleportLocalPacket)packet; + + LookAt = local.Info.LookAt; + Position = local.Info.Position; + + // TODO: Do something with these + //local.Info.LocationID; + //local.Info.TeleportFlags; + + teleportMessage = "Teleport finished"; + TeleportStat = TeleportStatus.Finished; + + tpFinished = true; + } if (OnTeleport != null) {