Fixed a bad check on velocity in the ODE near() callback (it was only checking for velocity in certain directions, and was calling the get_Velocity() function three times)

0.6.8-post-fixes
John Hurliman 2009-10-28 12:20:34 -07:00
parent cdbeb8b83b
commit ee0f7e10c8
1 changed files with 3 additions and 3 deletions

View File

@ -772,7 +772,7 @@ namespace OpenSim.Region.Physics.OdePlugin
lock (contacts) lock (contacts)
{ {
count = d.Collide(g1, g2, contacts.GetLength(0), contacts, d.ContactGeom.SizeOf); count = d.Collide(g1, g2, contacts.Length, contacts, d.ContactGeom.SizeOf);
} }
} }
catch (SEHException) catch (SEHException)
@ -830,7 +830,7 @@ namespace OpenSim.Region.Physics.OdePlugin
p2.CollidingObj = true; p2.CollidingObj = true;
break; break;
case (int)ActorTypes.Prim: case (int)ActorTypes.Prim:
if (p2.Velocity.X > 0 || p2.Velocity.Y > 0 || p2.Velocity.Z > 0) if (p2.Velocity.LengthSquared() > 0.0f)
p2.CollidingObj = true; p2.CollidingObj = true;
break; break;
case (int)ActorTypes.Unknown: case (int)ActorTypes.Unknown:
@ -1014,7 +1014,7 @@ namespace OpenSim.Region.Physics.OdePlugin
if (!skipThisContact && checkDupe(contacts[i], p2.PhysicsActorType)) if (!skipThisContact && checkDupe(contacts[i], p2.PhysicsActorType))
skipThisContact = true; skipThisContact = true;
int maxContactsbeforedeath = 4000; const int maxContactsbeforedeath = 4000;
joint = IntPtr.Zero; joint = IntPtr.Zero;