aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Framework')
-rw-r--r--OpenSim/Region/Framework/Scenes/EventManager.cs16
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.Inventory.cs6
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneGraph.cs6
3 files changed, 26 insertions, 2 deletions
diff --git a/OpenSim/Region/Framework/Scenes/EventManager.cs b/OpenSim/Region/Framework/Scenes/EventManager.cs
index 4b3e45f..086496e 100644
--- a/OpenSim/Region/Framework/Scenes/EventManager.cs
+++ b/OpenSim/Region/Framework/Scenes/EventManager.cs
@@ -298,6 +298,13 @@ namespace OpenSim.Region.Framework.Scenes
298 public delegate void EmptyScriptCompileQueue(int numScriptsFailed, string message); 298 public delegate void EmptyScriptCompileQueue(int numScriptsFailed, string message);
299 public event EmptyScriptCompileQueue OnEmptyScriptCompileQueue; 299 public event EmptyScriptCompileQueue OnEmptyScriptCompileQueue;
300 300
301 /// <summary>
302 /// Called whenever an object is attached, or detached
303 /// from an in-world presence.
304 /// </summary>
305 public delegate void Attach(uint localID, UUID itemID, UUID avatarID);
306 public event Attach OnAttach;
307
301 public class MoneyTransferArgs : EventArgs 308 public class MoneyTransferArgs : EventArgs
302 { 309 {
303 public UUID sender; 310 public UUID sender;
@@ -438,6 +445,15 @@ namespace OpenSim.Region.Framework.Scenes
438 445
439 private EmptyScriptCompileQueue handlerEmptyScriptCompileQueue = null; 446 private EmptyScriptCompileQueue handlerEmptyScriptCompileQueue = null;
440 447
448 private Attach handlerOnAttach = null;
449
450 public void TriggerOnAttach(uint localID, UUID itemID, UUID avatarID)
451 {
452 handlerOnAttach = OnAttach;
453 if (handlerOnAttach != null)
454 handlerOnAttach(localID, itemID, avatarID);
455 }
456
441 public void TriggerGetScriptRunning(IClientAPI controllingClient, UUID objectID, UUID itemID) 457 public void TriggerGetScriptRunning(IClientAPI controllingClient, UUID objectID, UUID itemID)
442 { 458 {
443 handlerGetScriptRunning = OnGetScriptRunning; 459 handlerGetScriptRunning = OnGetScriptRunning;
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
index 15009a3..facd301 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
@@ -2574,6 +2574,11 @@ namespace OpenSim.Region.Framework.Scenes
2574 EventManager.TriggerStopScript(part.LocalId, itemID); 2574 EventManager.TriggerStopScript(part.LocalId, itemID);
2575 } 2575 }
2576 2576
2577 internal void SendAttachEvent(uint localID, UUID itemID, UUID avatarID)
2578 {
2579 EventManager.TriggerOnAttach(localID, itemID, avatarID);
2580 }
2581
2577 public UUID RezSingleAttachment(IClientAPI remoteClient, UUID itemID, 2582 public UUID RezSingleAttachment(IClientAPI remoteClient, UUID itemID,
2578 uint AttachmentPt) 2583 uint AttachmentPt)
2579 { 2584 {
@@ -2684,6 +2689,7 @@ namespace OpenSim.Region.Framework.Scenes
2684 remoteClient.SendRemoveInventoryItem(inventoryID); 2689 remoteClient.SendRemoveInventoryItem(inventoryID);
2685 } 2690 }
2686 } 2691 }
2692 SendAttachEvent(part.ParentGroup.LocalId, itemID, UUID.Zero);
2687 } 2693 }
2688 2694
2689 public void DetachSingleAttachmentToInv(UUID itemID, IClientAPI remoteClient) 2695 public void DetachSingleAttachmentToInv(UUID itemID, IClientAPI remoteClient)
diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
index 3f63481..0e0999a 100644
--- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
@@ -489,6 +489,7 @@ namespace OpenSim.Region.Framework.Scenes
489 // Calls attach with a Zero position 489 // Calls attach with a Zero position
490 // 490 //
491 AttachObject(remoteClient, objectLocalID, AttachmentPt, rot, Vector3.Zero, false); 491 AttachObject(remoteClient, objectLocalID, AttachmentPt, rot, Vector3.Zero, false);
492 m_parentScene.SendAttachEvent(objectLocalID, part.ParentGroup.GetFromAssetID(), remoteClient.AgentId);
492 } 493 }
493 494
494 public SceneObjectGroup RezSingleAttachment( 495 public SceneObjectGroup RezSingleAttachment(
@@ -511,8 +512,8 @@ namespace OpenSim.Region.Framework.Scenes
511 objatt.HasGroupChanged = true; 512 objatt.HasGroupChanged = true;
512 513
513 // Fire after attach, so we don't get messy perms dialogs 514 // Fire after attach, so we don't get messy perms dialogs
514 // 515 // 3 == AttachedRez
515 objatt.CreateScriptInstances(0, true, m_parentScene.DefaultScriptEngine, 0); 516 objatt.CreateScriptInstances(0, true, m_parentScene.DefaultScriptEngine, 3);
516 } 517 }
517 return objatt; 518 return objatt;
518 } 519 }
@@ -537,6 +538,7 @@ namespace OpenSim.Region.Framework.Scenes
537 group = (SceneObjectGroup)entity; 538 group = (SceneObjectGroup)entity;
538 if (group.GetFromAssetID() == itemID) 539 if (group.GetFromAssetID() == itemID)
539 { 540 {
541 m_parentScene.SendAttachEvent(group.LocalId, itemID, UUID.Zero);
540 group.DetachToInventoryPrep(); 542 group.DetachToInventoryPrep();
541 m_log.Debug("[DETACH]: Saving attachpoint: " + 543 m_log.Debug("[DETACH]: Saving attachpoint: " +
542 ((uint)group.GetAttachmentPoint()).ToString()); 544 ((uint)group.GetAttachmentPoint()).ToString());