mirror of
https://github.com/opensim/opensim.git
synced 2026-08-05 00:46:02 +08:00
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.
This commit is contained in:
@@ -1051,6 +1051,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
IsChildAgent = true;
|
||||
m_scene.SwapRootAgentCount(true);
|
||||
RemoveFromPhysicalScene();
|
||||
ParentID = 0; // Child agents can't be sitting
|
||||
|
||||
// FIXME: Set RegionHandle to the region handle of the scene this agent is moving into
|
||||
|
||||
@@ -2091,6 +2092,9 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
|
||||
public void HandleAgentRequestSit(IClientAPI remoteClient, UUID agentID, UUID targetID, Vector3 offset)
|
||||
{
|
||||
if (IsChildAgent)
|
||||
return;
|
||||
|
||||
if (ParentID != 0)
|
||||
{
|
||||
StandUp();
|
||||
@@ -2893,8 +2897,9 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
|
||||
// If we don't have a PhysActor, we can't cross anyway
|
||||
// Also don't do this while sat, sitting avatars cross with the
|
||||
// object they sit on.
|
||||
if (ParentID != 0 || PhysicsActor == null)
|
||||
// object they sit on. ParentUUID denoted a pending sit, don't
|
||||
// interfere with it.
|
||||
if (ParentID != 0 || PhysicsActor == null || ParentUUID != UUID.Zero)
|
||||
return;
|
||||
|
||||
if (!IsInTransit)
|
||||
|
||||
Reference in New Issue
Block a user