From 25809caaeb6523d589d825a253db8d92a595dfbc Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Sun, 8 May 2011 09:28:15 -0700 Subject: Mantis #5472 --- .../EntityTransfer/EntityTransferModule.cs | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) (limited to 'OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs') diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs index e380067..e295a2a 100644 --- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs +++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs @@ -891,6 +891,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer if (!m_scene.SimulationService.UpdateAgent(neighbourRegion, cAgent)) { // region doesn't take it + ReInstantiateScripts(agent); ResetFromTransit(agent.UUID); return agent; } @@ -1760,14 +1761,22 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer protected void ReInstantiateScripts(ScenePresence sp) { int i = 0; - sp.Attachments.ForEach(delegate(SceneObjectGroup sog) + if (sp.InTransitScriptStates.Count > 0) { - sog.SetState(sp.InTransitScriptStates[i++], sp.Scene); - sog.CreateScriptInstances(0, false, sp.Scene.DefaultScriptEngine, 0); - sog.ResumeScripts(); - }); + sp.Attachments.ForEach(delegate(SceneObjectGroup sog) + { + if (i < sp.InTransitScriptStates.Count) + { + sog.SetState(sp.InTransitScriptStates[i++], sp.Scene); + sog.CreateScriptInstances(0, false, sp.Scene.DefaultScriptEngine, 0); + sog.ResumeScripts(); + } + else + m_log.ErrorFormat("[ENTITY TRANSFER MODULE]: InTransitScriptStates.Count={0} smaller than Attachments.Count={1}", sp.InTransitScriptStates.Count, sp.Attachments.Count); + }); - sp.InTransitScriptStates.Clear(); + sp.InTransitScriptStates.Clear(); + } } #endregion -- cgit v1.1