mirror of
https://github.com/opensim/opensim.git
synced 2026-08-09 18:55:58 +08:00
Merge branch 'master' into careminster-presence-refactor
This commit is contained in:
@@ -202,12 +202,13 @@ namespace OpenSim.Region.CoreModules.World.Estate
|
||||
}
|
||||
Scene.RegionInfo.RegionSettings.Save();
|
||||
TriggerRegionInfoChange();
|
||||
sendRegionHandshakeToAll();
|
||||
sendRegionInfoPacketToAll();
|
||||
}
|
||||
|
||||
private void handleCommitEstateTerrainTextureRequest(IClientAPI remoteClient)
|
||||
{
|
||||
sendRegionHandshakeToAll();
|
||||
// sendRegionHandshakeToAll();
|
||||
}
|
||||
|
||||
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 ((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.Save();
|
||||
|
||||
TriggerEstateInfoChange();
|
||||
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 ((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.Save();
|
||||
TriggerEstateInfoChange();
|
||||
|
||||
TriggerEstateInfoChange();
|
||||
remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.AccessOptions, Scene.RegionInfo.EstateSettings.EstateAccess, Scene.RegionInfo.EstateSettings.EstateID);
|
||||
}
|
||||
else
|
||||
@@ -306,8 +340,25 @@ namespace OpenSim.Region.CoreModules.World.Estate
|
||||
{
|
||||
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.Save();
|
||||
|
||||
TriggerEstateInfoChange();
|
||||
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 ((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.Save();
|
||||
TriggerEstateInfoChange();
|
||||
|
||||
TriggerEstateInfoChange();
|
||||
remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.AllowedGroups, Scene.RegionInfo.EstateSettings.EstateGroups, Scene.RegionInfo.EstateSettings.EstateID);
|
||||
}
|
||||
else
|
||||
@@ -351,6 +418,29 @@ namespace OpenSim.Region.CoreModules.World.Estate
|
||||
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();
|
||||
|
||||
item.BannedUserID = user;
|
||||
@@ -360,6 +450,7 @@ namespace OpenSim.Region.CoreModules.World.Estate
|
||||
|
||||
Scene.RegionInfo.EstateSettings.AddBan(item);
|
||||
Scene.RegionInfo.EstateSettings.Save();
|
||||
|
||||
TriggerEstateInfoChange();
|
||||
|
||||
ScenePresence s = Scene.GetScenePresence(user);
|
||||
@@ -409,8 +500,25 @@ namespace OpenSim.Region.CoreModules.World.Estate
|
||||
|
||||
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.Save();
|
||||
|
||||
TriggerEstateInfoChange();
|
||||
}
|
||||
else
|
||||
@@ -430,8 +538,25 @@ namespace OpenSim.Region.CoreModules.World.Estate
|
||||
{
|
||||
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.Save();
|
||||
|
||||
TriggerEstateInfoChange();
|
||||
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 ((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.Save();
|
||||
TriggerEstateInfoChange();
|
||||
|
||||
TriggerEstateInfoChange();
|
||||
remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.EstateManagers, Scene.RegionInfo.EstateSettings.EstateManagers, Scene.RegionInfo.EstateSettings.EstateID);
|
||||
}
|
||||
else
|
||||
|
||||
@@ -133,16 +133,6 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||
return new List<ILandObject>();
|
||||
}
|
||||
|
||||
public bool IsLandPrimCountTainted()
|
||||
{
|
||||
if (m_landManagementModule != null)
|
||||
{
|
||||
return m_landManagementModule.IsLandPrimCountTainted();
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public bool IsForcefulBansAllowed()
|
||||
{
|
||||
if (m_landManagementModule != null)
|
||||
|
||||
@@ -62,8 +62,7 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||
|
||||
public class LandManagementModule : INonSharedRegionModule
|
||||
{
|
||||
private static readonly ILog m_log =
|
||||
LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
||||
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
||||
|
||||
private static readonly string remoteParcelRequestPath = "0009/";
|
||||
|
||||
@@ -89,7 +88,6 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||
/// </value>
|
||||
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 bool m_allowedForcefulBans = true;
|
||||
@@ -128,18 +126,18 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||
|
||||
m_scene.EventManager.OnParcelPrimCountAdd += EventManagerOnParcelPrimCountAdd;
|
||||
m_scene.EventManager.OnParcelPrimCountUpdate += EventManagerOnParcelPrimCountUpdate;
|
||||
m_scene.EventManager.OnObjectBeingRemovedFromScene += EventManagerOnObjectBeingRemovedFromScene;
|
||||
m_scene.EventManager.OnRequestParcelPrimCountUpdate += EventManagerOnRequestParcelPrimCountUpdate;
|
||||
|
||||
m_scene.EventManager.OnAvatarEnteringNewParcel += EventManagerOnAvatarEnteringNewParcel;
|
||||
m_scene.EventManager.OnClientMovement += EventManagerOnClientMovement;
|
||||
m_scene.EventManager.OnValidateLandBuy += EventManagerOnValidateLandBuy;
|
||||
m_scene.EventManager.OnLandBuy += EventManagerOnLandBuy;
|
||||
m_scene.EventManager.OnNewClient += EventManagerOnNewClient;
|
||||
m_scene.EventManager.OnSignificantClientMovement += EventManagerOnSignificantClientMovement;
|
||||
m_scene.EventManager.OnObjectBeingRemovedFromScene += EventManagerOnObjectBeingRemovedFromScene;
|
||||
m_scene.EventManager.OnNoticeNoLandDataFromStorage += EventManagerOnNoLandDataFromStorage;
|
||||
m_scene.EventManager.OnIncomingLandDataFromStorage += EventManagerOnIncomingLandDataFromStorage;
|
||||
m_scene.EventManager.OnSetAllowForcefulBan += EventManagerOnSetAllowedForcefulBan;
|
||||
m_scene.EventManager.OnRequestParcelPrimCountUpdate += EventManagerOnRequestParcelPrimCountUpdate;
|
||||
m_scene.EventManager.OnParcelPrimCountTainted += EventManagerOnParcelPrimCountTainted;
|
||||
m_scene.EventManager.OnSetAllowForcefulBan += EventManagerOnSetAllowedForcefulBan;
|
||||
m_scene.EventManager.OnRegisterCaps += EventManagerOnRegisterCaps;
|
||||
m_scene.EventManager.OnPluginConsole += EventManagerOnPluginConsole;
|
||||
|
||||
@@ -277,8 +275,8 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||
/// <returns>The parcel created.</returns>
|
||||
protected ILandObject CreateDefaultParcel()
|
||||
{
|
||||
// m_log.DebugFormat(
|
||||
// "[LAND MANAGEMENT MODULE]: Creating default parcel for region {0}", m_scene.RegionInfo.RegionName);
|
||||
m_log.DebugFormat(
|
||||
"[LAND MANAGEMENT MODULE]: Creating default parcel for region {0}", m_scene.RegionInfo.RegionName);
|
||||
|
||||
ILandObject fullSimParcel = new LandObject(UUID.Zero, false, m_scene);
|
||||
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
|
||||
|
||||
public void ResetAllLandPrimCounts()
|
||||
public void ResetOverMeRecords()
|
||||
{
|
||||
lock (m_landList)
|
||||
{
|
||||
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)
|
||||
{
|
||||
Vector3 position = obj.AbsolutePosition;
|
||||
ILandObject landUnderPrim = GetLandObject(position.X, position.Y);
|
||||
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)
|
||||
{
|
||||
p.RemovePrimFromCount(obj);
|
||||
p.RemovePrimFromOverMe(obj);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -765,8 +753,7 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||
foreach (LandObject p in landOwnersAndParcels[owner])
|
||||
{
|
||||
simArea += p.LandData.Area;
|
||||
simPrims += p.LandData.OwnerPrims + p.LandData.OtherPrims + p.LandData.GroupPrims +
|
||||
p.LandData.SelectedPrims;
|
||||
simPrims += p.PrimCounts.Total;
|
||||
}
|
||||
|
||||
foreach (LandObject p in landOwnersAndParcels[owner])
|
||||
@@ -783,7 +770,7 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||
// "[LAND MANAGEMENT MODULE]: Triggered EventManagerOnParcelPrimCountUpdate() for {0}",
|
||||
// m_scene.RegionInfo.RegionName);
|
||||
|
||||
ResetAllLandPrimCounts();
|
||||
ResetOverMeRecords();
|
||||
EntityBase[] entities = m_scene.Entities.GetEntities();
|
||||
foreach (EntityBase obj in entities)
|
||||
{
|
||||
@@ -796,15 +783,13 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||
}
|
||||
}
|
||||
FinalizeLandPrimCountUpdate();
|
||||
m_landPrimCountTainted = false;
|
||||
}
|
||||
|
||||
public void EventManagerOnRequestParcelPrimCountUpdate()
|
||||
{
|
||||
ResetAllLandPrimCounts();
|
||||
ResetOverMeRecords();
|
||||
m_scene.EventManager.TriggerParcelPrimCountUpdate();
|
||||
FinalizeLandPrimCountUpdate();
|
||||
m_landPrimCountTainted = false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -868,8 +853,6 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||
m_landList[startLandObjectIndex].ForceUpdateLandInfo();
|
||||
}
|
||||
|
||||
EventManagerOnParcelPrimCountTainted();
|
||||
|
||||
//Now add the new land object
|
||||
ILandObject result = AddLandObject(newLand);
|
||||
UpdateLandObject(startLandObject.LandData.LocalID, startLandObject.LandData);
|
||||
@@ -936,7 +919,6 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||
performFinalLandJoin(masterLandObject, slaveLandObject);
|
||||
}
|
||||
}
|
||||
EventManagerOnParcelPrimCountTainted();
|
||||
|
||||
masterLandObject.SendLandUpdateToAvatarsOverMe();
|
||||
}
|
||||
@@ -1130,6 +1112,7 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||
|
||||
if (land != null)
|
||||
{
|
||||
m_scene.EventManager.TriggerParcelPrimCountUpdate();
|
||||
m_landList[local_id].SendLandObjectOwners(remote_client);
|
||||
}
|
||||
else
|
||||
@@ -1375,7 +1358,8 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||
private string ProcessPropertiesUpdate(string request, string path, string param, UUID agentID, Caps caps)
|
||||
{
|
||||
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);
|
||||
return LLSDHelpers.SerialiseLLSDReply(new LLSDEmpty());
|
||||
}
|
||||
|
||||
@@ -64,8 +64,6 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||
|
||||
#endregion
|
||||
|
||||
#region ILandObject Members
|
||||
|
||||
public int GetPrimsFree()
|
||||
{
|
||||
m_scene.EventManager.TriggerParcelPrimCountUpdate();
|
||||
@@ -213,6 +211,7 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||
return simMax;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Packet Request Handling
|
||||
@@ -944,9 +943,12 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||
|
||||
lock (primsOverMe)
|
||||
{
|
||||
// m_log.DebugFormat(
|
||||
// "[LAND OBJECT]: Request for SendLandObjectOwners() from {0} with {1} known prims on region",
|
||||
// remote_client.Name, primsOverMe.Count);
|
||||
|
||||
try
|
||||
{
|
||||
|
||||
foreach (SceneObjectGroup obj in primsOverMe)
|
||||
{
|
||||
try
|
||||
@@ -958,7 +960,7 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||
}
|
||||
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
|
||||
{
|
||||
@@ -985,6 +987,7 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||
public Dictionary<UUID, int> GetLandObjectOwners()
|
||||
{
|
||||
Dictionary<UUID, int> ownersAndCount = new Dictionary<UUID, int>();
|
||||
|
||||
lock (primsOverMe)
|
||||
{
|
||||
try
|
||||
@@ -1021,8 +1024,10 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||
|
||||
public void ReturnLandObjects(uint type, UUID[] owners, UUID[] tasks, IClientAPI remote_client)
|
||||
{
|
||||
Dictionary<UUID,List<SceneObjectGroup>> returns =
|
||||
new Dictionary<UUID,List<SceneObjectGroup>>();
|
||||
// m_log.DebugFormat(
|
||||
// "[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)
|
||||
{
|
||||
@@ -1095,82 +1100,28 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||
|
||||
#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)
|
||||
primsOverMe.Clear();
|
||||
}
|
||||
|
||||
public void AddPrimToCount(SceneObjectGroup obj)
|
||||
public void AddPrimOverMe(SceneObjectGroup obj)
|
||||
{
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
// m_log.DebugFormat("[LAND OBJECT]: Adding scene object {0} {1} over {2}", obj.Name, obj.LocalId, LandData.Name);
|
||||
|
||||
lock (primsOverMe)
|
||||
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)
|
||||
{
|
||||
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
|
||||
|
||||
/// <summary>
|
||||
@@ -1192,5 +1143,7 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||
LandData.MusicURL = url;
|
||||
SendLandUpdateToAvatarsOverMe();
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
@@ -201,25 +201,29 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||
else
|
||||
parcelCounts.Users[obj.OwnerID] = partCount;
|
||||
|
||||
if (landData.IsGroupOwned)
|
||||
if (obj.IsSelected)
|
||||
{
|
||||
if (obj.OwnerID == landData.GroupID)
|
||||
parcelCounts.Owner += partCount;
|
||||
else if (landData.GroupID != UUID.Zero && obj.GroupID == landData.GroupID)
|
||||
parcelCounts.Group += partCount;
|
||||
else
|
||||
parcelCounts.Others += partCount;
|
||||
parcelCounts.Selected += partCount;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (obj.OwnerID == landData.OwnerID)
|
||||
parcelCounts.Owner += partCount;
|
||||
if (landData.IsGroupOwned)
|
||||
{
|
||||
if (obj.OwnerID == landData.GroupID)
|
||||
parcelCounts.Owner += partCount;
|
||||
else if (landData.GroupID != UUID.Zero && obj.GroupID == landData.GroupID)
|
||||
parcelCounts.Group += partCount;
|
||||
else
|
||||
parcelCounts.Others += partCount;
|
||||
}
|
||||
else
|
||||
parcelCounts.Others += partCount;
|
||||
{
|
||||
if (obj.OwnerID == landData.OwnerID)
|
||||
parcelCounts.Owner += partCount;
|
||||
else
|
||||
parcelCounts.Others += partCount;
|
||||
}
|
||||
}
|
||||
|
||||
if (obj.IsSelected)
|
||||
parcelCounts.Selected += partCount;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -375,6 +379,7 @@ namespace OpenSim.Region.CoreModules.World.Land
|
||||
count = counts.Owner;
|
||||
count += counts.Group;
|
||||
count += counts.Others;
|
||||
count += counts.Selected;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -469,8 +469,8 @@ namespace OpenSim.Region.CoreModules
|
||||
m_SunFixedHour = FixedSunHour;
|
||||
m_SunFixed = FixedSun;
|
||||
|
||||
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: Fixed Sun? : {0}", m_SunFixed.ToString());
|
||||
// m_log.DebugFormat("[SUN]: Sun Settings Update: Sun Hour : {0}", m_SunFixedHour.ToString());
|
||||
|
||||
receivedEstateToolsSunUpdate = true;
|
||||
|
||||
@@ -480,7 +480,7 @@ namespace OpenSim.Region.CoreModules
|
||||
// When sun settings are updated, we should update all clients with new settings.
|
||||
SunUpdateToAllClients();
|
||||
|
||||
m_log.DebugFormat("[SUN]: PosTime : {0}", PosTime.ToString());
|
||||
// m_log.DebugFormat("[SUN]: PosTime : {0}", PosTime.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user