From 6546ea6da642f9b4c8bb03ee7e43741352820bd9 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Sun, 12 Nov 2017 12:00:03 +0000 Subject: [PATCH] mantis 8253: don't let attachments delete remove controls from viewers on crossings. --- .../Framework/EntityTransfer/EntityTransferModule.cs | 4 +++- OpenSim/Region/Framework/Scenes/ScenePresence.cs | 10 +--------- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs index 9b094f7bdc..d51b9da795 100644 --- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs +++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs @@ -1178,6 +1178,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer agent.ControlFlags |= (uint)AgentManager.ControlFlags.AGENT_CONTROL_FLY; agent.SenderWantsToWaitForRoot = true; + //SetCallbackURL(agent, sp.Scene.RegionInfo); // Reset the do not close flag. This must be done before the destination opens child connections (here @@ -1877,7 +1878,8 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer if(childRegionsToClose != null) agent.CloseChildAgents(childRegionsToClose); - // this may need the attachments + if((agent.crossingFlags & 8) == 0) + agent.ClearControls(); // don't let attachments delete (called in HasMovedAway) disturb taken controls on viewers agent.HasMovedAway((agent.crossingFlags & 8) == 0); diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index 059a846e82..018c2e2c53 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs @@ -2288,13 +2288,6 @@ namespace OpenSim.Region.Framework.Scenes } } - if(gotCrossUpdate) - { - if(IgnoredControls != ScriptControlled.CONTROL_ZERO) - ControllingClient.SendTakeControls((int)IgnoredControls, false, true); - - } - m_log.DebugFormat("[CompleteMovement] attachments: {0}ms", Util.EnvironmentTickCountSubtract(ts)); if (openChildAgents) { @@ -5685,7 +5678,6 @@ namespace OpenSim.Region.Framework.Scenes { IgnoredControls = ScriptControlled.CONTROL_ZERO; obj.eventControls = (ScriptControlled)controls; - obj.ignoreControls = ScriptControlled.CONTROL_ZERO; } lock (scriptedcontrols) @@ -5801,7 +5793,7 @@ namespace OpenSim.Region.Framework.Scenes { if (scriptedcontrols.TryGetValue(Script_item_UUID, out takecontrols)) { - ScriptControlled sctc = takecontrols.eventControls; + ScriptControlled sctc = takecontrols.eventControls; ControllingClient.SendTakeControls((int)sctc, false, false); ControllingClient.SendTakeControls((int)sctc, true, false);