diff options
Diffstat (limited to 'OpenSim/Region')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | 17 | ||||
-rw-r--r-- | OpenSim/Region/Framework/Scenes/ScenePresence.cs | 2 |
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(); |