diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
index 80f9114bfd..904e38a521 100644
--- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
@@ -43,6 +43,10 @@ namespace OpenSim.Region.Framework.Scenes
public delegate void ObjectDuplicateDelegate(EntityBase original, EntityBase clone);
+ public delegate void AttachToBackupDelegate(SceneObjectGroup sog);
+
+ public delegate void DetachFromBackupDelegate(SceneObjectGroup sog);
+
public delegate void ObjectCreateDelegate(EntityBase obj);
public delegate void ObjectDeleteDelegate(EntityBase obj);
@@ -61,6 +65,8 @@ namespace OpenSim.Region.Framework.Scenes
private PhysicsCrash handlerPhysicsCrash = null;
public event ObjectDuplicateDelegate OnObjectDuplicate;
+ public event AttachToBackupDelegate OnAttachToBackup;
+ public event DetachFromBackupDelegate OnDetachFromBackup;
public event ObjectCreateDelegate OnObjectCreate;
public event ObjectDeleteDelegate OnObjectRemove;
@@ -388,10 +394,14 @@ namespace OpenSim.Region.Framework.Scenes
m_numPrim += sceneObject.Children.Count;
if (attachToBackup)
+ {
sceneObject.AttachToBackup();
+ }
if (OnObjectCreate != null)
+ {
OnObjectCreate(sceneObject);
+ }
lock (m_dictionary_lock)
{
@@ -458,6 +468,22 @@ namespace OpenSim.Region.Framework.Scenes
}
}
+ public void FireAttachToBackup(SceneObjectGroup obj)
+ {
+ if (OnAttachToBackup != null)
+ {
+ OnAttachToBackup(obj);
+ }
+ }
+
+ public void FireDetachFromBackup(SceneObjectGroup obj)
+ {
+ if (OnDetachFromBackup != null)
+ {
+ OnDetachFromBackup(obj);
+ }
+ }
+
///
/// Process all pending updates
///
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
index 3e92954aed..e18dfd2f05 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
@@ -658,6 +658,8 @@ namespace OpenSim.Region.Framework.Scenes
///
public virtual void AttachToBackup()
{
+ m_scene.SceneGraph.FireAttachToBackup(this);
+
if (InSceneBackup)
{
//m_log.DebugFormat(
@@ -2703,6 +2705,8 @@ namespace OpenSim.Region.Framework.Scenes
///
public virtual void DetachFromBackup()
{
+ m_scene.SceneGraph.FireDetachFromBackup(this);
+
if (m_isBackedUp)
m_scene.EventManager.OnBackup -= ProcessBackup;