mirror of
https://github.com/opensim/opensim.git
synced 2026-08-07 17:55:48 +08:00
Refix sitting on child prims by reinserting relevant code back into SP.HandleAgentSit()
This commit is contained in:
@@ -2868,14 +2868,33 @@ namespace OpenSim.Region.Framework.Scenes
|
|||||||
|
|
||||||
m_pos = sitTargetPos + sitOffset + SIT_TARGET_ADJUSTMENT;
|
m_pos = sitTargetPos + sitOffset + SIT_TARGET_ADJUSTMENT;
|
||||||
|
|
||||||
// m_pos = sitTargetPos + SIT_TARGET_ADJUSTMENT - sitOffset;
|
Vector3 newPos = sitTargetPos + sitOffset + SIT_TARGET_ADJUSTMENT;
|
||||||
Rotation = sitTargetOrient;
|
Quaternion newRot;
|
||||||
|
|
||||||
|
if (part.IsRoot)
|
||||||
|
{
|
||||||
|
newRot = sitTargetOrient;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
newPos = newPos * part.RotationOffset;
|
||||||
|
newRot = part.RotationOffset * sitTargetOrient;
|
||||||
|
}
|
||||||
|
|
||||||
|
newPos += part.OffsetPosition;
|
||||||
|
|
||||||
|
m_pos = newPos;
|
||||||
|
Rotation = newRot;
|
||||||
|
|
||||||
// ParentPosition = part.AbsolutePosition;
|
// ParentPosition = part.AbsolutePosition;
|
||||||
part.ParentGroup.AddAvatar(UUID);
|
part.ParentGroup.AddAvatar(UUID);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_pos -= part.AbsolutePosition;
|
// An viewer expects to specify sit positions as offsets to the root prim, even if a child prim is
|
||||||
|
// being sat upon.
|
||||||
|
m_pos -= part.GroupPosition;
|
||||||
|
|
||||||
// ParentPosition = part.AbsolutePosition;
|
// ParentPosition = part.AbsolutePosition;
|
||||||
part.ParentGroup.AddAvatar(UUID);
|
part.ParentGroup.AddAvatar(UUID);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user