aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorDiva Canto2011-04-29 15:52:06 -0700
committerDiva Canto2011-04-29 15:52:06 -0700
commit0d49611f6db017da16b6099c440b6c1e2b2218b9 (patch)
treeeb25beec8d2c8766e84956b9ba95c2a3fc046e85
parentMinor correction to yesterday's changes. Make normal prim crossing (no attach... (diff)
downloadopensim-SC-0d49611f6db017da16b6099c440b6c1e2b2218b9.zip
opensim-SC-0d49611f6db017da16b6099c440b6c1e2b2218b9.tar.gz
opensim-SC-0d49611f6db017da16b6099c440b6c1e2b2218b9.tar.bz2
opensim-SC-0d49611f6db017da16b6099c440b6c1e2b2218b9.tar.xz
Remove the scripts of the attachments in the departing region and recreate them if fail.
Diffstat (limited to '')
-rw-r--r--OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs12
-rw-r--r--OpenSim/Region/Framework/Scenes/ScenePresence.cs2
2 files changed, 12 insertions, 2 deletions
diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
index 1054785..b985fbb 100644
--- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
+++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
@@ -479,7 +479,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
479 479
480 // Fail. Reset it back 480 // Fail. Reset it back
481 sp.IsChildAgent = false; 481 sp.IsChildAgent = false;
482 482 ReInstantiateScripts(sp);
483 ResetFromTransit(sp.UUID); 483 ResetFromTransit(sp.UUID);
484 484
485 EnableChildAgents(sp); 485 EnableChildAgents(sp);
@@ -930,6 +930,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
930 if (!WaitForCallback(agent.UUID)) 930 if (!WaitForCallback(agent.UUID))
931 { 931 {
932 m_log.Debug("[ENTITY TRANSFER MODULE]: Callback never came in crossing agent"); 932 m_log.Debug("[ENTITY TRANSFER MODULE]: Callback never came in crossing agent");
933 ReInstantiateScripts(agent);
933 ResetFromTransit(agent.UUID); 934 ResetFromTransit(agent.UUID);
934 935
935 // Yikes! We should just have a ref to scene here. 936 // Yikes! We should just have a ref to scene here.
@@ -1756,7 +1757,14 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
1756 return false; 1757 return false;
1757 } 1758 }
1758 1759
1759 1760 protected void ReInstantiateScripts(ScenePresence sp)
1761 {
1762 sp.Attachments.ForEach(delegate(SceneObjectGroup sog)
1763 {
1764 sog.CreateScriptInstances(0, false, sp.Scene.DefaultScriptEngine, 0);
1765 sog.ResumeScripts();
1766 });
1767 }
1760 #endregion 1768 #endregion
1761 1769
1762 } 1770 }
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index fe4a7d1..9b9d9da 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -3113,6 +3113,8 @@ namespace OpenSim.Region.Framework.Scenes
3113 ((SceneObjectGroup)clone).RootPart.IsAttachment = false; 3113 ((SceneObjectGroup)clone).RootPart.IsAttachment = false;
3114 cAgent.AttachmentObjects.Add(clone); 3114 cAgent.AttachmentObjects.Add(clone);
3115 cAgent.AttachmentObjectStates.Add(sog.GetStateSnapshot()); 3115 cAgent.AttachmentObjectStates.Add(sog.GetStateSnapshot());
3116 // Let's remove the scripts of the original object here
3117 sog.RemoveScriptInstances(true);
3116 } 3118 }
3117 } 3119 }
3118 } 3120 }