diff options
Diffstat (limited to 'OpenSim')
9 files changed, 36 insertions, 13 deletions
diff --git a/OpenSim/Framework/Util.cs b/OpenSim/Framework/Util.cs index 802cb37..b5d025f 100644 --- a/OpenSim/Framework/Util.cs +++ b/OpenSim/Framework/Util.cs | |||
@@ -1171,6 +1171,16 @@ namespace OpenSim.Framework | |||
1171 | 1171 | ||
1172 | } | 1172 | } |
1173 | 1173 | ||
1174 | public static uint ConvertAccessLevelToMaturity(byte maturity) | ||
1175 | { | ||
1176 | if (maturity <= 13) | ||
1177 | return 0; | ||
1178 | else if (maturity <= 21) | ||
1179 | return 1; | ||
1180 | else | ||
1181 | return 2; | ||
1182 | } | ||
1183 | |||
1174 | /// <summary> | 1184 | /// <summary> |
1175 | /// Produces an OSDMap from its string representation on a stream | 1185 | /// Produces an OSDMap from its string representation on a stream |
1176 | /// </summary> | 1186 | /// </summary> |
@@ -1486,4 +1496,4 @@ namespace OpenSim.Framework | |||
1486 | } | 1496 | } |
1487 | 1497 | ||
1488 | } | 1498 | } |
1489 | } \ No newline at end of file | 1499 | } |
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index c59eedf..7bf7511 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs | |||
@@ -2656,7 +2656,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
2656 | 2656 | ||
2657 | // Bit 0: Mature, bit 7: on sale, other bits: no idea | 2657 | // Bit 0: Mature, bit 7: on sale, other bits: no idea |
2658 | reply.Data.Flags = (byte)( | 2658 | reply.Data.Flags = (byte)( |
2659 | ((land.Flags & (uint)ParcelFlags.MaturePublish) != 0 ? (1 << 0) : 0) + | 2659 | (info.AccessLevel > 13 ? (1 << 0) : 0) + |
2660 | ((land.Flags & (uint)ParcelFlags.ForSale) != 0 ? (1 << 7) : 0)); | 2660 | ((land.Flags & (uint)ParcelFlags.ForSale) != 0 ? (1 << 7) : 0)); |
2661 | 2661 | ||
2662 | Vector3 pos = land.UserLocation; | 2662 | Vector3 pos = land.UserLocation; |
@@ -2664,8 +2664,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
2664 | { | 2664 | { |
2665 | pos = (land.AABBMax + land.AABBMin) * 0.5f; | 2665 | pos = (land.AABBMax + land.AABBMin) * 0.5f; |
2666 | } | 2666 | } |
2667 | reply.Data.GlobalX = info.RegionLocX * Constants.RegionSize + x; | 2667 | reply.Data.GlobalX = info.RegionLocX + x; |
2668 | reply.Data.GlobalY = info.RegionLocY * Constants.RegionSize + y; | 2668 | reply.Data.GlobalY = info.RegionLocY + y; |
2669 | reply.Data.GlobalZ = pos.Z; | 2669 | reply.Data.GlobalZ = pos.Z; |
2670 | reply.Data.SimName = Utils.StringToBytes(info.RegionName); | 2670 | reply.Data.SimName = Utils.StringToBytes(info.RegionName); |
2671 | reply.Data.SnapshotID = land.SnapshotID; | 2671 | reply.Data.SnapshotID = land.SnapshotID; |
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsIn/Land/LandServiceInConnectorModule.cs b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Land/LandServiceInConnectorModule.cs index bce160a..23251c9 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsIn/Land/LandServiceInConnectorModule.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Land/LandServiceInConnectorModule.cs | |||
@@ -121,7 +121,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsIn.Land | |||
121 | 121 | ||
122 | #region ILandService | 122 | #region ILandService |
123 | 123 | ||
124 | public LandData GetLandData(ulong regionHandle, uint x, uint y) | 124 | public LandData GetLandData(ulong regionHandle, uint x, uint y, out byte regionAccess) |
125 | { | 125 | { |
126 | m_log.DebugFormat("[LAND IN CONNECTOR]: GetLandData for {0}. Count = {1}", | 126 | m_log.DebugFormat("[LAND IN CONNECTOR]: GetLandData for {0}. Count = {1}", |
127 | regionHandle, m_Scenes.Count); | 127 | regionHandle, m_Scenes.Count); |
@@ -130,10 +130,12 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsIn.Land | |||
130 | if (s.RegionInfo.RegionHandle == regionHandle) | 130 | if (s.RegionInfo.RegionHandle == regionHandle) |
131 | { | 131 | { |
132 | m_log.Debug("[LAND IN CONNECTOR]: Found region to GetLandData from"); | 132 | m_log.Debug("[LAND IN CONNECTOR]: Found region to GetLandData from"); |
133 | regionAccess = s.RegionInfo.AccessLevel; | ||
133 | return s.GetLandData(x, y); | 134 | return s.GetLandData(x, y); |
134 | } | 135 | } |
135 | } | 136 | } |
136 | m_log.DebugFormat("[LAND IN CONNECTOR]: region handle {0} not found", regionHandle); | 137 | m_log.DebugFormat("[LAND IN CONNECTOR]: region handle {0} not found", regionHandle); |
138 | regionAccess = 42; | ||
137 | return null; | 139 | return null; |
138 | } | 140 | } |
139 | 141 | ||
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Land/LocalLandServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Land/LocalLandServiceConnector.cs index cb87f6f..e15f624 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Land/LocalLandServiceConnector.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Land/LocalLandServiceConnector.cs | |||
@@ -116,8 +116,9 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Land | |||
116 | 116 | ||
117 | #region ILandService | 117 | #region ILandService |
118 | 118 | ||
119 | public LandData GetLandData(ulong regionHandle, uint x, uint y) | 119 | public LandData GetLandData(ulong regionHandle, uint x, uint y, out byte regionAccess) |
120 | { | 120 | { |
121 | regionAccess = 2; | ||
121 | m_log.DebugFormat("[LAND CONNECTOR]: request for land data in {0} at {1}, {2}", | 122 | m_log.DebugFormat("[LAND CONNECTOR]: request for land data in {0} at {1}, {2}", |
122 | regionHandle, x, y); | 123 | regionHandle, x, y); |
123 | 124 | ||
@@ -126,6 +127,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Land | |||
126 | if (s.RegionInfo.RegionHandle == regionHandle) | 127 | if (s.RegionInfo.RegionHandle == regionHandle) |
127 | { | 128 | { |
128 | LandData land = s.GetLandData(x, y); | 129 | LandData land = s.GetLandData(x, y); |
130 | regionAccess = s.RegionInfo.AccessLevel; | ||
129 | return land; | 131 | return land; |
130 | } | 132 | } |
131 | } | 133 | } |
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Land/RemoteLandServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Land/RemoteLandServiceConnector.cs index 153c2a5..2386060 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Land/RemoteLandServiceConnector.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Land/RemoteLandServiceConnector.cs | |||
@@ -108,13 +108,13 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Land | |||
108 | 108 | ||
109 | #region ILandService | 109 | #region ILandService |
110 | 110 | ||
111 | public override LandData GetLandData(ulong regionHandle, uint x, uint y) | 111 | public override LandData GetLandData(ulong regionHandle, uint x, uint y, out byte regionAccess) |
112 | { | 112 | { |
113 | LandData land = m_LocalService.GetLandData(regionHandle, x, y); | 113 | LandData land = m_LocalService.GetLandData(regionHandle, x, y, out regionAccess); |
114 | if (land != null) | 114 | if (land != null) |
115 | return land; | 115 | return land; |
116 | 116 | ||
117 | return base.GetLandData(regionHandle, x, y); | 117 | return base.GetLandData(regionHandle, x, y, out regionAccess); |
118 | 118 | ||
119 | } | 119 | } |
120 | #endregion ILandService | 120 | #endregion ILandService |
diff --git a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs index 4ccd0f0..31aa017 100644 --- a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs +++ b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs | |||
@@ -51,6 +51,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
51 | public LandData LandData; | 51 | public LandData LandData; |
52 | public ulong RegionHandle; | 52 | public ulong RegionHandle; |
53 | public uint X, Y; | 53 | public uint X, Y; |
54 | public byte RegionAccess; | ||
54 | } | 55 | } |
55 | 56 | ||
56 | public class LandManagementModule : INonSharedRegionModule | 57 | public class LandManagementModule : INonSharedRegionModule |
@@ -1459,13 +1460,15 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
1459 | if (extLandData.RegionHandle == m_scene.RegionInfo.RegionHandle) | 1460 | if (extLandData.RegionHandle == m_scene.RegionInfo.RegionHandle) |
1460 | { | 1461 | { |
1461 | extLandData.LandData = this.GetLandObject(extLandData.X, extLandData.Y).LandData; | 1462 | extLandData.LandData = this.GetLandObject(extLandData.X, extLandData.Y).LandData; |
1463 | extLandData.RegionAccess = m_scene.RegionInfo.AccessLevel; | ||
1462 | } | 1464 | } |
1463 | else | 1465 | else |
1464 | { | 1466 | { |
1465 | ILandService landService = m_scene.RequestModuleInterface<ILandService>(); | 1467 | ILandService landService = m_scene.RequestModuleInterface<ILandService>(); |
1466 | extLandData.LandData = landService.GetLandData(extLandData.RegionHandle, | 1468 | extLandData.LandData = landService.GetLandData(extLandData.RegionHandle, |
1467 | extLandData.X, | 1469 | extLandData.X, |
1468 | extLandData.Y); | 1470 | extLandData.Y, |
1471 | out extLandData.RegionAccess); | ||
1469 | if (extLandData.LandData == null) | 1472 | if (extLandData.LandData == null) |
1470 | { | 1473 | { |
1471 | // we didn't find the region/land => don't cache | 1474 | // we didn't find the region/land => don't cache |
@@ -1497,6 +1500,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
1497 | r.RegionName = info.RegionName; | 1500 | r.RegionName = info.RegionName; |
1498 | r.RegionLocX = (uint)info.RegionLocX; | 1501 | r.RegionLocX = (uint)info.RegionLocX; |
1499 | r.RegionLocY = (uint)info.RegionLocY; | 1502 | r.RegionLocY = (uint)info.RegionLocY; |
1503 | r.RegionSettings.Maturity = (int)Util.ConvertAccessLevelToMaturity(data.RegionAccess); | ||
1500 | remoteClient.SendParcelInfo(r, data.LandData, parcelID, data.X, data.Y); | 1504 | remoteClient.SendParcelInfo(r, data.LandData, parcelID, data.X, data.Y); |
1501 | } | 1505 | } |
1502 | else | 1506 | else |
diff --git a/OpenSim/Server/Handlers/Land/LandHandlers.cs b/OpenSim/Server/Handlers/Land/LandHandlers.cs index a21f9de..561f285 100644 --- a/OpenSim/Server/Handlers/Land/LandHandlers.cs +++ b/OpenSim/Server/Handlers/Land/LandHandlers.cs | |||
@@ -66,7 +66,8 @@ namespace OpenSim.Server.Handlers.Land | |||
66 | uint y = Convert.ToUInt32(requestData["y"]); | 66 | uint y = Convert.ToUInt32(requestData["y"]); |
67 | m_log.DebugFormat("[LAND HANDLER]: Got request for land data at {0}, {1} for region {2}", x, y, regionHandle); | 67 | m_log.DebugFormat("[LAND HANDLER]: Got request for land data at {0}, {1} for region {2}", x, y, regionHandle); |
68 | 68 | ||
69 | LandData landData = m_LocalService.GetLandData(regionHandle, x, y); | 69 | byte regionAccess; |
70 | LandData landData = m_LocalService.GetLandData(regionHandle, x, y, out regionAccess); | ||
70 | Hashtable hash = new Hashtable(); | 71 | Hashtable hash = new Hashtable(); |
71 | if (landData != null) | 72 | if (landData != null) |
72 | { | 73 | { |
@@ -83,6 +84,7 @@ namespace OpenSim.Server.Handlers.Land | |||
83 | hash["SalePrice"] = landData.SalePrice.ToString(); | 84 | hash["SalePrice"] = landData.SalePrice.ToString(); |
84 | hash["SnapshotID"] = landData.SnapshotID.ToString(); | 85 | hash["SnapshotID"] = landData.SnapshotID.ToString(); |
85 | hash["UserLocation"] = landData.UserLocation.ToString(); | 86 | hash["UserLocation"] = landData.UserLocation.ToString(); |
87 | hash["RegionAccess"] = regionAccess.ToString(); | ||
86 | } | 88 | } |
87 | 89 | ||
88 | XmlRpcResponse response = new XmlRpcResponse(); | 90 | XmlRpcResponse response = new XmlRpcResponse(); |
diff --git a/OpenSim/Services/Connectors/Land/LandServiceConnector.cs b/OpenSim/Services/Connectors/Land/LandServiceConnector.cs index 06bc11c..8bae4aa 100644 --- a/OpenSim/Services/Connectors/Land/LandServiceConnector.cs +++ b/OpenSim/Services/Connectors/Land/LandServiceConnector.cs | |||
@@ -64,7 +64,7 @@ namespace OpenSim.Services.Connectors | |||
64 | m_GridService = gridServices; | 64 | m_GridService = gridServices; |
65 | } | 65 | } |
66 | 66 | ||
67 | public virtual LandData GetLandData(ulong regionHandle, uint x, uint y) | 67 | public virtual LandData GetLandData(ulong regionHandle, uint x, uint y, out byte regionAccess) |
68 | { | 68 | { |
69 | LandData landData = null; | 69 | LandData landData = null; |
70 | Hashtable hash = new Hashtable(); | 70 | Hashtable hash = new Hashtable(); |
@@ -74,6 +74,7 @@ namespace OpenSim.Services.Connectors | |||
74 | 74 | ||
75 | IList paramList = new ArrayList(); | 75 | IList paramList = new ArrayList(); |
76 | paramList.Add(hash); | 76 | paramList.Add(hash); |
77 | regionAccess = 42; // Default to adult. Better safe... | ||
77 | 78 | ||
78 | try | 79 | try |
79 | { | 80 | { |
@@ -107,6 +108,8 @@ namespace OpenSim.Services.Connectors | |||
107 | landData.SalePrice = Convert.ToInt32(hash["SalePrice"]); | 108 | landData.SalePrice = Convert.ToInt32(hash["SalePrice"]); |
108 | landData.SnapshotID = new UUID((string)hash["SnapshotID"]); | 109 | landData.SnapshotID = new UUID((string)hash["SnapshotID"]); |
109 | landData.UserLocation = Vector3.Parse((string)hash["UserLocation"]); | 110 | landData.UserLocation = Vector3.Parse((string)hash["UserLocation"]); |
111 | if (hash["RegionAccess"] != null) | ||
112 | regionAccess = (byte)Convert.ToInt32((string)hash["RegionAccess"]); | ||
110 | m_log.DebugFormat("[OGS1 GRID SERVICES] Got land data for parcel {0}", landData.Name); | 113 | m_log.DebugFormat("[OGS1 GRID SERVICES] Got land data for parcel {0}", landData.Name); |
111 | } | 114 | } |
112 | catch (Exception e) | 115 | catch (Exception e) |
diff --git a/OpenSim/Services/Interfaces/ILandService.cs b/OpenSim/Services/Interfaces/ILandService.cs index e2f1d1d..7a12aff 100644 --- a/OpenSim/Services/Interfaces/ILandService.cs +++ b/OpenSim/Services/Interfaces/ILandService.cs | |||
@@ -33,6 +33,6 @@ namespace OpenSim.Services.Interfaces | |||
33 | { | 33 | { |
34 | public interface ILandService | 34 | public interface ILandService |
35 | { | 35 | { |
36 | LandData GetLandData(ulong regionHandle, uint x, uint y); | 36 | LandData GetLandData(ulong regionHandle, uint x, uint y, out byte regionAccess); |
37 | } | 37 | } |
38 | } | 38 | } |