Merge branch 'master' into careminster-presence-refactor
commit
407c2b1823
|
@ -372,6 +372,11 @@ namespace OpenSim.Data.MSSQL
|
||||||
return new List<int>();
|
return new List<int>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<int> GetEstatesByOwner(UUID ownerID)
|
||||||
|
{
|
||||||
|
return new List<int>();
|
||||||
|
}
|
||||||
|
|
||||||
public bool LinkRegion(UUID regionID, int estateID)
|
public bool LinkRegion(UUID regionID, int estateID)
|
||||||
{
|
{
|
||||||
// TODO: Implementation!
|
// TODO: Implementation!
|
||||||
|
|
|
@ -484,6 +484,36 @@ namespace OpenSim.Data.MySQL
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<int> GetEstatesByOwner(UUID ownerID)
|
||||||
|
{
|
||||||
|
List<int> result = new List<int>();
|
||||||
|
|
||||||
|
using (MySqlConnection dbcon = new MySqlConnection(m_connectionString))
|
||||||
|
{
|
||||||
|
dbcon.Open();
|
||||||
|
|
||||||
|
using (MySqlCommand cmd = dbcon.CreateCommand())
|
||||||
|
{
|
||||||
|
cmd.CommandText = "select estateID from estate_settings where EstateOwner = ?EstateOwner";
|
||||||
|
cmd.Parameters.AddWithValue("?EstateOwner", ownerID);
|
||||||
|
|
||||||
|
using (IDataReader reader = cmd.ExecuteReader())
|
||||||
|
{
|
||||||
|
while (reader.Read())
|
||||||
|
{
|
||||||
|
result.Add(Convert.ToInt32(reader["EstateID"]));
|
||||||
|
}
|
||||||
|
reader.Close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
dbcon.Close();
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
public bool LinkRegion(UUID regionID, int estateID)
|
public bool LinkRegion(UUID regionID, int estateID)
|
||||||
{
|
{
|
||||||
using (MySqlConnection dbcon = new MySqlConnection(m_connectionString))
|
using (MySqlConnection dbcon = new MySqlConnection(m_connectionString))
|
||||||
|
|
|
@ -0,0 +1,133 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) Contributors, http://opensimulator.org/
|
||||||
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions are met:
|
||||||
|
* * Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
* * Neither the name of the OpenSimulator Project nor the
|
||||||
|
* names of its contributors may be used to endorse or promote products
|
||||||
|
* derived from this software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
|
||||||
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
|
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Reflection;
|
||||||
|
using log4net;
|
||||||
|
using OpenMetaverse;
|
||||||
|
using OpenSim.Framework;
|
||||||
|
using OpenSim.Region.Framework;
|
||||||
|
using OpenSim.Region.Framework.Interfaces;
|
||||||
|
|
||||||
|
namespace OpenSim.Data.Null
|
||||||
|
{
|
||||||
|
public class NullEstateStore : IEstateDataStore
|
||||||
|
{
|
||||||
|
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
||||||
|
|
||||||
|
private string m_connectionString;
|
||||||
|
|
||||||
|
protected virtual Assembly Assembly
|
||||||
|
{
|
||||||
|
get { return GetType().Assembly; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public NullEstateStore()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public NullEstateStore(string connectionString)
|
||||||
|
{
|
||||||
|
Initialise(connectionString);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Initialise(string connectionString)
|
||||||
|
{
|
||||||
|
m_connectionString = connectionString;
|
||||||
|
}
|
||||||
|
|
||||||
|
private string[] FieldList
|
||||||
|
{
|
||||||
|
get { return new string[0]; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public EstateSettings LoadEstateSettings(UUID regionID, bool create)
|
||||||
|
{
|
||||||
|
// This fools the initialization caller into thinking an estate was fetched (a check in OpenSimBase).
|
||||||
|
// The estate info is pretty empty so don't try banning anyone.
|
||||||
|
EstateSettings oneEstate = new EstateSettings();
|
||||||
|
oneEstate.EstateID = 1;
|
||||||
|
return oneEstate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void StoreEstateSettings(EstateSettings es)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
public EstateSettings LoadEstateSettings(int estateID)
|
||||||
|
{
|
||||||
|
return new EstateSettings();
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<EstateSettings> LoadEstateSettingsAll()
|
||||||
|
{
|
||||||
|
List<EstateSettings> allEstateSettings = new List<EstateSettings>();
|
||||||
|
allEstateSettings.Add(new EstateSettings());
|
||||||
|
return allEstateSettings;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<int> GetEstatesAll()
|
||||||
|
{
|
||||||
|
List<int> result = new List<int>();
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<int> GetEstates(string search)
|
||||||
|
{
|
||||||
|
List<int> result = new List<int>();
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool LinkRegion(UUID regionID, int estateID)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<UUID> GetRegions(int estateID)
|
||||||
|
{
|
||||||
|
List<UUID> result = new List<UUID>();
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool DeleteEstate(int estateID)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
#region IEstateDataStore Members
|
||||||
|
|
||||||
|
|
||||||
|
public List<int> GetEstatesByOwner(UUID ownerID)
|
||||||
|
{
|
||||||
|
return new List<int>();
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
|
@ -38,6 +38,15 @@ namespace OpenSim.Data.Null
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class NullSimulationData : ISimulationDataStore
|
public class NullSimulationData : ISimulationDataStore
|
||||||
{
|
{
|
||||||
|
public NullSimulationData()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public NullSimulationData(string connectionString)
|
||||||
|
{
|
||||||
|
Initialise(connectionString);
|
||||||
|
}
|
||||||
|
|
||||||
public void Initialise(string dbfile)
|
public void Initialise(string dbfile)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
|
@ -85,12 +94,20 @@ namespace OpenSim.Data.Null
|
||||||
return new List<SceneObjectGroup>();
|
return new List<SceneObjectGroup>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Dictionary<UUID, double[,]> m_terrains = new Dictionary<UUID, double[,]>();
|
||||||
public void StoreTerrain(double[,] ter, UUID regionID)
|
public void StoreTerrain(double[,] ter, UUID regionID)
|
||||||
{
|
{
|
||||||
|
if (m_terrains.ContainsKey(regionID))
|
||||||
|
m_terrains.Remove(regionID);
|
||||||
|
m_terrains.Add(regionID, ter);
|
||||||
}
|
}
|
||||||
|
|
||||||
public double[,] LoadTerrain(UUID regionID)
|
public double[,] LoadTerrain(UUID regionID)
|
||||||
{
|
{
|
||||||
|
if (m_terrains.ContainsKey(regionID))
|
||||||
|
{
|
||||||
|
return m_terrains[regionID];
|
||||||
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -412,6 +412,28 @@ namespace OpenSim.Data.SQLite
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<int> GetEstatesByOwner(UUID ownerID)
|
||||||
|
{
|
||||||
|
List<int> result = new List<int>();
|
||||||
|
|
||||||
|
string sql = "select EstateID from estate_settings where estate_settings.EstateOwner = :EstateOwner";
|
||||||
|
|
||||||
|
SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand();
|
||||||
|
|
||||||
|
cmd.CommandText = sql;
|
||||||
|
cmd.Parameters.AddWithValue(":EstateOwner", ownerID);
|
||||||
|
|
||||||
|
IDataReader r = cmd.ExecuteReader();
|
||||||
|
|
||||||
|
while (r.Read())
|
||||||
|
{
|
||||||
|
result.Add(Convert.ToInt32(r["EstateID"]));
|
||||||
|
}
|
||||||
|
r.Close();
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
public bool LinkRegion(UUID regionID, int estateID)
|
public bool LinkRegion(UUID regionID, int estateID)
|
||||||
{
|
{
|
||||||
SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand();
|
SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand();
|
||||||
|
|
|
@ -402,6 +402,28 @@ namespace OpenSim.Data.SQLiteLegacy
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<int> GetEstatesByOwner(UUID ownerID)
|
||||||
|
{
|
||||||
|
List<int> result = new List<int>();
|
||||||
|
|
||||||
|
string sql = "select EstateID from estate_settings where estate_settings.EstateOwner = :EstateOwner";
|
||||||
|
|
||||||
|
SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand();
|
||||||
|
|
||||||
|
cmd.CommandText = sql;
|
||||||
|
cmd.Parameters.Add(":EstateOwner", ownerID);
|
||||||
|
|
||||||
|
IDataReader r = cmd.ExecuteReader();
|
||||||
|
|
||||||
|
while (r.Read())
|
||||||
|
{
|
||||||
|
result.Add(Convert.ToInt32(r["EstateID"]));
|
||||||
|
}
|
||||||
|
r.Close();
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
public bool LinkRegion(UUID regionID, int estateID)
|
public bool LinkRegion(UUID regionID, int estateID)
|
||||||
{
|
{
|
||||||
SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand();
|
SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand();
|
||||||
|
|
|
@ -77,7 +77,6 @@ namespace OpenSim.Region.Framework.Interfaces
|
||||||
/// </param>
|
/// </param>
|
||||||
void Clear(bool setupDefaultParcel);
|
void Clear(bool setupDefaultParcel);
|
||||||
|
|
||||||
bool IsLandPrimCountTainted();
|
|
||||||
bool IsForcefulBansAllowed();
|
bool IsForcefulBansAllowed();
|
||||||
void UpdateLandObject(int localID, LandData data);
|
void UpdateLandObject(int localID, LandData data);
|
||||||
void ReturnObjectsInParcel(int localID, uint returnType, UUID[] agentIDs, UUID[] taskIDs, IClientAPI remoteClient);
|
void ReturnObjectsInParcel(int localID, uint returnType, UUID[] agentIDs, UUID[] taskIDs, IClientAPI remoteClient);
|
||||||
|
|
|
@ -89,7 +89,7 @@ namespace OpenSim.Framework
|
||||||
void SendForceObjectSelect(int local_id, int request_type, List<UUID> returnIDs, IClientAPI remote_client);
|
void SendForceObjectSelect(int local_id, int request_type, List<UUID> returnIDs, IClientAPI remote_client);
|
||||||
void SendLandObjectOwners(IClientAPI remote_client);
|
void SendLandObjectOwners(IClientAPI remote_client);
|
||||||
void ReturnLandObjects(uint type, UUID[] owners, UUID[] tasks, IClientAPI remote_client);
|
void ReturnLandObjects(uint type, UUID[] owners, UUID[] tasks, IClientAPI remote_client);
|
||||||
void ResetLandPrimCounts();
|
void ResetOverMeRecord();
|
||||||
void UpdateLandSold(UUID avatarID, UUID groupID, bool groupOwned, uint AuctionID, int claimprice, int area);
|
void UpdateLandSold(UUID avatarID, UUID groupID, bool groupOwned, uint AuctionID, int claimprice, int area);
|
||||||
|
|
||||||
void DeedToGroup(UUID groupID);
|
void DeedToGroup(UUID groupID);
|
||||||
|
|
|
@ -54,12 +54,10 @@ namespace OpenSim.Framework
|
||||||
private int _claimPrice = 0; //Unemplemented
|
private int _claimPrice = 0; //Unemplemented
|
||||||
private UUID _globalID = UUID.Zero;
|
private UUID _globalID = UUID.Zero;
|
||||||
private UUID _groupID = UUID.Zero;
|
private UUID _groupID = UUID.Zero;
|
||||||
private int _groupPrims = 0;
|
|
||||||
private bool _isGroupOwned = false;
|
private bool _isGroupOwned = false;
|
||||||
private byte[] _bitmap = new byte[512];
|
private byte[] _bitmap = new byte[512];
|
||||||
private string _description = String.Empty;
|
private string _description = String.Empty;
|
||||||
|
|
||||||
|
|
||||||
private uint _flags = (uint) ParcelFlags.AllowFly | (uint) ParcelFlags.AllowLandmark |
|
private uint _flags = (uint) ParcelFlags.AllowFly | (uint) ParcelFlags.AllowLandmark |
|
||||||
(uint) ParcelFlags.AllowAPrimitiveEntry |
|
(uint) ParcelFlags.AllowAPrimitiveEntry |
|
||||||
(uint) ParcelFlags.AllowDeedToGroup |
|
(uint) ParcelFlags.AllowDeedToGroup |
|
||||||
|
@ -72,17 +70,13 @@ namespace OpenSim.Framework
|
||||||
private int _localID = 0;
|
private int _localID = 0;
|
||||||
private byte _mediaAutoScale = 0;
|
private byte _mediaAutoScale = 0;
|
||||||
private UUID _mediaID = UUID.Zero;
|
private UUID _mediaID = UUID.Zero;
|
||||||
|
|
||||||
private string _mediaURL = String.Empty;
|
private string _mediaURL = String.Empty;
|
||||||
private string _musicURL = String.Empty;
|
private string _musicURL = String.Empty;
|
||||||
private int _otherPrims = 0;
|
|
||||||
private UUID _ownerID = UUID.Zero;
|
private UUID _ownerID = UUID.Zero;
|
||||||
private int _ownerPrims = 0;
|
|
||||||
private List<ParcelManager.ParcelAccessEntry> _parcelAccessList = new List<ParcelManager.ParcelAccessEntry>();
|
private List<ParcelManager.ParcelAccessEntry> _parcelAccessList = new List<ParcelManager.ParcelAccessEntry>();
|
||||||
private float _passHours = 0;
|
private float _passHours = 0;
|
||||||
private int _passPrice = 0;
|
private int _passPrice = 0;
|
||||||
private int _salePrice = 0; //Unemeplemented. Parcels price.
|
private int _salePrice = 0; //Unemeplemented. Parcels price.
|
||||||
private int _selectedPrims = 0;
|
|
||||||
private int _simwideArea = 0;
|
private int _simwideArea = 0;
|
||||||
private int _simwidePrims = 0;
|
private int _simwidePrims = 0;
|
||||||
private UUID _snapshotID = UUID.Zero;
|
private UUID _snapshotID = UUID.Zero;
|
||||||
|
@ -283,19 +277,6 @@ namespace OpenSim.Framework
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Number of SceneObjectPart that are owned by a Group
|
|
||||||
/// </summary>
|
|
||||||
[XmlIgnore]
|
|
||||||
public int GroupPrims {
|
|
||||||
get {
|
|
||||||
return _groupPrims;
|
|
||||||
}
|
|
||||||
set {
|
|
||||||
_groupPrims = value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns true if the Land Parcel is owned by a group
|
/// Returns true if the Land Parcel is owned by a group
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -453,20 +434,6 @@ namespace OpenSim.Framework
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Number of SceneObjectPart that are owned by users who do not own the parcel
|
|
||||||
/// and don't have the 'group. These are elegable for AutoReturn collection
|
|
||||||
/// </summary>
|
|
||||||
[XmlIgnore]
|
|
||||||
public int OtherPrims {
|
|
||||||
get {
|
|
||||||
return _otherPrims;
|
|
||||||
}
|
|
||||||
set {
|
|
||||||
_otherPrims = value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Owner Avatar or Group of the parcel. Naturally, all land masses must be
|
/// Owner Avatar or Group of the parcel. Naturally, all land masses must be
|
||||||
/// owned by someone
|
/// owned by someone
|
||||||
|
@ -480,19 +447,6 @@ namespace OpenSim.Framework
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Number of SceneObjectPart that are owned by the owner of the parcel
|
|
||||||
/// </summary>
|
|
||||||
[XmlIgnore]
|
|
||||||
public int OwnerPrims {
|
|
||||||
get {
|
|
||||||
return _ownerPrims;
|
|
||||||
}
|
|
||||||
set {
|
|
||||||
_ownerPrims = value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// List of access data for the parcel. User data, some bitflags, and a time
|
/// List of access data for the parcel. User data, some bitflags, and a time
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -541,19 +495,6 @@ namespace OpenSim.Framework
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Number of SceneObjectPart that are currently selected by avatar
|
|
||||||
/// </summary>
|
|
||||||
[XmlIgnore]
|
|
||||||
public int SelectedPrims {
|
|
||||||
get {
|
|
||||||
return _selectedPrims;
|
|
||||||
}
|
|
||||||
set {
|
|
||||||
_selectedPrims = value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Number of meters^2 in the Simulator
|
/// Number of meters^2 in the Simulator
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -619,7 +560,7 @@ namespace OpenSim.Framework
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Number of minutes to return SceneObjectGroup that are owned by someone who doesn't own
|
/// Autoreturn number of minutes to return SceneObjectGroup that are owned by someone who doesn't own
|
||||||
/// the parcel and isn't set to the same 'group' as the parcel.
|
/// the parcel and isn't set to the same 'group' as the parcel.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int OtherCleanTime {
|
public int OtherCleanTime {
|
||||||
|
@ -666,10 +607,6 @@ namespace OpenSim.Framework
|
||||||
landData._claimPrice = _claimPrice;
|
landData._claimPrice = _claimPrice;
|
||||||
landData._globalID = _globalID;
|
landData._globalID = _globalID;
|
||||||
landData._groupID = _groupID;
|
landData._groupID = _groupID;
|
||||||
landData._groupPrims = _groupPrims;
|
|
||||||
landData._otherPrims = _otherPrims;
|
|
||||||
landData._ownerPrims = _ownerPrims;
|
|
||||||
landData._selectedPrims = _selectedPrims;
|
|
||||||
landData._isGroupOwned = _isGroupOwned;
|
landData._isGroupOwned = _isGroupOwned;
|
||||||
landData._localID = _localID;
|
landData._localID = _localID;
|
||||||
landData._landingType = _landingType;
|
landData._landingType = _landingType;
|
||||||
|
|
|
@ -44,9 +44,6 @@ namespace OpenSim.Framework.Serialization.Tests
|
||||||
private static string preSerialized = "<?xml version=\"1.0\" encoding=\"utf-16\"?>\n<LandData>\n <Area>128</Area>\n <AuctionID>0</AuctionID>\n <AuthBuyerID>00000000-0000-0000-0000-000000000000</AuthBuyerID>\n <Category>10</Category>\n <ClaimDate>0</ClaimDate>\n <ClaimPrice>0</ClaimPrice>\n <GlobalID>54ff9641-dd40-4a2c-b1f1-47dd3af24e50</GlobalID>\n <GroupID>d740204e-bbbf-44aa-949d-02c7d739f6a5</GroupID>\n <IsGroupOwned>False</IsGroupOwned>\n <Bitmap>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</Bitmap>\n <Description>land data to test LandDataSerializer</Description>\n <Flags>536870944</Flags>\n <LandingType>2</LandingType>\n <Name>LandDataSerializerTest Land</Name>\n <Status>0</Status>\n <LocalID>0</LocalID>\n <MediaAutoScale>1</MediaAutoScale>\n <MediaID>d4452578-2f25-4b97-a81b-819af559cfd7</MediaID>\n <MediaURL>http://videos.opensimulator.org/bumblebee.mp4</MediaURL>\n <MusicURL />\n <OwnerID>1b8eedf9-6d15-448b-8015-24286f1756bf</OwnerID>\n <ParcelAccessList />\n <PassHours>0</PassHours>\n <PassPrice>0</PassPrice>\n <SalePrice>0</SalePrice>\n <SnapshotID>00000000-0000-0000-0000-000000000000</SnapshotID>\n <UserLocation><0, 0, 0></UserLocation>\n <UserLookAt><0, 0, 0></UserLookAt>\n <Dwell>0</Dwell>\n <OtherCleanTime>0</OtherCleanTime>\n</LandData>";
|
private static string preSerialized = "<?xml version=\"1.0\" encoding=\"utf-16\"?>\n<LandData>\n <Area>128</Area>\n <AuctionID>0</AuctionID>\n <AuthBuyerID>00000000-0000-0000-0000-000000000000</AuthBuyerID>\n <Category>10</Category>\n <ClaimDate>0</ClaimDate>\n <ClaimPrice>0</ClaimPrice>\n <GlobalID>54ff9641-dd40-4a2c-b1f1-47dd3af24e50</GlobalID>\n <GroupID>d740204e-bbbf-44aa-949d-02c7d739f6a5</GroupID>\n <IsGroupOwned>False</IsGroupOwned>\n <Bitmap>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</Bitmap>\n <Description>land data to test LandDataSerializer</Description>\n <Flags>536870944</Flags>\n <LandingType>2</LandingType>\n <Name>LandDataSerializerTest Land</Name>\n <Status>0</Status>\n <LocalID>0</LocalID>\n <MediaAutoScale>1</MediaAutoScale>\n <MediaID>d4452578-2f25-4b97-a81b-819af559cfd7</MediaID>\n <MediaURL>http://videos.opensimulator.org/bumblebee.mp4</MediaURL>\n <MusicURL />\n <OwnerID>1b8eedf9-6d15-448b-8015-24286f1756bf</OwnerID>\n <ParcelAccessList />\n <PassHours>0</PassHours>\n <PassPrice>0</PassPrice>\n <SalePrice>0</SalePrice>\n <SnapshotID>00000000-0000-0000-0000-000000000000</SnapshotID>\n <UserLocation><0, 0, 0></UserLocation>\n <UserLookAt><0, 0, 0></UserLookAt>\n <Dwell>0</Dwell>\n <OtherCleanTime>0</OtherCleanTime>\n</LandData>";
|
||||||
private static string preSerializedWithParcelAccessList = "<?xml version=\"1.0\" encoding=\"utf-16\"?>\n<LandData>\n <Area>128</Area>\n <AuctionID>0</AuctionID>\n <AuthBuyerID>00000000-0000-0000-0000-000000000000</AuthBuyerID>\n <Category>10</Category>\n <ClaimDate>0</ClaimDate>\n <ClaimPrice>0</ClaimPrice>\n <GlobalID>54ff9641-dd40-4a2c-b1f1-47dd3af24e50</GlobalID>\n <GroupID>d740204e-bbbf-44aa-949d-02c7d739f6a5</GroupID>\n <IsGroupOwned>False</IsGroupOwned>\n <Bitmap>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</Bitmap>\n <Description>land data to test LandDataSerializer</Description>\n <Flags>536870944</Flags>\n <LandingType>2</LandingType>\n <Name>LandDataSerializerTest Land</Name>\n <Status>0</Status>\n <LocalID>0</LocalID>\n <MediaAutoScale>1</MediaAutoScale>\n <MediaID>d4452578-2f25-4b97-a81b-819af559cfd7</MediaID>\n <MediaURL>http://videos.opensimulator.org/bumblebee.mp4</MediaURL>\n <MusicURL />\n <OwnerID>1b8eedf9-6d15-448b-8015-24286f1756bf</OwnerID>\n <ParcelAccessList>\n <ParcelAccessEntry>\n <AgentID>62d65d45-c91a-4f77-862c-46557d978b6c</AgentID>\n <Time>2009-10-01T00:00:00</Time>\n <AccessList>2</AccessList>\n </ParcelAccessEntry>\n <ParcelAccessEntry>\n <AgentID>ec2a8d18-2378-4fe0-8b68-2a31b57c481e</AgentID>\n <Time>2010-10-20T00:00:00</Time>\n <AccessList>1</AccessList>\n </ParcelAccessEntry>\n </ParcelAccessList>\n <PassHours>0</PassHours>\n <PassPrice>0</PassPrice>\n <SalePrice>0</SalePrice>\n <SnapshotID>00000000-0000-0000-0000-000000000000</SnapshotID>\n <UserLocation><0, 0, 0></UserLocation>\n <UserLookAt><0, 0, 0></UserLookAt>\n <Dwell>0</Dwell>\n <OtherCleanTime>0</OtherCleanTime>\n</LandData>";
|
private static string preSerializedWithParcelAccessList = "<?xml version=\"1.0\" encoding=\"utf-16\"?>\n<LandData>\n <Area>128</Area>\n <AuctionID>0</AuctionID>\n <AuthBuyerID>00000000-0000-0000-0000-000000000000</AuthBuyerID>\n <Category>10</Category>\n <ClaimDate>0</ClaimDate>\n <ClaimPrice>0</ClaimPrice>\n <GlobalID>54ff9641-dd40-4a2c-b1f1-47dd3af24e50</GlobalID>\n <GroupID>d740204e-bbbf-44aa-949d-02c7d739f6a5</GroupID>\n <IsGroupOwned>False</IsGroupOwned>\n <Bitmap>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</Bitmap>\n <Description>land data to test LandDataSerializer</Description>\n <Flags>536870944</Flags>\n <LandingType>2</LandingType>\n <Name>LandDataSerializerTest Land</Name>\n <Status>0</Status>\n <LocalID>0</LocalID>\n <MediaAutoScale>1</MediaAutoScale>\n <MediaID>d4452578-2f25-4b97-a81b-819af559cfd7</MediaID>\n <MediaURL>http://videos.opensimulator.org/bumblebee.mp4</MediaURL>\n <MusicURL />\n <OwnerID>1b8eedf9-6d15-448b-8015-24286f1756bf</OwnerID>\n <ParcelAccessList>\n <ParcelAccessEntry>\n <AgentID>62d65d45-c91a-4f77-862c-46557d978b6c</AgentID>\n <Time>2009-10-01T00:00:00</Time>\n <AccessList>2</AccessList>\n </ParcelAccessEntry>\n <ParcelAccessEntry>\n <AgentID>ec2a8d18-2378-4fe0-8b68-2a31b57c481e</AgentID>\n <Time>2010-10-20T00:00:00</Time>\n <AccessList>1</AccessList>\n </ParcelAccessEntry>\n </ParcelAccessList>\n <PassHours>0</PassHours>\n <PassPrice>0</PassPrice>\n <SalePrice>0</SalePrice>\n <SnapshotID>00000000-0000-0000-0000-000000000000</SnapshotID>\n <UserLocation><0, 0, 0></UserLocation>\n <UserLookAt><0, 0, 0></UserLookAt>\n <Dwell>0</Dwell>\n <OtherCleanTime>0</OtherCleanTime>\n</LandData>";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
[SetUp]
|
[SetUp]
|
||||||
public void setup()
|
public void setup()
|
||||||
{
|
{
|
||||||
|
@ -62,7 +59,6 @@ namespace OpenSim.Framework.Serialization.Tests
|
||||||
this.land.ClaimPrice = 0;
|
this.land.ClaimPrice = 0;
|
||||||
this.land.GlobalID = new UUID("54ff9641-dd40-4a2c-b1f1-47dd3af24e50");
|
this.land.GlobalID = new UUID("54ff9641-dd40-4a2c-b1f1-47dd3af24e50");
|
||||||
this.land.GroupID = new UUID("d740204e-bbbf-44aa-949d-02c7d739f6a5");
|
this.land.GroupID = new UUID("d740204e-bbbf-44aa-949d-02c7d739f6a5");
|
||||||
this.land.GroupPrims = 0;
|
|
||||||
this.land.Description = "land data to test LandDataSerializer";
|
this.land.Description = "land data to test LandDataSerializer";
|
||||||
this.land.Flags = (uint)(ParcelFlags.AllowDamage | ParcelFlags.AllowVoiceChat);
|
this.land.Flags = (uint)(ParcelFlags.AllowDamage | ParcelFlags.AllowVoiceChat);
|
||||||
this.land.LandingType = (byte)LandingType.Direct;
|
this.land.LandingType = (byte)LandingType.Direct;
|
||||||
|
|
|
@ -5003,7 +5003,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
AddLocalPacketHandler(PacketType.TeleportLocationRequest, HandleTeleportLocationRequest);
|
AddLocalPacketHandler(PacketType.TeleportLocationRequest, HandleTeleportLocationRequest);
|
||||||
AddLocalPacketHandler(PacketType.UUIDNameRequest, HandleUUIDNameRequest, false);
|
AddLocalPacketHandler(PacketType.UUIDNameRequest, HandleUUIDNameRequest, false);
|
||||||
AddLocalPacketHandler(PacketType.RegionHandleRequest, HandleRegionHandleRequest);
|
AddLocalPacketHandler(PacketType.RegionHandleRequest, HandleRegionHandleRequest);
|
||||||
AddLocalPacketHandler(PacketType.ParcelInfoRequest, HandleParcelInfoRequest, false);
|
AddLocalPacketHandler(PacketType.ParcelInfoRequest, HandleParcelInfoRequest);
|
||||||
AddLocalPacketHandler(PacketType.ParcelAccessListRequest, HandleParcelAccessListRequest, false);
|
AddLocalPacketHandler(PacketType.ParcelAccessListRequest, HandleParcelAccessListRequest, false);
|
||||||
AddLocalPacketHandler(PacketType.ParcelAccessListUpdate, HandleParcelAccessListUpdate, false);
|
AddLocalPacketHandler(PacketType.ParcelAccessListUpdate, HandleParcelAccessListUpdate, false);
|
||||||
AddLocalPacketHandler(PacketType.ParcelPropertiesRequest, HandleParcelPropertiesRequest, false);
|
AddLocalPacketHandler(PacketType.ParcelPropertiesRequest, HandleParcelPropertiesRequest, false);
|
||||||
|
@ -8876,13 +8876,29 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
case "instantmessage":
|
case "instantmessage":
|
||||||
if (((Scene)m_scene).Permissions.CanIssueEstateCommand(AgentId, false))
|
if (((Scene)m_scene).Permissions.CanIssueEstateCommand(AgentId, false))
|
||||||
{
|
{
|
||||||
if (messagePacket.ParamList.Length < 5)
|
if (messagePacket.ParamList.Length < 2)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
UUID invoice = messagePacket.MethodData.Invoice;
|
UUID invoice = messagePacket.MethodData.Invoice;
|
||||||
UUID SenderID = new UUID(Utils.BytesToString(messagePacket.ParamList[2].Parameter));
|
|
||||||
string SenderName = Utils.BytesToString(messagePacket.ParamList[3].Parameter);
|
|
||||||
string Message = Utils.BytesToString(messagePacket.ParamList[4].Parameter);
|
|
||||||
UUID sessionID = messagePacket.AgentData.SessionID;
|
UUID sessionID = messagePacket.AgentData.SessionID;
|
||||||
|
|
||||||
|
UUID SenderID;
|
||||||
|
string SenderName;
|
||||||
|
string Message;
|
||||||
|
|
||||||
|
if (messagePacket.ParamList.Length < 5)
|
||||||
|
{
|
||||||
|
SenderID = AgentId;
|
||||||
|
SenderName = Utils.BytesToString(messagePacket.ParamList[0].Parameter);
|
||||||
|
Message = Utils.BytesToString(messagePacket.ParamList[1].Parameter);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SenderID = new UUID(Utils.BytesToString(messagePacket.ParamList[2].Parameter));
|
||||||
|
SenderName = Utils.BytesToString(messagePacket.ParamList[3].Parameter);
|
||||||
|
Message = Utils.BytesToString(messagePacket.ParamList[4].Parameter);
|
||||||
|
}
|
||||||
|
|
||||||
OnEstateBlueBoxMessageRequest(this, invoice, SenderID, sessionID, SenderName, Message);
|
OnEstateBlueBoxMessageRequest(this, invoice, SenderID, sessionID, SenderName, Message);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -202,12 +202,13 @@ namespace OpenSim.Region.CoreModules.World.Estate
|
||||||
}
|
}
|
||||||
Scene.RegionInfo.RegionSettings.Save();
|
Scene.RegionInfo.RegionSettings.Save();
|
||||||
TriggerRegionInfoChange();
|
TriggerRegionInfoChange();
|
||||||
|
sendRegionHandshakeToAll();
|
||||||
sendRegionInfoPacketToAll();
|
sendRegionInfoPacketToAll();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void handleCommitEstateTerrainTextureRequest(IClientAPI remoteClient)
|
private void handleCommitEstateTerrainTextureRequest(IClientAPI remoteClient)
|
||||||
{
|
{
|
||||||
sendRegionHandshakeToAll();
|
// sendRegionHandshakeToAll();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setRegionTerrainSettings(float WaterHeight,
|
public void setRegionTerrainSettings(float WaterHeight,
|
||||||
|
@ -276,8 +277,25 @@ namespace OpenSim.Region.CoreModules.World.Estate
|
||||||
{
|
{
|
||||||
if (Scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, true) || Scene.Permissions.BypassPermissions())
|
if (Scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, true) || Scene.Permissions.BypassPermissions())
|
||||||
{
|
{
|
||||||
|
if ((estateAccessType & 1) != 0) // All estates
|
||||||
|
{
|
||||||
|
List<int> estateIDs = Scene.EstateDataService.GetEstatesByOwner(Scene.RegionInfo.EstateSettings.EstateOwner);
|
||||||
|
EstateSettings estateSettings;
|
||||||
|
|
||||||
|
foreach (int estateID in estateIDs)
|
||||||
|
{
|
||||||
|
if (estateID != Scene.RegionInfo.EstateSettings.EstateID)
|
||||||
|
{
|
||||||
|
estateSettings = Scene.EstateDataService.LoadEstateSettings(estateID);
|
||||||
|
estateSettings.AddEstateUser(user);
|
||||||
|
estateSettings.Save();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Scene.RegionInfo.EstateSettings.AddEstateUser(user);
|
Scene.RegionInfo.EstateSettings.AddEstateUser(user);
|
||||||
Scene.RegionInfo.EstateSettings.Save();
|
Scene.RegionInfo.EstateSettings.Save();
|
||||||
|
|
||||||
TriggerEstateInfoChange();
|
TriggerEstateInfoChange();
|
||||||
remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.AccessOptions, Scene.RegionInfo.EstateSettings.EstateAccess, Scene.RegionInfo.EstateSettings.EstateID);
|
remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.AccessOptions, Scene.RegionInfo.EstateSettings.EstateAccess, Scene.RegionInfo.EstateSettings.EstateID);
|
||||||
}
|
}
|
||||||
|
@ -291,10 +309,26 @@ namespace OpenSim.Region.CoreModules.World.Estate
|
||||||
{
|
{
|
||||||
if (Scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, true) || Scene.Permissions.BypassPermissions())
|
if (Scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, true) || Scene.Permissions.BypassPermissions())
|
||||||
{
|
{
|
||||||
|
if ((estateAccessType & 1) != 0) // All estates
|
||||||
|
{
|
||||||
|
List<int> estateIDs = Scene.EstateDataService.GetEstatesByOwner(Scene.RegionInfo.EstateSettings.EstateOwner);
|
||||||
|
EstateSettings estateSettings;
|
||||||
|
|
||||||
|
foreach (int estateID in estateIDs)
|
||||||
|
{
|
||||||
|
if (estateID != Scene.RegionInfo.EstateSettings.EstateID)
|
||||||
|
{
|
||||||
|
estateSettings = Scene.EstateDataService.LoadEstateSettings(estateID);
|
||||||
|
estateSettings.RemoveEstateUser(user);
|
||||||
|
estateSettings.Save();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Scene.RegionInfo.EstateSettings.RemoveEstateUser(user);
|
Scene.RegionInfo.EstateSettings.RemoveEstateUser(user);
|
||||||
Scene.RegionInfo.EstateSettings.Save();
|
Scene.RegionInfo.EstateSettings.Save();
|
||||||
TriggerEstateInfoChange();
|
|
||||||
|
|
||||||
|
TriggerEstateInfoChange();
|
||||||
remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.AccessOptions, Scene.RegionInfo.EstateSettings.EstateAccess, Scene.RegionInfo.EstateSettings.EstateID);
|
remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.AccessOptions, Scene.RegionInfo.EstateSettings.EstateAccess, Scene.RegionInfo.EstateSettings.EstateID);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -306,8 +340,25 @@ namespace OpenSim.Region.CoreModules.World.Estate
|
||||||
{
|
{
|
||||||
if (Scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, true) || Scene.Permissions.BypassPermissions())
|
if (Scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, true) || Scene.Permissions.BypassPermissions())
|
||||||
{
|
{
|
||||||
|
if ((estateAccessType & 1) != 0) // All estates
|
||||||
|
{
|
||||||
|
List<int> estateIDs = Scene.EstateDataService.GetEstatesByOwner(Scene.RegionInfo.EstateSettings.EstateOwner);
|
||||||
|
EstateSettings estateSettings;
|
||||||
|
|
||||||
|
foreach (int estateID in estateIDs)
|
||||||
|
{
|
||||||
|
if (estateID != Scene.RegionInfo.EstateSettings.EstateID)
|
||||||
|
{
|
||||||
|
estateSettings = Scene.EstateDataService.LoadEstateSettings(estateID);
|
||||||
|
estateSettings.AddEstateGroup(user);
|
||||||
|
estateSettings.Save();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Scene.RegionInfo.EstateSettings.AddEstateGroup(user);
|
Scene.RegionInfo.EstateSettings.AddEstateGroup(user);
|
||||||
Scene.RegionInfo.EstateSettings.Save();
|
Scene.RegionInfo.EstateSettings.Save();
|
||||||
|
|
||||||
TriggerEstateInfoChange();
|
TriggerEstateInfoChange();
|
||||||
remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.AllowedGroups, Scene.RegionInfo.EstateSettings.EstateGroups, Scene.RegionInfo.EstateSettings.EstateID);
|
remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.AllowedGroups, Scene.RegionInfo.EstateSettings.EstateGroups, Scene.RegionInfo.EstateSettings.EstateID);
|
||||||
}
|
}
|
||||||
|
@ -320,10 +371,26 @@ namespace OpenSim.Region.CoreModules.World.Estate
|
||||||
{
|
{
|
||||||
if (Scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, true) || Scene.Permissions.BypassPermissions())
|
if (Scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, true) || Scene.Permissions.BypassPermissions())
|
||||||
{
|
{
|
||||||
|
if ((estateAccessType & 1) != 0) // All estates
|
||||||
|
{
|
||||||
|
List<int> estateIDs = Scene.EstateDataService.GetEstatesByOwner(Scene.RegionInfo.EstateSettings.EstateOwner);
|
||||||
|
EstateSettings estateSettings;
|
||||||
|
|
||||||
|
foreach (int estateID in estateIDs)
|
||||||
|
{
|
||||||
|
if (estateID != Scene.RegionInfo.EstateSettings.EstateID)
|
||||||
|
{
|
||||||
|
estateSettings = Scene.EstateDataService.LoadEstateSettings(estateID);
|
||||||
|
estateSettings.RemoveEstateGroup(user);
|
||||||
|
estateSettings.Save();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Scene.RegionInfo.EstateSettings.RemoveEstateGroup(user);
|
Scene.RegionInfo.EstateSettings.RemoveEstateGroup(user);
|
||||||
Scene.RegionInfo.EstateSettings.Save();
|
Scene.RegionInfo.EstateSettings.Save();
|
||||||
TriggerEstateInfoChange();
|
|
||||||
|
|
||||||
|
TriggerEstateInfoChange();
|
||||||
remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.AllowedGroups, Scene.RegionInfo.EstateSettings.EstateGroups, Scene.RegionInfo.EstateSettings.EstateID);
|
remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.AllowedGroups, Scene.RegionInfo.EstateSettings.EstateGroups, Scene.RegionInfo.EstateSettings.EstateID);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -351,6 +418,29 @@ namespace OpenSim.Region.CoreModules.World.Estate
|
||||||
if (!alreadyInList)
|
if (!alreadyInList)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
if ((estateAccessType & 1) != 0) // All estates
|
||||||
|
{
|
||||||
|
List<int> estateIDs = Scene.EstateDataService.GetEstatesByOwner(Scene.RegionInfo.EstateSettings.EstateOwner);
|
||||||
|
EstateSettings estateSettings;
|
||||||
|
|
||||||
|
foreach (int estateID in estateIDs)
|
||||||
|
{
|
||||||
|
if (estateID != Scene.RegionInfo.EstateSettings.EstateID)
|
||||||
|
{
|
||||||
|
EstateBan bitem = new EstateBan();
|
||||||
|
|
||||||
|
bitem.BannedUserID = user;
|
||||||
|
bitem.EstateID = (uint)estateID;
|
||||||
|
bitem.BannedHostAddress = "0.0.0.0";
|
||||||
|
bitem.BannedHostIPMask = "0.0.0.0";
|
||||||
|
|
||||||
|
estateSettings = Scene.EstateDataService.LoadEstateSettings(estateID);
|
||||||
|
estateSettings.AddBan(bitem);
|
||||||
|
estateSettings.Save();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
EstateBan item = new EstateBan();
|
EstateBan item = new EstateBan();
|
||||||
|
|
||||||
item.BannedUserID = user;
|
item.BannedUserID = user;
|
||||||
|
@ -360,6 +450,7 @@ namespace OpenSim.Region.CoreModules.World.Estate
|
||||||
|
|
||||||
Scene.RegionInfo.EstateSettings.AddBan(item);
|
Scene.RegionInfo.EstateSettings.AddBan(item);
|
||||||
Scene.RegionInfo.EstateSettings.Save();
|
Scene.RegionInfo.EstateSettings.Save();
|
||||||
|
|
||||||
TriggerEstateInfoChange();
|
TriggerEstateInfoChange();
|
||||||
|
|
||||||
ScenePresence s = Scene.GetScenePresence(user);
|
ScenePresence s = Scene.GetScenePresence(user);
|
||||||
|
@ -409,8 +500,25 @@ namespace OpenSim.Region.CoreModules.World.Estate
|
||||||
|
|
||||||
if (alreadyInList && listitem != null)
|
if (alreadyInList && listitem != null)
|
||||||
{
|
{
|
||||||
|
if ((estateAccessType & 1) != 0) // All estates
|
||||||
|
{
|
||||||
|
List<int> estateIDs = Scene.EstateDataService.GetEstatesByOwner(Scene.RegionInfo.EstateSettings.EstateOwner);
|
||||||
|
EstateSettings estateSettings;
|
||||||
|
|
||||||
|
foreach (int estateID in estateIDs)
|
||||||
|
{
|
||||||
|
if (estateID != Scene.RegionInfo.EstateSettings.EstateID)
|
||||||
|
{
|
||||||
|
estateSettings = Scene.EstateDataService.LoadEstateSettings(estateID);
|
||||||
|
estateSettings.RemoveBan(user);
|
||||||
|
estateSettings.Save();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Scene.RegionInfo.EstateSettings.RemoveBan(listitem.BannedUserID);
|
Scene.RegionInfo.EstateSettings.RemoveBan(listitem.BannedUserID);
|
||||||
Scene.RegionInfo.EstateSettings.Save();
|
Scene.RegionInfo.EstateSettings.Save();
|
||||||
|
|
||||||
TriggerEstateInfoChange();
|
TriggerEstateInfoChange();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -430,8 +538,25 @@ namespace OpenSim.Region.CoreModules.World.Estate
|
||||||
{
|
{
|
||||||
if (Scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, true) || Scene.Permissions.BypassPermissions())
|
if (Scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, true) || Scene.Permissions.BypassPermissions())
|
||||||
{
|
{
|
||||||
|
if ((estateAccessType & 1) != 0) // All estates
|
||||||
|
{
|
||||||
|
List<int> estateIDs = Scene.EstateDataService.GetEstatesByOwner(Scene.RegionInfo.EstateSettings.EstateOwner);
|
||||||
|
EstateSettings estateSettings;
|
||||||
|
|
||||||
|
foreach (int estateID in estateIDs)
|
||||||
|
{
|
||||||
|
if (estateID != Scene.RegionInfo.EstateSettings.EstateID)
|
||||||
|
{
|
||||||
|
estateSettings = Scene.EstateDataService.LoadEstateSettings(estateID);
|
||||||
|
estateSettings.AddEstateManager(user);
|
||||||
|
estateSettings.Save();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Scene.RegionInfo.EstateSettings.AddEstateManager(user);
|
Scene.RegionInfo.EstateSettings.AddEstateManager(user);
|
||||||
Scene.RegionInfo.EstateSettings.Save();
|
Scene.RegionInfo.EstateSettings.Save();
|
||||||
|
|
||||||
TriggerEstateInfoChange();
|
TriggerEstateInfoChange();
|
||||||
remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.EstateManagers, Scene.RegionInfo.EstateSettings.EstateManagers, Scene.RegionInfo.EstateSettings.EstateID);
|
remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.EstateManagers, Scene.RegionInfo.EstateSettings.EstateManagers, Scene.RegionInfo.EstateSettings.EstateID);
|
||||||
}
|
}
|
||||||
|
@ -444,10 +569,26 @@ namespace OpenSim.Region.CoreModules.World.Estate
|
||||||
{
|
{
|
||||||
if (Scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, true) || Scene.Permissions.BypassPermissions())
|
if (Scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, true) || Scene.Permissions.BypassPermissions())
|
||||||
{
|
{
|
||||||
|
if ((estateAccessType & 1) != 0) // All estates
|
||||||
|
{
|
||||||
|
List<int> estateIDs = Scene.EstateDataService.GetEstatesByOwner(Scene.RegionInfo.EstateSettings.EstateOwner);
|
||||||
|
EstateSettings estateSettings;
|
||||||
|
|
||||||
|
foreach (int estateID in estateIDs)
|
||||||
|
{
|
||||||
|
if (estateID != Scene.RegionInfo.EstateSettings.EstateID)
|
||||||
|
{
|
||||||
|
estateSettings = Scene.EstateDataService.LoadEstateSettings(estateID);
|
||||||
|
estateSettings.RemoveEstateManager(user);
|
||||||
|
estateSettings.Save();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Scene.RegionInfo.EstateSettings.RemoveEstateManager(user);
|
Scene.RegionInfo.EstateSettings.RemoveEstateManager(user);
|
||||||
Scene.RegionInfo.EstateSettings.Save();
|
Scene.RegionInfo.EstateSettings.Save();
|
||||||
TriggerEstateInfoChange();
|
|
||||||
|
|
||||||
|
TriggerEstateInfoChange();
|
||||||
remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.EstateManagers, Scene.RegionInfo.EstateSettings.EstateManagers, Scene.RegionInfo.EstateSettings.EstateID);
|
remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.EstateManagers, Scene.RegionInfo.EstateSettings.EstateManagers, Scene.RegionInfo.EstateSettings.EstateID);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -133,16 +133,6 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
return new List<ILandObject>();
|
return new List<ILandObject>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool IsLandPrimCountTainted()
|
|
||||||
{
|
|
||||||
if (m_landManagementModule != null)
|
|
||||||
{
|
|
||||||
return m_landManagementModule.IsLandPrimCountTainted();
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool IsForcefulBansAllowed()
|
public bool IsForcefulBansAllowed()
|
||||||
{
|
{
|
||||||
if (m_landManagementModule != null)
|
if (m_landManagementModule != null)
|
||||||
|
|
|
@ -62,8 +62,7 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
|
|
||||||
public class LandManagementModule : INonSharedRegionModule
|
public class LandManagementModule : INonSharedRegionModule
|
||||||
{
|
{
|
||||||
private static readonly ILog m_log =
|
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
||||||
LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
|
||||||
|
|
||||||
private static readonly string remoteParcelRequestPath = "0009/";
|
private static readonly string remoteParcelRequestPath = "0009/";
|
||||||
|
|
||||||
|
@ -89,7 +88,6 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
/// </value>
|
/// </value>
|
||||||
private readonly Dictionary<int, ILandObject> m_landList = new Dictionary<int, ILandObject>();
|
private readonly Dictionary<int, ILandObject> m_landList = new Dictionary<int, ILandObject>();
|
||||||
|
|
||||||
private bool m_landPrimCountTainted;
|
|
||||||
private int m_lastLandLocalID = LandChannel.START_LAND_LOCAL_ID - 1;
|
private int m_lastLandLocalID = LandChannel.START_LAND_LOCAL_ID - 1;
|
||||||
|
|
||||||
private bool m_allowedForcefulBans = true;
|
private bool m_allowedForcefulBans = true;
|
||||||
|
@ -128,18 +126,18 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
|
|
||||||
m_scene.EventManager.OnParcelPrimCountAdd += EventManagerOnParcelPrimCountAdd;
|
m_scene.EventManager.OnParcelPrimCountAdd += EventManagerOnParcelPrimCountAdd;
|
||||||
m_scene.EventManager.OnParcelPrimCountUpdate += EventManagerOnParcelPrimCountUpdate;
|
m_scene.EventManager.OnParcelPrimCountUpdate += EventManagerOnParcelPrimCountUpdate;
|
||||||
|
m_scene.EventManager.OnObjectBeingRemovedFromScene += EventManagerOnObjectBeingRemovedFromScene;
|
||||||
|
m_scene.EventManager.OnRequestParcelPrimCountUpdate += EventManagerOnRequestParcelPrimCountUpdate;
|
||||||
|
|
||||||
m_scene.EventManager.OnAvatarEnteringNewParcel += EventManagerOnAvatarEnteringNewParcel;
|
m_scene.EventManager.OnAvatarEnteringNewParcel += EventManagerOnAvatarEnteringNewParcel;
|
||||||
m_scene.EventManager.OnClientMovement += EventManagerOnClientMovement;
|
m_scene.EventManager.OnClientMovement += EventManagerOnClientMovement;
|
||||||
m_scene.EventManager.OnValidateLandBuy += EventManagerOnValidateLandBuy;
|
m_scene.EventManager.OnValidateLandBuy += EventManagerOnValidateLandBuy;
|
||||||
m_scene.EventManager.OnLandBuy += EventManagerOnLandBuy;
|
m_scene.EventManager.OnLandBuy += EventManagerOnLandBuy;
|
||||||
m_scene.EventManager.OnNewClient += EventManagerOnNewClient;
|
m_scene.EventManager.OnNewClient += EventManagerOnNewClient;
|
||||||
m_scene.EventManager.OnSignificantClientMovement += EventManagerOnSignificantClientMovement;
|
m_scene.EventManager.OnSignificantClientMovement += EventManagerOnSignificantClientMovement;
|
||||||
m_scene.EventManager.OnObjectBeingRemovedFromScene += EventManagerOnObjectBeingRemovedFromScene;
|
|
||||||
m_scene.EventManager.OnNoticeNoLandDataFromStorage += EventManagerOnNoLandDataFromStorage;
|
m_scene.EventManager.OnNoticeNoLandDataFromStorage += EventManagerOnNoLandDataFromStorage;
|
||||||
m_scene.EventManager.OnIncomingLandDataFromStorage += EventManagerOnIncomingLandDataFromStorage;
|
m_scene.EventManager.OnIncomingLandDataFromStorage += EventManagerOnIncomingLandDataFromStorage;
|
||||||
m_scene.EventManager.OnSetAllowForcefulBan += EventManagerOnSetAllowedForcefulBan;
|
m_scene.EventManager.OnSetAllowForcefulBan += EventManagerOnSetAllowedForcefulBan;
|
||||||
m_scene.EventManager.OnRequestParcelPrimCountUpdate += EventManagerOnRequestParcelPrimCountUpdate;
|
|
||||||
m_scene.EventManager.OnParcelPrimCountTainted += EventManagerOnParcelPrimCountTainted;
|
|
||||||
m_scene.EventManager.OnRegisterCaps += EventManagerOnRegisterCaps;
|
m_scene.EventManager.OnRegisterCaps += EventManagerOnRegisterCaps;
|
||||||
m_scene.EventManager.OnPluginConsole += EventManagerOnPluginConsole;
|
m_scene.EventManager.OnPluginConsole += EventManagerOnPluginConsole;
|
||||||
|
|
||||||
|
@ -277,8 +275,8 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
/// <returns>The parcel created.</returns>
|
/// <returns>The parcel created.</returns>
|
||||||
protected ILandObject CreateDefaultParcel()
|
protected ILandObject CreateDefaultParcel()
|
||||||
{
|
{
|
||||||
// m_log.DebugFormat(
|
m_log.DebugFormat(
|
||||||
// "[LAND MANAGEMENT MODULE]: Creating default parcel for region {0}", m_scene.RegionInfo.RegionName);
|
"[LAND MANAGEMENT MODULE]: Creating default parcel for region {0}", m_scene.RegionInfo.RegionName);
|
||||||
|
|
||||||
ILandObject fullSimParcel = new LandObject(UUID.Zero, false, m_scene);
|
ILandObject fullSimParcel = new LandObject(UUID.Zero, false, m_scene);
|
||||||
fullSimParcel.SetLandBitmap(fullSimParcel.GetSquareLandBitmap(0, 0, (int)Constants.RegionSize, (int)Constants.RegionSize));
|
fullSimParcel.SetLandBitmap(fullSimParcel.GetSquareLandBitmap(0, 0, (int)Constants.RegionSize, (int)Constants.RegionSize));
|
||||||
|
@ -695,34 +693,24 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
|
|
||||||
#region Parcel Modification
|
#region Parcel Modification
|
||||||
|
|
||||||
public void ResetAllLandPrimCounts()
|
public void ResetOverMeRecords()
|
||||||
{
|
{
|
||||||
lock (m_landList)
|
lock (m_landList)
|
||||||
{
|
{
|
||||||
foreach (LandObject p in m_landList.Values)
|
foreach (LandObject p in m_landList.Values)
|
||||||
{
|
{
|
||||||
p.ResetLandPrimCounts();
|
p.ResetOverMeRecord();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void EventManagerOnParcelPrimCountTainted()
|
|
||||||
{
|
|
||||||
m_landPrimCountTainted = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool IsLandPrimCountTainted()
|
|
||||||
{
|
|
||||||
return m_landPrimCountTainted;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void EventManagerOnParcelPrimCountAdd(SceneObjectGroup obj)
|
public void EventManagerOnParcelPrimCountAdd(SceneObjectGroup obj)
|
||||||
{
|
{
|
||||||
Vector3 position = obj.AbsolutePosition;
|
Vector3 position = obj.AbsolutePosition;
|
||||||
ILandObject landUnderPrim = GetLandObject(position.X, position.Y);
|
ILandObject landUnderPrim = GetLandObject(position.X, position.Y);
|
||||||
if (landUnderPrim != null)
|
if (landUnderPrim != null)
|
||||||
{
|
{
|
||||||
((LandObject)landUnderPrim).AddPrimToCount(obj);
|
((LandObject)landUnderPrim).AddPrimOverMe(obj);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -732,7 +720,7 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
{
|
{
|
||||||
foreach (LandObject p in m_landList.Values)
|
foreach (LandObject p in m_landList.Values)
|
||||||
{
|
{
|
||||||
p.RemovePrimFromCount(obj);
|
p.RemovePrimFromOverMe(obj);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -765,8 +753,7 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
foreach (LandObject p in landOwnersAndParcels[owner])
|
foreach (LandObject p in landOwnersAndParcels[owner])
|
||||||
{
|
{
|
||||||
simArea += p.LandData.Area;
|
simArea += p.LandData.Area;
|
||||||
simPrims += p.LandData.OwnerPrims + p.LandData.OtherPrims + p.LandData.GroupPrims +
|
simPrims += p.PrimCounts.Total;
|
||||||
p.LandData.SelectedPrims;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (LandObject p in landOwnersAndParcels[owner])
|
foreach (LandObject p in landOwnersAndParcels[owner])
|
||||||
|
@ -783,7 +770,7 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
// "[LAND MANAGEMENT MODULE]: Triggered EventManagerOnParcelPrimCountUpdate() for {0}",
|
// "[LAND MANAGEMENT MODULE]: Triggered EventManagerOnParcelPrimCountUpdate() for {0}",
|
||||||
// m_scene.RegionInfo.RegionName);
|
// m_scene.RegionInfo.RegionName);
|
||||||
|
|
||||||
ResetAllLandPrimCounts();
|
ResetOverMeRecords();
|
||||||
EntityBase[] entities = m_scene.Entities.GetEntities();
|
EntityBase[] entities = m_scene.Entities.GetEntities();
|
||||||
foreach (EntityBase obj in entities)
|
foreach (EntityBase obj in entities)
|
||||||
{
|
{
|
||||||
|
@ -796,15 +783,13 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
FinalizeLandPrimCountUpdate();
|
FinalizeLandPrimCountUpdate();
|
||||||
m_landPrimCountTainted = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void EventManagerOnRequestParcelPrimCountUpdate()
|
public void EventManagerOnRequestParcelPrimCountUpdate()
|
||||||
{
|
{
|
||||||
ResetAllLandPrimCounts();
|
ResetOverMeRecords();
|
||||||
m_scene.EventManager.TriggerParcelPrimCountUpdate();
|
m_scene.EventManager.TriggerParcelPrimCountUpdate();
|
||||||
FinalizeLandPrimCountUpdate();
|
FinalizeLandPrimCountUpdate();
|
||||||
m_landPrimCountTainted = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -868,8 +853,6 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
m_landList[startLandObjectIndex].ForceUpdateLandInfo();
|
m_landList[startLandObjectIndex].ForceUpdateLandInfo();
|
||||||
}
|
}
|
||||||
|
|
||||||
EventManagerOnParcelPrimCountTainted();
|
|
||||||
|
|
||||||
//Now add the new land object
|
//Now add the new land object
|
||||||
ILandObject result = AddLandObject(newLand);
|
ILandObject result = AddLandObject(newLand);
|
||||||
UpdateLandObject(startLandObject.LandData.LocalID, startLandObject.LandData);
|
UpdateLandObject(startLandObject.LandData.LocalID, startLandObject.LandData);
|
||||||
|
@ -936,7 +919,6 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
performFinalLandJoin(masterLandObject, slaveLandObject);
|
performFinalLandJoin(masterLandObject, slaveLandObject);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
EventManagerOnParcelPrimCountTainted();
|
|
||||||
|
|
||||||
masterLandObject.SendLandUpdateToAvatarsOverMe();
|
masterLandObject.SendLandUpdateToAvatarsOverMe();
|
||||||
}
|
}
|
||||||
|
@ -1130,6 +1112,7 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
|
|
||||||
if (land != null)
|
if (land != null)
|
||||||
{
|
{
|
||||||
|
m_scene.EventManager.TriggerParcelPrimCountUpdate();
|
||||||
m_landList[local_id].SendLandObjectOwners(remote_client);
|
m_landList[local_id].SendLandObjectOwners(remote_client);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -1375,7 +1358,8 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
private string ProcessPropertiesUpdate(string request, string path, string param, UUID agentID, Caps caps)
|
private string ProcessPropertiesUpdate(string request, string path, string param, UUID agentID, Caps caps)
|
||||||
{
|
{
|
||||||
IClientAPI client;
|
IClientAPI client;
|
||||||
if (! m_scene.TryGetClient(agentID, out client)) {
|
if (!m_scene.TryGetClient(agentID, out client))
|
||||||
|
{
|
||||||
m_log.WarnFormat("[LAND MANAGEMENT MODULE]: Unable to retrieve IClientAPI for {0}", agentID);
|
m_log.WarnFormat("[LAND MANAGEMENT MODULE]: Unable to retrieve IClientAPI for {0}", agentID);
|
||||||
return LLSDHelpers.SerialiseLLSDReply(new LLSDEmpty());
|
return LLSDHelpers.SerialiseLLSDReply(new LLSDEmpty());
|
||||||
}
|
}
|
||||||
|
|
|
@ -64,8 +64,6 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region ILandObject Members
|
|
||||||
|
|
||||||
public int GetPrimsFree()
|
public int GetPrimsFree()
|
||||||
{
|
{
|
||||||
m_scene.EventManager.TriggerParcelPrimCountUpdate();
|
m_scene.EventManager.TriggerParcelPrimCountUpdate();
|
||||||
|
@ -213,6 +211,7 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
return simMax;
|
return simMax;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Packet Request Handling
|
#region Packet Request Handling
|
||||||
|
@ -944,9 +943,12 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
|
|
||||||
lock (primsOverMe)
|
lock (primsOverMe)
|
||||||
{
|
{
|
||||||
|
// m_log.DebugFormat(
|
||||||
|
// "[LAND OBJECT]: Request for SendLandObjectOwners() from {0} with {1} known prims on region",
|
||||||
|
// remote_client.Name, primsOverMe.Count);
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|
||||||
foreach (SceneObjectGroup obj in primsOverMe)
|
foreach (SceneObjectGroup obj in primsOverMe)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
@ -958,7 +960,7 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
}
|
}
|
||||||
catch (NullReferenceException)
|
catch (NullReferenceException)
|
||||||
{
|
{
|
||||||
m_log.Info("[LAND]: " + "Got Null Reference when searching land owners from the parcel panel");
|
m_log.Error("[LAND]: " + "Got Null Reference when searching land owners from the parcel panel");
|
||||||
}
|
}
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -985,6 +987,7 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
public Dictionary<UUID, int> GetLandObjectOwners()
|
public Dictionary<UUID, int> GetLandObjectOwners()
|
||||||
{
|
{
|
||||||
Dictionary<UUID, int> ownersAndCount = new Dictionary<UUID, int>();
|
Dictionary<UUID, int> ownersAndCount = new Dictionary<UUID, int>();
|
||||||
|
|
||||||
lock (primsOverMe)
|
lock (primsOverMe)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
@ -1021,8 +1024,10 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
|
|
||||||
public void ReturnLandObjects(uint type, UUID[] owners, UUID[] tasks, IClientAPI remote_client)
|
public void ReturnLandObjects(uint type, UUID[] owners, UUID[] tasks, IClientAPI remote_client)
|
||||||
{
|
{
|
||||||
Dictionary<UUID,List<SceneObjectGroup>> returns =
|
// m_log.DebugFormat(
|
||||||
new Dictionary<UUID,List<SceneObjectGroup>>();
|
// "[LAND OBJECT]: Request to return objects in {0} from {1}", LandData.Name, remote_client.Name);
|
||||||
|
|
||||||
|
Dictionary<UUID,List<SceneObjectGroup>> returns = new Dictionary<UUID,List<SceneObjectGroup>>();
|
||||||
|
|
||||||
lock (primsOverMe)
|
lock (primsOverMe)
|
||||||
{
|
{
|
||||||
|
@ -1095,81 +1100,27 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
|
|
||||||
#region Object Adding/Removing from Parcel
|
#region Object Adding/Removing from Parcel
|
||||||
|
|
||||||
public void ResetLandPrimCounts()
|
public void ResetOverMeRecord()
|
||||||
{
|
{
|
||||||
LandData.GroupPrims = 0;
|
|
||||||
LandData.OwnerPrims = 0;
|
|
||||||
LandData.OtherPrims = 0;
|
|
||||||
LandData.SelectedPrims = 0;
|
|
||||||
|
|
||||||
|
|
||||||
lock (primsOverMe)
|
lock (primsOverMe)
|
||||||
primsOverMe.Clear();
|
primsOverMe.Clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AddPrimToCount(SceneObjectGroup obj)
|
public void AddPrimOverMe(SceneObjectGroup obj)
|
||||||
{
|
{
|
||||||
|
// m_log.DebugFormat("[LAND OBJECT]: Adding scene object {0} {1} over {2}", obj.Name, obj.LocalId, LandData.Name);
|
||||||
UUID prim_owner = obj.OwnerID;
|
|
||||||
int prim_count = obj.PrimCount;
|
|
||||||
|
|
||||||
if (obj.IsSelected)
|
|
||||||
{
|
|
||||||
LandData.SelectedPrims += prim_count;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (prim_owner == LandData.OwnerID)
|
|
||||||
{
|
|
||||||
LandData.OwnerPrims += prim_count;
|
|
||||||
}
|
|
||||||
else if ((obj.GroupID == LandData.GroupID ||
|
|
||||||
prim_owner == LandData.GroupID) &&
|
|
||||||
LandData.GroupID != UUID.Zero)
|
|
||||||
{
|
|
||||||
LandData.GroupPrims += prim_count;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
LandData.OtherPrims += prim_count;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
lock (primsOverMe)
|
lock (primsOverMe)
|
||||||
primsOverMe.Add(obj);
|
primsOverMe.Add(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RemovePrimFromCount(SceneObjectGroup obj)
|
public void RemovePrimFromOverMe(SceneObjectGroup obj)
|
||||||
{
|
{
|
||||||
|
// m_log.DebugFormat("[LAND OBJECT]: Removing scene object {0} {1} from over {2}", obj.Name, obj.LocalId, LandData.Name);
|
||||||
|
|
||||||
lock (primsOverMe)
|
lock (primsOverMe)
|
||||||
{
|
|
||||||
if (primsOverMe.Contains(obj))
|
|
||||||
{
|
|
||||||
UUID prim_owner = obj.OwnerID;
|
|
||||||
int prim_count = obj.PrimCount;
|
|
||||||
|
|
||||||
if (prim_owner == LandData.OwnerID)
|
|
||||||
{
|
|
||||||
LandData.OwnerPrims -= prim_count;
|
|
||||||
}
|
|
||||||
else if (obj.GroupID == LandData.GroupID ||
|
|
||||||
prim_owner == LandData.GroupID)
|
|
||||||
{
|
|
||||||
LandData.GroupPrims -= prim_count;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
LandData.OtherPrims -= prim_count;
|
|
||||||
}
|
|
||||||
|
|
||||||
primsOverMe.Remove(obj);
|
primsOverMe.Remove(obj);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
@ -1192,5 +1143,7 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
LandData.MusicURL = url;
|
LandData.MusicURL = url;
|
||||||
SendLandUpdateToAvatarsOverMe();
|
SendLandUpdateToAvatarsOverMe();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -201,6 +201,12 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
else
|
else
|
||||||
parcelCounts.Users[obj.OwnerID] = partCount;
|
parcelCounts.Users[obj.OwnerID] = partCount;
|
||||||
|
|
||||||
|
if (obj.IsSelected)
|
||||||
|
{
|
||||||
|
parcelCounts.Selected += partCount;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
if (landData.IsGroupOwned)
|
if (landData.IsGroupOwned)
|
||||||
{
|
{
|
||||||
if (obj.OwnerID == landData.GroupID)
|
if (obj.OwnerID == landData.GroupID)
|
||||||
|
@ -217,9 +223,7 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
else
|
else
|
||||||
parcelCounts.Others += partCount;
|
parcelCounts.Others += partCount;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if (obj.IsSelected)
|
|
||||||
parcelCounts.Selected += partCount;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -375,6 +379,7 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||||
count = counts.Owner;
|
count = counts.Owner;
|
||||||
count += counts.Group;
|
count += counts.Group;
|
||||||
count += counts.Others;
|
count += counts.Others;
|
||||||
|
count += counts.Selected;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -469,8 +469,8 @@ namespace OpenSim.Region.CoreModules
|
||||||
m_SunFixedHour = FixedSunHour;
|
m_SunFixedHour = FixedSunHour;
|
||||||
m_SunFixed = FixedSun;
|
m_SunFixed = FixedSun;
|
||||||
|
|
||||||
m_log.DebugFormat("[SUN]: Sun Settings Update: Fixed Sun? : {0}", m_SunFixed.ToString());
|
// m_log.DebugFormat("[SUN]: Sun Settings Update: Fixed Sun? : {0}", m_SunFixed.ToString());
|
||||||
m_log.DebugFormat("[SUN]: Sun Settings Update: Sun Hour : {0}", m_SunFixedHour.ToString());
|
// m_log.DebugFormat("[SUN]: Sun Settings Update: Sun Hour : {0}", m_SunFixedHour.ToString());
|
||||||
|
|
||||||
receivedEstateToolsSunUpdate = true;
|
receivedEstateToolsSunUpdate = true;
|
||||||
|
|
||||||
|
@ -480,7 +480,7 @@ namespace OpenSim.Region.CoreModules
|
||||||
// When sun settings are updated, we should update all clients with new settings.
|
// When sun settings are updated, we should update all clients with new settings.
|
||||||
SunUpdateToAllClients();
|
SunUpdateToAllClients();
|
||||||
|
|
||||||
m_log.DebugFormat("[SUN]: PosTime : {0}", PosTime.ToString());
|
// m_log.DebugFormat("[SUN]: PosTime : {0}", PosTime.ToString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -70,6 +70,12 @@ namespace OpenSim.Region.Framework.Interfaces
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
List<int> GetEstates(string search);
|
List<int> GetEstates(string search);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Get the IDs of all estates owned by the given user.
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>An empty list if no estates were found.</returns>
|
||||||
|
List<int> GetEstatesByOwner(UUID ownerID);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Get the IDs of all estates.
|
/// Get the IDs of all estates.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -75,6 +75,12 @@ namespace OpenSim.Region.Framework.Interfaces
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
List<int> GetEstates(string search);
|
List<int> GetEstates(string search);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Get the IDs of all estates owned by the given user.
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>An empty list if no estates were found.</returns>
|
||||||
|
List<int> GetEstatesByOwner(UUID ownerID);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Get the IDs of all estates.
|
/// Get the IDs of all estates.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -1457,20 +1457,6 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Recount SceneObjectPart in parcel aabb
|
|
||||||
/// </summary>
|
|
||||||
private void UpdateLand()
|
|
||||||
{
|
|
||||||
if (LandChannel != null)
|
|
||||||
{
|
|
||||||
if (LandChannel.IsLandPrimCountTainted())
|
|
||||||
{
|
|
||||||
EventManager.TriggerParcelPrimCountUpdate();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Update the terrain if it needs to be updated.
|
/// Update the terrain if it needs to be updated.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -1565,8 +1551,11 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Return object to avatar Message
|
/// Tell an agent that their object has been returned.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// The actual return is handled by the caller.
|
||||||
|
/// </remarks>
|
||||||
/// <param name="agentID">Avatar Unique Id</param>
|
/// <param name="agentID">Avatar Unique Id</param>
|
||||||
/// <param name="objectName">Name of object returned</param>
|
/// <param name="objectName">Name of object returned</param>
|
||||||
/// <param name="location">Location of object returned</param>
|
/// <param name="location">Location of object returned</param>
|
||||||
|
|
|
@ -1590,7 +1590,9 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
parcel.LandData.OtherCleanTime)
|
parcel.LandData.OtherCleanTime)
|
||||||
{
|
{
|
||||||
DetachFromBackup();
|
DetachFromBackup();
|
||||||
m_log.InfoFormat("[SCENE]: Returning object {0} due to parcel auto return", RootPart.UUID.ToString());
|
m_log.DebugFormat(
|
||||||
|
"[SCENE OBJECT GROUP]: Returning object {0} due to parcel autoreturn",
|
||||||
|
RootPart.UUID);
|
||||||
m_scene.AddReturn(OwnerID, Name, AbsolutePosition, "parcel autoreturn");
|
m_scene.AddReturn(OwnerID, Name, AbsolutePosition, "parcel autoreturn");
|
||||||
m_scene.DeRezObjects(null, new List<uint>() { RootPart.LocalId }, UUID.Zero,
|
m_scene.DeRezObjects(null, new List<uint>() { RootPart.LocalId }, UUID.Zero,
|
||||||
DeRezAction.Return, UUID.Zero);
|
DeRezAction.Return, UUID.Zero);
|
||||||
|
|
|
@ -33,6 +33,9 @@ using Nini.Config;
|
||||||
using OpenSim.Region.Framework.Interfaces;
|
using OpenSim.Region.Framework.Interfaces;
|
||||||
using OpenSim.Region.Framework.Scenes;
|
using OpenSim.Region.Framework.Scenes;
|
||||||
|
|
||||||
|
[assembly: Addin("BareBonesSharedModule", "0.1")]
|
||||||
|
[assembly: AddinDependency("OpenSim", "0.5")]
|
||||||
|
|
||||||
namespace OpenSim.Region.OptionalModules.Example.BareBonesShared
|
namespace OpenSim.Region.OptionalModules.Example.BareBonesShared
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
@ -130,11 +130,6 @@ public class RegionCombinerLargeLandChannel : ILandChannel
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool IsLandPrimCountTainted()
|
|
||||||
{
|
|
||||||
return RootRegionLandChannel.IsLandPrimCountTainted();
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool IsForcefulBansAllowed()
|
public bool IsForcefulBansAllowed()
|
||||||
{
|
{
|
||||||
return RootRegionLandChannel.IsForcefulBansAllowed();
|
return RootRegionLandChannel.IsForcefulBansAllowed();
|
||||||
|
|
|
@ -10473,62 +10473,41 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
{
|
{
|
||||||
m_host.AddScriptLPS(1);
|
m_host.AddScriptLPS(1);
|
||||||
|
|
||||||
LandData land = World.GetLandData((float)pos.x, (float)pos.y);
|
ILandObject lo = World.LandChannel.GetLandObject((float)pos.x, (float)pos.y);
|
||||||
|
|
||||||
if (land == null)
|
if (lo == null)
|
||||||
{
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
|
||||||
|
|
||||||
|
IPrimCounts pc = lo.PrimCounts;
|
||||||
|
|
||||||
|
if (sim_wide != ScriptBaseClass.FALSE)
|
||||||
|
{
|
||||||
|
if (category == ScriptBaseClass.PARCEL_COUNT_TOTAL)
|
||||||
|
{
|
||||||
|
return pc.Simulator;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (sim_wide != 0)
|
// counts not implemented yet
|
||||||
{
|
|
||||||
if (category == 0)
|
|
||||||
{
|
|
||||||
return land.SimwidePrims;
|
|
||||||
}
|
|
||||||
|
|
||||||
else
|
|
||||||
{
|
|
||||||
//public int simwideArea = 0;
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (category == 0)//Total Prims
|
if (category == ScriptBaseClass.PARCEL_COUNT_TOTAL)
|
||||||
{
|
return pc.Total;
|
||||||
return 0;//land.
|
else if (category == ScriptBaseClass.PARCEL_COUNT_OWNER)
|
||||||
|
return pc.Owner;
|
||||||
|
else if (category == ScriptBaseClass.PARCEL_COUNT_GROUP)
|
||||||
|
return pc.Group;
|
||||||
|
else if (category == ScriptBaseClass.PARCEL_COUNT_OTHER)
|
||||||
|
return pc.Others;
|
||||||
|
else if (category == ScriptBaseClass.PARCEL_COUNT_SELECTED)
|
||||||
|
return pc.Selected;
|
||||||
|
else if (category == ScriptBaseClass.PARCEL_COUNT_TEMP)
|
||||||
|
return 0; // counts not implemented yet
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (category == 1)//Owner Prims
|
|
||||||
{
|
|
||||||
return land.OwnerPrims;
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (category == 2)//Group Prims
|
|
||||||
{
|
|
||||||
return land.GroupPrims;
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (category == 3)//Other Prims
|
|
||||||
{
|
|
||||||
return land.OtherPrims;
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (category == 4)//Selected
|
|
||||||
{
|
|
||||||
return land.SelectedPrims;
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (category == 5)//Temp
|
|
||||||
{
|
|
||||||
return 0;//land.
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -111,6 +111,11 @@ namespace OpenSim.Services.Connectors
|
||||||
return m_database.GetEstatesAll();
|
return m_database.GetEstatesAll();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<int> GetEstatesByOwner(UUID ownerID)
|
||||||
|
{
|
||||||
|
return m_database.GetEstatesByOwner(ownerID);
|
||||||
|
}
|
||||||
|
|
||||||
public bool LinkRegion(UUID regionID, int estateID)
|
public bool LinkRegion(UUID regionID, int estateID)
|
||||||
{
|
{
|
||||||
return m_database.LinkRegion(regionID, estateID);
|
return m_database.LinkRegion(regionID, estateID);
|
||||||
|
|
Loading…
Reference in New Issue