From f6ae8534be0587ad79acbb642f5d79e2597972ab Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Sat, 1 Nov 2014 15:38:14 +0000 Subject: only close child agents on sucess of V1 tp not at start --- .../EntityTransfer/EntityTransferModule.cs | 48 +++++----------------- 1 file changed, 10 insertions(+), 38 deletions(-) (limited to 'OpenSim/Region') diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs index afc73ec..1861055 100644 --- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs +++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs @@ -830,7 +830,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer m_entityTransferStateMachine.UpdateInTransit(sp.UUID, AgentTransferState.Transferring); // OK, it got this agent. Let's close some child agents - sp.CloseChildAgents(newRegionX, newRegionY); + if (NeedsNewAgent(sp.DrawDistance, oldRegionX, newRegionX, oldRegionY, newRegionY)) { @@ -972,7 +972,6 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer return; } - m_entityTransferStateMachine.UpdateInTransit(sp.UUID, AgentTransferState.CleaningUp); // For backwards compatibility if (version == "Unknown" || version == string.Empty) @@ -982,6 +981,9 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer CrossAttachmentsIntoNewRegion(finalDestination, sp, true); } + m_entityTransferStateMachine.UpdateInTransit(sp.UUID, AgentTransferState.CleaningUp); + + // May need to logout or other cleanup // AgentHasMovedAway(sp, logout); // AgentHasMovedAway(sp, true); // until logout use is checked @@ -992,6 +994,8 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer bool l_needsclosing = NeedsClosing(sp.DrawDistance, oldRegionX, newRegionX, oldRegionY, newRegionY, reg); sp.HasMovedAway(!l_needsclosing); + sp.CloseChildAgents(newRegionX, newRegionY); + // Now let's make it officially a child agent sp.MakeChildAgent(destinationHandle); @@ -1518,10 +1522,6 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer */ float regionSizeX = regInfo.RegionSizeX; float regionSizeY = regInfo.RegionSizeY; - if (regionSizeX == 0) - regionSizeX = 256f; - if (regionSizeY == 0) - regionSizeY = 256f; if (pos.X < boundaryDistance) neighbourx--; @@ -1565,9 +1565,9 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer float newRegionSizeX = neighbourRegion.RegionSizeX; float newRegionSizeY = neighbourRegion.RegionSizeY; if (newRegionSizeX == 0) - newRegionSizeX = 256f; + newRegionSizeX = Constants.RegionSize; if (newRegionSizeY == 0) - newRegionSizeY = 256f; + newRegionSizeY = Constants.RegionSize; if (pos.X < boundaryDistance) newpos.X += newRegionSizeX; @@ -2450,10 +2450,6 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer int neighboury = (int)srcRegionInfo.RegionLocY; float regionSizeX = srcRegionInfo.RegionSizeX; float regionSizeY = srcRegionInfo.RegionSizeY; - if (regionSizeX == 0) - regionSizeX = 256f; - if (regionSizeY == 0) - regionSizeY = 256f; float edgeJitter = 0.2f; @@ -2479,9 +2475,9 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer float newRegionSizeX = neighbourRegion.RegionSizeX; float newRegionSizeY = neighbourRegion.RegionSizeY; if (newRegionSizeX == 0) - newRegionSizeX = 256f; + newRegionSizeX = Constants.RegionSize; if (newRegionSizeY == 0) - newRegionSizeY = 256f; + newRegionSizeY = Constants.RegionSize; if (targetPosition.X < edgeJitter) newpos.X += newRegionSizeX; @@ -2773,30 +2769,6 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer grp, e); } } -/* - * done on caller ( not in attachments crossing for now) - else - { - - if (!grp.IsDeleted) - { - PhysicsActor pa = grp.RootPart.PhysActor; - if (pa != null) - { - pa.CrossingFailure(); - if (grp.RootPart.KeyframeMotion != null) - { - // moved to KeyframeMotion.CrossingFailure -// grp.RootPart.Velocity = Vector3.Zero; - grp.RootPart.KeyframeMotion.CrossingFailure(); -// grp.SendGroupRootTerseUpdate(); - } - } - } - - m_log.ErrorFormat("[ENTITY TRANSFER MODULE]: Prim crossing failed for {0}", grp); - } - */ } else { -- cgit v1.1