aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs18
-rw-r--r--OpenSim/Region/Framework/Scenes/EventManager.cs3
2 files changed, 20 insertions, 1 deletions
diff --git a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
index 58ed554..f9c2142 100644
--- a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
@@ -75,10 +75,26 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
75 m_scene.RegisterModuleInterface<IAttachmentsModule>(this); 75 m_scene.RegisterModuleInterface<IAttachmentsModule>(this);
76 76
77 if (Enabled) 77 if (Enabled)
78 {
78 m_scene.EventManager.OnNewClient += SubscribeToClientEvents; 79 m_scene.EventManager.OnNewClient += SubscribeToClientEvents;
80 m_scene.EventManager.OnStartScript += HandleScriptStateChange;
81 m_scene.EventManager.OnStopScript += HandleScriptStateChange;
82 }
79 83
80 // TODO: Should probably be subscribing to CloseClient too, but this doesn't yet give us IClientAPI 84 // TODO: Should probably be subscribing to CloseClient too, but this doesn't yet give us IClientAPI
81 } 85 }
86
87 /// <summary>
88 /// Listen for client triggered running state changes so that we can persist the script's object if necessary.
89 /// </summary>
90 /// <param name='localID'></param>
91 /// <param name='itemID'></param>
92 private void HandleScriptStateChange(uint localID, UUID itemID)
93 {
94 SceneObjectGroup sog = m_scene.GetGroupByPrim(localID);
95 if (sog != null && sog.IsAttachment)
96 sog.HasGroupChanged = true;
97 }
82 98
83 public void RemoveRegion(Scene scene) 99 public void RemoveRegion(Scene scene)
84 { 100 {
@@ -743,7 +759,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
743 // Remove the object from the scene so no more updates 759 // Remove the object from the scene so no more updates
744 // are sent. Doing this before the below changes will ensure 760 // are sent. Doing this before the below changes will ensure
745 // updates can't cause "HUD artefacts" 761 // updates can't cause "HUD artefacts"
746 m_scene.DeleteSceneObject(so, false, false); 762 m_scene.DeleteSceneObject(so, false);
747 763
748 // Prepare sog for storage 764 // Prepare sog for storage
749 so.AttachedAvatar = UUID.Zero; 765 so.AttachedAvatar = UUID.Zero;
diff --git a/OpenSim/Region/Framework/Scenes/EventManager.cs b/OpenSim/Region/Framework/Scenes/EventManager.cs
index 6b08e0f..902ded1 100644
--- a/OpenSim/Region/Framework/Scenes/EventManager.cs
+++ b/OpenSim/Region/Framework/Scenes/EventManager.cs
@@ -339,6 +339,8 @@ namespace OpenSim.Region.Framework.Scenes
339 /// in <see cref="Scene.SetScriptRunning"/> 339 /// in <see cref="Scene.SetScriptRunning"/>
340 /// via <see cref="OpenSim.Framework.IClientAPI.OnSetScriptRunning"/>, 340 /// via <see cref="OpenSim.Framework.IClientAPI.OnSetScriptRunning"/>,
341 /// via <see cref="OpenSim.Region.ClientStack.LindenUDP.HandleSetScriptRunning"/> 341 /// via <see cref="OpenSim.Region.ClientStack.LindenUDP.HandleSetScriptRunning"/>
342 /// XXX: This is only triggered when it is the client that starts the script, not in other situations where
343 /// a script is started, unlike OnStopScript!
342 /// </remarks> 344 /// </remarks>
343 public event StartScript OnStartScript; 345 public event StartScript OnStartScript;
344 346
@@ -352,6 +354,7 @@ namespace OpenSim.Region.Framework.Scenes
352 /// in <see cref="SceneObjectPartInventory.CreateScriptInstance"/>, 354 /// in <see cref="SceneObjectPartInventory.CreateScriptInstance"/>,
353 /// <see cref="SceneObjectPartInventory.StopScriptInstance"/>, 355 /// <see cref="SceneObjectPartInventory.StopScriptInstance"/>,
354 /// <see cref="Scene.SetScriptRunning"/> 356 /// <see cref="Scene.SetScriptRunning"/>
357 /// XXX: This is triggered when a sciprt is stopped for any reason, unlike OnStartScript!
355 /// </remarks> 358 /// </remarks>
356 public event StopScript OnStopScript; 359 public event StopScript OnStopScript;
357 360