From e41f23dead25356eb3e4bd37a5ef84c73e07336f Mon Sep 17 00:00:00 2001 From: Dan Lake Date: Thu, 19 Jan 2012 03:06:35 -0800 Subject: Trigger event when prims are scheduled for an update. This gives modules early access to changed parameters. --- OpenSim/Region/Framework/Scenes/EventManager.cs | 24 ++++++++++++++++++++++ OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | 4 ++++ 2 files changed, 28 insertions(+) (limited to 'OpenSim/Region') diff --git a/OpenSim/Region/Framework/Scenes/EventManager.cs b/OpenSim/Region/Framework/Scenes/EventManager.cs index fd35c62..3d96f40 100644 --- a/OpenSim/Region/Framework/Scenes/EventManager.cs +++ b/OpenSim/Region/Framework/Scenes/EventManager.cs @@ -398,6 +398,9 @@ namespace OpenSim.Region.Framework.Scenes public event SceneObjectPartCopyDelegate OnSceneObjectPartCopy; public delegate void SceneObjectPartCopyDelegate(SceneObjectPart copy, SceneObjectPart original, bool userExposed); + public delegate void SceneObjectPartUpdated(SceneObjectPart sop); + public event SceneObjectPartUpdated OnSceneObjectPartUpdated; + public delegate void RegionUp(GridRegion region); public event RegionUp OnRegionUp; @@ -2203,6 +2206,27 @@ namespace OpenSim.Region.Framework.Scenes } } + public void TriggerSceneObjectPartUpdated(SceneObjectPart sop) + { + SceneObjectPartUpdated handler = OnSceneObjectPartUpdated; + if (handler != null) + { + foreach (SceneObjectPartUpdated d in handler.GetInvocationList()) + { + try + { + d(sop); + } + catch (Exception e) + { + m_log.ErrorFormat( + "[EVENT MANAGER]: Delegate for TriggerSceneObjectPartUpdated failed - continuing. {0} {1}", + e.Message, e.StackTrace); + } + } + } + } + public void TriggerOnParcelPropertiesUpdateRequest(LandUpdateArgs args, int local_id, IClientAPI remote_client) { diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs index a70c8fa..8e59abf 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs @@ -2733,6 +2733,8 @@ namespace OpenSim.Region.Framework.Scenes if (ParentGroup == null) return; + ParentGroup.Scene.EventManager.TriggerSceneObjectPartUpdated(this); + ParentGroup.QueueForUpdateCheck(); int timeNow = Util.UnixTimeSinceEpoch(); @@ -2765,6 +2767,8 @@ namespace OpenSim.Region.Framework.Scenes if (ParentGroup == null) return; + ParentGroup.Scene.EventManager.TriggerSceneObjectPartUpdated(this); + // This was pulled from SceneViewer. Attachments always receive full updates. // I could not verify if this is a requirement but this maintains existing behavior if (ParentGroup.IsAttachment) -- cgit v1.1