aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.cs5
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectPart.cs4
-rw-r--r--OpenSim/Region/Framework/Scenes/ScenePresence.cs25
3 files changed, 33 insertions, 1 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index 94ead98..28fce53 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -2861,7 +2861,10 @@ namespace OpenSim.Region.Framework.Scenes
2861// "[ATTACHMENT]: Attach to avatar {0} at position {1}", sp.UUID, grp.AbsolutePosition); 2861// "[ATTACHMENT]: Attach to avatar {0} at position {1}", sp.UUID, grp.AbsolutePosition);
2862 2862
2863 RootPrim.RemFlag(PrimFlags.TemporaryOnRez); 2863 RootPrim.RemFlag(PrimFlags.TemporaryOnRez);
2864 2864
2865 // We must currently not resume scripts at this stage since AttachmentsModule does not have the
2866 // information that this is due to a teleport/border cross rather than an ordinary attachment.
2867 // We currently do this in Scene.MakeRootAgent() instead.
2865 if (AttachmentsModule != null) 2868 if (AttachmentsModule != null)
2866 AttachmentsModule.AttachObject(sp, grp, 0, false, false, false, true); 2869 AttachmentsModule.AttachObject(sp, grp, 0, false, false, false, true);
2867 } 2870 }
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
index 9265805..6839614 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
@@ -3743,6 +3743,10 @@ namespace OpenSim.Region.Framework.Scenes
3743 /// <param name="events"></param> 3743 /// <param name="events"></param>
3744 public void SetScriptEvents(UUID scriptid, int events) 3744 public void SetScriptEvents(UUID scriptid, int events)
3745 { 3745 {
3746// m_log.DebugFormat(
3747// "[SCENE OBJECT PART]: Set script events for script with id {0} on {1}/{2} to {3} in {4}",
3748// scriptid, Name, ParentGroup.Name, events, ParentGroup.Scene.Name);
3749
3746 // scriptEvents oldparts; 3750 // scriptEvents oldparts;
3747 lock (m_scriptEvents) 3751 lock (m_scriptEvents)
3748 { 3752 {
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index d41325c..f01a916 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -1113,6 +1113,31 @@ namespace OpenSim.Region.Framework.Scenes
1113 Scene.AttachmentsModule.RezAttachments(this); 1113 Scene.AttachmentsModule.RezAttachments(this);
1114 }); 1114 });
1115 } 1115 }
1116 else
1117 {
1118 // We need to restart scripts here so that they receive the correct changed events (CHANGED_TELEPORT
1119 // and CHANGED_REGION) when the attachments have been rezzed in the new region. This cannot currently
1120 // be done in AttachmentsModule.CopyAttachments(AgentData ad, IScenePresence sp) itself since we are
1121 // not transporting the required data.
1122 lock (m_attachments)
1123 {
1124 if (HasAttachments())
1125 {
1126 m_log.DebugFormat(
1127 "[SCENE PRESENCE]: Restarting scripts in attachments for {0} in {1}", Name, Scene.Name);
1128
1129 // Resume scripts
1130 Util.FireAndForget(delegate(object x) {
1131 foreach (SceneObjectGroup sog in m_attachments)
1132 {
1133 sog.ScheduleGroupForFullUpdate();
1134 sog.RootPart.ParentGroup.CreateScriptInstances(0, false, m_scene.DefaultScriptEngine, GetStateSource());
1135 sog.ResumeScripts();
1136 }
1137 });
1138 }
1139 }
1140 }
1116 1141
1117 SendAvatarDataToAllAgents(); 1142 SendAvatarDataToAllAgents();
1118 1143