Fix issue where sitting on non-root linked prims would send camera to wrong position in third-person and mouselook

We now specify sits as offsets from the root prim, as the viewer expects.
link-sitting
Justin Clark-Casey (justincc) 2013-11-23 00:53:09 +00:00
parent c896b4179e
commit ff4e7de776
2 changed files with 14 additions and 3 deletions

View File

@ -5218,7 +5218,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP
update.NameValue = Utils.StringToBytes("FirstName STRING RW SV " + data.Firstname + "\nLastName STRING RW SV " + update.NameValue = Utils.StringToBytes("FirstName STRING RW SV " + data.Firstname + "\nLastName STRING RW SV " +
data.Lastname + "\nTitle STRING RW SV " + data.Grouptitle); data.Lastname + "\nTitle STRING RW SV " + data.Grouptitle);
update.ObjectData = objectData; update.ObjectData = objectData;
update.ParentID = data.ParentID;
SceneObjectPart parentPart = data.ParentPart;
if (parentPart != null)
update.ParentID = parentPart.ParentGroup.LocalId;
else
update.ParentID = 0;
update.PathCurve = 16; update.PathCurve = 16;
update.PathScaleX = 100; update.PathScaleX = 100;
update.PathScaleY = 100; update.PathScaleY = 100;

View File

@ -2312,8 +2312,10 @@ namespace OpenSim.Region.Framework.Scenes
cameraEyeOffset = part.GetCameraEyeOffset(); cameraEyeOffset = part.GetCameraEyeOffset();
forceMouselook = part.GetForceMouselook(); forceMouselook = part.GetForceMouselook();
// An viewer expects to specify sit positions as offsets to the root prim, even if a child prim is
// being sat upon.
ControllingClient.SendSitResponse( ControllingClient.SendSitResponse(
part.UUID, offset, sitOrientation, false, cameraAtOffset, cameraEyeOffset, forceMouselook); part.ParentGroup.UUID, offset, sitOrientation, false, cameraAtOffset, cameraEyeOffset, forceMouselook);
m_requestedSitTargetUUID = part.UUID; m_requestedSitTargetUUID = part.UUID;
@ -2592,7 +2594,10 @@ namespace OpenSim.Region.Framework.Scenes
} }
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;
// m_log.DebugFormat( // m_log.DebugFormat(