relocate moap specific cloning code to MoapModule

This commit is contained in:
Justin Clark-Casey (justincc)
2010-07-28 19:23:30 +01:00
parent 5aa56b1274
commit 0f15ccb2cf
3 changed files with 49 additions and 15 deletions

View File

@@ -350,6 +350,12 @@ namespace OpenSim.Region.Framework.Scenes
/// </param>
public event SceneObjectPreSaveDelegate OnSceneObjectPreSave;
public delegate void SceneObjectPreSaveDelegate(SceneObjectGroup persistingSo, SceneObjectGroup originalSo);
/// <summary>
/// Called when a scene object part is cloned within the region.
/// </summary>
public event SceneObjectPartCopyDelegate OnSceneObjectPartCopy;
public delegate void SceneObjectPartCopyDelegate(SceneObjectPart copy, SceneObjectPart original);
public delegate void RegionUp(GridRegion region);
public event RegionUp OnRegionUp;
@@ -2073,6 +2079,27 @@ namespace OpenSim.Region.Framework.Scenes
}
}
}
}
}
public void TriggerOnSceneObjectPartCopy(SceneObjectPart copy, SceneObjectPart original)
{
SceneObjectPartCopyDelegate handler = OnSceneObjectPartCopy;
if (handler != null)
{
foreach (SceneObjectPartCopyDelegate d in handler.GetInvocationList())
{
try
{
d(copy, original);
}
catch (Exception e)
{
m_log.ErrorFormat(
"[EVENT MANAGER]: Delegate for TriggerOnSceneObjectPartCopy failed - continuing. {0} {1}",
e.Message, e.StackTrace);
}
}
}
}
}
}

View File

@@ -1617,20 +1617,7 @@ namespace OpenSim.Region.Framework.Scenes
dupe.DoPhysicsPropertyUpdate(UsePhysics, true);
}
if (Shape.Media != null)
{
List<MediaEntry> dupeMedia = new List<MediaEntry>();
foreach (MediaEntry me in Shape.Media)
{
if (me != null)
dupeMedia.Add(MediaEntry.FromOSD(me.GetOSD()));
else
dupeMedia.Add(null);
}
dupe.Shape.Media = dupeMedia;
}
ParentGroup.Scene.EventManager.TriggerOnSceneObjectPartCopy(dupe, this);
// m_log.DebugFormat("[SCENE OBJECT PART]: Clone of {0} {1} finished", Name, UUID);