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

@@ -294,8 +294,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
case ScriptBaseClass.LINK_SET:
if (m_host.ParentGroup != null)
{
lock (m_host.ParentGroup.Children)
return new List<SceneObjectPart>(m_host.ParentGroup.Children.Values);
return new List<SceneObjectPart>(m_host.ParentGroup.Parts);
}
return ret;
@@ -312,8 +311,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
if (m_host.ParentGroup == null)
return new List<SceneObjectPart>();
lock (m_host.ParentGroup.Children)
ret = new List<SceneObjectPart>(m_host.ParentGroup.Children.Values);
ret = new List<SceneObjectPart>(m_host.ParentGroup.Parts);
if (ret.Contains(m_host))
ret.Remove(m_host);
@@ -323,8 +321,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
if (m_host.ParentGroup == null)
return new List<SceneObjectPart>();
lock (m_host.ParentGroup.Children)
ret = new List<SceneObjectPart>(m_host.ParentGroup.Children.Values);
ret = new List<SceneObjectPart>(m_host.ParentGroup.Parts);
if (ret.Contains(m_host.ParentGroup.RootPart))
ret.Remove(m_host.ParentGroup.RootPart);
@@ -1281,16 +1278,13 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
if (group == null)
return;
bool allow = true;
lock (group.Children)
foreach (SceneObjectPart part in group.Parts)
{
foreach (SceneObjectPart part in group.Children.Values)
if (part.Scale.X > World.m_maxPhys || part.Scale.Y > World.m_maxPhys || part.Scale.Z > World.m_maxPhys)
{
if (part.Scale.X > World.m_maxPhys || part.Scale.Y > World.m_maxPhys || part.Scale.Z > World.m_maxPhys)
{
allow = false;
break;
}
allow = false;
break;
}
}
@@ -3889,18 +3883,15 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
case ScriptBaseClass.LINK_ALL_OTHERS:
case ScriptBaseClass.LINK_ALL_CHILDREN:
case ScriptBaseClass.LINK_THIS:
lock (parentPrim.Children)
foreach (SceneObjectPart part in parentPrim.Parts)
{
foreach (SceneObjectPart part in parentPrim.Children.Values)
if (part.UUID != m_host.UUID)
{
if (part.UUID != m_host.UUID)
{
childPrim = part;
break;
}
childPrim = part;
break;
}
break;
}
break;
default:
childPrim = parentPrim.GetLinkNumPart(linknum);
if (childPrim.UUID == m_host.UUID)
@@ -3911,7 +3902,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
if (linknum == ScriptBaseClass.LINK_ROOT)
{
// Restructuring Multiple Prims.
List<SceneObjectPart> parts = new List<SceneObjectPart>(parentPrim.Children.Values);
List<SceneObjectPart> parts = new List<SceneObjectPart>(parentPrim.Parts);
parts.Remove(parentPrim.RootPart);
if (parts.Count > 0)
{
@@ -3976,19 +3967,16 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
if (parentPrim.RootPart.AttachmentPoint != 0)
return; // Fail silently if attached
lock (parentPrim.Children)
List<SceneObjectPart> parts = new List<SceneObjectPart>(parentPrim.Parts);
parts.Remove(parentPrim.RootPart);
foreach (SceneObjectPart part in parts)
{
List<SceneObjectPart> parts = new List<SceneObjectPart>(parentPrim.Children.Values);
parts.Remove(parentPrim.RootPart);
foreach (SceneObjectPart part in parts)
{
parentPrim.DelinkFromGroup(part.LocalId, true);
parentPrim.TriggerScriptChangedEvent(Changed.LINK);
}
parentPrim.HasGroupChanged = true;
parentPrim.ScheduleGroupForFullUpdate();
parentPrim.DelinkFromGroup(part.LocalId, true);
parentPrim.TriggerScriptChangedEvent(Changed.LINK);
}
parentPrim.HasGroupChanged = true;
parentPrim.ScheduleGroupForFullUpdate();
}
public LSL_String llGetLinkKey(int linknum)

View File

@@ -209,15 +209,12 @@ namespace OpenSim.Region.ScriptEngine.Shared
else
Type = 0x02; // Passive
lock (part.ParentGroup.Children)
foreach (SceneObjectPart p in part.ParentGroup.Parts)
{
foreach (SceneObjectPart p in part.ParentGroup.Children.Values)
if (p.Inventory.ContainsScripts())
{
if (p.Inventory.ContainsScripts())
{
Type |= 0x08; // Scripted
break;
}
Type |= 0x08; // Scripted
break;
}
}