diff options
author | UbitUmarov | 2012-03-09 17:19:10 +0000 |
---|---|---|
committer | UbitUmarov | 2012-03-09 17:19:10 +0000 |
commit | e83a2181d06717afe3e5a02d8c918effbe80f226 (patch) | |
tree | 18661d29f9264529e46b951b0cbd9a8f8e06afd6 /OpenSim/Region | |
parent | Merge branch 'ubitwork' (diff) | |
download | opensim-SC-e83a2181d06717afe3e5a02d8c918effbe80f226.zip opensim-SC-e83a2181d06717afe3e5a02d8c918effbe80f226.tar.gz opensim-SC-e83a2181d06717afe3e5a02d8c918effbe80f226.tar.bz2 opensim-SC-e83a2181d06717afe3e5a02d8c918effbe80f226.tar.xz |
on linking update linked parts physical flags acording to new parent ones ( untested )
Diffstat (limited to 'OpenSim/Region')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | 9 |
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); |