From bd16dddce5a23e67d9ead896f770a50168e46ef4 Mon Sep 17 00:00:00 2001 From: mingchen Date: Wed, 19 Dec 2007 04:28:54 +0000 Subject: [PATCH] *Added Ban Lines around parcels for banned avatars, but there is no actual blocking done yet. *Made the OnSignificantClientMovement distance from .02 to .45 to make it easier on the server. --- OpenSim/Framework/LandData.cs | 2 +- .../Region/Environment/LandManagement/Land.cs | 12 ++++++++++++ .../Environment/LandManagement/LandManager.cs | 18 ++++++++++++++++++ .../Region/Environment/Scenes/ScenePresence.cs | 2 +- 4 files changed, 32 insertions(+), 2 deletions(-) diff --git a/OpenSim/Framework/LandData.cs b/OpenSim/Framework/LandData.cs index e35aa0ea1b..1a94cfd8ca 100644 --- a/OpenSim/Framework/LandData.cs +++ b/OpenSim/Framework/LandData.cs @@ -53,7 +53,7 @@ namespace OpenSim.Framework public int simwideArea = 0; public int salePrice = 0; //Unemeplemented. Parcels price. public Parcel.ParcelStatus landStatus = Parcel.ParcelStatus.Leased; - + public uint landFlags = (uint) Parcel.ParcelFlags.AllowFly | (uint) Parcel.ParcelFlags.AllowLandmark | (uint) Parcel.ParcelFlags.AllowAllObjectEntry | (uint) Parcel.ParcelFlags.AllowDeedToGroup | (uint) Parcel.ParcelFlags.AllowTerraform | diff --git a/OpenSim/Region/Environment/LandManagement/Land.cs b/OpenSim/Region/Environment/LandManagement/Land.cs index 3f60b1b7fb..4cfb0c169d 100644 --- a/OpenSim/Region/Environment/LandManagement/Land.cs +++ b/OpenSim/Region/Environment/LandManagement/Land.cs @@ -227,6 +227,18 @@ namespace OpenSim.Region.Environment.LandManagement } } + public bool isBannedFromLand(ParcelManager.ParcelAccessEntry entry, IClientAPI remote_client) + { + if ((this.landData.landFlags & (uint)Parcel.ParcelFlags.UseBanList) > 0) + { + if (this.landData.parcelAccessList.Contains(entry)) + { + //They are banned, so lets send them a notice about this parcel + return true; + } + } + return false; + } public void sendLandUpdateToClient(IClientAPI remote_client) { sendLandProperties(0, false, 0, remote_client); diff --git a/OpenSim/Region/Environment/LandManagement/LandManager.cs b/OpenSim/Region/Environment/LandManagement/LandManager.cs index f3ab502f6c..59bf7f8838 100644 --- a/OpenSim/Region/Environment/LandManagement/LandManager.cs +++ b/OpenSim/Region/Environment/LandManagement/LandManager.cs @@ -590,6 +590,22 @@ namespace OpenSim.Region.Environment.LandManagement addLandObject(fullSimParcel); } + public void sendOutBannedNotices(IClientAPI avatar) + { + ParcelManager.ParcelAccessEntry entry = new ParcelManager.ParcelAccessEntry(); + entry.AgentID = avatar.AgentId; + entry.Flags = ParcelManager.AccessList.Ban; + entry.Time = new DateTime(); + + foreach (Land checkBan in landList.Values) + { + if (checkBan.isBannedFromLand(entry, avatar)) + { + checkBan.sendLandProperties(-30000, false, (int)ParcelManager.ParcelResult.Single, avatar); + } + } + } + public void sendLandUpdate(ScenePresence avatar) { Land over = getLandObject((int)Math.Min(255, Math.Max(0, Math.Round(avatar.AbsolutePosition.X))), @@ -599,6 +615,7 @@ namespace OpenSim.Region.Environment.LandManagement { over.sendLandUpdateToClient(avatar.ControllingClient); } + } public void handleSignificantClientMovement(IClientAPI remote_client) @@ -608,6 +625,7 @@ namespace OpenSim.Region.Environment.LandManagement if (clientAvatar != null) { sendLandUpdate(clientAvatar); + sendOutBannedNotices(remote_client); } } diff --git a/OpenSim/Region/Environment/Scenes/ScenePresence.cs b/OpenSim/Region/Environment/Scenes/ScenePresence.cs index 86ff65ec3b..91b6463b79 100644 --- a/OpenSim/Region/Environment/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Environment/Scenes/ScenePresence.cs @@ -1181,7 +1181,7 @@ namespace OpenSim.Region.Environment.Scenes /// protected void CheckForSignificantMovement() { - if (Util.GetDistanceTo(AbsolutePosition, posLastSignificantMove) > 0.02) + if (Util.GetDistanceTo(AbsolutePosition, posLastSignificantMove) > 0.5) { posLastSignificantMove = AbsolutePosition; if (OnSignificantClientMovement != null)