diff options
Diffstat (limited to 'OpenSim/Region/CoreModules/Framework')
-rw-r--r-- | OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs | 35 | ||||
-rw-r--r-- | OpenSim/Region/CoreModules/Framework/EntityTransfer/HGEntityTransferModule.cs | 37 |
2 files changed, 34 insertions, 38 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 | ||