diff options
Diffstat (limited to 'OpenSim')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/ScenePresence.cs | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index c108129..5440e6c 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs | |||
@@ -948,16 +948,23 @@ namespace OpenSim.Region.Framework.Scenes | |||
948 | pos.Y = crossedBorder.BorderLine.Z - 1; | 948 | pos.Y = crossedBorder.BorderLine.Z - 1; |
949 | } | 949 | } |
950 | 950 | ||
951 | //If they're TP'ing in or logging in, we haven't had time to add any known child regions yet. | ||
952 | //This has the unfortunate consequence that if somebody is TP'ing who is already a child agent, | ||
953 | //they'll bypass the landing point. But I can't think of any decent way of fixing this. | ||
954 | ILandObject land = m_scene.LandChannel.GetLandObject(pos.X, pos.Y); | 951 | ILandObject land = m_scene.LandChannel.GetLandObject(pos.X, pos.Y); |
955 | if (land != null) | 952 | if (land != null) |
956 | { | 953 | { |
957 | if (KnownChildRegionHandles.Count == 0) | 954 | // If we come in via login, landmark or map, we want to |
955 | // honor landing points. If we come in via Lure, we want | ||
956 | // to ignore them. | ||
957 | if ((m_teleportFlags & (TeleportFlags.ViaLogin | | ||
958 | TeleportFlags.ViaLandmark | | ||
959 | TeleportFlags.ViaLocation)) != 0) | ||
958 | { | 960 | { |
959 | //Don't restrict gods, estate managers, or land owners to the TP point. This behaviour mimics agni. | 961 | // Don't restrict gods, estate managers, or land owners to |
960 | if (land.LandData.LandingType == (byte)1 && land.LandData.UserLocation != Vector3.Zero && UserLevel < 200 && !m_scene.RegionInfo.EstateSettings.IsEstateManager(m_uuid) && land.LandData.OwnerID != m_uuid) | 962 | // the TP point. This behaviour mimics agni. |
963 | if (land.LandData.LandingType == (byte)LandingType.LandingPoint && | ||
964 | land.LandData.UserLocation != Vector3.Zero && | ||
965 | land.LandData.OwnerID != m_uuid && | ||
966 | (!m_scene.Permissions.IsGod(m_uuid)) && | ||
967 | (!m_scene.RegionInfo.EstateSettings.IsEstateManager(m_uuid))) | ||
961 | { | 968 | { |
962 | pos = land.LandData.UserLocation; | 969 | pos = land.LandData.UserLocation; |
963 | } | 970 | } |