mirror of
https://github.com/opensim/opensim.git
synced 2026-08-11 11:57:03 +08:00
Changed SceneObjectGroup to store parts with the fast and thread-safe MapAndArray collection
This commit is contained in:
@@ -567,13 +567,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
|
||||
so.RootPart.AttachedAvatar = avatar.UUID;
|
||||
|
||||
//Anakin Lohner bug #3839
|
||||
lock (so.Children)
|
||||
{
|
||||
foreach (SceneObjectPart p in so.Children.Values)
|
||||
{
|
||||
p.AttachedAvatar = avatar.UUID;
|
||||
}
|
||||
}
|
||||
SceneObjectPart[] parts = so.Parts;
|
||||
for (int i = 0; i < parts.Length; i++)
|
||||
parts[i].AttachedAvatar = avatar.UUID;
|
||||
|
||||
if (so.RootPart.PhysActor != null)
|
||||
{
|
||||
|
||||
@@ -594,10 +594,6 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
|
||||
rootPart.Name = item.Name;
|
||||
rootPart.Description = item.Description;
|
||||
|
||||
List<SceneObjectPart> partList = null;
|
||||
lock (group.Children)
|
||||
partList = new List<SceneObjectPart>(group.Children.Values);
|
||||
|
||||
group.SetGroup(remoteClient.ActiveGroupId, remoteClient);
|
||||
if ((rootPart.OwnerID != item.Owner) || (item.CurrentPermissions & 16) != 0)
|
||||
{
|
||||
@@ -607,7 +603,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
|
||||
|
||||
if (m_Scene.Permissions.PropagatePermissions())
|
||||
{
|
||||
foreach (SceneObjectPart part in partList)
|
||||
foreach (SceneObjectPart part in group.Parts)
|
||||
{
|
||||
part.EveryoneMask = item.EveryOnePermissions;
|
||||
part.NextOwnerMask = item.NextPermissions;
|
||||
@@ -618,7 +614,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
|
||||
}
|
||||
}
|
||||
|
||||
foreach (SceneObjectPart part in partList)
|
||||
foreach (SceneObjectPart part in group.Parts)
|
||||
{
|
||||
if ((part.OwnerID != item.Owner) || (item.CurrentPermissions & 16) != 0)
|
||||
{
|
||||
|
||||
@@ -243,11 +243,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver
|
||||
// to the same scene (when this is possible).
|
||||
sceneObject.ResetIDs();
|
||||
|
||||
List<SceneObjectPart> partList = null;
|
||||
lock (sceneObject.Children)
|
||||
partList = new List<SceneObjectPart>(sceneObject.Children.Values);
|
||||
|
||||
foreach (SceneObjectPart part in partList)
|
||||
foreach (SceneObjectPart part in sceneObject.Parts)
|
||||
{
|
||||
if (!ResolveUserUuid(part.CreatorID))
|
||||
part.CreatorID = m_scene.RegionInfo.EstateSettings.EstateOwner;
|
||||
|
||||
@@ -128,14 +128,9 @@ namespace OpenSim.Region.CoreModules.World.Objects.BuySell
|
||||
group.SetOwnerId(remoteClient.AgentId);
|
||||
group.SetRootPartOwner(part, remoteClient.AgentId, remoteClient.ActiveGroupId);
|
||||
|
||||
List<SceneObjectPart> partList = null;
|
||||
|
||||
lock (group.Children)
|
||||
partList = new List<SceneObjectPart>(group.Children.Values);
|
||||
|
||||
if (m_scene.Permissions.PropagatePermissions())
|
||||
{
|
||||
foreach (SceneObjectPart child in partList)
|
||||
foreach (SceneObjectPart child in group.Parts)
|
||||
{
|
||||
child.Inventory.ChangeInventoryOwner(remoteClient.AgentId);
|
||||
child.TriggerScriptChangedEvent(Changed.OWNER);
|
||||
|
||||
@@ -229,11 +229,7 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
|
||||
Color mapdotspot = Color.Gray; // Default color when prim color is white
|
||||
|
||||
// Loop over prim in group
|
||||
List<SceneObjectPart> partList = null;
|
||||
lock (mapdot.Children)
|
||||
partList = new List<SceneObjectPart>(mapdot.Children.Values);
|
||||
|
||||
foreach (SceneObjectPart part in partList)
|
||||
foreach (SceneObjectPart part in mapdot.Parts)
|
||||
{
|
||||
if (part == null)
|
||||
continue;
|
||||
|
||||
Reference in New Issue
Block a user