aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-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.cs2
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs16
-rw-r--r--OpenSim/Region/ScriptEngine/XEngine/EventManager.cs1
5 files changed, 41 insertions, 0 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..5752a88 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(
@@ -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());
diff --git a/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs b/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs
index 42d61a7..586f926 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs
@@ -89,6 +89,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance
89 private long m_eventDelayTicks = 0; 89 private long m_eventDelayTicks = 0;
90 private long m_nextEventTimeTicks = 0; 90 private long m_nextEventTimeTicks = 0;
91 private bool m_startOnInit = true; 91 private bool m_startOnInit = true;
92 private bool m_isAttachment = false;
93 private UUID m_attachedAvatar = UUID.Zero;
92 private StateSource m_stateSource; 94 private StateSource m_stateSource;
93 private bool m_postOnRez; 95 private bool m_postOnRez;
94 private bool m_startedFromSavedState = false; 96 private bool m_startedFromSavedState = false;
@@ -232,6 +234,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance
232 m_MaxScriptQueue = maxScriptQueue; 234 m_MaxScriptQueue = maxScriptQueue;
233 m_stateSource = stateSource; 235 m_stateSource = stateSource;
234 m_postOnRez = postOnRez; 236 m_postOnRez = postOnRez;
237 m_isAttachment = part.IsAttachment;
238 m_attachedAvatar = part.AttachedAvatar;
235 m_RegionID = part.ParentGroup.Scene.RegionInfo.RegionID; 239 m_RegionID = part.ParentGroup.Scene.RegionInfo.RegionID;
236 240
237 if (part != null) 241 if (part != null)
@@ -379,6 +383,12 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance
379 new Object[] {new LSL_Types.LSLInteger(m_StartParam)}, new DetectParams[0])); 383 new Object[] {new LSL_Types.LSLInteger(m_StartParam)}, new DetectParams[0]));
380 } 384 }
381 385
386 if (m_isAttachment)
387 {
388 PostEvent(new EventParams("attach",
389 new object[] { new LSL_Types.LSLString(m_attachedAvatar.ToString()) }, new DetectParams[0]));
390 }
391
382 if (m_stateSource == StateSource.NewRez) 392 if (m_stateSource == StateSource.NewRez)
383 { 393 {
384// m_log.Debug("[Script] Posted changed(CHANGED_REGION_RESTART) to script"); 394// m_log.Debug("[Script] Posted changed(CHANGED_REGION_RESTART) to script");
@@ -403,6 +413,12 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance
403 new Object[] {new LSL_Types.LSLInteger(m_StartParam)}, new DetectParams[0])); 413 new Object[] {new LSL_Types.LSLInteger(m_StartParam)}, new DetectParams[0]));
404 } 414 }
405 415
416 if (m_isAttachment)
417 {
418 PostEvent(new EventParams("attach",
419 new object[] { new LSL_Types.LSLString(m_attachedAvatar.ToString()) }, new DetectParams[0]));
420 }
421
406 } 422 }
407 } 423 }
408 424
diff --git a/OpenSim/Region/ScriptEngine/XEngine/EventManager.cs b/OpenSim/Region/ScriptEngine/XEngine/EventManager.cs
index 3b9ff2e..7142c8c 100644
--- a/OpenSim/Region/ScriptEngine/XEngine/EventManager.cs
+++ b/OpenSim/Region/ScriptEngine/XEngine/EventManager.cs
@@ -53,6 +53,7 @@ namespace OpenSim.Region.ScriptEngine.XEngine
53 myScriptEngine = _ScriptEngine; 53 myScriptEngine = _ScriptEngine;
54 54
55 m_log.Info("[XEngine] Hooking up to server events"); 55 m_log.Info("[XEngine] Hooking up to server events");
56 myScriptEngine.World.EventManager.OnAttach += attach;
56 myScriptEngine.World.EventManager.OnObjectGrab += touch_start; 57 myScriptEngine.World.EventManager.OnObjectGrab += touch_start;
57 myScriptEngine.World.EventManager.OnObjectDeGrab += touch_end; 58 myScriptEngine.World.EventManager.OnObjectDeGrab += touch_end;
58 myScriptEngine.World.EventManager.OnScriptChangedEvent += changed; 59 myScriptEngine.World.EventManager.OnScriptChangedEvent += changed;