private LSL_Rotation GetPartRot(ISceneChildEntity part)
{
Quaternion q;
if (part.LinkNum == 0 || part.LinkNum == 1) // unlinked or root prim
{
if (part.ParentEntity.RootChild.AttachmentPoint != 0)
{
IScenePresence avatar = World.GetScenePresence(part.AttachedAvatar);
if (avatar != null)
{
q = (avatar.AgentControlFlags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_MOUSELOOK) != 0 ? avatar.CameraRotation : avatar.Rotation;
}
else
q = part.ParentEntity.GroupRotation; // Likely never get here but just in case
}
else
q = part.ParentEntity.GroupRotation; // just the group rotation
return new LSL_Rotation(q.X, q.Y, q.Z, q.W);
}
q = part.GetWorldRotation();
return new LSL_Rotation(q.X, q.Y, q.Z, q.W);
}