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
|
try
|
||||||
{
|
{
|
||||||
// I thought that the DeleteGroup() function would handle all of this, but it doesn't. I'm not sure WHAT it handles.
|
// 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.PhysicsScene.RemovePrim(((SceneObjectGroup)scene.Entities[uuid]).RootPart.PhysActor);
|
||||||
scene.SendKiPrimitive(scene.Entities[uuid].LocalId);
|
scene.SendKiPrimitive(scene.Entities[uuid].LocalId);
|
||||||
scene.m_innerScene.DeleteSceneObject(uuid, false);
|
scene.m_innerScene.DeleteSceneObject(uuid, false);
|
||||||
|
|
|
@ -517,6 +517,10 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
group.SetFromAssetID(newAssetID);
|
group.SetFromAssetID(newAssetID);
|
||||||
}
|
}
|
||||||
group.AttachToAgent(remoteClient.AgentId, AttachmentPt, attachPos);
|
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
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -2052,6 +2052,10 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
{
|
{
|
||||||
if (RootPrim.Shape.State != 0)
|
if (RootPrim.Shape.State != 0)
|
||||||
{
|
{
|
||||||
|
// Never persist
|
||||||
|
|
||||||
|
grp.DetachFromBackup();
|
||||||
|
|
||||||
// Attachment
|
// Attachment
|
||||||
ScenePresence sp = GetScenePresence(grp.OwnerID);
|
ScenePresence sp = GetScenePresence(grp.OwnerID);
|
||||||
if (sp != null)
|
if (sp != null)
|
||||||
|
@ -2063,6 +2067,10 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
grp.SetFromAssetID(grp.RootPart.LastOwnerID);
|
grp.SetFromAssetID(grp.RootPart.LastOwnerID);
|
||||||
AttachObject(sp.ControllingClient, grp.LocalId, (uint)0, grp.GroupRotation, grp.AbsolutePosition);
|
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
|
// don't attach attachments to child agents
|
||||||
if (avatar.IsChildAgent) return;
|
if (avatar.IsChildAgent) return;
|
||||||
|
|
||||||
DetachFromBackup(this);
|
DetachFromBackup();
|
||||||
m_rootPart.AttachedAvatar = agentID;
|
m_rootPart.AttachedAvatar = agentID;
|
||||||
|
|
||||||
|
|
||||||
|
@ -955,7 +955,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
// code needs a redesign.
|
// code needs a redesign.
|
||||||
m_isDeleted = true;
|
m_isDeleted = true;
|
||||||
|
|
||||||
DetachFromBackup(this);
|
DetachFromBackup();
|
||||||
|
|
||||||
lock (m_parts)
|
lock (m_parts)
|
||||||
{
|
{
|
||||||
|
@ -1925,9 +1925,9 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
/// Stop this object from being persisted over server restarts.
|
/// Stop this object from being persisted over server restarts.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="objectGroup"></param>
|
/// <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)
|
private void LinkNonRootPart(SceneObjectPart part, Vector3 oldGroupPosition, Quaternion oldGroupRotation)
|
||||||
|
|
Loading…
Reference in New Issue