aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorUbitUmarov2012-02-15 19:44:54 +0000
committerMelanie2012-02-15 22:04:17 +0100
commit3bffdddc9d0f0f62d7cf4bc6c271a865052ee119 (patch)
treeb238999aacfae73ae2c802eb6a3650a3ac6a130a
parent try to make crossings work better. chode no longer prevents crossings i hope (diff)
downloadopensim-SC_OLD-3bffdddc9d0f0f62d7cf4bc6c271a865052ee119.zip
opensim-SC_OLD-3bffdddc9d0f0f62d7cf4bc6c271a865052ee119.tar.gz
opensim-SC_OLD-3bffdddc9d0f0f62d7cf4bc6c271a865052ee119.tar.bz2
opensim-SC_OLD-3bffdddc9d0f0f62d7cf4bc6c271a865052ee119.tar.xz
don't freeze with a sitted avatar in a border without other sim. Still messy :(
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs9
-rw-r--r--OpenSim/Region/Physics/ChOdePlugin/ODEPrim.cs4
2 files changed, 10 insertions, 3 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
index d964a6f..e7c6ee8 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
@@ -537,8 +537,15 @@ namespace OpenSim.Region.Framework.Scenes
537 return; 537 return;
538 } 538 }
539 } 539 }
540 else if (RootPart.PhysActor != null)
541 {
542 RootPart.PhysActor.CrossingFailure();
543 }
540 544
541 val = AbsolutePosition; 545 Vector3 oldp = AbsolutePosition;
546 val.X = Util.Clamp<float>(oldp.X, 0.5f, (float)Constants.RegionSize - 0.5f);
547 val.Y = Util.Clamp<float>(oldp.Y, 0.5f, (float)Constants.RegionSize - 0.5f);
548 val.Z = Util.Clamp<float>(oldp.Z, 0.5f, 4096.0f);
542 } 549 }
543 } 550 }
544 551
diff --git a/OpenSim/Region/Physics/ChOdePlugin/ODEPrim.cs b/OpenSim/Region/Physics/ChOdePlugin/ODEPrim.cs
index 95a9741..073241f 100644
--- a/OpenSim/Region/Physics/ChOdePlugin/ODEPrim.cs
+++ b/OpenSim/Region/Physics/ChOdePlugin/ODEPrim.cs
@@ -3125,7 +3125,7 @@ Console.WriteLine("ODEPrim JointCreateFixed !!!");
3125 d.BodySetPosition(Body, _position.X, _position.Y, _position.Z); 3125 d.BodySetPosition(Body, _position.X, _position.Y, _position.Z);
3126 d.BodySetLinearVel(Body, 0, 0, 0); 3126 d.BodySetLinearVel(Body, 0, 0, 0);
3127 3127
3128 if (Interlocked.Exchange(ref m_crossingfailures, 0) == 0) 3128 if (Interlocked.Exchange(ref m_crossingfailures, m_crossingfailures) == 0)
3129 { // tell base code only once 3129 { // tell base code only once
3130 Interlocked.Increment(ref m_crossingfailures); 3130 Interlocked.Increment(ref m_crossingfailures);
3131 base.RequestPhysicsterseUpdate(); 3131 base.RequestPhysicsterseUpdate();
@@ -3133,7 +3133,7 @@ Console.WriteLine("ODEPrim JointCreateFixed !!!");
3133 return; 3133 return;
3134 } 3134 }
3135 3135
3136 if (Interlocked.Exchange(ref m_crossingfailures, 0) > 1) 3136 if (Interlocked.Exchange(ref m_crossingfailures, 0) != 0)
3137 { 3137 {
3138 // main simulator had a crossing failure 3138 // main simulator had a crossing failure
3139 // park it inside region 3139 // park it inside region