mirror of
https://github.com/opensim/opensim.git
synced 2026-08-05 08:55:56 +08:00
mantis 8253: don't let attachments delete remove controls from viewers on crossings.
This commit is contained in:
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user