mantis8342: make max ban height above ground configurable per regions instance with ini file option BanLineSafeHeight
parent
8c1c9129aa
commit
e15fca60d1
|
@ -33,6 +33,8 @@ namespace OpenSim.Region.Framework.Interfaces
|
||||||
{
|
{
|
||||||
public interface ILandChannel
|
public interface ILandChannel
|
||||||
{
|
{
|
||||||
|
|
||||||
|
float BanLineSafeHeight {get;}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Get all parcels
|
/// Get all parcels
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -97,6 +99,5 @@ namespace OpenSim.Region.Framework.Interfaces
|
||||||
void Join(int start_x, int start_y, int end_x, int end_y, UUID attempting_user_id);
|
void Join(int start_x, int start_y, int end_x, int end_y, UUID attempting_user_id);
|
||||||
void Subdivide(int start_x, int start_y, int end_x, int end_y, UUID attempting_user_id);
|
void Subdivide(int start_x, int start_y, int end_x, int end_y, UUID attempting_user_id);
|
||||||
void sendClientInitialLandInfo(IClientAPI remoteClient);
|
void sendClientInitialLandInfo(IClientAPI remoteClient);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,11 +37,9 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
{
|
{
|
||||||
#region Constants
|
#region Constants
|
||||||
|
|
||||||
public const float BAN_LINE_SAFETY_HEIGHT = 100;
|
|
||||||
//Land types set with flags in ParcelOverlay.
|
//Land types set with flags in ParcelOverlay.
|
||||||
//Only one of these can be used.
|
//Only one of these can be used.
|
||||||
|
|
||||||
|
|
||||||
//RequestResults (I think these are right, they seem to work):
|
//RequestResults (I think these are right, they seem to work):
|
||||||
public const int LAND_RESULT_MULTIPLE = 1; // The request they made contained more than a single peice of land
|
public const int LAND_RESULT_MULTIPLE = 1; // The request they made contained more than a single peice of land
|
||||||
public const int LAND_RESULT_SINGLE = 0; // The request they made contained only a single piece of land
|
public const int LAND_RESULT_SINGLE = 0; // The request they made contained only a single piece of land
|
||||||
|
@ -77,10 +75,28 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
private readonly Scene m_scene;
|
private readonly Scene m_scene;
|
||||||
private readonly LandManagementModule m_landManagementModule;
|
private readonly LandManagementModule m_landManagementModule;
|
||||||
|
|
||||||
|
private float m_BanLineSafeHeight = 100.0f;
|
||||||
|
public float BanLineSafeHeight
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return m_BanLineSafeHeight;
|
||||||
|
}
|
||||||
|
private set
|
||||||
|
{
|
||||||
|
if (value >= 20f && value <= 5000f)
|
||||||
|
m_BanLineSafeHeight = value;
|
||||||
|
else
|
||||||
|
m_BanLineSafeHeight = 100.0f;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public LandChannel(Scene scene, LandManagementModule landManagementMod)
|
public LandChannel(Scene scene, LandManagementModule landManagementMod)
|
||||||
{
|
{
|
||||||
m_scene = scene;
|
m_scene = scene;
|
||||||
m_landManagementModule = landManagementMod;
|
m_landManagementModule = landManagementMod;
|
||||||
|
if(landManagementMod != null)
|
||||||
|
m_BanLineSafeHeight = landManagementMod.BanLineSafeHeight;
|
||||||
}
|
}
|
||||||
|
|
||||||
#region ILandChannel Members
|
#region ILandChannel Members
|
||||||
|
|
|
@ -116,6 +116,19 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
// "View distance" for sending parcel layer info if asked for from a view point in the region
|
// "View distance" for sending parcel layer info if asked for from a view point in the region
|
||||||
private int parcelLayerViewDistance { get; set; }
|
private int parcelLayerViewDistance { get; set; }
|
||||||
|
|
||||||
|
private float m_BanLineSafeHeight = 100.0f;
|
||||||
|
public float BanLineSafeHeight
|
||||||
|
{
|
||||||
|
get { return m_BanLineSafeHeight; }
|
||||||
|
private set
|
||||||
|
{
|
||||||
|
if (value > 20f && value <= 5000f)
|
||||||
|
m_BanLineSafeHeight = value;
|
||||||
|
else
|
||||||
|
m_BanLineSafeHeight = 100.0f;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#region INonSharedRegionModule Members
|
#region INonSharedRegionModule Members
|
||||||
|
|
||||||
public Type ReplaceableInterface
|
public Type ReplaceableInterface
|
||||||
|
@ -137,6 +150,7 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
bool disablebans = landManagementConfig.GetBoolean("DisableParcelBans", !m_allowedForcefulBans);
|
bool disablebans = landManagementConfig.GetBoolean("DisableParcelBans", !m_allowedForcefulBans);
|
||||||
m_allowedForcefulBans = !disablebans;
|
m_allowedForcefulBans = !disablebans;
|
||||||
m_showBansLines = landManagementConfig.GetBoolean("ShowParcelBansLines", m_showBansLines);
|
m_showBansLines = landManagementConfig.GetBoolean("ShowParcelBansLines", m_showBansLines);
|
||||||
|
m_BanLineSafeHeight = landManagementConfig.GetFloat("BanLineSafeHeight", m_BanLineSafeHeight);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -341,7 +355,7 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
public bool EnforceBans(ILandObject land, ScenePresence avatar)
|
public bool EnforceBans(ILandObject land, ScenePresence avatar)
|
||||||
{
|
{
|
||||||
Vector3 agentpos = avatar.AbsolutePosition;
|
Vector3 agentpos = avatar.AbsolutePosition;
|
||||||
float h = m_scene.GetGroundHeight(agentpos.X, agentpos.Y) + LandChannel.BAN_LINE_SAFETY_HEIGHT;
|
float h = m_scene.GetGroundHeight(agentpos.X, agentpos.Y) + m_scene.LandChannel.BanLineSafeHeight;
|
||||||
float zdif = avatar.AbsolutePosition.Z - h;
|
float zdif = avatar.AbsolutePosition.Z - h;
|
||||||
if (zdif > 0 )
|
if (zdif > 0 )
|
||||||
{
|
{
|
||||||
|
|
|
@ -633,7 +633,7 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
|
|
||||||
public bool CanBeOnThisLand(UUID avatar, float posHeight)
|
public bool CanBeOnThisLand(UUID avatar, float posHeight)
|
||||||
{
|
{
|
||||||
if (posHeight < LandChannel.BAN_LINE_SAFETY_HEIGHT && IsBannedFromLand(avatar))
|
if (posHeight < m_scene.LandChannel.BanLineSafeHeight && IsBannedFromLand(avatar))
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,6 +42,8 @@ namespace OpenSim.Tests.Common
|
||||||
private Scene m_scene;
|
private Scene m_scene;
|
||||||
private List<ILandObject> m_parcels;
|
private List<ILandObject> m_parcels;
|
||||||
|
|
||||||
|
public float BanLineSafeHeight { get { return 100f; } }
|
||||||
|
|
||||||
public TestLandChannel(Scene scene)
|
public TestLandChannel(Scene scene)
|
||||||
{
|
{
|
||||||
m_scene = scene;
|
m_scene = scene;
|
||||||
|
|
Loading…
Reference in New Issue