aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.cs13
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs5
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