aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorUbitUmarov2012-03-09 17:19:10 +0000
committerUbitUmarov2012-03-09 17:19:10 +0000
commite83a2181d06717afe3e5a02d8c918effbe80f226 (patch)
tree18661d29f9264529e46b951b0cbd9a8f8e06afd6
parentMerge branch 'ubitwork' (diff)
downloadopensim-SC_OLD-e83a2181d06717afe3e5a02d8c918effbe80f226.zip
opensim-SC_OLD-e83a2181d06717afe3e5a02d8c918effbe80f226.tar.gz
opensim-SC_OLD-e83a2181d06717afe3e5a02d8c918effbe80f226.tar.bz2
opensim-SC_OLD-e83a2181d06717afe3e5a02d8c918effbe80f226.tar.xz
on linking update linked parts physical flags acording to new parent ones ( untested )
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs9
1 files changed, 8 insertions, 1 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
index 2d71372..5818798 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
@@ -2499,6 +2499,11 @@ namespace OpenSim.Region.Framework.Scenes
2499 if (linkPart.PhysActor != null) 2499 if (linkPart.PhysActor != null)
2500 linkPart.PhysActor.Building = true; 2500 linkPart.PhysActor.Building = true;
2501 2501
2502 // physics flags from group to be applied to linked parts
2503 bool grpusephys = UsesPhysics;
2504 bool grptemporary = IsTemporary;
2505 bool gprphantom = IsPhantom;
2506
2502 Vector3 oldGroupPosition = linkPart.GroupPosition; 2507 Vector3 oldGroupPosition = linkPart.GroupPosition;
2503 Quaternion oldRootRotation = linkPart.RotationOffset; 2508 Quaternion oldRootRotation = linkPart.RotationOffset;
2504 2509
@@ -2542,7 +2547,8 @@ namespace OpenSim.Region.Framework.Scenes
2542 linkPart.SetParent(this); 2547 linkPart.SetParent(this);
2543 linkPart.CreateSelected = true; 2548 linkPart.CreateSelected = true;
2544 2549
2545 // let physics know 2550 // let physics know preserve part volume dtc messy since UpdatePrimFlags doesn't look to parent changes for now
2551 linkPart.UpdatePrimFlags(grpusephys, grptemporary, gprphantom, linkPart.VolumeDetectActive, true);
2546 if (linkPart.PhysActor != null && m_rootPart.PhysActor != null && m_rootPart.PhysActor.IsPhysical) 2552 if (linkPart.PhysActor != null && m_rootPart.PhysActor != null && m_rootPart.PhysActor.IsPhysical)
2547 { 2553 {
2548 linkPart.PhysActor.link(m_rootPart.PhysActor); 2554 linkPart.PhysActor.link(m_rootPart.PhysActor);
@@ -2564,6 +2570,7 @@ namespace OpenSim.Region.Framework.Scenes
2564 { 2570 {
2565 LinkNonRootPart(part, oldGroupPosition, oldRootRotation, linkNum++); 2571 LinkNonRootPart(part, oldGroupPosition, oldRootRotation, linkNum++);
2566 // let physics know 2572 // let physics know
2573 part.UpdatePrimFlags(grpusephys, grptemporary, gprphantom, part.VolumeDetectActive, true);
2567 if (part.PhysActor != null && m_rootPart.PhysActor != null && m_rootPart.PhysActor.IsPhysical) 2574 if (part.PhysActor != null && m_rootPart.PhysActor != null && m_rootPart.PhysActor.IsPhysical)
2568 { 2575 {
2569 part.PhysActor.link(m_rootPart.PhysActor); 2576 part.PhysActor.link(m_rootPart.PhysActor);