diff options
author | Melanie | 2012-06-08 18:25:36 +0200 |
---|---|---|
committer | Melanie | 2012-06-08 18:25:36 +0200 |
commit | efff5a7c0da115c21720b879194ed87dc63def2d (patch) | |
tree | 268220419213f02b80ebf8a9093be80054f78bf7 /OpenSim/Region/Framework | |
parent | Revert "Add a frame based watchdog function to keyframed motion" (diff) | |
download | opensim-SC-efff5a7c0da115c21720b879194ed87dc63def2d.zip opensim-SC-efff5a7c0da115c21720b879194ed87dc63def2d.tar.gz opensim-SC-efff5a7c0da115c21720b879194ed87dc63def2d.tar.bz2 opensim-SC-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/Framework')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/ScenePresence.cs | 9 |
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) |