From 8f0b03597b0bc8ea6873af9a55495407fae1ec56 Mon Sep 17 00:00:00 2001 From: lbsa71 Date: Wed, 19 Sep 2007 00:30:55 +0000 Subject: * Modernized ScriptManager to new interface-based module calls. * 'remove redundant this qualifier' ftw --- OpenSim/Region/Environment/LandManagement/Land.cs | 149 ++++++++++++--------- .../Environment/LandManagement/LandManager.cs | 122 +++++++++-------- 2 files changed, 151 insertions(+), 120 deletions(-) (limited to 'OpenSim/Region/Environment/LandManagement') diff --git a/OpenSim/Region/Environment/LandManagement/Land.cs b/OpenSim/Region/Environment/LandManagement/Land.cs index a1d8885..4d36650 100644 --- a/OpenSim/Region/Environment/LandManagement/Land.cs +++ b/OpenSim/Region/Environment/LandManagement/Land.cs @@ -8,37 +8,40 @@ using OpenSim.Region.Environment.Scenes; namespace OpenSim.Region.Environment.LandManagement { + #region Parcel Class + /// /// Keeps track of a specific piece of land's information /// public class Land { #region Member Variables + public LandData landData = new LandData(); public List primsOverMe = new List(); public Scene m_scene; - private bool[,] landBitmap = new bool[64, 64]; + private bool[,] landBitmap = new bool[64,64]; #endregion - #region Constructors + public Land(LLUUID owner_id, bool is_group_owned, Scene scene) { m_scene = scene; landData.ownerID = owner_id; landData.isGroupOwned = is_group_owned; - } - #endregion + #endregion #region Member Functions #region General Functions + /// /// Checks to see if this land object contains a point /// @@ -49,7 +52,7 @@ namespace OpenSim.Region.Environment.LandManagement { if (x >= 0 && y >= 0 && x <= 256 && x <= 256) { - return (landBitmap[x / 4, y / 4] == true); + return (landBitmap[x/4, y/4] == true); } else { @@ -59,10 +62,10 @@ namespace OpenSim.Region.Environment.LandManagement public Land Copy() { - Land newLand = new Land(this.landData.ownerID, this.landData.isGroupOwned, m_scene); + Land newLand = new Land(landData.ownerID, landData.isGroupOwned, m_scene); //Place all new variables here! - newLand.landBitmap = (bool[,])(this.landBitmap.Clone()); + newLand.landBitmap = (bool[,]) (landBitmap.Clone()); newLand.landData = landData.Copy(); return newLand; @@ -70,17 +73,17 @@ namespace OpenSim.Region.Environment.LandManagement #endregion - #region Packet Request Handling + /// /// Sends land properties as requested /// /// ID sent by client for them to keep track of /// Bool sent by client for them to use /// Object representing the client - public void sendLandProperties(int sequence_id, bool snap_selection, int request_result, IClientAPI remote_client) + public void sendLandProperties(int sequence_id, bool snap_selection, int request_result, + IClientAPI remote_client) { - ParcelPropertiesPacket updatePacket = new ParcelPropertiesPacket(); updatePacket.ParcelData.AABBMax = landData.AABBMax; updatePacket.ParcelData.AABBMin = landData.AABBMin; @@ -91,17 +94,20 @@ namespace OpenSim.Region.Environment.LandManagement updatePacket.ParcelData.Bitmap = landData.landBitmapByteArray; updatePacket.ParcelData.Desc = Helpers.StringToField(landData.landDesc); - updatePacket.ParcelData.Category = (byte)landData.category; + updatePacket.ParcelData.Category = (byte) landData.category; updatePacket.ParcelData.ClaimDate = landData.claimDate; updatePacket.ParcelData.ClaimPrice = landData.claimPrice; updatePacket.ParcelData.GroupID = landData.groupID; updatePacket.ParcelData.GroupPrims = landData.groupPrims; updatePacket.ParcelData.IsGroupOwned = landData.isGroupOwned; - updatePacket.ParcelData.LandingType = (byte)landData.landingType; + updatePacket.ParcelData.LandingType = (byte) landData.landingType; updatePacket.ParcelData.LocalID = landData.localID; if (landData.area > 0) { - updatePacket.ParcelData.MaxPrims = Convert.ToInt32(Math.Round((Convert.ToDecimal(landData.area) / Convert.ToDecimal(65536)) * 15000 * Convert.ToDecimal(m_scene.RegionInfo.estateSettings.objectBonusFactor))); + updatePacket.ParcelData.MaxPrims = + Convert.ToInt32( + Math.Round((Convert.ToDecimal(landData.area)/Convert.ToDecimal(65536))*15000* + Convert.ToDecimal(m_scene.RegionInfo.estateSettings.objectBonusFactor))); } else { @@ -122,22 +128,29 @@ namespace OpenSim.Region.Environment.LandManagement updatePacket.ParcelData.PassHours = landData.passHours; updatePacket.ParcelData.PassPrice = landData.passPrice; updatePacket.ParcelData.PublicCount = 0; //unemplemented - - uint regionFlags = (uint)m_scene.RegionInfo.estateSettings.regionFlags; - updatePacket.ParcelData.RegionDenyAnonymous = ((regionFlags & (uint)Simulator.RegionFlags.DenyAnonymous) > 0); - updatePacket.ParcelData.RegionDenyIdentified = ((regionFlags & (uint)Simulator.RegionFlags.DenyIdentified) > 0); - updatePacket.ParcelData.RegionDenyTransacted = ((regionFlags & (uint)Simulator.RegionFlags.DenyTransacted) > 0); - updatePacket.ParcelData.RegionPushOverride = ((regionFlags & (uint)Simulator.RegionFlags.RestrictPushObject) > 0); - + + uint regionFlags = (uint) m_scene.RegionInfo.estateSettings.regionFlags; + updatePacket.ParcelData.RegionDenyAnonymous = ((regionFlags & (uint) Simulator.RegionFlags.DenyAnonymous) > + 0); + updatePacket.ParcelData.RegionDenyIdentified = ((regionFlags & (uint) Simulator.RegionFlags.DenyIdentified) > + 0); + updatePacket.ParcelData.RegionDenyTransacted = ((regionFlags & (uint) Simulator.RegionFlags.DenyTransacted) > + 0); + updatePacket.ParcelData.RegionPushOverride = ((regionFlags & (uint) Simulator.RegionFlags.RestrictPushObject) > + 0); + updatePacket.ParcelData.RentPrice = 0; updatePacket.ParcelData.RequestResult = request_result; updatePacket.ParcelData.SalePrice = landData.salePrice; updatePacket.ParcelData.SelectedPrims = landData.selectedPrims; - updatePacket.ParcelData.SelfCount = 0;//unemplemented + updatePacket.ParcelData.SelfCount = 0; //unemplemented updatePacket.ParcelData.SequenceID = sequence_id; if (landData.simwideArea > 0) { - updatePacket.ParcelData.SimWideMaxPrims = Convert.ToInt32(Math.Round((Convert.ToDecimal(landData.simwideArea) / Convert.ToDecimal(65536)) * 15000 * Convert.ToDecimal(m_scene.RegionInfo.estateSettings.objectBonusFactor))); + updatePacket.ParcelData.SimWideMaxPrims = + Convert.ToInt32( + Math.Round((Convert.ToDecimal(landData.simwideArea)/Convert.ToDecimal(65536))*15000* + Convert.ToDecimal(m_scene.RegionInfo.estateSettings.objectBonusFactor))); } else { @@ -146,11 +159,12 @@ namespace OpenSim.Region.Environment.LandManagement updatePacket.ParcelData.SimWideTotalPrims = landData.simwidePrims; updatePacket.ParcelData.SnapSelection = snap_selection; updatePacket.ParcelData.SnapshotID = landData.snapshotID; - updatePacket.ParcelData.Status = (byte)landData.landStatus; - updatePacket.ParcelData.TotalPrims = landData.ownerPrims + landData.groupPrims + landData.otherPrims + landData.selectedPrims; + updatePacket.ParcelData.Status = (byte) landData.landStatus; + updatePacket.ParcelData.TotalPrims = landData.ownerPrims + landData.groupPrims + landData.otherPrims + + landData.selectedPrims; updatePacket.ParcelData.UserLocation = landData.userLocation; updatePacket.ParcelData.UserLookAt = landData.userLookAt; - remote_client.OutPacket((Packet)updatePacket); + remote_client.OutPacket((Packet) updatePacket); } public void updateLandProperties(ParcelPropertiesUpdatePacket packet, IClientAPI remote_client) @@ -159,7 +173,7 @@ namespace OpenSim.Region.Environment.LandManagement { //Needs later group support landData.authBuyerID = packet.ParcelData.AuthBuyerID; - landData.category = (libsecondlife.Parcel.ParcelCategory)packet.ParcelData.Category; + landData.category = (Parcel.ParcelCategory) packet.ParcelData.Category; landData.landDesc = Helpers.FieldToUTF8String(packet.ParcelData.Desc); landData.groupID = packet.ParcelData.GroupID; landData.landingType = packet.ParcelData.LandingType; @@ -176,8 +190,6 @@ namespace OpenSim.Region.Environment.LandManagement landData.userLocation = packet.ParcelData.UserLocation; landData.userLookAt = packet.ParcelData.UserLookAt; sendLandUpdateToAvatarsOverMe(); - - } } @@ -186,17 +198,20 @@ namespace OpenSim.Region.Environment.LandManagement List avatars = m_scene.RequestAvatarList(); for (int i = 0; i < avatars.Count; i++) { - Land over = m_scene.LandManager.getLandObject((int)Math.Round(avatars[i].AbsolutePosition.X), (int)Math.Round(avatars[i].AbsolutePosition.Y)); - if (over.landData.localID == this.landData.localID) + Land over = + m_scene.LandManager.getLandObject((int) Math.Round(avatars[i].AbsolutePosition.X), + (int) Math.Round(avatars[i].AbsolutePosition.Y)); + if (over.landData.localID == landData.localID) { sendLandProperties(0, false, 0, avatars[i].ControllingClient); } } } - #endregion + #endregion #region Update Functions + /// /// Updates the AABBMin and AABBMax values after area/shape modification of the land object /// @@ -222,8 +237,12 @@ namespace OpenSim.Region.Environment.LandManagement } } } - landData.AABBMin = new LLVector3((float)(min_x * 4), (float)(min_y * 4), (float)m_scene.Terrain.GetHeight((min_x * 4), (min_y * 4))); - landData.AABBMax = new LLVector3((float)(max_x * 4), (float)(max_y * 4), (float)m_scene.Terrain.GetHeight((max_x * 4), (max_y * 4))); + landData.AABBMin = + new LLVector3((float) (min_x*4), (float) (min_y*4), + (float) m_scene.Terrain.GetHeight((min_x*4), (min_y*4))); + landData.AABBMax = + new LLVector3((float) (max_x*4), (float) (max_y*4), + (float) m_scene.Terrain.GetHeight((max_x*4), (max_y*4))); landData.area = tempArea; } @@ -237,18 +256,19 @@ namespace OpenSim.Region.Environment.LandManagement /// public void forceUpdateLandInfo() { - this.updateAABBAndAreaValues(); - this.updateLandBitmapByteArray(); + updateAABBAndAreaValues(); + updateLandBitmapByteArray(); } public void setLandBitmapFromByteArray() { landBitmap = convertBytesToLandBitmap(); } - #endregion + #endregion #region Land Bitmap Functions + /// /// Sets the land's bitmap manually /// @@ -265,9 +285,9 @@ namespace OpenSim.Region.Environment.LandManagement //Valid: Lets set it landBitmap = bitmap; forceUpdateLandInfo(); - } } + /// /// Gets the land's bitmap manually /// @@ -276,6 +296,7 @@ namespace OpenSim.Region.Environment.LandManagement { return landBitmap; } + /// /// Converts the land bitmap to a packet friendly byte array /// @@ -290,11 +311,11 @@ namespace OpenSim.Region.Environment.LandManagement { for (x = 0; x < 64; x++) { - tempByte = Convert.ToByte(tempByte | Convert.ToByte(landBitmap[x, y]) << (i++ % 8)); - if (i % 8 == 0) + tempByte = Convert.ToByte(tempByte | Convert.ToByte(landBitmap[x, y]) << (i++%8)); + if (i%8 == 0) { tempConvertArr[byteNum] = tempByte; - tempByte = (byte)0; + tempByte = (byte) 0; i = 0; byteNum++; } @@ -305,7 +326,7 @@ namespace OpenSim.Region.Environment.LandManagement private bool[,] convertBytesToLandBitmap() { - bool[,] tempConvertMap = new bool[64, 64]; + bool[,] tempConvertMap = new bool[64,64]; tempConvertMap.Initialize(); byte tempByte = 0; int x = 0, y = 0, i = 0, bitNum = 0; @@ -314,7 +335,7 @@ namespace OpenSim.Region.Environment.LandManagement tempByte = landData.landBitmapByteArray[i]; for (bitNum = 0; bitNum < 8; bitNum++) { - bool bit = Convert.ToBoolean(Convert.ToByte(tempByte >> bitNum) & (byte)1); + bool bit = Convert.ToBoolean(Convert.ToByte(tempByte >> bitNum) & (byte) 1); tempConvertMap[x, y] = bit; x++; if (x > 63) @@ -322,12 +343,11 @@ namespace OpenSim.Region.Environment.LandManagement x = 0; y++; } - } - } return tempConvertMap; } + /// /// Full sim land object creation /// @@ -347,8 +367,7 @@ namespace OpenSim.Region.Environment.LandManagement /// public static bool[,] getSquareLandBitmap(int start_x, int start_y, int end_x, int end_y) { - - bool[,] tempBitmap = new bool[64, 64]; + bool[,] tempBitmap = new bool[64,64]; tempBitmap.Initialize(); tempBitmap = modifyLandBitmapSquare(tempBitmap, start_x, start_y, end_x, end_y, true); @@ -365,7 +384,8 @@ namespace OpenSim.Region.Environment.LandManagement /// /// /// - public static bool[,] modifyLandBitmapSquare(bool[,] land_bitmap, int start_x, int start_y, int end_x, int end_y, bool set_value) + public static bool[,] modifyLandBitmapSquare(bool[,] land_bitmap, int start_x, int start_y, int end_x, int end_y, + bool set_value) { if (land_bitmap.GetLength(0) != 64 || land_bitmap.GetLength(1) != 64 || land_bitmap.Rank != 2) { @@ -378,8 +398,8 @@ namespace OpenSim.Region.Environment.LandManagement { for (x = 0; x < 64; x++) { - if (x >= start_x / 4 && x < end_x / 4 - && y >= start_y / 4 && y < end_y / 4) + if (x >= start_x/4 && x < end_x/4 + && y >= start_y/4 && y < end_y/4) { land_bitmap[x, y] = set_value; } @@ -387,6 +407,7 @@ namespace OpenSim.Region.Environment.LandManagement } return land_bitmap; } + /// /// Join the true values of 2 bitmaps together /// @@ -404,7 +425,6 @@ namespace OpenSim.Region.Environment.LandManagement { //Throw an exception - The bitmap is not 64x64 throw new Exception("Error: Invalid Parcel Bitmap - Bitmap_add in mergeLandBitmaps"); - } int x, y; @@ -420,9 +440,11 @@ namespace OpenSim.Region.Environment.LandManagement } return bitmap_base; } + #endregion #region Object Select and Object Owner Listing + public void sendForceObjectSelect(int local_id, int request_type, IClientAPI remote_client) { List resultLocalIDs = new List(); @@ -430,15 +452,16 @@ namespace OpenSim.Region.Environment.LandManagement { if (obj.LocalId > 0) { - if (request_type == LandManager.LAND_SELECT_OBJECTS_OWNER && obj.OwnerID == this.landData.ownerID) + if (request_type == LandManager.LAND_SELECT_OBJECTS_OWNER && obj.OwnerID == landData.ownerID) { resultLocalIDs.Add(obj.LocalId); } - else if (request_type == LandManager.LAND_SELECT_OBJECTS_GROUP && false) //TODO: change false to group support! + else if (request_type == LandManager.LAND_SELECT_OBJECTS_GROUP && false) + //TODO: change false to group support! { - } - else if (request_type == LandManager.LAND_SELECT_OBJECTS_OTHER && obj.OwnerID != remote_client.AgentId) + else if (request_type == LandManager.LAND_SELECT_OBJECTS_OTHER && + obj.OwnerID != remote_client.AgentId) { resultLocalIDs.Add(obj.LocalId); } @@ -479,10 +502,10 @@ namespace OpenSim.Region.Environment.LandManagement resultLocalIDs.RemoveAt(0); } pack.Data = data; - remote_client.OutPacket((Packet)pack); + remote_client.OutPacket((Packet) pack); } - } + public void sendLandObjectOwners(IClientAPI remote_client) { Dictionary ownersAndCount = new Dictionary(); @@ -496,7 +519,6 @@ namespace OpenSim.Region.Environment.LandManagement } if (ownersAndCount.Count > 0) { - ParcelObjectOwnersReplyPacket.DataBlock[] dataBlock = new ParcelObjectOwnersReplyPacket.DataBlock[32]; if (ownersAndCount.Count < 32) @@ -522,19 +544,23 @@ namespace OpenSim.Region.Environment.LandManagement remote_client.OutPacket(pack); } } + #endregion #region Object Returning + public void returnObject(SceneObjectGroup obj) { } + public void returnLandObjects(int type, LLUUID owner) { - } + #endregion #region Object Adding/Removing from Parcel + public void resetLandPrimCounts() { landData.groupPrims = 0; @@ -566,7 +592,6 @@ namespace OpenSim.Region.Environment.LandManagement } primsOverMe.Add(obj); - } public void removePrimFromCount(SceneObjectGroup obj) @@ -592,11 +617,11 @@ namespace OpenSim.Region.Environment.LandManagement primsOverMe.Remove(obj); } } - #endregion #endregion - + #endregion } + #endregion -} +} \ No newline at end of file diff --git a/OpenSim/Region/Environment/LandManagement/LandManager.cs b/OpenSim/Region/Environment/LandManagement/LandManager.cs index 8e49811..843c0f5 100644 --- a/OpenSim/Region/Environment/LandManagement/LandManager.cs +++ b/OpenSim/Region/Environment/LandManagement/LandManager.cs @@ -36,34 +36,34 @@ using OpenSim.Region.Environment.Scenes; namespace OpenSim.Region.Environment.LandManagement { - #region LandManager Class + /// /// Handles Land objects and operations requiring information from other Land objects (divide, join, etc) /// public class LandManager { - #region Constants + //Land types set with flags in ParcelOverlay. //Only one of these can be used. - public const byte LAND_TYPE_PUBLIC = (byte)0; //Equals 00000000 - public const byte LAND_TYPE_OWNED_BY_OTHER = (byte)1; //Equals 00000001 - public const byte LAND_TYPE_OWNED_BY_GROUP = (byte)2; //Equals 00000010 - public const byte LAND_TYPE_OWNED_BY_REQUESTER = (byte)3; //Equals 00000011 - public const byte LAND_TYPE_IS_FOR_SALE = (byte)4; //Equals 00000100 - public const byte LAND_TYPE_IS_BEING_AUCTIONED = (byte)5; //Equals 00000101 + public const byte LAND_TYPE_PUBLIC = (byte) 0; //Equals 00000000 + public const byte LAND_TYPE_OWNED_BY_OTHER = (byte) 1; //Equals 00000001 + public const byte LAND_TYPE_OWNED_BY_GROUP = (byte) 2; //Equals 00000010 + public const byte LAND_TYPE_OWNED_BY_REQUESTER = (byte) 3; //Equals 00000011 + public const byte LAND_TYPE_IS_FOR_SALE = (byte) 4; //Equals 00000100 + public const byte LAND_TYPE_IS_BEING_AUCTIONED = (byte) 5; //Equals 00000101 //Flags that when set, a border on the given side will be placed //NOTE: North and East is assumable by the west and south sides (if land to east has a west border, then I have an east border; etc) //This took forever to figure out -- jeesh. /blame LL for even having to send these - public const byte LAND_FLAG_PROPERTY_BORDER_WEST = (byte)64; //Equals 01000000 - public const byte LAND_FLAG_PROPERTY_BORDER_SOUTH = (byte)128; //Equals 10000000 + public const byte LAND_FLAG_PROPERTY_BORDER_WEST = (byte) 64; //Equals 01000000 + public const byte LAND_FLAG_PROPERTY_BORDER_SOUTH = (byte) 128; //Equals 10000000 //RequestResults (I think these are right, they seem to work): - public const int LAND_RESULT_SINGLE = 0; // The request they made contained only a single piece 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_MULTIPLE = 1; // The request they made contained more than a single peice of land //ParcelSelectObjects public const int LAND_SELECT_OBJECTS_OWNER = 2; @@ -73,12 +73,14 @@ namespace OpenSim.Region.Environment.LandManagement //These are other constants. Yay! public const int START_LAND_LOCAL_ID = 1; + #endregion #region Member Variables + public Dictionary landList = new Dictionary(); private int lastLandLocalID = START_LAND_LOCAL_ID - 1; - private int[,] landIDList = new int[64, 64]; + private int[,] landIDList = new int[64,64]; /// /// Set to true when a prim is moved, created, added. Performs a prim count update @@ -91,35 +93,37 @@ namespace OpenSim.Region.Environment.LandManagement #endregion #region Constructors + public LandManager(Scene scene, RegionInfo reginfo) { - m_scene = scene; m_regInfo = reginfo; landIDList.Initialize(); - } + #endregion #region Member Functions #region Parcel From Storage Functions + public void LandFromStorage(LandData data) { Land new_land = new Land(data.ownerID, data.isGroupOwned, m_scene); new_land.landData = data.Copy(); new_land.setLandBitmapFromByteArray(); addLandObject(new_land); - } public void NoLandDataFromStorage() { resetSimLandObjects(); } + #endregion #region Parcel Add/Remove/Get/Create + /// /// Creates a basic Parcel object without an owner (a zeroed key) /// @@ -155,8 +159,8 @@ namespace OpenSim.Region.Environment.LandManagement landList[lastLandLocalID].forceUpdateLandInfo(); return new_land; - } + /// /// Removes a land object from the list. Will not remove if local_id is still owning an area in landIDList /// @@ -194,6 +198,7 @@ namespace OpenSim.Region.Environment.LandManagement } removeLandObject(slave.landData.localID); } + /// /// Get the land object at the specified point /// @@ -202,16 +207,16 @@ namespace OpenSim.Region.Environment.LandManagement /// Land object at the point supplied public Land getLandObject(float x_float, float y_float) { - int x = Convert.ToInt32(Math.Floor(Convert.ToDouble(x_float) / Convert.ToDouble(4.0))); - int y = Convert.ToInt32(Math.Floor(Convert.ToDouble(y_float) / Convert.ToDouble(4.0))); - + int x = Convert.ToInt32(Math.Floor(Convert.ToDouble(x_float)/Convert.ToDouble(4.0))); + int y = Convert.ToInt32(Math.Floor(Convert.ToDouble(y_float)/Convert.ToDouble(4.0))); + if (x > 63 || y > 63 || x < 0 || y < 0) { throw new Exception("Error: Parcel not found at point " + x + ", " + y); } else { - // Console.WriteLine("Point (" + x + ", " + y + ") determined from point (" + x_float + ", " + y_float + ")"); + // Console.WriteLine("Point (" + x + ", " + y + ") determined from point (" + x_float + ", " + y_float + ")"); return landList[landIDList[x, y]]; } } @@ -224,12 +229,14 @@ namespace OpenSim.Region.Environment.LandManagement } else { - return landList[landIDList[x / 4, y / 4]]; + return landList[landIDList[x/4, y/4]]; } } + #endregion #region Parcel Modification + /// /// Subdivides a piece of land /// @@ -241,7 +248,6 @@ namespace OpenSim.Region.Environment.LandManagement /// Returns true if successful private bool subdivide(int start_x, int start_y, int end_x, int end_y, LLUUID attempting_user_id) { - //First, lets loop through the points and make sure they are all in the same peice of land //Get the land object at start Land startLandObject = getLandObject(start_x, start_y); @@ -284,21 +290,21 @@ namespace OpenSim.Region.Environment.LandManagement //Now, lets set the subdivision area of the original to false int startLandObjectIndex = startLandObject.landData.localID; - landList[startLandObjectIndex].setLandBitmap(Land.modifyLandBitmapSquare(startLandObject.getLandBitmap(), start_x, start_y, end_x, end_y, false)); + landList[startLandObjectIndex].setLandBitmap( + Land.modifyLandBitmapSquare(startLandObject.getLandBitmap(), start_x, start_y, end_x, end_y, false)); landList[startLandObjectIndex].forceUpdateLandInfo(); - this.setPrimsTainted(); + setPrimsTainted(); //Now add the new land object Land result = addLandObject(newLand); result.sendLandUpdateToAvatarsOverMe(); - - return true; } + /// /// Join 2 land objects together /// @@ -320,7 +326,7 @@ namespace OpenSim.Region.Environment.LandManagement { for (stepXSelected = start_x; stepXSelected <= end_x; stepXSelected += 4) { - Land p = getLandObject(stepXSelected,stepYSelected); + Land p = getLandObject(stepXSelected, stepYSelected); if (!selectedLandObjects.Contains(p)) { selectedLandObjects.Add(p); @@ -330,7 +336,7 @@ namespace OpenSim.Region.Environment.LandManagement Land masterLandObject = selectedLandObjects[0]; selectedLandObjects.RemoveAt(0); - + if (selectedLandObjects.Count < 1) { return false; //Only one piece of land selected @@ -348,23 +354,23 @@ namespace OpenSim.Region.Environment.LandManagement } foreach (Land slaveLandObject in selectedLandObjects) { - landList[masterLandObject.landData.localID].setLandBitmap(Land.mergeLandBitmaps(masterLandObject.getLandBitmap(), slaveLandObject.getLandBitmap())); + landList[masterLandObject.landData.localID].setLandBitmap( + Land.mergeLandBitmaps(masterLandObject.getLandBitmap(), slaveLandObject.getLandBitmap())); performFinalLandJoin(masterLandObject, slaveLandObject); } - this.setPrimsTainted(); + setPrimsTainted(); masterLandObject.sendLandUpdateToAvatarsOverMe(); return true; - - - } + #endregion #region Parcel Updating + /// /// Where we send the ParcelOverlay packet to the client /// @@ -382,15 +388,17 @@ namespace OpenSim.Region.Environment.LandManagement { for (x = 0; x < 64; x++) { - byte tempByte = (byte)0; //This represents the byte for the current 4x4 - Land currentParcelBlock = getLandObject(x * 4, y * 4); + byte tempByte = (byte) 0; //This represents the byte for the current 4x4 + Land currentParcelBlock = getLandObject(x*4, y*4); if (currentParcelBlock.landData.ownerID == remote_client.AgentId) { //Owner Flag tempByte = Convert.ToByte(tempByte | LAND_TYPE_OWNED_BY_REQUESTER); } - else if (currentParcelBlock.landData.salePrice > 0 && (currentParcelBlock.landData.authBuyerID == LLUUID.Zero || currentParcelBlock.landData.authBuyerID == remote_client.AgentId)) + else if (currentParcelBlock.landData.salePrice > 0 && + (currentParcelBlock.landData.authBuyerID == LLUUID.Zero || + currentParcelBlock.landData.authBuyerID == remote_client.AgentId)) { //Sale Flag tempByte = Convert.ToByte(tempByte | LAND_TYPE_IS_FOR_SALE); @@ -412,7 +420,7 @@ namespace OpenSim.Region.Environment.LandManagement { tempByte = Convert.ToByte(tempByte | LAND_FLAG_PROPERTY_BORDER_WEST); } - else if (getLandObject((x - 1) * 4, y * 4) != currentParcelBlock) + else if (getLandObject((x - 1)*4, y*4) != currentParcelBlock) { tempByte = Convert.ToByte(tempByte | LAND_FLAG_PROPERTY_BORDER_WEST); } @@ -421,7 +429,7 @@ namespace OpenSim.Region.Environment.LandManagement { tempByte = Convert.ToByte(tempByte | LAND_FLAG_PROPERTY_BORDER_SOUTH); } - else if (getLandObject(x * 4, (y - 1) * 4) != currentParcelBlock) + else if (getLandObject(x*4, (y - 1)*4) != currentParcelBlock) { tempByte = Convert.ToByte(tempByte | LAND_FLAG_PROPERTY_BORDER_SOUTH); } @@ -434,17 +442,16 @@ namespace OpenSim.Region.Environment.LandManagement packet = new ParcelOverlayPacket(); packet.ParcelData.Data = byteArray; packet.ParcelData.SequenceID = sequenceID; - remote_client.OutPacket((Packet)packet); + remote_client.OutPacket((Packet) packet); sequenceID++; byteArray = new byte[LAND_BLOCKS_PER_PACKET]; } } } - - } - public void handleParcelPropertiesRequest(int start_x, int start_y, int end_x, int end_y, int sequence_id, bool snap_selection, IClientAPI remote_client) + public void handleParcelPropertiesRequest(int start_x, int start_y, int end_x, int end_y, int sequence_id, + bool snap_selection, IClientAPI remote_client) { //Get the land objects within the bounds List temp = new List(); @@ -486,14 +493,15 @@ namespace OpenSim.Region.Environment.LandManagement landList[packet.ParcelData.LocalID].updateLandProperties(packet, remote_client); } } + public void handleParcelDivideRequest(int west, int south, int east, int north, IClientAPI remote_client) { subdivide(west, south, east, north, remote_client.AgentId); } + public void handleParcelJoinRequest(int west, int south, int east, int north, IClientAPI remote_client) { join(west, south, east, north, remote_client.AgentId); - } public void handleParcelSelectObjectsRequest(int local_id, int request_type, IClientAPI remote_client) @@ -505,6 +513,7 @@ namespace OpenSim.Region.Environment.LandManagement { landList[local_id].sendLandObjectOwners(remote_client); } + #endregion /// @@ -523,7 +532,6 @@ namespace OpenSim.Region.Environment.LandManagement fullSimParcel.landData.ownerID = m_regInfo.MasterAvatarAssignedUUID; addLandObject(fullSimParcel); - } @@ -532,7 +540,7 @@ namespace OpenSim.Region.Environment.LandManagement ScenePresence clientAvatar = m_scene.RequestAvatar(remote_client.AgentId); if (clientAvatar != null) { - Land over = getLandObject(clientAvatar.AbsolutePosition.X,clientAvatar.AbsolutePosition.Y); + Land over = getLandObject(clientAvatar.AbsolutePosition.X, clientAvatar.AbsolutePosition.Y); if (over != null) { over.sendLandProperties(0, false, 0, remote_client); @@ -547,9 +555,10 @@ namespace OpenSim.Region.Environment.LandManagement p.resetLandPrimCounts(); } } + public void setPrimsTainted() { - this.landPrimCountTainted = true; + landPrimCountTainted = true; } public void addPrimToLandPrimCounts(SceneObjectGroup obj) @@ -573,14 +582,14 @@ namespace OpenSim.Region.Environment.LandManagement public void finalizeLandPrimCountUpdate() { //Get Simwide prim count for owner - Dictionary> landOwnersAndParcels = new Dictionary>(); + Dictionary> landOwnersAndParcels = new Dictionary>(); foreach (Land p in landList.Values) { - if(!landOwnersAndParcels.ContainsKey(p.landData.ownerID)) + if (!landOwnersAndParcels.ContainsKey(p.landData.ownerID)) { List tempList = new List(); tempList.Add(p); - landOwnersAndParcels.Add(p.landData.ownerID,tempList); + landOwnersAndParcels.Add(p.landData.ownerID, tempList); } else { @@ -595,7 +604,8 @@ namespace OpenSim.Region.Environment.LandManagement foreach (Land p in landOwnersAndParcels[owner]) { simArea += p.landData.area; - simPrims += p.landData.ownerPrims + p.landData.otherPrims + p.landData.groupPrims + p.landData.selectedPrims; + simPrims += p.landData.ownerPrims + p.landData.otherPrims + p.landData.groupPrims + + p.landData.selectedPrims; } foreach (Land p in landOwnersAndParcels[owner]) @@ -604,14 +614,10 @@ namespace OpenSim.Region.Environment.LandManagement p.landData.simwidePrims = simPrims; } } - } + #endregion } - #endregion - - - - -} + #endregion +} \ No newline at end of file -- cgit v1.1