aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorJustin Clark-Casey (justincc)2011-11-11 23:10:43 +0000
committerJustin Clark-Casey (justincc)2011-11-11 23:10:43 +0000
commit2a2cdaa211086b48c1a19f371b544e1550500e33 (patch)
tree07248541b594d0a48167213cdf55d5a1abaed3f7
parentRestore sending of OutPacket() for object kills removed in commit c7dd7b1. (diff)
downloadopensim-SC-2a2cdaa211086b48c1a19f371b544e1550500e33.zip
opensim-SC-2a2cdaa211086b48c1a19f371b544e1550500e33.tar.gz
opensim-SC-2a2cdaa211086b48c1a19f371b544e1550500e33.tar.bz2
opensim-SC-2a2cdaa211086b48c1a19f371b544e1550500e33.tar.xz
As with prim sitting avatars, make an avatar phantom when it sits on the ground and solid again when it stands.
This is to avoid http://opensimulator.org/mantis/view.php?id=5783 when a collision with a ground sitting avatar causes that avatar to automatically stand and sometimes not be able to move A better solution may be to keep gound sitting avatars solid but remove their collision status. However, this requires some physics code work.
-rw-r--r--OpenSim/Region/Framework/Scenes/ScenePresence.cs11
1 files changed, 5 insertions, 6 deletions
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index 0c20045..f5a7f02 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -1419,6 +1419,7 @@ namespace OpenSim.Region.Framework.Scenes
1419 // to use. Or we could add a m_isSitting variable. 1419 // to use. Or we could add a m_isSitting variable.
1420 //Animator.TrySetMovementAnimation("SIT_GROUND_CONSTRAINED"); 1420 //Animator.TrySetMovementAnimation("SIT_GROUND_CONSTRAINED");
1421 SitGround = true; 1421 SitGround = true;
1422 RemoveFromPhysicalScene();
1422 } 1423 }
1423 1424
1424 // In the future, these values might need to go global. 1425 // In the future, these values might need to go global.
@@ -1835,11 +1836,14 @@ namespace OpenSim.Region.Framework.Scenes
1835 /// </summary> 1836 /// </summary>
1836 public void StandUp() 1837 public void StandUp()
1837 { 1838 {
1839// m_log.DebugFormat("[SCENE PRESENCE]: StandUp() for {0}", Name);
1840
1838 SitGround = false; 1841 SitGround = false;
1842 if (PhysicsActor == null)
1843 AddToPhysicalScene(false);
1839 1844
1840 if (ParentID != 0) 1845 if (ParentID != 0)
1841 { 1846 {
1842// m_log.Debug("StandupCode Executed");
1843 SceneObjectPart part = m_scene.GetSceneObjectPart(ParentID); 1847 SceneObjectPart part = m_scene.GetSceneObjectPart(ParentID);
1844 if (part != null) 1848 if (part != null)
1845 { 1849 {
@@ -1866,11 +1870,6 @@ namespace OpenSim.Region.Framework.Scenes
1866 ControllingClient.SendClearFollowCamProperties(part.ParentUUID); 1870 ControllingClient.SendClearFollowCamProperties(part.ParentUUID);
1867 } 1871 }
1868 1872
1869 if (PhysicsActor == null)
1870 {
1871 AddToPhysicalScene(false);
1872 }
1873
1874 m_pos += ParentPosition + new Vector3(0.0f, 0.0f, 2.0f * m_sitAvatarHeight); 1873 m_pos += ParentPosition + new Vector3(0.0f, 0.0f, 2.0f * m_sitAvatarHeight);
1875 ParentPosition = Vector3.Zero; 1874 ParentPosition = Vector3.Zero;
1876 1875