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)
parent
cdbeb8b83b
commit
ee0f7e10c8
|
@ -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;
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue