aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Environment
diff options
context:
space:
mode:
authorJustin Clarke Casey2008-11-01 21:50:07 +0000
committerJustin Clarke Casey2008-11-01 21:50:07 +0000
commit7c04d278753c717a91e5eeb3086d62c771b03f05 (patch)
treed12e2a986af35e1c9b2cd45187e1ead4abb9ea26 /OpenSim/Region/Environment
parent* Fix http://opensimulator.org/mantis/view.php?id=2517 (diff)
downloadopensim-SC_OLD-7c04d278753c717a91e5eeb3086d62c771b03f05.zip
opensim-SC_OLD-7c04d278753c717a91e5eeb3086d62c771b03f05.tar.gz
opensim-SC_OLD-7c04d278753c717a91e5eeb3086d62c771b03f05.tar.bz2
opensim-SC_OLD-7c04d278753c717a91e5eeb3086d62c771b03f05.tar.xz
* Introduce an IsAttachment property on the group level (which just returns false if the group is already deleted)
* This is to avoid repetitive null checks - I'm beginning to think that blasting away the root part on object deletion is actually a bad move. Perhaps we should leave it around and let the client ignore any superfluous packets (which it may well do anyway), since we're constantly exposing a race condition
Diffstat (limited to 'OpenSim/Region/Environment')
-rw-r--r--OpenSim/Region/Environment/Modules/World/Archiver/ArchiveWriteRequestPreparation.cs2
-rw-r--r--OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs20
2 files changed, 21 insertions, 1 deletions
diff --git a/OpenSim/Region/Environment/Modules/World/Archiver/ArchiveWriteRequestPreparation.cs b/OpenSim/Region/Environment/Modules/World/Archiver/ArchiveWriteRequestPreparation.cs
index 8c623b1..b520642 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
276 { 276 {
277 SceneObjectGroup sceneObject = (SceneObjectGroup)entity; 277 SceneObjectGroup sceneObject = (SceneObjectGroup)entity;
278 278
279 if (sceneObject.RootPart != null && !sceneObject.RootPart.IsAttachment) 279 if (!sceneObject.IsDeleted && !sceneObject.IsAttachment)
280 sceneObjects.Add((SceneObjectGroup)entity); 280 sceneObjects.Add((SceneObjectGroup)entity);
281 } 281 }
282 } 282 }
diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs
index f4b6685..a94e592 100644
--- a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs
+++ b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs
@@ -93,6 +93,26 @@ namespace OpenSim.Region.Environment.Scenes
93 /// since the group's last persistent backup 93 /// since the group's last persistent backup
94 /// </summary> 94 /// </summary>
95 public bool HasGroupChanged = false; 95 public bool HasGroupChanged = false;
96
97 /// <value>
98 /// Is this scene object acting as an attachment?
99 ///
100 /// We return false if the group has already been deleted.
101 ///
102 /// TODO: At the moment set must be done on the part itself. There may be a case for doing it here since I
103 /// presume either all or no parts in a linkset can be part of an attachment (in which
104 /// case the value would get proprogated down into all the descendent parts).
105 /// </value>
106 public bool IsAttachment
107 {
108 get
109 {
110 if (!IsDeleted)
111 return m_rootPart.IsAttachment;
112
113 return false;
114 }
115 }
96 116
97 public float scriptScore = 0f; 117 public float scriptScore = 0f;
98 118