aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region')
-rw-r--r--OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs35
-rw-r--r--OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs37
-rw-r--r--OpenSim/Region/Framework/Interfaces/IEntityTransferModule.cs3
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.cs21
4 files changed, 43 insertions, 53 deletions
diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
index 622d057..fcc7a85 100644
--- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
+++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
@@ -50,7 +50,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
50 { 50 {
51 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 51 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
52 52
53 private bool m_Enabled = false; 53 protected bool m_Enabled = false;
54 protected Scene m_aScene; 54 protected Scene m_aScene;
55 protected List<UUID> m_agentsInTransit; 55 protected List<UUID> m_agentsInTransit;
56 56
@@ -94,6 +94,12 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
94 m_aScene = scene; 94 m_aScene = scene;
95 95
96 scene.RegisterModuleInterface<IEntityTransferModule>(this); 96 scene.RegisterModuleInterface<IEntityTransferModule>(this);
97 scene.EventManager.OnNewClient += OnNewClient;
98 }
99
100 protected void OnNewClient(IClientAPI client)
101 {
102 client.OnTeleportHomeRequest += TeleportHome;
97 } 103 }
98 104
99 public virtual void Close() 105 public virtual void Close()
@@ -499,6 +505,33 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
499 505
500 #endregion 506 #endregion
501 507
508 #region Teleport Home
509
510 public virtual void TeleportHome(UUID id, IClientAPI client)
511 {
512 m_log.DebugFormat("[ENTITY TRANSFER MODULE]: Request to teleport {0} {1} home", client.FirstName, client.LastName);
513
514 OpenSim.Services.Interfaces.PresenceInfo pinfo = m_aScene.PresenceService.GetAgent(client.SessionId);
515
516 if (pinfo != null)
517 {
518 GridRegion regionInfo = m_aScene.GridService.GetRegionByUUID(UUID.Zero, pinfo.HomeRegionID);
519 if (regionInfo == null)
520 {
521 // can't find the Home region: Tell viewer and abort
522 client.SendTeleportFailed("Your home region could not be found.");
523 return;
524 }
525 // a little eekie that this goes back to Scene and with a forced cast, will fix that at some point...
526 ((Scene)(client.Scene)).RequestTeleportLocation(
527 client, regionInfo.RegionHandle, pinfo.HomePosition, pinfo.HomeLookAt,
528 (uint)(Constants.TeleportFlags.SetLastToTarget | Constants.TeleportFlags.ViaHome));
529 }
530 }
531
532 #endregion
533
534
502 #region Agent Crossings 535 #region Agent Crossings
503 536
504 public void Cross(ScenePresence agent, bool isFlying) 537 public void Cross(ScenePresence agent, bool isFlying)
diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs
index 6645293..101aea0 100644
--- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs
+++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs
@@ -47,7 +47,6 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
47 { 47 {
48 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 48 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
49 49
50 private bool m_Enabled = false;
51 private IHypergridService m_HypergridService; 50 private IHypergridService m_HypergridService;
52 private IHypergridService HyperGridService 51 private IHypergridService HyperGridService
53 { 52 {
@@ -84,42 +83,6 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
84 } 83 }
85 } 84 }
86 85
87 public override void PostInitialise()
88 {
89 }
90
91 public override void AddRegion(Scene scene)
92 {
93 if (!m_Enabled)
94 return;
95
96 if (m_aScene == null)
97 m_aScene = scene;
98
99 scene.RegisterModuleInterface<IEntityTransferModule>(this);
100 }
101
102 public override void Close()
103 {
104 if (!m_Enabled)
105 return;
106 }
107
108
109 public override void RemoveRegion(Scene scene)
110 {
111 if (!m_Enabled)
112 return;
113 if (scene == m_aScene)
114 m_aScene = null;
115 }
116
117 public override void RegionLoaded(Scene scene)
118 {
119 if (!m_Enabled)
120 return;
121
122 }
123 86
124 #endregion 87 #endregion
125 88
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;
30using GridRegion = OpenSim.Services.Interfaces.GridRegion; 30using GridRegion = OpenSim.Services.Interfaces.GridRegion;
31 31
32using OpenMetaverse; 32using OpenMetaverse;
33using OpenSim.Framework;
33using OpenSim.Region.Framework.Scenes; 34using OpenSim.Region.Framework.Scenes;
34 35
35namespace OpenSim.Region.Framework.Interfaces 36namespace 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