aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region
diff options
context:
space:
mode:
authorMelanie2012-06-08 18:25:36 +0200
committerMelanie2012-06-08 18:25:36 +0200
commitefff5a7c0da115c21720b879194ed87dc63def2d (patch)
tree268220419213f02b80ebf8a9093be80054f78bf7 /OpenSim/Region
parentRevert "Add a frame based watchdog function to keyframed motion" (diff)
downloadopensim-SC_OLD-efff5a7c0da115c21720b879194ed87dc63def2d.zip
opensim-SC_OLD-efff5a7c0da115c21720b879194ed87dc63def2d.tar.gz
opensim-SC_OLD-efff5a7c0da115c21720b879194ed87dc63def2d.tar.bz2
opensim-SC_OLD-efff5a7c0da115c21720b879194ed87dc63def2d.tar.xz
Fix a corner case where checking for region corssing may cross an avatar back if
it's pending to be sat onto a vehicle that is in the process of crossing.
Diffstat (limited to 'OpenSim/Region')
-rw-r--r--OpenSim/Region/Framework/Scenes/ScenePresence.cs9
1 files changed, 7 insertions, 2 deletions
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index 2b1fb3d..a810de2 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -1051,6 +1051,7 @@ namespace OpenSim.Region.Framework.Scenes
1051 IsChildAgent = true; 1051 IsChildAgent = true;
1052 m_scene.SwapRootAgentCount(true); 1052 m_scene.SwapRootAgentCount(true);
1053 RemoveFromPhysicalScene(); 1053 RemoveFromPhysicalScene();
1054 ParentID = 0; // Child agents can't be sitting
1054 1055
1055 // FIXME: Set RegionHandle to the region handle of the scene this agent is moving into 1056 // FIXME: Set RegionHandle to the region handle of the scene this agent is moving into
1056 1057
@@ -2091,6 +2092,9 @@ namespace OpenSim.Region.Framework.Scenes
2091 2092
2092 public void HandleAgentRequestSit(IClientAPI remoteClient, UUID agentID, UUID targetID, Vector3 offset) 2093 public void HandleAgentRequestSit(IClientAPI remoteClient, UUID agentID, UUID targetID, Vector3 offset)
2093 { 2094 {
2095 if (IsChildAgent)
2096 return;
2097
2094 if (ParentID != 0) 2098 if (ParentID != 0)
2095 { 2099 {
2096 StandUp(); 2100 StandUp();
@@ -2893,8 +2897,9 @@ namespace OpenSim.Region.Framework.Scenes
2893 2897
2894 // If we don't have a PhysActor, we can't cross anyway 2898 // If we don't have a PhysActor, we can't cross anyway
2895 // Also don't do this while sat, sitting avatars cross with the 2899 // Also don't do this while sat, sitting avatars cross with the
2896 // object they sit on. 2900 // object they sit on. ParentUUID denoted a pending sit, don't
2897 if (ParentID != 0 || PhysicsActor == null) 2901 // interfere with it.
2902 if (ParentID != 0 || PhysicsActor == null || ParentUUID != UUID.Zero)
2898 return; 2903 return;
2899 2904
2900 if (!IsInTransit) 2905 if (!IsInTransit)