on sit use root prim camera at and eye if child as neither

avinationmerge
UbitUmarov 2014-07-23 23:09:13 +01:00
parent f6af5f4996
commit 8808549669
1 changed files with 27 additions and 10 deletions

View File

@ -2705,13 +2705,21 @@ namespace OpenSim.Region.Framework.Scenes
{
sitOrientation = part.RotationOffset * sitOrientation;
offset = offset * part.RotationOffset;
cameraAtOffset = cameraAtOffset * part.RotationOffset;
cameraEyeOffset = cameraEyeOffset * part.RotationOffset;
offset += part.OffsetPosition;
if (CameraAtAxis == Vector3.Zero && cameraEyeOffset == Vector3.Zero)
{
CameraAtAxis = part.ParentGroup.RootPart.GetCameraAtOffset();
cameraEyeOffset = part.ParentGroup.RootPart.GetCameraEyeOffset();
}
else
{
cameraAtOffset = cameraAtOffset * part.RotationOffset;
cameraAtOffset += part.OffsetPosition;
cameraEyeOffset = cameraEyeOffset * part.RotationOffset;
cameraEyeOffset += part.OffsetPosition;
}
}
ControllingClient.SendSitResponse(
@ -2845,14 +2853,23 @@ namespace OpenSim.Region.Framework.Scenes
{
Orientation = part.RotationOffset * Orientation;
offset = offset * part.RotationOffset;
cameraAtOffset = cameraAtOffset * part.RotationOffset;
cameraEyeOffset = cameraEyeOffset * part.RotationOffset;
offset += part.OffsetPosition;
if (CameraAtAxis == Vector3.Zero && cameraEyeOffset == Vector3.Zero)
{
CameraAtAxis = part.ParentGroup.RootPart.GetCameraAtOffset();
cameraEyeOffset = part.ParentGroup.RootPart.GetCameraEyeOffset();
}
else
{
cameraAtOffset = cameraAtOffset * part.RotationOffset;
cameraAtOffset += part.OffsetPosition;
cameraEyeOffset = cameraEyeOffset * part.RotationOffset;
cameraEyeOffset += part.OffsetPosition;
}
}
m_pos = offset;
ControllingClient.SendSitResponse(