From 860b2a502f797e5822c6705d4639f370f3ac5861 Mon Sep 17 00:00:00 2001 From: John Hurliman Date: Thu, 16 Sep 2010 17:30:46 -0700 Subject: Changed SceneObjectGroup to store parts with the fast and thread-safe MapAndArray collection --- .../Scenes/Serialization/SceneObjectSerializer.cs | 28 ++++++++++------------ 1 file changed, 12 insertions(+), 16 deletions(-) (limited to 'OpenSim/Region/Framework/Scenes/Serialization') diff --git a/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs b/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs index 5bdaa17..f5f6b90 100644 --- a/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs +++ b/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs @@ -158,16 +158,15 @@ namespace OpenSim.Region.Framework.Scenes.Serialization writer.WriteEndElement(); writer.WriteStartElement(String.Empty, "OtherParts", String.Empty); - lock (sceneObject.Children) + SceneObjectPart[] parts = sceneObject.Parts; + for (int i = 0; i < parts.Length; i++) { - foreach (SceneObjectPart part in sceneObject.Children.Values) + SceneObjectPart part = parts[i]; + if (part.UUID != sceneObject.RootPart.UUID) { - if (part.UUID != sceneObject.RootPart.UUID) - { - writer.WriteStartElement(String.Empty, "Part", String.Empty); - ToOriginalXmlFormat(part, writer); - writer.WriteEndElement(); - } + writer.WriteStartElement(String.Empty, "Part", String.Empty); + ToOriginalXmlFormat(part, writer); + writer.WriteEndElement(); } } @@ -281,15 +280,12 @@ namespace OpenSim.Region.Framework.Scenes.Serialization sceneObject.RootPart.ToXml(writer); writer.WriteStartElement(String.Empty, "OtherParts", String.Empty); - lock (sceneObject.Children) + SceneObjectPart[] parts = sceneObject.Parts; + for (int i = 0; i < parts.Length; i++) { - foreach (SceneObjectPart part in sceneObject.Children.Values) - { - if (part.UUID != sceneObject.RootPart.UUID) - { - part.ToXml(writer); - } - } + SceneObjectPart part = parts[i]; + if (part.UUID != sceneObject.RootPart.UUID) + part.ToXml(writer); } writer.WriteEndElement(); // End of OtherParts -- cgit v1.1