Remove the scripts of the attachments in the departing region and recreate them if fail.
parent
73caa4e94a
commit
0d49611f6d
|
@ -479,7 +479,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
|
||||||
|
|
||||||
// Fail. Reset it back
|
// Fail. Reset it back
|
||||||
sp.IsChildAgent = false;
|
sp.IsChildAgent = false;
|
||||||
|
ReInstantiateScripts(sp);
|
||||||
ResetFromTransit(sp.UUID);
|
ResetFromTransit(sp.UUID);
|
||||||
|
|
||||||
EnableChildAgents(sp);
|
EnableChildAgents(sp);
|
||||||
|
@ -930,6 +930,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
|
||||||
if (!WaitForCallback(agent.UUID))
|
if (!WaitForCallback(agent.UUID))
|
||||||
{
|
{
|
||||||
m_log.Debug("[ENTITY TRANSFER MODULE]: Callback never came in crossing agent");
|
m_log.Debug("[ENTITY TRANSFER MODULE]: Callback never came in crossing agent");
|
||||||
|
ReInstantiateScripts(agent);
|
||||||
ResetFromTransit(agent.UUID);
|
ResetFromTransit(agent.UUID);
|
||||||
|
|
||||||
// Yikes! We should just have a ref to scene here.
|
// Yikes! We should just have a ref to scene here.
|
||||||
|
@ -1756,7 +1757,14 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void ReInstantiateScripts(ScenePresence sp)
|
||||||
|
{
|
||||||
|
sp.Attachments.ForEach(delegate(SceneObjectGroup sog)
|
||||||
|
{
|
||||||
|
sog.CreateScriptInstances(0, false, sp.Scene.DefaultScriptEngine, 0);
|
||||||
|
sog.ResumeScripts();
|
||||||
|
});
|
||||||
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -3113,6 +3113,8 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
((SceneObjectGroup)clone).RootPart.IsAttachment = false;
|
((SceneObjectGroup)clone).RootPart.IsAttachment = false;
|
||||||
cAgent.AttachmentObjects.Add(clone);
|
cAgent.AttachmentObjects.Add(clone);
|
||||||
cAgent.AttachmentObjectStates.Add(sog.GetStateSnapshot());
|
cAgent.AttachmentObjectStates.Add(sog.GetStateSnapshot());
|
||||||
|
// Let's remove the scripts of the original object here
|
||||||
|
sog.RemoveScriptInstances(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue