diff options
Merge branch 'careminster-presence-refactor' of ssh://3dhosting.de/var/git/careminster into careminster-presence-refactor
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs | 39 |
1 files changed, 24 insertions, 15 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs b/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs index e25b1f1..c511774 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs | |||
@@ -156,21 +156,30 @@ namespace OpenSim.Region.Framework.Scenes | |||
156 | } | 156 | } |
157 | break; | 157 | break; |
158 | } | 158 | } |
159 | else | 159 | else |
160 | { | 160 | { |
161 | // We also need to check the children of this prim as they | 161 | // We also need to check the children of this prim as they |
162 | // can be selected as well and send property information | 162 | // can be selected as well and send property information |
163 | bool foundPrim = false; | 163 | bool foundPrim = false; |
164 | foreach (KeyValuePair<UUID, SceneObjectPart> child in ((SceneObjectGroup) ent).Children) | 164 | |
165 | { | 165 | SceneObjectGroup sog = ent as SceneObjectGroup; |
166 | if (child.Value.LocalId == primLocalID) | 166 | |
167 | { | 167 | List<SceneObjectPart> partList = null; |
168 | child.Value.GetProperties(remoteClient); | 168 | lock (sog.Children) |
169 | foundPrim = true; | 169 | partList = new List<SceneObjectPart>(sog.Children.Values); |
170 | break; | 170 | |
171 | } | 171 | foreach (SceneObjectPart part in partList) |
172 | } | 172 | { |
173 | if (foundPrim) break; | 173 | if (part.LocalId == primLocalID) |
174 | { | ||
175 | part.GetProperties(remoteClient); | ||
176 | foundPrim = true; | ||
177 | break; | ||
178 | } | ||
179 | } | ||
180 | |||
181 | if (foundPrim) | ||
182 | break; | ||
174 | } | 183 | } |
175 | } | 184 | } |
176 | } | 185 | } |