aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.cs27
1 files changed, 27 insertions, 0 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index 0ebdbb7..4daabd2 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -5379,6 +5379,33 @@ Environment.Exit(1);
5379 5379
5380 if (position == Vector3.Zero) // Teleport 5380 if (position == Vector3.Zero) // Teleport
5381 { 5381 {
5382 if (!RegionInfo.EstateSettings.AllowDirectTeleport)
5383 {
5384 SceneObjectGroup telehub;
5385 if (RegionInfo.RegionSettings.TelehubObject != UUID.Zero && (telehub = GetSceneObjectGroup(RegionInfo.RegionSettings.TelehubObject)) != null)
5386 {
5387 List<SpawnPoint> spawnPoints = RegionInfo.RegionSettings.SpawnPoints();
5388 bool banned = true;
5389 foreach (SpawnPoint sp in spawnPoints)
5390 {
5391 Vector3 spawnPoint = sp.GetLocation(telehub.AbsolutePosition, telehub.GroupRotation);
5392 ILandObject land = LandChannel.GetLandObject(spawnPoint.X, spawnPoint.Y);
5393 if (land == null)
5394 continue;
5395 if (land.IsEitherBannedOrRestricted(agentID))
5396 continue;
5397 banned = false;
5398 break;
5399 }
5400
5401 if (banned)
5402 {
5403 reason = "No suitable landing point found";
5404 return false;
5405 }
5406 }
5407 }
5408
5382 float posX = 128.0f; 5409 float posX = 128.0f;
5383 float posY = 128.0f; 5410 float posY = 128.0f;
5384 5411