diff options
author | Melanie Thielker | 2008-11-14 03:32:20 +0000 |
---|---|---|
committer | Melanie Thielker | 2008-11-14 03:32:20 +0000 |
commit | c79a11cbd1eeb8359ad08178830c94cc0d52f877 (patch) | |
tree | 7ed6329eb68c2077c9b74f0b2cb1b499ed4feaa9 /OpenSim/Region | |
parent | make inventory item listing more robust. It turns out that a bad item (diff) | |
download | opensim-SC_OLD-c79a11cbd1eeb8359ad08178830c94cc0d52f877.zip opensim-SC_OLD-c79a11cbd1eeb8359ad08178830c94cc0d52f877.tar.gz opensim-SC_OLD-c79a11cbd1eeb8359ad08178830c94cc0d52f877.tar.bz2 opensim-SC_OLD-c79a11cbd1eeb8359ad08178830c94cc0d52f877.tar.xz |
Lots of experimentation yielded a fair approximation of a hip offset from the
physical center of an avatar, for display purposes. This should keep the
avatar feet above ground visually in most cases. Tweaked for both height
extremes and various leg lengths. Improvements welcome
Diffstat (limited to 'OpenSim/Region')
-rw-r--r-- | OpenSim/Region/Environment/Scenes/ScenePresence.cs | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/OpenSim/Region/Environment/Scenes/ScenePresence.cs b/OpenSim/Region/Environment/Scenes/ScenePresence.cs index af17fac..c91027c 100644 --- a/OpenSim/Region/Environment/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Environment/Scenes/ScenePresence.cs | |||
@@ -759,7 +759,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
759 | } | 759 | } |
760 | 760 | ||
761 | float posZLimit = (float)m_scene.GetLandHeight((int)pos.X, (int)pos.Y); | 761 | float posZLimit = (float)m_scene.GetLandHeight((int)pos.X, (int)pos.Y); |
762 | float newPosZ = posZLimit + localAVHeight; | 762 | float newPosZ = posZLimit + localAVHeight / 2; |
763 | if (posZLimit >= (pos.Z - (localAVHeight / 2)) && !(Single.IsInfinity(newPosZ) || Single.IsNaN(newPosZ))) | 763 | if (posZLimit >= (pos.Z - (localAVHeight / 2)) && !(Single.IsInfinity(newPosZ) || Single.IsNaN(newPosZ))) |
764 | { | 764 | { |
765 | pos.Z = newPosZ; | 765 | pos.Z = newPosZ; |
@@ -1752,6 +1752,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
1752 | Vector3 pos = m_pos; | 1752 | Vector3 pos = m_pos; |
1753 | Vector3 vel = Velocity; | 1753 | Vector3 vel = Velocity; |
1754 | Quaternion rot = m_bodyRot; | 1754 | Quaternion rot = m_bodyRot; |
1755 | pos.Z -= m_appearance.HipOffset; | ||
1755 | remoteClient.SendAvatarTerseUpdate(m_regionHandle, (ushort)(m_scene.TimeDilation * (float)ushort.MaxValue), LocalId, new Vector3(pos.X, pos.Y, pos.Z), | 1756 | remoteClient.SendAvatarTerseUpdate(m_regionHandle, (ushort)(m_scene.TimeDilation * (float)ushort.MaxValue), LocalId, new Vector3(pos.X, pos.Y, pos.Z), |
1756 | new Vector3(vel.X, vel.Y, vel.Z), rot); | 1757 | new Vector3(vel.X, vel.Y, vel.Z), rot); |
1757 | 1758 | ||
@@ -1835,6 +1836,9 @@ namespace OpenSim.Region.Environment.Scenes | |||
1835 | // Note: because Quaternion is a struct, it can't be null | 1836 | // Note: because Quaternion is a struct, it can't be null |
1836 | Quaternion rot = m_bodyRot; | 1837 | Quaternion rot = m_bodyRot; |
1837 | 1838 | ||
1839 | Vector3 pos = m_pos; | ||
1840 | pos.Z -= m_appearance.HipOffset; | ||
1841 | |||
1838 | remoteAvatar.m_controllingClient.SendAvatarData(m_regionInfo.RegionHandle, m_firstname, m_lastname, m_grouptitle, m_uuid, | 1842 | remoteAvatar.m_controllingClient.SendAvatarData(m_regionInfo.RegionHandle, m_firstname, m_lastname, m_grouptitle, m_uuid, |
1839 | LocalId, m_pos, m_appearance.Texture.ToBytes(), | 1843 | LocalId, m_pos, m_appearance.Texture.ToBytes(), |
1840 | m_parentID, rot); | 1844 | m_parentID, rot); |
@@ -1900,6 +1904,9 @@ namespace OpenSim.Region.Environment.Scenes | |||
1900 | // Note: because Quaternion is a struct, it can't be null | 1904 | // Note: because Quaternion is a struct, it can't be null |
1901 | Quaternion rot = m_bodyRot; | 1905 | Quaternion rot = m_bodyRot; |
1902 | 1906 | ||
1907 | Vector3 pos = m_pos; | ||
1908 | pos.Z -= m_appearance.HipOffset; | ||
1909 | |||
1903 | m_controllingClient.SendAvatarData(m_regionInfo.RegionHandle, m_firstname, m_lastname, m_grouptitle, m_uuid, LocalId, | 1910 | m_controllingClient.SendAvatarData(m_regionInfo.RegionHandle, m_firstname, m_lastname, m_grouptitle, m_uuid, LocalId, |
1904 | m_pos, m_appearance.Texture.ToBytes(), m_parentID, rot); | 1911 | m_pos, m_appearance.Texture.ToBytes(), m_parentID, rot); |
1905 | 1912 | ||