Merge branch 'master' into careminster-presence-refactor

Integrate the next large patch.
Don't use this version, it has a ghost avatar issue. Next push
will fix it.
This commit is contained in:
Melanie
2010-09-17 03:49:30 +01:00
36 changed files with 1052 additions and 1293 deletions

View File

@@ -46,13 +46,9 @@ namespace OpenSim.Region.Framework.Scenes
/// </summary>
public void ForceInventoryPersistence()
{
lockPartsForRead(true);
List<SceneObjectPart> values = new List<SceneObjectPart>(m_parts.Values);
lockPartsForRead(false);
foreach (SceneObjectPart part in values)
{
part.Inventory.ForceInventoryPersistence();
}
SceneObjectPart[] parts = m_parts.GetArray();
for (int i = 0; i < parts.Length; i++)
parts[i].Inventory.ForceInventoryPersistence();
}
/// <summary>
@@ -64,10 +60,9 @@ namespace OpenSim.Region.Framework.Scenes
// Don't start scripts if they're turned off in the region!
if (!m_scene.RegionInfo.RegionSettings.DisableScripts)
{
foreach (SceneObjectPart part in m_parts.Values)
{
part.Inventory.CreateScriptInstances(startParam, postOnRez, engine, stateSource);
}
SceneObjectPart[] parts = m_parts.GetArray();
for (int i = 0; i < parts.Length; i++)
parts[i].Inventory.CreateScriptInstances(startParam, postOnRez, engine, stateSource);
}
}
@@ -76,15 +71,9 @@ namespace OpenSim.Region.Framework.Scenes
/// </summary>
public void RemoveScriptInstances(bool sceneObjectBeingDeleted)
{
lockPartsForRead(true);
List<SceneObjectPart> values = new List<SceneObjectPart>(m_parts.Values);
lockPartsForRead(false);
foreach (SceneObjectPart part in values)
{
part.Inventory.RemoveScriptInstances(sceneObjectBeingDeleted);
}
SceneObjectPart[] parts = m_parts.GetArray();
for (int i = 0; i < parts.Length; i++)
parts[i].Inventory.RemoveScriptInstances(sceneObjectBeingDeleted);
}
/// <summary>
@@ -281,8 +270,11 @@ namespace OpenSim.Region.Framework.Scenes
PermissionMask.Transfer) | 7;
uint ownerMask = 0x7fffffff;
foreach (SceneObjectPart part in m_parts.Values)
SceneObjectPart[] parts = m_parts.GetArray();
for (int i = 0; i < parts.Length; i++)
{
SceneObjectPart part = parts[i];
ownerMask &= part.OwnerMask;
perms &= part.Inventory.MaskEffectivePermissions();
}
@@ -310,39 +302,40 @@ namespace OpenSim.Region.Framework.Scenes
public void ApplyNextOwnerPermissions()
{
foreach (SceneObjectPart part in m_parts.Values)
{
part.ApplyNextOwnerPermissions();
}
SceneObjectPart[] parts = m_parts.GetArray();
for (int i = 0; i < parts.Length; i++)
parts[i].ApplyNextOwnerPermissions();
}
public string GetStateSnapshot()
{
Dictionary<UUID, string> states = new Dictionary<UUID, string>();
foreach (SceneObjectPart part in m_parts.Values)
SceneObjectPart[] parts = m_parts.GetArray();
for (int i = 0; i < parts.Length; i++)
{
SceneObjectPart part = parts[i];
foreach (KeyValuePair<UUID, string> s in part.Inventory.GetScriptStates())
states[s.Key] = s.Value;
}
if (states.Count < 1)
return "";
return String.Empty;
XmlDocument xmldoc = new XmlDocument();
XmlNode xmlnode = xmldoc.CreateNode(XmlNodeType.XmlDeclaration,
"", "");
String.Empty, String.Empty);
xmldoc.AppendChild(xmlnode);
XmlElement rootElement = xmldoc.CreateElement("", "ScriptData",
"");
String.Empty);
xmldoc.AppendChild(rootElement);
XmlElement wrapper = xmldoc.CreateElement("", "ScriptStates",
"");
String.Empty);
rootElement.AppendChild(wrapper);
@@ -425,10 +418,9 @@ namespace OpenSim.Region.Framework.Scenes
if (m_scene.RegionInfo.RegionSettings.DisableScripts)
return;
foreach (SceneObjectPart part in m_parts.Values)
{
part.Inventory.ResumeScripts();
}
SceneObjectPart[] parts = m_parts.GetArray();
for (int i = 0; i < parts.Length; i++)
parts[i].Inventory.ResumeScripts();
}
}
}