aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region')
-rw-r--r--OpenSim/Region/Framework/Scenes/ScenePresence.cs57
1 files changed, 28 insertions, 29 deletions
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index 558fd9c..0c66e49 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -3948,35 +3948,6 @@ namespace OpenSim.Region.Framework.Scenes
3948 3948
3949 switch (m_scene.SpawnPointRouting) 3949 switch (m_scene.SpawnPointRouting)
3950 { 3950 {
3951 case "closest":
3952
3953 float distance = 9999;
3954 int closest = -1;
3955
3956 for (int i = 0; i < spawnPoints.Length; i++)
3957 {
3958 Vector3 spawnPosition = spawnPoints[i].GetLocation(
3959 telehub.AbsolutePosition,
3960 telehub.GroupRotation
3961 );
3962 Vector3 offset = spawnPosition - pos;
3963 float d = Vector3.Mag(offset);
3964 if (d >= distance)
3965 continue;
3966 ILandObject land = m_scene.LandChannel.GetLandObject(spawnPosition.X, spawnPosition.Y);
3967 if (land == null)
3968 continue;
3969 if (land.IsEitherBannedOrRestricted(UUID))
3970 continue;
3971 distance = d;
3972 closest = i;
3973 }
3974 if (closest == -1)
3975 return;
3976
3977 pos = spawnPoints[closest].GetLocation(telehub.AbsolutePosition, telehub.GroupRotation);
3978 return;
3979
3980 case "random": 3951 case "random":
3981 3952
3982 do 3953 do
@@ -4028,7 +3999,35 @@ namespace OpenSim.Region.Framework.Scenes
4028 return; 3999 return;
4029 4000
4030 default: 4001 default:
4002 case "closest":
4003
4004 float distance = 9999;
4005 int closest = -1;
4006
4007 for (int i = 0; i < spawnPoints.Length; i++)
4008 {
4009 Vector3 spawnPosition = spawnPoints[i].GetLocation(
4010 telehub.AbsolutePosition,
4011 telehub.GroupRotation
4012 );
4013 Vector3 offset = spawnPosition - pos;
4014 float d = Vector3.Mag(offset);
4015 if (d >= distance)
4016 continue;
4017 ILandObject land = m_scene.LandChannel.GetLandObject(spawnPosition.X, spawnPosition.Y);
4018 if (land == null)
4019 continue;
4020 if (land.IsEitherBannedOrRestricted(UUID))
4021 continue;
4022 distance = d;
4023 closest = i;
4024 }
4025 if (closest == -1)
4026 return;
4027
4028 pos = spawnPoints[closest].GetLocation(telehub.AbsolutePosition, telehub.GroupRotation);
4031 return; 4029 return;
4030
4032 } 4031 }
4033 } 4032 }
4034 } 4033 }