diff options
author | AliciaRaven | 2016-11-22 15:31:45 +0000 |
---|---|---|
committer | AliciaRaven | 2016-11-22 15:31:45 +0000 |
commit | 94e48838d5b1f0bf0c5b0e40b7bc9a6f1be156e9 (patch) | |
tree | 384a7f929cbc59bf4b45d9daaae976471427219a /OpenSim/Framework/RegionInfo.cs | |
parent | Coding standards: A local variable may not use the prefix m_ (diff) | |
download | opensim-SC-94e48838d5b1f0bf0c5b0e40b7bc9a6f1be156e9.zip opensim-SC-94e48838d5b1f0bf0c5b0e40b7bc9a6f1be156e9.tar.gz opensim-SC-94e48838d5b1f0bf0c5b0e40b7bc9a6f1be156e9.tar.bz2 opensim-SC-94e48838d5b1f0bf0c5b0e40b7bc9a6f1be156e9.tar.xz |
Include new Region.ini option for DefaultLandingPoint for teleports with no coords specified.
This is useful when using a Telehub would be to restrictive as it would block landmarks and map teleports. This location is only ever used when no coordinates are provided. If config value not set, the previous default of 128,128 is used.
Diffstat (limited to 'OpenSim/Framework/RegionInfo.cs')
-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..b6e9d9f 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 < 0f) | ||
793 | { | ||
794 | DefaultLandingPoint.X = buffer_zone; | ||
795 | ValuesCapped = true; | ||
796 | } | ||
797 | |||
798 | if (DefaultLandingPoint.Y < 0f) | ||
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() |