aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Environment/ModuleLoader.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Environment/ModuleLoader.cs')
-rw-r--r--OpenSim/Region/Environment/ModuleLoader.cs74
1 files changed, 58 insertions, 16 deletions
diff --git a/OpenSim/Region/Environment/ModuleLoader.cs b/OpenSim/Region/Environment/ModuleLoader.cs
index 1787a57..e8e7bc2 100644
--- a/OpenSim/Region/Environment/ModuleLoader.cs
+++ b/OpenSim/Region/Environment/ModuleLoader.cs
@@ -14,37 +14,51 @@ namespace OpenSim.Region.Environment
14 14
15 public Dictionary<string, Assembly> LoadedAssemblys = new Dictionary<string, Assembly>(); 15 public Dictionary<string, Assembly> LoadedAssemblys = new Dictionary<string, Assembly>();
16 16
17 public List<IRegionModule> LoadedModules = new List<IRegionModule>();
18 public Dictionary<string, IRegionModule> LoadedSharedModules = new Dictionary<string, IRegionModule>();
19
17 public ModuleLoader() 20 public ModuleLoader()
18 { 21 {
19 22
20 } 23 }
21 24
22 /// <summary> 25 /// <summary>
23 /// Really just a test method for loading a set of currently internal modules 26 /// Should have a module factory?
24 /// </summary> 27 /// </summary>
25 /// <param name="scene"></param> 28 /// <param name="scene"></param>
26 public void CreateDefaultModules(Scene scene) 29 public void CreateDefaultModules(Scene scene, string exceptModules)
27 { 30 {
28 //Testing IRegionModule ideas
29 XferModule xferManager = new XferModule(); 31 XferModule xferManager = new XferModule();
30 xferManager.Initialise(scene); 32 xferManager.Initialise(scene);
31 scene.AddModule(xferManager.GetName(), xferManager); 33 scene.AddModule(xferManager.GetName(), xferManager);
34 LoadedModules.Add(xferManager);
32 35
33 ChatModule chatModule = new ChatModule(); 36 ChatModule chatModule = new ChatModule();
34 chatModule.Initialise(scene); 37 chatModule.Initialise(scene);
35 scene.AddModule(chatModule.GetName(), chatModule); 38 scene.AddModule(chatModule.GetName(), chatModule);
39 LoadedModules.Add(chatModule);
36 40
37 AvatarProfilesModule avatarProfiles = new AvatarProfilesModule(); 41 AvatarProfilesModule avatarProfiles = new AvatarProfilesModule();
38 avatarProfiles.Initialise(scene); 42 avatarProfiles.Initialise(scene);
39 scene.AddModule(avatarProfiles.GetName(), avatarProfiles); 43 scene.AddModule(avatarProfiles.GetName(), avatarProfiles);
44 LoadedModules.Add(avatarProfiles);
40 45
41 this.LoadModule("OpenSim.Region.ExtensionsScriptModule.dll", "ExtensionsScriptingModule", scene); 46 this.LoadRegionModule("OpenSim.Region.ExtensionsScriptModule.dll", "ExtensionsScriptingModule", scene);
47 }
42 48
43 // Post Initialise Modules, which most likely shouldn't be here 49 public void LoadDefaultSharedModules(string exceptModules)
44 // but should rather be in a separate method that is called after all modules are loaded/created/intialised 50 {
45 xferManager.PostInitialise(); 51 DynamicTextureModule dynamicModule = new DynamicTextureModule();
46 // chatModule.PostInitialise(); //for now leave this disabled as it would start up a partially working irc bot 52 this.LoadedSharedModules.Add(dynamicModule.GetName(), dynamicModule);
47 avatarProfiles.PostInitialise(); 53 }
54
55 public void InitialiseSharedModules(Scene scene)
56 {
57 foreach (IRegionModule module in this.LoadedSharedModules.Values)
58 {
59 module.Initialise(scene);
60 scene.AddModule(module.GetName(), module); //should be doing this?
61 }
48 } 62 }
49 63
50 /// <summary> 64 /// <summary>
@@ -53,18 +67,33 @@ namespace OpenSim.Region.Environment
53 /// <param name="dllName"></param> 67 /// <param name="dllName"></param>
54 /// <param name="moduleName"></param> 68 /// <param name="moduleName"></param>
55 /// <param name="scene"></param> 69 /// <param name="scene"></param>
56 public void LoadSharedModule(string dllName, string moduleName, Scene scene) 70 public void LoadSharedModule(string dllName, string moduleName)
57 { 71 {
72 IRegionModule module = this.LoadModule(dllName, moduleName);
73 if (module != null)
74 {
75 this.LoadedSharedModules.Add(module.GetName(), module);
76 }
77 }
58 78
79 public void LoadRegionModule(string dllName, string moduleName, Scene scene)
80 {
81 IRegionModule module = this.LoadModule(dllName, moduleName);
82 if (module != null)
83 {
84 module.Initialise(scene);
85 scene.AddModule(module.GetName(), module);
86 LoadedModules.Add(module);
87 }
59 } 88 }
60 89
61 /// <summary> 90 /// <summary>
62 /// Loads a external Module (if not already loaded) and creates a new instance of it for the passed Scene. 91 /// Loads a external Module (if not already loaded) and creates a new instance of it.
63 /// </summary> 92 /// </summary>
64 /// <param name="dllName"></param> 93 /// <param name="dllName"></param>
65 /// <param name="moduleName"></param> 94 /// <param name="moduleName"></param>
66 /// <param name="scene"></param> 95 /// <param name="scene"></param>
67 public void LoadModule(string dllName, string moduleName, Scene scene) 96 public IRegionModule LoadModule(string dllName, string moduleName)
68 { 97 {
69 Assembly pluginAssembly = null; 98 Assembly pluginAssembly = null;
70 if (LoadedAssemblys.ContainsKey(dllName)) 99 if (LoadedAssemblys.ContainsKey(dllName))
@@ -97,13 +126,26 @@ namespace OpenSim.Region.Environment
97 } 126 }
98 pluginAssembly = null; 127 pluginAssembly = null;
99 128
100 if (module.GetName() == moduleName) 129 if ((module != null ) || (module.GetName() == moduleName))
101 { 130 {
102 module.Initialise(scene); 131 return module;
103 scene.AddModule(moduleName, module); 132 }
104 module.PostInitialise(); //shouldn't be done here 133
134 return null;
135
136 }
137
138 public void PostInitialise()
139 {
140 foreach (IRegionModule module in this.LoadedSharedModules.Values)
141 {
142 module.PostInitialise();
105 } 143 }
106 144
145 foreach (IRegionModule module in this.LoadedModules)
146 {
147 module.PostInitialise();
148 }
107 } 149 }
108 150
109 public void ClearCache() 151 public void ClearCache()