aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.cs6
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs11
2 files changed, 12 insertions, 5 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index 039d074..ddebd0b 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -2483,7 +2483,7 @@ namespace OpenSim.Region.Framework.Scenes
2483 foreach (SceneObjectPart p in sceneObject.Children.Values) 2483 foreach (SceneObjectPart p in sceneObject.Children.Values)
2484 p.LocalId = 0; 2484 p.LocalId = 0;
2485 2485
2486 if ((sceneObject.RootPart.Shape.PCode == (byte)PCode.Prim) && (sceneObject.RootPart.Shape.State != 0)) // Attachment 2486 if (sceneObject.IsAttachmentCheckFull()) // Attachment
2487 { 2487 {
2488 sceneObject.RootPart.AddFlag(PrimFlags.TemporaryOnRez); 2488 sceneObject.RootPart.AddFlag(PrimFlags.TemporaryOnRez);
2489 sceneObject.RootPart.AddFlag(PrimFlags.Phantom); 2489 sceneObject.RootPart.AddFlag(PrimFlags.Phantom);
@@ -2518,9 +2518,7 @@ namespace OpenSim.Region.Framework.Scenes
2518 AttachObject( 2518 AttachObject(
2519 sp.ControllingClient, grp.LocalId, (uint)0, grp.GroupRotation, grp.AbsolutePosition, false); 2519 sp.ControllingClient, grp.LocalId, (uint)0, grp.GroupRotation, grp.AbsolutePosition, false);
2520 RootPrim.RemFlag(PrimFlags.TemporaryOnRez); 2520 RootPrim.RemFlag(PrimFlags.TemporaryOnRez);
2521 grp.SendGroupFullUpdate(); 2521 grp.SendGroupFullUpdate();
2522
2523
2524 } 2522 }
2525 else 2523 else
2526 { 2524 {
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
index 8c56870..af46659 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
@@ -268,7 +268,16 @@ namespace OpenSim.Region.Framework.Scenes
268 } 268 }
269 } 269 }
270 270
271 private bool IsAttachmentCheckFull() 271 /// <summary>
272 /// Check both the attachment property and the relevant properties of the underlying root part.
273 /// </summary>
274 /// This is necessary in some cases, particularly when a scene object has just crossed into a region and doesn't
275 /// have the IsAttachment property yet checked.
276 ///
277 /// FIXME: However, this should be fixed so that this property
278 /// propertly reflects the underlying status.
279 /// <returns></returns>
280 public bool IsAttachmentCheckFull()
272 { 281 {
273 return (IsAttachment || (m_rootPart.Shape.PCode == 9 && m_rootPart.Shape.State != 0)); 282 return (IsAttachment || (m_rootPart.Shape.PCode == 9 && m_rootPart.Shape.State != 0));
274 } 283 }