diff --git a/OpenSim/Region/Framework/Scenes/Prioritizer.cs b/OpenSim/Region/Framework/Scenes/Prioritizer.cs index 0a34a4cfd2..ddae0735fc 100644 --- a/OpenSim/Region/Framework/Scenes/Prioritizer.cs +++ b/OpenSim/Region/Framework/Scenes/Prioritizer.cs @@ -212,9 +212,15 @@ namespace OpenSim.Region.Framework.Scenes } // Use the camera position for local agents and avatar position for remote agents - Vector3 presencePos = (presence.IsChildAgent) ? - presence.AbsolutePosition : - presence.CameraPosition; + // Why would I want that? They could be camming but I still see them at the + // avatar position, so why should I update them as if they were at their + // camera positions? Makes no sense! + // TODO: Fix this mess + //Vector3 presencePos = (presence.IsChildAgent) ? + // presence.AbsolutePosition : + // presence.CameraPosition; + + Vector3 presencePos = presence.AbsolutePosition; // Compute the distance... double distance = Vector3.Distance(presencePos, entityPos); diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index 89df0ce03a..cdabd45d66 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs @@ -1952,7 +1952,9 @@ namespace OpenSim.Region.Framework.Scenes // m_pos += ParentPosition + new Vector3(0.0f, 0.0f, 2.0f * m_sitAvatarHeight); // ParentPosition = Vector3.Zero; - m_pos += part.GetWorldPosition() + new Vector3(0.0f, 0.0f, 2.0f * m_sitAvatarHeight); + m_pos = part.AbsolutePosition + (m_pos * part.GetWorldRotation()) + new Vector3(0.0f, 0.0f, 2.0f * m_sitAvatarHeight); + if (part.SitTargetAvatar == UUID) + m_bodyRot = part.GetWorldRotation() * part.SitTargetOrientation; ParentID = 0; ParentPart = null;