diff options
Diffstat (limited to 'OpenSim/Region/Framework')
-rw-r--r-- | OpenSim/Region/Framework/Interfaces/IEntityTransferModule.cs | 3 | ||||
-rw-r--r-- | OpenSim/Region/Framework/Scenes/Scene.cs | 21 |
2 files changed, 9 insertions, 15 deletions
diff --git a/OpenSim/Region/Framework/Interfaces/IEntityTransferModule.cs b/OpenSim/Region/Framework/Interfaces/IEntityTransferModule.cs index a0505df..73c68f1 100644 --- a/OpenSim/Region/Framework/Interfaces/IEntityTransferModule.cs +++ b/OpenSim/Region/Framework/Interfaces/IEntityTransferModule.cs | |||
@@ -30,6 +30,7 @@ using OpenSim.Services.Interfaces; | |||
30 | using GridRegion = OpenSim.Services.Interfaces.GridRegion; | 30 | using GridRegion = OpenSim.Services.Interfaces.GridRegion; |
31 | 31 | ||
32 | using OpenMetaverse; | 32 | using OpenMetaverse; |
33 | using OpenSim.Framework; | ||
33 | using OpenSim.Region.Framework.Scenes; | 34 | using OpenSim.Region.Framework.Scenes; |
34 | 35 | ||
35 | namespace OpenSim.Region.Framework.Interfaces | 36 | namespace OpenSim.Region.Framework.Interfaces |
@@ -39,6 +40,8 @@ namespace OpenSim.Region.Framework.Interfaces | |||
39 | void Teleport(ScenePresence agent, ulong regionHandle, Vector3 position, | 40 | void Teleport(ScenePresence agent, ulong regionHandle, Vector3 position, |
40 | Vector3 lookAt, uint teleportFlags); | 41 | Vector3 lookAt, uint teleportFlags); |
41 | 42 | ||
43 | void TeleportHome(UUID id, IClientAPI client); | ||
44 | |||
42 | void Cross(ScenePresence agent, bool isFlying); | 45 | void Cross(ScenePresence agent, bool isFlying); |
43 | 46 | ||
44 | void AgentArrivedAtDestination(UUID agent); | 47 | void AgentArrivedAtDestination(UUID agent); |
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 5730b56..3cfb236 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs | |||
@@ -2558,7 +2558,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
2558 | { | 2558 | { |
2559 | client.OnTeleportLocationRequest += RequestTeleportLocation; | 2559 | client.OnTeleportLocationRequest += RequestTeleportLocation; |
2560 | client.OnTeleportLandmarkRequest += RequestTeleportLandmark; | 2560 | client.OnTeleportLandmarkRequest += RequestTeleportLandmark; |
2561 | client.OnTeleportHomeRequest += TeleportClientHome; | ||
2562 | } | 2561 | } |
2563 | 2562 | ||
2564 | public virtual void SubscribeToClientScriptEvents(IClientAPI client) | 2563 | public virtual void SubscribeToClientScriptEvents(IClientAPI client) |
@@ -2713,7 +2712,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
2713 | { | 2712 | { |
2714 | client.OnTeleportLocationRequest -= RequestTeleportLocation; | 2713 | client.OnTeleportLocationRequest -= RequestTeleportLocation; |
2715 | client.OnTeleportLandmarkRequest -= RequestTeleportLandmark; | 2714 | client.OnTeleportLandmarkRequest -= RequestTeleportLandmark; |
2716 | client.OnTeleportHomeRequest -= TeleportClientHome; | 2715 | //client.OnTeleportHomeRequest -= TeleportClientHome; |
2717 | } | 2716 | } |
2718 | 2717 | ||
2719 | public virtual void UnSubscribeToClientScriptEvents(IClientAPI client) | 2718 | public virtual void UnSubscribeToClientScriptEvents(IClientAPI client) |
@@ -2760,20 +2759,12 @@ namespace OpenSim.Region.Framework.Scenes | |||
2760 | /// <param name="client">The IClientAPI for the client</param> | 2759 | /// <param name="client">The IClientAPI for the client</param> |
2761 | public virtual void TeleportClientHome(UUID agentId, IClientAPI client) | 2760 | public virtual void TeleportClientHome(UUID agentId, IClientAPI client) |
2762 | { | 2761 | { |
2763 | OpenSim.Services.Interfaces.PresenceInfo pinfo = PresenceService.GetAgent(client.SessionId); | 2762 | if (m_teleportModule != null) |
2764 | 2763 | m_teleportModule.TeleportHome(agentId, client); | |
2765 | if (pinfo != null) | 2764 | else |
2766 | { | 2765 | { |
2767 | GridRegion regionInfo = GridService.GetRegionByUUID(UUID.Zero, pinfo.HomeRegionID); | 2766 | m_log.DebugFormat("[SCENE]: Unable to teleport user home: no AgentTransferModule is active"); |
2768 | if (regionInfo == null) | 2767 | client.SendTeleportFailed("Unable to perform teleports on this simulator."); |
2769 | { | ||
2770 | // can't find the Home region: Tell viewer and abort | ||
2771 | client.SendTeleportFailed("Your home-region could not be found."); | ||
2772 | return; | ||
2773 | } | ||
2774 | RequestTeleportLocation( | ||
2775 | client, regionInfo.RegionHandle, pinfo.HomePosition, pinfo.HomeLookAt, | ||
2776 | (uint)(TPFlags.SetLastToTarget | TPFlags.ViaHome)); | ||
2777 | } | 2768 | } |
2778 | } | 2769 | } |
2779 | 2770 | ||