diff --git a/OpenSim/Region/Framework/Scenes/EventManager.cs b/OpenSim/Region/Framework/Scenes/EventManager.cs index fd35c62cc2..3d96f40461 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 a70c8fa371..8e59abfe8b 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)