aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
authorDiva Canto2010-12-14 16:04:46 -0800
committerDiva Canto2010-12-14 16:04:46 -0800
commit9d0339e8f96b7f1fd14e3f1d99b76dcdf5aaaff8 (patch)
tree3229b24a5ab78729d98bb4dbd51f4010e5787ecb /OpenSim
parentAnother stab at #LoginLag. Looking forward to hear the feedback! This makes u... (diff)
parentadd new optionalmodules test dll to panda test run (and nant test command) (diff)
downloadopensim-SC-9d0339e8f96b7f1fd14e3f1d99b76dcdf5aaaff8.zip
opensim-SC-9d0339e8f96b7f1fd14e3f1d99b76dcdf5aaaff8.tar.gz
opensim-SC-9d0339e8f96b7f1fd14e3f1d99b76dcdf5aaaff8.tar.bz2
opensim-SC-9d0339e8f96b7f1fd14e3f1d99b76dcdf5aaaff8.tar.xz
Merge branch 'master' of ssh://opensimulator.org/var/git/opensim
Diffstat (limited to 'OpenSim')
-rw-r--r--OpenSim/Region/Framework/Scenes/Tests/SceneObjectDeRezTests.cs (renamed from OpenSim/Region/Framework/Scenes/Tests/SceneObjectUserTests.cs)0
-rw-r--r--OpenSim/Region/Framework/Scenes/Tests/SceneObjectUserGroupTests.cs87
-rw-r--r--OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs6
-rw-r--r--OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/IGroupsServicesConnector.cs4
-rw-r--r--OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/Tests/GroupsModuleTests.cs65
-rw-r--r--OpenSim/Tests/Common/Mock/MockGroupsServicesConnector.cs237
-rw-r--r--OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs5
7 files changed, 396 insertions, 8 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectUserTests.cs b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectDeRezTests.cs
index b3b99f4..b3b99f4 100644
--- a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectUserTests.cs
+++ b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectDeRezTests.cs
diff --git a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectUserGroupTests.cs b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectUserGroupTests.cs
new file mode 100644
index 0000000..c78038f
--- /dev/null
+++ b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectUserGroupTests.cs
@@ -0,0 +1,87 @@
1/*
2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the OpenSimulator Project nor the
13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27
28using System;
29using System.Collections.Generic;
30using System.Reflection;
31using Nini.Config;
32using NUnit.Framework;
33using NUnit.Framework.SyntaxHelpers;
34using OpenMetaverse;
35using OpenSim.Framework;
36using OpenSim.Framework.Communications;
37using OpenSim.Region.CoreModules.Avatar.InstantMessage;
38using OpenSim.Region.CoreModules.World.Permissions;
39using OpenSim.Region.Framework.Interfaces;
40using OpenSim.Region.Framework.Scenes;
41using OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups;
42using OpenSim.Tests.Common;
43using OpenSim.Tests.Common.Mock;
44using OpenSim.Tests.Common.Setup;
45
46namespace OpenSim.Region.Framework.Scenes.Tests
47{
48 [TestFixture]
49 public class SceneObjectUserGroupTests
50 {
51 /// <summary>
52 /// Test share with group object functionality
53 /// </summary>
54 /// <remarks>This test is not yet fully implemented</remarks>
55 [Test]
56 public void TestShareWithGroup()
57 {
58 TestHelper.InMethod();
59// log4net.Config.XmlConfigurator.Configure();
60
61 UUID userId = UUID.Parse("10000000-0000-0000-0000-000000000001");
62
63 TestScene scene = SceneSetupHelpers.SetupScene();
64 IConfigSource configSource = new IniConfigSource();
65
66 IConfig startupConfig = configSource.AddConfig("Startup");
67 startupConfig.Set("serverside_object_permissions", true);
68
69 IConfig groupsConfig = configSource.AddConfig("Groups");
70 groupsConfig.Set("Enabled", true);
71 groupsConfig.Set("Module", "GroupsModule");
72 groupsConfig.Set("DebugEnabled", true);
73
74 SceneSetupHelpers.SetupSceneModules(
75 scene, configSource, new object[]
76 { new PermissionsModule(),
77 new GroupsModule(),
78 new MockGroupsServicesConnector() });
79
80 TestClient client = SceneSetupHelpers.AddRootAgent(scene, userId);
81
82 IGroupsModule groupsModule = scene.RequestModuleInterface<IGroupsModule>();
83
84 groupsModule.CreateGroup(client, "group1", "To boldly go", true, UUID.Zero, 5, true, true, true);
85 }
86 }
87} \ No newline at end of file
diff --git a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs
index ccf5289..4aab87f 100644
--- a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs
+++ b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs
@@ -163,9 +163,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
163 if (m_msgTransferModule == null) 163 if (m_msgTransferModule == null)
164 { 164 {
165 m_groupsEnabled = false; 165 m_groupsEnabled = false;
166 m_log.Error("[GROUPS]: Could not get MessageTransferModule"); 166 m_log.Warn("[GROUPS]: Could not get MessageTransferModule");
167 Close();
168 return;
169 } 167 }
170 } 168 }
171 169
@@ -1299,7 +1297,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
1299 if (m_debugEnabled) m_log.InfoFormat("[GROUPS]: MsgTo ({0}) is local, delivering directly", localClient.Name); 1297 if (m_debugEnabled) m_log.InfoFormat("[GROUPS]: MsgTo ({0}) is local, delivering directly", localClient.Name);
1300 localClient.SendInstantMessage(msg); 1298 localClient.SendInstantMessage(msg);
1301 } 1299 }
1302 else 1300 else if (m_msgTransferModule != null)
1303 { 1301 {
1304 if (m_debugEnabled) m_log.InfoFormat("[GROUPS]: MsgTo ({0}) is not local, delivering via TransferModule", msgTo); 1302 if (m_debugEnabled) m_log.InfoFormat("[GROUPS]: MsgTo ({0}) is not local, delivering via TransferModule", msgTo);
1305 m_msgTransferModule.SendInstantMessage(msg, delegate(bool success) { if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: Message Sent: {0}", success?"Succeeded":"Failed"); }); 1303 m_msgTransferModule.SendInstantMessage(msg, delegate(bool success) { if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: Message Sent: {0}", success?"Succeeded":"Failed"); });
diff --git a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/IGroupsServicesConnector.cs b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/IGroupsServicesConnector.cs
index a046e09..5c779de 100644
--- a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/IGroupsServicesConnector.cs
+++ b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/IGroupsServicesConnector.cs
@@ -27,14 +27,12 @@
27 27
28using System; 28using System;
29using System.Collections.Generic; 29using System.Collections.Generic;
30
31using OpenMetaverse; 30using OpenMetaverse;
32
33using OpenSim.Framework; 31using OpenSim.Framework;
34 32
35namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups 33namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
36{ 34{
37 interface IGroupsServicesConnector 35 public interface IGroupsServicesConnector
38 { 36 {
39 UUID CreateGroup(UUID RequestingAgentID, string name, string charter, bool showInList, UUID insigniaID, int membershipFee, bool openEnrollment, bool allowPublish, bool maturePublish, UUID founderID); 37 UUID CreateGroup(UUID RequestingAgentID, string name, string charter, bool showInList, UUID insigniaID, int membershipFee, bool openEnrollment, bool allowPublish, bool maturePublish, UUID founderID);
40 void UpdateGroup(UUID RequestingAgentID, UUID groupID, string charter, bool showInList, UUID insigniaID, int membershipFee, bool openEnrollment, bool allowPublish, bool maturePublish); 38 void UpdateGroup(UUID RequestingAgentID, UUID groupID, string charter, bool showInList, UUID insigniaID, int membershipFee, bool openEnrollment, bool allowPublish, bool maturePublish);
diff --git a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/Tests/GroupsModuleTests.cs b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/Tests/GroupsModuleTests.cs
new file mode 100644
index 0000000..bc55b04
--- /dev/null
+++ b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/Tests/GroupsModuleTests.cs
@@ -0,0 +1,65 @@
1/*
2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the OpenSimulator Project nor the
13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27
28using System;
29using System.Reflection;
30using Nini.Config;
31using NUnit.Framework;
32using NUnit.Framework.SyntaxHelpers;
33using OpenMetaverse;
34using OpenSim.Framework;
35using OpenSim.Framework.Communications;
36using OpenSim.Region.Framework.Scenes;
37using OpenSim.Tests.Common;
38using OpenSim.Tests.Common.Mock;
39using OpenSim.Tests.Common.Setup;
40
41namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups.Tests
42{
43 /// <summary>
44 /// Basic groups module tests
45 /// </summary>
46 [TestFixture]
47 public class GroupsModuleTests
48 {
49 [Test]
50 public void TestBasic()
51 {
52 TestHelper.InMethod();
53// log4net.Config.XmlConfigurator.Configure();
54
55 TestScene scene = SceneSetupHelpers.SetupScene();
56 IConfigSource configSource = new IniConfigSource();
57 IConfig config = configSource.AddConfig("Groups");
58 config.Set("Enabled", true);
59 config.Set("Module", "GroupsModule");
60 config.Set("DebugEnabled", true);
61 SceneSetupHelpers.SetupSceneModules(
62 scene, configSource, new object[] { new MockGroupsServicesConnector() });
63 }
64 }
65} \ No newline at end of file
diff --git a/OpenSim/Tests/Common/Mock/MockGroupsServicesConnector.cs b/OpenSim/Tests/Common/Mock/MockGroupsServicesConnector.cs
new file mode 100644
index 0000000..6fb9df1
--- /dev/null
+++ b/OpenSim/Tests/Common/Mock/MockGroupsServicesConnector.cs
@@ -0,0 +1,237 @@
1/*
2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the OpenSimulator Project nor the
13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27
28using System;
29using System.Collections.Generic;
30using System.Reflection;
31using log4net;
32using Mono.Addins;
33using Nini.Config;
34using OpenMetaverse;
35using OpenSim.Framework;
36using OpenSim.Region.Framework.Interfaces;
37using OpenSim.Region.Framework.Scenes;
38using OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups;
39
40namespace OpenSim.Tests.Common.Mock
41{
42 [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule")]
43 public class MockGroupsServicesConnector : ISharedRegionModule, IGroupsServicesConnector
44 {
45 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
46
47 public string Name
48 {
49 get { return "MockGroupsServicesConnector"; }
50 }
51
52 public Type ReplaceableInterface
53 {
54 get { return null; }
55 }
56
57 public void Initialise(IConfigSource config)
58 {
59 }
60
61 public void Close()
62 {
63 }
64
65 public void AddRegion(Scene scene)
66 {
67 m_log.DebugFormat("[MOCK GROUPS SERVICES CONNECTOR]: Adding to region {0}", scene.RegionInfo.RegionName);
68 scene.RegisterModuleInterface<IGroupsServicesConnector>(this);
69 }
70
71 public void RemoveRegion(Scene scene)
72 {
73 }
74
75 public void RegionLoaded(Scene scene)
76 {
77 }
78
79 public void PostInitialise()
80 {
81 }
82
83 public UUID CreateGroup(UUID requestingAgentID, string name, string charter, bool showInList, UUID insigniaID,
84 int membershipFee, bool openEnrollment, bool allowPublish,
85 bool maturePublish, UUID founderID)
86 {
87 return UUID.Zero;
88 }
89
90 public void UpdateGroup(UUID requestingAgentID, UUID groupID, string charter, bool showInList,
91 UUID insigniaID, int membershipFee, bool openEnrollment,
92 bool allowPublish, bool maturePublish)
93 {
94 }
95
96 public void AddGroupRole(UUID requestingAgentID, UUID groupID, UUID roleID, string name, string description,
97 string title, ulong powers)
98 {
99 }
100
101 public void RemoveGroupRole(UUID requestingAgentID, UUID groupID, UUID roleID)
102 {
103 }
104
105 public void UpdateGroupRole(UUID requestingAgentID, UUID groupID, UUID roleID, string name, string description,
106 string title, ulong powers)
107 {
108 }
109
110 public GroupRecord GetGroupRecord(UUID requestingAgentID, UUID GroupID, string GroupName)
111 {
112 return null;
113 }
114
115 public GroupProfileData GetMemberGroupProfile(UUID requestingAgentID, UUID GroupID, UUID AgentID)
116 {
117 return default(GroupProfileData);
118 }
119
120 public void SetAgentActiveGroup(UUID requestingAgentID, UUID AgentID, UUID GroupID)
121 {
122 }
123
124 public void SetAgentActiveGroupRole(UUID requestingAgentID, UUID AgentID, UUID GroupID, UUID RoleID)
125 {
126 }
127
128 public void SetAgentGroupInfo(UUID requestingAgentID, UUID AgentID, UUID GroupID, bool AcceptNotices, bool ListInProfile)
129 {
130 }
131
132 public void AddAgentToGroupInvite(UUID requestingAgentID, UUID inviteID, UUID groupID, UUID roleID, UUID agentID)
133 {
134 }
135
136 public GroupInviteInfo GetAgentToGroupInvite(UUID requestingAgentID, UUID inviteID)
137 {
138 return null;
139 }
140
141 public void RemoveAgentToGroupInvite(UUID requestingAgentID, UUID inviteID)
142 {
143 }
144
145 public void AddAgentToGroup(UUID requestingAgentID, UUID AgentID, UUID GroupID, UUID RoleID)
146 {
147 }
148
149 public void RemoveAgentFromGroup(UUID requestingAgentID, UUID AgentID, UUID GroupID)
150 {
151 }
152
153 public void AddAgentToGroupRole(UUID requestingAgentID, UUID AgentID, UUID GroupID, UUID RoleID)
154 {
155 }
156
157 public void RemoveAgentFromGroupRole(UUID requestingAgentID, UUID AgentID, UUID GroupID, UUID RoleID)
158 {
159 }
160
161 public List<DirGroupsReplyData> FindGroups(UUID requestingAgentID, string search)
162 {
163 return null;
164 }
165
166 public GroupMembershipData GetAgentGroupMembership(UUID requestingAgentID, UUID AgentID, UUID GroupID)
167 {
168 return null;
169 }
170
171 public GroupMembershipData GetAgentActiveMembership(UUID requestingAgentID, UUID AgentID)
172 {
173 return null;
174 }
175
176 public List<GroupMembershipData> GetAgentGroupMemberships(UUID requestingAgentID, UUID AgentID)
177 {
178 return new List<GroupMembershipData>();
179 }
180
181 public List<GroupRolesData> GetAgentGroupRoles(UUID requestingAgentID, UUID AgentID, UUID GroupID)
182 {
183 return null;
184 }
185
186 public List<GroupRolesData> GetGroupRoles(UUID requestingAgentID, UUID GroupID)
187 {
188 return null;
189 }
190
191 public List<GroupMembersData> GetGroupMembers(UUID requestingAgentID, UUID GroupID)
192 {
193 return null;
194 }
195
196 public List<GroupRoleMembersData> GetGroupRoleMembers(UUID requestingAgentID, UUID GroupID)
197 {
198 return null;
199 }
200
201 public List<GroupNoticeData> GetGroupNotices(UUID requestingAgentID, UUID GroupID)
202 {
203 return null;
204 }
205
206 public GroupNoticeInfo GetGroupNotice(UUID requestingAgentID, UUID noticeID)
207 {
208 return null;
209 }
210
211 public void AddGroupNotice(UUID requestingAgentID, UUID groupID, UUID noticeID, string fromName, string subject, string message, byte[] binaryBucket)
212 {
213 }
214
215 public void ResetAgentGroupChatSessions(UUID agentID)
216 {
217 }
218
219 public bool hasAgentBeenInvitedToGroupChatSession(UUID agentID, UUID groupID)
220 {
221 return false;
222 }
223
224 public bool hasAgentDroppedGroupChatSession(UUID agentID, UUID groupID)
225 {
226 return false;
227 }
228
229 public void AgentDroppedFromGroupChatSession(UUID agentID, UUID groupID)
230 {
231 }
232
233 public void AgentInvitedToGroupChatSession(UUID agentID, UUID groupID)
234 {
235 }
236 }
237} \ No newline at end of file
diff --git a/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs b/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs
index 9d7733e..8b16496 100644
--- a/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs
+++ b/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs
@@ -424,9 +424,12 @@ namespace OpenSim.Tests.Common.Setup
424 foreach (IRegionModuleBase module in newModules) 424 foreach (IRegionModuleBase module in newModules)
425 { 425 {
426 module.AddRegion(scene); 426 module.AddRegion(scene);
427 module.RegionLoaded(scene);
428 scene.AddRegionModule(module.Name, module); 427 scene.AddRegionModule(module.Name, module);
429 } 428 }
429
430 // RegionLoaded is fired after all modules have been appropriately added to all scenes
431 foreach (IRegionModuleBase module in newModules)
432 module.RegionLoaded(scene);
430 433
431 scene.SetModuleInterfaces(); 434 scene.SetModuleInterfaces();
432 } 435 }