* Cleaning up code, making it conform to OpenSim standards.
parent
add13276a9
commit
31cd162d34
|
@ -532,7 +532,7 @@ namespace OpenSim
|
|||
scene.StartScripts();
|
||||
|
||||
scene.loadAllLandObjectsFromStorage(regionInfo.originRegionID);
|
||||
scene.LandChannel.performParcelPrimCountUpdate();
|
||||
scene.LandChannel.PerformParcelPrimCountUpdate();
|
||||
|
||||
m_sceneManager.Add(scene);
|
||||
|
||||
|
|
|
@ -34,42 +34,31 @@ namespace OpenSim.Region.Environment.Interfaces
|
|||
{
|
||||
public interface ILandChannel
|
||||
{
|
||||
bool allowedForcefulBans { get; set; }
|
||||
bool AllowedForcefulBans { get; set; }
|
||||
void IncomingLandObjectsFromStorage(List<LandData> data);
|
||||
void IncomingLandObjectFromStorage(LandData data);
|
||||
|
||||
void NoLandDataFromStorage();
|
||||
ILandObject getLandObject(int x, int y);
|
||||
ILandObject getLandObject(float x, float y);
|
||||
void setPrimsTainted();
|
||||
bool isLandPrimCountTainted();
|
||||
void sendLandUpdate(ScenePresence avatar, bool force);
|
||||
void sendLandUpdate(ScenePresence avatar);
|
||||
void resetAllLandPrimCounts();
|
||||
void addPrimToLandPrimCounts(SceneObjectGroup obj);
|
||||
void removePrimFromLandPrimCounts(SceneObjectGroup obj);
|
||||
void finalizeLandPrimCountUpdate();
|
||||
void updateLandPrimCounts();
|
||||
void performParcelPrimCountUpdate();
|
||||
void updateLandObject(int local_id, LandData newData);
|
||||
ILandObject GetLandObject(int x, int y);
|
||||
ILandObject GetLandObject(float x, float y);
|
||||
void SetPrimsTainted();
|
||||
bool IsLandPrimCountTainted();
|
||||
void SendLandUpdate(ScenePresence avatar, bool force);
|
||||
void SendLandUpdate(ScenePresence avatar);
|
||||
void ResetAllLandPrimCounts();
|
||||
void AddPrimToLandPrimCounts(SceneObjectGroup obj);
|
||||
void RemovePrimFromLandPrimCounts(SceneObjectGroup obj);
|
||||
void FinalizeLandPrimCountUpdate();
|
||||
void UpdateLandPrimCounts();
|
||||
void PerformParcelPrimCountUpdate();
|
||||
void UpdateLandObject(int local_id, LandData newData);
|
||||
|
||||
void sendParcelOverlay(IClientAPI remote_client);
|
||||
void handleParcelPropertiesRequest(int start_x, int start_y, int end_x, int end_y, int sequence_id, bool snap_selection, IClientAPI remote_client);
|
||||
void handleParcelPropertiesUpdateRequest(LandUpdateArgs args, int localID, IClientAPI remote_client);
|
||||
void handleParcelDivideRequest(int west, int south, int east, int north, IClientAPI remote_client);
|
||||
void handleParcelJoinRequest(int west, int south, int east, int north, IClientAPI remote_client);
|
||||
void handleParcelSelectObjectsRequest(int local_id, int request_type, IClientAPI remote_client);
|
||||
void handleParcelObjectOwnersRequest(int local_id, IClientAPI remote_client);
|
||||
void SendParcelOverlay(IClientAPI remote_client);
|
||||
|
||||
void resetSimLandObjects();
|
||||
List<ILandObject> parcelsNearPoint(LLVector3 position);
|
||||
void sendYouAreBannedNotice(ScenePresence avatar);
|
||||
void ResetSimLandObjects();
|
||||
List<ILandObject> ParcelsNearPoint(LLVector3 position);
|
||||
void SendYouAreBannedNotice(ScenePresence avatar);
|
||||
void handleAvatarChangingParcel(ScenePresence avatar, int localLandID, LLUUID regionID);
|
||||
void sendOutNearestBanLine(IClientAPI avatar);
|
||||
void handleSignificantClientMovement(IClientAPI remote_client);
|
||||
void handleAnyClientMovement(ScenePresence avatar);
|
||||
void handleParcelAccessRequest(LLUUID agentID, LLUUID sessionID, uint flags, int sequenceID, int landLocalID, IClientAPI remote_client);
|
||||
void handleParcelAccessUpdateRequest(LLUUID agentID, LLUUID sessionID, uint flags, int landLocalID, List<ParcelManager.ParcelAccessEntry> entries, IClientAPI remote_client);
|
||||
|
||||
void SendOutNearestBanLine(IClientAPI avatar);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1426,7 +1426,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Currency.SampleMoney
|
|||
}
|
||||
else
|
||||
{
|
||||
ILandObject obj = avatar.Scene.LandChannel.getLandObject(avatar.AbsolutePosition.X, avatar.AbsolutePosition.Y);
|
||||
ILandObject obj = avatar.Scene.LandChannel.GetLandObject(avatar.AbsolutePosition.X, avatar.AbsolutePosition.Y);
|
||||
if ((obj.landData.landFlags & (uint)Parcel.ParcelFlags.AllowDamage) != 0)
|
||||
{
|
||||
avatar.Invulnerable = false;
|
||||
|
|
|
@ -44,8 +44,8 @@ namespace OpenSim.Region.Environment.Modules.World.Land
|
|||
//Land types set with flags in ParcelOverlay.
|
||||
//Only one of these can be used.
|
||||
public const float BAN_LINE_SAFETY_HIEGHT = 100;
|
||||
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 = 128; //Equals 10000000
|
||||
public const byte LAND_FLAG_PROPERTY_BORDER_WEST = 64; //Equals 01000000
|
||||
|
||||
//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
|
||||
|
@ -55,31 +55,41 @@ namespace OpenSim.Region.Environment.Modules.World.Land
|
|||
public const int LAND_SELECT_OBJECTS_GROUP = 4;
|
||||
public const int LAND_SELECT_OBJECTS_OTHER = 8;
|
||||
public const int LAND_SELECT_OBJECTS_OWNER = 2;
|
||||
public const byte LAND_TYPE_IS_BEING_AUCTIONED = (byte) 5; //Equals 00000101
|
||||
public const byte LAND_TYPE_IS_FOR_SALE = (byte) 4; //Equals 00000100
|
||||
public const byte LAND_TYPE_OWNED_BY_GROUP = (byte) 2; //Equals 00000010
|
||||
public const byte LAND_TYPE_OWNED_BY_OTHER = (byte) 1; //Equals 00000001
|
||||
public const byte LAND_TYPE_OWNED_BY_REQUESTER = (byte) 3; //Equals 00000011
|
||||
public const byte LAND_TYPE_PUBLIC = (byte) 0; //Equals 00000000
|
||||
public const byte LAND_TYPE_IS_BEING_AUCTIONED = 5; //Equals 00000101
|
||||
public const byte LAND_TYPE_IS_FOR_SALE = 4; //Equals 00000100
|
||||
public const byte LAND_TYPE_OWNED_BY_GROUP = 2; //Equals 00000010
|
||||
public const byte LAND_TYPE_OWNED_BY_OTHER = 1; //Equals 00000001
|
||||
public const byte LAND_TYPE_OWNED_BY_REQUESTER = 3; //Equals 00000011
|
||||
public const byte LAND_TYPE_PUBLIC = 0; //Equals 00000000
|
||||
|
||||
//These are other constants. Yay!
|
||||
public const int START_LAND_LOCAL_ID = 1;
|
||||
|
||||
#endregion
|
||||
|
||||
private int[,] landIDList = new int[64,64];
|
||||
private Dictionary<int, ILandObject> landList = new Dictionary<int, ILandObject>();
|
||||
private readonly int[,] landIDList = new int[64,64];
|
||||
private readonly Dictionary<int, ILandObject> landList = new Dictionary<int, ILandObject>();
|
||||
|
||||
private bool landPrimCountTainted = false;
|
||||
private bool landPrimCountTainted;
|
||||
private int lastLandLocalID = START_LAND_LOCAL_ID - 1;
|
||||
|
||||
private bool m_allowedForcefulBans = true;
|
||||
private Scene m_scene;
|
||||
private readonly Scene m_scene;
|
||||
|
||||
public LandChannel(Scene scene)
|
||||
{
|
||||
m_scene = scene;
|
||||
landIDList.Initialize();
|
||||
|
||||
m_scene.EventManager.OnNewPresence += handleNewPresence;
|
||||
}
|
||||
|
||||
private void handleNewPresence(ScenePresence avatar)
|
||||
{
|
||||
if (avatar.IsChildAgent)
|
||||
{
|
||||
avatar.OnSignificantClientMovement += handleSignificantClientMovement;
|
||||
}
|
||||
}
|
||||
|
||||
#region Land Object From Storage Functions
|
||||
|
@ -109,19 +119,19 @@ namespace OpenSim.Region.Environment.Modules.World.Land
|
|||
ILandObject new_land = new LandObject(data.ownerID, data.isGroupOwned, m_scene);
|
||||
new_land.landData = data.Copy();
|
||||
new_land.setLandBitmapFromByteArray();
|
||||
addLandObject(new_land);
|
||||
AddLandObject(new_land);
|
||||
}
|
||||
|
||||
public void NoLandDataFromStorage()
|
||||
{
|
||||
resetSimLandObjects();
|
||||
ResetSimLandObjects();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Parcel Add/Remove/Get/Create
|
||||
|
||||
public void updateLandObject(int local_id, LandData newData)
|
||||
public void UpdateLandObject(int local_id, LandData newData)
|
||||
{
|
||||
if (landList.ContainsKey(local_id))
|
||||
{
|
||||
|
@ -133,10 +143,10 @@ namespace OpenSim.Region.Environment.Modules.World.Land
|
|||
/// <summary>
|
||||
/// Get the land object at the specified point
|
||||
/// </summary>
|
||||
/// <param name="x">Value between 0 - 256 on the x axis of the point</param>
|
||||
/// <param name="y">Value between 0 - 256 on the y axis of the point</param>
|
||||
/// <param name="x_float">Value between 0 - 256 on the x axis of the point</param>
|
||||
/// <param name="y_float">Value between 0 - 256 on the y axis of the point</param>
|
||||
/// <returns>Land object at the point supplied</returns>
|
||||
public ILandObject getLandObject(float x_float, float y_float)
|
||||
public ILandObject GetLandObject(float x_float, float y_float)
|
||||
{
|
||||
int x;
|
||||
int y;
|
||||
|
@ -155,13 +165,10 @@ namespace OpenSim.Region.Environment.Modules.World.Land
|
|||
{
|
||||
return null;
|
||||
}
|
||||
else
|
||||
{
|
||||
return landList[landIDList[x, y]];
|
||||
}
|
||||
}
|
||||
|
||||
public ILandObject getLandObject(int x, int y)
|
||||
public ILandObject GetLandObject(int x, int y)
|
||||
{
|
||||
if (x >= Convert.ToInt32(Constants.RegionSize) || y >= Convert.ToInt32(Constants.RegionSize) || x < 0 || y < 0)
|
||||
{
|
||||
|
@ -169,17 +176,14 @@ namespace OpenSim.Region.Environment.Modules.World.Land
|
|||
// they happen every time at border crossings
|
||||
throw new Exception("Error: Parcel not found at point " + x + ", " + y);
|
||||
}
|
||||
else
|
||||
{
|
||||
return landList[landIDList[x / 4, y / 4]];
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a basic Parcel object without an owner (a zeroed key)
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public ILandObject createBaseLand()
|
||||
public ILandObject CreateBaseLand()
|
||||
{
|
||||
return new LandObject(LLUUID.Zero, false, m_scene);
|
||||
}
|
||||
|
@ -188,17 +192,18 @@ namespace OpenSim.Region.Environment.Modules.World.Land
|
|||
/// Adds a land object to the stored list and adds them to the landIDList to what they own
|
||||
/// </summary>
|
||||
/// <param name="new_land">The land object being added</param>
|
||||
public ILandObject addLandObject(ILandObject new_land)
|
||||
public ILandObject AddLandObject(ILandObject new_land)
|
||||
{
|
||||
lastLandLocalID++;
|
||||
new_land.landData.localID = lastLandLocalID;
|
||||
landList.Add(lastLandLocalID, (LandObject) new_land.Copy());
|
||||
landList.Add(lastLandLocalID, new_land.Copy());
|
||||
|
||||
|
||||
bool[,] landBitmap = new_land.getLandBitmap();
|
||||
int x, y;
|
||||
int x;
|
||||
for (x = 0; x < 64; x++)
|
||||
{
|
||||
int y;
|
||||
for (y = 0; y < 64; y++)
|
||||
{
|
||||
if (landBitmap[x, y])
|
||||
|
@ -218,9 +223,10 @@ namespace OpenSim.Region.Environment.Modules.World.Land
|
|||
/// <param name="local_id">Land.localID of the peice of land to remove.</param>
|
||||
public void removeLandObject(int local_id)
|
||||
{
|
||||
int x, y;
|
||||
int x;
|
||||
for (x = 0; x < 64; x++)
|
||||
{
|
||||
int y;
|
||||
for (y = 0; y < 64; y++)
|
||||
{
|
||||
if (landIDList[x, y] == local_id)
|
||||
|
@ -237,10 +243,11 @@ namespace OpenSim.Region.Environment.Modules.World.Land
|
|||
|
||||
private void performFinalLandJoin(ILandObject master, ILandObject slave)
|
||||
{
|
||||
int x, y;
|
||||
int x;
|
||||
bool[,] landBitmapSlave = slave.getLandBitmap();
|
||||
for (x = 0; x < 64; x++)
|
||||
{
|
||||
int y;
|
||||
for (y = 0; y < 64; y++)
|
||||
{
|
||||
if (landBitmapSlave[x, y])
|
||||
|
@ -251,10 +258,10 @@ namespace OpenSim.Region.Environment.Modules.World.Land
|
|||
}
|
||||
|
||||
removeLandObject(slave.landData.localID);
|
||||
updateLandObject(master.landData.localID, master.landData);
|
||||
UpdateLandObject(master.landData.localID, master.landData);
|
||||
}
|
||||
|
||||
public ILandObject getLandObject(int parcelLocalID)
|
||||
public ILandObject GetLandObject(int parcelLocalID)
|
||||
{
|
||||
lock (landList)
|
||||
{
|
||||
|
@ -270,7 +277,7 @@ namespace OpenSim.Region.Environment.Modules.World.Land
|
|||
|
||||
#region Parcel Modification
|
||||
|
||||
public void resetAllLandPrimCounts()
|
||||
public void ResetAllLandPrimCounts()
|
||||
{
|
||||
foreach (LandObject p in landList.Values)
|
||||
{
|
||||
|
@ -278,27 +285,27 @@ namespace OpenSim.Region.Environment.Modules.World.Land
|
|||
}
|
||||
}
|
||||
|
||||
public void setPrimsTainted()
|
||||
public void SetPrimsTainted()
|
||||
{
|
||||
landPrimCountTainted = true;
|
||||
}
|
||||
|
||||
public bool isLandPrimCountTainted()
|
||||
public bool IsLandPrimCountTainted()
|
||||
{
|
||||
return landPrimCountTainted;
|
||||
}
|
||||
|
||||
public void addPrimToLandPrimCounts(SceneObjectGroup obj)
|
||||
public void AddPrimToLandPrimCounts(SceneObjectGroup obj)
|
||||
{
|
||||
LLVector3 position = obj.AbsolutePosition;
|
||||
ILandObject landUnderPrim = getLandObject(position.X, position.Y);
|
||||
ILandObject landUnderPrim = GetLandObject(position.X, position.Y);
|
||||
if (landUnderPrim != null)
|
||||
{
|
||||
landUnderPrim.addPrimToCount(obj);
|
||||
}
|
||||
}
|
||||
|
||||
public void removePrimFromLandPrimCounts(SceneObjectGroup obj)
|
||||
public void RemovePrimFromLandPrimCounts(SceneObjectGroup obj)
|
||||
{
|
||||
foreach (LandObject p in landList.Values)
|
||||
{
|
||||
|
@ -306,7 +313,7 @@ namespace OpenSim.Region.Environment.Modules.World.Land
|
|||
}
|
||||
}
|
||||
|
||||
public void finalizeLandPrimCountUpdate()
|
||||
public void FinalizeLandPrimCountUpdate()
|
||||
{
|
||||
//Get Simwide prim count for owner
|
||||
Dictionary<LLUUID, List<LandObject>> landOwnersAndParcels = new Dictionary<LLUUID, List<LandObject>>();
|
||||
|
@ -343,7 +350,7 @@ namespace OpenSim.Region.Environment.Modules.World.Land
|
|||
}
|
||||
}
|
||||
|
||||
public void updateLandPrimCounts()
|
||||
public void UpdateLandPrimCounts()
|
||||
{
|
||||
foreach (EntityBase obj in m_scene.Entities.Values)
|
||||
{
|
||||
|
@ -354,11 +361,11 @@ namespace OpenSim.Region.Environment.Modules.World.Land
|
|||
}
|
||||
}
|
||||
|
||||
public void performParcelPrimCountUpdate()
|
||||
public void PerformParcelPrimCountUpdate()
|
||||
{
|
||||
resetAllLandPrimCounts();
|
||||
ResetAllLandPrimCounts();
|
||||
m_scene.EventManager.TriggerParcelPrimCountUpdate();
|
||||
finalizeLandPrimCountUpdate();
|
||||
FinalizeLandPrimCountUpdate();
|
||||
landPrimCountTainted = false;
|
||||
}
|
||||
|
||||
|
@ -371,47 +378,42 @@ namespace OpenSim.Region.Environment.Modules.World.Land
|
|||
/// <param name="end_y">North Point</param>
|
||||
/// <param name="attempting_user_id">LLUUID of user who is trying to subdivide</param>
|
||||
/// <returns>Returns true if successful</returns>
|
||||
private bool subdivide(int start_x, int start_y, int end_x, int end_y, LLUUID attempting_user_id)
|
||||
private void 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
|
||||
ILandObject startLandObject = null;
|
||||
try
|
||||
{
|
||||
startLandObject = getLandObject(start_x, start_y);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
//m_log.Error("[LAND]: " + "Unable to get land object for subdivision at x: " + start_x + " y:" + start_y);
|
||||
}
|
||||
if (startLandObject == null) return false; //No such land object at the beginning
|
||||
|
||||
ILandObject startLandObject = GetLandObject(start_x, start_y);
|
||||
|
||||
if (startLandObject == null) return;
|
||||
|
||||
//Loop through the points
|
||||
try
|
||||
{
|
||||
int totalX = end_x - start_x;
|
||||
int totalY = end_y - start_y;
|
||||
int x, y;
|
||||
int y;
|
||||
for (y = 0; y < totalY; y++)
|
||||
{
|
||||
int x;
|
||||
for (x = 0; x < totalX; x++)
|
||||
{
|
||||
ILandObject tempLandObject = getLandObject(start_x + x, start_y + y);
|
||||
if (tempLandObject == null) return false; //No such land object at that point
|
||||
if (tempLandObject != startLandObject) return false; //Subdividing over 2 land objects; no-no
|
||||
ILandObject tempLandObject = GetLandObject(start_x + x, start_y + y);
|
||||
if (tempLandObject == null) return;
|
||||
if (tempLandObject != startLandObject) return;
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
return false; //Exception. For now, lets skip subdivision
|
||||
return;
|
||||
}
|
||||
|
||||
//If we are still here, then they are subdividing within one piece of land
|
||||
//Check owner
|
||||
if (startLandObject.landData.ownerID != attempting_user_id)
|
||||
{
|
||||
return false; //They cant do this!
|
||||
return;
|
||||
}
|
||||
|
||||
//Lets create a new land object with bitmap activated at that point (keeping the old land objects info)
|
||||
|
@ -427,15 +429,15 @@ namespace OpenSim.Region.Environment.Modules.World.Land
|
|||
newLand.modifyLandBitmapSquare(startLandObject.getLandBitmap(), start_x, start_y, end_x, end_y, false));
|
||||
landList[startLandObjectIndex].forceUpdateLandInfo();
|
||||
|
||||
setPrimsTainted();
|
||||
SetPrimsTainted();
|
||||
|
||||
//Now add the new land object
|
||||
ILandObject result = addLandObject(newLand);
|
||||
updateLandObject(startLandObject.landData.localID, startLandObject.landData);
|
||||
ILandObject result = AddLandObject(newLand);
|
||||
UpdateLandObject(startLandObject.landData.localID, startLandObject.landData);
|
||||
result.sendLandUpdateToAvatarsOverMe();
|
||||
|
||||
|
||||
return true;
|
||||
return;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@ -447,27 +449,20 @@ namespace OpenSim.Region.Environment.Modules.World.Land
|
|||
/// <param name="end_y">y value in second peice of land</param>
|
||||
/// <param name="attempting_user_id">LLUUID of the avatar trying to join the land objects</param>
|
||||
/// <returns>Returns true if successful</returns>
|
||||
private bool join(int start_x, int start_y, int end_x, int end_y, LLUUID attempting_user_id)
|
||||
private void join(int start_x, int start_y, int end_x, int end_y, LLUUID attempting_user_id)
|
||||
{
|
||||
end_x -= 4;
|
||||
end_y -= 4;
|
||||
|
||||
List<ILandObject> selectedLandObjects = new List<ILandObject>();
|
||||
int stepXSelected = 0;
|
||||
int stepYSelected = 0;
|
||||
int stepYSelected;
|
||||
for (stepYSelected = start_y; stepYSelected <= end_y; stepYSelected += 4)
|
||||
{
|
||||
int stepXSelected;
|
||||
for (stepXSelected = start_x; stepXSelected <= end_x; stepXSelected += 4)
|
||||
{
|
||||
ILandObject p = null;
|
||||
try
|
||||
{
|
||||
p = getLandObject(stepXSelected, stepYSelected);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
//m_log.Error("[LAND]: " + "Unable to get land object for subdivision at x: " + stepXSelected + " y:" + stepYSelected);
|
||||
}
|
||||
ILandObject p = GetLandObject(stepXSelected, stepYSelected);
|
||||
|
||||
if (p != null)
|
||||
{
|
||||
if (!selectedLandObjects.Contains(p))
|
||||
|
@ -483,17 +478,17 @@ namespace OpenSim.Region.Environment.Modules.World.Land
|
|||
|
||||
if (selectedLandObjects.Count < 1)
|
||||
{
|
||||
return false; //Only one piece of land selected
|
||||
return;
|
||||
}
|
||||
if (masterLandObject.landData.ownerID != attempting_user_id)
|
||||
{
|
||||
return false; //Not the same owner
|
||||
return;
|
||||
}
|
||||
foreach (ILandObject p in selectedLandObjects)
|
||||
{
|
||||
if (p.landData.ownerID != masterLandObject.landData.ownerID)
|
||||
{
|
||||
return false; //Over multiple users. TODO: make this just ignore this piece of land?
|
||||
return;
|
||||
}
|
||||
}
|
||||
foreach (ILandObject slaveLandObject in selectedLandObjects)
|
||||
|
@ -504,11 +499,11 @@ namespace OpenSim.Region.Environment.Modules.World.Land
|
|||
}
|
||||
|
||||
|
||||
setPrimsTainted();
|
||||
SetPrimsTainted();
|
||||
|
||||
masterLandObject.sendLandUpdateToAvatarsOverMe();
|
||||
|
||||
return true;
|
||||
return;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
@ -519,30 +514,24 @@ namespace OpenSim.Region.Environment.Modules.World.Land
|
|||
/// Where we send the ParcelOverlay packet to the client
|
||||
/// </summary>
|
||||
/// <param name="remote_client">The object representing the client</param>
|
||||
public void sendParcelOverlay(IClientAPI remote_client)
|
||||
public void SendParcelOverlay(IClientAPI remote_client)
|
||||
{
|
||||
const int LAND_BLOCKS_PER_PACKET = 1024;
|
||||
int x, y = 0;
|
||||
|
||||
byte[] byteArray = new byte[LAND_BLOCKS_PER_PACKET];
|
||||
int byteArrayCount = 0;
|
||||
int sequenceID = 0;
|
||||
ParcelOverlayPacket packet;
|
||||
|
||||
int y;
|
||||
for (y = 0; y < 64; y++)
|
||||
{
|
||||
int x;
|
||||
for (x = 0; x < 64; x++)
|
||||
{
|
||||
byte tempByte = (byte) 0; //This represents the byte for the current 4x4
|
||||
ILandObject currentParcelBlock = null;
|
||||
byte tempByte = 0; //This represents the byte for the current 4x4
|
||||
|
||||
try
|
||||
{
|
||||
currentParcelBlock = getLandObject(x * 4, y * 4);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
//m_log.Warn("[LAND]: " + "unable to get land at x: " + (x * 4) + " y: " + (y * 4));
|
||||
}
|
||||
ILandObject currentParcelBlock = GetLandObject(x * 4, y * 4);
|
||||
|
||||
|
||||
if (currentParcelBlock != null)
|
||||
|
@ -572,17 +561,16 @@ namespace OpenSim.Region.Environment.Modules.World.Land
|
|||
|
||||
|
||||
//Now for border control
|
||||
try
|
||||
{
|
||||
|
||||
ILandObject westParcel = null;
|
||||
ILandObject southParcel = null;
|
||||
if (x > 0)
|
||||
{
|
||||
westParcel = getLandObject((x - 1) * 4, y * 4);
|
||||
westParcel = GetLandObject((x - 1) * 4, y * 4);
|
||||
}
|
||||
if (y > 0)
|
||||
{
|
||||
southParcel = getLandObject(x * 4, (y - 1) * 4);
|
||||
southParcel = GetLandObject(x * 4, (y - 1) * 4);
|
||||
}
|
||||
|
||||
if (x == 0)
|
||||
|
@ -611,16 +599,11 @@ namespace OpenSim.Region.Environment.Modules.World.Land
|
|||
packet = (ParcelOverlayPacket) PacketPool.Instance.GetPacket(PacketType.ParcelOverlay);
|
||||
packet.ParcelData.Data = byteArray;
|
||||
packet.ParcelData.SequenceID = sequenceID;
|
||||
remote_client.OutPacket((Packet) packet, ThrottleOutPacketType.Task);
|
||||
remote_client.OutPacket(packet, ThrottleOutPacketType.Task);
|
||||
sequenceID++;
|
||||
byteArray = new byte[LAND_BLOCKS_PER_PACKET];
|
||||
}
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
//m_log.Debug("[LAND]: Skipped Land checks because avatar is out of bounds: " + e.Message);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -630,22 +613,17 @@ namespace OpenSim.Region.Environment.Modules.World.Land
|
|||
{
|
||||
//Get the land objects within the bounds
|
||||
List<ILandObject> temp = new List<ILandObject>();
|
||||
int x, y, i;
|
||||
int x;
|
||||
int i;
|
||||
int inc_x = end_x - start_x;
|
||||
int inc_y = end_y - start_y;
|
||||
for (x = 0; x < inc_x; x++)
|
||||
{
|
||||
int y;
|
||||
for (y = 0; y < inc_y; y++)
|
||||
{
|
||||
ILandObject currentParcel = null;
|
||||
try
|
||||
{
|
||||
currentParcel = getLandObject(start_x + x, start_y + y);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
//m_log.Warn("[LAND]: " + "unable to get land at x: " + (start_x + x) + " y: " + (start_y + y));
|
||||
}
|
||||
ILandObject currentParcel = GetLandObject(start_x + x, start_y + y);
|
||||
|
||||
if (currentParcel != null)
|
||||
{
|
||||
if (!temp.Contains(currentParcel))
|
||||
|
@ -669,7 +647,7 @@ namespace OpenSim.Region.Environment.Modules.World.Land
|
|||
}
|
||||
|
||||
|
||||
sendParcelOverlay(remote_client);
|
||||
SendParcelOverlay(remote_client);
|
||||
}
|
||||
|
||||
public void handleParcelPropertiesUpdateRequest(LandUpdateArgs args, int localID, IClientAPI remote_client)
|
||||
|
@ -704,7 +682,7 @@ namespace OpenSim.Region.Environment.Modules.World.Land
|
|||
|
||||
#region ILandChannel Members
|
||||
|
||||
public bool allowedForcefulBans
|
||||
public bool AllowedForcefulBans
|
||||
{
|
||||
get { return m_allowedForcefulBans; }
|
||||
set { m_allowedForcefulBans = value; }
|
||||
|
@ -713,7 +691,7 @@ namespace OpenSim.Region.Environment.Modules.World.Land
|
|||
/// <summary>
|
||||
/// Resets the sim to the default land object (full sim piece of land owned by the default user)
|
||||
/// </summary>
|
||||
public void resetSimLandObjects()
|
||||
public void ResetSimLandObjects()
|
||||
{
|
||||
//Remove all the land objects in the sim and add a blank, full sim land object set to public
|
||||
landList.Clear();
|
||||
|
@ -725,18 +703,19 @@ namespace OpenSim.Region.Environment.Modules.World.Land
|
|||
fullSimParcel.setLandBitmap(fullSimParcel.getSquareLandBitmap(0, 0, (int) Constants.RegionSize, (int) Constants.RegionSize));
|
||||
fullSimParcel.landData.ownerID = m_scene.RegionInfo.MasterAvatarAssignedUUID;
|
||||
|
||||
addLandObject(fullSimParcel);
|
||||
AddLandObject(fullSimParcel);
|
||||
}
|
||||
|
||||
public List<ILandObject> parcelsNearPoint(LLVector3 position)
|
||||
public List<ILandObject> ParcelsNearPoint(LLVector3 position)
|
||||
{
|
||||
List<ILandObject> parcelsNear = new List<ILandObject>();
|
||||
int x, y;
|
||||
int x;
|
||||
for (x = -4; x <= 4; x += 4)
|
||||
{
|
||||
int y;
|
||||
for (y = -4; y <= 4; y += 4)
|
||||
{
|
||||
ILandObject check = getLandObject(position.X + x, position.Y + y);
|
||||
ILandObject check = GetLandObject(position.X + x, position.Y + y);
|
||||
if (check != null)
|
||||
{
|
||||
if (!parcelsNear.Contains(check))
|
||||
|
@ -750,9 +729,9 @@ namespace OpenSim.Region.Environment.Modules.World.Land
|
|||
return parcelsNear;
|
||||
}
|
||||
|
||||
public void sendYouAreBannedNotice(ScenePresence avatar)
|
||||
public void SendYouAreBannedNotice(ScenePresence avatar)
|
||||
{
|
||||
if (allowedForcefulBans)
|
||||
if (AllowedForcefulBans)
|
||||
{
|
||||
avatar.ControllingClient.SendAlertMessage(
|
||||
"You are not allowed on this parcel because you are banned. Please go away. <3 OpenSim Developers");
|
||||
|
@ -780,7 +759,7 @@ namespace OpenSim.Region.Environment.Modules.World.Land
|
|||
{
|
||||
if (parcelAvatarIsEntering.isBannedFromLand(avatar.UUID))
|
||||
{
|
||||
sendYouAreBannedNotice(avatar);
|
||||
SendYouAreBannedNotice(avatar);
|
||||
}
|
||||
else if (parcelAvatarIsEntering.isRestrictedFromLand(avatar.UUID))
|
||||
{
|
||||
|
@ -800,14 +779,14 @@ namespace OpenSim.Region.Environment.Modules.World.Land
|
|||
}
|
||||
}
|
||||
|
||||
public void sendOutNearestBanLine(IClientAPI avatar)
|
||||
public void SendOutNearestBanLine(IClientAPI avatar)
|
||||
{
|
||||
List<ScenePresence> avatars = m_scene.GetAvatars();
|
||||
foreach (ScenePresence presence in avatars)
|
||||
{
|
||||
if (presence.UUID == avatar.AgentId)
|
||||
{
|
||||
List<ILandObject> checkLandParcels = parcelsNearPoint(presence.AbsolutePosition);
|
||||
List<ILandObject> checkLandParcels = ParcelsNearPoint(presence.AbsolutePosition);
|
||||
foreach (ILandObject checkBan in checkLandParcels)
|
||||
{
|
||||
if (checkBan.isBannedFromLand(avatar.AgentId))
|
||||
|
@ -815,7 +794,7 @@ namespace OpenSim.Region.Environment.Modules.World.Land
|
|||
checkBan.sendLandProperties(-30000, false, (int) ParcelManager.ParcelResult.Single, avatar);
|
||||
return; //Only send one
|
||||
}
|
||||
else if (checkBan.isRestrictedFromLand(avatar.AgentId))
|
||||
if (checkBan.isRestrictedFromLand(avatar.AgentId))
|
||||
{
|
||||
checkBan.sendLandProperties(-40000, false, (int) ParcelManager.ParcelResult.Single, avatar);
|
||||
return; //Only send one
|
||||
|
@ -826,18 +805,11 @@ namespace OpenSim.Region.Environment.Modules.World.Land
|
|||
}
|
||||
}
|
||||
|
||||
public void sendLandUpdate(ScenePresence avatar, bool force)
|
||||
public void SendLandUpdate(ScenePresence avatar, bool force)
|
||||
{
|
||||
ILandObject over = null;
|
||||
try
|
||||
{
|
||||
over = getLandObject((int) Math.Min(255, Math.Max(0, Math.Round(avatar.AbsolutePosition.X))),
|
||||
ILandObject over = GetLandObject((int) Math.Min(255, Math.Max(0, Math.Round(avatar.AbsolutePosition.X))),
|
||||
(int) Math.Min(255, Math.Max(0, Math.Round(avatar.AbsolutePosition.Y))));
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
//m_log.Warn("[LAND]: " + "unable to get land at x: " + Math.Round(avatar.AbsolutePosition.X) + " y: " + Math.Round(avatar.AbsolutePosition.Y));
|
||||
}
|
||||
|
||||
|
||||
if (over != null)
|
||||
{
|
||||
|
@ -864,9 +836,9 @@ namespace OpenSim.Region.Environment.Modules.World.Land
|
|||
}
|
||||
}
|
||||
|
||||
public void sendLandUpdate(ScenePresence avatar)
|
||||
public void SendLandUpdate(ScenePresence avatar)
|
||||
{
|
||||
sendLandUpdate(avatar, false);
|
||||
SendLandUpdate(avatar, false);
|
||||
}
|
||||
|
||||
public void handleSignificantClientMovement(IClientAPI remote_client)
|
||||
|
@ -875,9 +847,9 @@ namespace OpenSim.Region.Environment.Modules.World.Land
|
|||
|
||||
if (clientAvatar != null)
|
||||
{
|
||||
sendLandUpdate(clientAvatar);
|
||||
sendOutNearestBanLine(remote_client);
|
||||
ILandObject parcel = getLandObject(clientAvatar.AbsolutePosition.X, clientAvatar.AbsolutePosition.Y);
|
||||
SendLandUpdate(clientAvatar);
|
||||
SendOutNearestBanLine(remote_client);
|
||||
ILandObject parcel = GetLandObject(clientAvatar.AbsolutePosition.X, clientAvatar.AbsolutePosition.Y);
|
||||
if (parcel != null)
|
||||
{
|
||||
if (clientAvatar.AbsolutePosition.Z < BAN_LINE_SAFETY_HIEGHT &&
|
||||
|
@ -893,7 +865,7 @@ namespace OpenSim.Region.Environment.Modules.World.Land
|
|||
else if (clientAvatar.AbsolutePosition.Z < BAN_LINE_SAFETY_HIEGHT &&
|
||||
parcel.isBannedFromLand(clientAvatar.UUID))
|
||||
{
|
||||
sendYouAreBannedNotice(clientAvatar);
|
||||
SendYouAreBannedNotice(clientAvatar);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -902,7 +874,7 @@ namespace OpenSim.Region.Environment.Modules.World.Land
|
|||
public void handleAnyClientMovement(ScenePresence avatar)
|
||||
//Like handleSignificantClientMovement, but called with an AgentUpdate regardless of distance.
|
||||
{
|
||||
ILandObject over = getLandObject(avatar.AbsolutePosition.X, avatar.AbsolutePosition.Y);
|
||||
ILandObject over = GetLandObject(avatar.AbsolutePosition.X, avatar.AbsolutePosition.Y);
|
||||
if (over != null)
|
||||
{
|
||||
if (!over.isBannedFromLand(avatar.UUID) || avatar.AbsolutePosition.Z >= BAN_LINE_SAFETY_HIEGHT)
|
||||
|
|
|
@ -44,8 +44,8 @@ namespace OpenSim.Region.Environment.Modules.World.Land
|
|||
m_scene = scene;
|
||||
landChannel = new LandChannel(scene);
|
||||
|
||||
m_scene.EventManager.OnParcelPrimCountAdd += landChannel.addPrimToLandPrimCounts;
|
||||
m_scene.EventManager.OnParcelPrimCountUpdate += landChannel.updateLandPrimCounts;
|
||||
m_scene.EventManager.OnParcelPrimCountAdd += landChannel.AddPrimToLandPrimCounts;
|
||||
m_scene.EventManager.OnParcelPrimCountUpdate += landChannel.UpdateLandPrimCounts;
|
||||
m_scene.EventManager.OnAvatarEnteringNewParcel += new EventManager.AvatarEnteringNewParcel(landChannel.handleAvatarChangingParcel);
|
||||
m_scene.EventManager.OnClientMovement += new EventManager.ClientMovement(landChannel.handleAnyClientMovement);
|
||||
m_scene.EventManager.OnValidateLandBuy += landChannel.handleLandValidationRequest;
|
||||
|
|
|
@ -150,7 +150,7 @@ namespace OpenSim.Region.Environment.Modules.World.Land
|
|||
newData.userLocation = args.UserLocation;
|
||||
newData.userLookAt = args.UserLookAt;
|
||||
|
||||
m_scene.LandChannel.updateLandObject(landData.localID, newData);
|
||||
m_scene.LandChannel.UpdateLandObject(landData.localID, newData);
|
||||
|
||||
sendLandUpdateToAvatarsOverMe();
|
||||
}
|
||||
|
@ -168,7 +168,7 @@ namespace OpenSim.Region.Environment.Modules.World.Land
|
|||
newData.salePrice = 0;
|
||||
newData.authBuyerID = LLUUID.Zero;
|
||||
newData.landFlags &= ~(uint) (Parcel.ParcelFlags.ForSale | Parcel.ParcelFlags.ForSaleObjects | Parcel.ParcelFlags.SellParcelObjects);
|
||||
m_scene.LandChannel.updateLandObject(landData.localID, newData);
|
||||
m_scene.LandChannel.UpdateLandObject(landData.localID, newData);
|
||||
|
||||
sendLandUpdateToAvatarsOverMe();
|
||||
}
|
||||
|
@ -234,7 +234,7 @@ namespace OpenSim.Region.Environment.Modules.World.Land
|
|||
try
|
||||
{
|
||||
over =
|
||||
m_scene.LandChannel.getLandObject((int) Math.Max(255, Math.Min(0, Math.Round(avatars[i].AbsolutePosition.X))),
|
||||
m_scene.LandChannel.GetLandObject((int) Math.Max(255, Math.Min(0, Math.Round(avatars[i].AbsolutePosition.X))),
|
||||
(int) Math.Max(255, Math.Min(0, Math.Round(avatars[i].AbsolutePosition.Y))));
|
||||
}
|
||||
catch (Exception)
|
||||
|
@ -332,7 +332,7 @@ namespace OpenSim.Region.Environment.Modules.World.Land
|
|||
}
|
||||
}
|
||||
|
||||
m_scene.LandChannel.updateLandObject(landData.localID, newData);
|
||||
m_scene.LandChannel.UpdateLandObject(landData.localID, newData);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
|
|
@ -146,7 +146,7 @@ namespace OpenSim.Region.Environment.Modules.World.Permissions
|
|||
|
||||
string reason = "Insufficient permission";
|
||||
|
||||
ILandObject land = m_scene.LandChannel.getLandObject(position.X, position.Y);
|
||||
ILandObject land = m_scene.LandChannel.GetLandObject(position.X, position.Y);
|
||||
if (land == null) return false;
|
||||
|
||||
if ((land.landData.landFlags & ((int)Parcel.ParcelFlags.CreateObjects)) ==
|
||||
|
@ -187,8 +187,8 @@ namespace OpenSim.Region.Environment.Modules.World.Permissions
|
|||
return true;
|
||||
}
|
||||
|
||||
ILandObject land1 = m_scene.LandChannel.getLandObject(oldPos.X, oldPos.Y);
|
||||
ILandObject land2 = m_scene.LandChannel.getLandObject(newPos.X, newPos.Y);
|
||||
ILandObject land1 = m_scene.LandChannel.GetLandObject(oldPos.X, oldPos.Y);
|
||||
ILandObject land2 = m_scene.LandChannel.GetLandObject(newPos.X, newPos.Y);
|
||||
|
||||
if (land1 == null || land2 == null)
|
||||
{
|
||||
|
@ -285,7 +285,7 @@ namespace OpenSim.Region.Environment.Modules.World.Permissions
|
|||
}
|
||||
|
||||
// Users should be able to edit what is over their land.
|
||||
ILandObject parcel = m_scene.LandChannel.getLandObject(task.AbsolutePosition.X, task.AbsolutePosition.Y);
|
||||
ILandObject parcel = m_scene.LandChannel.GetLandObject(task.AbsolutePosition.X, task.AbsolutePosition.Y);
|
||||
if (parcel != null && parcel.landData.ownerID == user)
|
||||
return objectOwnerMask;
|
||||
|
||||
|
@ -377,7 +377,7 @@ namespace OpenSim.Region.Environment.Modules.World.Permissions
|
|||
}
|
||||
|
||||
// Users should be able to edit what is over their land.
|
||||
ILandObject parcel = m_scene.LandChannel.getLandObject(group.AbsolutePosition.X, group.AbsolutePosition.Y);
|
||||
ILandObject parcel = m_scene.LandChannel.GetLandObject(group.AbsolutePosition.X, group.AbsolutePosition.Y);
|
||||
if ((parcel != null) && (parcel.landData.ownerID == currentUser))
|
||||
{
|
||||
permission = true;
|
||||
|
@ -599,7 +599,7 @@ namespace OpenSim.Region.Environment.Modules.World.Permissions
|
|||
Y = 0;
|
||||
|
||||
// Land owner can terraform too
|
||||
ILandObject parcel = m_scene.LandChannel.getLandObject(X, Y);
|
||||
ILandObject parcel = m_scene.LandChannel.GetLandObject(X, Y);
|
||||
if (parcel != null && GenericParcelPermission(user, parcel))
|
||||
permission = true;
|
||||
|
||||
|
@ -673,7 +673,7 @@ namespace OpenSim.Region.Environment.Modules.World.Permissions
|
|||
|
||||
protected virtual bool GenericParcelPermission(LLUUID user, LLVector3 pos)
|
||||
{
|
||||
ILandObject parcel = m_scene.LandChannel.getLandObject(pos.X, pos.Y);
|
||||
ILandObject parcel = m_scene.LandChannel.GetLandObject(pos.X, pos.Y);
|
||||
if (parcel == null) return false;
|
||||
return GenericParcelPermission(user, parcel);
|
||||
}
|
||||
|
|
|
@ -89,7 +89,7 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
{
|
||||
((SceneObjectGroup) ent).GetProperties(remoteClient);
|
||||
((SceneObjectGroup) ent).IsSelected = true;
|
||||
LandChannel.setPrimsTainted();
|
||||
LandChannel.SetPrimsTainted();
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -115,7 +115,7 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
if (Permissions.CanEditObjectPosition(remoteClient.AgentId, ((SceneObjectGroup)ent).UUID) || Permissions.CanEditObject(remoteClient.AgentId, ((SceneObjectGroup)ent).UUID))
|
||||
{
|
||||
((SceneObjectGroup) ent).IsSelected = false;
|
||||
LandChannel.setPrimsTainted();
|
||||
LandChannel.SetPrimsTainted();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -799,9 +799,9 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
{
|
||||
if (LandChannel != null)
|
||||
{
|
||||
if (LandChannel.isLandPrimCountTainted())
|
||||
if (LandChannel.IsLandPrimCountTainted())
|
||||
{
|
||||
LandChannel.performParcelPrimCountUpdate();
|
||||
LandChannel.PerformParcelPrimCountUpdate();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -937,12 +937,12 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
if (dGridSettings["allow_forceful_banlines"] != "TRUE")
|
||||
{
|
||||
m_log.Info("[GRID]: Grid is disabling forceful parcel banlists");
|
||||
LandChannel.allowedForcefulBans = false;
|
||||
LandChannel.AllowedForcefulBans = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_log.Info("[GRID]: Grid is allowing forceful parcel banlists");
|
||||
LandChannel.allowedForcefulBans = true;
|
||||
LandChannel.AllowedForcefulBans = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1305,9 +1305,9 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
{
|
||||
if (Entities.ContainsKey(sceneObject.UUID))
|
||||
{
|
||||
LandChannel.removePrimFromLandPrimCounts(sceneObject);
|
||||
LandChannel.RemovePrimFromLandPrimCounts(sceneObject);
|
||||
Entities.Remove(sceneObject.UUID);
|
||||
LandChannel.setPrimsTainted();
|
||||
LandChannel.SetPrimsTainted();
|
||||
m_innerScene.RemoveAPrimCount();
|
||||
}
|
||||
}
|
||||
|
@ -1318,7 +1318,7 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
/// <param name="prim"></param>
|
||||
public void AcknowledgeNewPrim(SceneObjectGroup prim)
|
||||
{
|
||||
prim.OnPrimCountTainted += LandChannel.setPrimsTainted;
|
||||
prim.OnPrimCountTainted += LandChannel.SetPrimsTainted;
|
||||
}
|
||||
|
||||
public void LoadPrimsFromXml(string fileName, bool newIdsFlag, LLVector3 loadOffset)
|
||||
|
@ -1525,7 +1525,7 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
|
||||
CreateAndAddScenePresence(client, child);
|
||||
|
||||
LandChannel.sendParcelOverlay(client);
|
||||
LandChannel.SendParcelOverlay(client);
|
||||
CommsManager.UserProfileCacheService.AddNewUser(client.AgentId);
|
||||
}
|
||||
}
|
||||
|
@ -1741,11 +1741,6 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
|
||||
ScenePresence avatar = m_innerScene.CreateAndAddScenePresence(client, child, appearance);
|
||||
|
||||
if (avatar.IsChildAgent)
|
||||
{
|
||||
avatar.OnSignificantClientMovement += LandChannel.handleSignificantClientMovement;
|
||||
}
|
||||
|
||||
return avatar;
|
||||
}
|
||||
|
||||
|
@ -1984,7 +1979,7 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
AddCapsHandler(agent.AgentID);
|
||||
|
||||
// Honor parcel landing type and position.
|
||||
ILandObject land = LandChannel.getLandObject(agent.startpos.X, agent.startpos.Y);
|
||||
ILandObject land = LandChannel.GetLandObject(agent.startpos.X, agent.startpos.Y);
|
||||
if (land != null)
|
||||
{
|
||||
if (land.landData.landingType == (byte)1 && land.landData.userLocation != LLVector3.Zero)
|
||||
|
@ -2803,7 +2798,7 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
|
||||
public LLUUID GetLandOwner(float x, float y)
|
||||
{
|
||||
ILandObject land = LandChannel.getLandObject(x, y);
|
||||
ILandObject land = LandChannel.GetLandObject(x, y);
|
||||
if (land == null)
|
||||
{
|
||||
return LLUUID.Zero;
|
||||
|
@ -2816,12 +2811,12 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
|
||||
public LandData GetLandData(float x, float y)
|
||||
{
|
||||
return LandChannel.getLandObject(x, y).landData;
|
||||
return LandChannel.GetLandObject(x, y).landData;
|
||||
}
|
||||
|
||||
public void SetLandMusicURL(float x, float y, string url)
|
||||
{
|
||||
ILandObject land = LandChannel.getLandObject(x, y);
|
||||
ILandObject land = LandChannel.GetLandObject(x, y);
|
||||
if (land == null)
|
||||
{
|
||||
return;
|
||||
|
@ -2835,7 +2830,7 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
|
||||
public void SetLandMediaURL(float x, float y, string url)
|
||||
{
|
||||
ILandObject land = LandChannel.getLandObject(x, y);
|
||||
ILandObject land = LandChannel.GetLandObject(x, y);
|
||||
|
||||
if (land == null)
|
||||
{
|
||||
|
@ -2885,7 +2880,7 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
|
||||
private bool scriptDanger(SceneObjectPart part,LLVector3 pos)
|
||||
{
|
||||
ILandObject parcel = LandChannel.getLandObject(pos.X, pos.Y);
|
||||
ILandObject parcel = LandChannel.GetLandObject(pos.X, pos.Y);
|
||||
if (part != null)
|
||||
{
|
||||
if (parcel != null)
|
||||
|
|
|
@ -414,7 +414,7 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
RegisterToEvents();
|
||||
SetDirectionVectors();
|
||||
|
||||
m_scene.LandChannel.sendLandUpdate(this, true);
|
||||
m_scene.LandChannel.SendLandUpdate(this, true);
|
||||
}
|
||||
|
||||
public ScenePresence(IClientAPI client, Scene world, RegionInfo reginfo, byte[] visualParams,
|
||||
|
@ -597,7 +597,7 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
//if (!m_gotAllObjectsInScene)
|
||||
//{
|
||||
m_scene.SendAllSceneObjectsToClient(this);
|
||||
m_scene.LandChannel.sendLandUpdate(this, true);
|
||||
m_scene.LandChannel.SendLandUpdate(this, true);
|
||||
|
||||
//m_gotAllObjectsInScene = true;
|
||||
//}
|
||||
|
|
|
@ -106,7 +106,7 @@ namespace OpenSim.Region.ExtensionsScriptModule
|
|||
public void osAddToLandPassList(Key avatar, float hours)
|
||||
{
|
||||
Vector myPosition = Task.AbsolutePosition;
|
||||
ILandObject myParcel = Scene.LandChannel.getLandObject(myPosition.X, myPosition.Y);
|
||||
ILandObject myParcel = Scene.LandChannel.GetLandObject(myPosition.X, myPosition.Y);
|
||||
if (myParcel == null)
|
||||
{
|
||||
//Dont do anything!
|
||||
|
|
|
@ -3875,7 +3875,7 @@ namespace OpenSim.Region.ScriptEngine.Common
|
|||
// or
|
||||
// if the object is owned by a person with estate access.
|
||||
|
||||
ILandObject parcel = World.LandChannel.getLandObject(av.AbsolutePosition.X, av.AbsolutePosition.Y);
|
||||
ILandObject parcel = World.LandChannel.GetLandObject(av.AbsolutePosition.X, av.AbsolutePosition.Y);
|
||||
if (parcel != null)
|
||||
{
|
||||
if (m_host.ObjectOwner == parcel.landData.ownerID ||
|
||||
|
@ -4214,7 +4214,7 @@ namespace OpenSim.Region.ScriptEngine.Common
|
|||
{
|
||||
m_host.AddScriptLPS(1);
|
||||
LLUUID key;
|
||||
LandData land = World.LandChannel.getLandObject(m_host.AbsolutePosition.X, m_host.AbsolutePosition.Y).landData;
|
||||
LandData land = World.LandChannel.GetLandObject(m_host.AbsolutePosition.X, m_host.AbsolutePosition.Y).landData;
|
||||
if (land.ownerID == m_host.OwnerID)
|
||||
{
|
||||
ParcelManager.ParcelAccessEntry entry = new ParcelManager.ParcelAccessEntry();
|
||||
|
@ -5599,7 +5599,7 @@ namespace OpenSim.Region.ScriptEngine.Common
|
|||
{
|
||||
m_host.AddScriptLPS(1);
|
||||
LLUUID key;
|
||||
LandData land = World.LandChannel.getLandObject(m_host.AbsolutePosition.X, m_host.AbsolutePosition.Y).landData;
|
||||
LandData land = World.LandChannel.GetLandObject(m_host.AbsolutePosition.X, m_host.AbsolutePosition.Y).landData;
|
||||
if (land.ownerID == m_host.OwnerID)
|
||||
{
|
||||
ParcelManager.ParcelAccessEntry entry = new ParcelManager.ParcelAccessEntry();
|
||||
|
@ -5617,7 +5617,7 @@ namespace OpenSim.Region.ScriptEngine.Common
|
|||
{
|
||||
m_host.AddScriptLPS(1);
|
||||
LLUUID key;
|
||||
LandData land = World.LandChannel.getLandObject(m_host.AbsolutePosition.X, m_host.AbsolutePosition.Y).landData;
|
||||
LandData land = World.LandChannel.GetLandObject(m_host.AbsolutePosition.X, m_host.AbsolutePosition.Y).landData;
|
||||
if (land.ownerID == m_host.OwnerID)
|
||||
{
|
||||
if (LLUUID.TryParse(avatar, out key))
|
||||
|
@ -5638,7 +5638,7 @@ namespace OpenSim.Region.ScriptEngine.Common
|
|||
{
|
||||
m_host.AddScriptLPS(1);
|
||||
LLUUID key;
|
||||
LandData land = World.LandChannel.getLandObject(m_host.AbsolutePosition.X, m_host.AbsolutePosition.Y).landData;
|
||||
LandData land = World.LandChannel.GetLandObject(m_host.AbsolutePosition.X, m_host.AbsolutePosition.Y).landData;
|
||||
if (land.ownerID == m_host.OwnerID)
|
||||
{
|
||||
if (LLUUID.TryParse(avatar, out key))
|
||||
|
@ -5709,7 +5709,7 @@ namespace OpenSim.Region.ScriptEngine.Common
|
|||
public int llGetParcelFlags(LSL_Types.Vector3 pos)
|
||||
{
|
||||
m_host.AddScriptLPS(1);
|
||||
return (int)World.LandChannel.getLandObject((float)pos.x, (float)pos.y).landData.landFlags;
|
||||
return (int)World.LandChannel.GetLandObject((float)pos.x, (float)pos.y).landData.landFlags;
|
||||
}
|
||||
|
||||
public int llGetRegionFlags()
|
||||
|
@ -5763,7 +5763,7 @@ namespace OpenSim.Region.ScriptEngine.Common
|
|||
public void llResetLandBanList()
|
||||
{
|
||||
m_host.AddScriptLPS(1);
|
||||
LandData land = World.LandChannel.getLandObject(m_host.AbsolutePosition.X, m_host.AbsolutePosition.Y).landData;
|
||||
LandData land = World.LandChannel.GetLandObject(m_host.AbsolutePosition.X, m_host.AbsolutePosition.Y).landData;
|
||||
if (land.ownerID == m_host.OwnerID)
|
||||
{
|
||||
foreach (ParcelManager.ParcelAccessEntry entry in land.parcelAccessList)
|
||||
|
@ -5779,7 +5779,7 @@ namespace OpenSim.Region.ScriptEngine.Common
|
|||
public void llResetLandPassList()
|
||||
{
|
||||
m_host.AddScriptLPS(1);
|
||||
LandData land = World.LandChannel.getLandObject(m_host.AbsolutePosition.X, m_host.AbsolutePosition.Y).landData;
|
||||
LandData land = World.LandChannel.GetLandObject(m_host.AbsolutePosition.X, m_host.AbsolutePosition.Y).landData;
|
||||
if (land.ownerID == m_host.OwnerID)
|
||||
{
|
||||
foreach (ParcelManager.ParcelAccessEntry entry in land.parcelAccessList)
|
||||
|
@ -5858,7 +5858,7 @@ namespace OpenSim.Region.ScriptEngine.Common
|
|||
public LSL_Types.list llGetParcelPrimOwners(LSL_Types.Vector3 pos)
|
||||
{
|
||||
m_host.AddScriptLPS(1);
|
||||
LandObject land = (LandObject)World.LandChannel.getLandObject((float)pos.x, (float)pos.y);
|
||||
LandObject land = (LandObject)World.LandChannel.GetLandObject((float)pos.x, (float)pos.y);
|
||||
LSL_Types.list ret = new LSL_Types.list();
|
||||
if (land != null)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue