mirror of
https://github.com/opensim/opensim.git
synced 2026-08-07 01:35:46 +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:
@@ -270,7 +270,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
if (npos.X > Constants.RegionSize) npos.X = Constants.RegionSize - 1.0f;
|
||||
if (npos.Y > Constants.RegionSize) npos.Y = Constants.RegionSize - 1.0f;
|
||||
|
||||
foreach (SceneObjectPart part in sceneObject.Children.Values)
|
||||
foreach (SceneObjectPart part in sceneObject.Parts)
|
||||
{
|
||||
part.GroupPosition = npos;
|
||||
}
|
||||
@@ -370,9 +370,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
if (Entities.ContainsKey(sceneObject.UUID))
|
||||
return false;
|
||||
|
||||
List<SceneObjectPart> children;
|
||||
lock (sceneObject.Children)
|
||||
children = new List<SceneObjectPart>(sceneObject.Children.Values);
|
||||
SceneObjectPart[] children = sceneObject.Parts;
|
||||
|
||||
// Clamp child prim sizes and add child prims to the m_numPrim count
|
||||
if (m_parentScene.m_clampPrimSize)
|
||||
@@ -391,7 +389,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
part.Shape.Scale = scale;
|
||||
}
|
||||
}
|
||||
m_numPrim += children.Count;
|
||||
m_numPrim += children.Length;
|
||||
|
||||
sceneObject.AttachToScene(m_parentScene);
|
||||
|
||||
@@ -448,15 +446,17 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
|
||||
lock (SceneObjectGroupsByFullID)
|
||||
{
|
||||
foreach (SceneObjectPart part in grp.Children.Values)
|
||||
SceneObjectGroupsByFullID.Remove(part.UUID);
|
||||
SceneObjectPart[] parts = grp.Parts;
|
||||
for (int i = 0; i < parts.Length; i++)
|
||||
SceneObjectGroupsByFullID.Remove(parts[i].UUID);
|
||||
SceneObjectGroupsByFullID.Remove(grp.RootPart.UUID);
|
||||
}
|
||||
|
||||
lock (SceneObjectGroupsByLocalID)
|
||||
{
|
||||
foreach (SceneObjectPart part in grp.Children.Values)
|
||||
SceneObjectGroupsByLocalID.Remove(part.LocalId);
|
||||
SceneObjectPart[] parts = grp.Parts;
|
||||
for (int i = 0; i < parts.Length; i++)
|
||||
SceneObjectGroupsByLocalID.Remove(parts[i].LocalId);
|
||||
SceneObjectGroupsByLocalID.Remove(grp.RootPart.LocalId);
|
||||
}
|
||||
|
||||
@@ -943,11 +943,8 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
|
||||
if (sog != null)
|
||||
{
|
||||
lock (sog.Children)
|
||||
{
|
||||
if (sog.Children.ContainsKey(fullID))
|
||||
return sog;
|
||||
}
|
||||
if (sog.ContainsPart(fullID))
|
||||
return sog;
|
||||
|
||||
lock (SceneObjectGroupsByFullID)
|
||||
SceneObjectGroupsByFullID.Remove(fullID);
|
||||
@@ -1021,7 +1018,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
{
|
||||
if (entity is SceneObjectGroup)
|
||||
{
|
||||
foreach (SceneObjectPart p in ((SceneObjectGroup)entity).GetParts())
|
||||
foreach (SceneObjectPart p in ((SceneObjectGroup)entity).Parts)
|
||||
{
|
||||
if (p.Name == name)
|
||||
{
|
||||
@@ -1686,14 +1683,8 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
SceneObjectGroup group = root.ParentGroup;
|
||||
group.areUpdatesSuspended = true;
|
||||
|
||||
List<SceneObjectPart> newSet = null;
|
||||
int numChildren;
|
||||
|
||||
lock (group.Children)
|
||||
{
|
||||
newSet = new List<SceneObjectPart>(group.Children.Values);
|
||||
numChildren = group.PrimCount;
|
||||
}
|
||||
List<SceneObjectPart> newSet = new List<SceneObjectPart>(group.Parts);
|
||||
int numChildren = newSet.Count;
|
||||
|
||||
if (numChildren == 1)
|
||||
break;
|
||||
@@ -1783,16 +1774,13 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
if (ent is SceneObjectGroup)
|
||||
{
|
||||
SceneObjectGroup sog = ent as SceneObjectGroup;
|
||||
|
||||
lock (sog.Children)
|
||||
|
||||
foreach (SceneObjectPart part in sog.Parts)
|
||||
{
|
||||
foreach (KeyValuePair<UUID, SceneObjectPart> subent in sog.Children)
|
||||
if (part.LocalId == localID)
|
||||
{
|
||||
if (subent.Value.LocalId == localID)
|
||||
{
|
||||
objid = subent.Key;
|
||||
obj = subent.Value;
|
||||
}
|
||||
objid = part.UUID;
|
||||
obj = part;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1868,8 +1856,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
copy.SetOwnerId(AgentID);
|
||||
copy.SetRootPartOwner(copy.RootPart, AgentID, GroupID);
|
||||
|
||||
List<SceneObjectPart> partList =
|
||||
new List<SceneObjectPart>(copy.Children.Values);
|
||||
SceneObjectPart[] partList = copy.Parts;
|
||||
|
||||
if (m_parentScene.Permissions.PropagatePermissions())
|
||||
{
|
||||
@@ -1891,7 +1878,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
// think it's selected, so it will never send a deselect...
|
||||
copy.IsSelected = false;
|
||||
|
||||
m_numPrim += copy.Children.Count;
|
||||
m_numPrim += copy.Parts.Length;
|
||||
|
||||
if (rot != Quaternion.Identity)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user