From 9f4883d1468b5fe1c60e1831b24e1fed1eb5caeb Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Mon, 8 Feb 2010 19:10:54 +0000
Subject: refactor: Reuse SceneObjectGroup.IsAttachmentCheckFull() in
Scene.AddSceneObject since this wraps a check that is much less clear
---
OpenSim/Region/Framework/Scenes/Scene.cs | 6 ++----
OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | 11 ++++++++++-
2 files changed, 12 insertions(+), 5 deletions(-)
(limited to 'OpenSim/Region/Framework/Scenes')
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
foreach (SceneObjectPart p in sceneObject.Children.Values)
p.LocalId = 0;
- if ((sceneObject.RootPart.Shape.PCode == (byte)PCode.Prim) && (sceneObject.RootPart.Shape.State != 0)) // Attachment
+ if (sceneObject.IsAttachmentCheckFull()) // Attachment
{
sceneObject.RootPart.AddFlag(PrimFlags.TemporaryOnRez);
sceneObject.RootPart.AddFlag(PrimFlags.Phantom);
@@ -2518,9 +2518,7 @@ namespace OpenSim.Region.Framework.Scenes
AttachObject(
sp.ControllingClient, grp.LocalId, (uint)0, grp.GroupRotation, grp.AbsolutePosition, false);
RootPrim.RemFlag(PrimFlags.TemporaryOnRez);
- grp.SendGroupFullUpdate();
-
-
+ grp.SendGroupFullUpdate();
}
else
{
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
}
}
- private bool IsAttachmentCheckFull()
+ ///
+ /// Check both the attachment property and the relevant properties of the underlying root part.
+ ///
+ /// This is necessary in some cases, particularly when a scene object has just crossed into a region and doesn't
+ /// have the IsAttachment property yet checked.
+ ///
+ /// FIXME: However, this should be fixed so that this property
+ /// propertly reflects the underlying status.
+ ///
+ public bool IsAttachmentCheckFull()
{
return (IsAttachment || (m_rootPart.Shape.PCode == 9 && m_rootPart.Shape.State != 0));
}
--
cgit v1.1