aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
authorMelanie Thielker2008-09-07 20:09:11 +0000
committerMelanie Thielker2008-09-07 20:09:11 +0000
commit58d79b33ff507a1d861d1196a925d2d09ad1c3f2 (patch)
tree0b4c898b5885bb2c6d16346744f06f8c4b17fe77 /OpenSim
parentReturn 0 for no wind and 0 for no clouds from (diff)
downloadopensim-SC-58d79b33ff507a1d861d1196a925d2d09ad1c3f2.zip
opensim-SC-58d79b33ff507a1d861d1196a925d2d09ad1c3f2.tar.gz
opensim-SC-58d79b33ff507a1d861d1196a925d2d09ad1c3f2.tar.bz2
opensim-SC-58d79b33ff507a1d861d1196a925d2d09ad1c3f2.tar.xz
Mantis #2142
Thank you, HomerHorwitz, for a patch that fixes landmark teleport and about landmarks with the new OMV types.
Diffstat (limited to 'OpenSim')
-rw-r--r--OpenSim/Framework/AssetLandmark.cs3
-rw-r--r--OpenSim/Framework/Util.cs15
-rw-r--r--OpenSim/Region/Communications/OGS1/OGS1GridServices.cs63
-rw-r--r--OpenSim/Region/Environment/Modules/World/Land/LandManagementModule.cs2
4 files changed, 51 insertions, 32 deletions
diff --git a/OpenSim/Framework/AssetLandmark.cs b/OpenSim/Framework/AssetLandmark.cs
index cf663ee..d636d34 100644
--- a/OpenSim/Framework/AssetLandmark.cs
+++ b/OpenSim/Framework/AssetLandmark.cs
@@ -53,7 +53,8 @@ namespace OpenSim.Framework
53 string[] parts = temp.Split('\n'); 53 string[] parts = temp.Split('\n');
54 int.TryParse(parts[0].Substring(17, 1), out Version); 54 int.TryParse(parts[0].Substring(17, 1), out Version);
55 UUID.TryParse(parts[1].Substring(10, 36), out RegionID); 55 UUID.TryParse(parts[1].Substring(10, 36), out RegionID);
56 Vector3.TryParse(parts[2].Substring(10, parts[2].Length - 10), out Position); 56 // the vector is stored with spaces as separators, not with commas ("10.3 32.5 43" instead of "10.3, 32.5, 43")
57 Vector3.TryParse(parts[2].Substring(10, parts[2].Length - 10).Replace(" ", ","), out Position);
57 ulong.TryParse(parts[3].Substring(14, parts[3].Length - 14), out RegionHandle); 58 ulong.TryParse(parts[3].Substring(14, parts[3].Length - 14), out RegionHandle);
58 } 59 }
59 } 60 }
diff --git a/OpenSim/Framework/Util.cs b/OpenSim/Framework/Util.cs
index de42bf8..427832d 100644
--- a/OpenSim/Framework/Util.cs
+++ b/OpenSim/Framework/Util.cs
@@ -727,6 +727,21 @@ namespace OpenSim.Framework
727 return client.Send(url, 6000); 727 return client.Send(url, 6000);
728 } 728 }
729 729
730 /// <summary>
731 /// Converts a byte array in big endian order into an ulong.
732 /// </summary>
733 /// <param name="bytes">
734 /// The array of bytes
735 /// </param>
736 /// <returns>
737 /// The extracted ulong
738 /// </returns>
739 public static ulong BytesToUInt64Big(byte[] bytes) {
740 if(bytes.Length < 8) return 0;
741 return ((ulong)bytes[0] << 56) | ((ulong)bytes[1] << 48) | ((ulong)bytes[2] << 40) | ((ulong)bytes[3] << 32) |
742 ((ulong)bytes[4] << 24) | ((ulong)bytes[5] << 16) | ((ulong)bytes[6] << 8) | (ulong)bytes[7];
743 }
744
730 // used for RemoteParcelRequest (for "About Landmark") 745 // used for RemoteParcelRequest (for "About Landmark")
731 public static UUID BuildFakeParcelID(ulong regionHandle, uint x, uint y) { 746 public static UUID BuildFakeParcelID(ulong regionHandle, uint x, uint y) {
732 byte[] bytes = { 747 byte[] bytes = {
diff --git a/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs b/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs
index aaeca4b..2538eaf 100644
--- a/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs
+++ b/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs
@@ -1674,42 +1674,45 @@ namespace OpenSim.Region.Communications.OGS1
1674 IList paramList = new ArrayList(); 1674 IList paramList = new ArrayList();
1675 paramList.Add(hash); 1675 paramList.Add(hash);
1676 1676
1677 // this might be cached, as we probably requested it just a moment ago...
1678 RegionInfo info = RequestNeighbourInfo(regionHandle);
1679
1680 try 1677 try
1681 { 1678 {
1682 XmlRpcRequest request = new XmlRpcRequest("land_data", paramList); 1679 // this might be cached, as we probably requested it just a moment ago...
1683 string uri = "http://" + info.ExternalEndPoint.Address + ":" + info.HttpPort + "/"; 1680 RegionInfo info = RequestNeighbourInfo(regionHandle);
1684 XmlRpcResponse response = request.Send(uri, 10000); 1681 if (info != null) // just to be sure
1685 if (response.IsFault) 1682 {
1686 { 1683 XmlRpcRequest request = new XmlRpcRequest("land_data", paramList);
1687 m_log.ErrorFormat("[OGS1 GRID SERVICES] remote call returned an error: {0}", response.FaultString); 1684 string uri = "http://" + info.ExternalEndPoint.Address + ":" + info.HttpPort + "/";
1688 } 1685 XmlRpcResponse response = request.Send(uri, 10000);
1689 else 1686 if (response.IsFault)
1690 { 1687 {
1691 hash = (Hashtable)response.Value; 1688 m_log.ErrorFormat("[OGS1 GRID SERVICES] remote call returned an error: {0}", response.FaultString);
1692 try {
1693 landData = new LandData();
1694 landData.AABBMax = Vector3.Parse((string)hash["AABBMax"]);
1695 landData.AABBMin = Vector3.Parse((string)hash["AABBMin"]);
1696 landData.Area = Convert.ToInt32(hash["Area"]);
1697 landData.AuctionID = Convert.ToUInt32(hash["AuctionID"]);
1698 landData.Description = (string)hash["Description"];
1699 landData.Flags = Convert.ToUInt32(hash["Flags"]);
1700 landData.GlobalID = new UUID((string)hash["GlobalID"]);
1701 landData.Name = (string)hash["Name"];
1702 landData.OwnerID = new UUID((string)hash["OwnerID"]);
1703 landData.SalePrice = Convert.ToInt32(hash["SalePrice"]);
1704 landData.SnapshotID = new UUID((string)hash["SnapshotID"]);
1705 landData.UserLocation = Vector3.Parse((string)hash["UserLocation"]);
1706 m_log.DebugFormat("[OGS1 GRID SERVICES] Got land data for parcel {0}", landData.Name);
1707 } 1689 }
1708 catch (Exception e) 1690 else
1709 { 1691 {
1710 m_log.Error("[OGS1 GRID SERVICES] Got exception while parsing land-data:", e); 1692 hash = (Hashtable)response.Value;
1693 try {
1694 landData = new LandData();
1695 landData.AABBMax = Vector3.Parse((string)hash["AABBMax"]);
1696 landData.AABBMin = Vector3.Parse((string)hash["AABBMin"]);
1697 landData.Area = Convert.ToInt32(hash["Area"]);
1698 landData.AuctionID = Convert.ToUInt32(hash["AuctionID"]);
1699 landData.Description = (string)hash["Description"];
1700 landData.Flags = Convert.ToUInt32(hash["Flags"]);
1701 landData.GlobalID = new UUID((string)hash["GlobalID"]);
1702 landData.Name = (string)hash["Name"];
1703 landData.OwnerID = new UUID((string)hash["OwnerID"]);
1704 landData.SalePrice = Convert.ToInt32(hash["SalePrice"]);
1705 landData.SnapshotID = new UUID((string)hash["SnapshotID"]);
1706 landData.UserLocation = Vector3.Parse((string)hash["UserLocation"]);
1707 m_log.DebugFormat("[OGS1 GRID SERVICES] Got land data for parcel {0}", landData.Name);
1708 }
1709 catch (Exception e)
1710 {
1711 m_log.Error("[OGS1 GRID SERVICES] Got exception while parsing land-data:", e);
1712 }
1711 } 1713 }
1712 } 1714 }
1715 else m_log.WarnFormat("[OGS1 GRID SERVICES] Couldn't find region with handle {0}", regionHandle);
1713 } 1716 }
1714 catch (Exception e) 1717 catch (Exception e)
1715 { 1718 {
diff --git a/OpenSim/Region/Environment/Modules/World/Land/LandManagementModule.cs b/OpenSim/Region/Environment/Modules/World/Land/LandManagementModule.cs
index e5bdafc..f4ba9a3 100644
--- a/OpenSim/Region/Environment/Modules/World/Land/LandManagementModule.cs
+++ b/OpenSim/Region/Environment/Modules/World/Land/LandManagementModule.cs
@@ -1111,7 +1111,7 @@ namespace OpenSim.Region.Environment.Modules.World.Land
1111 { 1111 {
1112 // if you do a "About Landmark" on a landmark a second time, the viewer sends the 1112 // if you do a "About Landmark" on a landmark a second time, the viewer sends the
1113 // region_handle it got earlier via RegionHandleRequest 1113 // region_handle it got earlier via RegionHandleRequest
1114 ulong regionHandle = Helpers.BytesToUInt64((byte[])hash["region_handle"]); 1114 ulong regionHandle = Util.BytesToUInt64Big((byte[])hash["region_handle"]);
1115 parcelID = Util.BuildFakeParcelID(regionHandle, x, y); 1115 parcelID = Util.BuildFakeParcelID(regionHandle, x, y);
1116 } 1116 }
1117 else if (regionID == m_scene.RegionInfo.RegionID) 1117 else if (regionID == m_scene.RegionInfo.RegionID)