diff --git a/OpenSim/Region/Environment/Modules/World/Archiver/ArchiveWriteRequestPreparation.cs b/OpenSim/Region/Environment/Modules/World/Archiver/ArchiveWriteRequestPreparation.cs index 8c623b1cee..b520642fb4 100644 --- a/OpenSim/Region/Environment/Modules/World/Archiver/ArchiveWriteRequestPreparation.cs +++ b/OpenSim/Region/Environment/Modules/World/Archiver/ArchiveWriteRequestPreparation.cs @@ -276,7 +276,7 @@ namespace OpenSim.Region.Environment.Modules.World.Archiver { SceneObjectGroup sceneObject = (SceneObjectGroup)entity; - if (sceneObject.RootPart != null && !sceneObject.RootPart.IsAttachment) + if (!sceneObject.IsDeleted && !sceneObject.IsAttachment) sceneObjects.Add((SceneObjectGroup)entity); } } diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs index f4b6685e24..a94e592491 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs @@ -93,6 +93,26 @@ namespace OpenSim.Region.Environment.Scenes /// since the group's last persistent backup /// public bool HasGroupChanged = false; + + /// + /// Is this scene object acting as an attachment? + /// + /// We return false if the group has already been deleted. + /// + /// TODO: At the moment set must be done on the part itself. There may be a case for doing it here since I + /// presume either all or no parts in a linkset can be part of an attachment (in which + /// case the value would get proprogated down into all the descendent parts). + /// + public bool IsAttachment + { + get + { + if (!IsDeleted) + return m_rootPart.IsAttachment; + + return false; + } + } public float scriptScore = 0f;