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)
{