diff options
author | Charles Krinke | 2007-12-17 16:41:28 +0000 |
---|---|---|
committer | Charles Krinke | 2007-12-17 16:41:28 +0000 |
commit | a990c64698d465a6ed1694cdaa526254f8063663 (patch) | |
tree | 9833c5eb8a95ad44dcea0f84769703323d488a6e | |
parent | Thank you, Kiryu for a patch to fix out of sync error in UDP server (diff) | |
download | opensim-SC-a990c64698d465a6ed1694cdaa526254f8063663.zip opensim-SC-a990c64698d465a6ed1694cdaa526254f8063663.tar.gz opensim-SC-a990c64698d465a6ed1694cdaa526254f8063663.tar.bz2 opensim-SC-a990c64698d465a6ed1694cdaa526254f8063663.tar.xz |
Thank you to Kiryu for a patch to fix an out of Sync
error in Scene. Affects 6 files and is Mantis#201
-rw-r--r-- | OpenSim/Region/Environment/Scenes/InnerScene.cs | 66 | ||||
-rw-r--r-- | OpenSim/Region/Environment/Scenes/Scene.Inventory.cs | 10 | ||||
-rw-r--r-- | OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs | 12 | ||||
-rw-r--r-- | OpenSim/Region/Environment/Scenes/Scene.cs | 34 | ||||
-rw-r--r-- | OpenSim/Region/Environment/Scenes/SceneManager.cs | 10 | ||||
-rw-r--r-- | OpenSim/Region/Environment/Scenes/SceneXmlLoader.cs | 10 |
6 files changed, 112 insertions, 30 deletions
diff --git a/OpenSim/Region/Environment/Scenes/InnerScene.cs b/OpenSim/Region/Environment/Scenes/InnerScene.cs index 03f3cd0..0ca3405 100644 --- a/OpenSim/Region/Environment/Scenes/InnerScene.cs +++ b/OpenSim/Region/Environment/Scenes/InnerScene.cs | |||
@@ -129,7 +129,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
129 | 129 | ||
130 | internal void UpdateEntities() | 130 | internal void UpdateEntities() |
131 | { | 131 | { |
132 | List<EntityBase> updateEntities = new List<EntityBase>(Entities.Values); | 132 | List<EntityBase> updateEntities = GetEntities(); |
133 | 133 | ||
134 | foreach (EntityBase entity in updateEntities) | 134 | foreach (EntityBase entity in updateEntities) |
135 | { | 135 | { |
@@ -147,7 +147,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
147 | 147 | ||
148 | internal void UpdateEntityMovement() | 148 | internal void UpdateEntityMovement() |
149 | { | 149 | { |
150 | List<EntityBase> moveEntities = new List<EntityBase>(Entities.Values); | 150 | List<EntityBase> moveEntities = GetEntities(); |
151 | 151 | ||
152 | foreach (EntityBase entity in moveEntities) | 152 | foreach (EntityBase entity in moveEntities) |
153 | { | 153 | { |
@@ -174,7 +174,10 @@ namespace OpenSim.Region.Environment.Scenes | |||
174 | if (!Entities.ContainsKey(sceneObject.UUID)) | 174 | if (!Entities.ContainsKey(sceneObject.UUID)) |
175 | { | 175 | { |
176 | // QuadTree.AddObject(sceneObject); | 176 | // QuadTree.AddObject(sceneObject); |
177 | Entities.Add(sceneObject.UUID, sceneObject); | 177 | lock (Entities) |
178 | { | ||
179 | Entities.Add(sceneObject.UUID, sceneObject); | ||
180 | } | ||
178 | m_numPrim++; | 181 | m_numPrim++; |
179 | } | 182 | } |
180 | } | 183 | } |
@@ -188,7 +191,9 @@ namespace OpenSim.Region.Environment.Scenes | |||
188 | } | 191 | } |
189 | public void RemovePrim(uint localID, LLUUID avatar_deleter) | 192 | public void RemovePrim(uint localID, LLUUID avatar_deleter) |
190 | { | 193 | { |
191 | foreach (EntityBase obj in Entities.Values) | 194 | List<EntityBase> EntityList = GetEntities(); |
195 | |||
196 | foreach (EntityBase obj in EntityList) | ||
192 | { | 197 | { |
193 | if (obj is SceneObjectGroup) | 198 | if (obj is SceneObjectGroup) |
194 | { | 199 | { |
@@ -310,7 +315,12 @@ namespace OpenSim.Region.Environment.Scenes | |||
310 | /// <returns></returns> | 315 | /// <returns></returns> |
311 | public List<ScenePresence> GetScenePresences() | 316 | public List<ScenePresence> GetScenePresences() |
312 | { | 317 | { |
313 | List<ScenePresence> result = new List<ScenePresence>(ScenePresences.Values); | 318 | List<ScenePresence> result; |
319 | |||
320 | lock (ScenePresences) | ||
321 | { | ||
322 | result = new List<ScenePresence>(ScenePresences.Values); | ||
323 | } | ||
314 | 324 | ||
315 | return result; | 325 | return result; |
316 | } | 326 | } |
@@ -330,8 +340,9 @@ namespace OpenSim.Region.Environment.Scenes | |||
330 | public List<ScenePresence> GetScenePresences(FilterAvatarList filter) | 340 | public List<ScenePresence> GetScenePresences(FilterAvatarList filter) |
331 | { | 341 | { |
332 | List<ScenePresence> result = new List<ScenePresence>(); | 342 | List<ScenePresence> result = new List<ScenePresence>(); |
343 | List<ScenePresence> ScenePresencesList = GetScenePresences(); | ||
333 | 344 | ||
334 | foreach (ScenePresence avatar in ScenePresences.Values) | 345 | foreach (ScenePresence avatar in ScenePresencesList) |
335 | { | 346 | { |
336 | if (filter(avatar)) | 347 | if (filter(avatar)) |
337 | { | 348 | { |
@@ -358,7 +369,9 @@ namespace OpenSim.Region.Environment.Scenes | |||
358 | 369 | ||
359 | private SceneObjectGroup GetGroupByPrim(uint localID) | 370 | private SceneObjectGroup GetGroupByPrim(uint localID) |
360 | { | 371 | { |
361 | foreach (EntityBase ent in Entities.Values) | 372 | List<EntityBase> EntityList = GetEntities(); |
373 | |||
374 | foreach (EntityBase ent in EntityList) | ||
362 | { | 375 | { |
363 | if (ent is SceneObjectGroup) | 376 | if (ent is SceneObjectGroup) |
364 | { | 377 | { |
@@ -371,7 +384,9 @@ namespace OpenSim.Region.Environment.Scenes | |||
371 | 384 | ||
372 | private SceneObjectGroup GetGroupByPrim(LLUUID fullID) | 385 | private SceneObjectGroup GetGroupByPrim(LLUUID fullID) |
373 | { | 386 | { |
374 | foreach (EntityBase ent in Entities.Values) | 387 | List<EntityBase> EntityList = GetEntities(); |
388 | |||
389 | foreach (EntityBase ent in EntityList) | ||
375 | { | 390 | { |
376 | if (ent is SceneObjectGroup) | 391 | if (ent is SceneObjectGroup) |
377 | { | 392 | { |
@@ -461,6 +476,18 @@ namespace OpenSim.Region.Environment.Scenes | |||
461 | return false; | 476 | return false; |
462 | } | 477 | } |
463 | 478 | ||
479 | public List<EntityBase> GetEntities() | ||
480 | { | ||
481 | List<EntityBase> result; | ||
482 | |||
483 | lock (Entities) | ||
484 | { | ||
485 | result = new List<EntityBase>(Entities.Values); | ||
486 | } | ||
487 | |||
488 | return result; | ||
489 | } | ||
490 | |||
464 | #endregion | 491 | #endregion |
465 | 492 | ||
466 | #region Other Methods | 493 | #region Other Methods |
@@ -484,7 +511,9 @@ namespace OpenSim.Region.Environment.Scenes | |||
484 | 511 | ||
485 | public void SendAllSceneObjectsToClient(ScenePresence presence) | 512 | public void SendAllSceneObjectsToClient(ScenePresence presence) |
486 | { | 513 | { |
487 | foreach (EntityBase ent in Entities.Values) | 514 | List<EntityBase> EntityList = GetEntities(); |
515 | |||
516 | foreach (EntityBase ent in EntityList) | ||
488 | { | 517 | { |
489 | if (ent is SceneObjectGroup) | 518 | if (ent is SceneObjectGroup) |
490 | { | 519 | { |
@@ -770,8 +799,10 @@ namespace OpenSim.Region.Environment.Scenes | |||
770 | /// <param name="childPrims"></param> | 799 | /// <param name="childPrims"></param> |
771 | public void LinkObjects(uint parentPrim, List<uint> childPrims) | 800 | public void LinkObjects(uint parentPrim, List<uint> childPrims) |
772 | { | 801 | { |
802 | List<EntityBase> EntityList = GetEntities(); | ||
803 | |||
773 | SceneObjectGroup parenPrim = null; | 804 | SceneObjectGroup parenPrim = null; |
774 | foreach (EntityBase ent in Entities.Values) | 805 | foreach (EntityBase ent in EntityList) |
775 | { | 806 | { |
776 | if (ent is SceneObjectGroup) | 807 | if (ent is SceneObjectGroup) |
777 | { | 808 | { |
@@ -788,7 +819,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
788 | { | 819 | { |
789 | for (int i = 0; i < childPrims.Count; i++) | 820 | for (int i = 0; i < childPrims.Count; i++) |
790 | { | 821 | { |
791 | foreach (EntityBase ent in Entities.Values) | 822 | foreach (EntityBase ent in EntityList) |
792 | { | 823 | { |
793 | if (ent is SceneObjectGroup) | 824 | if (ent is SceneObjectGroup) |
794 | { | 825 | { |
@@ -819,8 +850,10 @@ namespace OpenSim.Region.Environment.Scenes | |||
819 | // XXX I'm anticipating that building this dictionary once is more efficient than | 850 | // XXX I'm anticipating that building this dictionary once is more efficient than |
820 | // repeated scanning of the Entity.Values for a large number of primIds. However, it might | 851 | // repeated scanning of the Entity.Values for a large number of primIds. However, it might |
821 | // be more efficient yet to keep this dictionary permanently on hand. | 852 | // be more efficient yet to keep this dictionary permanently on hand. |
853 | |||
822 | Dictionary<uint, SceneObjectGroup> sceneObjects = new Dictionary<uint, SceneObjectGroup>(); | 854 | Dictionary<uint, SceneObjectGroup> sceneObjects = new Dictionary<uint, SceneObjectGroup>(); |
823 | foreach (EntityBase ent in Entities.Values) | 855 | List<EntityBase> EntitieList = GetEntities(); |
856 | foreach (EntityBase ent in EntitieList) | ||
824 | { | 857 | { |
825 | if (ent is SceneObjectGroup) | 858 | if (ent is SceneObjectGroup) |
826 | { | 859 | { |
@@ -863,8 +896,10 @@ namespace OpenSim.Region.Environment.Scenes | |||
863 | /// <param name="flags"></param> | 896 | /// <param name="flags"></param> |
864 | public void DuplicateObject(uint originalPrim, LLVector3 offset, uint flags, LLUUID AgentID, LLUUID GroupID) | 897 | public void DuplicateObject(uint originalPrim, LLVector3 offset, uint flags, LLUUID AgentID, LLUUID GroupID) |
865 | { | 898 | { |
899 | List<EntityBase> EntityList = GetEntities(); | ||
900 | |||
866 | SceneObjectGroup originPrim = null; | 901 | SceneObjectGroup originPrim = null; |
867 | foreach (EntityBase ent in Entities.Values) | 902 | foreach (EntityBase ent in EntityList) |
868 | { | 903 | { |
869 | if (ent is SceneObjectGroup) | 904 | if (ent is SceneObjectGroup) |
870 | { | 905 | { |
@@ -882,7 +917,10 @@ namespace OpenSim.Region.Environment.Scenes | |||
882 | { | 917 | { |
883 | SceneObjectGroup copy = originPrim.Copy(AgentID, GroupID); | 918 | SceneObjectGroup copy = originPrim.Copy(AgentID, GroupID); |
884 | copy.AbsolutePosition = copy.AbsolutePosition + offset; | 919 | copy.AbsolutePosition = copy.AbsolutePosition + offset; |
885 | Entities.Add(copy.UUID, copy); | 920 | lock (Entities) |
921 | { | ||
922 | Entities.Add(copy.UUID, copy); | ||
923 | } | ||
886 | m_numPrim++; | 924 | m_numPrim++; |
887 | copy.ScheduleGroupForFullUpdate(); | 925 | copy.ScheduleGroupForFullUpdate(); |
888 | } | 926 | } |
diff --git a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs index 7026fea..9821906 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs | |||
@@ -33,6 +33,7 @@ using OpenSim.Framework; | |||
33 | using OpenSim.Framework.Communications.Cache; | 33 | using OpenSim.Framework.Communications.Cache; |
34 | using OpenSim.Framework.Console; | 34 | using OpenSim.Framework.Console; |
35 | using OpenSim.Region.Physics.Manager; | 35 | using OpenSim.Region.Physics.Manager; |
36 | using System.Collections.Generic; | ||
36 | 37 | ||
37 | namespace OpenSim.Region.Environment.Scenes | 38 | namespace OpenSim.Region.Environment.Scenes |
38 | { | 39 | { |
@@ -342,7 +343,9 @@ namespace OpenSim.Region.Environment.Scenes | |||
342 | 343 | ||
343 | private SceneObjectGroup GetGroupByPrim(uint localID) | 344 | private SceneObjectGroup GetGroupByPrim(uint localID) |
344 | { | 345 | { |
345 | foreach (EntityBase ent in Entities.Values) | 346 | List<EntityBase> EntitieList = GetEntities(); |
347 | |||
348 | foreach (EntityBase ent in EntitieList) | ||
346 | { | 349 | { |
347 | if (ent is SceneObjectGroup) | 350 | if (ent is SceneObjectGroup) |
348 | { | 351 | { |
@@ -455,7 +458,10 @@ namespace OpenSim.Region.Environment.Scenes | |||
455 | { | 458 | { |
456 | EntityBase selectedEnt = null; | 459 | EntityBase selectedEnt = null; |
457 | //MainLog.Instance.Verbose("CLIENT", "LocalID:" + Data.ObjectLocalID.ToString()); | 460 | //MainLog.Instance.Verbose("CLIENT", "LocalID:" + Data.ObjectLocalID.ToString()); |
458 | foreach (EntityBase ent in Entities.Values) | 461 | |
462 | List<EntityBase> EntitieList = GetEntities(); | ||
463 | |||
464 | foreach (EntityBase ent in EntitieList) | ||
459 | { | 465 | { |
460 | if (ent.LocalId == Data.ObjectLocalID) | 466 | if (ent.LocalId == Data.ObjectLocalID) |
461 | { | 467 | { |
diff --git a/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs b/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs index aa7c7b4..6a7c266 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs | |||
@@ -97,7 +97,9 @@ namespace OpenSim.Region.Environment.Scenes | |||
97 | /// <param name="remoteClient"></param> | 97 | /// <param name="remoteClient"></param> |
98 | public void SelectPrim(uint primLocalID, IClientAPI remoteClient) | 98 | public void SelectPrim(uint primLocalID, IClientAPI remoteClient) |
99 | { | 99 | { |
100 | foreach (EntityBase ent in Entities.Values) | 100 | List<EntityBase> EntitieList = GetEntities(); |
101 | |||
102 | foreach (EntityBase ent in EntitieList) | ||
101 | { | 103 | { |
102 | if (ent is SceneObjectGroup) | 104 | if (ent is SceneObjectGroup) |
103 | { | 105 | { |
@@ -119,7 +121,9 @@ namespace OpenSim.Region.Environment.Scenes | |||
119 | /// <param name="remoteClient"></param> | 121 | /// <param name="remoteClient"></param> |
120 | public void DeselectPrim(uint primLocalID, IClientAPI remoteClient) | 122 | public void DeselectPrim(uint primLocalID, IClientAPI remoteClient) |
121 | { | 123 | { |
122 | foreach (EntityBase ent in Entities.Values) | 124 | List<EntityBase> EntitieList = GetEntities(); |
125 | |||
126 | foreach (EntityBase ent in EntitieList) | ||
123 | { | 127 | { |
124 | if (ent is SceneObjectGroup) | 128 | if (ent is SceneObjectGroup) |
125 | { | 129 | { |
@@ -137,7 +141,9 @@ namespace OpenSim.Region.Environment.Scenes | |||
137 | { | 141 | { |
138 | EventManager.TriggerObjectGrab(localID, offsetPos, remoteClient); | 142 | EventManager.TriggerObjectGrab(localID, offsetPos, remoteClient); |
139 | 143 | ||
140 | foreach (EntityBase ent in Entities.Values) | 144 | List<EntityBase> EntitieList = GetEntities(); |
145 | |||
146 | foreach (EntityBase ent in EntitieList) | ||
141 | { | 147 | { |
142 | if (ent is SceneObjectGroup) | 148 | if (ent is SceneObjectGroup) |
143 | { | 149 | { |
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index 8277f39..db2e4b8 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs | |||
@@ -1615,7 +1615,9 @@ namespace OpenSim.Region.Environment.Scenes | |||
1615 | /// <param name="message"></param> | 1615 | /// <param name="message"></param> |
1616 | public void SendGeneralAlert(string message) | 1616 | public void SendGeneralAlert(string message) |
1617 | { | 1617 | { |
1618 | foreach (ScenePresence presence in m_scenePresences.Values) | 1618 | List<ScenePresence> presenceList = GetScenePresences(); |
1619 | |||
1620 | foreach (ScenePresence presence in presenceList) | ||
1619 | { | 1621 | { |
1620 | presence.ControllingClient.SendAlertMessage(message); | 1622 | presence.ControllingClient.SendAlertMessage(message); |
1621 | } | 1623 | } |
@@ -1776,7 +1778,9 @@ namespace OpenSim.Region.Environment.Scenes | |||
1776 | /// <param name="modal"></param> | 1778 | /// <param name="modal"></param> |
1777 | public void SendAlertToUser(string firstName, string lastName, string message, bool modal) | 1779 | public void SendAlertToUser(string firstName, string lastName, string message, bool modal) |
1778 | { | 1780 | { |
1779 | foreach (ScenePresence presence in m_scenePresences.Values) | 1781 | List<ScenePresence> presenceList = GetScenePresences(); |
1782 | |||
1783 | foreach (ScenePresence presence in presenceList) | ||
1780 | { | 1784 | { |
1781 | if ((presence.Firstname == firstName) && (presence.Lastname == lastName)) | 1785 | if ((presence.Firstname == firstName) && (presence.Lastname == lastName)) |
1782 | { | 1786 | { |
@@ -1821,7 +1825,9 @@ namespace OpenSim.Region.Environment.Scenes | |||
1821 | /// </summary> | 1825 | /// </summary> |
1822 | public void ForceClientUpdate() | 1826 | public void ForceClientUpdate() |
1823 | { | 1827 | { |
1824 | foreach (EntityBase ent in Entities.Values) | 1828 | List<EntityBase> EntitieList = GetEntities(); |
1829 | |||
1830 | foreach (EntityBase ent in EntitieList) | ||
1825 | { | 1831 | { |
1826 | if (ent is SceneObjectGroup) | 1832 | if (ent is SceneObjectGroup) |
1827 | { | 1833 | { |
@@ -1838,7 +1844,10 @@ namespace OpenSim.Region.Environment.Scenes | |||
1838 | public void HandleEditCommand(string[] cmdparams) | 1844 | public void HandleEditCommand(string[] cmdparams) |
1839 | { | 1845 | { |
1840 | Console.WriteLine("Searching for Primitive: '" + cmdparams[0] + "'"); | 1846 | Console.WriteLine("Searching for Primitive: '" + cmdparams[0] + "'"); |
1841 | foreach (EntityBase ent in Entities.Values) | 1847 | |
1848 | List<EntityBase> EntitieList = GetEntities(); | ||
1849 | |||
1850 | foreach (EntityBase ent in EntitieList) | ||
1842 | { | 1851 | { |
1843 | if (ent is SceneObjectGroup) | 1852 | if (ent is SceneObjectGroup) |
1844 | { | 1853 | { |
@@ -2017,7 +2026,8 @@ namespace OpenSim.Region.Environment.Scenes | |||
2017 | if (!(m_scenePresences.Equals(null))) | 2026 | if (!(m_scenePresences.Equals(null))) |
2018 | { | 2027 | { |
2019 | try { | 2028 | try { |
2020 | foreach (ScenePresence presence in m_scenePresences.Values) | 2029 | List<ScenePresence> presenceList = GetScenePresences(); |
2030 | foreach (ScenePresence presence in presenceList) | ||
2021 | { | 2031 | { |
2022 | action(presence); | 2032 | action(presence); |
2023 | } | 2033 | } |
@@ -2033,7 +2043,14 @@ namespace OpenSim.Region.Environment.Scenes | |||
2033 | /// <param name="action"></param> | 2043 | /// <param name="action"></param> |
2034 | public void ForEachObject(Action<SceneObjectGroup> action) | 2044 | public void ForEachObject(Action<SceneObjectGroup> action) |
2035 | { | 2045 | { |
2036 | foreach (SceneObjectGroup presence in m_sceneObjects.Values) | 2046 | List<SceneObjectGroup> presenceList; |
2047 | |||
2048 | lock (m_sceneObjects) | ||
2049 | { | ||
2050 | presenceList = new List<SceneObjectGroup>(m_sceneObjects.Values); | ||
2051 | } | ||
2052 | |||
2053 | foreach (SceneObjectGroup presence in presenceList) | ||
2037 | { | 2054 | { |
2038 | action(presence); | 2055 | action(presence); |
2039 | } | 2056 | } |
@@ -2074,6 +2091,11 @@ namespace OpenSim.Region.Environment.Scenes | |||
2074 | m_innerScene.ForEachClient(action); | 2091 | m_innerScene.ForEachClient(action); |
2075 | } | 2092 | } |
2076 | 2093 | ||
2094 | public List<EntityBase> GetEntities() | ||
2095 | { | ||
2096 | return m_innerScene.GetEntities(); | ||
2097 | } | ||
2098 | |||
2077 | #endregion | 2099 | #endregion |
2078 | } | 2100 | } |
2079 | } | 2101 | } |
diff --git a/OpenSim/Region/Environment/Scenes/SceneManager.cs b/OpenSim/Region/Environment/Scenes/SceneManager.cs index c589e8d..e822874 100644 --- a/OpenSim/Region/Environment/Scenes/SceneManager.cs +++ b/OpenSim/Region/Environment/Scenes/SceneManager.cs | |||
@@ -290,7 +290,9 @@ namespace OpenSim.Region.Environment.Scenes | |||
290 | { | 290 | { |
291 | ForEachCurrentScene(delegate(Scene scene) | 291 | ForEachCurrentScene(delegate(Scene scene) |
292 | { | 292 | { |
293 | foreach (EntityBase entity in scene.Entities.Values) | 293 | List<EntityBase> EntitieList = scene.GetEntities(); |
294 | |||
295 | foreach (EntityBase entity in EntitieList) | ||
294 | { | 296 | { |
295 | if (entity is ScenePresence) | 297 | if (entity is ScenePresence) |
296 | { | 298 | { |
@@ -315,7 +317,9 @@ namespace OpenSim.Region.Environment.Scenes | |||
315 | 317 | ||
316 | ForEachCurrentScene(delegate(Scene scene) | 318 | ForEachCurrentScene(delegate(Scene scene) |
317 | { | 319 | { |
318 | foreach (EntityBase entity in scene.Entities.Values) | 320 | List<EntityBase> EntitieList = scene.GetEntities(); |
321 | |||
322 | foreach (EntityBase entity in EntitieList) | ||
319 | { | 323 | { |
320 | if (entity is ScenePresence) | 324 | if (entity is ScenePresence) |
321 | { | 325 | { |
@@ -419,4 +423,4 @@ namespace OpenSim.Region.Environment.Scenes | |||
419 | m_localScenes.ForEach(action); | 423 | m_localScenes.ForEach(action); |
420 | } | 424 | } |
421 | } | 425 | } |
422 | } \ No newline at end of file | 426 | } |
diff --git a/OpenSim/Region/Environment/Scenes/SceneXmlLoader.cs b/OpenSim/Region/Environment/Scenes/SceneXmlLoader.cs index c4411e3..aeb9c61 100644 --- a/OpenSim/Region/Environment/Scenes/SceneXmlLoader.cs +++ b/OpenSim/Region/Environment/Scenes/SceneXmlLoader.cs | |||
@@ -108,7 +108,10 @@ namespace OpenSim.Region.Environment.Scenes | |||
108 | StreamWriter stream = new StreamWriter(file); | 108 | StreamWriter stream = new StreamWriter(file); |
109 | int primCount = 0; | 109 | int primCount = 0; |
110 | stream.WriteLine("<scene>\n"); | 110 | stream.WriteLine("<scene>\n"); |
111 | foreach (EntityBase ent in m_innerScene.Entities.Values) | 111 | |
112 | List<EntityBase> EntityList = m_innerScene.GetEntities(); | ||
113 | |||
114 | foreach (EntityBase ent in EntityList) | ||
112 | { | 115 | { |
113 | if (ent is SceneObjectGroup) | 116 | if (ent is SceneObjectGroup) |
114 | { | 117 | { |
@@ -170,7 +173,10 @@ namespace OpenSim.Region.Environment.Scenes | |||
170 | StreamWriter stream = new StreamWriter(file); | 173 | StreamWriter stream = new StreamWriter(file); |
171 | int primCount = 0; | 174 | int primCount = 0; |
172 | stream.WriteLine("<scene>\n"); | 175 | stream.WriteLine("<scene>\n"); |
173 | foreach (EntityBase ent in m_innerScene.Entities.Values) | 176 | |
177 | List<EntityBase> EntityList = m_innerScene.GetEntities(); | ||
178 | |||
179 | foreach (EntityBase ent in EntityList) | ||
174 | { | 180 | { |
175 | if (ent is SceneObjectGroup) | 181 | if (ent is SceneObjectGroup) |
176 | { | 182 | { |