aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorKittoFlora2009-12-06 21:11:59 +0100
committerKittoFlora2009-12-06 21:11:59 +0100
commit0d1d437bd3bf608448d71ea7de8e4f7cfb0371f0 (patch)
tree5b5a07f1a9a7e5f74c5df31352cc36d1d89592ea
parentSecnond revision of Sit and Stand for unscripted prims; Comment out (diff)
downloadopensim-SC_OLD-0d1d437bd3bf608448d71ea7de8e4f7cfb0371f0.zip
opensim-SC_OLD-0d1d437bd3bf608448d71ea7de8e4f7cfb0371f0.tar.gz
opensim-SC_OLD-0d1d437bd3bf608448d71ea7de8e4f7cfb0371f0.tar.bz2
opensim-SC_OLD-0d1d437bd3bf608448d71ea7de8e4f7cfb0371f0.tar.xz
Fix linked physical daughter prim position update.
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectPart.cs17
-rw-r--r--OpenSim/Region/Framework/Scenes/ScenePresence.cs2
2 files changed, 14 insertions, 5 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
index 9f2c3db..a6382ee 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
@@ -513,9 +513,16 @@ namespace OpenSim.Region.Framework.Scenes
513 { 513 {
514 // If this is a linkset, we don't want the physics engine mucking up our group position here. 514 // If this is a linkset, we don't want the physics engine mucking up our group position here.
515 PhysicsActor actor = PhysActor; 515 PhysicsActor actor = PhysActor;
516 if (actor != null && _parentID == 0) 516 if (actor != null)
517 { 517 {
518 m_groupPosition = actor.Position; 518 if (_parentID == 0)
519 {
520 m_groupPosition = actor.Position;
521 }
522 else
523 {
524 m_groupPosition = ParentGroup.AbsolutePosition; // KF+Casper Update Child prims too!
525 }
519 } 526 }
520 527
521 if (IsAttachment) 528 if (IsAttachment)
@@ -1743,9 +1750,13 @@ namespace OpenSim.Region.Framework.Scenes
1743 Quaternion parentRot = ParentGroup.RootPart.RotationOffset; 1750 Quaternion parentRot = ParentGroup.RootPart.RotationOffset;
1744 1751
1745 Vector3 axPos = OffsetPosition; 1752 Vector3 axPos = OffsetPosition;
1746
1747 axPos *= parentRot; 1753 axPos *= parentRot;
1748 Vector3 translationOffsetPosition = axPos; 1754 Vector3 translationOffsetPosition = axPos;
1755
1756 int tx = (int)GroupPosition.X;
1757 int ty = (int)GroupPosition.Y;
1758 int tz = (int)GroupPosition.Z;
1759
1749 return GroupPosition + translationOffsetPosition; 1760 return GroupPosition + translationOffsetPosition;
1750 } 1761 }
1751 1762
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index 817b9df..5d0218f 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -1642,7 +1642,6 @@ namespace OpenSim.Region.Framework.Scenes
1642 // Reset sit target. 1642 // Reset sit target.
1643 if (part.GetAvatarOnSitTarget() == UUID) 1643 if (part.GetAvatarOnSitTarget() == UUID)
1644 part.SetAvatarOnSitTarget(UUID.Zero); 1644 part.SetAvatarOnSitTarget(UUID.Zero);
1645
1646 m_parentPosition = part.GetWorldPosition(); 1645 m_parentPosition = part.GetWorldPosition();
1647 ControllingClient.SendClearFollowCamProperties(part.ParentUUID); 1646 ControllingClient.SendClearFollowCamProperties(part.ParentUUID);
1648 } 1647 }
@@ -1659,7 +1658,6 @@ namespace OpenSim.Region.Framework.Scenes
1659 } 1658 }
1660 AbsolutePosition = wso; //KF: Fix stand up. 1659 AbsolutePosition = wso; //KF: Fix stand up.
1661 m_parentPosition = Vector3.Zero; 1660 m_parentPosition = Vector3.Zero;
1662
1663 m_parentID = 0; 1661 m_parentID = 0;
1664 part.IsOccupied = false; 1662 part.IsOccupied = false;
1665 SendFullUpdateToAllClients(); 1663 SendFullUpdateToAllClients();