aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework/Scenes/EventManager.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/EventManager.cs')
-rw-r--r--OpenSim/Region/Framework/Scenes/EventManager.cs60
1 files changed, 49 insertions, 11 deletions
diff --git a/OpenSim/Region/Framework/Scenes/EventManager.cs b/OpenSim/Region/Framework/Scenes/EventManager.cs
index ba79964..d325240 100644
--- a/OpenSim/Region/Framework/Scenes/EventManager.cs
+++ b/OpenSim/Region/Framework/Scenes/EventManager.cs
@@ -786,8 +786,30 @@ namespace OpenSim.Region.Framework.Scenes
786 /// <see cref="Scene.doObjectDuplicateOnRay"/> 786 /// <see cref="Scene.doObjectDuplicateOnRay"/>
787 /// </remarks> 787 /// </remarks>
788 public event Action<SceneObjectGroup> OnObjectAddedToScene; 788 public event Action<SceneObjectGroup> OnObjectAddedToScene;
789
790 /// <summary>
791 /// When a client sends a derez request for an object inworld
792 /// but before the object is deleted
793 /// </summary>
794 public event DeRezRequested OnDeRezRequested;
795 /// <summary>
796 /// Triggered when a client sends a derez request for an object inworld
797 /// </summary>
798 /// <param name="remoteClient">The client question (it can be null)</param>
799 /// <param name="obj">The object in question</param>
800 /// <param name="action">The exact derez action</param>
801 /// <returns>Flag indicating whether the object should be deleted from the scene or not</returns>
802 public delegate bool DeRezRequested(IClientAPI remoteClient, List<SceneObjectGroup> objs, DeRezAction action);
789 803
790 /// <summary> 804 /// <summary>
805 /// Triggered when an object is removed from the scene.
806 /// </summary>
807 /// <remarks>
808 /// Triggered by <see cref="TriggerObjectBeingRemovedFromScene"/>
809 /// in <see cref="Scene.DeleteSceneObject"/>
810 /// </remarks>
811 public event ObjectBeingRemovedFromScene OnObjectBeingRemovedFromScene;
812 /// <summary>
791 /// Delegate for <see cref="OnObjectBeingRemovedFromScene"/> 813 /// Delegate for <see cref="OnObjectBeingRemovedFromScene"/>
792 /// </summary> 814 /// </summary>
793 /// <param name="obj">The object being removed from the scene</param> 815 /// <param name="obj">The object being removed from the scene</param>
@@ -806,15 +828,6 @@ namespace OpenSim.Region.Framework.Scenes
806 /// </remarks> 828 /// </remarks>
807 public event Action<SceneObjectPart> OnObjectRemovedFromPhysicalScene; 829 public event Action<SceneObjectPart> OnObjectRemovedFromPhysicalScene;
808 830
809 /// <summary>
810 /// Triggered when an object is removed from the scene.
811 /// </summary>
812 /// <remarks>
813 /// Triggered by <see cref="TriggerObjectBeingRemovedFromScene"/>
814 /// in <see cref="Scene.DeleteSceneObject"/>
815 /// </remarks>
816 public event ObjectBeingRemovedFromScene OnObjectBeingRemovedFromScene;
817
818 public delegate void NoticeNoLandDataFromStorage(); 831 public delegate void NoticeNoLandDataFromStorage();
819 public event NoticeNoLandDataFromStorage OnNoticeNoLandDataFromStorage; 832 public event NoticeNoLandDataFromStorage OnNoticeNoLandDataFromStorage;
820 833
@@ -1521,8 +1534,33 @@ namespace OpenSim.Region.Framework.Scenes
1521 } 1534 }
1522 } 1535 }
1523 } 1536 }
1524 } 1537 }
1525 1538
1539 public bool TriggerDeRezRequested(IClientAPI client, List<SceneObjectGroup> objs, DeRezAction action)
1540 {
1541 bool canDeRez = true;
1542
1543 DeRezRequested handlerDeRezRequested = OnDeRezRequested;
1544 if (handlerDeRezRequested != null)
1545 {
1546 foreach (DeRezRequested d in handlerDeRezRequested.GetInvocationList())
1547 {
1548 try
1549 {
1550 canDeRez &= d(client, objs, action);
1551 }
1552 catch (Exception e)
1553 {
1554 m_log.ErrorFormat(
1555 "[EVENT MANAGER]: Delegate for TriggerDeRezRequested failed - continuing. {0} {1}",
1556 e.Message, e.StackTrace);
1557 }
1558 }
1559 }
1560
1561 return canDeRez;
1562 }
1563
1526 public void TriggerObjectBeingRemovedFromScene(SceneObjectGroup obj) 1564 public void TriggerObjectBeingRemovedFromScene(SceneObjectGroup obj)
1527 { 1565 {
1528 ObjectBeingRemovedFromScene handlerObjectBeingRemovedFromScene = OnObjectBeingRemovedFromScene; 1566 ObjectBeingRemovedFromScene handlerObjectBeingRemovedFromScene = OnObjectBeingRemovedFromScene;