diff options
author | Justin Clark-Casey (justincc) | 2012-04-27 00:58:54 +0100 |
---|---|---|
committer | Justin Clark-Casey (justincc) | 2012-04-27 00:58:54 +0100 |
commit | 07e62df5582e28675275b3f5143ec37e5697d283 (patch) | |
tree | 25227c120e0f1ae39d01bfd7dba4b66ef3be0d59 /OpenSim/Tests/Common/Helpers | |
parent | OSSL: Removed check for CanRunConsoleCommand() in osKickAvatar. (diff) | |
download | opensim-SC_OLD-07e62df5582e28675275b3f5143ec37e5697d283.zip opensim-SC_OLD-07e62df5582e28675275b3f5143ec37e5697d283.tar.gz opensim-SC_OLD-07e62df5582e28675275b3f5143ec37e5697d283.tar.bz2 opensim-SC_OLD-07e62df5582e28675275b3f5143ec37e5697d283.tar.xz |
Add regression test for teleporting an agent between separated regions on the same simulator.
This involves a large amount of change in test scene setup code to allow test scenes to share shared modules
SetupScene is now an instance method that requires an instantiation of SceneHelpers, though other SceneHelpers methods are still static
May split these out into separate classes in the future.
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Tests/Common/Helpers/SceneHelpers.cs | 218 |
1 files changed, 128 insertions, 90 deletions
diff --git a/OpenSim/Tests/Common/Helpers/SceneHelpers.cs b/OpenSim/Tests/Common/Helpers/SceneHelpers.cs index 7a6b1cf..8e54707 100644 --- a/OpenSim/Tests/Common/Helpers/SceneHelpers.cs +++ b/OpenSim/Tests/Common/Helpers/SceneHelpers.cs | |||
@@ -58,57 +58,67 @@ namespace OpenSim.Tests.Common | |||
58 | /// </summary> | 58 | /// </summary> |
59 | public class SceneHelpers | 59 | public class SceneHelpers |
60 | { | 60 | { |
61 | public static TestScene SetupScene() | 61 | private AgentCircuitManager m_acm = new AgentCircuitManager(); |
62 | private ISimulationDataService m_simDataService | ||
63 | = OpenSim.Server.Base.ServerUtils.LoadPlugin<ISimulationDataService>("OpenSim.Tests.Common.dll", null); | ||
64 | private IEstateDataService m_estateDataService; | ||
65 | |||
66 | private LocalAssetServicesConnector m_assetService; | ||
67 | private LocalAuthenticationServicesConnector m_authenticationService; | ||
68 | private LocalInventoryServicesConnector m_inventoryService; | ||
69 | private LocalGridServicesConnector m_gridService; | ||
70 | private LocalUserAccountServicesConnector m_userAccountService; | ||
71 | private LocalPresenceServicesConnector m_presenceService; | ||
72 | |||
73 | private CoreAssetCache m_cache; | ||
74 | |||
75 | public SceneHelpers() : this(null) {} | ||
76 | |||
77 | public SceneHelpers(CoreAssetCache cache) | ||
62 | { | 78 | { |
63 | return SetupScene(null); | 79 | m_assetService = StartAssetService(cache); |
80 | m_authenticationService = StartAuthenticationService(); | ||
81 | m_inventoryService = StartInventoryService(); | ||
82 | m_gridService = StartGridService(); | ||
83 | m_userAccountService = StartUserAccountService(); | ||
84 | m_presenceService = StartPresenceService(); | ||
85 | |||
86 | m_inventoryService.PostInitialise(); | ||
87 | m_assetService.PostInitialise(); | ||
88 | m_userAccountService.PostInitialise(); | ||
89 | m_presenceService.PostInitialise(); | ||
90 | |||
91 | m_cache = cache; | ||
64 | } | 92 | } |
65 | 93 | ||
66 | /// <summary> | 94 | /// <summary> |
67 | /// Set up a test scene | 95 | /// Set up a test scene |
68 | /// </summary> | 96 | /// </summary> |
69 | /// <remarks> | 97 | /// <remarks> |
70 | /// Automatically starts service threads, as would the normal runtime. | 98 | /// Automatically starts services, as would the normal runtime. |
71 | /// </remarks> | 99 | /// </remarks> |
72 | /// <returns></returns> | 100 | /// <returns></returns> |
73 | public static TestScene SetupScene(CoreAssetCache cache) | 101 | public TestScene SetupScene() |
74 | { | 102 | { |
75 | return SetupScene("Unit test region", UUID.Random(), 1000, 1000, cache); | 103 | return SetupScene("Unit test region", UUID.Random(), 1000, 1000); |
76 | } | 104 | } |
77 | 105 | ||
78 | public static TestScene SetupScene(string name, UUID id, uint x, uint y) | 106 | public TestScene SetupScene(string name, UUID id, uint x, uint y) |
79 | { | ||
80 | return SetupScene(name, id, x, y, null); | ||
81 | } | ||
82 | |||
83 | /// <summary> | ||
84 | /// Set up a scene. If it's more then one scene, use the same CommunicationsManager to link regions | ||
85 | /// or a different, to get a brand new scene with new shared region modules. | ||
86 | /// </summary> | ||
87 | /// <param name="name">Name of the region</param> | ||
88 | /// <param name="id">ID of the region</param> | ||
89 | /// <param name="x">X co-ordinate of the region</param> | ||
90 | /// <param name="y">Y co-ordinate of the region</param> | ||
91 | /// <param name="cache"></param> | ||
92 | /// <returns></returns> | ||
93 | public static TestScene SetupScene( | ||
94 | string name, UUID id, uint x, uint y, CoreAssetCache cache) | ||
95 | { | 107 | { |
96 | return SetupScene(name, id, x, y, cache, new IniConfigSource()); | 108 | return SetupScene(name, id, x, y, new IniConfigSource()); |
97 | } | 109 | } |
98 | 110 | ||
99 | /// <summary> | 111 | /// <summary> |
100 | /// Set up a scene. If it's more then one scene, use the same CommunicationsManager to link regions | 112 | /// Set up a scene. |
101 | /// or a different, to get a brand new scene with new shared region modules. | ||
102 | /// </summary> | 113 | /// </summary> |
103 | /// <param name="name">Name of the region</param> | 114 | /// <param name="name">Name of the region</param> |
104 | /// <param name="id">ID of the region</param> | 115 | /// <param name="id">ID of the region</param> |
105 | /// <param name="x">X co-ordinate of the region</param> | 116 | /// <param name="x">X co-ordinate of the region</param> |
106 | /// <param name="y">Y co-ordinate of the region</param> | 117 | /// <param name="y">Y co-ordinate of the region</param> |
107 | /// <param name="cache"></param> | ||
108 | /// <param name="configSource"></param> | 118 | /// <param name="configSource"></param> |
109 | /// <returns></returns> | 119 | /// <returns></returns> |
110 | public static TestScene SetupScene( | 120 | public TestScene SetupScene( |
111 | string name, UUID id, uint x, uint y, CoreAssetCache cache, IConfigSource configSource) | 121 | string name, UUID id, uint x, uint y, IConfigSource configSource) |
112 | { | 122 | { |
113 | Console.WriteLine("Setting up test scene {0}", name); | 123 | Console.WriteLine("Setting up test scene {0}", name); |
114 | 124 | ||
@@ -119,30 +129,47 @@ namespace OpenSim.Tests.Common | |||
119 | regInfo.RegionName = name; | 129 | regInfo.RegionName = name; |
120 | regInfo.RegionID = id; | 130 | regInfo.RegionID = id; |
121 | 131 | ||
122 | AgentCircuitManager acm = new AgentCircuitManager(); | ||
123 | SceneCommunicationService scs = new SceneCommunicationService(); | 132 | SceneCommunicationService scs = new SceneCommunicationService(); |
124 | 133 | ||
125 | ISimulationDataService simDataService = OpenSim.Server.Base.ServerUtils.LoadPlugin<ISimulationDataService>("OpenSim.Tests.Common.dll", null); | ||
126 | IEstateDataService estateDataService = null; | ||
127 | |||
128 | TestScene testScene = new TestScene( | 134 | TestScene testScene = new TestScene( |
129 | regInfo, acm, scs, simDataService, estateDataService, null, false, configSource, null); | 135 | regInfo, m_acm, scs, m_simDataService, m_estateDataService, null, false, configSource, null); |
130 | 136 | ||
131 | IRegionModule godsModule = new GodsModule(); | 137 | IRegionModule godsModule = new GodsModule(); |
132 | godsModule.Initialise(testScene, new IniConfigSource()); | 138 | godsModule.Initialise(testScene, new IniConfigSource()); |
133 | testScene.AddModule(godsModule.Name, godsModule); | 139 | testScene.AddModule(godsModule.Name, godsModule); |
134 | 140 | ||
135 | LocalAssetServicesConnector assetService = StartAssetService(testScene, cache); | 141 | // Add scene to services |
136 | StartAuthenticationService(testScene); | 142 | m_assetService.AddRegion(testScene); |
137 | LocalInventoryServicesConnector inventoryService = StartInventoryService(testScene); | 143 | |
138 | StartGridService(testScene); | 144 | if (m_cache != null) |
139 | LocalUserAccountServicesConnector userAccountService = StartUserAccountService(testScene); | 145 | { |
140 | LocalPresenceServicesConnector presenceService = StartPresenceService(testScene); | 146 | m_cache.AddRegion(testScene); |
141 | 147 | m_cache.RegionLoaded(testScene); | |
142 | inventoryService.PostInitialise(); | 148 | testScene.AddRegionModule(m_cache.Name, m_cache); |
143 | assetService.PostInitialise(); | 149 | } |
144 | userAccountService.PostInitialise(); | 150 | |
145 | presenceService.PostInitialise(); | 151 | m_assetService.RegionLoaded(testScene); |
152 | testScene.AddRegionModule(m_assetService.Name, m_assetService); | ||
153 | |||
154 | m_authenticationService.AddRegion(testScene); | ||
155 | m_authenticationService.RegionLoaded(testScene); | ||
156 | testScene.AddRegionModule(m_authenticationService.Name, m_authenticationService); | ||
157 | |||
158 | m_inventoryService.AddRegion(testScene); | ||
159 | m_inventoryService.RegionLoaded(testScene); | ||
160 | testScene.AddRegionModule(m_inventoryService.Name, m_inventoryService); | ||
161 | |||
162 | m_gridService.AddRegion(testScene); | ||
163 | m_gridService.RegionLoaded(testScene); | ||
164 | testScene.AddRegionModule(m_gridService.Name, m_gridService); | ||
165 | |||
166 | m_userAccountService.AddRegion(testScene); | ||
167 | m_userAccountService.RegionLoaded(testScene); | ||
168 | testScene.AddRegionModule(m_userAccountService.Name, m_userAccountService); | ||
169 | |||
170 | m_presenceService.AddRegion(testScene); | ||
171 | m_presenceService.RegionLoaded(testScene); | ||
172 | testScene.AddRegionModule(m_presenceService.Name, m_presenceService); | ||
146 | 173 | ||
147 | testScene.RegionInfo.EstateSettings.EstateOwner = UUID.Random(); | 174 | testScene.RegionInfo.EstateSettings.EstateOwner = UUID.Random(); |
148 | testScene.SetModuleInterfaces(); | 175 | testScene.SetModuleInterfaces(); |
@@ -162,19 +189,17 @@ namespace OpenSim.Tests.Common | |||
162 | return testScene; | 189 | return testScene; |
163 | } | 190 | } |
164 | 191 | ||
165 | private static LocalAssetServicesConnector StartAssetService(Scene testScene, CoreAssetCache cache) | 192 | private static LocalAssetServicesConnector StartAssetService(CoreAssetCache cache) |
166 | { | 193 | { |
167 | LocalAssetServicesConnector assetService = new LocalAssetServicesConnector(); | ||
168 | IConfigSource config = new IniConfigSource(); | 194 | IConfigSource config = new IniConfigSource(); |
169 | |||
170 | config.AddConfig("Modules"); | 195 | config.AddConfig("Modules"); |
171 | config.Configs["Modules"].Set("AssetServices", "LocalAssetServicesConnector"); | 196 | config.Configs["Modules"].Set("AssetServices", "LocalAssetServicesConnector"); |
172 | config.AddConfig("AssetService"); | 197 | config.AddConfig("AssetService"); |
173 | config.Configs["AssetService"].Set("LocalServiceModule", "OpenSim.Services.AssetService.dll:AssetService"); | 198 | config.Configs["AssetService"].Set("LocalServiceModule", "OpenSim.Services.AssetService.dll:AssetService"); |
174 | config.Configs["AssetService"].Set("StorageProvider", "OpenSim.Tests.Common.dll"); | 199 | config.Configs["AssetService"].Set("StorageProvider", "OpenSim.Tests.Common.dll"); |
175 | 200 | ||
201 | LocalAssetServicesConnector assetService = new LocalAssetServicesConnector(); | ||
176 | assetService.Initialise(config); | 202 | assetService.Initialise(config); |
177 | assetService.AddRegion(testScene); | ||
178 | 203 | ||
179 | if (cache != null) | 204 | if (cache != null) |
180 | { | 205 | { |
@@ -184,56 +209,43 @@ namespace OpenSim.Tests.Common | |||
184 | cacheConfig.AddConfig("AssetCache"); | 209 | cacheConfig.AddConfig("AssetCache"); |
185 | 210 | ||
186 | cache.Initialise(cacheConfig); | 211 | cache.Initialise(cacheConfig); |
187 | cache.AddRegion(testScene); | ||
188 | cache.RegionLoaded(testScene); | ||
189 | testScene.AddRegionModule(cache.Name, cache); | ||
190 | } | 212 | } |
191 | |||
192 | assetService.RegionLoaded(testScene); | ||
193 | testScene.AddRegionModule(assetService.Name, assetService); | ||
194 | 213 | ||
195 | return assetService; | 214 | return assetService; |
196 | } | 215 | } |
197 | 216 | ||
198 | private static void StartAuthenticationService(Scene testScene) | 217 | private static LocalAuthenticationServicesConnector StartAuthenticationService() |
199 | { | 218 | { |
200 | ISharedRegionModule service = new LocalAuthenticationServicesConnector(); | ||
201 | IConfigSource config = new IniConfigSource(); | 219 | IConfigSource config = new IniConfigSource(); |
202 | |||
203 | config.AddConfig("Modules"); | 220 | config.AddConfig("Modules"); |
204 | config.AddConfig("AuthenticationService"); | 221 | config.AddConfig("AuthenticationService"); |
205 | config.Configs["Modules"].Set("AuthenticationServices", "LocalAuthenticationServicesConnector"); | 222 | config.Configs["Modules"].Set("AuthenticationServices", "LocalAuthenticationServicesConnector"); |
206 | config.Configs["AuthenticationService"].Set( | 223 | config.Configs["AuthenticationService"].Set( |
207 | "LocalServiceModule", "OpenSim.Services.AuthenticationService.dll:PasswordAuthenticationService"); | 224 | "LocalServiceModule", "OpenSim.Services.AuthenticationService.dll:PasswordAuthenticationService"); |
208 | config.Configs["AuthenticationService"].Set("StorageProvider", "OpenSim.Data.Null.dll"); | 225 | config.Configs["AuthenticationService"].Set("StorageProvider", "OpenSim.Data.Null.dll"); |
209 | 226 | ||
227 | LocalAuthenticationServicesConnector service = new LocalAuthenticationServicesConnector(); | ||
210 | service.Initialise(config); | 228 | service.Initialise(config); |
211 | service.AddRegion(testScene); | 229 | |
212 | service.RegionLoaded(testScene); | 230 | return service; |
213 | testScene.AddRegionModule(service.Name, service); | ||
214 | //m_authenticationService = service; | ||
215 | } | 231 | } |
216 | 232 | ||
217 | private static LocalInventoryServicesConnector StartInventoryService(Scene testScene) | 233 | private static LocalInventoryServicesConnector StartInventoryService() |
218 | { | 234 | { |
219 | LocalInventoryServicesConnector inventoryService = new LocalInventoryServicesConnector(); | ||
220 | |||
221 | IConfigSource config = new IniConfigSource(); | 235 | IConfigSource config = new IniConfigSource(); |
222 | config.AddConfig("Modules"); | 236 | config.AddConfig("Modules"); |
223 | config.AddConfig("InventoryService"); | 237 | config.AddConfig("InventoryService"); |
224 | config.Configs["Modules"].Set("InventoryServices", "LocalInventoryServicesConnector"); | 238 | config.Configs["Modules"].Set("InventoryServices", "LocalInventoryServicesConnector"); |
225 | config.Configs["InventoryService"].Set("LocalServiceModule", "OpenSim.Services.InventoryService.dll:InventoryService"); | 239 | config.Configs["InventoryService"].Set("LocalServiceModule", "OpenSim.Services.InventoryService.dll:InventoryService"); |
226 | config.Configs["InventoryService"].Set("StorageProvider", "OpenSim.Tests.Common.dll"); | 240 | config.Configs["InventoryService"].Set("StorageProvider", "OpenSim.Tests.Common.dll"); |
227 | 241 | ||
242 | LocalInventoryServicesConnector inventoryService = new LocalInventoryServicesConnector(); | ||
228 | inventoryService.Initialise(config); | 243 | inventoryService.Initialise(config); |
229 | inventoryService.AddRegion(testScene); | ||
230 | inventoryService.RegionLoaded(testScene); | ||
231 | testScene.AddRegionModule(inventoryService.Name, inventoryService); | ||
232 | 244 | ||
233 | return inventoryService; | 245 | return inventoryService; |
234 | } | 246 | } |
235 | 247 | ||
236 | private static LocalGridServicesConnector StartGridService(Scene testScene) | 248 | private static LocalGridServicesConnector StartGridService() |
237 | { | 249 | { |
238 | IConfigSource config = new IniConfigSource(); | 250 | IConfigSource config = new IniConfigSource(); |
239 | config.AddConfig("Modules"); | 251 | config.AddConfig("Modules"); |
@@ -245,8 +257,6 @@ namespace OpenSim.Tests.Common | |||
245 | 257 | ||
246 | LocalGridServicesConnector gridService = new LocalGridServicesConnector(); | 258 | LocalGridServicesConnector gridService = new LocalGridServicesConnector(); |
247 | gridService.Initialise(config); | 259 | gridService.Initialise(config); |
248 | gridService.AddRegion(testScene); | ||
249 | gridService.RegionLoaded(testScene); | ||
250 | 260 | ||
251 | return gridService; | 261 | return gridService; |
252 | } | 262 | } |
@@ -256,7 +266,7 @@ namespace OpenSim.Tests.Common | |||
256 | /// </summary> | 266 | /// </summary> |
257 | /// <param name="testScene"></param> | 267 | /// <param name="testScene"></param> |
258 | /// <returns></returns> | 268 | /// <returns></returns> |
259 | private static LocalUserAccountServicesConnector StartUserAccountService(Scene testScene) | 269 | private static LocalUserAccountServicesConnector StartUserAccountService() |
260 | { | 270 | { |
261 | IConfigSource config = new IniConfigSource(); | 271 | IConfigSource config = new IniConfigSource(); |
262 | config.AddConfig("Modules"); | 272 | config.AddConfig("Modules"); |
@@ -268,10 +278,6 @@ namespace OpenSim.Tests.Common | |||
268 | 278 | ||
269 | LocalUserAccountServicesConnector userAccountService = new LocalUserAccountServicesConnector(); | 279 | LocalUserAccountServicesConnector userAccountService = new LocalUserAccountServicesConnector(); |
270 | userAccountService.Initialise(config); | 280 | userAccountService.Initialise(config); |
271 | |||
272 | userAccountService.AddRegion(testScene); | ||
273 | userAccountService.RegionLoaded(testScene); | ||
274 | testScene.AddRegionModule(userAccountService.Name, userAccountService); | ||
275 | 281 | ||
276 | return userAccountService; | 282 | return userAccountService; |
277 | } | 283 | } |
@@ -280,7 +286,7 @@ namespace OpenSim.Tests.Common | |||
280 | /// Start a presence service | 286 | /// Start a presence service |
281 | /// </summary> | 287 | /// </summary> |
282 | /// <param name="testScene"></param> | 288 | /// <param name="testScene"></param> |
283 | private static LocalPresenceServicesConnector StartPresenceService(Scene testScene) | 289 | private static LocalPresenceServicesConnector StartPresenceService() |
284 | { | 290 | { |
285 | IConfigSource config = new IniConfigSource(); | 291 | IConfigSource config = new IniConfigSource(); |
286 | config.AddConfig("Modules"); | 292 | config.AddConfig("Modules"); |
@@ -292,10 +298,6 @@ namespace OpenSim.Tests.Common | |||
292 | 298 | ||
293 | LocalPresenceServicesConnector presenceService = new LocalPresenceServicesConnector(); | 299 | LocalPresenceServicesConnector presenceService = new LocalPresenceServicesConnector(); |
294 | presenceService.Initialise(config); | 300 | presenceService.Initialise(config); |
295 | |||
296 | presenceService.AddRegion(testScene); | ||
297 | presenceService.RegionLoaded(testScene); | ||
298 | testScene.AddRegionModule(presenceService.Name, presenceService); | ||
299 | 301 | ||
300 | return presenceService; | 302 | return presenceService; |
301 | } | 303 | } |
@@ -313,19 +315,51 @@ namespace OpenSim.Tests.Common | |||
313 | /// <summary> | 315 | /// <summary> |
314 | /// Setup modules for a scene. | 316 | /// Setup modules for a scene. |
315 | /// </summary> | 317 | /// </summary> |
316 | /// <param name="scene"></param> | 318 | /// <remarks> |
319 | /// If called directly, then all the modules must be shared modules. | ||
320 | /// </remarks> | ||
321 | /// <param name="scenes"></param> | ||
317 | /// <param name="config"></param> | 322 | /// <param name="config"></param> |
318 | /// <param name="modules"></param> | 323 | /// <param name="modules"></param> |
319 | public static void SetupSceneModules(Scene scene, IConfigSource config, params object[] modules) | 324 | public static void SetupSceneModules(Scene scene, IConfigSource config, params object[] modules) |
320 | { | 325 | { |
326 | SetupSceneModules(new Scene[] { scene }, config, modules); | ||
327 | } | ||
328 | |||
329 | /// <summary> | ||
330 | /// Setup modules for a scene using their default settings. | ||
331 | /// </summary> | ||
332 | /// <param name="scenes"></param> | ||
333 | /// <param name="modules"></param> | ||
334 | public static void SetupSceneModules(Scene[] scenes, params object[] modules) | ||
335 | { | ||
336 | SetupSceneModules(scenes, new IniConfigSource(), modules); | ||
337 | } | ||
338 | |||
339 | /// <summary> | ||
340 | /// Setup modules for scenes. | ||
341 | /// </summary> | ||
342 | /// <remarks> | ||
343 | /// If called directly, then all the modules must be shared modules. | ||
344 | /// </remarks> | ||
345 | /// <param name="scenes"></param> | ||
346 | /// <param name="config"></param> | ||
347 | /// <param name="modules"></param> | ||
348 | public static void SetupSceneModules(Scene[] scenes, IConfigSource config, params object[] modules) | ||
349 | { | ||
321 | List<IRegionModuleBase> newModules = new List<IRegionModuleBase>(); | 350 | List<IRegionModuleBase> newModules = new List<IRegionModuleBase>(); |
322 | foreach (object module in modules) | 351 | foreach (object module in modules) |
323 | { | 352 | { |
324 | if (module is IRegionModule) | 353 | if (module is IRegionModule) |
325 | { | 354 | { |
326 | IRegionModule m = (IRegionModule)module; | 355 | IRegionModule m = (IRegionModule)module; |
327 | m.Initialise(scene, config); | 356 | |
328 | scene.AddModule(m.Name, m); | 357 | foreach (Scene scene in scenes) |
358 | { | ||
359 | m.Initialise(scene, config); | ||
360 | scene.AddModule(m.Name, m); | ||
361 | } | ||
362 | |||
329 | m.PostInitialise(); | 363 | m.PostInitialise(); |
330 | } | 364 | } |
331 | else if (module is IRegionModuleBase) | 365 | else if (module is IRegionModuleBase) |
@@ -345,15 +379,19 @@ namespace OpenSim.Tests.Common | |||
345 | 379 | ||
346 | foreach (IRegionModuleBase module in newModules) | 380 | foreach (IRegionModuleBase module in newModules) |
347 | { | 381 | { |
348 | module.AddRegion(scene); | 382 | foreach (Scene scene in scenes) |
349 | scene.AddRegionModule(module.Name, module); | 383 | { |
384 | module.AddRegion(scene); | ||
385 | scene.AddRegionModule(module.Name, module); | ||
386 | } | ||
350 | } | 387 | } |
351 | 388 | ||
352 | // RegionLoaded is fired after all modules have been appropriately added to all scenes | 389 | // RegionLoaded is fired after all modules have been appropriately added to all scenes |
353 | foreach (IRegionModuleBase module in newModules) | 390 | foreach (IRegionModuleBase module in newModules) |
354 | module.RegionLoaded(scene); | 391 | foreach (Scene scene in scenes) |
392 | module.RegionLoaded(scene); | ||
355 | 393 | ||
356 | scene.SetModuleInterfaces(); | 394 | foreach (Scene scene in scenes) { scene.SetModuleInterfaces(); } |
357 | } | 395 | } |
358 | 396 | ||
359 | /// <summary> | 397 | /// <summary> |