diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs index b4ac968008..86685587a9 100644 --- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs +++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs @@ -1785,11 +1785,14 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer cAgent.Position = pos; cAgent.ChildrenCapSeeds = agent.KnownRegions; - childRegionsToClose = agent.GetChildAgentsToClose(neighbourRegion.RegionHandle, neighbourRegion.RegionSizeX, neighbourRegion.RegionSizeY); - if(cAgent.ChildrenCapSeeds != null) + if(ctx.OutboundVersion < 0.7f) { - foreach(ulong regh in childRegionsToClose) - cAgent.ChildrenCapSeeds.Remove(regh); + childRegionsToClose = agent.GetChildAgentsToClose(neighbourRegion.RegionHandle, neighbourRegion.RegionSizeX, neighbourRegion.RegionSizeY); + if(cAgent.ChildrenCapSeeds != null) + { + foreach(ulong regh in childRegionsToClose) + cAgent.ChildrenCapSeeds.Remove(regh); + } } if (isFlying) diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index fbf9b4a783..438ae4cb5f 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs @@ -4415,10 +4415,12 @@ namespace OpenSim.Region.Framework.Scenes if (tdiff < CHILDUPDATES_TIME) return; + bool viewchanged = Math.Abs(DrawDistance - m_lastChildAgentUpdateDrawDistance) > 32.0f; + IEntityTransferModule m_agentTransfer = m_scene.RequestModuleInterface(); - float dx = pos.X - m_lastChildAgentCheckPosition.Y; + float dx = pos.X - m_lastChildAgentCheckPosition.X; float dy = pos.Y - m_lastChildAgentCheckPosition.Y; - if ((m_agentTransfer != null) && ((dx * dx + dy *dy) > CHILDAGENTSCHECK_MOVEMENT)) + if ((m_agentTransfer != null) && (viewchanged || ((dx * dx + dy * dy) > CHILDAGENTSCHECK_MOVEMENT))) { m_childUpdatesBusy = true; m_lastChildAgentCheckPosition = pos; @@ -4445,7 +4447,6 @@ namespace OpenSim.Region.Framework.Scenes if (m_lastChildAgentUpdateGodLevel != GodController.ViwerUIGodLevel) doUpdate = true; - bool viewchanged = Math.Abs(DrawDistance - m_lastChildAgentUpdateDrawDistance) > 32.0f; if (!viewchanged) doUpdate = true;