diff options
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Framework/RegionInfo.cs | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/OpenSim/Framework/RegionInfo.cs b/OpenSim/Framework/RegionInfo.cs index ac77352..ca17793 100644 --- a/OpenSim/Framework/RegionInfo.cs +++ b/OpenSim/Framework/RegionInfo.cs | |||
@@ -176,6 +176,9 @@ namespace OpenSim.Framework | |||
176 | /// </remarks> | 176 | /// </remarks> |
177 | public uint RegionSizeZ = Constants.RegionHeight; | 177 | public uint RegionSizeZ = Constants.RegionHeight; |
178 | 178 | ||
179 | // If entering avatar has no specific coords, this is where they land | ||
180 | public Vector3 DefaultLandingPoint = new Vector3(128, 128, 30); | ||
181 | |||
179 | private Dictionary<String, String> m_extraSettings = new Dictionary<string, string>(); | 182 | private Dictionary<String, String> m_extraSettings = new Dictionary<string, string>(); |
180 | 183 | ||
181 | // Apparently, we're applying the same estatesettings regardless of whether it's local or remote. | 184 | // Apparently, we're applying the same estatesettings regardless of whether it's local or remote. |
@@ -712,6 +715,19 @@ namespace OpenSim.Framework | |||
712 | m_regionType = config.GetString("RegionType", String.Empty); | 715 | m_regionType = config.GetString("RegionType", String.Empty); |
713 | allKeys.Remove("RegionType"); | 716 | allKeys.Remove("RegionType"); |
714 | 717 | ||
718 | // Get Default Landing Location (Defaults to 128,128) | ||
719 | string temp_location = config.GetString("DefaultLanding", "<128, 128, 30>"); | ||
720 | Vector3 temp_vector; | ||
721 | |||
722 | if (Vector3.TryParse(temp_location, out temp_vector)) | ||
723 | DefaultLandingPoint = temp_vector; | ||
724 | else | ||
725 | m_log.ErrorFormat("[RegionInfo]: Unable to parse DefaultLanding for '{0}'. The value given was '{1}'", RegionName, temp_location); | ||
726 | |||
727 | allKeys.Remove("DefaultLanding"); | ||
728 | |||
729 | DoDefaultLandingSanityChecks(); | ||
730 | |||
715 | #region Prim and map stuff | 731 | #region Prim and map stuff |
716 | 732 | ||
717 | m_nonphysPrimMin = config.GetFloat("NonPhysicalPrimMin", 0); | 733 | m_nonphysPrimMin = config.GetFloat("NonPhysicalPrimMin", 0); |
@@ -764,6 +780,48 @@ namespace OpenSim.Framework | |||
764 | } | 780 | } |
765 | } | 781 | } |
766 | 782 | ||
783 | // Make sure DefaultLanding is within region borders with a buffer zone 5 meters from borders | ||
784 | private void DoDefaultLandingSanityChecks() | ||
785 | { | ||
786 | // Sanity Check Default Landing | ||
787 | float buffer_zone = 5f; | ||
788 | |||
789 | bool ValuesCapped = false; | ||
790 | |||
791 | // Minimum Positions | ||
792 | if (DefaultLandingPoint.X < buffer_zone) | ||
793 | { | ||
794 | DefaultLandingPoint.X = buffer_zone; | ||
795 | ValuesCapped = true; | ||
796 | } | ||
797 | |||
798 | if (DefaultLandingPoint.Y < buffer_zone) | ||
799 | { | ||
800 | DefaultLandingPoint.Y = buffer_zone; | ||
801 | ValuesCapped = true; | ||
802 | } | ||
803 | |||
804 | // Maximum Positions | ||
805 | if (DefaultLandingPoint.X > RegionSizeX - buffer_zone) | ||
806 | { | ||
807 | DefaultLandingPoint.X = RegionSizeX - buffer_zone; | ||
808 | ValuesCapped = true; | ||
809 | } | ||
810 | |||
811 | if (DefaultLandingPoint.Y > RegionSizeY - buffer_zone) | ||
812 | { | ||
813 | DefaultLandingPoint.Y = RegionSizeY - buffer_zone; | ||
814 | ValuesCapped = true; | ||
815 | } | ||
816 | |||
817 | // Height | ||
818 | if (DefaultLandingPoint.Z < 0f) | ||
819 | DefaultLandingPoint.Z = 0f; | ||
820 | |||
821 | if (ValuesCapped == true) | ||
822 | m_log.WarnFormat("[RegionInfo]: The default landing location for {0} has been capped to {1}", RegionName, DefaultLandingPoint); | ||
823 | } | ||
824 | |||
767 | // Make sure user specified region sizes are sane. | 825 | // Make sure user specified region sizes are sane. |
768 | // Must be multiples of legacy region size (256). | 826 | // Must be multiples of legacy region size (256). |
769 | private void DoRegionSizeSanityChecks() | 827 | private void DoRegionSizeSanityChecks() |