aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Environment/ModuleLoader.cs
diff options
context:
space:
mode:
authorMW2007-09-04 13:43:56 +0000
committerMW2007-09-04 13:43:56 +0000
commitbfd36e2e836f92539e68bba077104d5016c5bf8b (patch)
tree36491a61df9cb936500cf349fa7a1ac377b2f350 /OpenSim/Region/Environment/ModuleLoader.cs
parentreverting opensim.ini to proper default state (diff)
downloadopensim-SC-bfd36e2e836f92539e68bba077104d5016c5bf8b.zip
opensim-SC-bfd36e2e836f92539e68bba077104d5016c5bf8b.tar.gz
opensim-SC-bfd36e2e836f92539e68bba077104d5016c5bf8b.tar.bz2
opensim-SC-bfd36e2e836f92539e68bba077104d5016c5bf8b.tar.xz
Some work on Module loading/management.
Some more modules templates classes (hoping that someone will pick some of these and work on implementing them). Early version of the "Dynamic Texture Module", although currently there are no render modules included (so not really functional without them). Added osSetDynamicTextureURL script function, for attaching a dynamic texture to a prim. Some work on the console command handling. Added "change-region <regionname>" and "exit-region" so that after the use of change-region, the commands entered will apply to that region only. Then use exit-region to return to the top level (so commands then function as they did before and either apply to all regions or to the first region) (Note: this hasn't been tested very much)
Diffstat (limited to '')
-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()