mirror of
https://github.com/opensim/opensim.git
synced 2026-08-10 11:33:28 +08:00
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:
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user