mirror of
https://github.com/opensim/opensim.git
synced 2026-08-07 17:55:48 +08:00
Merge branch 'master' into queuetest
This commit is contained in:
@@ -3665,6 +3665,15 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
return false;
|
||||
}
|
||||
|
||||
int num = m_sceneGraph.GetNumberOfScenePresences();
|
||||
|
||||
if (num >= RegionInfo.RegionSettings.AgentLimit)
|
||||
{
|
||||
if (!Permissions.IsAdministrator(cAgentData.AgentID))
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
ScenePresence childAgentUpdate = WaitGetScenePresence(cAgentData.AgentID);
|
||||
|
||||
if (childAgentUpdate != null)
|
||||
@@ -4966,6 +4975,17 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
// child agent creation, thereby emulating the SL behavior.
|
||||
public bool QueryAccess(UUID agentID, Vector3 position, out string reason)
|
||||
{
|
||||
int num = m_sceneGraph.GetNumberOfScenePresences();
|
||||
|
||||
if (num >= RegionInfo.RegionSettings.AgentLimit)
|
||||
{
|
||||
if (!Permissions.IsAdministrator(agentID))
|
||||
{
|
||||
reason = "The region is full";
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
reason = String.Empty;
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -800,6 +800,11 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
return m_scenePresenceArray;
|
||||
}
|
||||
|
||||
public int GetNumberOfScenePresences()
|
||||
{
|
||||
return m_scenePresenceArray.Count;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Request a scene presence by UUID. Fast, indexed lookup.
|
||||
/// </summary>
|
||||
|
||||
@@ -81,16 +81,20 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Add an inventory item to a prim in this group.
|
||||
/// Add an inventory item from a user's inventory to a prim in this scene object.
|
||||
/// </summary>
|
||||
/// <param name="remoteClient"></param>
|
||||
/// <param name="localID"></param>
|
||||
/// <param name="item"></param>
|
||||
/// <param name="remoteClient">The client adding the item.</param>
|
||||
/// <param name="localID">The local ID of the part receiving the add.</param>
|
||||
/// <param name="item">The user inventory item being added.</param>
|
||||
/// <param name="copyItemID">The item UUID that should be used by the new item.</param>
|
||||
/// <returns></returns>
|
||||
public bool AddInventoryItem(IClientAPI remoteClient, uint localID,
|
||||
InventoryItemBase item, UUID copyItemID)
|
||||
{
|
||||
// m_log.DebugFormat(
|
||||
// "[PRIM INVENTORY]: Adding inventory item {0} from {1} to part with local ID {2}",
|
||||
// item.Name, remoteClient.Name, localID);
|
||||
|
||||
UUID newItemId = (copyItemID != UUID.Zero) ? copyItemID : item.ID;
|
||||
|
||||
SceneObjectPart part = GetChildPart(localID);
|
||||
@@ -132,15 +136,20 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
taskItem.GroupPermissions = item.GroupPermissions;
|
||||
taskItem.NextPermissions = item.NextPermissions;
|
||||
}
|
||||
|
||||
|
||||
taskItem.Flags = item.Flags;
|
||||
|
||||
// m_log.DebugFormat(
|
||||
// "[PRIM INVENTORY]: Flags are 0x{0:X} for item {1} added to part {2} by {3}",
|
||||
// taskItem.Flags, taskItem.Name, localID, remoteClient.Name);
|
||||
|
||||
// TODO: These are pending addition of those fields to TaskInventoryItem
|
||||
// taskItem.SalePrice = item.SalePrice;
|
||||
// taskItem.SaleType = item.SaleType;
|
||||
taskItem.CreationDate = (uint)item.CreationDate;
|
||||
|
||||
bool addFromAllowedDrop = false;
|
||||
if (remoteClient!=null)
|
||||
if (remoteClient != null)
|
||||
{
|
||||
addFromAllowedDrop = remoteClient.AgentId != part.OwnerID;
|
||||
}
|
||||
|
||||
@@ -117,29 +117,40 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
|
||||
{
|
||||
using (XmlTextReader reader = new XmlTextReader(sr))
|
||||
{
|
||||
reader.Read();
|
||||
if (reader.Name != "CoalescedObject")
|
||||
try
|
||||
{
|
||||
// m_log.DebugFormat(
|
||||
// "[COALESCED SCENE OBJECTS SERIALIZER]: TryFromXml() root element was {0} so returning false",
|
||||
// reader.Name);
|
||||
reader.Read();
|
||||
if (reader.Name != "CoalescedObject")
|
||||
{
|
||||
// m_log.DebugFormat(
|
||||
// "[COALESCED SCENE OBJECTS SERIALIZER]: TryFromXml() root element was {0} so returning false",
|
||||
// reader.Name);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
coa = new CoalescedSceneObjects(UUID.Zero);
|
||||
reader.Read();
|
||||
|
||||
while (reader.NodeType != XmlNodeType.EndElement && reader.Name != "CoalescedObject")
|
||||
{
|
||||
if (reader.Name == "SceneObjectGroup")
|
||||
{
|
||||
string soXml = reader.ReadOuterXml();
|
||||
coa.Add(SceneObjectSerializer.FromOriginalXmlFormat(soXml));
|
||||
}
|
||||
}
|
||||
|
||||
reader.ReadEndElement(); // CoalescedObject
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
m_log.ErrorFormat(
|
||||
"[COALESCED SCENE OBJECTS SERIALIZER]: Deserialization of xml failed with {0} {1}",
|
||||
e.Message, e.StackTrace);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
coa = new CoalescedSceneObjects(UUID.Zero);
|
||||
reader.Read();
|
||||
|
||||
while (reader.NodeType != XmlNodeType.EndElement && reader.Name != "CoalescedObject")
|
||||
{
|
||||
if (reader.Name == "SceneObjectGroup")
|
||||
{
|
||||
string soXml = reader.ReadOuterXml();
|
||||
coa.Add(SceneObjectSerializer.FromOriginalXmlFormat(soXml));
|
||||
}
|
||||
}
|
||||
|
||||
reader.ReadEndElement(); // CoalescedObject
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -298,10 +298,20 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
if (null != objectAsset)
|
||||
{
|
||||
string xml = Utils.BytesToString(objectAsset.Data);
|
||||
SceneObjectGroup sog = SceneObjectSerializer.FromOriginalXmlFormat(xml);
|
||||
|
||||
if (null != sog)
|
||||
GatherAssetUuids(sog, assetUuids);
|
||||
|
||||
CoalescedSceneObjects coa;
|
||||
if (CoalescedSceneObjectsSerializer.TryFromXml(xml, out coa))
|
||||
{
|
||||
foreach (SceneObjectGroup sog in coa.Objects)
|
||||
GatherAssetUuids(sog, assetUuids);
|
||||
}
|
||||
else
|
||||
{
|
||||
SceneObjectGroup sog = SceneObjectSerializer.FromOriginalXmlFormat(xml);
|
||||
|
||||
if (null != sog)
|
||||
GatherAssetUuids(sog, assetUuids);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user