diff options
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/SceneObjectPart.cs')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs index bb8d065..61ef827 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | |||
@@ -2640,15 +2640,25 @@ namespace OpenSim.Region.Framework.Scenes | |||
2640 | 2640 | ||
2641 | private void SendLandCollisionEvent(scriptEvents ev, ScriptCollidingNotification notify) | 2641 | private void SendLandCollisionEvent(scriptEvents ev, ScriptCollidingNotification notify) |
2642 | { | 2642 | { |
2643 | if ((ParentGroup.RootPart.ScriptEvents & ev) != 0) | 2643 | bool sendToRoot = true; |
2644 | { | 2644 | |
2645 | ColliderArgs LandCollidingMessage = new ColliderArgs(); | 2645 | ColliderArgs LandCollidingMessage = new ColliderArgs(); |
2646 | List<DetectedObject> colliding = new List<DetectedObject>(); | 2646 | List<DetectedObject> colliding = new List<DetectedObject>(); |
2647 | 2647 | ||
2648 | colliding.Add(CreateDetObjectForGround()); | 2648 | colliding.Add(CreateDetObjectForGround()); |
2649 | LandCollidingMessage.Colliders = colliding; | 2649 | LandCollidingMessage.Colliders = colliding; |
2650 | 2650 | ||
2651 | if (Inventory.ContainsScripts()) | ||
2652 | { | ||
2653 | if (!PassCollisions) | ||
2654 | sendToRoot = false; | ||
2655 | } | ||
2656 | if ((ScriptEvents & ev) != 0) | ||
2651 | notify(LocalId, LandCollidingMessage); | 2657 | notify(LocalId, LandCollidingMessage); |
2658 | |||
2659 | if ((ParentGroup.RootPart.ScriptEvents & ev) != 0 && sendToRoot) | ||
2660 | { | ||
2661 | notify(ParentGroup.RootPart.LocalId, LandCollidingMessage); | ||
2652 | } | 2662 | } |
2653 | } | 2663 | } |
2654 | 2664 | ||