aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
diff options
context:
space:
mode:
authorUbitUmarov2014-10-26 01:27:43 +0100
committerUbitUmarov2014-10-26 01:27:43 +0100
commit639f128d2cace3a8efd10ffe9b9eba4d85ee7b1e (patch)
treee0d2036db16114a1cc2f6a0709534c31f87f6c82 /OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
parent some code reorder/minor changes (diff)
downloadopensim-SC_OLD-639f128d2cace3a8efd10ffe9b9eba4d85ee7b1e.zip
opensim-SC_OLD-639f128d2cace3a8efd10ffe9b9eba4d85ee7b1e.tar.gz
opensim-SC_OLD-639f128d2cace3a8efd10ffe9b9eba4d85ee7b1e.tar.bz2
opensim-SC_OLD-639f128d2cace3a8efd10ffe9b9eba4d85ee7b1e.tar.xz
some cleanup, localID coerence fix..
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs')
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs34
1 files changed, 7 insertions, 27 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
index a1cdfa5..dea8f3e 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
@@ -2274,28 +2274,8 @@ namespace OpenSim.Region.Framework.Scenes
2274 2274
2275 // new group as no sitting avatars 2275 // new group as no sitting avatars
2276 dupe.m_linkedAvatars = new List<ScenePresence>(); 2276 dupe.m_linkedAvatars = new List<ScenePresence>();
2277
2278 // Warning, The following code related to previousAttachmentStatus is needed so that clones of
2279 // attachments do not bordercross while they're being duplicated. This is hacktastic!
2280 // Normally, setting AbsolutePosition will bordercross a prim if it's outside the region!
2281 // unless IsAttachment is true!, so to prevent border crossing, we save it's attachment state
2282 // (which should be false anyway) set it as an Attachment and then set it's Absolute Position,
2283 // then restore it's attachment state
2284
2285 // This is only necessary when userExposed is false!
2286
2287 bool previousAttachmentStatus = dupe.IsAttachment;
2288
2289 if (!userExposed)
2290 dupe.IsAttachment = true;
2291
2292 dupe.m_sittingAvatars = new List<UUID>(); 2277 dupe.m_sittingAvatars = new List<UUID>();
2293 2278
2294 if (!userExposed)
2295 {
2296 dupe.IsAttachment = previousAttachmentStatus;
2297 }
2298
2299 dupe.CopyRootPart(m_rootPart, OwnerID, GroupID, userExposed); 2279 dupe.CopyRootPart(m_rootPart, OwnerID, GroupID, userExposed);
2300 dupe.m_rootPart.LinkNum = m_rootPart.LinkNum; 2280 dupe.m_rootPart.LinkNum = m_rootPart.LinkNum;
2301 2281
@@ -2318,7 +2298,7 @@ namespace OpenSim.Region.Framework.Scenes
2318 { 2298 {
2319 newPart = dupe.CopyPart(part, OwnerID, GroupID, userExposed); 2299 newPart = dupe.CopyPart(part, OwnerID, GroupID, userExposed);
2320 newPart.LinkNum = part.LinkNum; 2300 newPart.LinkNum = part.LinkNum;
2321 if (userExposed) 2301// if (userExposed)
2322 newPart.ParentID = dupe.m_rootPart.LocalId; 2302 newPart.ParentID = dupe.m_rootPart.LocalId;
2323 } 2303 }
2324 else 2304 else
@@ -2379,10 +2359,9 @@ namespace OpenSim.Region.Framework.Scenes
2379 /// <param name="cGroupID"></param> 2359 /// <param name="cGroupID"></param>
2380 public void CopyRootPart(SceneObjectPart part, UUID cAgentID, UUID cGroupID, bool userExposed) 2360 public void CopyRootPart(SceneObjectPart part, UUID cAgentID, UUID cGroupID, bool userExposed)
2381 { 2361 {
2382 // SetRootPart(part.Copy(m_scene.AllocateLocalId(), OwnerID, GroupID, 0, userExposed)); 2362 SceneObjectPart newpart = part.Copy(m_scene.AllocateLocalId(), OwnerID, GroupID, 0, userExposed);
2383 // give newpart a new local ID lettng old part keep same 2363// SceneObjectPart newpart = part.Copy(part.LocalId, OwnerID, GroupID, 0, userExposed);
2384 SceneObjectPart newpart = part.Copy(part.LocalId, OwnerID, GroupID, 0, userExposed); 2364// newpart.LocalId = m_scene.AllocateLocalId();
2385 newpart.LocalId = m_scene.AllocateLocalId();
2386 2365
2387 SetRootPart(newpart); 2366 SetRootPart(newpart);
2388 if (userExposed) 2367 if (userExposed)
@@ -2601,8 +2580,9 @@ namespace OpenSim.Region.Framework.Scenes
2601 /// <param name="cGroupID"></param> 2580 /// <param name="cGroupID"></param>
2602 public SceneObjectPart CopyPart(SceneObjectPart part, UUID cAgentID, UUID cGroupID, bool userExposed) 2581 public SceneObjectPart CopyPart(SceneObjectPart part, UUID cAgentID, UUID cGroupID, bool userExposed)
2603 { 2582 {
2604 SceneObjectPart newPart = part.Copy(part.LocalId, OwnerID, GroupID, m_parts.Count, userExposed); 2583 SceneObjectPart newPart = part.Copy(m_scene.AllocateLocalId(), OwnerID, GroupID, m_parts.Count, userExposed);
2605 newPart.LocalId = m_scene.AllocateLocalId(); 2584// SceneObjectPart newPart = part.Copy(part.LocalId, OwnerID, GroupID, m_parts.Count, userExposed);
2585// newPart.LocalId = m_scene.AllocateLocalId();
2606 2586
2607 AddPart(newPart); 2587 AddPart(newPart);
2608 2588