Correct display of landmark about info. Also correct region maturity rating
in LM info. Maturity is NOT the parcel's setting, that is only for the image and text. Parcel maturity is governed by region maturity.prebuild-update
parent
59af886680
commit
00fd2e0446
|
@ -1171,6 +1171,16 @@ namespace OpenSim.Framework
|
|||
|
||||
}
|
||||
|
||||
public static uint ConvertAccessLevelToMaturity(byte maturity)
|
||||
{
|
||||
if (maturity <= 13)
|
||||
return 0;
|
||||
else if (maturity <= 21)
|
||||
return 1;
|
||||
else
|
||||
return 2;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Produces an OSDMap from its string representation on a stream
|
||||
/// </summary>
|
||||
|
|
|
@ -2656,7 +2656,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
|||
|
||||
// Bit 0: Mature, bit 7: on sale, other bits: no idea
|
||||
reply.Data.Flags = (byte)(
|
||||
((land.Flags & (uint)ParcelFlags.MaturePublish) != 0 ? (1 << 0) : 0) +
|
||||
(info.AccessLevel > 13 ? (1 << 0) : 0) +
|
||||
((land.Flags & (uint)ParcelFlags.ForSale) != 0 ? (1 << 7) : 0));
|
||||
|
||||
Vector3 pos = land.UserLocation;
|
||||
|
@ -2664,8 +2664,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
|||
{
|
||||
pos = (land.AABBMax + land.AABBMin) * 0.5f;
|
||||
}
|
||||
reply.Data.GlobalX = info.RegionLocX * Constants.RegionSize + x;
|
||||
reply.Data.GlobalY = info.RegionLocY * Constants.RegionSize + y;
|
||||
reply.Data.GlobalX = info.RegionLocX + x;
|
||||
reply.Data.GlobalY = info.RegionLocY + y;
|
||||
reply.Data.GlobalZ = pos.Z;
|
||||
reply.Data.SimName = Utils.StringToBytes(info.RegionName);
|
||||
reply.Data.SnapshotID = land.SnapshotID;
|
||||
|
|
|
@ -121,7 +121,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsIn.Land
|
|||
|
||||
#region ILandService
|
||||
|
||||
public LandData GetLandData(ulong regionHandle, uint x, uint y)
|
||||
public LandData GetLandData(ulong regionHandle, uint x, uint y, out byte regionAccess)
|
||||
{
|
||||
m_log.DebugFormat("[LAND IN CONNECTOR]: GetLandData for {0}. Count = {1}",
|
||||
regionHandle, m_Scenes.Count);
|
||||
|
@ -130,10 +130,12 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsIn.Land
|
|||
if (s.RegionInfo.RegionHandle == regionHandle)
|
||||
{
|
||||
m_log.Debug("[LAND IN CONNECTOR]: Found region to GetLandData from");
|
||||
regionAccess = s.RegionInfo.AccessLevel;
|
||||
return s.GetLandData(x, y);
|
||||
}
|
||||
}
|
||||
m_log.DebugFormat("[LAND IN CONNECTOR]: region handle {0} not found", regionHandle);
|
||||
regionAccess = 42;
|
||||
return null;
|
||||
}
|
||||
|
||||
|
|
|
@ -116,8 +116,9 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Land
|
|||
|
||||
#region ILandService
|
||||
|
||||
public LandData GetLandData(ulong regionHandle, uint x, uint y)
|
||||
public LandData GetLandData(ulong regionHandle, uint x, uint y, out byte regionAccess)
|
||||
{
|
||||
regionAccess = 2;
|
||||
m_log.DebugFormat("[LAND CONNECTOR]: request for land data in {0} at {1}, {2}",
|
||||
regionHandle, x, y);
|
||||
|
||||
|
@ -126,6 +127,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Land
|
|||
if (s.RegionInfo.RegionHandle == regionHandle)
|
||||
{
|
||||
LandData land = s.GetLandData(x, y);
|
||||
regionAccess = s.RegionInfo.AccessLevel;
|
||||
return land;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -108,13 +108,13 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Land
|
|||
|
||||
#region ILandService
|
||||
|
||||
public override LandData GetLandData(ulong regionHandle, uint x, uint y)
|
||||
public override LandData GetLandData(ulong regionHandle, uint x, uint y, out byte regionAccess)
|
||||
{
|
||||
LandData land = m_LocalService.GetLandData(regionHandle, x, y);
|
||||
LandData land = m_LocalService.GetLandData(regionHandle, x, y, out regionAccess);
|
||||
if (land != null)
|
||||
return land;
|
||||
|
||||
return base.GetLandData(regionHandle, x, y);
|
||||
return base.GetLandData(regionHandle, x, y, out regionAccess);
|
||||
|
||||
}
|
||||
#endregion ILandService
|
||||
|
|
|
@ -51,6 +51,7 @@ namespace OpenSim.Region.CoreModules.World.Land
|
|||
public LandData LandData;
|
||||
public ulong RegionHandle;
|
||||
public uint X, Y;
|
||||
public byte RegionAccess;
|
||||
}
|
||||
|
||||
public class LandManagementModule : INonSharedRegionModule
|
||||
|
@ -1459,13 +1460,15 @@ namespace OpenSim.Region.CoreModules.World.Land
|
|||
if (extLandData.RegionHandle == m_scene.RegionInfo.RegionHandle)
|
||||
{
|
||||
extLandData.LandData = this.GetLandObject(extLandData.X, extLandData.Y).LandData;
|
||||
extLandData.RegionAccess = m_scene.RegionInfo.AccessLevel;
|
||||
}
|
||||
else
|
||||
{
|
||||
ILandService landService = m_scene.RequestModuleInterface<ILandService>();
|
||||
extLandData.LandData = landService.GetLandData(extLandData.RegionHandle,
|
||||
extLandData.X,
|
||||
extLandData.Y);
|
||||
extLandData.Y,
|
||||
out extLandData.RegionAccess);
|
||||
if (extLandData.LandData == null)
|
||||
{
|
||||
// we didn't find the region/land => don't cache
|
||||
|
@ -1497,6 +1500,7 @@ namespace OpenSim.Region.CoreModules.World.Land
|
|||
r.RegionName = info.RegionName;
|
||||
r.RegionLocX = (uint)info.RegionLocX;
|
||||
r.RegionLocY = (uint)info.RegionLocY;
|
||||
r.RegionSettings.Maturity = (int)Util.ConvertAccessLevelToMaturity(data.RegionAccess);
|
||||
remoteClient.SendParcelInfo(r, data.LandData, parcelID, data.X, data.Y);
|
||||
}
|
||||
else
|
||||
|
|
|
@ -66,7 +66,8 @@ namespace OpenSim.Server.Handlers.Land
|
|||
uint y = Convert.ToUInt32(requestData["y"]);
|
||||
m_log.DebugFormat("[LAND HANDLER]: Got request for land data at {0}, {1} for region {2}", x, y, regionHandle);
|
||||
|
||||
LandData landData = m_LocalService.GetLandData(regionHandle, x, y);
|
||||
byte regionAccess;
|
||||
LandData landData = m_LocalService.GetLandData(regionHandle, x, y, out regionAccess);
|
||||
Hashtable hash = new Hashtable();
|
||||
if (landData != null)
|
||||
{
|
||||
|
@ -83,6 +84,7 @@ namespace OpenSim.Server.Handlers.Land
|
|||
hash["SalePrice"] = landData.SalePrice.ToString();
|
||||
hash["SnapshotID"] = landData.SnapshotID.ToString();
|
||||
hash["UserLocation"] = landData.UserLocation.ToString();
|
||||
hash["RegionAccess"] = regionAccess.ToString();
|
||||
}
|
||||
|
||||
XmlRpcResponse response = new XmlRpcResponse();
|
||||
|
|
|
@ -64,7 +64,7 @@ namespace OpenSim.Services.Connectors
|
|||
m_GridService = gridServices;
|
||||
}
|
||||
|
||||
public virtual LandData GetLandData(ulong regionHandle, uint x, uint y)
|
||||
public virtual LandData GetLandData(ulong regionHandle, uint x, uint y, out byte regionAccess)
|
||||
{
|
||||
LandData landData = null;
|
||||
Hashtable hash = new Hashtable();
|
||||
|
@ -74,6 +74,7 @@ namespace OpenSim.Services.Connectors
|
|||
|
||||
IList paramList = new ArrayList();
|
||||
paramList.Add(hash);
|
||||
regionAccess = 42; // Default to adult. Better safe...
|
||||
|
||||
try
|
||||
{
|
||||
|
@ -107,6 +108,8 @@ namespace OpenSim.Services.Connectors
|
|||
landData.SalePrice = Convert.ToInt32(hash["SalePrice"]);
|
||||
landData.SnapshotID = new UUID((string)hash["SnapshotID"]);
|
||||
landData.UserLocation = Vector3.Parse((string)hash["UserLocation"]);
|
||||
if (hash["RegionAccess"] != null)
|
||||
regionAccess = (byte)Convert.ToInt32((string)hash["RegionAccess"]);
|
||||
m_log.DebugFormat("[OGS1 GRID SERVICES] Got land data for parcel {0}", landData.Name);
|
||||
}
|
||||
catch (Exception e)
|
||||
|
|
|
@ -33,6 +33,6 @@ namespace OpenSim.Services.Interfaces
|
|||
{
|
||||
public interface ILandService
|
||||
{
|
||||
LandData GetLandData(ulong regionHandle, uint x, uint y);
|
||||
LandData GetLandData(ulong regionHandle, uint x, uint y, out byte regionAccess);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue