diff options
Diffstat (limited to 'OpenSim/Region/PhysicsModules/Ode/OdeScene.cs')
-rw-r--r-- | OpenSim/Region/PhysicsModules/Ode/OdeScene.cs | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/OpenSim/Region/PhysicsModules/Ode/OdeScene.cs b/OpenSim/Region/PhysicsModules/Ode/OdeScene.cs index 7ba2083..e23cca6 100644 --- a/OpenSim/Region/PhysicsModules/Ode/OdeScene.cs +++ b/OpenSim/Region/PhysicsModules/Ode/OdeScene.cs | |||
@@ -1442,9 +1442,28 @@ namespace OpenSim.Region.PhysicsModule.ODE | |||
1442 | obj2LocalID = 0; | 1442 | obj2LocalID = 0; |
1443 | //ctype = 0; | 1443 | //ctype = 0; |
1444 | //cStartStop = 0; | 1444 | //cStartStop = 0; |
1445 | if (!p2.SubscribedEvents() && !p1.SubscribedEvents()) | 1445 | // if (!p2.SubscribedEvents() && !p1.SubscribedEvents()) |
1446 | // return; | ||
1447 | bool p1events = p1.SubscribedEvents(); | ||
1448 | bool p2events = p2.SubscribedEvents(); | ||
1449 | |||
1450 | if (p1.IsVolumeDtc) | ||
1451 | p2events = false; | ||
1452 | if (p2.IsVolumeDtc) | ||
1453 | p1events = false; | ||
1454 | |||
1455 | if (!p2events && !p1events) | ||
1446 | return; | 1456 | return; |
1447 | 1457 | ||
1458 | Vector3 vel = Vector3.Zero; | ||
1459 | if (p2 != null && p2.IsPhysical) | ||
1460 | vel = p2.Velocity; | ||
1461 | |||
1462 | if (p1 != null && p1.IsPhysical) | ||
1463 | vel -= p1.Velocity; | ||
1464 | |||
1465 | contact.RelativeSpeed = Vector3.Dot(vel, contact.SurfaceNormal); | ||
1466 | |||
1448 | switch ((ActorTypes)p2.PhysicsActorType) | 1467 | switch ((ActorTypes)p2.PhysicsActorType) |
1449 | { | 1468 | { |
1450 | case ActorTypes.Agent: | 1469 | case ActorTypes.Agent: |