Prevent attachments to be persisted in the destination region when the
avatar is not present there.0.6.0-stable
parent
5f8e241e81
commit
36097a8198
|
@ -258,7 +258,7 @@ namespace OpenSim.Region.Environment.Modules.ContentManagement
|
|||
try
|
||||
{
|
||||
// I thought that the DeleteGroup() function would handle all of this, but it doesn't. I'm not sure WHAT it handles.
|
||||
((SceneObjectGroup)scene.Entities[uuid]).DetachFromBackup((SceneObjectGroup)scene.Entities[uuid]);
|
||||
((SceneObjectGroup)scene.Entities[uuid]).DetachFromBackup();
|
||||
scene.PhysicsScene.RemovePrim(((SceneObjectGroup)scene.Entities[uuid]).RootPart.PhysActor);
|
||||
scene.SendKiPrimitive(scene.Entities[uuid].LocalId);
|
||||
scene.m_innerScene.DeleteSceneObject(uuid, false);
|
||||
|
|
|
@ -517,6 +517,10 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
group.SetFromAssetID(newAssetID);
|
||||
}
|
||||
group.AttachToAgent(remoteClient.AgentId, AttachmentPt, attachPos);
|
||||
// In case it is later dropped again, don't let
|
||||
// it get cleaned up
|
||||
//
|
||||
group.RootPart.RemFlag(PrimFlags.TemporaryOnRez);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -2052,6 +2052,10 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
{
|
||||
if (RootPrim.Shape.State != 0)
|
||||
{
|
||||
// Never persist
|
||||
|
||||
grp.DetachFromBackup();
|
||||
|
||||
// Attachment
|
||||
ScenePresence sp = GetScenePresence(grp.OwnerID);
|
||||
if (sp != null)
|
||||
|
@ -2063,6 +2067,10 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
grp.SetFromAssetID(grp.RootPart.LastOwnerID);
|
||||
AttachObject(sp.ControllingClient, grp.LocalId, (uint)0, grp.GroupRotation, grp.AbsolutePosition);
|
||||
}
|
||||
else
|
||||
{
|
||||
RootPrim.AddFlag(PrimFlags.TemporaryOnRez);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -713,7 +713,7 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
// don't attach attachments to child agents
|
||||
if (avatar.IsChildAgent) return;
|
||||
|
||||
DetachFromBackup(this);
|
||||
DetachFromBackup();
|
||||
m_rootPart.AttachedAvatar = agentID;
|
||||
|
||||
|
||||
|
@ -955,7 +955,7 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
// code needs a redesign.
|
||||
m_isDeleted = true;
|
||||
|
||||
DetachFromBackup(this);
|
||||
DetachFromBackup();
|
||||
|
||||
lock (m_parts)
|
||||
{
|
||||
|
@ -1925,9 +1925,9 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
/// Stop this object from being persisted over server restarts.
|
||||
/// </summary>
|
||||
/// <param name="objectGroup"></param>
|
||||
public void DetachFromBackup(SceneObjectGroup objectGroup)
|
||||
public void DetachFromBackup()
|
||||
{
|
||||
m_scene.EventManager.OnBackup -= objectGroup.ProcessBackup;
|
||||
m_scene.EventManager.OnBackup -= ProcessBackup;
|
||||
}
|
||||
|
||||
private void LinkNonRootPart(SceneObjectPart part, Vector3 oldGroupPosition, Quaternion oldGroupRotation)
|
||||
|
|
Loading…
Reference in New Issue