aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Environment
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Environment')
-rw-r--r--OpenSim/Region/Environment/Interfaces/IDynamicTextureManager.cs54
-rw-r--r--OpenSim/Region/Environment/Interfaces/IHttpRequests.cs24
-rw-r--r--OpenSim/Region/Environment/Interfaces/IRegionModule.cs30
-rw-r--r--OpenSim/Region/Environment/Interfaces/ISimChat.cs24
-rw-r--r--OpenSim/Region/Environment/Interfaces/ITerrain.cs92
-rw-r--r--OpenSim/Region/Environment/Interfaces/IXfer.cs22
-rw-r--r--OpenSim/Region/Environment/ModuleLoader.cs320
-rw-r--r--OpenSim/Region/Environment/Modules/AssetDownloadModule.cs100
-rw-r--r--OpenSim/Region/Environment/Modules/AvatarProfilesModule.cs142
-rw-r--r--OpenSim/Region/Environment/Modules/ChatModule.cs432
-rw-r--r--OpenSim/Region/Environment/Modules/DynamicTextureModule.cs318
-rw-r--r--OpenSim/Region/Environment/Modules/EmailModule.cs20
-rw-r--r--OpenSim/Region/Environment/Modules/FriendsModule.cs80
-rw-r--r--OpenSim/Region/Environment/Modules/GroupsModule.cs80
-rw-r--r--OpenSim/Region/Environment/Modules/InstantMessageModule.cs80
-rw-r--r--OpenSim/Region/Environment/Modules/InventoryModule.cs80
-rw-r--r--OpenSim/Region/Environment/Modules/ScriptsHttpRequests.cs20
-rw-r--r--OpenSim/Region/Environment/Modules/TeleportModule.cs20
-rw-r--r--OpenSim/Region/Environment/Modules/TextureDownloadModule.cs108
-rw-r--r--OpenSim/Region/Environment/Modules/XferModule.cs360
-rw-r--r--OpenSim/Region/Environment/PermissionManager.cs610
-rw-r--r--OpenSim/Region/Environment/Scenes/Scene.Inventory.cs854
-rw-r--r--OpenSim/Region/Environment/Scenes/SceneManager.cs474
-rw-r--r--OpenSim/Region/Environment/Scenes/Scripting/IScriptHost.cs40
-rw-r--r--OpenSim/Region/Environment/Scenes/Scripting/NullScriptHost.cs112
-rw-r--r--OpenSim/Region/Environment/Scenes/Scripting/ScriptEngineInterface.cs86
-rw-r--r--OpenSim/Region/Environment/Scenes/Scripting/ScriptEngineLoader.cs248
-rw-r--r--OpenSim/Region/Environment/Types/BasicQuadTreeNode.cs334
-rw-r--r--OpenSim/Region/Environment/Types/UpdateQueue.cs108
29 files changed, 2636 insertions, 2636 deletions
diff --git a/OpenSim/Region/Environment/Interfaces/IDynamicTextureManager.cs b/OpenSim/Region/Environment/Interfaces/IDynamicTextureManager.cs
index 8fdfa8f..727b386 100644
--- a/OpenSim/Region/Environment/Interfaces/IDynamicTextureManager.cs
+++ b/OpenSim/Region/Environment/Interfaces/IDynamicTextureManager.cs
@@ -1,27 +1,27 @@
1using System; 1using System;
2using System.Collections.Generic; 2using System.Collections.Generic;
3using System.Text; 3using System.Text;
4using System.IO; 4using System.IO;
5using libsecondlife; 5using libsecondlife;
6 6
7namespace OpenSim.Region.Environment.Interfaces 7namespace OpenSim.Region.Environment.Interfaces
8{ 8{
9 public interface IDynamicTextureManager 9 public interface IDynamicTextureManager
10 { 10 {
11 void RegisterRender(string handleType, IDynamicTextureRender render); 11 void RegisterRender(string handleType, IDynamicTextureRender render);
12 void ReturnData(LLUUID id, byte[] data); 12 void ReturnData(LLUUID id, byte[] data);
13 LLUUID AddDynamicTextureURL(LLUUID simID, LLUUID primID, string contentType, string url, string extraParams, int updateTimer); 13 LLUUID AddDynamicTextureURL(LLUUID simID, LLUUID primID, string contentType, string url, string extraParams, int updateTimer);
14 LLUUID AddDynamicTextureData(LLUUID simID, LLUUID primID, string contentType, string data, string extraParams, int updateTimer); 14 LLUUID AddDynamicTextureData(LLUUID simID, LLUUID primID, string contentType, string data, string extraParams, int updateTimer);
15 } 15 }
16 16
17 public interface IDynamicTextureRender 17 public interface IDynamicTextureRender
18 { 18 {
19 string GetName(); 19 string GetName();
20 string GetContentType(); 20 string GetContentType();
21 bool SupportsAsynchronous(); 21 bool SupportsAsynchronous();
22 byte[] ConvertUrl(string url, string extraParams); 22 byte[] ConvertUrl(string url, string extraParams);
23 byte[] ConvertStream(Stream data, string extraParams); 23 byte[] ConvertStream(Stream data, string extraParams);
24 bool AsyncConvertUrl(LLUUID id, string url, string extraParams); 24 bool AsyncConvertUrl(LLUUID id, string url, string extraParams);
25 bool AsyncConvertData(LLUUID id, string bodyData, string extraParams); 25 bool AsyncConvertData(LLUUID id, string bodyData, string extraParams);
26 } 26 }
27} 27}
diff --git a/OpenSim/Region/Environment/Interfaces/IHttpRequests.cs b/OpenSim/Region/Environment/Interfaces/IHttpRequests.cs
index 2294631..e974e25 100644
--- a/OpenSim/Region/Environment/Interfaces/IHttpRequests.cs
+++ b/OpenSim/Region/Environment/Interfaces/IHttpRequests.cs
@@ -1,12 +1,12 @@
1using System; 1using System;
2using System.Collections.Generic; 2using System.Collections.Generic;
3using System.Text; 3using System.Text;
4using libsecondlife; 4using libsecondlife;
5 5
6namespace OpenSim.Region.Environment.Interfaces 6namespace OpenSim.Region.Environment.Interfaces
7{ 7{
8 public interface IHttpRequests 8 public interface IHttpRequests
9 { 9 {
10 LLUUID MakeHttpRequest(string url, string type, string body); 10 LLUUID MakeHttpRequest(string url, string type, string body);
11 } 11 }
12} 12}
diff --git a/OpenSim/Region/Environment/Interfaces/IRegionModule.cs b/OpenSim/Region/Environment/Interfaces/IRegionModule.cs
index 11989fe..47f3d92 100644
--- a/OpenSim/Region/Environment/Interfaces/IRegionModule.cs
+++ b/OpenSim/Region/Environment/Interfaces/IRegionModule.cs
@@ -1,15 +1,15 @@
1using System; 1using System;
2using System.Collections.Generic; 2using System.Collections.Generic;
3using System.Text; 3using System.Text;
4 4
5namespace OpenSim.Region.Environment.Interfaces 5namespace OpenSim.Region.Environment.Interfaces
6{ 6{
7 public interface IRegionModule 7 public interface IRegionModule
8 { 8 {
9 void Initialise(Scenes.Scene scene); 9 void Initialise(Scenes.Scene scene);
10 void PostInitialise(); 10 void PostInitialise();
11 void CloseDown(); 11 void CloseDown();
12 string GetName(); 12 string GetName();
13 bool IsSharedModule(); 13 bool IsSharedModule();
14 } 14 }
15} 15}
diff --git a/OpenSim/Region/Environment/Interfaces/ISimChat.cs b/OpenSim/Region/Environment/Interfaces/ISimChat.cs
index 73ef476..f0adabc 100644
--- a/OpenSim/Region/Environment/Interfaces/ISimChat.cs
+++ b/OpenSim/Region/Environment/Interfaces/ISimChat.cs
@@ -1,12 +1,12 @@
1using System; 1using System;
2using System.Collections.Generic; 2using System.Collections.Generic;
3using System.Text; 3using System.Text;
4using libsecondlife; 4using libsecondlife;
5 5
6namespace OpenSim.Region.Environment.Interfaces 6namespace OpenSim.Region.Environment.Interfaces
7{ 7{
8 public interface ISimChat 8 public interface ISimChat
9 { 9 {
10 void SimChat(byte[] message, byte type, int channel, LLVector3 fromPos, string fromName, LLUUID fromAgentID); 10 void SimChat(byte[] message, byte type, int channel, LLVector3 fromPos, string fromName, LLUUID fromAgentID);
11 } 11 }
12} 12}
diff --git a/OpenSim/Region/Environment/Interfaces/ITerrain.cs b/OpenSim/Region/Environment/Interfaces/ITerrain.cs
index a07168e..576c5b4 100644
--- a/OpenSim/Region/Environment/Interfaces/ITerrain.cs
+++ b/OpenSim/Region/Environment/Interfaces/ITerrain.cs
@@ -1,46 +1,46 @@
1using System; 1using System;
2using System.Collections.Generic; 2using System.Collections.Generic;
3using System.Text; 3using System.Text;
4using OpenSim.Framework.Interfaces; 4using OpenSim.Framework.Interfaces;
5 5
6namespace OpenSim.Region.Environment.Interfaces 6namespace OpenSim.Region.Environment.Interfaces
7{ 7{
8 public interface ITerrain 8 public interface ITerrain
9 { 9 {
10 bool Tainted(); 10 bool Tainted();
11 bool Tainted(int x, int y); 11 bool Tainted(int x, int y);
12 void ResetTaint(); 12 void ResetTaint();
13 void ModifyTerrain(float height, float seconds, byte brushsize, byte action, float north, float west, IClientAPI remoteUser); 13 void ModifyTerrain(float height, float seconds, byte brushsize, byte action, float north, float west, IClientAPI remoteUser);
14 void CheckHeightValues(); 14 void CheckHeightValues();
15 float[] GetHeights1D(); 15 float[] GetHeights1D();
16 float[,] GetHeights2D(); 16 float[,] GetHeights2D();
17 double[,] GetHeights2DD(); 17 double[,] GetHeights2DD();
18 void GetHeights1D(float[] heights); 18 void GetHeights1D(float[] heights);
19 void SetHeights2D(float[,] heights); 19 void SetHeights2D(float[,] heights);
20 void SetHeights2D(double[,] heights); 20 void SetHeights2D(double[,] heights);
21 void SwapRevertMaps(); 21 void SwapRevertMaps();
22 void SaveRevertMap(); 22 void SaveRevertMap();
23 bool RunTerrainCmd(string[] args, ref string resultText, string simName); 23 bool RunTerrainCmd(string[] args, ref string resultText, string simName);
24 void SetRange(float min, float max); 24 void SetRange(float min, float max);
25 void LoadFromFileF64(string filename); 25 void LoadFromFileF64(string filename);
26 void LoadFromFileF32(string filename); 26 void LoadFromFileF32(string filename);
27 void LoadFromFileF32(string filename, int dimensionX, int dimensionY, int lowerboundX, int lowerboundY); 27 void LoadFromFileF32(string filename, int dimensionX, int dimensionY, int lowerboundX, int lowerboundY);
28 void LoadFromFileIMG(string filename, int dimensionX, int dimensionY, int lowerboundX, int lowerboundY); 28 void LoadFromFileIMG(string filename, int dimensionX, int dimensionY, int lowerboundX, int lowerboundY);
29 void LoadFromFileSLRAW(string filename); 29 void LoadFromFileSLRAW(string filename);
30 void WriteToFileF64(string filename); 30 void WriteToFileF64(string filename);
31 void WriteToFileF32(string filename); 31 void WriteToFileF32(string filename);
32 void WriteToFileRAW(string filename); 32 void WriteToFileRAW(string filename);
33 void WriteToFileHiRAW(string filename); 33 void WriteToFileHiRAW(string filename);
34 void SetSeed(int val); 34 void SetSeed(int val);
35 void RaiseTerrain(double rx, double ry, double size, double amount); 35 void RaiseTerrain(double rx, double ry, double size, double amount);
36 void LowerTerrain(double rx, double ry, double size, double amount); 36 void LowerTerrain(double rx, double ry, double size, double amount);
37 void FlattenTerrain(double rx, double ry, double size, double amount); 37 void FlattenTerrain(double rx, double ry, double size, double amount);
38 void NoiseTerrain(double rx, double ry, double size, double amount); 38 void NoiseTerrain(double rx, double ry, double size, double amount);
39 void RevertTerrain(double rx, double ry, double size, double amount); 39 void RevertTerrain(double rx, double ry, double size, double amount);
40 void SmoothTerrain(double rx, double ry, double size, double amount); 40 void SmoothTerrain(double rx, double ry, double size, double amount);
41 void HillsGenerator(); 41 void HillsGenerator();
42 double GetHeight(int x, int y); 42 double GetHeight(int x, int y);
43 void ExportImage(string filename, string gradientmap); 43 void ExportImage(string filename, string gradientmap);
44 byte[] ExportJpegImage(string gradientmap); 44 byte[] ExportJpegImage(string gradientmap);
45 } 45 }
46} 46}
diff --git a/OpenSim/Region/Environment/Interfaces/IXfer.cs b/OpenSim/Region/Environment/Interfaces/IXfer.cs
index a19ba8d..7482ec0 100644
--- a/OpenSim/Region/Environment/Interfaces/IXfer.cs
+++ b/OpenSim/Region/Environment/Interfaces/IXfer.cs
@@ -1,11 +1,11 @@
1using System; 1using System;
2using System.Collections.Generic; 2using System.Collections.Generic;
3using System.Text; 3using System.Text;
4 4
5namespace OpenSim.Region.Environment.Interfaces 5namespace OpenSim.Region.Environment.Interfaces
6{ 6{
7 public interface IXfer 7 public interface IXfer
8 { 8 {
9 bool AddNewFile(string fileName, byte[] data); 9 bool AddNewFile(string fileName, byte[] data);
10 } 10 }
11} 11}
diff --git a/OpenSim/Region/Environment/ModuleLoader.cs b/OpenSim/Region/Environment/ModuleLoader.cs
index ea416cb..5e27f50 100644
--- a/OpenSim/Region/Environment/ModuleLoader.cs
+++ b/OpenSim/Region/Environment/ModuleLoader.cs
@@ -1,160 +1,160 @@
1using System; 1using System;
2using System.Collections.Generic; 2using System.Collections.Generic;
3using System.Reflection; 3using System.Reflection;
4using System.Text; 4using System.Text;
5using OpenSim.Framework.Console; 5using OpenSim.Framework.Console;
6using OpenSim.Region.Environment.Scenes; 6using OpenSim.Region.Environment.Scenes;
7using OpenSim.Region.Environment.Interfaces; 7using OpenSim.Region.Environment.Interfaces;
8using OpenSim.Region.Environment.Modules; 8using OpenSim.Region.Environment.Modules;
9 9
10namespace OpenSim.Region.Environment 10namespace OpenSim.Region.Environment
11{ 11{
12 public class ModuleLoader 12 public class ModuleLoader
13 { 13 {
14 14
15 public Dictionary<string, Assembly> LoadedAssemblys = new Dictionary<string, Assembly>(); 15 public Dictionary<string, Assembly> LoadedAssemblys = new Dictionary<string, Assembly>();
16 16
17 public List<IRegionModule> LoadedModules = new List<IRegionModule>(); 17 public List<IRegionModule> LoadedModules = new List<IRegionModule>();
18 public Dictionary<string, IRegionModule> LoadedSharedModules = new Dictionary<string, IRegionModule>(); 18 public Dictionary<string, IRegionModule> LoadedSharedModules = new Dictionary<string, IRegionModule>();
19 19
20 public ModuleLoader() 20 public ModuleLoader()
21 { 21 {
22 22
23 } 23 }
24 24
25 /// <summary> 25 /// <summary>
26 /// Should have a module factory? 26 /// Should have a module factory?
27 /// </summary> 27 /// </summary>
28 /// <param name="scene"></param> 28 /// <param name="scene"></param>
29 public void CreateDefaultModules(Scene scene, string exceptModules) 29 public void CreateDefaultModules(Scene scene, string exceptModules)
30 { 30 {
31 IRegionModule module = new XferModule(); 31 IRegionModule module = new XferModule();
32 InitialiseModule(module, scene); 32 InitialiseModule(module, scene);
33 33
34 module = new ChatModule(); 34 module = new ChatModule();
35 InitialiseModule(module, scene); 35 InitialiseModule(module, scene);
36 36
37 module = new AvatarProfilesModule(); 37 module = new AvatarProfilesModule();
38 InitialiseModule(module, scene); 38 InitialiseModule(module, scene);
39 39
40 this.LoadRegionModule("OpenSim.Region.ExtensionsScriptModule.dll", "ExtensionsScriptingModule", scene); 40 this.LoadRegionModule("OpenSim.Region.ExtensionsScriptModule.dll", "ExtensionsScriptingModule", scene);
41 41
42 string lslPath = System.IO.Path.Combine("ScriptEngines", "OpenSim.Region.ScriptEngine.DotNetEngine.dll"); 42 string lslPath = System.IO.Path.Combine("ScriptEngines", "OpenSim.Region.ScriptEngine.DotNetEngine.dll");
43 this.LoadRegionModule(lslPath, "LSLScriptingModule", scene); 43 this.LoadRegionModule(lslPath, "LSLScriptingModule", scene);
44 44
45 } 45 }
46 46
47 47
48 public void LoadDefaultSharedModules(string exceptModules) 48 public void LoadDefaultSharedModules(string exceptModules)
49 { 49 {
50 DynamicTextureModule dynamicModule = new DynamicTextureModule(); 50 DynamicTextureModule dynamicModule = new DynamicTextureModule();
51 this.LoadedSharedModules.Add(dynamicModule.GetName(), dynamicModule); 51 this.LoadedSharedModules.Add(dynamicModule.GetName(), dynamicModule);
52 } 52 }
53 53
54 public void InitialiseSharedModules(Scene scene) 54 public void InitialiseSharedModules(Scene scene)
55 { 55 {
56 foreach (IRegionModule module in this.LoadedSharedModules.Values) 56 foreach (IRegionModule module in this.LoadedSharedModules.Values)
57 { 57 {
58 module.Initialise(scene); 58 module.Initialise(scene);
59 scene.AddModule(module.GetName(), module); //should be doing this? 59 scene.AddModule(module.GetName(), module); //should be doing this?
60 } 60 }
61 } 61 }
62 62
63 private void InitialiseModule(IRegionModule module, Scene scene) 63 private void InitialiseModule(IRegionModule module, Scene scene)
64 { 64 {
65 module.Initialise(scene); 65 module.Initialise(scene);
66 scene.AddModule(module.GetName(), module); 66 scene.AddModule(module.GetName(), module);
67 LoadedModules.Add(module); 67 LoadedModules.Add(module);
68 } 68 }
69 69
70 /// <summary> 70 /// <summary>
71 /// Loads/initialises a Module instance that can be used by mutliple Regions 71 /// Loads/initialises a Module instance that can be used by mutliple Regions
72 /// </summary> 72 /// </summary>
73 /// <param name="dllName"></param> 73 /// <param name="dllName"></param>
74 /// <param name="moduleName"></param> 74 /// <param name="moduleName"></param>
75 /// <param name="scene"></param> 75 /// <param name="scene"></param>
76 public void LoadSharedModule(string dllName, string moduleName) 76 public void LoadSharedModule(string dllName, string moduleName)
77 { 77 {
78 IRegionModule module = this.LoadModule(dllName, moduleName); 78 IRegionModule module = this.LoadModule(dllName, moduleName);
79 if (module != null) 79 if (module != null)
80 { 80 {
81 this.LoadedSharedModules.Add(module.GetName(), module); 81 this.LoadedSharedModules.Add(module.GetName(), module);
82 } 82 }
83 } 83 }
84 84
85 public void LoadRegionModule(string dllName, string moduleName, Scene scene) 85 public void LoadRegionModule(string dllName, string moduleName, Scene scene)
86 { 86 {
87 IRegionModule module = this.LoadModule(dllName, moduleName); 87 IRegionModule module = this.LoadModule(dllName, moduleName);
88 if (module != null) 88 if (module != null)
89 { 89 {
90 this.InitialiseModule(module, scene); 90 this.InitialiseModule(module, scene);
91 } 91 }
92 } 92 }
93 93
94 /// <summary> 94 /// <summary>
95 /// Loads a external Module (if not already loaded) and creates a new instance of it. 95 /// Loads a external Module (if not already loaded) and creates a new instance of it.
96 /// </summary> 96 /// </summary>
97 /// <param name="dllName"></param> 97 /// <param name="dllName"></param>
98 /// <param name="moduleName"></param> 98 /// <param name="moduleName"></param>
99 /// <param name="scene"></param> 99 /// <param name="scene"></param>
100 public IRegionModule LoadModule(string dllName, string moduleName) 100 public IRegionModule LoadModule(string dllName, string moduleName)
101 { 101 {
102 Assembly pluginAssembly = null; 102 Assembly pluginAssembly = null;
103 if (LoadedAssemblys.ContainsKey(dllName)) 103 if (LoadedAssemblys.ContainsKey(dllName))
104 { 104 {
105 pluginAssembly = LoadedAssemblys[dllName]; 105 pluginAssembly = LoadedAssemblys[dllName];
106 } 106 }
107 else 107 else
108 { 108 {
109 pluginAssembly = Assembly.LoadFrom(dllName); 109 pluginAssembly = Assembly.LoadFrom(dllName);
110 this.LoadedAssemblys.Add(dllName, pluginAssembly); 110 this.LoadedAssemblys.Add(dllName, pluginAssembly);
111 } 111 }
112 112
113 IRegionModule module = null; 113 IRegionModule module = null;
114 foreach (Type pluginType in pluginAssembly.GetTypes()) 114 foreach (Type pluginType in pluginAssembly.GetTypes())
115 { 115 {
116 if (pluginType.IsPublic) 116 if (pluginType.IsPublic)
117 { 117 {
118 if (!pluginType.IsAbstract) 118 if (!pluginType.IsAbstract)
119 { 119 {
120 Type typeInterface = pluginType.GetInterface("IRegionModule", true); 120 Type typeInterface = pluginType.GetInterface("IRegionModule", true);
121 121
122 if (typeInterface != null) 122 if (typeInterface != null)
123 { 123 {
124 module = (IRegionModule)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString())); 124 module = (IRegionModule)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString()));
125 break; 125 break;
126 } 126 }
127 typeInterface = null; 127 typeInterface = null;
128 } 128 }
129 } 129 }
130 } 130 }
131 pluginAssembly = null; 131 pluginAssembly = null;
132 132
133 if ((module != null ) || (module.GetName() == moduleName)) 133 if ((module != null ) || (module.GetName() == moduleName))
134 { 134 {
135 return module; 135 return module;
136 } 136 }
137 137
138 return null; 138 return null;
139 139
140 } 140 }
141 141
142 public void PostInitialise() 142 public void PostInitialise()
143 { 143 {
144 foreach (IRegionModule module in this.LoadedSharedModules.Values) 144 foreach (IRegionModule module in this.LoadedSharedModules.Values)
145 { 145 {
146 module.PostInitialise(); 146 module.PostInitialise();
147 } 147 }
148 148
149 foreach (IRegionModule module in this.LoadedModules) 149 foreach (IRegionModule module in this.LoadedModules)
150 { 150 {
151 module.PostInitialise(); 151 module.PostInitialise();
152 } 152 }
153 } 153 }
154 154
155 public void ClearCache() 155 public void ClearCache()
156 { 156 {
157 this.LoadedAssemblys.Clear(); 157 this.LoadedAssemblys.Clear();
158 } 158 }
159 } 159 }
160} 160}
diff --git a/OpenSim/Region/Environment/Modules/AssetDownloadModule.cs b/OpenSim/Region/Environment/Modules/AssetDownloadModule.cs
index 21a7e61..7a53f6f 100644
--- a/OpenSim/Region/Environment/Modules/AssetDownloadModule.cs
+++ b/OpenSim/Region/Environment/Modules/AssetDownloadModule.cs
@@ -1,50 +1,50 @@
1using System; 1using System;
2using System.Collections.Generic; 2using System.Collections.Generic;
3using System.Text; 3using System.Text;
4using libsecondlife; 4using libsecondlife;
5using OpenSim.Framework.Interfaces; 5using OpenSim.Framework.Interfaces;
6using OpenSim.Region.Environment.Scenes; 6using OpenSim.Region.Environment.Scenes;
7using OpenSim.Region.Environment.Interfaces; 7using OpenSim.Region.Environment.Interfaces;
8 8
9 9
10namespace OpenSim.Region.Environment.Modules 10namespace OpenSim.Region.Environment.Modules
11{ 11{
12 public class AssetDownloadModule : IRegionModule 12 public class AssetDownloadModule : IRegionModule
13 { 13 {
14 private Scene m_scene; 14 private Scene m_scene;
15 15
16 public AssetDownloadModule() 16 public AssetDownloadModule()
17 { 17 {
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 26
27 public void PostInitialise() 27 public void PostInitialise()
28 { 28 {
29 29
30 } 30 }
31 31
32 public void CloseDown() 32 public void CloseDown()
33 { 33 {
34 } 34 }
35 35
36 public string GetName() 36 public string GetName()
37 { 37 {
38 return "AssetDownloadModule"; 38 return "AssetDownloadModule";
39 } 39 }
40 40
41 public bool IsSharedModule() 41 public bool IsSharedModule()
42 { 42 {
43 return false; 43 return false;
44 } 44 }
45 45
46 public void NewClient(IClientAPI client) 46 public void NewClient(IClientAPI client)
47 { 47 {
48 } 48 }
49 } 49 }
50} 50}
diff --git a/OpenSim/Region/Environment/Modules/AvatarProfilesModule.cs b/OpenSim/Region/Environment/Modules/AvatarProfilesModule.cs
index 1ad061a..c349888 100644
--- a/OpenSim/Region/Environment/Modules/AvatarProfilesModule.cs
+++ b/OpenSim/Region/Environment/Modules/AvatarProfilesModule.cs
@@ -1,71 +1,71 @@
1using System; 1using System;
2using System.Collections.Generic; 2using System.Collections.Generic;
3using System.Text; 3using System.Text;
4using libsecondlife; 4using libsecondlife;
5using OpenSim.Framework.Interfaces; 5using OpenSim.Framework.Interfaces;
6using OpenSim.Region.Environment.Scenes; 6using OpenSim.Region.Environment.Scenes;
7using OpenSim.Region.Environment.Interfaces; 7using OpenSim.Region.Environment.Interfaces;
8 8
9namespace OpenSim.Region.Environment.Modules 9namespace OpenSim.Region.Environment.Modules
10{ 10{
11 public class AvatarProfilesModule :IRegionModule 11 public class AvatarProfilesModule :IRegionModule
12 { 12 {
13 13
14 private Scene m_scene; 14 private Scene m_scene;
15 15
16 public AvatarProfilesModule() 16 public AvatarProfilesModule()
17 { 17 {
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 26
27 public void PostInitialise() 27 public void PostInitialise()
28 { 28 {
29 29
30 } 30 }
31 31
32 public void CloseDown() 32 public void CloseDown()
33 { 33 {
34 34
35 } 35 }
36 36
37 public string GetName() 37 public string GetName()
38 { 38 {
39 return "AvatarProfilesModule"; 39 return "AvatarProfilesModule";
40 } 40 }
41 41
42 public bool IsSharedModule() 42 public bool IsSharedModule()
43 { 43 {
44 return false; 44 return false;
45 } 45 }
46 46
47 public void NewClient(IClientAPI client) 47 public void NewClient(IClientAPI client)
48 { 48 {
49 client.OnRequestAvatarProperties += RequestAvatarProperty; 49 client.OnRequestAvatarProperties += RequestAvatarProperty;
50 } 50 }
51 51
52 public void RemoveClient(IClientAPI client) 52 public void RemoveClient(IClientAPI client)
53 { 53 {
54 client.OnRequestAvatarProperties -= RequestAvatarProperty; 54 client.OnRequestAvatarProperties -= RequestAvatarProperty;
55 } 55 }
56 56
57 /// <summary> 57 /// <summary>
58 /// 58 ///
59 /// </summary> 59 /// </summary>
60 /// <param name="remoteClient"></param> 60 /// <param name="remoteClient"></param>
61 /// <param name="avatarID"></param> 61 /// <param name="avatarID"></param>
62 public void RequestAvatarProperty(IClientAPI remoteClient, LLUUID avatarID) 62 public void RequestAvatarProperty(IClientAPI remoteClient, LLUUID avatarID)
63 { 63 {
64 string about = "OpenSim crash test dummy"; 64 string about = "OpenSim crash test dummy";
65 string bornOn = "Before now"; 65 string bornOn = "Before now";
66 string flAbout = "First life? What is one of those? OpenSim is my life!"; 66 string flAbout = "First life? What is one of those? OpenSim is my life!";
67 LLUUID partner = new LLUUID("11111111-1111-0000-0000-000100bba000"); 67 LLUUID partner = new LLUUID("11111111-1111-0000-0000-000100bba000");
68 remoteClient.SendAvatarProperties(avatarID, about, bornOn, "", flAbout, 0, LLUUID.Zero, LLUUID.Zero, "", partner); 68 remoteClient.SendAvatarProperties(avatarID, about, bornOn, "", flAbout, 0, LLUUID.Zero, LLUUID.Zero, "", partner);
69 } 69 }
70 } 70 }
71} 71}
diff --git a/OpenSim/Region/Environment/Modules/ChatModule.cs b/OpenSim/Region/Environment/Modules/ChatModule.cs
index a46343b..8d3a553 100644
--- a/OpenSim/Region/Environment/Modules/ChatModule.cs
+++ b/OpenSim/Region/Environment/Modules/ChatModule.cs
@@ -1,216 +1,216 @@
1using System; 1using System;
2using System.Collections.Generic; 2using System.Collections.Generic;
3using System.Text; 3using System.Text;
4using System.Net; 4using System.Net;
5using System.Net.Sockets; 5using System.Net.Sockets;
6using System.Threading; 6using System.Threading;
7using System.IO; 7using System.IO;
8using libsecondlife; 8using libsecondlife;
9using OpenSim.Region.Environment.Scenes; 9using OpenSim.Region.Environment.Scenes;
10using OpenSim.Region.Environment.Interfaces; 10using OpenSim.Region.Environment.Interfaces;
11using OpenSim.Framework.Interfaces; 11using OpenSim.Framework.Interfaces;
12using OpenSim.Framework.Utilities; 12using OpenSim.Framework.Utilities;
13using OpenSim.Framework.Console; 13using OpenSim.Framework.Console;
14 14
15namespace OpenSim.Region.Environment.Modules 15namespace OpenSim.Region.Environment.Modules
16{ 16{
17 public class ChatModule : IRegionModule, ISimChat 17 public class ChatModule : IRegionModule, ISimChat
18 { 18 {
19 private Scene m_scene; 19 private Scene m_scene;
20 20
21 private string m_server = "irc2.choopa.net"; 21 private string m_server = "irc2.choopa.net";
22 22
23 // private int m_port = 6668; 23 // private int m_port = 6668;
24 //private string m_user = "USER OpenSimBot 8 * :I'm a OpenSim to irc bot"; 24 //private string m_user = "USER OpenSimBot 8 * :I'm a OpenSim to irc bot";
25 private string m_nick = "OSimBot"; 25 private string m_nick = "OSimBot";
26 private string m_channel = "#opensim"; 26 private string m_channel = "#opensim";
27 27
28 // private NetworkStream m_stream; 28 // private NetworkStream m_stream;
29 private TcpClient m_irc; 29 private TcpClient m_irc;
30 private StreamWriter m_ircWriter; 30 private StreamWriter m_ircWriter;
31 private StreamReader m_ircReader; 31 private StreamReader m_ircReader;
32 32
33 // private Thread pingSender; 33 // private Thread pingSender;
34 // private Thread listener; 34 // private Thread listener;
35 35
36 private bool connected = false; 36 private bool connected = false;
37 37
38 public ChatModule() 38 public ChatModule()
39 { 39 {
40 m_nick = "OSimBot" + Util.RandomClass.Next(1, 99); 40 m_nick = "OSimBot" + Util.RandomClass.Next(1, 99);
41 m_irc = null; 41 m_irc = null;
42 m_ircWriter = null; 42 m_ircWriter = null;
43 m_ircReader = null; 43 m_ircReader = null;
44 } 44 }
45 45
46 public void Initialise(Scene scene) 46 public void Initialise(Scene scene)
47 { 47 {
48 m_scene = scene; 48 m_scene = scene;
49 m_scene.EventManager.OnNewClient += NewClient; 49 m_scene.EventManager.OnNewClient += NewClient;
50 50
51 m_scene.RegisterModuleInterface<ISimChat>(this); 51 m_scene.RegisterModuleInterface<ISimChat>(this);
52 } 52 }
53 53
54 public void PostInitialise() 54 public void PostInitialise()
55 { 55 {
56 /* 56 /*
57 try 57 try
58 { 58 {
59 m_irc = new TcpClient(m_server, m_port); 59 m_irc = new TcpClient(m_server, m_port);
60 m_stream = m_irc.GetStream(); 60 m_stream = m_irc.GetStream();
61 m_ircReader = new StreamReader(m_stream); 61 m_ircReader = new StreamReader(m_stream);
62 m_ircWriter = new StreamWriter(m_stream); 62 m_ircWriter = new StreamWriter(m_stream);
63 63
64 pingSender = new Thread(new ThreadStart(this.PingRun)); 64 pingSender = new Thread(new ThreadStart(this.PingRun));
65 pingSender.Start(); 65 pingSender.Start();
66 66
67 listener = new Thread(new ThreadStart(this.ListenerRun)); 67 listener = new Thread(new ThreadStart(this.ListenerRun));
68 listener.Start(); 68 listener.Start();
69 69
70 m_ircWriter.WriteLine(m_user); 70 m_ircWriter.WriteLine(m_user);
71 m_ircWriter.Flush(); 71 m_ircWriter.Flush();
72 m_ircWriter.WriteLine("NICK " + m_nick); 72 m_ircWriter.WriteLine("NICK " + m_nick);
73 m_ircWriter.Flush(); 73 m_ircWriter.Flush();
74 m_ircWriter.WriteLine("JOIN " + m_channel); 74 m_ircWriter.WriteLine("JOIN " + m_channel);
75 m_ircWriter.Flush(); 75 m_ircWriter.Flush();
76 connected = true; 76 connected = true;
77 } 77 }
78 catch (Exception e) 78 catch (Exception e)
79 { 79 {
80 Console.WriteLine(e.ToString()); 80 Console.WriteLine(e.ToString());
81 } 81 }
82 */ 82 */
83 } 83 }
84 84
85 public void CloseDown() 85 public void CloseDown()
86 { 86 {
87 m_ircWriter.Close(); 87 m_ircWriter.Close();
88 m_ircReader.Close(); 88 m_ircReader.Close();
89 m_irc.Close(); 89 m_irc.Close();
90 } 90 }
91 91
92 public string GetName() 92 public string GetName()
93 { 93 {
94 return "ChatModule"; 94 return "ChatModule";
95 } 95 }
96 96
97 public bool IsSharedModule() 97 public bool IsSharedModule()
98 { 98 {
99 return false; 99 return false;
100 } 100 }
101 101
102 public void NewClient(IClientAPI client) 102 public void NewClient(IClientAPI client)
103 { 103 {
104 client.OnChatFromViewer += SimChat; 104 client.OnChatFromViewer += SimChat;
105 } 105 }
106 106
107 public void PingRun() 107 public void PingRun()
108 { 108 {
109 while (true) 109 while (true)
110 { 110 {
111 m_ircWriter.WriteLine("PING :" + m_server); 111 m_ircWriter.WriteLine("PING :" + m_server);
112 m_ircWriter.Flush(); 112 m_ircWriter.Flush();
113 Thread.Sleep(15000); 113 Thread.Sleep(15000);
114 } 114 }
115 } 115 }
116 116
117 public void ListenerRun() 117 public void ListenerRun()
118 { 118 {
119 string inputLine; 119 string inputLine;
120 LLVector3 pos = new LLVector3(128, 128, 20); 120 LLVector3 pos = new LLVector3(128, 128, 20);
121 while (true) 121 while (true)
122 { 122 {
123 while ((inputLine = m_ircReader.ReadLine()) != null) 123 while ((inputLine = m_ircReader.ReadLine()) != null)
124 { 124 {
125 Console.WriteLine(inputLine); 125 Console.WriteLine(inputLine);
126 if (inputLine.Contains(m_channel)) 126 if (inputLine.Contains(m_channel))
127 { 127 {
128 string mess = inputLine.Substring(inputLine.IndexOf(m_channel)); 128 string mess = inputLine.Substring(inputLine.IndexOf(m_channel));
129 m_scene.ForEachScenePresence(delegate(ScenePresence presence) 129 m_scene.ForEachScenePresence(delegate(ScenePresence presence)
130 { 130 {
131 presence.ControllingClient.SendChatMessage(Helpers.StringToField(mess), 255, pos, "IRC:", 131 presence.ControllingClient.SendChatMessage(Helpers.StringToField(mess), 255, pos, "IRC:",
132 LLUUID.Zero); 132 LLUUID.Zero);
133 }); 133 });
134 } 134 }
135 } 135 }
136 } 136 }
137 } 137 }
138 138
139 public void SimChat(byte[] message, byte type, int channel, LLVector3 fromPos, string fromName, LLUUID fromAgentID) 139 public void SimChat(byte[] message, byte type, int channel, LLVector3 fromPos, string fromName, LLUUID fromAgentID)
140 { 140 {
141 ScenePresence avatar = null; 141 ScenePresence avatar = null;
142 avatar = m_scene.RequestAvatar(fromAgentID); 142 avatar = m_scene.RequestAvatar(fromAgentID);
143 if (avatar != null) 143 if (avatar != null)
144 { 144 {
145 fromPos = avatar.AbsolutePosition; 145 fromPos = avatar.AbsolutePosition;
146 fromName = avatar.Firstname + " " + avatar.Lastname; 146 fromName = avatar.Firstname + " " + avatar.Lastname;
147 avatar = null; 147 avatar = null;
148 } 148 }
149 149
150 if (connected) 150 if (connected)
151 { 151 {
152 m_ircWriter.WriteLine("PRIVMSG " + m_channel + " :" + "<" + fromName + ">: " + 152 m_ircWriter.WriteLine("PRIVMSG " + m_channel + " :" + "<" + fromName + ">: " +
153 Util.FieldToString(message)); 153 Util.FieldToString(message));
154 m_ircWriter.Flush(); 154 m_ircWriter.Flush();
155 } 155 }
156 156
157 if (channel == 0) 157 if (channel == 0)
158 { 158 {
159 m_scene.ForEachScenePresence(delegate(ScenePresence presence) 159 m_scene.ForEachScenePresence(delegate(ScenePresence presence)
160 { 160 {
161 int dis = -1000; 161 int dis = -1000;
162 162
163 //err ??? the following code seems to be request a scenePresence when it already has a ref to it 163 //err ??? the following code seems to be request a scenePresence when it already has a ref to it
164 avatar = m_scene.RequestAvatar(presence.ControllingClient.AgentId); 164 avatar = m_scene.RequestAvatar(presence.ControllingClient.AgentId);
165 if (avatar != null) 165 if (avatar != null)
166 { 166 {
167 dis = (int) avatar.AbsolutePosition.GetDistanceTo(fromPos); 167 dis = (int) avatar.AbsolutePosition.GetDistanceTo(fromPos);
168 } 168 }
169 169
170 switch (type) 170 switch (type)
171 { 171 {
172 case 0: // Whisper 172 case 0: // Whisper
173 if ((dis < 10) && (dis > -10)) 173 if ((dis < 10) && (dis > -10))
174 { 174 {
175 //should change so the message is sent through the avatar rather than direct to the ClientView 175 //should change so the message is sent through the avatar rather than direct to the ClientView
176 presence.ControllingClient.SendChatMessage(message, 176 presence.ControllingClient.SendChatMessage(message,
177 type, 177 type,
178 fromPos, 178 fromPos,
179 fromName, 179 fromName,
180 fromAgentID); 180 fromAgentID);
181 } 181 }
182 break; 182 break;
183 case 1: // Say 183 case 1: // Say
184 if ((dis < 30) && (dis > -30)) 184 if ((dis < 30) && (dis > -30))
185 { 185 {
186 //Console.WriteLine("sending chat"); 186 //Console.WriteLine("sending chat");
187 presence.ControllingClient.SendChatMessage(message, 187 presence.ControllingClient.SendChatMessage(message,
188 type, 188 type,
189 fromPos, 189 fromPos,
190 fromName, 190 fromName,
191 fromAgentID); 191 fromAgentID);
192 } 192 }
193 break; 193 break;
194 case 2: // Shout 194 case 2: // Shout
195 if ((dis < 100) && (dis > -100)) 195 if ((dis < 100) && (dis > -100))
196 { 196 {
197 presence.ControllingClient.SendChatMessage(message, 197 presence.ControllingClient.SendChatMessage(message,
198 type, 198 type,
199 fromPos, 199 fromPos,
200 fromName, 200 fromName,
201 fromAgentID); 201 fromAgentID);
202 } 202 }
203 break; 203 break;
204 204
205 case 0xff: // Broadcast 205 case 0xff: // Broadcast
206 presence.ControllingClient.SendChatMessage(message, type, 206 presence.ControllingClient.SendChatMessage(message, type,
207 fromPos, 207 fromPos,
208 fromName, 208 fromName,
209 fromAgentID); 209 fromAgentID);
210 break; 210 break;
211 } 211 }
212 }); 212 });
213 } 213 }
214 } 214 }
215 } 215 }
216} 216}
diff --git a/OpenSim/Region/Environment/Modules/DynamicTextureModule.cs b/OpenSim/Region/Environment/Modules/DynamicTextureModule.cs
index 8223919..bbd9810 100644
--- a/OpenSim/Region/Environment/Modules/DynamicTextureModule.cs
+++ b/OpenSim/Region/Environment/Modules/DynamicTextureModule.cs
@@ -1,159 +1,159 @@
1using System.Text; 1using System.Text;
2using System.Net; 2using System.Net;
3using System.Net.Sockets; 3using System.Net.Sockets;
4using System.Threading; 4using System.Threading;
5using System.IO; 5using System.IO;
6using System.Collections.Generic; 6using System.Collections.Generic;
7using libsecondlife; 7using libsecondlife;
8using OpenSim.Region.Environment.Scenes; 8using OpenSim.Region.Environment.Scenes;
9using OpenSim.Region.Environment.Interfaces; 9using OpenSim.Region.Environment.Interfaces;
10using OpenSim.Framework.Interfaces; 10using OpenSim.Framework.Interfaces;
11using OpenSim.Framework.Utilities; 11using OpenSim.Framework.Utilities;
12using OpenSim.Framework.Console; 12using OpenSim.Framework.Console;
13using OpenSim.Framework.Types; 13using OpenSim.Framework.Types;
14 14
15namespace OpenSim.Region.Environment.Modules 15namespace OpenSim.Region.Environment.Modules
16{ 16{
17 public class DynamicTextureModule :IRegionModule, IDynamicTextureManager 17 public class DynamicTextureModule :IRegionModule, IDynamicTextureManager
18 { 18 {
19 private Dictionary<LLUUID, Scene> RegisteredScenes = new Dictionary<LLUUID, Scene>(); 19 private Dictionary<LLUUID, Scene> RegisteredScenes = new Dictionary<LLUUID, Scene>();
20 private Dictionary<string, IDynamicTextureRender> RenderPlugins= new Dictionary<string, IDynamicTextureRender>(); 20 private Dictionary<string, IDynamicTextureRender> RenderPlugins= new Dictionary<string, IDynamicTextureRender>();
21 private Dictionary<LLUUID, DynamicTextureUpdater> Updaters = new Dictionary<LLUUID, DynamicTextureUpdater>(); 21 private Dictionary<LLUUID, DynamicTextureUpdater> Updaters = new Dictionary<LLUUID, DynamicTextureUpdater>();
22 22
23 public void Initialise(Scene scene) 23 public void Initialise(Scene scene)
24 { 24 {
25 if (!RegisteredScenes.ContainsKey(scene.RegionInfo.SimUUID)) 25 if (!RegisteredScenes.ContainsKey(scene.RegionInfo.SimUUID))
26 { 26 {
27 RegisteredScenes.Add(scene.RegionInfo.SimUUID, scene); 27 RegisteredScenes.Add(scene.RegionInfo.SimUUID, scene);
28 scene.RegisterModuleInterface<IDynamicTextureManager>(this); 28 scene.RegisterModuleInterface<IDynamicTextureManager>(this);
29 } 29 }
30 } 30 }
31 31
32 public void PostInitialise() 32 public void PostInitialise()
33 { 33 {
34 34
35 } 35 }
36 36
37 public void CloseDown() 37 public void CloseDown()
38 { 38 {
39 } 39 }
40 40
41 public string GetName() 41 public string GetName()
42 { 42 {
43 return "DynamicTextureModule"; 43 return "DynamicTextureModule";
44 } 44 }
45 45
46 public bool IsSharedModule() 46 public bool IsSharedModule()
47 { 47 {
48 return true; 48 return true;
49 } 49 }
50 50
51 public void RegisterRender(string handleType, IDynamicTextureRender render) 51 public void RegisterRender(string handleType, IDynamicTextureRender render)
52 { 52 {
53 if (!RenderPlugins.ContainsKey(handleType)) 53 if (!RenderPlugins.ContainsKey(handleType))
54 { 54 {
55 RenderPlugins.Add(handleType, render); 55 RenderPlugins.Add(handleType, render);
56 } 56 }
57 } 57 }
58 58
59 public void ReturnData(LLUUID id, byte[] data) 59 public void ReturnData(LLUUID id, byte[] data)
60 { 60 {
61 if (Updaters.ContainsKey(id)) 61 if (Updaters.ContainsKey(id))
62 { 62 {
63 DynamicTextureUpdater updater = Updaters[id]; 63 DynamicTextureUpdater updater = Updaters[id];
64 if (RegisteredScenes.ContainsKey(updater.SimUUID)) 64 if (RegisteredScenes.ContainsKey(updater.SimUUID))
65 { 65 {
66 Scene scene = RegisteredScenes[updater.SimUUID]; 66 Scene scene = RegisteredScenes[updater.SimUUID];
67 updater.DataReceived(data, scene); 67 updater.DataReceived(data, scene);
68 } 68 }
69 } 69 }
70 } 70 }
71 71
72 public LLUUID AddDynamicTextureURL(LLUUID simID, LLUUID primID, string contentType, string url, string extraParams, int updateTimer) 72 public LLUUID AddDynamicTextureURL(LLUUID simID, LLUUID primID, string contentType, string url, string extraParams, int updateTimer)
73 { 73 {
74 System.Console.WriteLine("dynamic texture being created: " + url + " of type " + contentType); 74 System.Console.WriteLine("dynamic texture being created: " + url + " of type " + contentType);
75 if (this.RenderPlugins.ContainsKey(contentType)) 75 if (this.RenderPlugins.ContainsKey(contentType))
76 { 76 {
77 DynamicTextureUpdater updater = new DynamicTextureUpdater(); 77 DynamicTextureUpdater updater = new DynamicTextureUpdater();
78 updater.SimUUID = simID; 78 updater.SimUUID = simID;
79 updater.PrimID = primID; 79 updater.PrimID = primID;
80 updater.ContentType = contentType; 80 updater.ContentType = contentType;
81 updater.Url = url; 81 updater.Url = url;
82 updater.UpdateTimer = updateTimer; 82 updater.UpdateTimer = updateTimer;
83 updater.UpdaterID = LLUUID.Random(); 83 updater.UpdaterID = LLUUID.Random();
84 updater.Params = extraParams; 84 updater.Params = extraParams;
85 85
86 if (!this.Updaters.ContainsKey(updater.UpdaterID)) 86 if (!this.Updaters.ContainsKey(updater.UpdaterID))
87 { 87 {
88 Updaters.Add(updater.UpdaterID, updater); 88 Updaters.Add(updater.UpdaterID, updater);
89 } 89 }
90 90
91 RenderPlugins[contentType].AsyncConvertUrl(updater.UpdaterID, url, extraParams); 91 RenderPlugins[contentType].AsyncConvertUrl(updater.UpdaterID, url, extraParams);
92 return updater.UpdaterID; 92 return updater.UpdaterID;
93 } 93 }
94 return LLUUID.Zero; 94 return LLUUID.Zero;
95 } 95 }
96 96
97 public LLUUID AddDynamicTextureData(LLUUID simID, LLUUID primID, string contentType, string data, string extraParams, int updateTimer) 97 public LLUUID AddDynamicTextureData(LLUUID simID, LLUUID primID, string contentType, string data, string extraParams, int updateTimer)
98 { 98 {
99 if (this.RenderPlugins.ContainsKey(contentType)) 99 if (this.RenderPlugins.ContainsKey(contentType))
100 { 100 {
101 DynamicTextureUpdater updater = new DynamicTextureUpdater(); 101 DynamicTextureUpdater updater = new DynamicTextureUpdater();
102 updater.SimUUID = simID; 102 updater.SimUUID = simID;
103 updater.PrimID = primID; 103 updater.PrimID = primID;
104 updater.ContentType = contentType; 104 updater.ContentType = contentType;
105 updater.BodyData = data; 105 updater.BodyData = data;
106 updater.UpdateTimer = updateTimer; 106 updater.UpdateTimer = updateTimer;
107 updater.UpdaterID = LLUUID.Random(); 107 updater.UpdaterID = LLUUID.Random();
108 updater.Params = extraParams; 108 updater.Params = extraParams;
109 109
110 if (!this.Updaters.ContainsKey(updater.UpdaterID)) 110 if (!this.Updaters.ContainsKey(updater.UpdaterID))
111 { 111 {
112 Updaters.Add(updater.UpdaterID, updater); 112 Updaters.Add(updater.UpdaterID, updater);
113 } 113 }
114 114
115 RenderPlugins[contentType].AsyncConvertData(updater.UpdaterID, data, extraParams); 115 RenderPlugins[contentType].AsyncConvertData(updater.UpdaterID, data, extraParams);
116 return updater.UpdaterID; 116 return updater.UpdaterID;
117 } 117 }
118 return LLUUID.Zero; 118 return LLUUID.Zero;
119 } 119 }
120 120
121 public class DynamicTextureUpdater 121 public class DynamicTextureUpdater
122 { 122 {
123 public LLUUID SimUUID; 123 public LLUUID SimUUID;
124 public LLUUID UpdaterID; 124 public LLUUID UpdaterID;
125 public string ContentType; 125 public string ContentType;
126 public string Url; 126 public string Url;
127 public string BodyData; 127 public string BodyData;
128 public LLUUID PrimID; 128 public LLUUID PrimID;
129 public int UpdateTimer; 129 public int UpdateTimer;
130 public LLUUID LastAssetID; 130 public LLUUID LastAssetID;
131 public string Params; 131 public string Params;
132 132
133 public DynamicTextureUpdater() 133 public DynamicTextureUpdater()
134 { 134 {
135 LastAssetID = LLUUID.Zero; 135 LastAssetID = LLUUID.Zero;
136 UpdateTimer = 0; 136 UpdateTimer = 0;
137 BodyData = null; 137 BodyData = null;
138 } 138 }
139 139
140 public void DataReceived(byte[] data, Scene scene) 140 public void DataReceived(byte[] data, Scene scene)
141 { 141 {
142 //TODO delete the last asset(data), if it was a dynamic texture 142 //TODO delete the last asset(data), if it was a dynamic texture
143 143
144 AssetBase asset = new AssetBase(); 144 AssetBase asset = new AssetBase();
145 asset.FullID = LLUUID.Random(); 145 asset.FullID = LLUUID.Random();
146 asset.Data = data; 146 asset.Data = data;
147 asset.Name = "DynamicImage" + Util.RandomClass.Next(1, 10000); 147 asset.Name = "DynamicImage" + Util.RandomClass.Next(1, 10000);
148 asset.Type = 0; 148 asset.Type = 0;
149 scene.commsManager.AssetCache.AddAsset(asset); 149 scene.commsManager.AssetCache.AddAsset(asset);
150 150
151 this.LastAssetID = asset.FullID; 151 this.LastAssetID = asset.FullID;
152 152
153 SceneObjectPart part = scene.GetSceneObjectPart(PrimID); 153 SceneObjectPart part = scene.GetSceneObjectPart(PrimID);
154 part.Shape.TextureEntry = new LLObject.TextureEntry(asset.FullID).ToBytes(); 154 part.Shape.TextureEntry = new LLObject.TextureEntry(asset.FullID).ToBytes();
155 part.ScheduleFullUpdate(); 155 part.ScheduleFullUpdate();
156 } 156 }
157 } 157 }
158 } 158 }
159} 159}
diff --git a/OpenSim/Region/Environment/Modules/EmailModule.cs b/OpenSim/Region/Environment/Modules/EmailModule.cs
index 2a90dd3..fff9539 100644
--- a/OpenSim/Region/Environment/Modules/EmailModule.cs
+++ b/OpenSim/Region/Environment/Modules/EmailModule.cs
@@ -1,10 +1,10 @@
1using System; 1using System;
2using System.Collections.Generic; 2using System.Collections.Generic;
3using System.Text; 3using System.Text;
4 4
5namespace OpenSim.Region.Environment.Modules 5namespace OpenSim.Region.Environment.Modules
6{ 6{
7 class EmailModule 7 class EmailModule
8 { 8 {
9 } 9 }
10} 10}
diff --git a/OpenSim/Region/Environment/Modules/FriendsModule.cs b/OpenSim/Region/Environment/Modules/FriendsModule.cs
index d46039c..411b838 100644
--- a/OpenSim/Region/Environment/Modules/FriendsModule.cs
+++ b/OpenSim/Region/Environment/Modules/FriendsModule.cs
@@ -1,40 +1,40 @@
1using System; 1using System;
2using System.Collections.Generic; 2using System.Collections.Generic;
3using System.Text; 3using System.Text;
4using libsecondlife; 4using libsecondlife;
5using OpenSim.Framework.Interfaces; 5using OpenSim.Framework.Interfaces;
6using OpenSim.Region.Environment.Scenes; 6using OpenSim.Region.Environment.Scenes;
7using OpenSim.Region.Environment.Interfaces; 7using OpenSim.Region.Environment.Interfaces;
8 8
9 9
10namespace OpenSim.Region.Environment.Modules 10namespace OpenSim.Region.Environment.Modules
11{ 11{
12 public class FriendsModule : IRegionModule 12 public class FriendsModule : IRegionModule
13 { 13 {
14 private Scene m_scene; 14 private Scene m_scene;
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 } 19 }
20 20
21 public void PostInitialise() 21 public void PostInitialise()
22 { 22 {
23 23
24 } 24 }
25 25
26 public void CloseDown() 26 public void CloseDown()
27 { 27 {
28 } 28 }
29 29
30 public string GetName() 30 public string GetName()
31 { 31 {
32 return "FriendsModule"; 32 return "FriendsModule";
33 } 33 }
34 34
35 public bool IsSharedModule() 35 public bool IsSharedModule()
36 { 36 {
37 return false; 37 return false;
38 } 38 }
39 } 39 }
40} 40}
diff --git a/OpenSim/Region/Environment/Modules/GroupsModule.cs b/OpenSim/Region/Environment/Modules/GroupsModule.cs
index 8e4b409..9ed0e96 100644
--- a/OpenSim/Region/Environment/Modules/GroupsModule.cs
+++ b/OpenSim/Region/Environment/Modules/GroupsModule.cs
@@ -1,40 +1,40 @@
1using System; 1using System;
2using System.Collections.Generic; 2using System.Collections.Generic;
3using System.Text; 3using System.Text;
4using libsecondlife; 4using libsecondlife;
5using OpenSim.Framework.Interfaces; 5using OpenSim.Framework.Interfaces;
6using OpenSim.Region.Environment.Scenes; 6using OpenSim.Region.Environment.Scenes;
7using OpenSim.Region.Environment.Interfaces; 7using OpenSim.Region.Environment.Interfaces;
8 8
9namespace OpenSim.Region.Environment.Modules 9namespace OpenSim.Region.Environment.Modules
10{ 10{
11 public class GroupsModule : IRegionModule 11 public class GroupsModule : IRegionModule
12 { 12 {
13 private Scene m_scene; 13 private Scene m_scene;
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 } 18 }
19 19
20 public void PostInitialise() 20 public void PostInitialise()
21 { 21 {
22 22
23 } 23 }
24 24
25 public void CloseDown() 25 public void CloseDown()
26 { 26 {
27 } 27 }
28 28
29 public string GetName() 29 public string GetName()
30 { 30 {
31 return "GroupsModule"; 31 return "GroupsModule";
32 } 32 }
33 33
34 public bool IsSharedModule() 34 public bool IsSharedModule()
35 { 35 {
36 return false; 36 return false;
37 } 37 }
38 } 38 }
39} 39}
40 40
diff --git a/OpenSim/Region/Environment/Modules/InstantMessageModule.cs b/OpenSim/Region/Environment/Modules/InstantMessageModule.cs
index acf031b..25c118a 100644
--- a/OpenSim/Region/Environment/Modules/InstantMessageModule.cs
+++ b/OpenSim/Region/Environment/Modules/InstantMessageModule.cs
@@ -1,40 +1,40 @@
1using System; 1using System;
2using System.Collections.Generic; 2using System.Collections.Generic;
3using System.Text; 3using System.Text;
4using libsecondlife; 4using libsecondlife;
5using OpenSim.Framework.Interfaces; 5using OpenSim.Framework.Interfaces;
6using OpenSim.Region.Environment.Scenes; 6using OpenSim.Region.Environment.Scenes;
7using OpenSim.Region.Environment.Interfaces; 7using OpenSim.Region.Environment.Interfaces;
8 8
9 9
10namespace OpenSim.Region.Environment.Modules 10namespace OpenSim.Region.Environment.Modules
11{ 11{
12 public class InstantMessageModule :IRegionModule 12 public class InstantMessageModule :IRegionModule
13 { 13 {
14 private Scene m_scene; 14 private Scene m_scene;
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 } 19 }
20 20
21 public void PostInitialise() 21 public void PostInitialise()
22 { 22 {
23 23
24 } 24 }
25 25
26 public void CloseDown() 26 public void CloseDown()
27 { 27 {
28 } 28 }
29 29
30 public string GetName() 30 public string GetName()
31 { 31 {
32 return "InstantMessageModule"; 32 return "InstantMessageModule";
33 } 33 }
34 34
35 public bool IsSharedModule() 35 public bool IsSharedModule()
36 { 36 {
37 return false; 37 return false;
38 } 38 }
39 } 39 }
40} 40}
diff --git a/OpenSim/Region/Environment/Modules/InventoryModule.cs b/OpenSim/Region/Environment/Modules/InventoryModule.cs
index 00b4d8e..bfcb7d7 100644
--- a/OpenSim/Region/Environment/Modules/InventoryModule.cs
+++ b/OpenSim/Region/Environment/Modules/InventoryModule.cs
@@ -1,40 +1,40 @@
1using System; 1using System;
2using System.Collections.Generic; 2using System.Collections.Generic;
3using System.Text; 3using System.Text;
4using libsecondlife; 4using libsecondlife;
5using OpenSim.Framework.Interfaces; 5using OpenSim.Framework.Interfaces;
6using OpenSim.Region.Environment.Scenes; 6using OpenSim.Region.Environment.Scenes;
7using OpenSim.Region.Environment.Interfaces; 7using OpenSim.Region.Environment.Interfaces;
8 8
9 9
10namespace OpenSim.Region.Environment.Modules 10namespace OpenSim.Region.Environment.Modules
11{ 11{
12 public class InventoryModule :IRegionModule 12 public class InventoryModule :IRegionModule
13 { 13 {
14 private Scene m_scene; 14 private Scene m_scene;
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 } 19 }
20 20
21 public void PostInitialise() 21 public void PostInitialise()
22 { 22 {
23 23
24 } 24 }
25 25
26 public void CloseDown() 26 public void CloseDown()
27 { 27 {
28 } 28 }
29 29
30 public string GetName() 30 public string GetName()
31 { 31 {
32 return "InventoryModule"; 32 return "InventoryModule";
33 } 33 }
34 34
35 public bool IsSharedModule() 35 public bool IsSharedModule()
36 { 36 {
37 return false; 37 return false;
38 } 38 }
39 } 39 }
40} 40}
diff --git a/OpenSim/Region/Environment/Modules/ScriptsHttpRequests.cs b/OpenSim/Region/Environment/Modules/ScriptsHttpRequests.cs
index 11af718..e47cc9e 100644
--- a/OpenSim/Region/Environment/Modules/ScriptsHttpRequests.cs
+++ b/OpenSim/Region/Environment/Modules/ScriptsHttpRequests.cs
@@ -1,10 +1,10 @@
1using System; 1using System;
2using System.Collections.Generic; 2using System.Collections.Generic;
3using System.Text; 3using System.Text;
4 4
5namespace OpenSim.Region.Environment.Modules 5namespace OpenSim.Region.Environment.Modules
6{ 6{
7 class ScriptsHttpRequests 7 class ScriptsHttpRequests
8 { 8 {
9 } 9 }
10} 10}
diff --git a/OpenSim/Region/Environment/Modules/TeleportModule.cs b/OpenSim/Region/Environment/Modules/TeleportModule.cs
index 08fc202..1c01b27 100644
--- a/OpenSim/Region/Environment/Modules/TeleportModule.cs
+++ b/OpenSim/Region/Environment/Modules/TeleportModule.cs
@@ -1,10 +1,10 @@
1using System; 1using System;
2using System.Collections.Generic; 2using System.Collections.Generic;
3using System.Text; 3using System.Text;
4 4
5namespace OpenSim.Region.Environment.Modules 5namespace OpenSim.Region.Environment.Modules
6{ 6{
7 class TeleportModule 7 class TeleportModule
8 { 8 {
9 } 9 }
10} 10}
diff --git a/OpenSim/Region/Environment/Modules/TextureDownloadModule.cs b/OpenSim/Region/Environment/Modules/TextureDownloadModule.cs
index 7d31644..59c0839 100644
--- a/OpenSim/Region/Environment/Modules/TextureDownloadModule.cs
+++ b/OpenSim/Region/Environment/Modules/TextureDownloadModule.cs
@@ -1,54 +1,54 @@
1using System; 1using System;
2using System.Collections.Generic; 2using System.Collections.Generic;
3using System.Text; 3using System.Text;
4using libsecondlife; 4using libsecondlife;
5using OpenSim.Framework.Interfaces; 5using OpenSim.Framework.Interfaces;
6using OpenSim.Region.Environment.Scenes; 6using OpenSim.Region.Environment.Scenes;
7using OpenSim.Region.Environment.Interfaces; 7using OpenSim.Region.Environment.Interfaces;
8 8
9namespace OpenSim.Region.Environment.Modules 9namespace OpenSim.Region.Environment.Modules
10{ 10{
11 public class TextureDownloadModule :IRegionModule 11 public class TextureDownloadModule :IRegionModule
12 { 12 {
13 private Scene m_scene; 13 private Scene m_scene;
14 14
15 public TextureDownloadModule() 15 public TextureDownloadModule()
16 { 16 {
17 17
18 } 18 }
19 19
20 public void Initialise(Scene scene) 20 public void Initialise(Scene scene)
21 { 21 {
22 m_scene = scene; 22 m_scene = scene;
23 m_scene.EventManager.OnNewClient += NewClient; 23 m_scene.EventManager.OnNewClient += NewClient;
24 } 24 }
25 25
26 public void PostInitialise() 26 public void PostInitialise()
27 { 27 {
28 28
29 } 29 }
30 30
31 public void CloseDown() 31 public void CloseDown()
32 { 32 {
33 } 33 }
34 34
35 public string GetName() 35 public string GetName()
36 { 36 {
37 return "TextureDownloadModule"; 37 return "TextureDownloadModule";
38 } 38 }
39 39
40 public bool IsSharedModule() 40 public bool IsSharedModule()
41 { 41 {
42 return false; 42 return false;
43 } 43 }
44 44
45 public void NewClient(IClientAPI client) 45 public void NewClient(IClientAPI client)
46 { 46 {
47 } 47 }
48 48
49 public void TextureAssetCallback(LLUUID texture, byte[] data) 49 public void TextureAssetCallback(LLUUID texture, byte[] data)
50 { 50 {
51 51
52 } 52 }
53 } 53 }
54} 54}
diff --git a/OpenSim/Region/Environment/Modules/XferModule.cs b/OpenSim/Region/Environment/Modules/XferModule.cs
index 44b4d7a..216d10a 100644
--- a/OpenSim/Region/Environment/Modules/XferModule.cs
+++ b/OpenSim/Region/Environment/Modules/XferModule.cs
@@ -1,180 +1,180 @@
1using System; 1using System;
2using System.Collections.Generic; 2using System.Collections.Generic;
3using System.Text; 3using System.Text;
4 4
5using libsecondlife; 5using libsecondlife;
6using OpenSim.Framework.Interfaces; 6using OpenSim.Framework.Interfaces;
7using OpenSim.Framework.Utilities; 7using OpenSim.Framework.Utilities;
8using OpenSim.Region.Environment.Scenes; 8using OpenSim.Region.Environment.Scenes;
9using OpenSim.Region.Environment.Interfaces; 9using OpenSim.Region.Environment.Interfaces;
10 10
11namespace OpenSim.Region.Environment.Modules 11namespace OpenSim.Region.Environment.Modules
12{ 12{
13 public class XferModule : IRegionModule, IXfer 13 public class XferModule : IRegionModule, IXfer
14 { 14 {
15 public Dictionary<string, byte[]> NewFiles = new Dictionary<string, byte[]>(); 15 public Dictionary<string, byte[]> NewFiles = new Dictionary<string, byte[]>();
16 public Dictionary<ulong, XferDownLoad> Transfers = new Dictionary<ulong, XferDownLoad>(); 16 public Dictionary<ulong, XferDownLoad> Transfers = new Dictionary<ulong, XferDownLoad>();
17 17
18 private Scene m_scene; 18 private Scene m_scene;
19 19
20 public XferModule() 20 public XferModule()
21 { 21 {
22 22
23 } 23 }
24 24
25 public void Initialise(Scene scene) 25 public void Initialise(Scene scene)
26 { 26 {
27 m_scene = scene; 27 m_scene = scene;
28 m_scene.EventManager.OnNewClient += NewClient; 28 m_scene.EventManager.OnNewClient += NewClient;
29 29
30 m_scene.RegisterModuleInterface<IXfer>(this); 30 m_scene.RegisterModuleInterface<IXfer>(this);
31 } 31 }
32 32
33 public void PostInitialise() 33 public void PostInitialise()
34 { 34 {
35 35
36 } 36 }
37 37
38 public void CloseDown() 38 public void CloseDown()
39 { 39 {
40 40
41 } 41 }
42 42
43 public string GetName() 43 public string GetName()
44 { 44 {
45 return "XferModule"; 45 return "XferModule";
46 } 46 }
47 47
48 public bool IsSharedModule() 48 public bool IsSharedModule()
49 { 49 {
50 return false; 50 return false;
51 } 51 }
52 52
53 public void NewClient(IClientAPI client) 53 public void NewClient(IClientAPI client)
54 { 54 {
55 client.OnRequestXfer += RequestXfer; 55 client.OnRequestXfer += RequestXfer;
56 client.OnConfirmXfer += AckPacket; 56 client.OnConfirmXfer += AckPacket;
57 } 57 }
58 58
59 /// <summary> 59 /// <summary>
60 /// 60 ///
61 /// </summary> 61 /// </summary>
62 /// <param name="remoteClient"></param> 62 /// <param name="remoteClient"></param>
63 /// <param name="xferID"></param> 63 /// <param name="xferID"></param>
64 /// <param name="fileName"></param> 64 /// <param name="fileName"></param>
65 public void RequestXfer(IClientAPI remoteClient, ulong xferID, string fileName) 65 public void RequestXfer(IClientAPI remoteClient, ulong xferID, string fileName)
66 { 66 {
67 lock (NewFiles) 67 lock (NewFiles)
68 { 68 {
69 if (NewFiles.ContainsKey(fileName)) 69 if (NewFiles.ContainsKey(fileName))
70 { 70 {
71 if (!Transfers.ContainsKey(xferID)) 71 if (!Transfers.ContainsKey(xferID))
72 { 72 {
73 byte[] fileData = NewFiles[fileName]; 73 byte[] fileData = NewFiles[fileName];
74 XferDownLoad transaction = new XferDownLoad(fileName, fileData, xferID, remoteClient); 74 XferDownLoad transaction = new XferDownLoad(fileName, fileData, xferID, remoteClient);
75 Transfers.Add(xferID, transaction); 75 Transfers.Add(xferID, transaction);
76 NewFiles.Remove(fileName); 76 NewFiles.Remove(fileName);
77 transaction.StartSend(); 77 transaction.StartSend();
78 } 78 }
79 } 79 }
80 } 80 }
81 } 81 }
82 82
83 public void AckPacket(IClientAPI remoteClient, ulong xferID, uint packet) 83 public void AckPacket(IClientAPI remoteClient, ulong xferID, uint packet)
84 { 84 {
85 if (this.Transfers.ContainsKey(xferID)) 85 if (this.Transfers.ContainsKey(xferID))
86 { 86 {
87 Transfers[xferID].AckPacket(packet); 87 Transfers[xferID].AckPacket(packet);
88 } 88 }
89 } 89 }
90 90
91 public bool AddNewFile(string fileName, byte[] data) 91 public bool AddNewFile(string fileName, byte[] data)
92 { 92 {
93 lock (NewFiles) 93 lock (NewFiles)
94 { 94 {
95 if (NewFiles.ContainsKey(fileName)) 95 if (NewFiles.ContainsKey(fileName))
96 { 96 {
97 NewFiles[fileName] = data; 97 NewFiles[fileName] = data;
98 } 98 }
99 else 99 else
100 { 100 {
101 NewFiles.Add(fileName, data); 101 NewFiles.Add(fileName, data);
102 } 102 }
103 } 103 }
104 return true; 104 return true;
105 } 105 }
106 106
107 107
108 public class XferDownLoad 108 public class XferDownLoad
109 { 109 {
110 public byte[] Data = new byte[0]; 110 public byte[] Data = new byte[0];
111 public string FileName = ""; 111 public string FileName = "";
112 public ulong XferID = 0; 112 public ulong XferID = 0;
113 public int DataPointer = 0; 113 public int DataPointer = 0;
114 public uint Packet = 0; 114 public uint Packet = 0;
115 public IClientAPI Client; 115 public IClientAPI Client;
116 public uint Serial = 1; 116 public uint Serial = 1;
117 private bool complete = false; 117 private bool complete = false;
118 118
119 public XferDownLoad(string fileName, byte[] data, ulong xferID, IClientAPI client) 119 public XferDownLoad(string fileName, byte[] data, ulong xferID, IClientAPI client)
120 { 120 {
121 FileName = fileName; 121 FileName = fileName;
122 Data = data; 122 Data = data;
123 XferID = xferID; 123 XferID = xferID;
124 Client = client; 124 Client = client;
125 } 125 }
126 126
127 public XferDownLoad() 127 public XferDownLoad()
128 { 128 {
129 129
130 } 130 }
131 131
132 public void StartSend() 132 public void StartSend()
133 { 133 {
134 if (Data.Length < 1000) 134 if (Data.Length < 1000)
135 { 135 {
136 // for now (testing ) we only support files under 1000 bytes 136 // for now (testing ) we only support files under 1000 bytes
137 byte[] transferData = new byte[Data.Length + 4]; 137 byte[] transferData = new byte[Data.Length + 4];
138 Array.Copy(Helpers.IntToBytes(Data.Length), 0, transferData, 0, 4); 138 Array.Copy(Helpers.IntToBytes(Data.Length), 0, transferData, 0, 4);
139 Array.Copy(Data, 0, transferData, 4, Data.Length); 139 Array.Copy(Data, 0, transferData, 4, Data.Length);
140 Client.SendXferPacket(XferID, 0 + 0x80000000, transferData); 140 Client.SendXferPacket(XferID, 0 + 0x80000000, transferData);
141 complete = true; 141 complete = true;
142 } 142 }
143 else 143 else
144 { 144 {
145 byte[] transferData = new byte[1000 +4]; 145 byte[] transferData = new byte[1000 +4];
146 Array.Copy(Helpers.IntToBytes(Data.Length), 0, transferData, 0, 4); 146 Array.Copy(Helpers.IntToBytes(Data.Length), 0, transferData, 0, 4);
147 Array.Copy(Data, 0, transferData, 4, 1000); 147 Array.Copy(Data, 0, transferData, 4, 1000);
148 Client.SendXferPacket(XferID, 0 , transferData); 148 Client.SendXferPacket(XferID, 0 , transferData);
149 Packet++; 149 Packet++;
150 DataPointer = 1000; 150 DataPointer = 1000;
151 } 151 }
152 } 152 }
153 153
154 public void AckPacket(uint packet) 154 public void AckPacket(uint packet)
155 { 155 {
156 if (!complete) 156 if (!complete)
157 { 157 {
158 if ((Data.Length - DataPointer) > 1000) 158 if ((Data.Length - DataPointer) > 1000)
159 { 159 {
160 byte[] transferData = new byte[1000]; 160 byte[] transferData = new byte[1000];
161 Array.Copy(Data, DataPointer, transferData, 0, 1000); 161 Array.Copy(Data, DataPointer, transferData, 0, 1000);
162 Client.SendXferPacket(XferID, Packet, transferData); 162 Client.SendXferPacket(XferID, Packet, transferData);
163 Packet++; 163 Packet++;
164 DataPointer += 1000; 164 DataPointer += 1000;
165 } 165 }
166 else 166 else
167 { 167 {
168 byte[] transferData = new byte[Data.Length - DataPointer]; 168 byte[] transferData = new byte[Data.Length - DataPointer];
169 Array.Copy(Data, DataPointer, transferData, 0, Data.Length - DataPointer); 169 Array.Copy(Data, DataPointer, transferData, 0, Data.Length - DataPointer);
170 uint endPacket = Packet |= (uint)0x80000000; 170 uint endPacket = Packet |= (uint)0x80000000;
171 Client.SendXferPacket(XferID, endPacket, transferData); 171 Client.SendXferPacket(XferID, endPacket, transferData);
172 Packet++; 172 Packet++;
173 DataPointer += (Data.Length - DataPointer); 173 DataPointer += (Data.Length - DataPointer);
174 complete = true; 174 complete = true;
175 } 175 }
176 } 176 }
177 } 177 }
178 } 178 }
179 } 179 }
180} 180}
diff --git a/OpenSim/Region/Environment/PermissionManager.cs b/OpenSim/Region/Environment/PermissionManager.cs
index 110a130..cb455f4 100644
--- a/OpenSim/Region/Environment/PermissionManager.cs
+++ b/OpenSim/Region/Environment/PermissionManager.cs
@@ -1,305 +1,305 @@
1using System.Collections.Generic; 1using System.Collections.Generic;
2using OpenSim.Framework; 2using OpenSim.Framework;
3using OpenSim.Framework.Types; 3using OpenSim.Framework.Types;
4using OpenSim.Framework.Communications; 4using OpenSim.Framework.Communications;
5using OpenSim.Framework.Servers; 5using OpenSim.Framework.Servers;
6using OpenSim.Region.Capabilities; 6using OpenSim.Region.Capabilities;
7using OpenSim.Region.Environment.Scenes; 7using OpenSim.Region.Environment.Scenes;
8using OpenSim.Region.Environment.LandManagement; 8using OpenSim.Region.Environment.LandManagement;
9 9
10using libsecondlife; 10using libsecondlife;
11 11
12namespace OpenSim.Region.Environment 12namespace OpenSim.Region.Environment
13{ 13{
14 public class PermissionManager 14 public class PermissionManager
15 { 15 {
16 protected Scene m_scene; 16 protected Scene m_scene;
17 17
18 // Bypasses the permissions engine (always returns OK) 18 // Bypasses the permissions engine (always returns OK)
19 // disable in any production environment 19 // disable in any production environment
20 // TODO: Change this to false when permissions are a desired default 20 // TODO: Change this to false when permissions are a desired default
21 // TODO: Move to configuration option. 21 // TODO: Move to configuration option.
22 private bool m_bypassPermissions = true; 22 private bool m_bypassPermissions = true;
23 public bool BypassPermissions 23 public bool BypassPermissions
24 { 24 {
25 get { return m_bypassPermissions; } 25 get { return m_bypassPermissions; }
26 set { m_bypassPermissions = value; } 26 set { m_bypassPermissions = value; }
27 } 27 }
28 28
29 29
30 public PermissionManager(Scene scene) 30 public PermissionManager(Scene scene)
31 { 31 {
32 m_scene = scene; 32 m_scene = scene;
33 } 33 }
34 34
35 protected virtual void SendPermissionError(LLUUID user, string reason) 35 protected virtual void SendPermissionError(LLUUID user, string reason)
36 { 36 {
37 m_scene.EventManager.TriggerPermissionError(user, reason); 37 m_scene.EventManager.TriggerPermissionError(user, reason);
38 } 38 }
39 39
40 protected virtual bool IsAdministrator(LLUUID user) 40 protected virtual bool IsAdministrator(LLUUID user)
41 { 41 {
42 if (m_bypassPermissions) 42 if (m_bypassPermissions)
43 { 43 {
44 return true; 44 return true;
45 } 45 }
46 46
47 return m_scene.RegionInfo.MasterAvatarAssignedUUID == user; 47 return m_scene.RegionInfo.MasterAvatarAssignedUUID == user;
48 } 48 }
49 49
50 protected virtual bool IsEstateManager(LLUUID user) 50 protected virtual bool IsEstateManager(LLUUID user)
51 { 51 {
52 if (m_bypassPermissions) 52 if (m_bypassPermissions)
53 { 53 {
54 return true; 54 return true;
55 } 55 }
56 56
57 return false; 57 return false;
58 } 58 }
59 59
60 protected virtual bool IsGridUser(LLUUID user) 60 protected virtual bool IsGridUser(LLUUID user)
61 { 61 {
62 return true; 62 return true;
63 } 63 }
64 64
65 protected virtual bool IsGuest(LLUUID user) 65 protected virtual bool IsGuest(LLUUID user)
66 { 66 {
67 return false; 67 return false;
68 } 68 }
69 69
70 public virtual bool CanRezObject(LLUUID user, LLVector3 position) 70 public virtual bool CanRezObject(LLUUID user, LLVector3 position)
71 { 71 {
72 bool permission = false; 72 bool permission = false;
73 73
74 string reason = "Insufficient permission"; 74 string reason = "Insufficient permission";
75 75
76 if (IsAdministrator(user)) 76 if (IsAdministrator(user))
77 { 77 {
78 permission = true; 78 permission = true;
79 } 79 }
80 else 80 else
81 { 81 {
82 reason = "Not an administrator"; 82 reason = "Not an administrator";
83 } 83 }
84 84
85 if (GenericParcelPermission(user, position)) 85 if (GenericParcelPermission(user, position))
86 { 86 {
87 permission = true; 87 permission = true;
88 } 88 }
89 else 89 else
90 { 90 {
91 reason = "Not the parcel owner"; 91 reason = "Not the parcel owner";
92 } 92 }
93 93
94 if (!permission) 94 if (!permission)
95 SendPermissionError(user, reason); 95 SendPermissionError(user, reason);
96 96
97 return permission; 97 return permission;
98 } 98 }
99 99
100 #region Object Permissions 100 #region Object Permissions
101 101
102 protected virtual bool GenericObjectPermission(LLUUID user, LLUUID objId) 102 protected virtual bool GenericObjectPermission(LLUUID user, LLUUID objId)
103 { 103 {
104 // Default: deny 104 // Default: deny
105 bool permission = false; 105 bool permission = false;
106 106
107 if( !m_scene.Entities.ContainsKey( objId )) 107 if( !m_scene.Entities.ContainsKey( objId ))
108 { 108 {
109 return false; 109 return false;
110 } 110 }
111 111
112 // If it's not an object, we cant edit it. 112 // If it's not an object, we cant edit it.
113 if (!(m_scene.Entities[objId] is SceneObjectGroup)) 113 if (!(m_scene.Entities[objId] is SceneObjectGroup))
114 { 114 {
115 return false; 115 return false;
116 } 116 }
117 117
118 SceneObjectGroup task = (SceneObjectGroup)m_scene.Entities[objId]; 118 SceneObjectGroup task = (SceneObjectGroup)m_scene.Entities[objId];
119 LLUUID taskOwner = null; 119 LLUUID taskOwner = null;
120 120
121 // Object owners should be able to edit their own content 121 // Object owners should be able to edit their own content
122 if (user == taskOwner) 122 if (user == taskOwner)
123 permission = true; 123 permission = true;
124 124
125 // Users should be able to edit what is over their land. 125 // Users should be able to edit what is over their land.
126 if (m_scene.LandManager.getLandObject(task.AbsolutePosition.X, task.AbsolutePosition.Y).landData.ownerID == user) 126 if (m_scene.LandManager.getLandObject(task.AbsolutePosition.X, task.AbsolutePosition.Y).landData.ownerID == user)
127 permission = true; 127 permission = true;
128 128
129 // Estate users should be able to edit anything in the sim 129 // Estate users should be able to edit anything in the sim
130 if (IsEstateManager(user)) 130 if (IsEstateManager(user))
131 permission = true; 131 permission = true;
132 132
133 // Admin objects should not be editable by the above 133 // Admin objects should not be editable by the above
134 if (IsAdministrator(taskOwner)) 134 if (IsAdministrator(taskOwner))
135 permission = false; 135 permission = false;
136 136
137 // Admin should be able to edit anything in the sim (including admin objects) 137 // Admin should be able to edit anything in the sim (including admin objects)
138 if (IsAdministrator(user)) 138 if (IsAdministrator(user))
139 permission = true; 139 permission = true;
140 140
141 return permission; 141 return permission;
142 } 142 }
143 143
144 /// <summary> 144 /// <summary>
145 /// Permissions check - can user delete an object? 145 /// Permissions check - can user delete an object?
146 /// </summary> 146 /// </summary>
147 /// <param name="user">User attempting the delete</param> 147 /// <param name="user">User attempting the delete</param>
148 /// <param name="obj">Target object</param> 148 /// <param name="obj">Target object</param>
149 /// <returns>Has permission?</returns> 149 /// <returns>Has permission?</returns>
150 public virtual bool CanDeRezObject(LLUUID user, LLUUID obj) 150 public virtual bool CanDeRezObject(LLUUID user, LLUUID obj)
151 { 151 {
152 return GenericObjectPermission(user, obj); 152 return GenericObjectPermission(user, obj);
153 } 153 }
154 154
155 public virtual bool CanEditObject(LLUUID user, LLUUID obj) 155 public virtual bool CanEditObject(LLUUID user, LLUUID obj)
156 { 156 {
157 return GenericObjectPermission(user, obj); 157 return GenericObjectPermission(user, obj);
158 } 158 }
159 159
160 public virtual bool CanReturnObject(LLUUID user, LLUUID obj) 160 public virtual bool CanReturnObject(LLUUID user, LLUUID obj)
161 { 161 {
162 return GenericObjectPermission(user, obj); 162 return GenericObjectPermission(user, obj);
163 } 163 }
164 164
165 #endregion 165 #endregion
166 166
167 #region Communication Permissions 167 #region Communication Permissions
168 168
169 public virtual bool GenericCommunicationPermission(LLUUID user, LLUUID target) 169 public virtual bool GenericCommunicationPermission(LLUUID user, LLUUID target)
170 { 170 {
171 bool permission = false; 171 bool permission = false;
172 string reason = "Only registered users may communicate with another account."; 172 string reason = "Only registered users may communicate with another account.";
173 173
174 if (IsGridUser(user)) 174 if (IsGridUser(user))
175 permission = true; 175 permission = true;
176 176
177 if (!IsGridUser(user)) 177 if (!IsGridUser(user))
178 { 178 {
179 permission = false; 179 permission = false;
180 reason = "The person that you are messaging is not a registered user."; 180 reason = "The person that you are messaging is not a registered user.";
181 } 181 }
182 if (IsAdministrator(user)) 182 if (IsAdministrator(user))
183 permission = true; 183 permission = true;
184 184
185 if (IsEstateManager(user)) 185 if (IsEstateManager(user))
186 permission = true; 186 permission = true;
187 187
188 if (!permission) 188 if (!permission)
189 SendPermissionError(user, reason); 189 SendPermissionError(user, reason);
190 190
191 return permission; 191 return permission;
192 } 192 }
193 193
194 public virtual bool CanInstantMessage(LLUUID user, LLUUID target) 194 public virtual bool CanInstantMessage(LLUUID user, LLUUID target)
195 { 195 {
196 return GenericCommunicationPermission(user, target); 196 return GenericCommunicationPermission(user, target);
197 } 197 }
198 198
199 public virtual bool CanInventoryTransfer(LLUUID user, LLUUID target) 199 public virtual bool CanInventoryTransfer(LLUUID user, LLUUID target)
200 { 200 {
201 return GenericCommunicationPermission(user, target); 201 return GenericCommunicationPermission(user, target);
202 } 202 }
203 203
204 #endregion 204 #endregion
205 205
206 public virtual bool CanEditScript(LLUUID user, LLUUID script) 206 public virtual bool CanEditScript(LLUUID user, LLUUID script)
207 { 207 {
208 return IsAdministrator(user); 208 return IsAdministrator(user);
209 } 209 }
210 210
211 public virtual bool CanRunScript(LLUUID user, LLUUID script) 211 public virtual bool CanRunScript(LLUUID user, LLUUID script)
212 { 212 {
213 return IsAdministrator(user); 213 return IsAdministrator(user);
214 } 214 }
215 215
216 public virtual bool CanTerraform(LLUUID user, LLVector3 position) 216 public virtual bool CanTerraform(LLUUID user, LLVector3 position)
217 { 217 {
218 bool permission = false; 218 bool permission = false;
219 219
220 // Estate override 220 // Estate override
221 if (GenericEstatePermission(user)) 221 if (GenericEstatePermission(user))
222 permission = true; 222 permission = true;
223 223
224 // Land owner can terraform too 224 // Land owner can terraform too
225 if (GenericParcelPermission(user, m_scene.LandManager.getLandObject(position.X, position.Y))) 225 if (GenericParcelPermission(user, m_scene.LandManager.getLandObject(position.X, position.Y)))
226 permission = true; 226 permission = true;
227 227
228 if (!permission) 228 if (!permission)
229 SendPermissionError(user, "Not authorized to terraform at this location."); 229 SendPermissionError(user, "Not authorized to terraform at this location.");
230 230
231 return permission; 231 return permission;
232 } 232 }
233 233
234 #region Estate Permissions 234 #region Estate Permissions
235 235
236 protected virtual bool GenericEstatePermission(LLUUID user) 236 protected virtual bool GenericEstatePermission(LLUUID user)
237 { 237 {
238 // Default: deny 238 // Default: deny
239 bool permission = false; 239 bool permission = false;
240 240
241 // Estate admins should be able to use estate tools 241 // Estate admins should be able to use estate tools
242 if (IsEstateManager(user)) 242 if (IsEstateManager(user))
243 permission = true; 243 permission = true;
244 244
245 // Administrators always have permission 245 // Administrators always have permission
246 if (IsAdministrator(user)) 246 if (IsAdministrator(user))
247 permission = true; 247 permission = true;
248 248
249 return permission; 249 return permission;
250 } 250 }
251 251
252 public virtual bool CanEditEstateTerrain(LLUUID user) 252 public virtual bool CanEditEstateTerrain(LLUUID user)
253 { 253 {
254 return GenericEstatePermission(user); 254 return GenericEstatePermission(user);
255 } 255 }
256 256
257 #endregion 257 #endregion
258 258
259 #region Parcel Permissions 259 #region Parcel Permissions
260 260
261 protected virtual bool GenericParcelPermission(LLUUID user, Land parcel) 261 protected virtual bool GenericParcelPermission(LLUUID user, Land parcel)
262 { 262 {
263 bool permission = false; 263 bool permission = false;
264 264
265 if (parcel.landData.ownerID == user) 265 if (parcel.landData.ownerID == user)
266 permission = true; 266 permission = true;
267 267
268 if (parcel.landData.isGroupOwned) 268 if (parcel.landData.isGroupOwned)
269 { 269 {
270 // TODO: Need to do some extra checks here. Requires group code. 270 // TODO: Need to do some extra checks here. Requires group code.
271 } 271 }
272 272
273 if(IsEstateManager(user)) 273 if(IsEstateManager(user))
274 permission = true; 274 permission = true;
275 275
276 if (IsAdministrator(user)) 276 if (IsAdministrator(user))
277 permission = true; 277 permission = true;
278 278
279 return permission; 279 return permission;
280 } 280 }
281 281
282 protected virtual bool GenericParcelPermission(LLUUID user, LLVector3 pos) 282 protected virtual bool GenericParcelPermission(LLUUID user, LLVector3 pos)
283 { 283 {
284 return GenericParcelPermission(user, m_scene.LandManager.getLandObject(pos.X, pos.Y)); 284 return GenericParcelPermission(user, m_scene.LandManager.getLandObject(pos.X, pos.Y));
285 } 285 }
286 286
287 public virtual bool CanEditParcel(LLUUID user, Land parcel) 287 public virtual bool CanEditParcel(LLUUID user, Land parcel)
288 { 288 {
289 return GenericParcelPermission(user, parcel); 289 return GenericParcelPermission(user, parcel);
290 } 290 }
291 291
292 public virtual bool CanSellParcel(LLUUID user, Land parcel) 292 public virtual bool CanSellParcel(LLUUID user, Land parcel)
293 { 293 {
294 return GenericParcelPermission(user, parcel); 294 return GenericParcelPermission(user, parcel);
295 } 295 }
296 296
297 public virtual bool CanAbandonParcel(LLUUID user, Land parcel) 297 public virtual bool CanAbandonParcel(LLUUID user, Land parcel)
298 { 298 {
299 return GenericParcelPermission(user, parcel); 299 return GenericParcelPermission(user, parcel);
300 } 300 }
301 301
302 #endregion 302 #endregion
303 303
304 } 304 }
305} 305}
diff --git a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs
index 70b34cf..a259dd0 100644
--- a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs
+++ b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs
@@ -1,427 +1,427 @@
1using System; 1using System;
2using System.IO; 2using System.IO;
3using System.Collections.Generic; 3using System.Collections.Generic;
4using libsecondlife; 4using libsecondlife;
5using libsecondlife.Packets; 5using libsecondlife.Packets;
6using OpenSim.Framework.Interfaces; 6using OpenSim.Framework.Interfaces;
7using OpenSim.Framework.Types; 7using OpenSim.Framework.Types;
8using OpenSim.Framework.Communications.Caches; 8using OpenSim.Framework.Communications.Caches;
9using OpenSim.Framework.Data; 9using OpenSim.Framework.Data;
10using OpenSim.Framework.Utilities; 10using OpenSim.Framework.Utilities;
11using OpenSim.Region.Physics.Manager; 11using OpenSim.Region.Physics.Manager;
12 12
13namespace OpenSim.Region.Environment.Scenes 13namespace OpenSim.Region.Environment.Scenes
14{ 14{
15 public partial class Scene 15 public partial class Scene
16 { 16 {
17 //split these method into this partial as a lot of these (hopefully) are only temporary and won't be needed once Caps is more complete 17 //split these method into this partial as a lot of these (hopefully) are only temporary and won't be needed once Caps is more complete
18 // or at least some of they can be moved somewhere else 18 // or at least some of they can be moved somewhere else
19 19
20 public void AddInventoryItem(LLUUID userID, InventoryItemBase item) 20 public void AddInventoryItem(LLUUID userID, InventoryItemBase item)
21 { 21 {
22 if (this.Avatars.ContainsKey(userID)) 22 if (this.Avatars.ContainsKey(userID))
23 { 23 {
24 this.AddInventoryItem(this.Avatars[userID].ControllingClient, item); 24 this.AddInventoryItem(this.Avatars[userID].ControllingClient, item);
25 } 25 }
26 } 26 }
27 27
28 public void AddInventoryItem(IClientAPI remoteClient, InventoryItemBase item) 28 public void AddInventoryItem(IClientAPI remoteClient, InventoryItemBase item)
29 { 29 {
30 CachedUserInfo userInfo = commsManager.UserProfiles.GetUserDetails(remoteClient.AgentId); 30 CachedUserInfo userInfo = commsManager.UserProfiles.GetUserDetails(remoteClient.AgentId);
31 if (userInfo != null) 31 if (userInfo != null)
32 { 32 {
33 userInfo.AddItem(remoteClient.AgentId, item); 33 userInfo.AddItem(remoteClient.AgentId, item);
34 remoteClient.SendInventoryItemUpdate(item); 34 remoteClient.SendInventoryItemUpdate(item);
35 } 35 }
36 } 36 }
37 37
38 public LLUUID CapsUpdateInventoryItemAsset(LLUUID userID, LLUUID itemID, byte[] data) 38 public LLUUID CapsUpdateInventoryItemAsset(LLUUID userID, LLUUID itemID, byte[] data)
39 { 39 {
40 if (this.Avatars.ContainsKey(userID)) 40 if (this.Avatars.ContainsKey(userID))
41 { 41 {
42 return this.CapsUpdateInventoryItemAsset(this.Avatars[userID].ControllingClient, itemID, data); 42 return this.CapsUpdateInventoryItemAsset(this.Avatars[userID].ControllingClient, itemID, data);
43 } 43 }
44 return LLUUID.Zero; 44 return LLUUID.Zero;
45 } 45 }
46 46
47 public LLUUID CapsUpdateInventoryItemAsset(IClientAPI remoteClient, LLUUID itemID, byte[] data) 47 public LLUUID CapsUpdateInventoryItemAsset(IClientAPI remoteClient, LLUUID itemID, byte[] data)
48 { 48 {
49 CachedUserInfo userInfo = commsManager.UserProfiles.GetUserDetails(remoteClient.AgentId); 49 CachedUserInfo userInfo = commsManager.UserProfiles.GetUserDetails(remoteClient.AgentId);
50 if (userInfo != null) 50 if (userInfo != null)
51 { 51 {
52 if (userInfo.RootFolder != null) 52 if (userInfo.RootFolder != null)
53 { 53 {
54 InventoryItemBase item = userInfo.RootFolder.HasItem(itemID); 54 InventoryItemBase item = userInfo.RootFolder.HasItem(itemID);
55 if (item != null) 55 if (item != null)
56 { 56 {
57 AssetBase asset; 57 AssetBase asset;
58 asset = new AssetBase(); 58 asset = new AssetBase();
59 asset.FullID = LLUUID.Random(); 59 asset.FullID = LLUUID.Random();
60 asset.Type = (sbyte)item.assetType; 60 asset.Type = (sbyte)item.assetType;
61 asset.InvType = (sbyte)item.invType; 61 asset.InvType = (sbyte)item.invType;
62 asset.Name = item.inventoryName; 62 asset.Name = item.inventoryName;
63 asset.Data = data; 63 asset.Data = data;
64 commsManager.AssetCache.AddAsset(asset); 64 commsManager.AssetCache.AddAsset(asset);
65 65
66 item.assetID = asset.FullID; 66 item.assetID = asset.FullID;
67 userInfo.UpdateItem(remoteClient.AgentId, item); 67 userInfo.UpdateItem(remoteClient.AgentId, item);
68 68
69 // remoteClient.SendInventoryItemUpdate(item); 69 // remoteClient.SendInventoryItemUpdate(item);
70 if (item.invType == 7) 70 if (item.invType == 7)
71 { 71 {
72 //do we want to know about updated note cards? 72 //do we want to know about updated note cards?
73 } 73 }
74 else if (item.invType == 10) 74 else if (item.invType == 10)
75 { 75 {
76 // do we want to know about updated scripts 76 // do we want to know about updated scripts
77 } 77 }
78 78
79 return (asset.FullID); 79 return (asset.FullID);
80 } 80 }
81 } 81 }
82 } 82 }
83 return LLUUID.Zero; 83 return LLUUID.Zero;
84 } 84 }
85 85
86 public void UDPUpdateInventoryItemAsset(IClientAPI remoteClient, LLUUID transactionID, LLUUID assetID, LLUUID itemID) 86 public void UDPUpdateInventoryItemAsset(IClientAPI remoteClient, LLUUID transactionID, LLUUID assetID, LLUUID itemID)
87 { 87 {
88 CachedUserInfo userInfo = commsManager.UserProfiles.GetUserDetails(remoteClient.AgentId); 88 CachedUserInfo userInfo = commsManager.UserProfiles.GetUserDetails(remoteClient.AgentId);
89 if (userInfo != null) 89 if (userInfo != null)
90 { 90 {
91 if (userInfo.RootFolder != null) 91 if (userInfo.RootFolder != null)
92 { 92 {
93 InventoryItemBase item = userInfo.RootFolder.HasItem(itemID); 93 InventoryItemBase item = userInfo.RootFolder.HasItem(itemID);
94 if (item != null) 94 if (item != null)
95 { 95 {
96 AgentAssetTransactions transactions = commsManager.TransactionsManager.GetUserTransActions(remoteClient.AgentId); 96 AgentAssetTransactions transactions = commsManager.TransactionsManager.GetUserTransActions(remoteClient.AgentId);
97 if (transactions != null) 97 if (transactions != null)
98 { 98 {
99 AssetBase asset = null; 99 AssetBase asset = null;
100 bool addToCache = false; 100 bool addToCache = false;
101 101
102 asset = commsManager.AssetCache.GetAsset(assetID); 102 asset = commsManager.AssetCache.GetAsset(assetID);
103 if (asset == null) 103 if (asset == null)
104 { 104 {
105 asset = transactions.GetTransactionAsset(transactionID); 105 asset = transactions.GetTransactionAsset(transactionID);
106 addToCache = true; 106 addToCache = true;
107 } 107 }
108 108
109 if (asset != null) 109 if (asset != null)
110 { 110 {
111 if (asset.FullID == assetID) 111 if (asset.FullID == assetID)
112 { 112 {
113 asset.Name = item.inventoryName; 113 asset.Name = item.inventoryName;
114 asset.Description = item.inventoryDescription; 114 asset.Description = item.inventoryDescription;
115 asset.InvType = (sbyte)item.invType; 115 asset.InvType = (sbyte)item.invType;
116 asset.Type = (sbyte)item.assetType; 116 asset.Type = (sbyte)item.assetType;
117 item.assetID = asset.FullID; 117 item.assetID = asset.FullID;
118 118
119 if (addToCache) 119 if (addToCache)
120 { 120 {
121 commsManager.AssetCache.AddAsset(asset); 121 commsManager.AssetCache.AddAsset(asset);
122 } 122 }
123 123
124 userInfo.UpdateItem(remoteClient.AgentId, item); 124 userInfo.UpdateItem(remoteClient.AgentId, item);
125 } 125 }
126 } 126 }
127 } 127 }
128 } 128 }
129 } 129 }
130 } 130 }
131 } 131 }
132 132
133 /// <summary> 133 /// <summary>
134 /// temporary method to test out creating new inventory items 134 /// temporary method to test out creating new inventory items
135 /// </summary> 135 /// </summary>
136 /// <param name="remoteClient"></param> 136 /// <param name="remoteClient"></param>
137 /// <param name="transActionID"></param> 137 /// <param name="transActionID"></param>
138 /// <param name="folderID"></param> 138 /// <param name="folderID"></param>
139 /// <param name="callbackID"></param> 139 /// <param name="callbackID"></param>
140 /// <param name="description"></param> 140 /// <param name="description"></param>
141 /// <param name="name"></param> 141 /// <param name="name"></param>
142 /// <param name="invType"></param> 142 /// <param name="invType"></param>
143 /// <param name="type"></param> 143 /// <param name="type"></param>
144 /// <param name="wearableType"></param> 144 /// <param name="wearableType"></param>
145 /// <param name="nextOwnerMask"></param> 145 /// <param name="nextOwnerMask"></param>
146 public void CreateNewInventoryItem(IClientAPI remoteClient, LLUUID transActionID, LLUUID folderID, uint callbackID, string description, string name, sbyte invType, sbyte type, byte wearableType, uint nextOwnerMask) 146 public void CreateNewInventoryItem(IClientAPI remoteClient, LLUUID transActionID, LLUUID folderID, uint callbackID, string description, string name, sbyte invType, sbyte type, byte wearableType, uint nextOwnerMask)
147 { 147 {
148 if (transActionID == LLUUID.Zero) 148 if (transActionID == LLUUID.Zero)
149 { 149 {
150 CachedUserInfo userInfo = commsManager.UserProfiles.GetUserDetails(remoteClient.AgentId); 150 CachedUserInfo userInfo = commsManager.UserProfiles.GetUserDetails(remoteClient.AgentId);
151 if (userInfo != null) 151 if (userInfo != null)
152 { 152 {
153 AssetBase asset = new AssetBase(); 153 AssetBase asset = new AssetBase();
154 asset.Name = name; 154 asset.Name = name;
155 asset.Description = description; 155 asset.Description = description;
156 asset.InvType = invType; 156 asset.InvType = invType;
157 asset.Type = type; 157 asset.Type = type;
158 asset.FullID = LLUUID.Random(); 158 asset.FullID = LLUUID.Random();
159 asset.Data = new byte[1]; 159 asset.Data = new byte[1];
160 this.commsManager.AssetCache.AddAsset(asset); 160 this.commsManager.AssetCache.AddAsset(asset);
161 161
162 InventoryItemBase item = new InventoryItemBase(); 162 InventoryItemBase item = new InventoryItemBase();
163 item.avatarID = remoteClient.AgentId; 163 item.avatarID = remoteClient.AgentId;
164 item.creatorsID = remoteClient.AgentId; 164 item.creatorsID = remoteClient.AgentId;
165 item.inventoryID = LLUUID.Random(); 165 item.inventoryID = LLUUID.Random();
166 item.assetID = asset.FullID; 166 item.assetID = asset.FullID;
167 item.inventoryDescription = description; 167 item.inventoryDescription = description;
168 item.inventoryName = name; 168 item.inventoryName = name;
169 item.assetType = invType; 169 item.assetType = invType;
170 item.invType = invType; 170 item.invType = invType;
171 item.parentFolderID = folderID; 171 item.parentFolderID = folderID;
172 item.inventoryCurrentPermissions = 2147483647; 172 item.inventoryCurrentPermissions = 2147483647;
173 item.inventoryNextPermissions = nextOwnerMask; 173 item.inventoryNextPermissions = nextOwnerMask;
174 174
175 userInfo.AddItem(remoteClient.AgentId, item); 175 userInfo.AddItem(remoteClient.AgentId, item);
176 remoteClient.SendInventoryItemUpdate(item); 176 remoteClient.SendInventoryItemUpdate(item);
177 } 177 }
178 } 178 }
179 else 179 else
180 { 180 {
181 commsManager.TransactionsManager.HandleInventoryFromTransaction(remoteClient, transActionID, folderID, callbackID, description, name, invType, type, wearableType, nextOwnerMask); 181 commsManager.TransactionsManager.HandleInventoryFromTransaction(remoteClient, transActionID, folderID, callbackID, description, name, invType, type, wearableType, nextOwnerMask);
182 //System.Console.WriteLine("request to create inventory item from transaction " + transActionID); 182 //System.Console.WriteLine("request to create inventory item from transaction " + transActionID);
183 } 183 }
184 } 184 }
185 185
186 /// <summary> 186 /// <summary>
187 /// 187 ///
188 /// </summary> 188 /// </summary>
189 /// <param name="remoteClient"></param> 189 /// <param name="remoteClient"></param>
190 /// <param name="primLocalID"></param> 190 /// <param name="primLocalID"></param>
191 public void RequestTaskInventory(IClientAPI remoteClient, uint primLocalID) 191 public void RequestTaskInventory(IClientAPI remoteClient, uint primLocalID)
192 { 192 {
193 bool hasPrim = false; 193 bool hasPrim = false;
194 foreach (EntityBase ent in Entities.Values) 194 foreach (EntityBase ent in Entities.Values)
195 { 195 {
196 if (ent is SceneObjectGroup) 196 if (ent is SceneObjectGroup)
197 { 197 {
198 hasPrim = ((SceneObjectGroup)ent).HasChildPrim(primLocalID); 198 hasPrim = ((SceneObjectGroup)ent).HasChildPrim(primLocalID);
199 if (hasPrim != false) 199 if (hasPrim != false)
200 { 200 {
201 bool fileChange = ((SceneObjectGroup)ent).GetPartInventoryFileName(remoteClient, primLocalID); 201 bool fileChange = ((SceneObjectGroup)ent).GetPartInventoryFileName(remoteClient, primLocalID);
202 if (fileChange) 202 if (fileChange)
203 { 203 {
204 if (this.XferManager != null) 204 if (this.XferManager != null)
205 { 205 {
206 ((SceneObjectGroup)ent).RequestInventoryFile(primLocalID, XferManager); 206 ((SceneObjectGroup)ent).RequestInventoryFile(primLocalID, XferManager);
207 } 207 }
208 } 208 }
209 break; 209 break;
210 } 210 }
211 } 211 }
212 } 212 }
213 } 213 }
214 214
215 public void RemoveTaskInventory(IClientAPI remoteClient, LLUUID itemID, uint localID) 215 public void RemoveTaskInventory(IClientAPI remoteClient, LLUUID itemID, uint localID)
216 { 216 {
217 bool hasPrim = false; 217 bool hasPrim = false;
218 foreach (EntityBase ent in Entities.Values) 218 foreach (EntityBase ent in Entities.Values)
219 { 219 {
220 if (ent is SceneObjectGroup) 220 if (ent is SceneObjectGroup)
221 { 221 {
222 hasPrim = ((SceneObjectGroup)ent).HasChildPrim(localID); 222 hasPrim = ((SceneObjectGroup)ent).HasChildPrim(localID);
223 if (hasPrim != false) 223 if (hasPrim != false)
224 { 224 {
225 int type = ((SceneObjectGroup)ent).RemoveInventoryItem(remoteClient, localID, itemID); 225 int type = ((SceneObjectGroup)ent).RemoveInventoryItem(remoteClient, localID, itemID);
226 ((SceneObjectGroup)ent).GetProperites(remoteClient); 226 ((SceneObjectGroup)ent).GetProperites(remoteClient);
227 if (type == 10) 227 if (type == 10)
228 { 228 {
229 this.EventManager.TriggerRemoveScript(localID, itemID); 229 this.EventManager.TriggerRemoveScript(localID, itemID);
230 } 230 }
231 } 231 }
232 } 232 }
233 } 233 }
234 } 234 }
235 235
236 public void RezScript(IClientAPI remoteClient, LLUUID itemID, uint localID) 236 public void RezScript(IClientAPI remoteClient, LLUUID itemID, uint localID)
237 { 237 {
238 CachedUserInfo userInfo = commsManager.UserProfiles.GetUserDetails(remoteClient.AgentId); 238 CachedUserInfo userInfo = commsManager.UserProfiles.GetUserDetails(remoteClient.AgentId);
239 LLUUID copyID = LLUUID.Random(); 239 LLUUID copyID = LLUUID.Random();
240 if (userInfo != null) 240 if (userInfo != null)
241 { 241 {
242 if (userInfo.RootFolder != null) 242 if (userInfo.RootFolder != null)
243 { 243 {
244 InventoryItemBase item = userInfo.RootFolder.HasItem(itemID); 244 InventoryItemBase item = userInfo.RootFolder.HasItem(itemID);
245 if (item != null) 245 if (item != null)
246 { 246 {
247 bool isTexture = false; 247 bool isTexture = false;
248 bool rezzed = false; 248 bool rezzed = false;
249 if (item.invType == 0) 249 if (item.invType == 0)
250 { 250 {
251 isTexture = true; 251 isTexture = true;
252 } 252 }
253 AssetBase rezAsset = commsManager.AssetCache.GetAsset(item.assetID, isTexture); 253 AssetBase rezAsset = commsManager.AssetCache.GetAsset(item.assetID, isTexture);
254 if (rezAsset != null) 254 if (rezAsset != null)
255 { 255 {
256 string script = Util.FieldToString(rezAsset.Data); 256 string script = Util.FieldToString(rezAsset.Data);
257 //Console.WriteLine("rez script "+script); 257 //Console.WriteLine("rez script "+script);
258 this.EventManager.TriggerRezScript(localID, copyID, script); 258 this.EventManager.TriggerRezScript(localID, copyID, script);
259 rezzed = true; 259 rezzed = true;
260 } 260 }
261 else 261 else
262 { 262 {
263 //lets try once more incase the asset cache is being slow getting the asset from server 263 //lets try once more incase the asset cache is being slow getting the asset from server
264 rezAsset = commsManager.AssetCache.GetAsset(item.assetID, isTexture); 264 rezAsset = commsManager.AssetCache.GetAsset(item.assetID, isTexture);
265 if (rezAsset != null) 265 if (rezAsset != null)
266 { 266 {
267 string script = Util.FieldToString(rezAsset.Data); 267 string script = Util.FieldToString(rezAsset.Data);
268 // Console.WriteLine("rez script " + script); 268 // Console.WriteLine("rez script " + script);
269 this.EventManager.TriggerRezScript(localID, copyID, script); 269 this.EventManager.TriggerRezScript(localID, copyID, script);
270 rezzed = true; 270 rezzed = true;
271 } 271 }
272 } 272 }
273 273
274 if (rezzed) 274 if (rezzed)
275 { 275 {
276 bool hasPrim = false; 276 bool hasPrim = false;
277 foreach (EntityBase ent in Entities.Values) 277 foreach (EntityBase ent in Entities.Values)
278 { 278 {
279 if (ent is SceneObjectGroup) 279 if (ent is SceneObjectGroup)
280 { 280 {
281 hasPrim = ((SceneObjectGroup)ent).HasChildPrim(localID); 281 hasPrim = ((SceneObjectGroup)ent).HasChildPrim(localID);
282 if (hasPrim != false) 282 if (hasPrim != false)
283 { 283 {
284 284
285 bool added = ((SceneObjectGroup)ent).AddInventoryItem(remoteClient, localID, item, copyID); 285 bool added = ((SceneObjectGroup)ent).AddInventoryItem(remoteClient, localID, item, copyID);
286 ((SceneObjectGroup)ent).GetProperites(remoteClient); 286 ((SceneObjectGroup)ent).GetProperites(remoteClient);
287 } 287 }
288 } 288 }
289 } 289 }
290 } 290 }
291 } 291 }
292 } 292 }
293 } 293 }
294 } 294 }
295 295
296 /// <summary> 296 /// <summary>
297 /// 297 ///
298 /// </summary> 298 /// </summary>
299 /// <param name="packet"></param> 299 /// <param name="packet"></param>
300 /// <param name="simClient"></param> 300 /// <param name="simClient"></param>
301 public void DeRezObject(Packet packet, IClientAPI remoteClient) 301 public void DeRezObject(Packet packet, IClientAPI remoteClient)
302 { 302 {
303 DeRezObjectPacket DeRezPacket = (DeRezObjectPacket)packet; 303 DeRezObjectPacket DeRezPacket = (DeRezObjectPacket)packet;
304 304
305 if (DeRezPacket.AgentBlock.DestinationID == LLUUID.Zero) 305 if (DeRezPacket.AgentBlock.DestinationID == LLUUID.Zero)
306 { 306 {
307 //currently following code not used (or don't know of any case of destination being zero 307 //currently following code not used (or don't know of any case of destination being zero
308 } 308 }
309 else 309 else
310 { 310 {
311 foreach (DeRezObjectPacket.ObjectDataBlock Data in DeRezPacket.ObjectData) 311 foreach (DeRezObjectPacket.ObjectDataBlock Data in DeRezPacket.ObjectData)
312 { 312 {
313 EntityBase selectedEnt = null; 313 EntityBase selectedEnt = null;
314 //OpenSim.Framework.Console.MainConsole.Instance.WriteLine("LocalID:" + Data.ObjectLocalID.ToString()); 314 //OpenSim.Framework.Console.MainConsole.Instance.WriteLine("LocalID:" + Data.ObjectLocalID.ToString());
315 foreach (EntityBase ent in this.Entities.Values) 315 foreach (EntityBase ent in this.Entities.Values)
316 { 316 {
317 if (ent.LocalId == Data.ObjectLocalID) 317 if (ent.LocalId == Data.ObjectLocalID)
318 { 318 {
319 selectedEnt = ent; 319 selectedEnt = ent;
320 break; 320 break;
321 } 321 }
322 } 322 }
323 if (selectedEnt != null) 323 if (selectedEnt != null)
324 { 324 {
325 if (PermissionsMngr.CanDeRezObject(remoteClient.AgentId, ((SceneObjectGroup)selectedEnt).UUID)) 325 if (PermissionsMngr.CanDeRezObject(remoteClient.AgentId, ((SceneObjectGroup)selectedEnt).UUID))
326 { 326 {
327 string sceneObjectXml = ((SceneObjectGroup)selectedEnt).ToXmlString(); 327 string sceneObjectXml = ((SceneObjectGroup)selectedEnt).ToXmlString();
328 CachedUserInfo userInfo = commsManager.UserProfiles.GetUserDetails(remoteClient.AgentId); 328 CachedUserInfo userInfo = commsManager.UserProfiles.GetUserDetails(remoteClient.AgentId);
329 if (userInfo != null) 329 if (userInfo != null)
330 { 330 {
331 AssetBase asset = new AssetBase(); 331 AssetBase asset = new AssetBase();
332 asset.Name = ((SceneObjectGroup)selectedEnt).GetPartName(selectedEnt.LocalId); 332 asset.Name = ((SceneObjectGroup)selectedEnt).GetPartName(selectedEnt.LocalId);
333 asset.Description = ((SceneObjectGroup)selectedEnt).GetPartDescription(selectedEnt.LocalId); 333 asset.Description = ((SceneObjectGroup)selectedEnt).GetPartDescription(selectedEnt.LocalId);
334 asset.InvType = 6; 334 asset.InvType = 6;
335 asset.Type = 6; 335 asset.Type = 6;
336 asset.FullID = LLUUID.Random(); 336 asset.FullID = LLUUID.Random();
337 asset.Data = Helpers.StringToField(sceneObjectXml); 337 asset.Data = Helpers.StringToField(sceneObjectXml);
338 commsManager.AssetCache.AddAsset(asset); 338 commsManager.AssetCache.AddAsset(asset);
339 339
340 340
341 InventoryItemBase item = new InventoryItemBase(); 341 InventoryItemBase item = new InventoryItemBase();
342 item.avatarID = remoteClient.AgentId; 342 item.avatarID = remoteClient.AgentId;
343 item.creatorsID = remoteClient.AgentId; 343 item.creatorsID = remoteClient.AgentId;
344 item.inventoryID = LLUUID.Random(); 344 item.inventoryID = LLUUID.Random();
345 item.assetID = asset.FullID; 345 item.assetID = asset.FullID;
346 item.inventoryDescription = asset.Description; 346 item.inventoryDescription = asset.Description;
347 item.inventoryName = asset.Name; 347 item.inventoryName = asset.Name;
348 item.assetType = asset.Type; 348 item.assetType = asset.Type;
349 item.invType = asset.InvType; 349 item.invType = asset.InvType;
350 item.parentFolderID = DeRezPacket.AgentBlock.DestinationID; 350 item.parentFolderID = DeRezPacket.AgentBlock.DestinationID;
351 item.inventoryCurrentPermissions = 2147483647; 351 item.inventoryCurrentPermissions = 2147483647;
352 item.inventoryNextPermissions = 2147483647; 352 item.inventoryNextPermissions = 2147483647;
353 353
354 userInfo.AddItem(remoteClient.AgentId, item); 354 userInfo.AddItem(remoteClient.AgentId, item);
355 remoteClient.SendInventoryItemUpdate(item); 355 remoteClient.SendInventoryItemUpdate(item);
356 } 356 }
357 357
358 SceneObjectPart rootPart = ((SceneObjectGroup)selectedEnt).GetChildPart(((SceneObjectGroup)selectedEnt).UUID); 358 SceneObjectPart rootPart = ((SceneObjectGroup)selectedEnt).GetChildPart(((SceneObjectGroup)selectedEnt).UUID);
359 if (rootPart.PhysActor != null) 359 if (rootPart.PhysActor != null)
360 { 360 {
361 this.phyScene.RemovePrim(rootPart.PhysActor); 361 this.phyScene.RemovePrim(rootPart.PhysActor);
362 rootPart.PhysActor = null; 362 rootPart.PhysActor = null;
363 } 363 }
364 364
365 storageManager.DataStore.RemoveObject(((SceneObjectGroup)selectedEnt).UUID, m_regInfo.SimUUID); 365 storageManager.DataStore.RemoveObject(((SceneObjectGroup)selectedEnt).UUID, m_regInfo.SimUUID);
366 ((SceneObjectGroup)selectedEnt).DeleteGroup(); 366 ((SceneObjectGroup)selectedEnt).DeleteGroup();
367 367
368 lock (Entities) 368 lock (Entities)
369 { 369 {
370 Entities.Remove(((SceneObjectGroup)selectedEnt).UUID); 370 Entities.Remove(((SceneObjectGroup)selectedEnt).UUID);
371 } 371 }
372 ((SceneObjectGroup)selectedEnt).DeleteParts(); 372 ((SceneObjectGroup)selectedEnt).DeleteParts();
373 } 373 }
374 } 374 }
375 } 375 }
376 } 376 }
377 } 377 }
378 378
379 public void RezObject(IClientAPI remoteClient, LLUUID itemID, LLVector3 pos) 379 public void RezObject(IClientAPI remoteClient, LLUUID itemID, LLVector3 pos)
380 { 380 {
381 CachedUserInfo userInfo = commsManager.UserProfiles.GetUserDetails(remoteClient.AgentId); 381 CachedUserInfo userInfo = commsManager.UserProfiles.GetUserDetails(remoteClient.AgentId);
382 if (userInfo != null) 382 if (userInfo != null)
383 { 383 {
384 if (userInfo.RootFolder != null) 384 if (userInfo.RootFolder != null)
385 { 385 {
386 InventoryItemBase item = userInfo.RootFolder.HasItem(itemID); 386 InventoryItemBase item = userInfo.RootFolder.HasItem(itemID);
387 if (item != null) 387 if (item != null)
388 { 388 {
389 AssetBase rezAsset = commsManager.AssetCache.GetAsset(item.assetID, false); 389 AssetBase rezAsset = commsManager.AssetCache.GetAsset(item.assetID, false);
390 if (rezAsset != null) 390 if (rezAsset != null)
391 { 391 {
392 this.AddRezObject(Util.FieldToString(rezAsset.Data), pos); 392 this.AddRezObject(Util.FieldToString(rezAsset.Data), pos);
393 userInfo.DeleteItem(remoteClient.AgentId, item); 393 userInfo.DeleteItem(remoteClient.AgentId, item);
394 remoteClient.SendRemoveInventoryItem(itemID); 394 remoteClient.SendRemoveInventoryItem(itemID);
395 } 395 }
396 else 396 else
397 { 397 {
398 //lets try once more incase the asset cache is being slow getting the asset from server 398 //lets try once more incase the asset cache is being slow getting the asset from server
399 rezAsset = commsManager.AssetCache.GetAsset(item.assetID, false); 399 rezAsset = commsManager.AssetCache.GetAsset(item.assetID, false);
400 if (rezAsset != null) 400 if (rezAsset != null)
401 { 401 {
402 this.AddRezObject(Util.FieldToString(rezAsset.Data), pos); 402 this.AddRezObject(Util.FieldToString(rezAsset.Data), pos);
403 userInfo.DeleteItem(remoteClient.AgentId, item); 403 userInfo.DeleteItem(remoteClient.AgentId, item);
404 remoteClient.SendRemoveInventoryItem(itemID); 404 remoteClient.SendRemoveInventoryItem(itemID);
405 } 405 }
406 } 406 }
407 } 407 }
408 } 408 }
409 } 409 }
410 } 410 }
411 411
412 private void AddRezObject(string xmlData, LLVector3 pos) 412 private void AddRezObject(string xmlData, LLVector3 pos)
413 { 413 {
414 SceneObjectGroup group = new SceneObjectGroup(this, this.m_regionHandle, xmlData); 414 SceneObjectGroup group = new SceneObjectGroup(this, this.m_regionHandle, xmlData);
415 this.AddEntity(group); 415 this.AddEntity(group);
416 group.AbsolutePosition = pos; 416 group.AbsolutePosition = pos;
417 SceneObjectPart rootPart = group.GetChildPart(group.UUID); 417 SceneObjectPart rootPart = group.GetChildPart(group.UUID);
418 if ((rootPart.ObjectFlags & (uint)LLObject.ObjectFlags.Phantom) == 0) 418 if ((rootPart.ObjectFlags & (uint)LLObject.ObjectFlags.Phantom) == 0)
419 rootPart.PhysActor = phyScene.AddPrim( 419 rootPart.PhysActor = phyScene.AddPrim(
420 new PhysicsVector(rootPart.AbsolutePosition.X, rootPart.AbsolutePosition.Y, rootPart.AbsolutePosition.Z), 420 new PhysicsVector(rootPart.AbsolutePosition.X, rootPart.AbsolutePosition.Y, rootPart.AbsolutePosition.Z),
421 new PhysicsVector(rootPart.Scale.X, rootPart.Scale.Y, rootPart.Scale.Z), 421 new PhysicsVector(rootPart.Scale.X, rootPart.Scale.Y, rootPart.Scale.Z),
422 new Axiom.Math.Quaternion(rootPart.RotationOffset.W, rootPart.RotationOffset.X, 422 new Axiom.Math.Quaternion(rootPart.RotationOffset.W, rootPart.RotationOffset.X,
423 rootPart.RotationOffset.Y, rootPart.RotationOffset.Z)); 423 rootPart.RotationOffset.Y, rootPart.RotationOffset.Z));
424 } 424 }
425 } 425 }
426 426
427} 427}
diff --git a/OpenSim/Region/Environment/Scenes/SceneManager.cs b/OpenSim/Region/Environment/Scenes/SceneManager.cs
index dfac406..4a99a80 100644
--- a/OpenSim/Region/Environment/Scenes/SceneManager.cs
+++ b/OpenSim/Region/Environment/Scenes/SceneManager.cs
@@ -1,237 +1,237 @@
1using System.Collections.Generic; 1using System.Collections.Generic;
2using System; 2using System;
3using OpenSim.Framework.Console; 3using OpenSim.Framework.Console;
4using OpenSim.Framework.Types; 4using OpenSim.Framework.Types;
5 5
6namespace OpenSim.Region.Environment.Scenes 6namespace OpenSim.Region.Environment.Scenes
7{ 7{
8 public class SceneManager 8 public class SceneManager
9 { 9 {
10 private readonly List<Scene> m_localScenes; 10 private readonly List<Scene> m_localScenes;
11 private Scene m_currentScene = null; 11 private Scene m_currentScene = null;
12 public Scene CurrentScene 12 public Scene CurrentScene
13 { 13 {
14 get 14 get
15 { 15 {
16 return m_currentScene; 16 return m_currentScene;
17 } 17 }
18 } 18 }
19 19
20 private Scene CurrentOrFirstScene 20 private Scene CurrentOrFirstScene
21 { 21 {
22 get 22 get
23 { 23 {
24 if (m_currentScene == null) 24 if (m_currentScene == null)
25 { 25 {
26 return m_localScenes[0]; 26 return m_localScenes[0];
27 } 27 }
28 else 28 else
29 { 29 {
30 return m_currentScene; 30 return m_currentScene;
31 } 31 }
32 } 32 }
33 } 33 }
34 34
35 public SceneManager() 35 public SceneManager()
36 { 36 {
37 m_localScenes = new List<Scene>(); 37 m_localScenes = new List<Scene>();
38 } 38 }
39 39
40 public void Close() 40 public void Close()
41 { 41 {
42 for (int i = 0; i < m_localScenes.Count; i++) 42 for (int i = 0; i < m_localScenes.Count; i++)
43 { 43 {
44 m_localScenes[i].Close(); 44 m_localScenes[i].Close();
45 } 45 }
46 } 46 }
47 47
48 public void Add(Scene scene) 48 public void Add(Scene scene)
49 { 49 {
50 m_localScenes.Add(scene); 50 m_localScenes.Add(scene);
51 } 51 }
52 52
53 public void SavePrimsToXml(string filename) 53 public void SavePrimsToXml(string filename)
54 { 54 {
55 CurrentOrFirstScene.SavePrimsToXml(filename); 55 CurrentOrFirstScene.SavePrimsToXml(filename);
56 } 56 }
57 57
58 public void LoadPrimsFromXml(string filename) 58 public void LoadPrimsFromXml(string filename)
59 { 59 {
60 CurrentOrFirstScene.LoadPrimsFromXml(filename); 60 CurrentOrFirstScene.LoadPrimsFromXml(filename);
61 } 61 }
62 62
63 public bool RunTerrainCmd(string[] cmdparams, ref string result) 63 public bool RunTerrainCmd(string[] cmdparams, ref string result)
64 { 64 {
65 if (m_currentScene == null) 65 if (m_currentScene == null)
66 { 66 {
67 bool success = true; 67 bool success = true;
68 foreach (Scene scene in m_localScenes) 68 foreach (Scene scene in m_localScenes)
69 { 69 {
70 if (!scene.Terrain.RunTerrainCmd(cmdparams, ref result, scene.RegionInfo.RegionName)) 70 if (!scene.Terrain.RunTerrainCmd(cmdparams, ref result, scene.RegionInfo.RegionName))
71 { 71 {
72 success = false; 72 success = false;
73 } 73 }
74 } 74 }
75 75
76 return success; 76 return success;
77 } 77 }
78 else 78 else
79 { 79 {
80 return m_currentScene.Terrain.RunTerrainCmd(cmdparams, ref result, m_currentScene.RegionInfo.RegionName); 80 return m_currentScene.Terrain.RunTerrainCmd(cmdparams, ref result, m_currentScene.RegionInfo.RegionName);
81 } 81 }
82 } 82 }
83 83
84 public void SendCommandToScripts(string[] cmdparams) 84 public void SendCommandToScripts(string[] cmdparams)
85 { 85 {
86 ForEach(delegate(Scene scene) 86 ForEach(delegate(Scene scene)
87 { 87 {
88 scene.SendCommandToScripts(cmdparams); 88 scene.SendCommandToScripts(cmdparams);
89 }); 89 });
90 } 90 }
91 91
92 public void BypassPermissions(bool bypassPermissions) 92 public void BypassPermissions(bool bypassPermissions)
93 { 93 {
94 ForEach(delegate(Scene scene) 94 ForEach(delegate(Scene scene)
95 { 95 {
96 scene.PermissionsMngr.BypassPermissions = bypassPermissions; 96 scene.PermissionsMngr.BypassPermissions = bypassPermissions;
97 }); 97 });
98 } 98 }
99 99
100 private void ForEach(Action<Scene> func) 100 private void ForEach(Action<Scene> func)
101 { 101 {
102 if (m_currentScene == null) 102 if (m_currentScene == null)
103 { 103 {
104 m_localScenes.ForEach(func); 104 m_localScenes.ForEach(func);
105 } 105 }
106 else 106 else
107 { 107 {
108 func(m_currentScene); 108 func(m_currentScene);
109 } 109 }
110 } 110 }
111 111
112 public void Backup() 112 public void Backup()
113 { 113 {
114 ForEach(delegate(Scene scene) 114 ForEach(delegate(Scene scene)
115 { 115 {
116 scene.Backup(); 116 scene.Backup();
117 }); 117 });
118 } 118 }
119 119
120 public void HandleAlertCommand(string[] cmdparams) 120 public void HandleAlertCommand(string[] cmdparams)
121 { 121 {
122 ForEach(delegate(Scene scene) 122 ForEach(delegate(Scene scene)
123 { 123 {
124 scene.HandleAlertCommand(cmdparams); 124 scene.HandleAlertCommand(cmdparams);
125 }); 125 });
126 } 126 }
127 127
128 public bool TrySetCurrentRegion(string regionName) 128 public bool TrySetCurrentRegion(string regionName)
129 { 129 {
130 if ((String.Compare(regionName, "root") == 0) || (String.Compare(regionName, "..") == 0)) 130 if ((String.Compare(regionName, "root") == 0) || (String.Compare(regionName, "..") == 0))
131 { 131 {
132 m_currentScene = null; 132 m_currentScene = null;
133 return true; 133 return true;
134 } 134 }
135 else 135 else
136 { 136 {
137 Console.WriteLine("Searching for Region: '" + regionName + "'"); 137 Console.WriteLine("Searching for Region: '" + regionName + "'");
138 Scene foundScene = null; 138 Scene foundScene = null;
139 139
140 foreach (Scene scene in m_localScenes) 140 foreach (Scene scene in m_localScenes)
141 { 141 {
142 if (String.Compare(scene.RegionInfo.RegionName, regionName, true) == 0) 142 if (String.Compare(scene.RegionInfo.RegionName, regionName, true) == 0)
143 { 143 {
144 m_currentScene = scene; 144 m_currentScene = scene;
145 return true; 145 return true;
146 } 146 }
147 } 147 }
148 148
149 return false; 149 return false;
150 } 150 }
151 } 151 }
152 152
153 public void DebugPacket(LogBase log, int newDebug) 153 public void DebugPacket(LogBase log, int newDebug)
154 { 154 {
155 ForEach(delegate(Scene scene) 155 ForEach(delegate(Scene scene)
156 { 156 {
157 foreach (EntityBase entity in scene.Entities.Values) 157 foreach (EntityBase entity in scene.Entities.Values)
158 { 158 {
159 if (entity is ScenePresence) 159 if (entity is ScenePresence)
160 { 160 {
161 ScenePresence scenePrescence = entity as ScenePresence; 161 ScenePresence scenePrescence = entity as ScenePresence;
162 if (!scenePrescence.childAgent) 162 if (!scenePrescence.childAgent)
163 { 163 {
164 log.Error(String.Format("Packet debug for {0} {1} set to {2}", 164 log.Error(String.Format("Packet debug for {0} {1} set to {2}",
165 scenePrescence.Firstname, scenePrescence.Lastname, 165 scenePrescence.Firstname, scenePrescence.Lastname,
166 newDebug)); 166 newDebug));
167 167
168 scenePrescence.ControllingClient.SetDebug(newDebug); 168 scenePrescence.ControllingClient.SetDebug(newDebug);
169 } 169 }
170 } 170 }
171 } 171 }
172 }); 172 });
173 } 173 }
174 174
175 public List<ScenePresence> GetAvatars() 175 public List<ScenePresence> GetAvatars()
176 { 176 {
177 List<ScenePresence> avatars = new List<ScenePresence>(); 177 List<ScenePresence> avatars = new List<ScenePresence>();
178 178
179 ForEach(delegate(Scene scene) 179 ForEach(delegate(Scene scene)
180 { 180 {
181 foreach (EntityBase entity in scene.Entities.Values) 181 foreach (EntityBase entity in scene.Entities.Values)
182 { 182 {
183 if (entity is ScenePresence) 183 if (entity is ScenePresence)
184 { 184 {
185 ScenePresence scenePrescence = entity as ScenePresence; 185 ScenePresence scenePrescence = entity as ScenePresence;
186 if (!scenePrescence.childAgent) 186 if (!scenePrescence.childAgent)
187 { 187 {
188 avatars.Add(scenePrescence); 188 avatars.Add(scenePrescence);
189 } 189 }
190 } 190 }
191 } 191 }
192 }); 192 });
193 193
194 return avatars; 194 return avatars;
195 } 195 }
196 196
197 public RegionInfo GetRegionInfo(ulong regionHandle) 197 public RegionInfo GetRegionInfo(ulong regionHandle)
198 { 198 {
199 foreach (Scene scene in m_localScenes) 199 foreach (Scene scene in m_localScenes)
200 { 200 {
201 if (scene.RegionInfo.RegionHandle == regionHandle) 201 if (scene.RegionInfo.RegionHandle == regionHandle)
202 { 202 {
203 return scene.RegionInfo; 203 return scene.RegionInfo;
204 } 204 }
205 } 205 }
206 206
207 return null; 207 return null;
208 } 208 }
209 209
210 public void SetTimePhase(int timePhase) 210 public void SetTimePhase(int timePhase)
211 { 211 {
212 ForEach(delegate(Scene scene) 212 ForEach(delegate(Scene scene)
213 { 213 {
214 scene.SetTimePhase( 214 scene.SetTimePhase(
215 timePhase) 215 timePhase)
216 ; 216 ;
217 }); 217 });
218 } 218 }
219 219
220 220
221 public void ForceClientUpdate() 221 public void ForceClientUpdate()
222 { 222 {
223 ForEach(delegate(Scene scene) 223 ForEach(delegate(Scene scene)
224 { 224 {
225 scene.ForceClientUpdate(); 225 scene.ForceClientUpdate();
226 }); 226 });
227 } 227 }
228 228
229 public void HandleEditCommand(string[] cmdparams) 229 public void HandleEditCommand(string[] cmdparams)
230 { 230 {
231 ForEach(delegate(Scene scene) 231 ForEach(delegate(Scene scene)
232 { 232 {
233 scene.HandleEditCommand(cmdparams); 233 scene.HandleEditCommand(cmdparams);
234 }); 234 });
235 } 235 }
236 } 236 }
237} 237}
diff --git a/OpenSim/Region/Environment/Scenes/Scripting/IScriptHost.cs b/OpenSim/Region/Environment/Scenes/Scripting/IScriptHost.cs
index 2f248ce..7cf9cb7 100644
--- a/OpenSim/Region/Environment/Scenes/Scripting/IScriptHost.cs
+++ b/OpenSim/Region/Environment/Scenes/Scripting/IScriptHost.cs
@@ -1,20 +1,20 @@
1using System; 1using System;
2using System.Collections.Generic; 2using System.Collections.Generic;
3using System.Text; 3using System.Text;
4using libsecondlife; 4using libsecondlife;
5 5
6namespace OpenSim.Region.Environment.Scenes.Scripting 6namespace OpenSim.Region.Environment.Scenes.Scripting
7{ 7{
8 public interface IScriptHost 8 public interface IScriptHost
9 { 9 {
10 string Name { get; set;} 10 string Name { get; set;}
11 string SitName{ get; set;} 11 string SitName{ get; set;}
12 string TouchName { get; set;} 12 string TouchName { get; set;}
13 string Description { get; set; } 13 string Description { get; set; }
14 LLUUID UUID { get; } 14 LLUUID UUID { get; }
15 LLUUID ObjectOwner { get;} 15 LLUUID ObjectOwner { get;}
16 LLUUID ObjectCreator { get; } 16 LLUUID ObjectCreator { get; }
17 LLVector3 AbsolutePosition { get; } 17 LLVector3 AbsolutePosition { get; }
18 void SetText(string text, Axiom.Math.Vector3 color, double alpha); 18 void SetText(string text, Axiom.Math.Vector3 color, double alpha);
19 } 19 }
20} 20}
diff --git a/OpenSim/Region/Environment/Scenes/Scripting/NullScriptHost.cs b/OpenSim/Region/Environment/Scenes/Scripting/NullScriptHost.cs
index 5e3dcae..875e4cb 100644
--- a/OpenSim/Region/Environment/Scenes/Scripting/NullScriptHost.cs
+++ b/OpenSim/Region/Environment/Scenes/Scripting/NullScriptHost.cs
@@ -1,56 +1,56 @@
1using System; 1using System;
2using System.Collections.Generic; 2using System.Collections.Generic;
3using System.Text; 3using System.Text;
4using libsecondlife; 4using libsecondlife;
5 5
6namespace OpenSim.Region.Environment.Scenes.Scripting 6namespace OpenSim.Region.Environment.Scenes.Scripting
7{ 7{
8 public class NullScriptHost : IScriptHost 8 public class NullScriptHost : IScriptHost
9 { 9 {
10 10
11 LLVector3 m_pos = new LLVector3( 128, 128, 30 ); 11 LLVector3 m_pos = new LLVector3( 128, 128, 30 );
12 public string Name 12 public string Name
13 { 13 {
14 get { return "Object"; } 14 get { return "Object"; }
15 set { } 15 set { }
16 } 16 }
17 17
18 public string SitName 18 public string SitName
19 { 19 {
20 get { return ""; } 20 get { return ""; }
21 set { } 21 set { }
22 } 22 }
23 23
24 public string TouchName 24 public string TouchName
25 { 25 {
26 get { return ""; } 26 get { return ""; }
27 set { } 27 set { }
28 } 28 }
29 29
30 public string Description 30 public string Description
31 { 31 {
32 get { return ""; } 32 get { return ""; }
33 set { } 33 set { }
34 } 34 }
35 35
36 public LLUUID UUID 36 public LLUUID UUID
37 { 37 {
38 get { return LLUUID.Zero; } 38 get { return LLUUID.Zero; }
39 } 39 }
40 40
41 public LLUUID ObjectOwner 41 public LLUUID ObjectOwner
42 { get { return LLUUID.Zero; } } 42 { get { return LLUUID.Zero; } }
43 43
44 public LLUUID ObjectCreator { get { return LLUUID.Zero; } } 44 public LLUUID ObjectCreator { get { return LLUUID.Zero; } }
45 45
46 public LLVector3 AbsolutePosition 46 public LLVector3 AbsolutePosition
47 { 47 {
48 get { return m_pos; } 48 get { return m_pos; }
49 } 49 }
50 50
51 public void SetText(string text, Axiom.Math.Vector3 color, double alpha) 51 public void SetText(string text, Axiom.Math.Vector3 color, double alpha)
52 { 52 {
53 Console.WriteLine("Tried to SetText [{0}] on NullScriptHost", text); 53 Console.WriteLine("Tried to SetText [{0}] on NullScriptHost", text);
54 } 54 }
55 } 55 }
56} 56}
diff --git a/OpenSim/Region/Environment/Scenes/Scripting/ScriptEngineInterface.cs b/OpenSim/Region/Environment/Scenes/Scripting/ScriptEngineInterface.cs
index d3d58fe..5e8ff87 100644
--- a/OpenSim/Region/Environment/Scenes/Scripting/ScriptEngineInterface.cs
+++ b/OpenSim/Region/Environment/Scenes/Scripting/ScriptEngineInterface.cs
@@ -1,43 +1,43 @@
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.Region.Environment.Scenes.Scripting; 32using OpenSim.Region.Environment.Scenes.Scripting;
33 33
34//TODO: WHERE TO PLACE THIS? 34//TODO: WHERE TO PLACE THIS?
35namespace OpenSim.Region.Environment.Scenes.Scripting 35namespace OpenSim.Region.Environment.Scenes.Scripting
36{ 36{
37 public interface ScriptEngineInterface 37 public interface ScriptEngineInterface
38 { 38 {
39 void InitializeEngine(OpenSim.Region.Environment.Scenes.Scene Sceneworld, OpenSim.Framework.Console.LogBase logger); 39 void InitializeEngine(OpenSim.Region.Environment.Scenes.Scene Sceneworld, OpenSim.Framework.Console.LogBase logger);
40 void Shutdown(); 40 void Shutdown();
41// void StartScript(string ScriptID, IScriptHost ObjectID); 41// void StartScript(string ScriptID, IScriptHost ObjectID);
42 } 42 }
43} 43}
diff --git a/OpenSim/Region/Environment/Scenes/Scripting/ScriptEngineLoader.cs b/OpenSim/Region/Environment/Scenes/Scripting/ScriptEngineLoader.cs
index 3500545..83bd0ab 100644
--- a/OpenSim/Region/Environment/Scenes/Scripting/ScriptEngineLoader.cs
+++ b/OpenSim/Region/Environment/Scenes/Scripting/ScriptEngineLoader.cs
@@ -1,124 +1,124 @@
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.IO; 31using System.IO;
32using System.Text; 32using System.Text;
33using System.Reflection; 33using System.Reflection;
34 34
35namespace OpenSim.Region.Environment.Scenes.Scripting 35namespace OpenSim.Region.Environment.Scenes.Scripting
36{ 36{
37 public class ScriptEngineLoader 37 public class ScriptEngineLoader
38 { 38 {
39 private OpenSim.Framework.Console.LogBase m_log; 39 private OpenSim.Framework.Console.LogBase m_log;
40 public ScriptEngineLoader(OpenSim.Framework.Console.LogBase logger) 40 public ScriptEngineLoader(OpenSim.Framework.Console.LogBase logger)
41 { 41 {
42 m_log = logger; 42 m_log = logger;
43 } 43 }
44 44
45 public ScriptEngineInterface LoadScriptEngine(string EngineName) 45 public ScriptEngineInterface LoadScriptEngine(string EngineName)
46 { 46 {
47 ScriptEngineInterface ret = null; 47 ScriptEngineInterface ret = null;
48 try 48 try
49 { 49 {
50 ret = LoadAndInitAssembly(Path.Combine("ScriptEngines", "OpenSim.Region.ScriptEngine." + EngineName + ".dll"), 50 ret = LoadAndInitAssembly(Path.Combine("ScriptEngines", "OpenSim.Region.ScriptEngine." + EngineName + ".dll"),
51 "OpenSim.Region.ScriptEngine." + EngineName + ".ScriptEngine"); 51 "OpenSim.Region.ScriptEngine." + EngineName + ".ScriptEngine");
52 } 52 }
53 catch (Exception e) 53 catch (Exception e)
54 { 54 {
55 m_log.Error("ScriptEngine", "Error loading assembly \"" + EngineName + "\": " + e.Message + ", " + e.StackTrace.ToString()); 55 m_log.Error("ScriptEngine", "Error loading assembly \"" + EngineName + "\": " + e.Message + ", " + e.StackTrace.ToString());
56 } 56 }
57 return ret; 57 return ret;
58 } 58 }
59 59
60 /// <summary> 60 /// <summary>
61 /// Does actual loading and initialization of script Assembly 61 /// Does actual loading and initialization of script Assembly
62 /// </summary> 62 /// </summary>
63 /// <param name="FreeAppDomain">AppDomain to load script into</param> 63 /// <param name="FreeAppDomain">AppDomain to load script into</param>
64 /// <param name="FileName">FileName of script assembly (.dll)</param> 64 /// <param name="FileName">FileName of script assembly (.dll)</param>
65 /// <returns></returns> 65 /// <returns></returns>
66 private ScriptEngineInterface LoadAndInitAssembly(string FileName, string NameSpace) 66 private ScriptEngineInterface LoadAndInitAssembly(string FileName, string NameSpace)
67 { 67 {
68 //Common.SendToDebug("Loading ScriptEngine Assembly " + FileName); 68 //Common.SendToDebug("Loading ScriptEngine Assembly " + FileName);
69 // Load .Net Assembly (.dll) 69 // Load .Net Assembly (.dll)
70 // Initialize and return it 70 // Initialize and return it
71 71
72 // TODO: Add error handling 72 // TODO: Add error handling
73 73
74 Assembly a; 74 Assembly a;
75 //try 75 //try
76 //{ 76 //{
77 77
78 78
79 // Load to default appdomain (temporary) 79 // Load to default appdomain (temporary)
80 a = Assembly.LoadFrom(FileName); 80 a = Assembly.LoadFrom(FileName);
81 // Load to specified appdomain 81 // Load to specified appdomain
82 // TODO: Insert security 82 // TODO: Insert security
83 //a = FreeAppDomain.Load(FileName); 83 //a = FreeAppDomain.Load(FileName);
84 //} 84 //}
85 //catch (Exception e) 85 //catch (Exception e)
86 //{ 86 //{
87 // m_log.Error("ScriptEngine", "Error loading assembly \"" + FileName + "\": " + e.ToString()); 87 // m_log.Error("ScriptEngine", "Error loading assembly \"" + FileName + "\": " + e.ToString());
88 //} 88 //}
89 89
90 90
91 //Console.WriteLine("Loading: " + FileName); 91 //Console.WriteLine("Loading: " + FileName);
92 //foreach (Type _t in a.GetTypes()) 92 //foreach (Type _t in a.GetTypes())
93 //{ 93 //{
94 // Console.WriteLine("Type: " + _t.ToString()); 94 // Console.WriteLine("Type: " + _t.ToString());
95 //} 95 //}
96 96
97 Type t; 97 Type t;
98 //try 98 //try
99 //{ 99 //{
100 t = a.GetType(NameSpace, true); 100 t = a.GetType(NameSpace, true);
101 //} 101 //}
102 //catch (Exception e) 102 //catch (Exception e)
103 //{ 103 //{
104 // m_log.Error("ScriptEngine", "Error initializing type \"" + NameSpace + "\" from \"" + FileName + "\": " + e.ToString()); 104 // m_log.Error("ScriptEngine", "Error initializing type \"" + NameSpace + "\" from \"" + FileName + "\": " + e.ToString());
105 //} 105 //}
106 106
107 ScriptEngineInterface ret; 107 ScriptEngineInterface ret;
108 //try 108 //try
109 //{ 109 //{
110 ret = (ScriptEngineInterface)Activator.CreateInstance(t); 110 ret = (ScriptEngineInterface)Activator.CreateInstance(t);
111 //} 111 //}
112 //catch (Exception e) 112 //catch (Exception e)
113 //{ 113 //{
114 // m_log.Error("ScriptEngine", "Error initializing type \"" + NameSpace + "\" from \"" + FileName + "\": " + e.ToString()); 114 // m_log.Error("ScriptEngine", "Error initializing type \"" + NameSpace + "\" from \"" + FileName + "\": " + e.ToString());
115 //} 115 //}
116 116
117 return ret; 117 return ret;
118 118
119 119
120 } 120 }
121 121
122 122
123 } 123 }
124} 124}
diff --git a/OpenSim/Region/Environment/Types/BasicQuadTreeNode.cs b/OpenSim/Region/Environment/Types/BasicQuadTreeNode.cs
index c7b0524..3b4dd9a 100644
--- a/OpenSim/Region/Environment/Types/BasicQuadTreeNode.cs
+++ b/OpenSim/Region/Environment/Types/BasicQuadTreeNode.cs
@@ -1,167 +1,167 @@
1using System; 1using System;
2using System.Collections.Generic; 2using System.Collections.Generic;
3using System.Text; 3using System.Text;
4using OpenSim.Region.Environment.Scenes; 4using OpenSim.Region.Environment.Scenes;
5 5
6namespace OpenSim.Region.Environment.Types 6namespace OpenSim.Region.Environment.Types
7{ 7{
8 public class BasicQuadTreeNode 8 public class BasicQuadTreeNode
9 { 9 {
10 private List<SceneObjectGroup> m_objects = new List<SceneObjectGroup>(); 10 private List<SceneObjectGroup> m_objects = new List<SceneObjectGroup>();
11 private BasicQuadTreeNode[] m_childNodes = null; 11 private BasicQuadTreeNode[] m_childNodes = null;
12 private BasicQuadTreeNode m_parent = null; 12 private BasicQuadTreeNode m_parent = null;
13 13
14 private short m_leftX; 14 private short m_leftX;
15 private short m_leftY; 15 private short m_leftY;
16 private short m_width; 16 private short m_width;
17 private short m_height; 17 private short m_height;
18 18
19 public BasicQuadTreeNode(BasicQuadTreeNode parent, short leftX, short leftY, short width, short height) 19 public BasicQuadTreeNode(BasicQuadTreeNode parent, short leftX, short leftY, short width, short height)
20 { 20 {
21 m_parent = parent; 21 m_parent = parent;
22 m_leftX = leftX; 22 m_leftX = leftX;
23 m_leftY = leftY; 23 m_leftY = leftY;
24 m_width = width; 24 m_width = width;
25 m_height = height; 25 m_height = height;
26 } 26 }
27 27
28 public void AddObject(SceneObjectGroup obj) 28 public void AddObject(SceneObjectGroup obj)
29 { 29 {
30 if (m_childNodes == null) 30 if (m_childNodes == null)
31 { 31 {
32 if (!m_objects.Contains(obj)) 32 if (!m_objects.Contains(obj))
33 { 33 {
34 m_objects.Add(obj); 34 m_objects.Add(obj);
35 } 35 }
36 } 36 }
37 else 37 else
38 { 38 {
39 if (obj.AbsolutePosition.X < (m_leftX + (m_width / 2))) 39 if (obj.AbsolutePosition.X < (m_leftX + (m_width / 2)))
40 { 40 {
41 if (obj.AbsolutePosition.Y < (m_leftY + (m_height / 2))) 41 if (obj.AbsolutePosition.Y < (m_leftY + (m_height / 2)))
42 { 42 {
43 m_childNodes[0].AddObject(obj); 43 m_childNodes[0].AddObject(obj);
44 } 44 }
45 else 45 else
46 { 46 {
47 m_childNodes[2].AddObject(obj); 47 m_childNodes[2].AddObject(obj);
48 } 48 }
49 } 49 }
50 else 50 else
51 { 51 {
52 if (obj.AbsolutePosition.Y < (m_leftY + (m_height / 2))) 52 if (obj.AbsolutePosition.Y < (m_leftY + (m_height / 2)))
53 { 53 {
54 m_childNodes[1].AddObject(obj); 54 m_childNodes[1].AddObject(obj);
55 } 55 }
56 else 56 else
57 { 57 {
58 m_childNodes[3].AddObject(obj); 58 m_childNodes[3].AddObject(obj);
59 } 59 }
60 } 60 }
61 } 61 }
62 } 62 }
63 63
64 public void Subdivide() 64 public void Subdivide()
65 { 65 {
66 if (m_childNodes == null) 66 if (m_childNodes == null)
67 { 67 {
68 m_childNodes = new BasicQuadTreeNode[4]; 68 m_childNodes = new BasicQuadTreeNode[4];
69 m_childNodes[0] = new BasicQuadTreeNode(this, m_leftX, m_leftY,(short) (m_width / 2), (short)( m_height / 2)); 69 m_childNodes[0] = new BasicQuadTreeNode(this, m_leftX, m_leftY,(short) (m_width / 2), (short)( m_height / 2));
70 m_childNodes[1] = new BasicQuadTreeNode(this,(short)( m_leftX + (m_width / 2)), m_leftY,(short)( m_width / 2),(short) (m_height / 2)); 70 m_childNodes[1] = new BasicQuadTreeNode(this,(short)( m_leftX + (m_width / 2)), m_leftY,(short)( m_width / 2),(short) (m_height / 2));
71 m_childNodes[2] = new BasicQuadTreeNode(this, m_leftX, (short)( m_leftY + (m_height / 2)), (short)(m_width / 2),(short)( m_height / 2)); 71 m_childNodes[2] = new BasicQuadTreeNode(this, m_leftX, (short)( m_leftY + (m_height / 2)), (short)(m_width / 2),(short)( m_height / 2));
72 m_childNodes[3] = new BasicQuadTreeNode(this, (short)( m_leftX + (m_width / 2)),(short)( m_height + (m_height / 2)),(short)( m_width / 2), (short)(m_height / 2)); 72 m_childNodes[3] = new BasicQuadTreeNode(this, (short)( m_leftX + (m_width / 2)),(short)( m_height + (m_height / 2)),(short)( m_width / 2), (short)(m_height / 2));
73 } 73 }
74 else 74 else
75 { 75 {
76 for (int i = 0; i < m_childNodes.Length; i++) 76 for (int i = 0; i < m_childNodes.Length; i++)
77 { 77 {
78 m_childNodes[i].Subdivide(); 78 m_childNodes[i].Subdivide();
79 } 79 }
80 } 80 }
81 } 81 }
82 82
83 public List<SceneObjectGroup> GetObjectsFrom(int x, int y) 83 public List<SceneObjectGroup> GetObjectsFrom(int x, int y)
84 { 84 {
85 if (m_childNodes == null) 85 if (m_childNodes == null)
86 { 86 {
87 return m_objects; 87 return m_objects;
88 } 88 }
89 else 89 else
90 { 90 {
91 if (x < (m_leftX + (m_width / 2))) 91 if (x < (m_leftX + (m_width / 2)))
92 { 92 {
93 if (y < (m_leftY + (m_height / 2))) 93 if (y < (m_leftY + (m_height / 2)))
94 { 94 {
95 return m_childNodes[0].GetObjectsFrom(x, y); 95 return m_childNodes[0].GetObjectsFrom(x, y);
96 } 96 }
97 else 97 else
98 { 98 {
99 return m_childNodes[2].GetObjectsFrom(x, y); 99 return m_childNodes[2].GetObjectsFrom(x, y);
100 } 100 }
101 } 101 }
102 else 102 else
103 { 103 {
104 if (y < (m_leftY + (m_height / 2))) 104 if (y < (m_leftY + (m_height / 2)))
105 { 105 {
106 return m_childNodes[1].GetObjectsFrom(x, y); 106 return m_childNodes[1].GetObjectsFrom(x, y);
107 } 107 }
108 else 108 else
109 { 109 {
110 return m_childNodes[3].GetObjectsFrom(x, y); 110 return m_childNodes[3].GetObjectsFrom(x, y);
111 } 111 }
112 } 112 }
113 } 113 }
114 } 114 }
115 115
116 public void Update() 116 public void Update()
117 { 117 {
118 if (m_childNodes != null) 118 if (m_childNodes != null)
119 { 119 {
120 for (int i = 0; i < 4; i++) 120 for (int i = 0; i < 4; i++)
121 { 121 {
122 m_childNodes[i].Update(); 122 m_childNodes[i].Update();
123 } 123 }
124 } 124 }
125 else 125 else
126 { 126 {
127 List<SceneObjectGroup> outBounds = new List<SceneObjectGroup>(); 127 List<SceneObjectGroup> outBounds = new List<SceneObjectGroup>();
128 foreach (SceneObjectGroup group in m_objects) 128 foreach (SceneObjectGroup group in m_objects)
129 { 129 {
130 if (((group.AbsolutePosition.X > m_leftX) && (group.AbsolutePosition.X < (m_leftX + m_width))) && ((group.AbsolutePosition.Y > m_leftY) && (group.AbsolutePosition.Y < (m_leftY + m_height)))) 130 if (((group.AbsolutePosition.X > m_leftX) && (group.AbsolutePosition.X < (m_leftX + m_width))) && ((group.AbsolutePosition.Y > m_leftY) && (group.AbsolutePosition.Y < (m_leftY + m_height))))
131 { 131 {
132 //still in bounds 132 //still in bounds
133 } 133 }
134 else 134 else
135 { 135 {
136 outBounds.Add(group); 136 outBounds.Add(group);
137 } 137 }
138 } 138 }
139 139
140 foreach (SceneObjectGroup removee in outBounds) 140 foreach (SceneObjectGroup removee in outBounds)
141 { 141 {
142 m_objects.Remove(removee); 142 m_objects.Remove(removee);
143 if (m_parent != null) 143 if (m_parent != null)
144 { 144 {
145 m_parent.PassUp(removee); 145 m_parent.PassUp(removee);
146 } 146 }
147 } 147 }
148 outBounds.Clear(); 148 outBounds.Clear();
149 } 149 }
150 } 150 }
151 151
152 public void PassUp(SceneObjectGroup group) 152 public void PassUp(SceneObjectGroup group)
153 { 153 {
154 if (((group.AbsolutePosition.X > m_leftX) && (group.AbsolutePosition.X < (m_leftX + m_width))) && ((group.AbsolutePosition.Y > m_leftY) && (group.AbsolutePosition.Y < (m_leftY + m_height)))) 154 if (((group.AbsolutePosition.X > m_leftX) && (group.AbsolutePosition.X < (m_leftX + m_width))) && ((group.AbsolutePosition.Y > m_leftY) && (group.AbsolutePosition.Y < (m_leftY + m_height))))
155 { 155 {
156 this.AddObject(group); 156 this.AddObject(group);
157 } 157 }
158 else 158 else
159 { 159 {
160 if (m_parent != null) 160 if (m_parent != null)
161 { 161 {
162 m_parent.PassUp(group); 162 m_parent.PassUp(group);
163 } 163 }
164 } 164 }
165 } 165 }
166 } 166 }
167} 167}
diff --git a/OpenSim/Region/Environment/Types/UpdateQueue.cs b/OpenSim/Region/Environment/Types/UpdateQueue.cs
index dab4258..3b7c182 100644
--- a/OpenSim/Region/Environment/Types/UpdateQueue.cs
+++ b/OpenSim/Region/Environment/Types/UpdateQueue.cs
@@ -1,54 +1,54 @@
1using System; 1using System;
2using System.Collections.Generic; 2using System.Collections.Generic;
3using System.Text; 3using System.Text;
4using OpenSim.Region.Environment.Scenes; 4using OpenSim.Region.Environment.Scenes;
5using libsecondlife; 5using libsecondlife;
6 6
7namespace OpenSim.Region.Environment.Types 7namespace OpenSim.Region.Environment.Types
8{ 8{
9 public class UpdateQueue 9 public class UpdateQueue
10 { 10 {
11 private Queue<SceneObjectPart> m_queue; 11 private Queue<SceneObjectPart> m_queue;
12 12
13 private List<LLUUID> m_ids; 13 private List<LLUUID> m_ids;
14 14
15 public int Count 15 public int Count
16 { 16 {
17 get { return m_queue.Count; } 17 get { return m_queue.Count; }
18 } 18 }
19 19
20 public UpdateQueue() 20 public UpdateQueue()
21 { 21 {
22 m_queue = new Queue<SceneObjectPart>(); 22 m_queue = new Queue<SceneObjectPart>();
23 m_ids = new List<LLUUID>(); 23 m_ids = new List<LLUUID>();
24 } 24 }
25 25
26 public void Enqueue(SceneObjectPart part) 26 public void Enqueue(SceneObjectPart part)
27 { 27 {
28 lock (m_ids) 28 lock (m_ids)
29 { 29 {
30 if (!m_ids.Contains(part.UUID)) 30 if (!m_ids.Contains(part.UUID))
31 { 31 {
32 m_ids.Add(part.UUID); 32 m_ids.Add(part.UUID);
33 m_queue.Enqueue(part); 33 m_queue.Enqueue(part);
34 } 34 }
35 } 35 }
36 } 36 }
37 37
38 public SceneObjectPart Dequeue() 38 public SceneObjectPart Dequeue()
39 { 39 {
40 SceneObjectPart part = null; 40 SceneObjectPart part = null;
41 if (m_queue.Count > 0) 41 if (m_queue.Count > 0)
42 { 42 {
43 part = m_queue.Dequeue(); 43 part = m_queue.Dequeue();
44 lock (m_ids) 44 lock (m_ids)
45 { 45 {
46 m_ids.Remove(part.UUID); 46 m_ids.Remove(part.UUID);
47 } 47 }
48 } 48 }
49 49
50 return part; 50 return part;
51 } 51 }
52 52
53 } 53 }
54} 54}