diff options
-rw-r--r-- | OpenSim/Region/Framework/Scenes/Scene.cs | 13 | ||||
-rw-r--r-- | OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | 5 |
2 files changed, 15 insertions, 3 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 11a41aa..5d27d86 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs | |||
@@ -4938,9 +4938,16 @@ Environment.Exit(1); | |||
4938 | return nearestPoint.Value; | 4938 | return nearestPoint.Value; |
4939 | } | 4939 | } |
4940 | 4940 | ||
4941 | //Ultimate backup if we have no idea where they are | 4941 | ILandObject dest = LandChannel.GetLandObject(avatar.lastKnownAllowedPosition.X, avatar.lastKnownAllowedPosition.Y); |
4942 | Debug.WriteLine("Have no idea where they are, sending them to: " + avatar.lastKnownAllowedPosition.ToString()); | 4942 | if (dest != excludeParcel) |
4943 | return avatar.lastKnownAllowedPosition; | 4943 | { |
4944 | // Ultimate backup if we have no idea where they are and | ||
4945 | // the last allowed position was in another parcel | ||
4946 | Debug.WriteLine("Have no idea where they are, sending them to: " + avatar.lastKnownAllowedPosition.ToString()); | ||
4947 | return avatar.lastKnownAllowedPosition; | ||
4948 | } | ||
4949 | |||
4950 | // else fall through to region edge | ||
4944 | } | 4951 | } |
4945 | 4952 | ||
4946 | //Go to the edge, this happens in teleporting to a region with no available parcels | 4953 | //Go to the edge, this happens in teleporting to a region with no available parcels |
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index 5c02d98..fc6bec1 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | |||
@@ -11574,6 +11574,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
11574 | Vector3 rayEnd = new Vector3((float)end.x, (float)end.y, (float)end.z); | 11574 | Vector3 rayEnd = new Vector3((float)end.x, (float)end.y, (float)end.z); |
11575 | Vector3 dir = rayEnd - rayStart; | 11575 | Vector3 dir = rayEnd - rayStart; |
11576 | 11576 | ||
11577 | float dist = Vector3.Mag(dir); | ||
11578 | |||
11577 | int count = 1; | 11579 | int count = 1; |
11578 | bool detectPhantom = false; | 11580 | bool detectPhantom = false; |
11579 | int dataFlags = 0; | 11581 | int dataFlags = 0; |
@@ -11630,6 +11632,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
11630 | int values = 0; | 11632 | int values = 0; |
11631 | foreach (ContactResult result in results) | 11633 | foreach (ContactResult result in results) |
11632 | { | 11634 | { |
11635 | if (result.Depth > dist) | ||
11636 | continue; | ||
11637 | |||
11633 | UUID itemID = UUID.Zero; | 11638 | UUID itemID = UUID.Zero; |
11634 | int linkNum = 0; | 11639 | int linkNum = 0; |
11635 | 11640 | ||