Fix linked physical daughter prim position update.

avinationmerge
KittoFlora 2009-12-06 21:11:59 +01:00
parent cc8246206d
commit 0d1d437bd3
2 changed files with 14 additions and 5 deletions

View File

@ -513,9 +513,16 @@ namespace OpenSim.Region.Framework.Scenes
{ {
// If this is a linkset, we don't want the physics engine mucking up our group position here. // If this is a linkset, we don't want the physics engine mucking up our group position here.
PhysicsActor actor = PhysActor; PhysicsActor actor = PhysActor;
if (actor != null && _parentID == 0) if (actor != null)
{ {
m_groupPosition = actor.Position; if (_parentID == 0)
{
m_groupPosition = actor.Position;
}
else
{
m_groupPosition = ParentGroup.AbsolutePosition; // KF+Casper Update Child prims too!
}
} }
if (IsAttachment) if (IsAttachment)
@ -1743,9 +1750,13 @@ namespace OpenSim.Region.Framework.Scenes
Quaternion parentRot = ParentGroup.RootPart.RotationOffset; Quaternion parentRot = ParentGroup.RootPart.RotationOffset;
Vector3 axPos = OffsetPosition; Vector3 axPos = OffsetPosition;
axPos *= parentRot; axPos *= parentRot;
Vector3 translationOffsetPosition = axPos; Vector3 translationOffsetPosition = axPos;
int tx = (int)GroupPosition.X;
int ty = (int)GroupPosition.Y;
int tz = (int)GroupPosition.Z;
return GroupPosition + translationOffsetPosition; return GroupPosition + translationOffsetPosition;
} }

View File

@ -1642,7 +1642,6 @@ namespace OpenSim.Region.Framework.Scenes
// Reset sit target. // Reset sit target.
if (part.GetAvatarOnSitTarget() == UUID) if (part.GetAvatarOnSitTarget() == UUID)
part.SetAvatarOnSitTarget(UUID.Zero); part.SetAvatarOnSitTarget(UUID.Zero);
m_parentPosition = part.GetWorldPosition(); m_parentPosition = part.GetWorldPosition();
ControllingClient.SendClearFollowCamProperties(part.ParentUUID); ControllingClient.SendClearFollowCamProperties(part.ParentUUID);
} }
@ -1659,7 +1658,6 @@ namespace OpenSim.Region.Framework.Scenes
} }
AbsolutePosition = wso; //KF: Fix stand up. AbsolutePosition = wso; //KF: Fix stand up.
m_parentPosition = Vector3.Zero; m_parentPosition = Vector3.Zero;
m_parentID = 0; m_parentID = 0;
part.IsOccupied = false; part.IsOccupied = false;
SendFullUpdateToAllClients(); SendFullUpdateToAllClients();