diff --git a/OpenSim/Region/CoreModules/Agent/AgentTransfer/AgentTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs similarity index 98% rename from OpenSim/Region/CoreModules/Agent/AgentTransfer/AgentTransferModule.cs rename to OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs index 8e3d041bc0..af004b09f3 100644 --- a/OpenSim/Region/CoreModules/Agent/AgentTransfer/AgentTransferModule.cs +++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs @@ -44,9 +44,9 @@ using OpenMetaverse; using log4net; using Nini.Config; -namespace OpenSim.Region.CoreModules.Agent.AgentTransfer +namespace OpenSim.Region.CoreModules.Framework.EntityTransfer { - public class AgentTransferModule : ISharedRegionModule, IAgentTransferModule + public class AgentTransferModule : ISharedRegionModule, IEntityTransferModule { #region ISharedRegionModule private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); @@ -92,7 +92,7 @@ namespace OpenSim.Region.CoreModules.Agent.AgentTransfer if (m_aScene == null) m_aScene = scene; - scene.RegisterModuleInterface(this); + scene.RegisterModuleInterface(this); } public virtual void Close() @@ -192,6 +192,7 @@ namespace OpenSim.Region.CoreModules.Agent.AgentTransfer uint oldRegionY = (((uint)(sp.Scene.RegionInfo.RegionHandle)) >> 8); ulong destinationHandle = GetRegionHandle(reg); + GridRegion finalDestination = GetFinalDestination(reg); if (eq == null) sp.ControllingClient.SendTeleportLocationStart(); @@ -235,7 +236,7 @@ namespace OpenSim.Region.CoreModules.Agent.AgentTransfer agentCircuit.child = true; agentCircuit.Appearance = sp.Appearance; - if (Util.IsOutsideView(oldRegionX, newRegionX, oldRegionY, newRegionY)) + if (NeedsNewAgent(oldRegionX, newRegionX, oldRegionY, newRegionY)) { // brand new agent, let's create a new caps seed agentCircuit.CapsPath = CapsUtil.GetRandomCapsObjectPath(); @@ -244,7 +245,6 @@ namespace OpenSim.Region.CoreModules.Agent.AgentTransfer string reason = String.Empty; // Let's create an agent there if one doesn't exist yet. - //if (!m_commsProvider.InterRegion.InformRegionOfChildAgent(reg.RegionHandle, agentCircuit)) if (!m_aScene.SimulationService.CreateAgent(reg, agentCircuit, teleportFlags, out reason)) { sp.ControllingClient.SendTeleportFailed(String.Format("Destination is not accepting teleports: {0}", @@ -255,7 +255,7 @@ namespace OpenSim.Region.CoreModules.Agent.AgentTransfer // OK, it got this agent. Let's close some child agents sp.CloseChildAgents(newRegionX, newRegionY); - if (Util.IsOutsideView(oldRegionX, newRegionX, oldRegionY, newRegionY)) + if (NeedsNewAgent(oldRegionX, newRegionX, oldRegionY, newRegionY)) { #region IP Translation for NAT IClientIPEndpoint ipepClient; @@ -427,6 +427,47 @@ namespace OpenSim.Region.CoreModules.Agent.AgentTransfer } } + protected void KillEntity(Scene scene, uint localID) + { + scene.SendKillObject(localID); + } + + protected virtual ulong GetRegionHandle(GridRegion region) + { + return region.RegionHandle; + } + + protected virtual GridRegion GetFinalDestination(GridRegion region) + { + return region; + } + + protected virtual bool NeedsNewAgent(uint oldRegionX, uint newRegionX, uint oldRegionY, uint newRegionY) + { + return Util.IsOutsideView(oldRegionX, newRegionX, oldRegionY, newRegionY); + } + + protected virtual bool NeedsClosing(uint oldRegionX, uint newRegionX, uint oldRegionY, uint newRegionY, GridRegion reg) + { + return Util.IsOutsideView(oldRegionX, newRegionX, oldRegionY, newRegionY); + } + + protected virtual bool IsOutsideRegion(Scene s, Vector3 pos) + { + + if (s.TestBorderCross(pos, Cardinals.N)) + return true; + if (s.TestBorderCross(pos, Cardinals.S)) + return true; + if (s.TestBorderCross(pos, Cardinals.E)) + return true; + if (s.TestBorderCross(pos, Cardinals.W)) + return true; + + return false; + } + + #endregion #region Enable Child Agent @@ -1115,20 +1156,6 @@ namespace OpenSim.Region.CoreModules.Agent.AgentTransfer #region Misc - protected bool IsOutsideRegion(Scene s, Vector3 pos) - { - - if (s.TestBorderCross(pos, Cardinals.N)) - return true; - if (s.TestBorderCross(pos, Cardinals.S)) - return true; - if (s.TestBorderCross(pos, Cardinals.E)) - return true; - if (s.TestBorderCross(pos, Cardinals.W)) - return true; - - return false; - } protected bool WaitForCallback(UUID id) { @@ -1167,20 +1194,6 @@ namespace OpenSim.Region.CoreModules.Agent.AgentTransfer return false; } - protected void KillEntity(Scene scene, uint localID) - { - scene.SendKillObject(localID); - } - - protected virtual ulong GetRegionHandle(GridRegion region) - { - return region.RegionHandle; - } - - protected virtual bool NeedsClosing(uint oldRegionX, uint newRegionX, uint oldRegionY, uint newRegionY, GridRegion reg) - { - return Util.IsOutsideView(oldRegionX, newRegionX, oldRegionY, newRegionY); - } #endregion diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs index f4383f1cdb..e913891625 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs @@ -43,13 +43,13 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private List m_sceneList = new List(); - private IAgentTransferModule m_AgentTransferModule; - protected IAgentTransferModule AgentTransferModule + private IEntityTransferModule m_AgentTransferModule; + protected IEntityTransferModule AgentTransferModule { get { if (m_AgentTransferModule == null) - m_AgentTransferModule = m_sceneList[0].RequestModuleInterface(); + m_AgentTransferModule = m_sceneList[0].RequestModuleInterface(); return m_AgentTransferModule; } } diff --git a/OpenSim/Region/Framework/Interfaces/IAgentTransferModule.cs b/OpenSim/Region/Framework/Interfaces/IEntityTransferModule.cs similarity index 98% rename from OpenSim/Region/Framework/Interfaces/IAgentTransferModule.cs rename to OpenSim/Region/Framework/Interfaces/IEntityTransferModule.cs index 76745d6e20..96884b3161 100644 --- a/OpenSim/Region/Framework/Interfaces/IAgentTransferModule.cs +++ b/OpenSim/Region/Framework/Interfaces/IEntityTransferModule.cs @@ -34,7 +34,7 @@ using OpenSim.Region.Framework.Scenes; namespace OpenSim.Region.Framework.Interfaces { - public interface IAgentTransferModule + public interface IEntityTransferModule { void Teleport(ScenePresence agent, ulong regionHandle, Vector3 position, Vector3 lookAt, uint teleportFlags); diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index dcbbe08979..62734ff413 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs @@ -315,7 +315,7 @@ namespace OpenSim.Region.Framework.Scenes protected IConfigSource m_config; protected IRegionSerialiserModule m_serialiser; protected IDialogModule m_dialogModule; - protected IAgentTransferModule m_teleportModule; + protected IEntityTransferModule m_teleportModule; protected ICapabilitiesModule m_capsModule; public ICapabilitiesModule CapsModule @@ -1218,7 +1218,7 @@ namespace OpenSim.Region.Framework.Scenes m_serialiser = RequestModuleInterface(); m_dialogModule = RequestModuleInterface(); m_capsModule = RequestModuleInterface(); - m_teleportModule = RequestModuleInterface(); + m_teleportModule = RequestModuleInterface(); } #endregion diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index 711f9d9994..2c8c6750a3 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs @@ -1110,7 +1110,7 @@ namespace OpenSim.Region.Framework.Scenes // Create child agents in neighbouring regions if (!m_isChildAgent) { - IAgentTransferModule m_agentTransfer = m_scene.RequestModuleInterface(); + IEntityTransferModule m_agentTransfer = m_scene.RequestModuleInterface(); if (m_agentTransfer != null) m_agentTransfer.EnableChildAgents(this); else @@ -2193,7 +2193,7 @@ namespace OpenSim.Region.Framework.Scenes if (m_scene.SceneGridService != null) { - IAgentTransferModule m_agentTransfer = m_scene.RequestModuleInterface(); + IEntityTransferModule m_agentTransfer = m_scene.RequestModuleInterface(); if (m_agentTransfer != null) m_agentTransfer.EnableChildAgents(this); }