diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs index 9834fd48f2..e9b59ff2ef 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs @@ -2248,6 +2248,7 @@ namespace OpenSim.Region.Framework.Scenes }); } } + if (colliding.Count > 0) { StartCollidingMessage.Colliders = colliding; @@ -2255,10 +2256,11 @@ namespace OpenSim.Region.Framework.Scenes if (m_parentGroup.Scene == null) return; - if (m_parentGroup.PassCollision == true) - { - //TODO: Add pass to root prim! - } +// if (m_parentGroup.PassCollision == true) +// { +// //TODO: Add pass to root prim! +// } + m_parentGroup.Scene.EventManager.TriggerScriptCollidingStart(LocalId, StartCollidingMessage); } } diff --git a/OpenSim/Region/Physics/Manager/PhysicsActor.cs b/OpenSim/Region/Physics/Manager/PhysicsActor.cs index 96dcfb6b0a..1659ebd6ef 100644 --- a/OpenSim/Region/Physics/Manager/PhysicsActor.cs +++ b/OpenSim/Region/Physics/Manager/PhysicsActor.cs @@ -113,6 +113,14 @@ namespace OpenSim.Region.Physics.Manager m_objCollisionList[localID] = contact; } } + + /// + /// Clear added collision events. + /// + public void Clear() + { + m_objCollisionList.Clear(); + } } public abstract class PhysicsActor diff --git a/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs b/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs index d520f27dee..50ab5b9051 100644 --- a/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs +++ b/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs @@ -1235,11 +1235,9 @@ namespace OpenSim.Region.Physics.OdePlugin { if (m_eventsubscription > m_requestedUpdateFrequency) { - if (CollisionEventsThisFrame != null) - { - base.SendCollisionUpdate(CollisionEventsThisFrame); - } - CollisionEventsThisFrame = new CollisionEventUpdate(); + base.SendCollisionUpdate(CollisionEventsThisFrame); + + CollisionEventsThisFrame.Clear(); m_eventsubscription = 0; } }