diff options
Diffstat (limited to 'OpenSim/Region')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/ScenePresence.cs | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index f86814d..daa9e50 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs | |||
@@ -1819,6 +1819,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1819 | lock (m_knownChildRegions) | 1819 | lock (m_knownChildRegions) |
1820 | { | 1820 | { |
1821 | m_knownChildRegionsSizeInfo.Clear(); | 1821 | m_knownChildRegionsSizeInfo.Clear(); |
1822 | |||
1822 | foreach (GridRegion region in regionsList) | 1823 | foreach (GridRegion region in regionsList) |
1823 | { | 1824 | { |
1824 | spRegionSizeInfo sizeInfo = new spRegionSizeInfo(); | 1825 | spRegionSizeInfo sizeInfo = new spRegionSizeInfo(); |
@@ -4440,15 +4441,19 @@ namespace OpenSim.Region.Framework.Scenes | |||
4440 | /// <returns></returns> | 4441 | /// <returns></returns> |
4441 | public List<ulong> GetChildAgentsToClose(ulong newRegionHandle, int newRegionSizeX, int newRegionSizeY) | 4442 | public List<ulong> GetChildAgentsToClose(ulong newRegionHandle, int newRegionSizeX, int newRegionSizeY) |
4442 | { | 4443 | { |
4443 | uint newRegionX, newRegionY; | 4444 | ulong curRegionHandle = m_scene.RegionInfo.RegionHandle; |
4444 | List<ulong> byebyeRegions = new List<ulong>(); | 4445 | List<ulong> byebyeRegions = new List<ulong>(); |
4446 | |||
4447 | if(newRegionHandle == curRegionHandle) //?? | ||
4448 | return byebyeRegions; | ||
4449 | |||
4450 | uint newRegionX, newRegionY; | ||
4445 | List<ulong> knownRegions = KnownRegionHandles; | 4451 | List<ulong> knownRegions = KnownRegionHandles; |
4446 | m_log.DebugFormat( | 4452 | m_log.DebugFormat( |
4447 | "[SCENE PRESENCE]: Closing child agents. Checking {0} regions in {1}", | 4453 | "[SCENE PRESENCE]: Closing child agents. Checking {0} regions in {1}", |
4448 | knownRegions.Count, Scene.RegionInfo.RegionName); | 4454 | knownRegions.Count, Scene.RegionInfo.RegionName); |
4449 | 4455 | ||
4450 | Util.RegionHandleToRegionLoc(newRegionHandle, out newRegionX, out newRegionY); | 4456 | Util.RegionHandleToRegionLoc(newRegionHandle, out newRegionX, out newRegionY); |
4451 | |||
4452 | uint x, y; | 4457 | uint x, y; |
4453 | spRegionSizeInfo regInfo; | 4458 | spRegionSizeInfo regInfo; |
4454 | 4459 | ||
@@ -4456,7 +4461,16 @@ namespace OpenSim.Region.Framework.Scenes | |||
4456 | { | 4461 | { |
4457 | if(newRegionY == 0) // HG | 4462 | if(newRegionY == 0) // HG |
4458 | byebyeRegions.Add(handle); | 4463 | byebyeRegions.Add(handle); |
4459 | else | 4464 | else if(handle == curRegionHandle) |
4465 | { | ||
4466 | RegionInfo curreg = m_scene.RegionInfo; | ||
4467 | if (Util.IsOutsideView(255, curreg.RegionLocX, newRegionX, curreg.RegionLocY, newRegionY, | ||
4468 | (int)curreg.RegionSizeX, (int)curreg.RegionSizeX, newRegionSizeX, newRegionSizeY)) | ||
4469 | { | ||
4470 | byebyeRegions.Add(handle); | ||
4471 | } | ||
4472 | } | ||
4473 | else | ||
4460 | { | 4474 | { |
4461 | Util.RegionHandleToRegionLoc(handle, out x, out y); | 4475 | Util.RegionHandleToRegionLoc(handle, out x, out y); |
4462 | if (m_knownChildRegionsSizeInfo.TryGetValue(handle, out regInfo)) | 4476 | if (m_knownChildRegionsSizeInfo.TryGetValue(handle, out regInfo)) |
@@ -4471,7 +4485,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
4471 | } | 4485 | } |
4472 | else | 4486 | else |
4473 | { | 4487 | { |
4474 | if (Util.IsOutsideView(RegionViewDistance, x, newRegionX, y, newRegionY, | 4488 | // if (Util.IsOutsideView(RegionViewDistance, x, newRegionX, y, newRegionY, |
4489 | if (Util.IsOutsideView(255, x, newRegionX, y, newRegionY, | ||
4475 | (int)Constants.RegionSize, (int)Constants.RegionSize, newRegionSizeX, newRegionSizeY)) | 4490 | (int)Constants.RegionSize, (int)Constants.RegionSize, newRegionSizeX, newRegionSizeY)) |
4476 | { | 4491 | { |
4477 | byebyeRegions.Add(handle); | 4492 | byebyeRegions.Add(handle); |