mirror of
https://github.com/opensim/opensim.git
synced 2026-07-31 05:45:37 +08:00
don't freeze with a sitted avatar in a border without other sim. Still messy :(
This commit is contained in:
@@ -537,8 +537,15 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
return;
|
||||
}
|
||||
}
|
||||
else if (RootPart.PhysActor != null)
|
||||
{
|
||||
RootPart.PhysActor.CrossingFailure();
|
||||
}
|
||||
|
||||
val = AbsolutePosition;
|
||||
Vector3 oldp = AbsolutePosition;
|
||||
val.X = Util.Clamp<float>(oldp.X, 0.5f, (float)Constants.RegionSize - 0.5f);
|
||||
val.Y = Util.Clamp<float>(oldp.Y, 0.5f, (float)Constants.RegionSize - 0.5f);
|
||||
val.Z = Util.Clamp<float>(oldp.Z, 0.5f, 4096.0f);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -3125,7 +3125,7 @@ Console.WriteLine("ODEPrim JointCreateFixed !!!");
|
||||
d.BodySetPosition(Body, _position.X, _position.Y, _position.Z);
|
||||
d.BodySetLinearVel(Body, 0, 0, 0);
|
||||
|
||||
if (Interlocked.Exchange(ref m_crossingfailures, 0) == 0)
|
||||
if (Interlocked.Exchange(ref m_crossingfailures, m_crossingfailures) == 0)
|
||||
{ // tell base code only once
|
||||
Interlocked.Increment(ref m_crossingfailures);
|
||||
base.RequestPhysicsterseUpdate();
|
||||
@@ -3133,7 +3133,7 @@ Console.WriteLine("ODEPrim JointCreateFixed !!!");
|
||||
return;
|
||||
}
|
||||
|
||||
if (Interlocked.Exchange(ref m_crossingfailures, 0) > 1)
|
||||
if (Interlocked.Exchange(ref m_crossingfailures, 0) != 0)
|
||||
{
|
||||
// main simulator had a crossing failure
|
||||
// park it inside region
|
||||
|
||||
Reference in New Issue
Block a user