diff options
Diffstat (limited to 'OpenSim/Region/Physics/OdePlugin/OdePlugin.cs')
-rw-r--r-- | OpenSim/Region/Physics/OdePlugin/OdePlugin.cs | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs b/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs index 7589750..c0b4b45 100644 --- a/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs +++ b/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs | |||
@@ -797,7 +797,25 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
797 | 797 | ||
798 | #endregion | 798 | #endregion |
799 | 799 | ||
800 | if (contacts[i].depth >= 0f && !checkDupe(contacts[i], p2.PhysicsActorType)) | 800 | // Logic for collision handling |
801 | // Note, that if *all* contacts are skipped (VolumeDetect) | ||
802 | // The prim still detects (and forwards) collision events but | ||
803 | // appears to be phantom for the world | ||
804 | Boolean skipThisContact = false; | ||
805 | |||
806 | if (contacts[i].depth < 0f) | ||
807 | skipThisContact = true; | ||
808 | |||
809 | if (checkDupe(contacts[i], p2.PhysicsActorType)) | ||
810 | skipThisContact = true; | ||
811 | |||
812 | if ((p1 is OdePrim) && (((OdePrim)p1).m_isVolumeDetect)) | ||
813 | skipThisContact = true; // No collision on volume detect prims | ||
814 | |||
815 | if ((p2 is OdePrim) && (((OdePrim)p2).m_isVolumeDetect)) | ||
816 | skipThisContact = true; // No collision on volume detect prims | ||
817 | |||
818 | if (!skipThisContact) | ||
801 | { | 819 | { |
802 | // If we're colliding against terrain | 820 | // If we're colliding against terrain |
803 | if (name1 == "Terrain" || name2 == "Terrain") | 821 | if (name1 == "Terrain" || name2 == "Terrain") |