aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
authorlbsa712007-10-10 18:24:13 +0000
committerlbsa712007-10-10 18:24:13 +0000
commita40e7100a232827cffb813bbbbe9374324ad3448 (patch)
tree7f16f392d653f155ca90d5477c842db9c881f3ed /OpenSim
parentAdded unit tests, based on nunit for the IInventoryData (diff)
downloadopensim-SC-a40e7100a232827cffb813bbbbe9374324ad3448.zip
opensim-SC-a40e7100a232827cffb813bbbbe9374324ad3448.tar.gz
opensim-SC-a40e7100a232827cffb813bbbbe9374324ad3448.tar.bz2
opensim-SC-a40e7100a232827cffb813bbbbe9374324ad3448.tar.xz
* Gave ModuleLoader some good lovin'
* Introduced ModuleLoader.PickupModules that currently picks up IRegionModule:s from /bin * Made LogBase thread-safe (or at least not thread-ignorant) * Ignored some genned files
Diffstat (limited to 'OpenSim')
-rw-r--r--OpenSim/Framework/Console/LogBase.cs121
-rw-r--r--OpenSim/Grid/ScriptEngine/DotNetEngine/ScriptEngine.cs264
-rw-r--r--OpenSim/Region/Application/OpenSimMain.cs8
-rw-r--r--OpenSim/Region/Environment/Interfaces/IRegionModule.cs6
-rw-r--r--OpenSim/Region/Environment/ModuleLoader.cs371
-rw-r--r--OpenSim/Region/Environment/Modules/AssetDownloadModule.cs84
-rw-r--r--OpenSim/Region/Environment/Modules/AvatarProfilesModule.cs128
-rw-r--r--OpenSim/Region/Environment/Modules/ChatModule.cs426
-rw-r--r--OpenSim/Region/Environment/Modules/DynamicTextureModule.cs312
-rw-r--r--OpenSim/Region/Environment/Modules/FriendsModule.cs64
-rw-r--r--OpenSim/Region/Environment/Modules/GroupsModule.cs64
-rw-r--r--OpenSim/Region/Environment/Modules/InstantMessageModule.cs64
-rw-r--r--OpenSim/Region/Environment/Modules/InventoryModule.cs64
-rw-r--r--OpenSim/Region/Environment/Modules/TextureDownloadModule.cs94
-rw-r--r--OpenSim/Region/Environment/Modules/WorldCommModule.cs10
-rw-r--r--OpenSim/Region/Environment/Modules/XMLRPCModule.cs10
-rw-r--r--OpenSim/Region/Environment/Modules/XferModule.cs344
-rw-r--r--OpenSim/Region/Environment/Scenes/Scene.cs4
-rw-r--r--OpenSim/Region/Examples/SimpleApp/Program.cs8
-rw-r--r--OpenSim/Region/ExtensionsScriptModule/ScriptManager.cs296
-rw-r--r--OpenSim/Region/ScriptEngine/DotNetEngine/ScriptEngine.cs264
21 files changed, 1525 insertions, 1481 deletions
diff --git a/OpenSim/Framework/Console/LogBase.cs b/OpenSim/Framework/Console/LogBase.cs
index 67440f6..5a7ce4d 100644
--- a/OpenSim/Framework/Console/LogBase.cs
+++ b/OpenSim/Framework/Console/LogBase.cs
@@ -46,6 +46,8 @@ namespace OpenSim.Framework.Console
46 46
47 public class LogBase 47 public class LogBase
48 { 48 {
49 private object m_syncRoot = new object();
50
49 StreamWriter Log; 51 StreamWriter Log;
50 public conscmd_callback cmdparser; 52 public conscmd_callback cmdparser;
51 public string componentname; 53 public string componentname;
@@ -64,7 +66,7 @@ namespace OpenSim.Framework.Console
64 } 66 }
65 67
66 System.Console.WriteLine("Logs will be saved to current directory in " + LogFile); 68 System.Console.WriteLine("Logs will be saved to current directory in " + LogFile);
67 69
68 Log = File.AppendText(LogFile); 70 Log = File.AppendText(LogFile);
69 Log.WriteLine("========================================================================"); 71 Log.WriteLine("========================================================================");
70 Log.WriteLine(componentname + " Started at " + DateTime.Now.ToString()); 72 Log.WriteLine(componentname + " Started at " + DateTime.Now.ToString());
@@ -76,27 +78,6 @@ namespace OpenSim.Framework.Console
76 Log.Close(); 78 Log.Close();
77 } 79 }
78 80
79 [Obsolete("Log.WriteLine is obsolete, use Warn / Error / Verbose instead.")]
80 public void Write(string format, params object[] args)
81 {
82 // HOUSEKEEPING : Will remove once use is removed.
83 Notice(format, args);
84 return;
85 }
86
87 [Obsolete("Log.WriteLine is obsolete, use Warn / Error / Verbose instead.")]
88 public void WriteLine(LogPriority importance, string format, params object[] args)
89 {
90 // HOUSEKEEPING : Will remove once use is removed.
91 Log.WriteLine(format, args);
92 Log.Flush();
93 if (!m_silent)
94 {
95 System.Console.WriteLine(format, args);
96 }
97 return;
98 }
99
100 /// <summary> 81 /// <summary>
101 /// derive an ansi color from a string, ignoring the darker colors. 82 /// derive an ansi color from a string, ignoring the darker colors.
102 /// This is used to help automatically bin component tags with colors 83 /// This is used to help automatically bin component tags with colors
@@ -178,7 +159,7 @@ namespace OpenSim.Framework.Console
178 public void Error(string sender, string format, params object[] args) 159 public void Error(string sender, string format, params object[] args)
179 { 160 {
180 WritePrefixLine(DeriveColor(sender), sender); 161 WritePrefixLine(DeriveColor(sender), sender);
181 Error( format, args); 162 Error(format, args);
182 return; 163 return;
183 } 164 }
184 165
@@ -229,7 +210,7 @@ namespace OpenSim.Framework.Console
229 WriteNewLine(ConsoleColor.Blue, format, args); 210 WriteNewLine(ConsoleColor.Blue, format, args);
230 return; 211 return;
231 } 212 }
232 213
233 [Conditional("DEBUG")] 214 [Conditional("DEBUG")]
234 public void Debug(string format, params object[] args) 215 public void Debug(string format, params object[] args)
235 { 216 {
@@ -247,66 +228,75 @@ namespace OpenSim.Framework.Console
247 228
248 private void WriteNewLine(ConsoleColor color, string format, params object[] args) 229 private void WriteNewLine(ConsoleColor color, string format, params object[] args)
249 { 230 {
250 string now = System.DateTime.Now.ToString("[MM-dd hh:mm:ss] "); 231 lock (m_syncRoot)
251 Log.Write(now);
252 Log.WriteLine(format, args);
253 Log.Flush();
254 if (!m_silent)
255 { 232 {
256 System.Console.Write(now); 233 string now = System.DateTime.Now.ToString("[MM-dd hh:mm:ss] ");
257 try 234 Log.Write(now);
235 Log.WriteLine(format, args);
236 Log.Flush();
237 if (!m_silent)
258 { 238 {
259 if (color != ConsoleColor.White) 239 System.Console.Write(now);
260 System.Console.ForegroundColor = color; 240 try
241 {
242 if (color != ConsoleColor.White)
243 System.Console.ForegroundColor = color;
261 244
262 System.Console.WriteLine(format, args); 245 System.Console.WriteLine(format, args);
263 System.Console.ResetColor(); 246 System.Console.ResetColor();
264 } 247 }
265 catch (ArgumentNullException) 248 catch (ArgumentNullException)
266 { 249 {
267 // Some older systems dont support coloured text. 250 // Some older systems dont support coloured text.
268 System.Console.WriteLine(format, args); 251 System.Console.WriteLine(format, args);
252 }
269 } 253 }
254 return;
270 } 255 }
271 return;
272 } 256 }
273 257
274 private void WritePrefixLine(ConsoleColor color, string sender) 258 private void WritePrefixLine(ConsoleColor color, string sender)
275 { 259 {
276 sender = sender.ToUpper(); 260 lock (m_syncRoot)
277 Log.WriteLine("[" + sender + "] "); 261 {
278 Log.Flush(); 262 sender = sender.ToUpper();
263 Log.WriteLine("[" + sender + "] ");
264 Log.Flush();
279 265
280 System.Console.Write("["); 266 System.Console.Write("[");
281 267
282 if (!m_silent) 268 if (!m_silent)
283 {
284 try
285 {
286 System.Console.ForegroundColor = color;
287 System.Console.Write(sender);
288 System.Console.ResetColor();
289 }
290 catch (ArgumentNullException)
291 { 269 {
292 // Some older systems dont support coloured text. 270 try
293 System.Console.WriteLine(sender); 271 {
272 System.Console.ForegroundColor = color;
273 System.Console.Write(sender);
274 System.Console.ResetColor();
275 }
276 catch (ArgumentNullException)
277 {
278 // Some older systems dont support coloured text.
279 System.Console.WriteLine(sender);
280 }
294 } 281 }
295 }
296 282
297 System.Console.Write("] \t"); 283 System.Console.Write("] \t");
298 284
299 return; 285 return;
286 }
300 } 287 }
301 288
302 289
303 public string ReadLine() 290 public string ReadLine()
304 { 291 {
305 try { 292 try
293 {
306 string TempStr = System.Console.ReadLine(); 294 string TempStr = System.Console.ReadLine();
307 Log.WriteLine(TempStr); 295 Log.WriteLine(TempStr);
308 return TempStr; 296 return TempStr;
309 } catch (Exception e) { 297 }
298 catch (Exception e)
299 {
310 MainLog.Instance.Error("Console", "System.Console.ReadLine exception " + e.ToString()); 300 MainLog.Instance.Error("Console", "System.Console.ReadLine exception " + e.ToString());
311 return ""; 301 return "";
312 } 302 }
@@ -446,9 +436,12 @@ namespace OpenSim.Framework.Console
446 Array.Resize<string>(ref tempstrarray, tempstrarray.Length - 1); 436 Array.Resize<string>(ref tempstrarray, tempstrarray.Length - 1);
447 Array.Reverse(tempstrarray); 437 Array.Reverse(tempstrarray);
448 string[] cmdparams = (string[])tempstrarray; 438 string[] cmdparams = (string[])tempstrarray;
449 try { 439 try
440 {
450 RunCmd(cmd, cmdparams); 441 RunCmd(cmd, cmdparams);
451 } catch (Exception e) { 442 }
443 catch (Exception e)
444 {
452 MainLog.Instance.Error("Console", "Command failed with exception " + e.ToString()); 445 MainLog.Instance.Error("Console", "Command failed with exception " + e.ToString());
453 } 446 }
454 } 447 }
@@ -458,7 +451,7 @@ namespace OpenSim.Framework.Console
458 get 451 get
459 { 452 {
460 string result = String.Empty; 453 string result = String.Empty;
461 454
462 string stacktrace = Environment.StackTrace; 455 string stacktrace = Environment.StackTrace;
463 List<string> lines = new List<string>(stacktrace.Split(new string[] { "at " }, StringSplitOptions.None)); 456 List<string> lines = new List<string>(stacktrace.Split(new string[] { "at " }, StringSplitOptions.None));
464 457
diff --git a/OpenSim/Grid/ScriptEngine/DotNetEngine/ScriptEngine.cs b/OpenSim/Grid/ScriptEngine/DotNetEngine/ScriptEngine.cs
index 81a95c5..2626b14 100644
--- a/OpenSim/Grid/ScriptEngine/DotNetEngine/ScriptEngine.cs
+++ b/OpenSim/Grid/ScriptEngine/DotNetEngine/ScriptEngine.cs
@@ -1,132 +1,132 @@
1/* 1/*
2* Copyright (c) Contributors, http://opensimulator.org/ 2* Copyright (c) Contributors, http://opensimulator.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders. 3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4* 4*
5* Redistribution and use in source and binary forms, with or without 5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met: 6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright 7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer. 8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright 9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the 10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution. 11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the 12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products 13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission. 14* derived from this software without specific prior written permission.
15* 15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY 16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY 19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 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 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 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 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. 25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26* 26*
27*/ 27*/
28/* Original code: Tedd Hansen */ 28/* Original code: Tedd Hansen */
29using System; 29using System;
30using System.Collections.Generic; 30using System.Collections.Generic;
31using System.Text; 31using System.Text;
32using OpenSim.Framework.Console; 32using OpenSim.Framework.Console;
33using OpenSim.Region.Environment.Scenes; 33using OpenSim.Region.Environment.Scenes;
34using OpenSim.Region.Environment.Scenes.Scripting; 34using OpenSim.Region.Environment.Scenes.Scripting;
35using OpenSim.Region.Environment.Interfaces; 35using OpenSim.Region.Environment.Interfaces;
36using libsecondlife; 36using libsecondlife;
37 37
38namespace OpenSim.Grid.ScriptEngine.DotNetEngine 38namespace OpenSim.Grid.ScriptEngine.DotNetEngine
39{ 39{
40 /// <summary> 40 /// <summary>
41 /// This is the root object for ScriptEngine 41 /// This is the root object for ScriptEngine
42 /// </summary> 42 /// </summary>
43 [Serializable] 43 [Serializable]
44 public class ScriptEngine :IRegionModule 44 public class ScriptEngine :IRegionModule
45 { 45 {
46 46
47 internal OpenSim.Region.Environment.Scenes.Scene World; 47 internal OpenSim.Region.Environment.Scenes.Scene World;
48 internal EventManager m_EventManager; // Handles and queues incoming events from OpenSim 48 internal EventManager m_EventManager; // Handles and queues incoming events from OpenSim
49 internal EventQueueManager m_EventQueueManager; // Executes events 49 internal EventQueueManager m_EventQueueManager; // Executes events
50 internal ScriptManager m_ScriptManager; // Load, unload and execute scripts 50 internal ScriptManager m_ScriptManager; // Load, unload and execute scripts
51 internal AppDomainManager m_AppDomainManager; 51 internal AppDomainManager m_AppDomainManager;
52 internal LSLLongCmdHandler m_LSLLongCmdHandler; 52 internal LSLLongCmdHandler m_LSLLongCmdHandler;
53 53
54 private OpenSim.Framework.Console.LogBase m_log; 54 private OpenSim.Framework.Console.LogBase m_log;
55 55
56 public ScriptEngine() 56 public ScriptEngine()
57 { 57 {
58 //Common.SendToDebug("ScriptEngine Object Initialized"); 58 //Common.SendToDebug("ScriptEngine Object Initialized");
59 Common.mySE = this; 59 Common.mySE = this;
60 } 60 }
61 61
62 public LogBase Log 62 public LogBase Log
63 { 63 {
64 get { return m_log; } 64 get { return m_log; }
65 } 65 }
66 66
67 public void InitializeEngine(OpenSim.Region.Environment.Scenes.Scene Sceneworld, OpenSim.Framework.Console.LogBase logger) 67 public void InitializeEngine(OpenSim.Region.Environment.Scenes.Scene Sceneworld, OpenSim.Framework.Console.LogBase logger)
68 { 68 {
69 69
70 World = Sceneworld; 70 World = Sceneworld;
71 m_log = logger; 71 m_log = logger;
72 72
73 Log.Verbose("ScriptEngine", "DotNet & LSL ScriptEngine initializing"); 73 Log.Verbose("ScriptEngine", "DotNet & LSL ScriptEngine initializing");
74 74
75 //m_logger.Status("ScriptEngine", "InitializeEngine"); 75 //m_logger.Status("ScriptEngine", "InitializeEngine");
76 76
77 // Create all objects we'll be using 77 // Create all objects we'll be using
78 m_EventQueueManager = new EventQueueManager(this); 78 m_EventQueueManager = new EventQueueManager(this);
79 m_EventManager = new EventManager(this); 79 m_EventManager = new EventManager(this);
80 m_ScriptManager = new ScriptManager(this); 80 m_ScriptManager = new ScriptManager(this);
81 m_AppDomainManager = new AppDomainManager(); 81 m_AppDomainManager = new AppDomainManager();
82 m_LSLLongCmdHandler = new LSLLongCmdHandler(this); 82 m_LSLLongCmdHandler = new LSLLongCmdHandler(this);
83 83
84 // Should we iterate the region for scripts that needs starting? 84 // Should we iterate the region for scripts that needs starting?
85 // Or can we assume we are loaded before anything else so we can use proper events? 85 // Or can we assume we are loaded before anything else so we can use proper events?
86 86
87 87
88 } 88 }
89 89
90 public void Shutdown() 90 public void Shutdown()
91 { 91 {
92 // We are shutting down 92 // We are shutting down
93 } 93 }
94 94
95 //// !!!FOR DEBUGGING ONLY!!! (for executing script directly from test app) 95 //// !!!FOR DEBUGGING ONLY!!! (for executing script directly from test app)
96 //[Obsolete("!!!FOR DEBUGGING ONLY!!!")] 96 //[Obsolete("!!!FOR DEBUGGING ONLY!!!")]
97 //public void StartScript(string ScriptID, IScriptHost ObjectID) 97 //public void StartScript(string ScriptID, IScriptHost ObjectID)
98 //{ 98 //{
99 // this.myEventManager.TEMP_OBJECT_ID = ObjectID; 99 // this.myEventManager.TEMP_OBJECT_ID = ObjectID;
100 // Log.Status("ScriptEngine", "DEBUG FUNCTION: StartScript: " + ScriptID); 100 // Log.Status("ScriptEngine", "DEBUG FUNCTION: StartScript: " + ScriptID);
101 // myScriptManager.StartScript(ScriptID, ObjectID); 101 // myScriptManager.StartScript(ScriptID, ObjectID);
102 //} 102 //}
103 103
104 #region IRegionModule 104 #region IRegionModule
105 105
106 public void Initialise(Scene scene) 106 public void Initialise(Scene scene)
107 { 107 {
108 this.InitializeEngine(scene, MainLog.Instance); 108 this.InitializeEngine(scene, MainLog.Instance);
109 } 109 }
110 110
111 public void PostInitialise() 111 public void PostInitialise()
112 { 112 {
113 113
114 } 114 }
115 115
116 public void CloseDown() 116 public void Close()
117 { 117 {
118 } 118 }
119 119
120 public string GetName() 120 public string Name
121 { 121 {
122 return "LSLScriptingModule"; 122 get { return "LSLScriptingModule"; }
123 } 123 }
124 124
125 public bool IsSharedModule() 125 public bool IsSharedModule
126 { 126 {
127 return false; 127 get { return false; }
128 } 128 }
129 129
130 #endregion 130 #endregion
131 } 131 }
132} 132}
diff --git a/OpenSim/Region/Application/OpenSimMain.cs b/OpenSim/Region/Application/OpenSimMain.cs
index eeb69c5..2fc2d0a 100644
--- a/OpenSim/Region/Application/OpenSimMain.cs
+++ b/OpenSim/Region/Application/OpenSimMain.cs
@@ -202,7 +202,7 @@ namespace OpenSim
202 configFiles = Directory.GetFiles(regionConfigPath, "*.xml"); 202 configFiles = Directory.GetFiles(regionConfigPath, "*.xml");
203 } 203 }
204 204
205 m_moduleLoader = new ModuleLoader(); 205 m_moduleLoader = new ModuleLoader( m_log );
206 MainLog.Instance.Verbose("Loading Shared Modules"); 206 MainLog.Instance.Verbose("Loading Shared Modules");
207 m_moduleLoader.LoadDefaultSharedModules(m_exceptSharedModules); 207 m_moduleLoader.LoadDefaultSharedModules(m_exceptSharedModules);
208 208
@@ -220,7 +220,9 @@ namespace OpenSim
220 220
221 m_moduleLoader.InitialiseSharedModules(scene); 221 m_moduleLoader.InitialiseSharedModules(scene);
222 MainLog.Instance.Verbose("Loading Region's Modules"); 222 MainLog.Instance.Verbose("Loading Region's Modules");
223 m_moduleLoader.CreateDefaultModules(scene, m_exceptModules); 223
224 //m_moduleLoader.CreateDefaultModules(scene, m_exceptModules);
225 m_moduleLoader.PickupModules( scene );
224 scene.SetModuleInterfaces(); 226 scene.SetModuleInterfaces();
225 227
226 // Check if we have a script engine to load 228 // Check if we have a script engine to load
@@ -616,7 +618,7 @@ namespace OpenSim
616 m_log.Error("The currently loaded shared modules are:"); 618 m_log.Error("The currently loaded shared modules are:");
617 foreach (OpenSim.Region.Environment.Interfaces.IRegionModule module in m_moduleLoader.LoadedSharedModules.Values) 619 foreach (OpenSim.Region.Environment.Interfaces.IRegionModule module in m_moduleLoader.LoadedSharedModules.Values)
618 { 620 {
619 m_log.Error("Shared Module: " + module.GetName()); 621 m_log.Error("Shared Module: " + module.Name);
620 } 622 }
621 break; 623 break;
622 } 624 }
diff --git a/OpenSim/Region/Environment/Interfaces/IRegionModule.cs b/OpenSim/Region/Environment/Interfaces/IRegionModule.cs
index 2c7c742..410d66d 100644
--- a/OpenSim/Region/Environment/Interfaces/IRegionModule.cs
+++ b/OpenSim/Region/Environment/Interfaces/IRegionModule.cs
@@ -6,8 +6,8 @@ namespace OpenSim.Region.Environment.Interfaces
6 { 6 {
7 void Initialise(Scene scene); 7 void Initialise(Scene scene);
8 void PostInitialise(); 8 void PostInitialise();
9 void CloseDown(); 9 void Close();
10 string GetName(); 10 string Name { get; }
11 bool IsSharedModule(); 11 bool IsSharedModule { get; }
12 } 12 }
13} \ No newline at end of file 13} \ No newline at end of file
diff --git a/OpenSim/Region/Environment/ModuleLoader.cs b/OpenSim/Region/Environment/ModuleLoader.cs
index 43c1aae..b24b651 100644
--- a/OpenSim/Region/Environment/ModuleLoader.cs
+++ b/OpenSim/Region/Environment/ModuleLoader.cs
@@ -1,162 +1,209 @@
1using System; 1using System;
2using System.Collections.Generic; 2using System.Collections.Generic;
3using System.IO; 3using System.IO;
4using System.Reflection; 4using System.Reflection;
5using OpenSim.Region.Environment.Interfaces; 5using OpenSim.Framework.Console;
6using OpenSim.Region.Environment.Modules; 6using OpenSim.Region.Environment.Interfaces;
7using OpenSim.Region.Environment.Scenes; 7using OpenSim.Region.Environment.Modules;
8 8using OpenSim.Region.Environment.Scenes;
9namespace OpenSim.Region.Environment 9
10{ 10namespace OpenSim.Region.Environment
11 public class ModuleLoader 11{
12 { 12 public class ModuleLoader
13 public Dictionary<string, Assembly> LoadedAssemblys = new Dictionary<string, Assembly>(); 13 {
14 14 public Dictionary<string, Assembly> LoadedAssemblys = new Dictionary<string, Assembly>();
15 public List<IRegionModule> LoadedModules = new List<IRegionModule>(); 15
16 public Dictionary<string, IRegionModule> LoadedSharedModules = new Dictionary<string, IRegionModule>(); 16 public List<IRegionModule> LoadedModules = new List<IRegionModule>();
17 17 public Dictionary<string, IRegionModule> LoadedSharedModules = new Dictionary<string, IRegionModule>();
18 public ModuleLoader() 18 private readonly LogBase m_log;
19 { 19
20 } 20 public ModuleLoader(LogBase log)
21 21 {
22 /// <summary> 22 m_log = log;
23 /// Should have a module factory? 23 }
24 /// </summary> 24
25 /// <param name="scene"></param> 25 /// <summary>
26 public void CreateDefaultModules(Scene scene, string exceptModules) 26 /// Should have a module factory?
27 { 27 /// </summary>
28 IRegionModule module = new XferModule(); 28 /// <param name="scene"></param>
29 InitialiseModule(module, scene); 29 //public void CreateDefaultModules(Scene scene, string exceptModules)
30 30 //{
31 module = new ChatModule(); 31 // IRegionModule module = new XferModule();
32 InitialiseModule(module, scene); 32 // InitializeModule(module, scene);
33 33
34 module = new AvatarProfilesModule(); 34 // module = new ChatModule();
35 InitialiseModule(module, scene); 35 // InitializeModule(module, scene);
36 36
37 module = new XMLRPCModule(); 37 // module = new AvatarProfilesModule();
38 InitialiseModule(module, scene); 38 // InitializeModule(module, scene);
39 39
40 module = new WorldCommModule(); 40 // module = new XMLRPCModule();
41 InitialiseModule(module, scene); 41 // InitializeModule(module, scene);
42 42
43 LoadRegionModule("OpenSim.Region.ExtensionsScriptModule.dll", "ExtensionsScriptingModule", scene); 43 // module = new WorldCommModule();
44 44 // InitializeModule(module, scene);
45 string lslPath = Path.Combine("ScriptEngines", "OpenSim.Region.ScriptEngine.DotNetEngine.dll"); 45
46 LoadRegionModule(lslPath, "LSLScriptingModule", scene); 46 // LoadRegionModule("OpenSim.Region.ExtensionsScriptModule.dll", "ExtensionsScriptingModule", scene);
47 } 47
48 48 // string lslPath = Path.Combine("ScriptEngines", "OpenSim.Region.ScriptEngine.DotNetEngine.dll");
49 49 // LoadRegionModule(lslPath, "LSLScriptingModule", scene);
50 public void LoadDefaultSharedModules(string exceptModules) 50 //}
51 { 51
52 DynamicTextureModule dynamicModule = new DynamicTextureModule(); 52 public void PickupModules(Scene scene)
53 LoadedSharedModules.Add(dynamicModule.GetName(), dynamicModule); 53 {
54 } 54 string moduleDir = ".";
55 55
56 public void InitialiseSharedModules(Scene scene) 56 DirectoryInfo dir = new DirectoryInfo(moduleDir);
57 { 57
58 foreach (IRegionModule module in LoadedSharedModules.Values) 58 foreach (FileInfo fileInfo in dir.GetFiles("*.dll"))
59 { 59 {
60 module.Initialise(scene); 60 LoadRegionModules(fileInfo.FullName, scene);
61 scene.AddModule(module.GetName(), module); //should be doing this? 61 }
62 } 62 }
63 } 63
64 64 public void LoadDefaultSharedModules(string exceptModules)
65 private void InitialiseModule(IRegionModule module, Scene scene) 65 {
66 { 66 DynamicTextureModule dynamicModule = new DynamicTextureModule();
67 module.Initialise(scene); 67 LoadedSharedModules.Add(dynamicModule.Name, dynamicModule);
68 scene.AddModule(module.GetName(), module); 68 }
69 LoadedModules.Add(module); 69
70 } 70 public void InitialiseSharedModules(Scene scene)
71 71 {
72 /// <summary> 72 foreach (IRegionModule module in LoadedSharedModules.Values)
73 /// Loads/initialises a Module instance that can be used by mutliple Regions 73 {
74 /// </summary> 74 module.Initialise(scene);
75 /// <param name="dllName"></param> 75 scene.AddModule(module.Name, module); //should be doing this?
76 /// <param name="moduleName"></param> 76 }
77 /// <param name="scene"></param> 77 }
78 public void LoadSharedModule(string dllName, string moduleName) 78
79 { 79 private void InitializeModule(IRegionModule module, Scene scene)
80 IRegionModule module = LoadModule(dllName, moduleName); 80 {
81 if (module != null) 81 module.Initialise(scene);
82 { 82 scene.AddModule(module.Name, module);
83 LoadedSharedModules.Add(module.GetName(), module); 83 LoadedModules.Add(module);
84 } 84 }
85 } 85
86 86 /// <summary>
87 public void LoadRegionModule(string dllName, string moduleName, Scene scene) 87 /// Loads/initialises a Module instance that can be used by mutliple Regions
88 { 88 /// </summary>
89 IRegionModule module = LoadModule(dllName, moduleName); 89 /// <param name="dllName"></param>
90 if (module != null) 90 /// <param name="moduleName"></param>
91 { 91 /// <param name="scene"></param>
92 InitialiseModule(module, scene); 92 public void LoadSharedModule(string dllName, string moduleName)
93 } 93 {
94 } 94 IRegionModule module = LoadModule(dllName, moduleName);
95 95 if (module != null)
96 /// <summary> 96 {
97 /// Loads a external Module (if not already loaded) and creates a new instance of it. 97 LoadedSharedModules.Add(module.Name, module);
98 /// </summary> 98 }
99 /// <param name="dllName"></param> 99 }
100 /// <param name="moduleName"></param> 100
101 /// <param name="scene"></param> 101 public void LoadRegionModules(string dllName, Scene scene)
102 public IRegionModule LoadModule(string dllName, string moduleName) 102 {
103 { 103 IRegionModule[] modules = LoadModules(dllName);
104 Assembly pluginAssembly = null; 104
105 if (LoadedAssemblys.ContainsKey(dllName)) 105 if (modules.Length > 0)
106 { 106 {
107 pluginAssembly = LoadedAssemblys[dllName]; 107 m_log.Verbose("MODULES", "Found Module Library [{0}]", dllName );
108 } 108 foreach (IRegionModule module in modules)
109 else 109 {
110 { 110 m_log.Verbose("MODULES", " [{0}]: Initializing.", module.Name);
111 pluginAssembly = Assembly.LoadFrom(dllName); 111 InitializeModule(module, scene);
112 LoadedAssemblys.Add(dllName, pluginAssembly); 112 }
113 } 113 }
114 114 }
115 IRegionModule module = null; 115
116 foreach (Type pluginType in pluginAssembly.GetTypes()) 116 public void LoadRegionModule(string dllName, string moduleName, Scene scene)
117 { 117 {
118 if (pluginType.IsPublic) 118 IRegionModule module = LoadModule(dllName, moduleName);
119 { 119 if (module != null)
120 if (!pluginType.IsAbstract) 120 {
121 { 121 InitializeModule(module, scene);
122 Type typeInterface = pluginType.GetInterface("IRegionModule", true); 122 }
123 123 }
124 if (typeInterface != null) 124
125 { 125 /// <summary>
126 module = 126 /// Loads a external Module (if not already loaded) and creates a new instance of it.
127 (IRegionModule) Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString())); 127 /// </summary>
128 break; 128 /// <param name="dllName"></param>
129 } 129 /// <param name="moduleName"></param>
130 typeInterface = null; 130 /// <param name="scene"></param>
131 } 131 public IRegionModule LoadModule(string dllName, string moduleName)
132 } 132 {
133 } 133 IRegionModule[] modules = LoadModules(dllName);
134 pluginAssembly = null; 134
135 135 foreach (IRegionModule module in modules)
136 if ((module != null) || (module.GetName() == moduleName)) 136 {
137 { 137 if ((module != null) && (module.Name == moduleName))
138 return module; 138 {
139 } 139 return module;
140 140 }
141 return null; 141 }
142 } 142
143 143 return null;
144 public void PostInitialise() 144 }
145 { 145
146 foreach (IRegionModule module in LoadedSharedModules.Values) 146 public IRegionModule[] LoadModules(string dllName)
147 { 147 {
148 module.PostInitialise(); 148 List<IRegionModule> modules = new List<IRegionModule>();
149 } 149
150 150 Assembly pluginAssembly;
151 foreach (IRegionModule module in LoadedModules) 151 if (!LoadedAssemblys.TryGetValue(dllName, out pluginAssembly ))
152 { 152 {
153 module.PostInitialise(); 153 try
154 } 154 {
155 } 155 pluginAssembly = Assembly.LoadFrom(dllName);
156 156 LoadedAssemblys.Add(dllName, pluginAssembly);
157 public void ClearCache() 157 }
158 { 158 catch( BadImageFormatException e )
159 LoadedAssemblys.Clear(); 159 {
160 } 160 m_log.Error( "MODULES", "The file [{0}] is not a valid assembly.", e.FileName );
161 } 161 }
162} 162 }
163
164
165 if (pluginAssembly != null)
166 {
167 foreach (Type pluginType in pluginAssembly.GetTypes())
168 {
169 if (pluginType.IsPublic)
170 {
171 if (!pluginType.IsAbstract)
172 {
173 //if (dllName.Contains("OpenSim.Region.Environment"))
174 //{
175 // int i = 1;
176 // i++;
177 //}
178
179 if( pluginType.GetInterface("IRegionModule") != null )
180 {
181 modules.Add((IRegionModule) Activator.CreateInstance(pluginType));
182 }
183 }
184 }
185 }
186 }
187
188 return modules.ToArray();
189 }
190
191 public void PostInitialise()
192 {
193 foreach (IRegionModule module in LoadedSharedModules.Values)
194 {
195 module.PostInitialise();
196 }
197
198 foreach (IRegionModule module in LoadedModules)
199 {
200 module.PostInitialise();
201 }
202 }
203
204 public void ClearCache()
205 {
206 LoadedAssemblys.Clear();
207 }
208 }
209}
diff --git a/OpenSim/Region/Environment/Modules/AssetDownloadModule.cs b/OpenSim/Region/Environment/Modules/AssetDownloadModule.cs
index 7d789f9..e4ae647 100644
--- a/OpenSim/Region/Environment/Modules/AssetDownloadModule.cs
+++ b/OpenSim/Region/Environment/Modules/AssetDownloadModule.cs
@@ -1,43 +1,43 @@
1using OpenSim.Framework.Interfaces; 1using OpenSim.Framework.Interfaces;
2using OpenSim.Region.Environment.Interfaces; 2using OpenSim.Region.Environment.Interfaces;
3using OpenSim.Region.Environment.Scenes; 3using OpenSim.Region.Environment.Scenes;
4 4
5namespace OpenSim.Region.Environment.Modules 5namespace OpenSim.Region.Environment.Modules
6{ 6{
7 public class AssetDownloadModule : IRegionModule 7 public class AssetDownloadModule : IRegionModule
8 { 8 {
9 private Scene m_scene; 9 private Scene m_scene;
10 10
11 public AssetDownloadModule() 11 public AssetDownloadModule()
12 { 12 {
13 } 13 }
14 14
15 public void Initialise(Scene scene) 15 public void Initialise(Scene scene)
16 { 16 {
17 m_scene = scene; 17 m_scene = scene;
18 m_scene.EventManager.OnNewClient += NewClient; 18 m_scene.EventManager.OnNewClient += NewClient;
19 } 19 }
20 20
21 public void PostInitialise() 21 public void PostInitialise()
22 { 22 {
23 } 23 }
24 24
25 public void CloseDown() 25 public void Close()
26 { 26 {
27 } 27 }
28 28
29 public string GetName() 29 public string Name
30 { 30 {
31 return "AssetDownloadModule"; 31 get { return "AssetDownloadModule"; }
32 } 32 }
33 33
34 public bool IsSharedModule() 34 public bool IsSharedModule
35 { 35 {
36 return false; 36 get { return false; }
37 } 37 }
38 38
39 public void NewClient(IClientAPI client) 39 public void NewClient(IClientAPI client)
40 { 40 {
41 } 41 }
42 } 42 }
43} \ No newline at end of file 43} \ No newline at end of file
diff --git a/OpenSim/Region/Environment/Modules/AvatarProfilesModule.cs b/OpenSim/Region/Environment/Modules/AvatarProfilesModule.cs
index aaa9261..d8e4234 100644
--- a/OpenSim/Region/Environment/Modules/AvatarProfilesModule.cs
+++ b/OpenSim/Region/Environment/Modules/AvatarProfilesModule.cs
@@ -1,65 +1,65 @@
1using libsecondlife; 1using libsecondlife;
2using OpenSim.Framework.Interfaces; 2using OpenSim.Framework.Interfaces;
3using OpenSim.Region.Environment.Interfaces; 3using OpenSim.Region.Environment.Interfaces;
4using OpenSim.Region.Environment.Scenes; 4using OpenSim.Region.Environment.Scenes;
5 5
6namespace OpenSim.Region.Environment.Modules 6namespace OpenSim.Region.Environment.Modules
7{ 7{
8 public class AvatarProfilesModule : IRegionModule 8 public class AvatarProfilesModule : IRegionModule
9 { 9 {
10 private Scene m_scene; 10 private Scene m_scene;
11 11
12 public AvatarProfilesModule() 12 public AvatarProfilesModule()
13 { 13 {
14 } 14 }
15 15
16 public void Initialise(Scene scene) 16 public void Initialise(Scene scene)
17 { 17 {
18 m_scene = scene; 18 m_scene = scene;
19 m_scene.EventManager.OnNewClient += NewClient; 19 m_scene.EventManager.OnNewClient += NewClient;
20 } 20 }
21 21
22 public void PostInitialise() 22 public void PostInitialise()
23 { 23 {
24 } 24 }
25 25
26 public void CloseDown() 26 public void Close()
27 { 27 {
28 } 28 }
29 29
30 public string GetName() 30 public string Name
31 { 31 {
32 return "AvatarProfilesModule"; 32 get { return "AvatarProfilesModule"; }
33 } 33 }
34 34
35 public bool IsSharedModule() 35 public bool IsSharedModule
36 { 36 {
37 return false; 37 get { return false; }
38 } 38 }
39 39
40 public void NewClient(IClientAPI client) 40 public void NewClient(IClientAPI client)
41 { 41 {
42 client.OnRequestAvatarProperties += RequestAvatarProperty; 42 client.OnRequestAvatarProperties += RequestAvatarProperty;
43 } 43 }
44 44
45 public void RemoveClient(IClientAPI client) 45 public void RemoveClient(IClientAPI client)
46 { 46 {
47 client.OnRequestAvatarProperties -= RequestAvatarProperty; 47 client.OnRequestAvatarProperties -= RequestAvatarProperty;
48 } 48 }
49 49
50 /// <summary> 50 /// <summary>
51 /// 51 ///
52 /// </summary> 52 /// </summary>
53 /// <param name="remoteClient"></param> 53 /// <param name="remoteClient"></param>
54 /// <param name="avatarID"></param> 54 /// <param name="avatarID"></param>
55 public void RequestAvatarProperty(IClientAPI remoteClient, LLUUID avatarID) 55 public void RequestAvatarProperty(IClientAPI remoteClient, LLUUID avatarID)
56 { 56 {
57 string about = "OpenSim crash test dummy"; 57 string about = "OpenSim crash test dummy";
58 string bornOn = "Before now"; 58 string bornOn = "Before now";
59 string flAbout = "First life? What is one of those? OpenSim is my life!"; 59 string flAbout = "First life? What is one of those? OpenSim is my life!";
60 LLUUID partner = new LLUUID("11111111-1111-0000-0000-000100bba000"); 60 LLUUID partner = new LLUUID("11111111-1111-0000-0000-000100bba000");
61 remoteClient.SendAvatarProperties(avatarID, about, bornOn, "", flAbout, 0, LLUUID.Zero, LLUUID.Zero, "", 61 remoteClient.SendAvatarProperties(avatarID, about, bornOn, "", flAbout, 0, LLUUID.Zero, LLUUID.Zero, "",
62 partner); 62 partner);
63 } 63 }
64 } 64 }
65} \ No newline at end of file 65} \ No newline at end of file
diff --git a/OpenSim/Region/Environment/Modules/ChatModule.cs b/OpenSim/Region/Environment/Modules/ChatModule.cs
index 2eac7d6..453fa76 100644
--- a/OpenSim/Region/Environment/Modules/ChatModule.cs
+++ b/OpenSim/Region/Environment/Modules/ChatModule.cs
@@ -1,214 +1,214 @@
1using System; 1using System;
2using System.IO; 2using System.IO;
3using System.Net.Sockets; 3using System.Net.Sockets;
4using System.Threading; 4using System.Threading;
5using libsecondlife; 5using libsecondlife;
6using OpenSim.Framework.Interfaces; 6using OpenSim.Framework.Interfaces;
7using OpenSim.Framework.Utilities; 7using OpenSim.Framework.Utilities;
8using OpenSim.Region.Environment.Interfaces; 8using OpenSim.Region.Environment.Interfaces;
9using OpenSim.Region.Environment.Scenes; 9using OpenSim.Region.Environment.Scenes;
10 10
11namespace OpenSim.Region.Environment.Modules 11namespace OpenSim.Region.Environment.Modules
12{ 12{
13 public class ChatModule : IRegionModule, ISimChat 13 public class ChatModule : IRegionModule, ISimChat
14 { 14 {
15 private Scene m_scene; 15 private Scene m_scene;
16 16
17 private string m_server = "irc2.choopa.net"; 17 private string m_server = "irc2.choopa.net";
18 18
19 // private int m_port = 6668; 19 // private int m_port = 6668;
20 //private string m_user = "USER OpenSimBot 8 * :I'm a OpenSim to irc bot"; 20 //private string m_user = "USER OpenSimBot 8 * :I'm a OpenSim to irc bot";
21 private string m_nick = "OSimBot"; 21 private string m_nick = "OSimBot";
22 private string m_channel = "#opensim"; 22 private string m_channel = "#opensim";
23 23
24 // private NetworkStream m_stream; 24 // private NetworkStream m_stream;
25 private TcpClient m_irc; 25 private TcpClient m_irc;
26 private StreamWriter m_ircWriter; 26 private StreamWriter m_ircWriter;
27 private StreamReader m_ircReader; 27 private StreamReader m_ircReader;
28 28
29 // private Thread pingSender; 29 // private Thread pingSender;
30 // private Thread listener; 30 // private Thread listener;
31 31
32 private bool connected = false; 32 private bool connected = false;
33 33
34 public ChatModule() 34 public ChatModule()
35 { 35 {
36 m_nick = "OSimBot" + Util.RandomClass.Next(1, 99); 36 m_nick = "OSimBot" + Util.RandomClass.Next(1, 99);
37 m_irc = null; 37 m_irc = null;
38 m_ircWriter = null; 38 m_ircWriter = null;
39 m_ircReader = null; 39 m_ircReader = null;
40 } 40 }
41 41
42 public void Initialise(Scene scene) 42 public void Initialise(Scene scene)
43 { 43 {
44 m_scene = scene; 44 m_scene = scene;
45 m_scene.EventManager.OnNewClient += NewClient; 45 m_scene.EventManager.OnNewClient += NewClient;
46 46
47 m_scene.RegisterModuleInterface<ISimChat>(this); 47 m_scene.RegisterModuleInterface<ISimChat>(this);
48 } 48 }
49 49
50 public void PostInitialise() 50 public void PostInitialise()
51 { 51 {
52 /* 52 /*
53 try 53 try
54 { 54 {
55 m_irc = new TcpClient(m_server, m_port); 55 m_irc = new TcpClient(m_server, m_port);
56 m_stream = m_irc.GetStream(); 56 m_stream = m_irc.GetStream();
57 m_ircReader = new StreamReader(m_stream); 57 m_ircReader = new StreamReader(m_stream);
58 m_ircWriter = new StreamWriter(m_stream); 58 m_ircWriter = new StreamWriter(m_stream);
59 59
60 pingSender = new Thread(new ThreadStart(this.PingRun)); 60 pingSender = new Thread(new ThreadStart(this.PingRun));
61 pingSender.Start(); 61 pingSender.Start();
62 62
63 listener = new Thread(new ThreadStart(this.ListenerRun)); 63 listener = new Thread(new ThreadStart(this.ListenerRun));
64 listener.Start(); 64 listener.Start();
65 65
66 m_ircWriter.WriteLine(m_user); 66 m_ircWriter.WriteLine(m_user);
67 m_ircWriter.Flush(); 67 m_ircWriter.Flush();
68 m_ircWriter.WriteLine("NICK " + m_nick); 68 m_ircWriter.WriteLine("NICK " + m_nick);
69 m_ircWriter.Flush(); 69 m_ircWriter.Flush();
70 m_ircWriter.WriteLine("JOIN " + m_channel); 70 m_ircWriter.WriteLine("JOIN " + m_channel);
71 m_ircWriter.Flush(); 71 m_ircWriter.Flush();
72 connected = true; 72 connected = true;
73 } 73 }
74 catch (Exception e) 74 catch (Exception e)
75 { 75 {
76 Console.WriteLine(e.ToString()); 76 Console.WriteLine(e.ToString());
77 } 77 }
78 */ 78 */
79 } 79 }
80 80
81 public void CloseDown() 81 public void Close()
82 { 82 {
83 m_ircWriter.Close(); 83 m_ircWriter.Close();
84 m_ircReader.Close(); 84 m_ircReader.Close();
85 m_irc.Close(); 85 m_irc.Close();
86 } 86 }
87 87
88 public string GetName() 88 public string Name
89 { 89 {
90 return "ChatModule"; 90 get { return "ChatModule"; }
91 } 91 }
92 92
93 public bool IsSharedModule() 93 public bool IsSharedModule
94 { 94 {
95 return false; 95 get { return false; }
96 } 96 }
97 97
98 public void NewClient(IClientAPI client) 98 public void NewClient(IClientAPI client)
99 { 99 {
100 client.OnChatFromViewer += SimChat; 100 client.OnChatFromViewer += SimChat;
101 } 101 }
102 102
103 public void PingRun() 103 public void PingRun()
104 { 104 {
105 while (true) 105 while (true)
106 { 106 {
107 m_ircWriter.WriteLine("PING :" + m_server); 107 m_ircWriter.WriteLine("PING :" + m_server);
108 m_ircWriter.Flush(); 108 m_ircWriter.Flush();
109 Thread.Sleep(15000); 109 Thread.Sleep(15000);
110 } 110 }
111 } 111 }
112 112
113 public void ListenerRun() 113 public void ListenerRun()
114 { 114 {
115 string inputLine; 115 string inputLine;
116 LLVector3 pos = new LLVector3(128, 128, 20); 116 LLVector3 pos = new LLVector3(128, 128, 20);
117 while (true) 117 while (true)
118 { 118 {
119 while ((inputLine = m_ircReader.ReadLine()) != null) 119 while ((inputLine = m_ircReader.ReadLine()) != null)
120 { 120 {
121 Console.WriteLine(inputLine); 121 Console.WriteLine(inputLine);
122 if (inputLine.Contains(m_channel)) 122 if (inputLine.Contains(m_channel))
123 { 123 {
124 string mess = inputLine.Substring(inputLine.IndexOf(m_channel)); 124 string mess = inputLine.Substring(inputLine.IndexOf(m_channel));
125 m_scene.Broadcast(delegate(IClientAPI client) 125 m_scene.Broadcast(delegate(IClientAPI client)
126 { 126 {
127 client.SendChatMessage( 127 client.SendChatMessage(
128 Helpers.StringToField(mess), 255, pos, "IRC:", 128 Helpers.StringToField(mess), 255, pos, "IRC:",
129 LLUUID.Zero); 129 LLUUID.Zero);
130 }); 130 });
131 } 131 }
132 } 132 }
133 } 133 }
134 } 134 }
135 135
136 public void SimChat(byte[] message, byte type, int channel, LLVector3 fromPos, string fromName, 136 public void SimChat(byte[] message, byte type, int channel, LLVector3 fromPos, string fromName,
137 LLUUID fromAgentID) 137 LLUUID fromAgentID)
138 { 138 {
139 ScenePresence avatar = null; 139 ScenePresence avatar = null;
140 avatar = m_scene.GetScenePresence(fromAgentID); 140 avatar = m_scene.GetScenePresence(fromAgentID);
141 if (avatar != null) 141 if (avatar != null)
142 { 142 {
143 fromPos = avatar.AbsolutePosition; 143 fromPos = avatar.AbsolutePosition;
144 fromName = avatar.Firstname + " " + avatar.Lastname; 144 fromName = avatar.Firstname + " " + avatar.Lastname;
145 avatar = null; 145 avatar = null;
146 } 146 }
147 147
148 if (connected) 148 if (connected)
149 { 149 {
150 m_ircWriter.WriteLine("PRIVMSG " + m_channel + " :" + "<" + fromName + ">: " + 150 m_ircWriter.WriteLine("PRIVMSG " + m_channel + " :" + "<" + fromName + ">: " +
151 Util.FieldToString(message)); 151 Util.FieldToString(message));
152 m_ircWriter.Flush(); 152 m_ircWriter.Flush();
153 } 153 }
154 154
155 if (channel == 0) 155 if (channel == 0)
156 { 156 {
157 m_scene.ForEachScenePresence(delegate(ScenePresence presence) 157 m_scene.ForEachScenePresence(delegate(ScenePresence presence)
158 { 158 {
159 int dis = -1000; 159 int dis = -1000;
160 160
161 //err ??? the following code seems to be request a scenePresence when it already has a ref to it 161 //err ??? the following code seems to be request a scenePresence when it already has a ref to it
162 avatar = m_scene.GetScenePresence(presence.ControllingClient.AgentId); 162 avatar = m_scene.GetScenePresence(presence.ControllingClient.AgentId);
163 if (avatar != null) 163 if (avatar != null)
164 { 164 {
165 dis = (int) avatar.AbsolutePosition.GetDistanceTo(fromPos); 165 dis = (int) avatar.AbsolutePosition.GetDistanceTo(fromPos);
166 } 166 }
167 167
168 switch (type) 168 switch (type)
169 { 169 {
170 case 0: // Whisper 170 case 0: // Whisper
171 if ((dis < 10) && (dis > -10)) 171 if ((dis < 10) && (dis > -10))
172 { 172 {
173 //should change so the message is sent through the avatar rather than direct to the ClientView 173 //should change so the message is sent through the avatar rather than direct to the ClientView
174 presence.ControllingClient.SendChatMessage(message, 174 presence.ControllingClient.SendChatMessage(message,
175 type, 175 type,
176 fromPos, 176 fromPos,
177 fromName, 177 fromName,
178 fromAgentID); 178 fromAgentID);
179 } 179 }
180 break; 180 break;
181 case 1: // Say 181 case 1: // Say
182 if ((dis < 30) && (dis > -30)) 182 if ((dis < 30) && (dis > -30))
183 { 183 {
184 //Console.WriteLine("sending chat"); 184 //Console.WriteLine("sending chat");
185 presence.ControllingClient.SendChatMessage(message, 185 presence.ControllingClient.SendChatMessage(message,
186 type, 186 type,
187 fromPos, 187 fromPos,
188 fromName, 188 fromName,
189 fromAgentID); 189 fromAgentID);
190 } 190 }
191 break; 191 break;
192 case 2: // Shout 192 case 2: // Shout
193 if ((dis < 100) && (dis > -100)) 193 if ((dis < 100) && (dis > -100))
194 { 194 {
195 presence.ControllingClient.SendChatMessage(message, 195 presence.ControllingClient.SendChatMessage(message,
196 type, 196 type,
197 fromPos, 197 fromPos,
198 fromName, 198 fromName,
199 fromAgentID); 199 fromAgentID);
200 } 200 }
201 break; 201 break;
202 202
203 case 0xff: // Broadcast 203 case 0xff: // Broadcast
204 presence.ControllingClient.SendChatMessage(message, type, 204 presence.ControllingClient.SendChatMessage(message, type,
205 fromPos, 205 fromPos,
206 fromName, 206 fromName,
207 fromAgentID); 207 fromAgentID);
208 break; 208 break;
209 } 209 }
210 }); 210 });
211 } 211 }
212 } 212 }
213 } 213 }
214} \ No newline at end of file 214} \ No newline at end of file
diff --git a/OpenSim/Region/Environment/Modules/DynamicTextureModule.cs b/OpenSim/Region/Environment/Modules/DynamicTextureModule.cs
index 5f8824c..d08e552 100644
--- a/OpenSim/Region/Environment/Modules/DynamicTextureModule.cs
+++ b/OpenSim/Region/Environment/Modules/DynamicTextureModule.cs
@@ -1,157 +1,157 @@
1using System; 1using System;
2using System.Collections.Generic; 2using System.Collections.Generic;
3using libsecondlife; 3using libsecondlife;
4using OpenSim.Framework.Types; 4using OpenSim.Framework.Types;
5using OpenSim.Framework.Utilities; 5using OpenSim.Framework.Utilities;
6using OpenSim.Region.Environment.Interfaces; 6using OpenSim.Region.Environment.Interfaces;
7using OpenSim.Region.Environment.Scenes; 7using OpenSim.Region.Environment.Scenes;
8 8
9namespace OpenSim.Region.Environment.Modules 9namespace OpenSim.Region.Environment.Modules
10{ 10{
11 public class DynamicTextureModule : IRegionModule, IDynamicTextureManager 11 public class DynamicTextureModule : IRegionModule, IDynamicTextureManager
12 { 12 {
13 private Dictionary<LLUUID, Scene> RegisteredScenes = new Dictionary<LLUUID, Scene>(); 13 private Dictionary<LLUUID, Scene> RegisteredScenes = new Dictionary<LLUUID, Scene>();
14 14
15 private Dictionary<string, IDynamicTextureRender> RenderPlugins = 15 private Dictionary<string, IDynamicTextureRender> RenderPlugins =
16 new Dictionary<string, IDynamicTextureRender>(); 16 new Dictionary<string, IDynamicTextureRender>();
17 17
18 private Dictionary<LLUUID, DynamicTextureUpdater> Updaters = new Dictionary<LLUUID, DynamicTextureUpdater>(); 18 private Dictionary<LLUUID, DynamicTextureUpdater> Updaters = new Dictionary<LLUUID, DynamicTextureUpdater>();
19 19
20 public void Initialise(Scene scene) 20 public void Initialise(Scene scene)
21 { 21 {
22 if (!RegisteredScenes.ContainsKey(scene.RegionInfo.SimUUID)) 22 if (!RegisteredScenes.ContainsKey(scene.RegionInfo.SimUUID))
23 { 23 {
24 RegisteredScenes.Add(scene.RegionInfo.SimUUID, scene); 24 RegisteredScenes.Add(scene.RegionInfo.SimUUID, scene);
25 scene.RegisterModuleInterface<IDynamicTextureManager>(this); 25 scene.RegisterModuleInterface<IDynamicTextureManager>(this);
26 } 26 }
27 } 27 }
28 28
29 public void PostInitialise() 29 public void PostInitialise()
30 { 30 {
31 } 31 }
32 32
33 public void CloseDown() 33 public void Close()
34 { 34 {
35 } 35 }
36 36
37 public string GetName() 37 public string Name
38 { 38 {
39 return "DynamicTextureModule"; 39 get { return "DynamicTextureModule"; }
40 } 40 }
41 41
42 public bool IsSharedModule() 42 public bool IsSharedModule
43 { 43 {
44 return true; 44 get { return true; }
45 } 45 }
46 46
47 public void RegisterRender(string handleType, IDynamicTextureRender render) 47 public void RegisterRender(string handleType, IDynamicTextureRender render)
48 { 48 {
49 if (!RenderPlugins.ContainsKey(handleType)) 49 if (!RenderPlugins.ContainsKey(handleType))
50 { 50 {
51 RenderPlugins.Add(handleType, render); 51 RenderPlugins.Add(handleType, render);
52 } 52 }
53 } 53 }
54 54
55 public void ReturnData(LLUUID id, byte[] data) 55 public void ReturnData(LLUUID id, byte[] data)
56 { 56 {
57 if (Updaters.ContainsKey(id)) 57 if (Updaters.ContainsKey(id))
58 { 58 {
59 DynamicTextureUpdater updater = Updaters[id]; 59 DynamicTextureUpdater updater = Updaters[id];
60 if (RegisteredScenes.ContainsKey(updater.SimUUID)) 60 if (RegisteredScenes.ContainsKey(updater.SimUUID))
61 { 61 {
62 Scene scene = RegisteredScenes[updater.SimUUID]; 62 Scene scene = RegisteredScenes[updater.SimUUID];
63 updater.DataReceived(data, scene); 63 updater.DataReceived(data, scene);
64 } 64 }
65 } 65 }
66 } 66 }
67 67
68 public LLUUID AddDynamicTextureURL(LLUUID simID, LLUUID primID, string contentType, string url, 68 public LLUUID AddDynamicTextureURL(LLUUID simID, LLUUID primID, string contentType, string url,
69 string extraParams, int updateTimer) 69 string extraParams, int updateTimer)
70 { 70 {
71 Console.WriteLine("dynamic texture being created: " + url + " of type " + contentType); 71 Console.WriteLine("dynamic texture being created: " + url + " of type " + contentType);
72 if (RenderPlugins.ContainsKey(contentType)) 72 if (RenderPlugins.ContainsKey(contentType))
73 { 73 {
74 DynamicTextureUpdater updater = new DynamicTextureUpdater(); 74 DynamicTextureUpdater updater = new DynamicTextureUpdater();
75 updater.SimUUID = simID; 75 updater.SimUUID = simID;
76 updater.PrimID = primID; 76 updater.PrimID = primID;
77 updater.ContentType = contentType; 77 updater.ContentType = contentType;
78 updater.Url = url; 78 updater.Url = url;
79 updater.UpdateTimer = updateTimer; 79 updater.UpdateTimer = updateTimer;
80 updater.UpdaterID = LLUUID.Random(); 80 updater.UpdaterID = LLUUID.Random();
81 updater.Params = extraParams; 81 updater.Params = extraParams;
82 82
83 if (!Updaters.ContainsKey(updater.UpdaterID)) 83 if (!Updaters.ContainsKey(updater.UpdaterID))
84 { 84 {
85 Updaters.Add(updater.UpdaterID, updater); 85 Updaters.Add(updater.UpdaterID, updater);
86 } 86 }
87 87
88 RenderPlugins[contentType].AsyncConvertUrl(updater.UpdaterID, url, extraParams); 88 RenderPlugins[contentType].AsyncConvertUrl(updater.UpdaterID, url, extraParams);
89 return updater.UpdaterID; 89 return updater.UpdaterID;
90 } 90 }
91 return LLUUID.Zero; 91 return LLUUID.Zero;
92 } 92 }
93 93
94 public LLUUID AddDynamicTextureData(LLUUID simID, LLUUID primID, string contentType, string data, 94 public LLUUID AddDynamicTextureData(LLUUID simID, LLUUID primID, string contentType, string data,
95 string extraParams, int updateTimer) 95 string extraParams, int updateTimer)
96 { 96 {
97 if (RenderPlugins.ContainsKey(contentType)) 97 if (RenderPlugins.ContainsKey(contentType))
98 { 98 {
99 DynamicTextureUpdater updater = new DynamicTextureUpdater(); 99 DynamicTextureUpdater updater = new DynamicTextureUpdater();
100 updater.SimUUID = simID; 100 updater.SimUUID = simID;
101 updater.PrimID = primID; 101 updater.PrimID = primID;
102 updater.ContentType = contentType; 102 updater.ContentType = contentType;
103 updater.BodyData = data; 103 updater.BodyData = data;
104 updater.UpdateTimer = updateTimer; 104 updater.UpdateTimer = updateTimer;
105 updater.UpdaterID = LLUUID.Random(); 105 updater.UpdaterID = LLUUID.Random();
106 updater.Params = extraParams; 106 updater.Params = extraParams;
107 107
108 if (!Updaters.ContainsKey(updater.UpdaterID)) 108 if (!Updaters.ContainsKey(updater.UpdaterID))
109 { 109 {
110 Updaters.Add(updater.UpdaterID, updater); 110 Updaters.Add(updater.UpdaterID, updater);
111 } 111 }
112 112
113 RenderPlugins[contentType].AsyncConvertData(updater.UpdaterID, data, extraParams); 113 RenderPlugins[contentType].AsyncConvertData(updater.UpdaterID, data, extraParams);
114 return updater.UpdaterID; 114 return updater.UpdaterID;
115 } 115 }
116 return LLUUID.Zero; 116 return LLUUID.Zero;
117 } 117 }
118 118
119 public class DynamicTextureUpdater 119 public class DynamicTextureUpdater
120 { 120 {
121 public LLUUID SimUUID; 121 public LLUUID SimUUID;
122 public LLUUID UpdaterID; 122 public LLUUID UpdaterID;
123 public string ContentType; 123 public string ContentType;
124 public string Url; 124 public string Url;
125 public string BodyData; 125 public string BodyData;
126 public LLUUID PrimID; 126 public LLUUID PrimID;
127 public int UpdateTimer; 127 public int UpdateTimer;
128 public LLUUID LastAssetID; 128 public LLUUID LastAssetID;
129 public string Params; 129 public string Params;
130 130
131 public DynamicTextureUpdater() 131 public DynamicTextureUpdater()
132 { 132 {
133 LastAssetID = LLUUID.Zero; 133 LastAssetID = LLUUID.Zero;
134 UpdateTimer = 0; 134 UpdateTimer = 0;
135 BodyData = null; 135 BodyData = null;
136 } 136 }
137 137
138 public void DataReceived(byte[] data, Scene scene) 138 public void DataReceived(byte[] data, Scene scene)
139 { 139 {
140 //TODO delete the last asset(data), if it was a dynamic texture 140 //TODO delete the last asset(data), if it was a dynamic texture
141 141
142 AssetBase asset = new AssetBase(); 142 AssetBase asset = new AssetBase();
143 asset.FullID = LLUUID.Random(); 143 asset.FullID = LLUUID.Random();
144 asset.Data = data; 144 asset.Data = data;
145 asset.Name = "DynamicImage" + Util.RandomClass.Next(1, 10000); 145 asset.Name = "DynamicImage" + Util.RandomClass.Next(1, 10000);
146 asset.Type = 0; 146 asset.Type = 0;
147 scene.commsManager.AssetCache.AddAsset(asset); 147 scene.commsManager.AssetCache.AddAsset(asset);
148 148
149 LastAssetID = asset.FullID; 149 LastAssetID = asset.FullID;
150 150
151 SceneObjectPart part = scene.GetSceneObjectPart(PrimID); 151 SceneObjectPart part = scene.GetSceneObjectPart(PrimID);
152 part.Shape.TextureEntry = new LLObject.TextureEntry(asset.FullID).ToBytes(); 152 part.Shape.TextureEntry = new LLObject.TextureEntry(asset.FullID).ToBytes();
153 part.ScheduleFullUpdate(); 153 part.ScheduleFullUpdate();
154 } 154 }
155 } 155 }
156 } 156 }
157} \ No newline at end of file 157} \ No newline at end of file
diff --git a/OpenSim/Region/Environment/Modules/FriendsModule.cs b/OpenSim/Region/Environment/Modules/FriendsModule.cs
index 767b4b0..20b509a 100644
--- a/OpenSim/Region/Environment/Modules/FriendsModule.cs
+++ b/OpenSim/Region/Environment/Modules/FriendsModule.cs
@@ -1,33 +1,33 @@
1using OpenSim.Region.Environment.Interfaces; 1using OpenSim.Region.Environment.Interfaces;
2using OpenSim.Region.Environment.Scenes; 2using OpenSim.Region.Environment.Scenes;
3 3
4namespace OpenSim.Region.Environment.Modules 4namespace OpenSim.Region.Environment.Modules
5{ 5{
6 public class FriendsModule : IRegionModule 6 public class FriendsModule : IRegionModule
7 { 7 {
8 private Scene m_scene; 8 private Scene m_scene;
9 9
10 public void Initialise(Scene scene) 10 public void Initialise(Scene scene)
11 { 11 {
12 m_scene = scene; 12 m_scene = scene;
13 } 13 }
14 14
15 public void PostInitialise() 15 public void PostInitialise()
16 { 16 {
17 } 17 }
18 18
19 public void CloseDown() 19 public void Close()
20 { 20 {
21 } 21 }
22 22
23 public string GetName() 23 public string Name
24 { 24 {
25 return "FriendsModule"; 25 get { return "FriendsModule"; }
26 } 26 }
27 27
28 public bool IsSharedModule() 28 public bool IsSharedModule
29 { 29 {
30 return false; 30 get { return false; }
31 } 31 }
32 } 32 }
33} \ No newline at end of file 33} \ No newline at end of file
diff --git a/OpenSim/Region/Environment/Modules/GroupsModule.cs b/OpenSim/Region/Environment/Modules/GroupsModule.cs
index fa5804e..e489207 100644
--- a/OpenSim/Region/Environment/Modules/GroupsModule.cs
+++ b/OpenSim/Region/Environment/Modules/GroupsModule.cs
@@ -1,33 +1,33 @@
1using OpenSim.Region.Environment.Interfaces; 1using OpenSim.Region.Environment.Interfaces;
2using OpenSim.Region.Environment.Scenes; 2using OpenSim.Region.Environment.Scenes;
3 3
4namespace OpenSim.Region.Environment.Modules 4namespace OpenSim.Region.Environment.Modules
5{ 5{
6 public class GroupsModule : IRegionModule 6 public class GroupsModule : IRegionModule
7 { 7 {
8 private Scene m_scene; 8 private Scene m_scene;
9 9
10 public void Initialise(Scene scene) 10 public void Initialise(Scene scene)
11 { 11 {
12 m_scene = scene; 12 m_scene = scene;
13 } 13 }
14 14
15 public void PostInitialise() 15 public void PostInitialise()
16 { 16 {
17 } 17 }
18 18
19 public void CloseDown() 19 public void Close()
20 { 20 {
21 } 21 }
22 22
23 public string GetName() 23 public string Name
24 { 24 {
25 return "GroupsModule"; 25 get { return "GroupsModule"; }
26 } 26 }
27 27
28 public bool IsSharedModule() 28 public bool IsSharedModule
29 { 29 {
30 return false; 30 get { return false; }
31 } 31 }
32 } 32 }
33} \ No newline at end of file 33} \ No newline at end of file
diff --git a/OpenSim/Region/Environment/Modules/InstantMessageModule.cs b/OpenSim/Region/Environment/Modules/InstantMessageModule.cs
index 44cb3d5..acf7cce 100644
--- a/OpenSim/Region/Environment/Modules/InstantMessageModule.cs
+++ b/OpenSim/Region/Environment/Modules/InstantMessageModule.cs
@@ -1,33 +1,33 @@
1using OpenSim.Region.Environment.Interfaces; 1using OpenSim.Region.Environment.Interfaces;
2using OpenSim.Region.Environment.Scenes; 2using OpenSim.Region.Environment.Scenes;
3 3
4namespace OpenSim.Region.Environment.Modules 4namespace OpenSim.Region.Environment.Modules
5{ 5{
6 public class InstantMessageModule : IRegionModule 6 public class InstantMessageModule : IRegionModule
7 { 7 {
8 private Scene m_scene; 8 private Scene m_scene;
9 9
10 public void Initialise(Scene scene) 10 public void Initialise(Scene scene)
11 { 11 {
12 m_scene = scene; 12 m_scene = scene;
13 } 13 }
14 14
15 public void PostInitialise() 15 public void PostInitialise()
16 { 16 {
17 } 17 }
18 18
19 public void CloseDown() 19 public void Close()
20 { 20 {
21 } 21 }
22 22
23 public string GetName() 23 public string Name
24 { 24 {
25 return "InstantMessageModule"; 25 get { return "InstantMessageModule"; }
26 } 26 }
27 27
28 public bool IsSharedModule() 28 public bool IsSharedModule
29 { 29 {
30 return false; 30 get { return false; }
31 } 31 }
32 } 32 }
33} \ No newline at end of file 33} \ No newline at end of file
diff --git a/OpenSim/Region/Environment/Modules/InventoryModule.cs b/OpenSim/Region/Environment/Modules/InventoryModule.cs
index 527731d..0c6ed69 100644
--- a/OpenSim/Region/Environment/Modules/InventoryModule.cs
+++ b/OpenSim/Region/Environment/Modules/InventoryModule.cs
@@ -1,33 +1,33 @@
1using OpenSim.Region.Environment.Interfaces; 1using OpenSim.Region.Environment.Interfaces;
2using OpenSim.Region.Environment.Scenes; 2using OpenSim.Region.Environment.Scenes;
3 3
4namespace OpenSim.Region.Environment.Modules 4namespace OpenSim.Region.Environment.Modules
5{ 5{
6 public class InventoryModule : IRegionModule 6 public class InventoryModule : IRegionModule
7 { 7 {
8 private Scene m_scene; 8 private Scene m_scene;
9 9
10 public void Initialise(Scene scene) 10 public void Initialise(Scene scene)
11 { 11 {
12 m_scene = scene; 12 m_scene = scene;
13 } 13 }
14 14
15 public void PostInitialise() 15 public void PostInitialise()
16 { 16 {
17 } 17 }
18 18
19 public void CloseDown() 19 public void Close()
20 { 20 {
21 } 21 }
22 22
23 public string GetName() 23 public string Name
24 { 24 {
25 return "InventoryModule"; 25 get { return "InventoryModule"; }
26 } 26 }
27 27
28 public bool IsSharedModule() 28 public bool IsSharedModule
29 { 29 {
30 return false; 30 get { return false; }
31 } 31 }
32 } 32 }
33} \ No newline at end of file 33} \ No newline at end of file
diff --git a/OpenSim/Region/Environment/Modules/TextureDownloadModule.cs b/OpenSim/Region/Environment/Modules/TextureDownloadModule.cs
index 38c7d9b..921dbb1 100644
--- a/OpenSim/Region/Environment/Modules/TextureDownloadModule.cs
+++ b/OpenSim/Region/Environment/Modules/TextureDownloadModule.cs
@@ -1,48 +1,48 @@
1using libsecondlife; 1using libsecondlife;
2using OpenSim.Framework.Interfaces; 2using OpenSim.Framework.Interfaces;
3using OpenSim.Region.Environment.Interfaces; 3using OpenSim.Region.Environment.Interfaces;
4using OpenSim.Region.Environment.Scenes; 4using OpenSim.Region.Environment.Scenes;
5 5
6namespace OpenSim.Region.Environment.Modules 6namespace OpenSim.Region.Environment.Modules
7{ 7{
8 public class TextureDownloadModule : IRegionModule 8 public class TextureDownloadModule : IRegionModule
9 { 9 {
10 private Scene m_scene; 10 private Scene m_scene;
11 11
12 public TextureDownloadModule() 12 public TextureDownloadModule()
13 { 13 {
14 } 14 }
15 15
16 public void Initialise(Scene scene) 16 public void Initialise(Scene scene)
17 { 17 {
18 m_scene = scene; 18 m_scene = scene;
19 m_scene.EventManager.OnNewClient += NewClient; 19 m_scene.EventManager.OnNewClient += NewClient;
20 } 20 }
21 21
22 public void PostInitialise() 22 public void PostInitialise()
23 { 23 {
24 } 24 }
25 25
26 public void CloseDown() 26 public void Close()
27 { 27 {
28 } 28 }
29 29
30 public string GetName() 30 public string Name
31 { 31 {
32 return "TextureDownloadModule"; 32 get { return "TextureDownloadModule"; }
33 } 33 }
34 34
35 public bool IsSharedModule() 35 public bool IsSharedModule
36 { 36 {
37 return false; 37 get { return false; }
38 } 38 }
39 39
40 public void NewClient(IClientAPI client) 40 public void NewClient(IClientAPI client)
41 { 41 {
42 } 42 }
43 43
44 public void TextureAssetCallback(LLUUID texture, byte[] data) 44 public void TextureAssetCallback(LLUUID texture, byte[] data)
45 { 45 {
46 } 46 }
47 } 47 }
48} \ No newline at end of file 48} \ No newline at end of file
diff --git a/OpenSim/Region/Environment/Modules/WorldCommModule.cs b/OpenSim/Region/Environment/Modules/WorldCommModule.cs
index c2ec699..cf0c2ca 100644
--- a/OpenSim/Region/Environment/Modules/WorldCommModule.cs
+++ b/OpenSim/Region/Environment/Modules/WorldCommModule.cs
@@ -71,18 +71,18 @@ namespace OpenSim.Region.Environment.Modules
71 { 71 {
72 } 72 }
73 73
74 public void CloseDown() 74 public void Close()
75 { 75 {
76 } 76 }
77 77
78 public string GetName() 78 public string Name
79 { 79 {
80 return m_name; 80 get { return m_name; }
81 } 81 }
82 82
83 public bool IsSharedModule() 83 public bool IsSharedModule
84 { 84 {
85 return false; 85 get { return false; }
86 } 86 }
87 87
88 public void NewClient(IClientAPI client) 88 public void NewClient(IClientAPI client)
diff --git a/OpenSim/Region/Environment/Modules/XMLRPCModule.cs b/OpenSim/Region/Environment/Modules/XMLRPCModule.cs
index 50ed776..879a1ff 100644
--- a/OpenSim/Region/Environment/Modules/XMLRPCModule.cs
+++ b/OpenSim/Region/Environment/Modules/XMLRPCModule.cs
@@ -85,18 +85,18 @@ namespace OpenSim.Region.Environment.Modules
85 { 85 {
86 } 86 }
87 87
88 public void CloseDown() 88 public void Close()
89 { 89 {
90 } 90 }
91 91
92 public string GetName() 92 public string Name
93 { 93 {
94 return m_name; 94 get { return m_name; }
95 } 95 }
96 96
97 public bool IsSharedModule() 97 public bool IsSharedModule
98 { 98 {
99 return false; 99 get { return false; }
100 } 100 }
101 101
102 /********************************************** 102 /**********************************************
diff --git a/OpenSim/Region/Environment/Modules/XferModule.cs b/OpenSim/Region/Environment/Modules/XferModule.cs
index 9f93c1e..819e894 100644
--- a/OpenSim/Region/Environment/Modules/XferModule.cs
+++ b/OpenSim/Region/Environment/Modules/XferModule.cs
@@ -1,173 +1,173 @@
1using System; 1using System;
2using System.Collections.Generic; 2using System.Collections.Generic;
3using libsecondlife; 3using libsecondlife;
4using OpenSim.Framework.Interfaces; 4using OpenSim.Framework.Interfaces;
5using OpenSim.Region.Environment.Interfaces; 5using OpenSim.Region.Environment.Interfaces;
6using OpenSim.Region.Environment.Scenes; 6using OpenSim.Region.Environment.Scenes;
7 7
8namespace OpenSim.Region.Environment.Modules 8namespace OpenSim.Region.Environment.Modules
9{ 9{
10 public class XferModule : IRegionModule, IXfer 10 public class XferModule : IRegionModule, IXfer
11 { 11 {
12 public Dictionary<string, byte[]> NewFiles = new Dictionary<string, byte[]>(); 12 public Dictionary<string, byte[]> NewFiles = new Dictionary<string, byte[]>();
13 public Dictionary<ulong, XferDownLoad> Transfers = new Dictionary<ulong, XferDownLoad>(); 13 public Dictionary<ulong, XferDownLoad> Transfers = new Dictionary<ulong, XferDownLoad>();
14 14
15 private Scene m_scene; 15 private Scene m_scene;
16 16
17 public XferModule() 17 public XferModule()
18 { 18 {
19 } 19 }
20 20
21 public void Initialise(Scene scene) 21 public void Initialise(Scene scene)
22 { 22 {
23 m_scene = scene; 23 m_scene = scene;
24 m_scene.EventManager.OnNewClient += NewClient; 24 m_scene.EventManager.OnNewClient += NewClient;
25 25
26 m_scene.RegisterModuleInterface<IXfer>(this); 26 m_scene.RegisterModuleInterface<IXfer>(this);
27 } 27 }
28 28
29 public void PostInitialise() 29 public void PostInitialise()
30 { 30 {
31 } 31 }
32 32
33 public void CloseDown() 33 public void Close()
34 { 34 {
35 } 35 }
36 36
37 public string GetName() 37 public string Name
38 { 38 {
39 return "XferModule"; 39 get { return "XferModule"; }
40 } 40 }
41 41
42 public bool IsSharedModule() 42 public bool IsSharedModule
43 { 43 {
44 return false; 44 get { return false; }
45 } 45 }
46 46
47 public void NewClient(IClientAPI client) 47 public void NewClient(IClientAPI client)
48 { 48 {
49 client.OnRequestXfer += RequestXfer; 49 client.OnRequestXfer += RequestXfer;
50 client.OnConfirmXfer += AckPacket; 50 client.OnConfirmXfer += AckPacket;
51 } 51 }
52 52
53 /// <summary> 53 /// <summary>
54 /// 54 ///
55 /// </summary> 55 /// </summary>
56 /// <param name="remoteClient"></param> 56 /// <param name="remoteClient"></param>
57 /// <param name="xferID"></param> 57 /// <param name="xferID"></param>
58 /// <param name="fileName"></param> 58 /// <param name="fileName"></param>
59 public void RequestXfer(IClientAPI remoteClient, ulong xferID, string fileName) 59 public void RequestXfer(IClientAPI remoteClient, ulong xferID, string fileName)
60 { 60 {
61 lock (NewFiles) 61 lock (NewFiles)
62 { 62 {
63 if (NewFiles.ContainsKey(fileName)) 63 if (NewFiles.ContainsKey(fileName))
64 { 64 {
65 if (!Transfers.ContainsKey(xferID)) 65 if (!Transfers.ContainsKey(xferID))
66 { 66 {
67 byte[] fileData = NewFiles[fileName]; 67 byte[] fileData = NewFiles[fileName];
68 XferDownLoad transaction = new XferDownLoad(fileName, fileData, xferID, remoteClient); 68 XferDownLoad transaction = new XferDownLoad(fileName, fileData, xferID, remoteClient);
69 Transfers.Add(xferID, transaction); 69 Transfers.Add(xferID, transaction);
70 NewFiles.Remove(fileName); 70 NewFiles.Remove(fileName);
71 transaction.StartSend(); 71 transaction.StartSend();
72 } 72 }
73 } 73 }
74 } 74 }
75 } 75 }
76 76
77 public void AckPacket(IClientAPI remoteClient, ulong xferID, uint packet) 77 public void AckPacket(IClientAPI remoteClient, ulong xferID, uint packet)
78 { 78 {
79 if (Transfers.ContainsKey(xferID)) 79 if (Transfers.ContainsKey(xferID))
80 { 80 {
81 Transfers[xferID].AckPacket(packet); 81 Transfers[xferID].AckPacket(packet);
82 } 82 }
83 } 83 }
84 84
85 public bool AddNewFile(string fileName, byte[] data) 85 public bool AddNewFile(string fileName, byte[] data)
86 { 86 {
87 lock (NewFiles) 87 lock (NewFiles)
88 { 88 {
89 if (NewFiles.ContainsKey(fileName)) 89 if (NewFiles.ContainsKey(fileName))
90 { 90 {
91 NewFiles[fileName] = data; 91 NewFiles[fileName] = data;
92 } 92 }
93 else 93 else
94 { 94 {
95 NewFiles.Add(fileName, data); 95 NewFiles.Add(fileName, data);
96 } 96 }
97 } 97 }
98 return true; 98 return true;
99 } 99 }
100 100
101 101
102 public class XferDownLoad 102 public class XferDownLoad
103 { 103 {
104 public byte[] Data = new byte[0]; 104 public byte[] Data = new byte[0];
105 public string FileName = ""; 105 public string FileName = "";
106 public ulong XferID = 0; 106 public ulong XferID = 0;
107 public int DataPointer = 0; 107 public int DataPointer = 0;
108 public uint Packet = 0; 108 public uint Packet = 0;
109 public IClientAPI Client; 109 public IClientAPI Client;
110 public uint Serial = 1; 110 public uint Serial = 1;
111 private bool complete = false; 111 private bool complete = false;
112 112
113 public XferDownLoad(string fileName, byte[] data, ulong xferID, IClientAPI client) 113 public XferDownLoad(string fileName, byte[] data, ulong xferID, IClientAPI client)
114 { 114 {
115 FileName = fileName; 115 FileName = fileName;
116 Data = data; 116 Data = data;
117 XferID = xferID; 117 XferID = xferID;
118 Client = client; 118 Client = client;
119 } 119 }
120 120
121 public XferDownLoad() 121 public XferDownLoad()
122 { 122 {
123 } 123 }
124 124
125 public void StartSend() 125 public void StartSend()
126 { 126 {
127 if (Data.Length < 1000) 127 if (Data.Length < 1000)
128 { 128 {
129 // for now (testing ) we only support files under 1000 bytes 129 // for now (testing ) we only support files under 1000 bytes
130 byte[] transferData = new byte[Data.Length + 4]; 130 byte[] transferData = new byte[Data.Length + 4];
131 Array.Copy(Helpers.IntToBytes(Data.Length), 0, transferData, 0, 4); 131 Array.Copy(Helpers.IntToBytes(Data.Length), 0, transferData, 0, 4);
132 Array.Copy(Data, 0, transferData, 4, Data.Length); 132 Array.Copy(Data, 0, transferData, 4, Data.Length);
133 Client.SendXferPacket(XferID, 0 + 0x80000000, transferData); 133 Client.SendXferPacket(XferID, 0 + 0x80000000, transferData);
134 complete = true; 134 complete = true;
135 } 135 }
136 else 136 else
137 { 137 {
138 byte[] transferData = new byte[1000 + 4]; 138 byte[] transferData = new byte[1000 + 4];
139 Array.Copy(Helpers.IntToBytes(Data.Length), 0, transferData, 0, 4); 139 Array.Copy(Helpers.IntToBytes(Data.Length), 0, transferData, 0, 4);
140 Array.Copy(Data, 0, transferData, 4, 1000); 140 Array.Copy(Data, 0, transferData, 4, 1000);
141 Client.SendXferPacket(XferID, 0, transferData); 141 Client.SendXferPacket(XferID, 0, transferData);
142 Packet++; 142 Packet++;
143 DataPointer = 1000; 143 DataPointer = 1000;
144 } 144 }
145 } 145 }
146 146
147 public void AckPacket(uint packet) 147 public void AckPacket(uint packet)
148 { 148 {
149 if (!complete) 149 if (!complete)
150 { 150 {
151 if ((Data.Length - DataPointer) > 1000) 151 if ((Data.Length - DataPointer) > 1000)
152 { 152 {
153 byte[] transferData = new byte[1000]; 153 byte[] transferData = new byte[1000];
154 Array.Copy(Data, DataPointer, transferData, 0, 1000); 154 Array.Copy(Data, DataPointer, transferData, 0, 1000);
155 Client.SendXferPacket(XferID, Packet, transferData); 155 Client.SendXferPacket(XferID, Packet, transferData);
156 Packet++; 156 Packet++;
157 DataPointer += 1000; 157 DataPointer += 1000;
158 } 158 }
159 else 159 else
160 { 160 {
161 byte[] transferData = new byte[Data.Length - DataPointer]; 161 byte[] transferData = new byte[Data.Length - DataPointer];
162 Array.Copy(Data, DataPointer, transferData, 0, Data.Length - DataPointer); 162 Array.Copy(Data, DataPointer, transferData, 0, Data.Length - DataPointer);
163 uint endPacket = Packet |= (uint) 0x80000000; 163 uint endPacket = Packet |= (uint) 0x80000000;
164 Client.SendXferPacket(XferID, endPacket, transferData); 164 Client.SendXferPacket(XferID, endPacket, transferData);
165 Packet++; 165 Packet++;
166 DataPointer += (Data.Length - DataPointer); 166 DataPointer += (Data.Length - DataPointer);
167 complete = true; 167 complete = true;
168 } 168 }
169 } 169 }
170 } 170 }
171 } 171 }
172 } 172 }
173} \ No newline at end of file 173} \ No newline at end of file
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs
index 288cbee..384ec10 100644
--- a/OpenSim/Region/Environment/Scenes/Scene.cs
+++ b/OpenSim/Region/Environment/Scenes/Scene.cs
@@ -1337,9 +1337,9 @@ namespace OpenSim.Region.Environment.Scenes
1337 MainLog.Instance.Error("The currently loaded modules in " + RegionInfo.RegionName + " are:"); 1337 MainLog.Instance.Error("The currently loaded modules in " + RegionInfo.RegionName + " are:");
1338 foreach (IRegionModule module in Modules.Values) 1338 foreach (IRegionModule module in Modules.Values)
1339 { 1339 {
1340 if (!module.IsSharedModule()) 1340 if (!module.IsSharedModule)
1341 { 1341 {
1342 MainLog.Instance.Error("Region Module: " + module.GetName()); 1342 MainLog.Instance.Error("Region Module: " + module.Name);
1343 } 1343 }
1344 } 1344 }
1345 break; 1345 break;
diff --git a/OpenSim/Region/Examples/SimpleApp/Program.cs b/OpenSim/Region/Examples/SimpleApp/Program.cs
index e05ce87..b8517f7 100644
--- a/OpenSim/Region/Examples/SimpleApp/Program.cs
+++ b/OpenSim/Region/Examples/SimpleApp/Program.cs
@@ -62,13 +62,15 @@ namespace SimpleApp
62 62
63 UDPServer udpServer; 63 UDPServer udpServer;
64 64
65 m_moduleLoader = new ModuleLoader(); 65 m_moduleLoader = new ModuleLoader( m_log );
66 m_moduleLoader.LoadDefaultSharedModules(""); 66 m_moduleLoader.LoadDefaultSharedModules("");
67 67
68 Scene scene = SetupScene(regionInfo, out udpServer); 68 Scene scene = SetupScene(regionInfo, out udpServer);
69 69
70 m_moduleLoader.InitialiseSharedModules(scene); 70 m_moduleLoader.InitialiseSharedModules(scene);
71 m_moduleLoader.CreateDefaultModules(scene, ""); 71
72 // m_moduleLoader.CreateDefaultModules(scene, "");
73
72 scene.SetModuleInterfaces(); 74 scene.SetModuleInterfaces();
73 75
74 scene.StartTimer(); 76 scene.StartTimer();
@@ -131,7 +133,7 @@ namespace SimpleApp
131 133
132 protected override Scene CreateScene(RegionInfo regionInfo, StorageManager storageManager, AgentCircuitManager circuitManager) 134 protected override Scene CreateScene(RegionInfo regionInfo, StorageManager storageManager, AgentCircuitManager circuitManager)
133 { 135 {
134 return new MyWorld(regionInfo, circuitManager, m_commsManager, m_assetCache, storageManager, m_httpServer, new ModuleLoader()); 136 return new MyWorld(regionInfo, circuitManager, m_commsManager, m_assetCache, storageManager, m_httpServer, new ModuleLoader( m_log ));
135 } 137 }
136 138
137 protected override StorageManager CreateStorageManager(RegionInfo regionInfo) 139 protected override StorageManager CreateStorageManager(RegionInfo regionInfo)
diff --git a/OpenSim/Region/ExtensionsScriptModule/ScriptManager.cs b/OpenSim/Region/ExtensionsScriptModule/ScriptManager.cs
index 61e9114..a818155 100644
--- a/OpenSim/Region/ExtensionsScriptModule/ScriptManager.cs
+++ b/OpenSim/Region/ExtensionsScriptModule/ScriptManager.cs
@@ -1,148 +1,148 @@
1/* 1/*
2* Copyright (c) Contributors, http://opensimulator.org/ 2* Copyright (c) Contributors, http://opensimulator.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders. 3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4* 4*
5* Redistribution and use in source and binary forms, with or without 5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met: 6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright 7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer. 8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright 9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the 10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution. 11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the 12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products 13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission. 14* derived from this software without specific prior written permission.
15* 15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY 16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY 19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 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 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 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 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. 25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26* 26*
27*/ 27*/
28using System.Collections.Generic; 28using System.Collections.Generic;
29using OpenSim.Framework.Console; 29using OpenSim.Framework.Console;
30using OpenSim.Region.Environment.Interfaces; 30using OpenSim.Region.Environment.Interfaces;
31using OpenSim.Region.Environment.Scenes; 31using OpenSim.Region.Environment.Scenes;
32using OpenSim.Region.ExtensionsScriptModule.CSharp; 32using OpenSim.Region.ExtensionsScriptModule.CSharp;
33using OpenSim.Region.ExtensionsScriptModule.JScript; 33using OpenSim.Region.ExtensionsScriptModule.JScript;
34using OpenSim.Region.ExtensionsScriptModule.JVMEngine; 34using OpenSim.Region.ExtensionsScriptModule.JVMEngine;
35 35
36namespace OpenSim.Region.ExtensionsScriptModule 36namespace OpenSim.Region.ExtensionsScriptModule
37{ 37{
38 public class ScriptManager : IRegionModule, IExtensionScriptModule 38 public class ScriptManager : IRegionModule, IExtensionScriptModule
39 { 39 {
40 readonly List<IScript> scripts = new List<IScript>(); 40 readonly List<IScript> scripts = new List<IScript>();
41 Scene m_scene; 41 Scene m_scene;
42 readonly Dictionary<string, IScriptCompiler> compilers = new Dictionary<string, IScriptCompiler>(); 42 readonly Dictionary<string, IScriptCompiler> compilers = new Dictionary<string, IScriptCompiler>();
43 43
44 private void LoadFromCompiler(Dictionary<string, IScript> compiledscripts) 44 private void LoadFromCompiler(Dictionary<string, IScript> compiledscripts)
45 { 45 {
46 foreach (KeyValuePair<string, IScript> script in compiledscripts) 46 foreach (KeyValuePair<string, IScript> script in compiledscripts)
47 { 47 {
48 ScriptInfo scriptInfo = new ScriptInfo(m_scene); // Since each script could potentially corrupt their access with a stray assignment, making a new one for each script. 48 ScriptInfo scriptInfo = new ScriptInfo(m_scene); // Since each script could potentially corrupt their access with a stray assignment, making a new one for each script.
49 MainLog.Instance.Verbose("Loading " + script.Key); 49 MainLog.Instance.Verbose("Loading " + script.Key);
50 script.Value.Initialise(scriptInfo); 50 script.Value.Initialise(scriptInfo);
51 scripts.Add(script.Value); 51 scripts.Add(script.Value);
52 } 52 }
53 53
54 MainLog.Instance.Verbose(string.Format("Finished loading {0} script(s)", compiledscripts.Count)); 54 MainLog.Instance.Verbose(string.Format("Finished loading {0} script(s)", compiledscripts.Count));
55 } 55 }
56 56
57 public ScriptManager() 57 public ScriptManager()
58 { 58 {
59 // Default Engines 59 // Default Engines
60 CSharpScriptEngine csharpCompiler = new CSharpScriptEngine(); 60 CSharpScriptEngine csharpCompiler = new CSharpScriptEngine();
61 compilers.Add(csharpCompiler.FileExt(), csharpCompiler); 61 compilers.Add(csharpCompiler.FileExt(), csharpCompiler);
62 62
63 JScriptEngine jscriptCompiler = new JScriptEngine(); 63 JScriptEngine jscriptCompiler = new JScriptEngine();
64 compilers.Add(jscriptCompiler.FileExt(), jscriptCompiler); 64 compilers.Add(jscriptCompiler.FileExt(), jscriptCompiler);
65 65
66 JavaEngine javaCompiler = new JavaEngine(); 66 JavaEngine javaCompiler = new JavaEngine();
67 compilers.Add(javaCompiler.FileExt(), javaCompiler); 67 compilers.Add(javaCompiler.FileExt(), javaCompiler);
68 } 68 }
69 69
70 public void Initialise(Scene scene) 70 public void Initialise(Scene scene)
71 { 71 {
72 System.Console.WriteLine("Initialising Extensions Scripting Module"); 72 System.Console.WriteLine("Initialising Extensions Scripting Module");
73 m_scene = scene; 73 m_scene = scene;
74 74
75 m_scene.RegisterModuleInterface<IExtensionScriptModule>(this); 75 m_scene.RegisterModuleInterface<IExtensionScriptModule>(this);
76 } 76 }
77 77
78 public void PostInitialise() 78 public void PostInitialise()
79 { 79 {
80 80
81 } 81 }
82 82
83 public void CloseDown() 83 public void Close()
84 { 84 {
85 85
86 } 86 }
87 87
88 public string GetName() 88 public string Name
89 { 89 {
90 return "ExtensionsScriptingModule"; 90 get { return "ExtensionsScriptingModule"; }
91 } 91 }
92 92
93 public bool IsSharedModule() 93 public bool IsSharedModule
94 { 94{
95 return false; 95 get { return false; }
96 } 96 }
97 97
98 public bool Compile(string filename) 98 public bool Compile(string filename)
99 { 99 {
100 foreach (KeyValuePair<string, IScriptCompiler> compiler in compilers) 100 foreach (KeyValuePair<string, IScriptCompiler> compiler in compilers)
101 { 101 {
102 if (filename.EndsWith(compiler.Key)) 102 if (filename.EndsWith(compiler.Key))
103 { 103 {
104 LoadFromCompiler(compiler.Value.compile(filename)); 104 LoadFromCompiler(compiler.Value.compile(filename));
105 break; 105 break;
106 } 106 }
107 } 107 }
108 108
109 return true; 109 return true;
110 } 110 }
111 111
112 public void RunScriptCmd(string[] args) 112 public void RunScriptCmd(string[] args)
113 { 113 {
114 switch (args[0]) 114 switch (args[0])
115 { 115 {
116 case "load": 116 case "load":
117 Compile(args[1]); 117 Compile(args[1]);
118 break; 118 break;
119 119
120 default: 120 default:
121 MainLog.Instance.Error("Unknown script command"); 121 MainLog.Instance.Error("Unknown script command");
122 break; 122 break;
123 } 123 }
124 } 124 }
125 125
126 public bool AddPreCompiledScript(IScript script) 126 public bool AddPreCompiledScript(IScript script)
127 { 127 {
128 MainLog.Instance.Verbose("Loading script " + script.Name); 128 MainLog.Instance.Verbose("Loading script " + script.Name);
129 ScriptInfo scriptInfo = new ScriptInfo(m_scene); // Since each script could potentially corrupt their access with a stray assignment, making a new one for each script. 129 ScriptInfo scriptInfo = new ScriptInfo(m_scene); // Since each script could potentially corrupt their access with a stray assignment, making a new one for each script.
130 script.Initialise(scriptInfo); 130 script.Initialise(scriptInfo);
131 scripts.Add(script); 131 scripts.Add(script);
132 132
133 return true; 133 return true;
134 } 134 }
135 } 135 }
136 136
137 public interface IExtensionScriptModule 137 public interface IExtensionScriptModule
138 { 138 {
139 bool Compile(string filename); 139 bool Compile(string filename);
140 bool AddPreCompiledScript(IScript script); 140 bool AddPreCompiledScript(IScript script);
141 } 141 }
142 142
143 interface IScriptCompiler 143 interface IScriptCompiler
144 { 144 {
145 Dictionary<string, IScript> compile(string filename); 145 Dictionary<string, IScript> compile(string filename);
146 string FileExt(); 146 string FileExt();
147 } 147 }
148} 148}
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptEngine.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptEngine.cs
index c57e56a..d89a8ad 100644
--- a/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptEngine.cs
+++ b/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptEngine.cs
@@ -1,132 +1,132 @@
1/* 1/*
2* Copyright (c) Contributors, http://opensimulator.org/ 2* Copyright (c) Contributors, http://opensimulator.org/
3* See CONTRIBUTORS.TXT for a full list of copyright holders. 3* See CONTRIBUTORS.TXT for a full list of copyright holders.
4* 4*
5* Redistribution and use in source and binary forms, with or without 5* Redistribution and use in source and binary forms, with or without
6* modification, are permitted provided that the following conditions are met: 6* modification, are permitted provided that the following conditions are met:
7* * Redistributions of source code must retain the above copyright 7* * Redistributions of source code must retain the above copyright
8* notice, this list of conditions and the following disclaimer. 8* notice, this list of conditions and the following disclaimer.
9* * Redistributions in binary form must reproduce the above copyright 9* * Redistributions in binary form must reproduce the above copyright
10* notice, this list of conditions and the following disclaimer in the 10* notice, this list of conditions and the following disclaimer in the
11* documentation and/or other materials provided with the distribution. 11* documentation and/or other materials provided with the distribution.
12* * Neither the name of the OpenSim Project nor the 12* * Neither the name of the OpenSim Project nor the
13* names of its contributors may be used to endorse or promote products 13* names of its contributors may be used to endorse or promote products
14* derived from this software without specific prior written permission. 14* derived from this software without specific prior written permission.
15* 15*
16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY 16* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS AND ANY
17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY 19* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 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 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 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 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. 25* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26* 26*
27*/ 27*/
28/* Original code: Tedd Hansen */ 28/* Original code: Tedd Hansen */
29using System; 29using System;
30using System.Collections.Generic; 30using System.Collections.Generic;
31using System.Text; 31using System.Text;
32using OpenSim.Framework.Console; 32using OpenSim.Framework.Console;
33using OpenSim.Region.Environment.Scenes; 33using OpenSim.Region.Environment.Scenes;
34using OpenSim.Region.Environment.Scenes.Scripting; 34using OpenSim.Region.Environment.Scenes.Scripting;
35using OpenSim.Region.Environment.Interfaces; 35using OpenSim.Region.Environment.Interfaces;
36using libsecondlife; 36using libsecondlife;
37 37
38namespace OpenSim.Region.ScriptEngine.DotNetEngine 38namespace OpenSim.Region.ScriptEngine.DotNetEngine
39{ 39{
40 /// <summary> 40 /// <summary>
41 /// This is the root object for ScriptEngine 41 /// This is the root object for ScriptEngine
42 /// </summary> 42 /// </summary>
43 [Serializable] 43 [Serializable]
44 public class ScriptEngine :IRegionModule 44 public class ScriptEngine :IRegionModule
45 { 45 {
46 46
47 internal OpenSim.Region.Environment.Scenes.Scene World; 47 internal OpenSim.Region.Environment.Scenes.Scene World;
48 internal EventManager m_EventManager; // Handles and queues incoming events from OpenSim 48 internal EventManager m_EventManager; // Handles and queues incoming events from OpenSim
49 internal EventQueueManager m_EventQueueManager; // Executes events 49 internal EventQueueManager m_EventQueueManager; // Executes events
50 internal ScriptManager m_ScriptManager; // Load, unload and execute scripts 50 internal ScriptManager m_ScriptManager; // Load, unload and execute scripts
51 internal AppDomainManager m_AppDomainManager; 51 internal AppDomainManager m_AppDomainManager;
52 internal LSLLongCmdHandler m_LSLLongCmdHandler; 52 internal LSLLongCmdHandler m_LSLLongCmdHandler;
53 53
54 private OpenSim.Framework.Console.LogBase m_log; 54 private OpenSim.Framework.Console.LogBase m_log;
55 55
56 public ScriptEngine() 56 public ScriptEngine()
57 { 57 {
58 //Common.SendToDebug("ScriptEngine Object Initialized"); 58 //Common.SendToDebug("ScriptEngine Object Initialized");
59 Common.mySE = this; 59 Common.mySE = this;
60 } 60 }
61 61
62 public LogBase Log 62 public LogBase Log
63 { 63 {
64 get { return m_log; } 64 get { return m_log; }
65 } 65 }
66 66
67 public void InitializeEngine(OpenSim.Region.Environment.Scenes.Scene Sceneworld, OpenSim.Framework.Console.LogBase logger) 67 public void InitializeEngine(OpenSim.Region.Environment.Scenes.Scene Sceneworld, OpenSim.Framework.Console.LogBase logger)
68 { 68 {
69 69
70 World = Sceneworld; 70 World = Sceneworld;
71 m_log = logger; 71 m_log = logger;
72 72
73 Log.Verbose("ScriptEngine", "DotNet & LSL ScriptEngine initializing"); 73 Log.Verbose("ScriptEngine", "DotNet & LSL ScriptEngine initializing");
74 74
75 //m_logger.Status("ScriptEngine", "InitializeEngine"); 75 //m_logger.Status("ScriptEngine", "InitializeEngine");
76 76
77 // Create all objects we'll be using 77 // Create all objects we'll be using
78 m_EventQueueManager = new EventQueueManager(this); 78 m_EventQueueManager = new EventQueueManager(this);
79 m_EventManager = new EventManager(this); 79 m_EventManager = new EventManager(this);
80 m_ScriptManager = new ScriptManager(this); 80 m_ScriptManager = new ScriptManager(this);
81 m_AppDomainManager = new AppDomainManager(); 81 m_AppDomainManager = new AppDomainManager();
82 m_LSLLongCmdHandler = new LSLLongCmdHandler(this); 82 m_LSLLongCmdHandler = new LSLLongCmdHandler(this);
83 83
84 // Should we iterate the region for scripts that needs starting? 84 // Should we iterate the region for scripts that needs starting?
85 // Or can we assume we are loaded before anything else so we can use proper events? 85 // Or can we assume we are loaded before anything else so we can use proper events?
86 86
87 87
88 } 88 }
89 89
90 public void Shutdown() 90 public void Shutdown()
91 { 91 {
92 // We are shutting down 92 // We are shutting down
93 } 93 }
94 94
95 //// !!!FOR DEBUGGING ONLY!!! (for executing script directly from test app) 95 //// !!!FOR DEBUGGING ONLY!!! (for executing script directly from test app)
96 //[Obsolete("!!!FOR DEBUGGING ONLY!!!")] 96 //[Obsolete("!!!FOR DEBUGGING ONLY!!!")]
97 //public void StartScript(string ScriptID, IScriptHost ObjectID) 97 //public void StartScript(string ScriptID, IScriptHost ObjectID)
98 //{ 98 //{
99 // this.myEventManager.TEMP_OBJECT_ID = ObjectID; 99 // this.myEventManager.TEMP_OBJECT_ID = ObjectID;
100 // Log.Status("ScriptEngine", "DEBUG FUNCTION: StartScript: " + ScriptID); 100 // Log.Status("ScriptEngine", "DEBUG FUNCTION: StartScript: " + ScriptID);
101 // myScriptManager.StartScript(ScriptID, ObjectID); 101 // myScriptManager.StartScript(ScriptID, ObjectID);
102 //} 102 //}
103 103
104 #region IRegionModule 104 #region IRegionModule
105 105
106 public void Initialise(Scene scene) 106 public void Initialise(Scene scene)
107 { 107 {
108 this.InitializeEngine(scene, MainLog.Instance); 108 this.InitializeEngine(scene, MainLog.Instance);
109 } 109 }
110 110
111 public void PostInitialise() 111 public void PostInitialise()
112 { 112 {
113 113
114 } 114 }
115 115
116 public void CloseDown() 116 public void Close()
117 { 117 {
118 } 118 }
119 119
120 public string GetName() 120 public string Name
121 { 121 {
122 return "LSLScriptingModule"; 122 get { return "LSLScriptingModule"; }
123 } 123 }
124 124
125 public bool IsSharedModule() 125 public bool IsSharedModule
126 { 126 {
127 return false; 127 get { return false; }
128 } 128 }
129 129
130 #endregion 130 #endregion
131 } 131 }
132} 132}