diff options
Diffstat (limited to 'OpenSim/Region')
182 files changed, 8023 insertions, 5541 deletions
diff --git a/OpenSim/Region/Application/Application.cs b/OpenSim/Region/Application/Application.cs index 0288f63..bb26ce3 100644 --- a/OpenSim/Region/Application/Application.cs +++ b/OpenSim/Region/Application/Application.cs | |||
@@ -26,27 +26,24 @@ | |||
26 | * | 26 | * |
27 | */ | 27 | */ |
28 | using System; | 28 | using System; |
29 | using OpenSim.Framework.Console; | ||
30 | using OpenSim.Region.Environment.Scenes; | ||
31 | using Nini.Config; | 29 | using Nini.Config; |
32 | using System.Threading; | ||
33 | using OpenSim.Framework; | 30 | using OpenSim.Framework; |
31 | using OpenSim.Framework.Console; | ||
34 | 32 | ||
35 | namespace OpenSim | 33 | namespace OpenSim |
36 | { | 34 | { |
37 | public class Application | 35 | public class Application |
38 | { | 36 | { |
39 | //could move our main function into OpenSimMain and kill this class | 37 | //could move our main function into OpenSimMain and kill this class |
40 | [STAThread] | 38 | [STAThread] |
41 | public static void Main(string[] args) | 39 | public static void Main(string[] args) |
42 | { | 40 | { |
43 | |||
44 | Console.WriteLine("OpenSim " + VersionInfo.Version + "\n"); | 41 | Console.WriteLine("OpenSim " + VersionInfo.Version + "\n"); |
45 | 42 | ||
46 | 43 | ||
47 | Console.Write("Performing compatibility checks... "); | 44 | Console.Write("Performing compatibility checks... "); |
48 | string supported = ""; | 45 | string supported = ""; |
49 | if (OpenSim.Framework.Util.IsEnvironmentSupported(ref supported)) | 46 | if (Util.IsEnvironmentSupported(ref supported)) |
50 | { | 47 | { |
51 | Console.WriteLine(" Environment is compatible.\n"); | 48 | Console.WriteLine(" Environment is compatible.\n"); |
52 | } | 49 | } |
@@ -54,10 +51,10 @@ namespace OpenSim | |||
54 | { | 51 | { |
55 | Console.WriteLine(" Environment is unsupported (" + supported + ")\n"); | 52 | Console.WriteLine(" Environment is unsupported (" + supported + ")\n"); |
56 | } | 53 | } |
57 | 54 | ||
58 | Console.WriteLine("Starting...\n"); | 55 | Console.WriteLine("Starting...\n"); |
59 | 56 | ||
60 | Culture.SetCurrentCulture(); | 57 | Culture.SetCurrentCulture(); |
61 | 58 | ||
62 | ArgvConfigSource configSource = new ArgvConfigSource(args); | 59 | ArgvConfigSource configSource = new ArgvConfigSource(args); |
63 | 60 | ||
@@ -80,4 +77,4 @@ namespace OpenSim | |||
80 | } | 77 | } |
81 | } | 78 | } |
82 | } | 79 | } |
83 | } | 80 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Application/OpenSimController.cs b/OpenSim/Region/Application/OpenSimController.cs index da93b54..1fa4b04 100644 --- a/OpenSim/Region/Application/OpenSimController.cs +++ b/OpenSim/Region/Application/OpenSimController.cs | |||
@@ -1,28 +1,15 @@ | |||
1 | using System; | 1 | using System; |
2 | using System.Collections.Generic; | ||
3 | using System.Collections; | 2 | using System.Collections; |
4 | using System.IO; | 3 | using System.Net; |
5 | using System.Text; | 4 | using System.Timers; |
6 | using Nini.Config; | 5 | using Nwc.XmlRpc; |
7 | using OpenSim.Framework.Communications.Cache; | 6 | using OpenSim.Framework; |
8 | using OpenSim.Framework.Console; | 7 | using OpenSim.Framework.Console; |
9 | using OpenSim.Framework.Interfaces; | ||
10 | using OpenSim.Framework.Servers; | 8 | using OpenSim.Framework.Servers; |
11 | using OpenSim.Framework; | ||
12 | using OpenSim.Framework; | ||
13 | using OpenSim.Region.ClientStack; | ||
14 | using OpenSim.Region.Communications.Local; | ||
15 | using OpenSim.Region.Communications.OGS1; | ||
16 | using OpenSim.Region.Environment; | ||
17 | using OpenSim.Region.Environment.Scenes; | ||
18 | using OpenSim.Region.Physics.Manager; | ||
19 | using System.Globalization; | ||
20 | using Nwc.XmlRpc; | ||
21 | using RegionInfo = OpenSim.Framework.RegionInfo; | ||
22 | 9 | ||
23 | namespace OpenSim | 10 | namespace OpenSim |
24 | { | 11 | { |
25 | class OpenSimController | 12 | internal class OpenSimController |
26 | { | 13 | { |
27 | private OpenSimMain m_app; | 14 | private OpenSimMain m_app; |
28 | private BaseHttpServer m_httpServer; | 15 | private BaseHttpServer m_httpServer; |
@@ -44,22 +31,23 @@ namespace OpenSim | |||
44 | { | 31 | { |
45 | MainLog.Instance.Verbose("CONTROLLER", "Recieved Shutdown Administrator Request"); | 32 | MainLog.Instance.Verbose("CONTROLLER", "Recieved Shutdown Administrator Request"); |
46 | XmlRpcResponse response = new XmlRpcResponse(); | 33 | XmlRpcResponse response = new XmlRpcResponse(); |
47 | Hashtable requestData = (Hashtable)request.Params[0]; | 34 | Hashtable requestData = (Hashtable) request.Params[0]; |
48 | 35 | ||
49 | if ((string)requestData["shutdown"] == "delayed") | 36 | if ((string) requestData["shutdown"] == "delayed") |
50 | { | 37 | { |
51 | int timeout = Convert.ToInt32((string)requestData["milliseconds"]); | 38 | int timeout = Convert.ToInt32((string) requestData["milliseconds"]); |
52 | 39 | ||
53 | Hashtable responseData = new Hashtable(); | 40 | Hashtable responseData = new Hashtable(); |
54 | responseData["accepted"] = "true"; | 41 | responseData["accepted"] = "true"; |
55 | response.Value = responseData; | 42 | response.Value = responseData; |
56 | 43 | ||
57 | m_app.SceneManager.SendGeneralMessage("Region is going down in " + ((int)(timeout / 1000)).ToString() + " second(s). Please save what you are doing and log out."); | 44 | m_app.SceneManager.SendGeneralMessage("Region is going down in " + ((int) (timeout/1000)).ToString() + |
45 | " second(s). Please save what you are doing and log out."); | ||
58 | 46 | ||
59 | // Perform shutdown | 47 | // Perform shutdown |
60 | System.Timers.Timer shutdownTimer = new System.Timers.Timer(timeout); // Wait before firing | 48 | Timer shutdownTimer = new Timer(timeout); // Wait before firing |
61 | shutdownTimer.AutoReset = false; | 49 | shutdownTimer.AutoReset = false; |
62 | shutdownTimer.Elapsed += new System.Timers.ElapsedEventHandler(shutdownTimer_Elapsed); | 50 | shutdownTimer.Elapsed += new ElapsedEventHandler(shutdownTimer_Elapsed); |
63 | 51 | ||
64 | return response; | 52 | return response; |
65 | } | 53 | } |
@@ -72,15 +60,15 @@ namespace OpenSim | |||
72 | m_app.SceneManager.SendGeneralMessage("Region is going down now."); | 60 | m_app.SceneManager.SendGeneralMessage("Region is going down now."); |
73 | 61 | ||
74 | // Perform shutdown | 62 | // Perform shutdown |
75 | System.Timers.Timer shutdownTimer = new System.Timers.Timer(2000); // Wait 2 seconds before firing | 63 | Timer shutdownTimer = new Timer(2000); // Wait 2 seconds before firing |
76 | shutdownTimer.AutoReset = false; | 64 | shutdownTimer.AutoReset = false; |
77 | shutdownTimer.Elapsed += new System.Timers.ElapsedEventHandler(shutdownTimer_Elapsed); | 65 | shutdownTimer.Elapsed += new ElapsedEventHandler(shutdownTimer_Elapsed); |
78 | 66 | ||
79 | return response; | 67 | return response; |
80 | } | 68 | } |
81 | } | 69 | } |
82 | 70 | ||
83 | void shutdownTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) | 71 | private void shutdownTimer_Elapsed(object sender, ElapsedEventArgs e) |
84 | { | 72 | { |
85 | m_app.Shutdown(); | 73 | m_app.Shutdown(); |
86 | } | 74 | } |
@@ -89,28 +77,28 @@ namespace OpenSim | |||
89 | { | 77 | { |
90 | MainLog.Instance.Verbose("CONTROLLER", "Recieved Create Region Administrator Request"); | 78 | MainLog.Instance.Verbose("CONTROLLER", "Recieved Create Region Administrator Request"); |
91 | XmlRpcResponse response = new XmlRpcResponse(); | 79 | XmlRpcResponse response = new XmlRpcResponse(); |
92 | Hashtable requestData = (Hashtable)request.Params[0]; | 80 | Hashtable requestData = (Hashtable) request.Params[0]; |
93 | 81 | ||
94 | RegionInfo newRegionData = new RegionInfo(); | 82 | RegionInfo newRegionData = new RegionInfo(); |
95 | 83 | ||
96 | try | 84 | try |
97 | { | 85 | { |
98 | newRegionData.RegionID = (string)requestData["region_id"]; | 86 | newRegionData.RegionID = (string) requestData["region_id"]; |
99 | newRegionData.RegionName = (string)requestData["region_name"]; | 87 | newRegionData.RegionName = (string) requestData["region_name"]; |
100 | newRegionData.RegionLocX = Convert.ToUInt32((string)requestData["region_x"]); | 88 | newRegionData.RegionLocX = Convert.ToUInt32((string) requestData["region_x"]); |
101 | newRegionData.RegionLocY = Convert.ToUInt32((string)requestData["region_y"]); | 89 | newRegionData.RegionLocY = Convert.ToUInt32((string) requestData["region_y"]); |
102 | 90 | ||
103 | // Security risk | 91 | // Security risk |
104 | newRegionData.DataStore = (string)requestData["datastore"]; | 92 | newRegionData.DataStore = (string) requestData["datastore"]; |
105 | 93 | ||
106 | newRegionData.InternalEndPoint = new System.Net.IPEndPoint( | 94 | newRegionData.InternalEndPoint = new IPEndPoint( |
107 | System.Net.IPAddress.Parse((string)requestData["listen_ip"]), 0); | 95 | IPAddress.Parse((string) requestData["listen_ip"]), 0); |
108 | 96 | ||
109 | newRegionData.InternalEndPoint.Port = Convert.ToInt32((string)requestData["listen_port"]); | 97 | newRegionData.InternalEndPoint.Port = Convert.ToInt32((string) requestData["listen_port"]); |
110 | newRegionData.ExternalHostName = (string)requestData["external_address"]; | 98 | newRegionData.ExternalHostName = (string) requestData["external_address"]; |
111 | 99 | ||
112 | newRegionData.MasterAvatarFirstName = (string)requestData["region_master_first"]; | 100 | newRegionData.MasterAvatarFirstName = (string) requestData["region_master_first"]; |
113 | newRegionData.MasterAvatarLastName = (string)requestData["region_master_last"]; | 101 | newRegionData.MasterAvatarLastName = (string) requestData["region_master_last"]; |
114 | 102 | ||
115 | m_app.CreateRegion(newRegionData); | 103 | m_app.CreateRegion(newRegionData); |
116 | 104 | ||
@@ -129,4 +117,4 @@ namespace OpenSim | |||
129 | return response; | 117 | return response; |
130 | } | 118 | } |
131 | } | 119 | } |
132 | } | 120 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Application/OpenSimMain.cs b/OpenSim/Region/Application/OpenSimMain.cs index b938227..7245482 100644 --- a/OpenSim/Region/Application/OpenSimMain.cs +++ b/OpenSim/Region/Application/OpenSimMain.cs | |||
@@ -31,21 +31,17 @@ using System.Collections.Generic; | |||
31 | using System.IO; | 31 | using System.IO; |
32 | using System.Text; | 32 | using System.Text; |
33 | using Nini.Config; | 33 | using Nini.Config; |
34 | using OpenSim.Framework; | ||
34 | using OpenSim.Framework.Communications.Cache; | 35 | using OpenSim.Framework.Communications.Cache; |
35 | using OpenSim.Framework.Console; | 36 | using OpenSim.Framework.Console; |
36 | using OpenSim.Framework.Interfaces; | ||
37 | using OpenSim.Framework.Servers; | 37 | using OpenSim.Framework.Servers; |
38 | using OpenSim.Framework; | ||
39 | using OpenSim.Framework; | ||
40 | using OpenSim.Region.ClientStack; | 38 | using OpenSim.Region.ClientStack; |
41 | using OpenSim.Region.Communications.Local; | 39 | using OpenSim.Region.Communications.Local; |
42 | using OpenSim.Region.Communications.OGS1; | 40 | using OpenSim.Region.Communications.OGS1; |
43 | using OpenSim.Region.Environment; | 41 | using OpenSim.Region.Environment; |
42 | using OpenSim.Region.Environment.Interfaces; | ||
44 | using OpenSim.Region.Environment.Scenes; | 43 | using OpenSim.Region.Environment.Scenes; |
45 | using OpenSim.Region.Physics.Manager; | 44 | using OpenSim.Region.Physics.Manager; |
46 | using OpenSim.Framework; | ||
47 | using System.Globalization; | ||
48 | using RegionInfo = OpenSim.Framework.RegionInfo; | ||
49 | 45 | ||
50 | namespace OpenSim | 46 | namespace OpenSim |
51 | { | 47 | { |
@@ -114,7 +110,6 @@ namespace OpenSim | |||
114 | } | 110 | } |
115 | else | 111 | else |
116 | { | 112 | { |
117 | |||
118 | // no default config files, so set default values, and save it | 113 | // no default config files, so set default values, and save it |
119 | SetDefaultConfig(); | 114 | SetDefaultConfig(); |
120 | 115 | ||
@@ -125,7 +120,6 @@ namespace OpenSim | |||
125 | } | 120 | } |
126 | 121 | ||
127 | ReadConfigSettings(); | 122 | ReadConfigSettings(); |
128 | |||
129 | } | 123 | } |
130 | 124 | ||
131 | protected void SetDefaultConfig() | 125 | protected void SetDefaultConfig() |
@@ -148,7 +142,6 @@ namespace OpenSim | |||
148 | config.Set("script_engine", "DotNetEngine"); | 142 | config.Set("script_engine", "DotNetEngine"); |
149 | 143 | ||
150 | config.Set("asset_database", "sqlite"); | 144 | config.Set("asset_database", "sqlite"); |
151 | |||
152 | } | 145 | } |
153 | 146 | ||
154 | if (m_config.Configs["StandAlone"] == null) | 147 | if (m_config.Configs["StandAlone"] == null) |
@@ -217,7 +210,8 @@ namespace OpenSim | |||
217 | standaloneConfig.GetString("inventory_plugin", "OpenSim.Framework.Data.SQLite.dll"); | 210 | standaloneConfig.GetString("inventory_plugin", "OpenSim.Framework.Data.SQLite.dll"); |
218 | m_standaloneUserPlugin = | 211 | m_standaloneUserPlugin = |
219 | standaloneConfig.GetString("userDatabase_plugin", "OpenSim.Framework.Data.DB4o.dll"); | 212 | standaloneConfig.GetString("userDatabase_plugin", "OpenSim.Framework.Data.DB4o.dll"); |
220 | m_standaloneAssetPlugin = standaloneConfig.GetString("asset_plugin", "OpenSim.Framework.Data.SQLite.dll"); | 213 | m_standaloneAssetPlugin = |
214 | standaloneConfig.GetString("asset_plugin", "OpenSim.Framework.Data.SQLite.dll"); | ||
221 | 215 | ||
222 | m_dumpAssetsToFile = standaloneConfig.GetBoolean("dump_assets_to_file", false); | 216 | m_dumpAssetsToFile = standaloneConfig.GetBoolean("dump_assets_to_file", false); |
223 | } | 217 | } |
@@ -230,7 +224,6 @@ namespace OpenSim | |||
230 | /// </summary> | 224 | /// </summary> |
231 | public override void StartUp() | 225 | public override void StartUp() |
232 | { | 226 | { |
233 | |||
234 | if (!Directory.Exists(Util.logDir())) | 227 | if (!Directory.Exists(Util.logDir())) |
235 | { | 228 | { |
236 | Directory.CreateDirectory(Util.logDir()); | 229 | Directory.CreateDirectory(Util.logDir()); |
@@ -248,22 +241,28 @@ namespace OpenSim | |||
248 | LocalInventoryService inventoryService = new LocalInventoryService(); | 241 | LocalInventoryService inventoryService = new LocalInventoryService(); |
249 | inventoryService.AddPlugin(m_standaloneInventoryPlugin); | 242 | inventoryService.AddPlugin(m_standaloneInventoryPlugin); |
250 | 243 | ||
251 | LocalUserServices userService = new LocalUserServices(m_networkServersInfo, m_networkServersInfo.DefaultHomeLocX, m_networkServersInfo.DefaultHomeLocY, inventoryService); | 244 | LocalUserServices userService = |
245 | new LocalUserServices(m_networkServersInfo, m_networkServersInfo.DefaultHomeLocX, | ||
246 | m_networkServersInfo.DefaultHomeLocY, inventoryService); | ||
252 | userService.AddPlugin(m_standaloneUserPlugin); | 247 | userService.AddPlugin(m_standaloneUserPlugin); |
253 | 248 | ||
254 | LocalBackEndServices backendService = new LocalBackEndServices(); | 249 | LocalBackEndServices backendService = new LocalBackEndServices(); |
255 | 250 | ||
256 | CommunicationsLocal localComms = new CommunicationsLocal(m_networkServersInfo, m_httpServer, m_assetCache, userService, inventoryService, backendService, backendService, m_dumpAssetsToFile); | 251 | CommunicationsLocal localComms = |
252 | new CommunicationsLocal(m_networkServersInfo, m_httpServer, m_assetCache, userService, | ||
253 | inventoryService, backendService, backendService, m_dumpAssetsToFile); | ||
257 | m_commsManager = localComms; | 254 | m_commsManager = localComms; |
258 | 255 | ||
259 | m_loginService = new LocalLoginService(userService, m_standaloneWelcomeMessage, localComms, m_networkServersInfo, m_standaloneAuthenticate); | 256 | m_loginService = |
257 | new LocalLoginService(userService, m_standaloneWelcomeMessage, localComms, m_networkServersInfo, | ||
258 | m_standaloneAuthenticate); | ||
260 | m_loginService.OnLoginToRegion += backendService.AddNewSession; | 259 | m_loginService.OnLoginToRegion += backendService.AddNewSession; |
261 | 260 | ||
262 | m_httpServer.AddXmlRPCHandler("login_to_simulator", m_loginService.XmlRpcLoginMethod); | 261 | m_httpServer.AddXmlRPCHandler("login_to_simulator", m_loginService.XmlRpcLoginMethod); |
263 | 262 | ||
264 | if (m_standaloneAuthenticate) | 263 | if (m_standaloneAuthenticate) |
265 | { | 264 | { |
266 | this.CreateAccount = localComms.doCreate; | 265 | CreateAccount = localComms.doCreate; |
267 | } | 266 | } |
268 | } | 267 | } |
269 | else | 268 | else |
@@ -308,7 +307,7 @@ namespace OpenSim | |||
308 | // Start UDP servers | 307 | // Start UDP servers |
309 | for (int i = 0; i < m_udpServers.Count; i++) | 308 | for (int i = 0; i < m_udpServers.Count; i++) |
310 | { | 309 | { |
311 | this.m_udpServers[i].ServerListener(); | 310 | m_udpServers[i].ServerListener(); |
312 | } | 311 | } |
313 | 312 | ||
314 | //Run Startup Commands | 313 | //Run Startup Commands |
@@ -321,7 +320,8 @@ namespace OpenSim | |||
321 | MainLog.Instance.Verbose("STARTUP", "No startup command script specified. Moving on..."); | 320 | MainLog.Instance.Verbose("STARTUP", "No startup command script specified. Moving on..."); |
322 | } | 321 | } |
323 | 322 | ||
324 | MainLog.Instance.Status("STARTUP", "Startup complete, serving " + m_udpServers.Count.ToString() + " region(s)"); | 323 | MainLog.Instance.Status("STARTUP", |
324 | "Startup complete, serving " + m_udpServers.Count.ToString() + " region(s)"); | ||
325 | } | 325 | } |
326 | 326 | ||
327 | public UDPServer CreateRegion(RegionInfo regionInfo) | 327 | public UDPServer CreateRegion(RegionInfo regionInfo) |
@@ -365,9 +365,12 @@ namespace OpenSim | |||
365 | return new StorageManager(m_storageDLL, regionInfo.DataStore, regionInfo.RegionName); | 365 | return new StorageManager(m_storageDLL, regionInfo.DataStore, regionInfo.RegionName); |
366 | } | 366 | } |
367 | 367 | ||
368 | protected override Scene CreateScene(RegionInfo regionInfo, StorageManager storageManager, AgentCircuitManager circuitManager) | 368 | protected override Scene CreateScene(RegionInfo regionInfo, StorageManager storageManager, |
369 | AgentCircuitManager circuitManager) | ||
369 | { | 370 | { |
370 | return new Scene(regionInfo, circuitManager, m_commsManager, m_assetCache, storageManager, m_httpServer, m_moduleLoader, m_dumpAssetsToFile); | 371 | return |
372 | new Scene(regionInfo, circuitManager, m_commsManager, m_assetCache, storageManager, m_httpServer, | ||
373 | m_moduleLoader, m_dumpAssetsToFile); | ||
371 | } | 374 | } |
372 | 375 | ||
373 | protected override void Initialize() | 376 | protected override void Initialize() |
@@ -436,7 +439,6 @@ namespace OpenSim | |||
436 | 439 | ||
437 | protected void ConnectToRemoteGridServer() | 440 | protected void ConnectToRemoteGridServer() |
438 | { | 441 | { |
439 | |||
440 | } | 442 | } |
441 | 443 | ||
442 | #endregion | 444 | #endregion |
@@ -464,6 +466,7 @@ namespace OpenSim | |||
464 | } | 466 | } |
465 | 467 | ||
466 | #region Console Commands | 468 | #region Console Commands |
469 | |||
467 | /// <summary> | 470 | /// <summary> |
468 | /// | 471 | /// |
469 | /// </summary> | 472 | /// </summary> |
@@ -649,11 +652,10 @@ namespace OpenSim | |||
649 | case "change-region": | 652 | case "change-region": |
650 | if (cmdparams.Length > 0) | 653 | if (cmdparams.Length > 0) |
651 | { | 654 | { |
652 | string regionName = this.CombineParams(cmdparams, 0); | 655 | string regionName = CombineParams(cmdparams, 0); |
653 | 656 | ||
654 | if (m_sceneManager.TrySetCurrentScene(regionName)) | 657 | if (m_sceneManager.TrySetCurrentScene(regionName)) |
655 | { | 658 | { |
656 | |||
657 | } | 659 | } |
658 | else | 660 | else |
659 | { | 661 | { |
@@ -663,11 +665,13 @@ namespace OpenSim | |||
663 | 665 | ||
664 | if (m_sceneManager.CurrentScene == null) | 666 | if (m_sceneManager.CurrentScene == null) |
665 | { | 667 | { |
666 | MainLog.Instance.Verbose("Currently at Root level. To change region please use 'change-region <regioname>'"); | 668 | MainLog.Instance.Verbose( |
669 | "Currently at Root level. To change region please use 'change-region <regioname>'"); | ||
667 | } | 670 | } |
668 | else | 671 | else |
669 | { | 672 | { |
670 | MainLog.Instance.Verbose("Current Region: " + m_sceneManager.CurrentScene.RegionInfo.RegionName + ". To change region please use 'change-region <regioname>'"); | 673 | MainLog.Instance.Verbose("Current Region: " + m_sceneManager.CurrentScene.RegionInfo.RegionName + |
674 | ". To change region please use 'change-region <regioname>'"); | ||
671 | } | 675 | } |
672 | 676 | ||
673 | break; | 677 | break; |
@@ -676,7 +680,6 @@ namespace OpenSim | |||
676 | m_log.Error("Unknown command"); | 680 | m_log.Error("Unknown command"); |
677 | break; | 681 | break; |
678 | } | 682 | } |
679 | |||
680 | } | 683 | } |
681 | 684 | ||
682 | public void Debug(string[] args) | 685 | public void Debug(string[] args) |
@@ -695,8 +698,7 @@ namespace OpenSim | |||
695 | { | 698 | { |
696 | m_log.Error("packet debug should be 0..2"); | 699 | m_log.Error("packet debug should be 0..2"); |
697 | } | 700 | } |
698 | System.Console.WriteLine("New packet debug: " + newDebug.ToString()); | 701 | Console.WriteLine("New packet debug: " + newDebug.ToString()); |
699 | |||
700 | } | 702 | } |
701 | 703 | ||
702 | break; | 704 | break; |
@@ -704,7 +706,6 @@ namespace OpenSim | |||
704 | m_log.Error("Unknown debug"); | 706 | m_log.Error("Unknown debug"); |
705 | break; | 707 | break; |
706 | } | 708 | } |
707 | |||
708 | } | 709 | } |
709 | 710 | ||
710 | /// <summary> | 711 | /// <summary> |
@@ -720,7 +721,9 @@ namespace OpenSim | |||
720 | m_log.Error("That is " + (DateTime.Now - m_startuptime).ToString()); | 721 | m_log.Error("That is " + (DateTime.Now - m_startuptime).ToString()); |
721 | break; | 722 | break; |
722 | case "users": | 723 | case "users": |
723 | m_log.Error(String.Format("{0,-16}{1,-16}{2,-25}{3,-25}{4,-16}{5,-16}{6,-16}", "Firstname", "Lastname", "Agent ID", "Session ID", "Circuit", "IP", "World")); | 724 | m_log.Error( |
725 | String.Format("{0,-16}{1,-16}{2,-25}{3,-25}{4,-16}{5,-16}{6,-16}", "Firstname", "Lastname", | ||
726 | "Agent ID", "Session ID", "Circuit", "IP", "World")); | ||
724 | 727 | ||
725 | foreach (ScenePresence presence in m_sceneManager.GetCurrentSceneAvatars()) | 728 | foreach (ScenePresence presence in m_sceneManager.GetCurrentSceneAvatars()) |
726 | { | 729 | { |
@@ -750,7 +753,7 @@ namespace OpenSim | |||
750 | break; | 753 | break; |
751 | case "modules": | 754 | case "modules": |
752 | m_log.Error("The currently loaded shared modules are:"); | 755 | m_log.Error("The currently loaded shared modules are:"); |
753 | foreach (OpenSim.Region.Environment.Interfaces.IRegionModule module in m_moduleLoader.GetLoadedSharedModules ) | 756 | foreach (IRegionModule module in m_moduleLoader.GetLoadedSharedModules) |
754 | { | 757 | { |
755 | m_log.Error("Shared Module: " + module.Name); | 758 | m_log.Error("Shared Module: " + module.Name); |
756 | } | 759 | } |
@@ -768,8 +771,7 @@ namespace OpenSim | |||
768 | result = result.TrimEnd(' '); | 771 | result = result.TrimEnd(' '); |
769 | return result; | 772 | return result; |
770 | } | 773 | } |
774 | |||
771 | #endregion | 775 | #endregion |
772 | } | 776 | } |
773 | 777 | } \ No newline at end of file | |
774 | |||
775 | } | ||
diff --git a/OpenSim/Region/Application/VersionInfo.cs b/OpenSim/Region/Application/VersionInfo.cs index f045164..7840206 100644 --- a/OpenSim/Region/Application/VersionInfo.cs +++ b/OpenSim/Region/Application/VersionInfo.cs | |||
@@ -33,4 +33,4 @@ namespace OpenSim | |||
33 | { | 33 | { |
34 | public static string Version = "0.4, SVN build "; | 34 | public static string Version = "0.4, SVN build "; |
35 | } | 35 | } |
36 | } | 36 | } \ No newline at end of file |
diff --git a/OpenSim/Region/ClientStack/ClientStackNetworkHandler.cs b/OpenSim/Region/ClientStack/ClientStackNetworkHandler.cs index 3960c19..4b44ead 100644 --- a/OpenSim/Region/ClientStack/ClientStackNetworkHandler.cs +++ b/OpenSim/Region/ClientStack/ClientStackNetworkHandler.cs | |||
@@ -29,12 +29,10 @@ using System.Net.Sockets; | |||
29 | 29 | ||
30 | namespace OpenSim.Region.ClientStack | 30 | namespace OpenSim.Region.ClientStack |
31 | { | 31 | { |
32 | |||
33 | public interface ClientStackNetworkHandler | 32 | public interface ClientStackNetworkHandler |
34 | { | 33 | { |
35 | void SendPacketTo(byte[] buffer, int size, SocketFlags flags, uint circuitcode);// EndPoint packetSender); | 34 | void SendPacketTo(byte[] buffer, int size, SocketFlags flags, uint circuitcode); // EndPoint packetSender); |
36 | void RemoveClientCircuit(uint circuitcode); | 35 | void RemoveClientCircuit(uint circuitcode); |
37 | void RegisterPacketServer(PacketServer server); | 36 | void RegisterPacketServer(PacketServer server); |
38 | } | 37 | } |
39 | 38 | } \ No newline at end of file | |
40 | } | ||
diff --git a/OpenSim/Region/ClientStack/ClientView.API.cs b/OpenSim/Region/ClientStack/ClientView.API.cs index 24962f8..7dcf1e8 100644 --- a/OpenSim/Region/ClientStack/ClientView.API.cs +++ b/OpenSim/Region/ClientStack/ClientView.API.cs | |||
@@ -32,10 +32,8 @@ using System.Text; | |||
32 | using Axiom.Math; | 32 | using Axiom.Math; |
33 | using libsecondlife; | 33 | using libsecondlife; |
34 | using libsecondlife.Packets; | 34 | using libsecondlife.Packets; |
35 | using OpenSim.Framework.Console; | ||
36 | using OpenSim.Framework.Interfaces; | ||
37 | using OpenSim.Framework; | ||
38 | using OpenSim.Framework; | 35 | using OpenSim.Framework; |
36 | using OpenSim.Framework.Console; | ||
39 | 37 | ||
40 | namespace OpenSim.Region.ClientStack | 38 | namespace OpenSim.Region.ClientStack |
41 | { | 39 | { |
@@ -116,26 +114,18 @@ namespace OpenSim.Region.ClientStack | |||
116 | /// </summary> | 114 | /// </summary> |
117 | public LLVector3 StartPos | 115 | public LLVector3 StartPos |
118 | { | 116 | { |
119 | get | 117 | get { return startpos; } |
120 | { | 118 | set { startpos = value; } |
121 | return startpos; | ||
122 | } | ||
123 | set | ||
124 | { | ||
125 | startpos = value; | ||
126 | } | ||
127 | } | 119 | } |
128 | 120 | ||
129 | /// <summary> | 121 | /// <summary> |
130 | /// | 122 | /// |
131 | /// </summary> | 123 | /// </summary> |
132 | private LLUUID m_agentId; | 124 | private LLUUID m_agentId; |
125 | |||
133 | public LLUUID AgentId | 126 | public LLUUID AgentId |
134 | { | 127 | { |
135 | get | 128 | get { return m_agentId; } |
136 | { | ||
137 | return m_agentId; | ||
138 | } | ||
139 | } | 129 | } |
140 | 130 | ||
141 | /// <summary> | 131 | /// <summary> |
@@ -143,11 +133,7 @@ namespace OpenSim.Region.ClientStack | |||
143 | /// </summary> | 133 | /// </summary> |
144 | public string FirstName | 134 | public string FirstName |
145 | { | 135 | { |
146 | get | 136 | get { return firstName; } |
147 | { | ||
148 | return this.firstName; | ||
149 | } | ||
150 | |||
151 | } | 137 | } |
152 | 138 | ||
153 | /// <summary> | 139 | /// <summary> |
@@ -155,10 +141,7 @@ namespace OpenSim.Region.ClientStack | |||
155 | /// </summary> | 141 | /// </summary> |
156 | public string LastName | 142 | public string LastName |
157 | { | 143 | { |
158 | get | 144 | get { return lastName; } |
159 | { | ||
160 | return this.lastName; | ||
161 | } | ||
162 | } | 145 | } |
163 | 146 | ||
164 | #region Scene/Avatar to Client | 147 | #region Scene/Avatar to Client |
@@ -182,11 +165,11 @@ namespace OpenSim.Region.ClientStack | |||
182 | handshake.RegionInfo.TerrainStartHeight01 = regionInfo.EstateSettings.terrainStartHeight1; | 165 | handshake.RegionInfo.TerrainStartHeight01 = regionInfo.EstateSettings.terrainStartHeight1; |
183 | handshake.RegionInfo.TerrainStartHeight10 = regionInfo.EstateSettings.terrainStartHeight2; | 166 | handshake.RegionInfo.TerrainStartHeight10 = regionInfo.EstateSettings.terrainStartHeight2; |
184 | handshake.RegionInfo.TerrainStartHeight11 = regionInfo.EstateSettings.terrainStartHeight3; | 167 | handshake.RegionInfo.TerrainStartHeight11 = regionInfo.EstateSettings.terrainStartHeight3; |
185 | handshake.RegionInfo.SimAccess = (byte)regionInfo.EstateSettings.simAccess; | 168 | handshake.RegionInfo.SimAccess = (byte) regionInfo.EstateSettings.simAccess; |
186 | handshake.RegionInfo.WaterHeight = regionInfo.EstateSettings.waterHeight; | 169 | handshake.RegionInfo.WaterHeight = regionInfo.EstateSettings.waterHeight; |
187 | 170 | ||
188 | 171 | ||
189 | handshake.RegionInfo.RegionFlags = (uint)regionInfo.EstateSettings.regionFlags; | 172 | handshake.RegionInfo.RegionFlags = (uint) regionInfo.EstateSettings.regionFlags; |
190 | 173 | ||
191 | handshake.RegionInfo.SimName = _enc.GetBytes(regionInfo.RegionName + "\0"); | 174 | handshake.RegionInfo.SimName = _enc.GetBytes(regionInfo.RegionName + "\0"); |
192 | handshake.RegionInfo.SimOwner = regionInfo.MasterAvatarAssignedUUID; | 175 | handshake.RegionInfo.SimOwner = regionInfo.MasterAvatarAssignedUUID; |
@@ -200,7 +183,7 @@ namespace OpenSim.Region.ClientStack | |||
200 | handshake.RegionInfo.TerrainDetail3 = regionInfo.EstateSettings.terrainDetail3; | 183 | handshake.RegionInfo.TerrainDetail3 = regionInfo.EstateSettings.terrainDetail3; |
201 | handshake.RegionInfo.CacheID = LLUUID.Random(); //I guess this is for the client to remember an old setting? | 184 | handshake.RegionInfo.CacheID = LLUUID.Random(); //I guess this is for the client to remember an old setting? |
202 | 185 | ||
203 | this.OutPacket(handshake); | 186 | OutPacket(handshake); |
204 | } | 187 | } |
205 | 188 | ||
206 | /// <summary> | 189 | /// <summary> |
@@ -210,14 +193,14 @@ namespace OpenSim.Region.ClientStack | |||
210 | public void MoveAgentIntoRegion(RegionInfo regInfo, LLVector3 pos, LLVector3 look) | 193 | public void MoveAgentIntoRegion(RegionInfo regInfo, LLVector3 pos, LLVector3 look) |
211 | { | 194 | { |
212 | AgentMovementCompletePacket mov = new AgentMovementCompletePacket(); | 195 | AgentMovementCompletePacket mov = new AgentMovementCompletePacket(); |
213 | mov.AgentData.SessionID = this.m_sessionId; | 196 | mov.AgentData.SessionID = m_sessionId; |
214 | mov.AgentData.AgentID = this.AgentId; | 197 | mov.AgentData.AgentID = AgentId; |
215 | mov.Data.RegionHandle = regInfo.RegionHandle; | 198 | mov.Data.RegionHandle = regInfo.RegionHandle; |
216 | mov.Data.Timestamp = 1172750370; // TODO - dynamicalise this | 199 | mov.Data.Timestamp = 1172750370; // TODO - dynamicalise this |
217 | 200 | ||
218 | if ((pos.X == 0) && (pos.Y == 0) && (pos.Z == 0)) | 201 | if ((pos.X == 0) && (pos.Y == 0) && (pos.Z == 0)) |
219 | { | 202 | { |
220 | mov.Data.Position = this.startpos; | 203 | mov.Data.Position = startpos; |
221 | } | 204 | } |
222 | else | 205 | else |
223 | { | 206 | { |
@@ -255,7 +238,7 @@ namespace OpenSim.Region.ClientStack | |||
255 | reply.ChatData.OwnerID = fromAgentID; | 238 | reply.ChatData.OwnerID = fromAgentID; |
256 | reply.ChatData.SourceID = fromAgentID; | 239 | reply.ChatData.SourceID = fromAgentID; |
257 | 240 | ||
258 | this.OutPacket(reply); | 241 | OutPacket(reply); |
259 | } | 242 | } |
260 | 243 | ||
261 | /// <summary> | 244 | /// <summary> |
@@ -264,27 +247,27 @@ namespace OpenSim.Region.ClientStack | |||
264 | /// <remarks>TODO</remarks> | 247 | /// <remarks>TODO</remarks> |
265 | /// <param name="message"></param> | 248 | /// <param name="message"></param> |
266 | /// <param name="target"></param> | 249 | /// <param name="target"></param> |
267 | public void SendInstantMessage(LLUUID fromAgent, LLUUID fromAgentSession, string message, LLUUID toAgent, LLUUID imSessionID, string fromName, byte dialog, uint timeStamp) | 250 | public void SendInstantMessage(LLUUID fromAgent, LLUUID fromAgentSession, string message, LLUUID toAgent, |
251 | LLUUID imSessionID, string fromName, byte dialog, uint timeStamp) | ||
268 | { | 252 | { |
269 | 253 | Encoding enc = Encoding.ASCII; | |
270 | Encoding enc = Encoding.ASCII; | 254 | ImprovedInstantMessagePacket msg = new ImprovedInstantMessagePacket(); |
271 | ImprovedInstantMessagePacket msg = new ImprovedInstantMessagePacket(); | 255 | msg.AgentData.AgentID = fromAgent; |
272 | msg.AgentData.AgentID = fromAgent; | 256 | msg.AgentData.SessionID = fromAgentSession; |
273 | msg.AgentData.SessionID = fromAgentSession; | 257 | msg.MessageBlock.FromAgentName = enc.GetBytes(fromName + " \0"); |
274 | msg.MessageBlock.FromAgentName = enc.GetBytes(fromName + " \0"); | 258 | msg.MessageBlock.Dialog = dialog; |
275 | msg.MessageBlock.Dialog = dialog; | 259 | msg.MessageBlock.FromGroup = false; |
276 | msg.MessageBlock.FromGroup = false; | 260 | msg.MessageBlock.ID = imSessionID; |
277 | msg.MessageBlock.ID = imSessionID; | 261 | msg.MessageBlock.Offline = 0; |
278 | msg.MessageBlock.Offline = 0; | 262 | msg.MessageBlock.ParentEstateID = 0; |
279 | msg.MessageBlock.ParentEstateID = 0; | 263 | msg.MessageBlock.Position = new LLVector3(); |
280 | msg.MessageBlock.Position = new LLVector3(); | 264 | msg.MessageBlock.RegionID = LLUUID.Random(); |
281 | msg.MessageBlock.RegionID = LLUUID.Random(); | 265 | msg.MessageBlock.Timestamp = timeStamp; |
282 | msg.MessageBlock.Timestamp = timeStamp; | 266 | msg.MessageBlock.ToAgentID = toAgent; |
283 | msg.MessageBlock.ToAgentID = toAgent; | 267 | msg.MessageBlock.Message = enc.GetBytes(message + "\0"); |
284 | msg.MessageBlock.Message = enc.GetBytes(message + "\0"); | 268 | msg.MessageBlock.BinaryBucket = new byte[0]; |
285 | msg.MessageBlock.BinaryBucket = new byte[0]; | 269 | |
286 | 270 | OutPacket(msg); | |
287 | this.OutPacket(msg); | ||
288 | } | 271 | } |
289 | 272 | ||
290 | /// <summary> | 273 | /// <summary> |
@@ -301,10 +284,10 @@ namespace OpenSim.Region.ClientStack | |||
301 | { | 284 | { |
302 | for (int x = 0; x < 16; x = x + 4) | 285 | for (int x = 0; x < 16; x = x + 4) |
303 | { | 286 | { |
304 | patches[0] = x + 0 + y * 16; | 287 | patches[0] = x + 0 + y*16; |
305 | patches[1] = x + 1 + y * 16; | 288 | patches[1] = x + 1 + y*16; |
306 | patches[2] = x + 2 + y * 16; | 289 | patches[2] = x + 2 + y*16; |
307 | patches[3] = x + 3 + y * 16; | 290 | patches[3] = x + 3 + y*16; |
308 | 291 | ||
309 | Packet layerpack = TerrainManager.CreateLandPacket(map, patches); | 292 | Packet layerpack = TerrainManager.CreateLandPacket(map, patches); |
310 | OutPacket(layerpack); | 293 | OutPacket(layerpack); |
@@ -313,7 +296,8 @@ namespace OpenSim.Region.ClientStack | |||
313 | } | 296 | } |
314 | catch (Exception e) | 297 | catch (Exception e) |
315 | { | 298 | { |
316 | MainLog.Instance.Warn("client", "ClientView API.cs: SendLayerData() - Failed with exception " + e.ToString()); | 299 | MainLog.Instance.Warn("client", |
300 | "ClientView API.cs: SendLayerData() - Failed with exception " + e.ToString()); | ||
317 | } | 301 | } |
318 | } | 302 | } |
319 | 303 | ||
@@ -332,14 +316,15 @@ namespace OpenSim.Region.ClientStack | |||
332 | patchx = px; | 316 | patchx = px; |
333 | patchy = py; | 317 | patchy = py; |
334 | 318 | ||
335 | patches[0] = patchx + 0 + patchy * 16; | 319 | patches[0] = patchx + 0 + patchy*16; |
336 | 320 | ||
337 | Packet layerpack = TerrainManager.CreateLandPacket(map, patches); | 321 | Packet layerpack = TerrainManager.CreateLandPacket(map, patches); |
338 | OutPacket(layerpack); | 322 | OutPacket(layerpack); |
339 | } | 323 | } |
340 | catch (Exception e) | 324 | catch (Exception e) |
341 | { | 325 | { |
342 | MainLog.Instance.Warn("client", "ClientView API .cs: SendLayerData() - Failed with exception " + e.ToString()); | 326 | MainLog.Instance.Warn("client", |
327 | "ClientView API .cs: SendLayerData() - Failed with exception " + e.ToString()); | ||
343 | } | 328 | } |
344 | } | 329 | } |
345 | 330 | ||
@@ -352,17 +337,17 @@ namespace OpenSim.Region.ClientStack | |||
352 | public void InformClientOfNeighbour(ulong neighbourHandle, IPEndPoint neighbourEndPoint) | 337 | public void InformClientOfNeighbour(ulong neighbourHandle, IPEndPoint neighbourEndPoint) |
353 | { | 338 | { |
354 | IPAddress neighbourIP = neighbourEndPoint.Address; | 339 | IPAddress neighbourIP = neighbourEndPoint.Address; |
355 | ushort neighbourPort = (ushort)neighbourEndPoint.Port; | 340 | ushort neighbourPort = (ushort) neighbourEndPoint.Port; |
356 | 341 | ||
357 | EnableSimulatorPacket enablesimpacket = new EnableSimulatorPacket(); | 342 | EnableSimulatorPacket enablesimpacket = new EnableSimulatorPacket(); |
358 | enablesimpacket.SimulatorInfo = new EnableSimulatorPacket.SimulatorInfoBlock(); | 343 | enablesimpacket.SimulatorInfo = new EnableSimulatorPacket.SimulatorInfoBlock(); |
359 | enablesimpacket.SimulatorInfo.Handle = neighbourHandle; | 344 | enablesimpacket.SimulatorInfo.Handle = neighbourHandle; |
360 | 345 | ||
361 | byte[] byteIP = neighbourIP.GetAddressBytes(); | 346 | byte[] byteIP = neighbourIP.GetAddressBytes(); |
362 | enablesimpacket.SimulatorInfo.IP = (uint)byteIP[3] << 24; | 347 | enablesimpacket.SimulatorInfo.IP = (uint) byteIP[3] << 24; |
363 | enablesimpacket.SimulatorInfo.IP += (uint)byteIP[2] << 16; | 348 | enablesimpacket.SimulatorInfo.IP += (uint) byteIP[2] << 16; |
364 | enablesimpacket.SimulatorInfo.IP += (uint)byteIP[1] << 8; | 349 | enablesimpacket.SimulatorInfo.IP += (uint) byteIP[1] << 8; |
365 | enablesimpacket.SimulatorInfo.IP += (uint)byteIP[0]; | 350 | enablesimpacket.SimulatorInfo.IP += (uint) byteIP[0]; |
366 | enablesimpacket.SimulatorInfo.Port = neighbourPort; | 351 | enablesimpacket.SimulatorInfo.Port = neighbourPort; |
367 | OutPacket(enablesimpacket); | 352 | OutPacket(enablesimpacket); |
368 | } | 353 | } |
@@ -374,46 +359,48 @@ namespace OpenSim.Region.ClientStack | |||
374 | public AgentCircuitData RequestClientInfo() | 359 | public AgentCircuitData RequestClientInfo() |
375 | { | 360 | { |
376 | AgentCircuitData agentData = new AgentCircuitData(); | 361 | AgentCircuitData agentData = new AgentCircuitData(); |
377 | agentData.AgentID = this.AgentId; | 362 | agentData.AgentID = AgentId; |
378 | agentData.SessionID = this.m_sessionId; | 363 | agentData.SessionID = m_sessionId; |
379 | agentData.SecureSessionID = this.SecureSessionID; | 364 | agentData.SecureSessionID = SecureSessionID; |
380 | agentData.circuitcode = this.m_circuitCode; | 365 | agentData.circuitcode = m_circuitCode; |
381 | agentData.child = false; | 366 | agentData.child = false; |
382 | agentData.firstname = this.firstName; | 367 | agentData.firstname = firstName; |
383 | agentData.lastname = this.lastName; | 368 | agentData.lastname = lastName; |
384 | agentData.CapsPath = ""; | 369 | agentData.CapsPath = ""; |
385 | return agentData; | 370 | return agentData; |
386 | } | 371 | } |
387 | 372 | ||
388 | public void CrossRegion(ulong newRegionHandle, LLVector3 pos, LLVector3 lookAt, IPEndPoint externalIPEndPoint, string capsURL) | 373 | public void CrossRegion(ulong newRegionHandle, LLVector3 pos, LLVector3 lookAt, IPEndPoint externalIPEndPoint, |
374 | string capsURL) | ||
389 | { | 375 | { |
390 | LLVector3 look = new LLVector3(lookAt.X * 10, lookAt.Y * 10, lookAt.Z * 10); | 376 | LLVector3 look = new LLVector3(lookAt.X*10, lookAt.Y*10, lookAt.Z*10); |
391 | 377 | ||
392 | CrossedRegionPacket newSimPack = new CrossedRegionPacket(); | 378 | CrossedRegionPacket newSimPack = new CrossedRegionPacket(); |
393 | newSimPack.AgentData = new CrossedRegionPacket.AgentDataBlock(); | 379 | newSimPack.AgentData = new CrossedRegionPacket.AgentDataBlock(); |
394 | newSimPack.AgentData.AgentID = this.AgentId; | 380 | newSimPack.AgentData.AgentID = AgentId; |
395 | newSimPack.AgentData.SessionID = this.m_sessionId; | 381 | newSimPack.AgentData.SessionID = m_sessionId; |
396 | newSimPack.Info = new CrossedRegionPacket.InfoBlock(); | 382 | newSimPack.Info = new CrossedRegionPacket.InfoBlock(); |
397 | newSimPack.Info.Position = pos; | 383 | newSimPack.Info.Position = pos; |
398 | newSimPack.Info.LookAt = look; // new LLVector3(0.0f, 0.0f, 0.0f); // copied from Avatar.cs - SHOULD BE DYNAMIC!!!!!!!!!! | 384 | newSimPack.Info.LookAt = look; |
385 | // new LLVector3(0.0f, 0.0f, 0.0f); // copied from Avatar.cs - SHOULD BE DYNAMIC!!!!!!!!!! | ||
399 | newSimPack.RegionData = new CrossedRegionPacket.RegionDataBlock(); | 386 | newSimPack.RegionData = new CrossedRegionPacket.RegionDataBlock(); |
400 | newSimPack.RegionData.RegionHandle = newRegionHandle; | 387 | newSimPack.RegionData.RegionHandle = newRegionHandle; |
401 | byte[] byteIP = externalIPEndPoint.Address.GetAddressBytes(); | 388 | byte[] byteIP = externalIPEndPoint.Address.GetAddressBytes(); |
402 | newSimPack.RegionData.SimIP = (uint)byteIP[3] << 24; | 389 | newSimPack.RegionData.SimIP = (uint) byteIP[3] << 24; |
403 | newSimPack.RegionData.SimIP += (uint)byteIP[2] << 16; | 390 | newSimPack.RegionData.SimIP += (uint) byteIP[2] << 16; |
404 | newSimPack.RegionData.SimIP += (uint)byteIP[1] << 8; | 391 | newSimPack.RegionData.SimIP += (uint) byteIP[1] << 8; |
405 | newSimPack.RegionData.SimIP += (uint)byteIP[0]; | 392 | newSimPack.RegionData.SimIP += (uint) byteIP[0]; |
406 | newSimPack.RegionData.SimPort = (ushort)externalIPEndPoint.Port; | 393 | newSimPack.RegionData.SimPort = (ushort) externalIPEndPoint.Port; |
407 | //newSimPack.RegionData.SeedCapability = new byte[0]; | 394 | //newSimPack.RegionData.SeedCapability = new byte[0]; |
408 | newSimPack.RegionData.SeedCapability = Helpers.StringToField(capsURL); | 395 | newSimPack.RegionData.SeedCapability = Helpers.StringToField(capsURL); |
409 | 396 | ||
410 | this.OutPacket(newSimPack); | 397 | OutPacket(newSimPack); |
411 | } | 398 | } |
412 | 399 | ||
413 | public void SendMapBlock(List<MapBlockData> mapBlocks) | 400 | public void SendMapBlock(List<MapBlockData> mapBlocks) |
414 | { | 401 | { |
415 | MapBlockReplyPacket mapReply = new MapBlockReplyPacket(); | 402 | MapBlockReplyPacket mapReply = new MapBlockReplyPacket(); |
416 | mapReply.AgentData.AgentID = this.AgentId; | 403 | mapReply.AgentData.AgentID = AgentId; |
417 | mapReply.Data = new MapBlockReplyPacket.DataBlock[mapBlocks.Count]; | 404 | mapReply.Data = new MapBlockReplyPacket.DataBlock[mapBlocks.Count]; |
418 | mapReply.AgentData.Flags = 0; | 405 | mapReply.AgentData.Flags = 0; |
419 | 406 | ||
@@ -429,13 +416,13 @@ namespace OpenSim.Region.ClientStack | |||
429 | mapReply.Data[i].Access = mapBlocks[i].Access; | 416 | mapReply.Data[i].Access = mapBlocks[i].Access; |
430 | mapReply.Data[i].Agents = mapBlocks[i].Agents; | 417 | mapReply.Data[i].Agents = mapBlocks[i].Agents; |
431 | } | 418 | } |
432 | this.OutPacket(mapReply); | 419 | OutPacket(mapReply); |
433 | } | 420 | } |
434 | 421 | ||
435 | public void SendLocalTeleport(LLVector3 position, LLVector3 lookAt, uint flags) | 422 | public void SendLocalTeleport(LLVector3 position, LLVector3 lookAt, uint flags) |
436 | { | 423 | { |
437 | TeleportLocalPacket tpLocal = new TeleportLocalPacket(); | 424 | TeleportLocalPacket tpLocal = new TeleportLocalPacket(); |
438 | tpLocal.Info.AgentID = this.AgentId; | 425 | tpLocal.Info.AgentID = AgentId; |
439 | tpLocal.Info.TeleportFlags = flags; | 426 | tpLocal.Info.TeleportFlags = flags; |
440 | tpLocal.Info.LocationID = 2; | 427 | tpLocal.Info.LocationID = 2; |
441 | tpLocal.Info.LookAt = lookAt; | 428 | tpLocal.Info.LookAt = lookAt; |
@@ -443,10 +430,11 @@ namespace OpenSim.Region.ClientStack | |||
443 | OutPacket(tpLocal); | 430 | OutPacket(tpLocal); |
444 | } | 431 | } |
445 | 432 | ||
446 | public void SendRegionTeleport(ulong regionHandle, byte simAccess, IPEndPoint newRegionEndPoint, uint locationID, uint flags, string capsURL) | 433 | public void SendRegionTeleport(ulong regionHandle, byte simAccess, IPEndPoint newRegionEndPoint, uint locationID, |
434 | uint flags, string capsURL) | ||
447 | { | 435 | { |
448 | TeleportFinishPacket teleport = new TeleportFinishPacket(); | 436 | TeleportFinishPacket teleport = new TeleportFinishPacket(); |
449 | teleport.Info.AgentID = this.AgentId; | 437 | teleport.Info.AgentID = AgentId; |
450 | teleport.Info.RegionHandle = regionHandle; | 438 | teleport.Info.RegionHandle = regionHandle; |
451 | teleport.Info.SimAccess = simAccess; | 439 | teleport.Info.SimAccess = simAccess; |
452 | 440 | ||
@@ -455,13 +443,13 @@ namespace OpenSim.Region.ClientStack | |||
455 | 443 | ||
456 | IPAddress oIP = newRegionEndPoint.Address; | 444 | IPAddress oIP = newRegionEndPoint.Address; |
457 | byte[] byteIP = oIP.GetAddressBytes(); | 445 | byte[] byteIP = oIP.GetAddressBytes(); |
458 | uint ip = (uint)byteIP[3] << 24; | 446 | uint ip = (uint) byteIP[3] << 24; |
459 | ip += (uint)byteIP[2] << 16; | 447 | ip += (uint) byteIP[2] << 16; |
460 | ip += (uint)byteIP[1] << 8; | 448 | ip += (uint) byteIP[1] << 8; |
461 | ip += (uint)byteIP[0]; | 449 | ip += (uint) byteIP[0]; |
462 | 450 | ||
463 | teleport.Info.SimIP = ip; | 451 | teleport.Info.SimIP = ip; |
464 | teleport.Info.SimPort = (ushort)newRegionEndPoint.Port; | 452 | teleport.Info.SimPort = (ushort) newRegionEndPoint.Port; |
465 | teleport.Info.LocationID = 4; | 453 | teleport.Info.LocationID = 4; |
466 | teleport.Info.TeleportFlags = 1 << 4; | 454 | teleport.Info.TeleportFlags = 1 << 4; |
467 | OutPacket(teleport); | 455 | OutPacket(teleport); |
@@ -473,8 +461,8 @@ namespace OpenSim.Region.ClientStack | |||
473 | public void SendTeleportCancel() | 461 | public void SendTeleportCancel() |
474 | { | 462 | { |
475 | TeleportCancelPacket tpCancel = new TeleportCancelPacket(); | 463 | TeleportCancelPacket tpCancel = new TeleportCancelPacket(); |
476 | tpCancel.Info.SessionID = this.m_sessionId; | 464 | tpCancel.Info.SessionID = m_sessionId; |
477 | tpCancel.Info.AgentID = this.AgentId; | 465 | tpCancel.Info.AgentID = AgentId; |
478 | 466 | ||
479 | OutPacket(tpCancel); | 467 | OutPacket(tpCancel); |
480 | } | 468 | } |
@@ -492,7 +480,7 @@ namespace OpenSim.Region.ClientStack | |||
492 | public void SendMoneyBalance(LLUUID transaction, bool success, byte[] description, int balance) | 480 | public void SendMoneyBalance(LLUUID transaction, bool success, byte[] description, int balance) |
493 | { | 481 | { |
494 | MoneyBalanceReplyPacket money = new MoneyBalanceReplyPacket(); | 482 | MoneyBalanceReplyPacket money = new MoneyBalanceReplyPacket(); |
495 | money.MoneyData.AgentID = this.AgentId; | 483 | money.MoneyData.AgentID = AgentId; |
496 | money.MoneyData.TransactionID = transaction; | 484 | money.MoneyData.TransactionID = transaction; |
497 | money.MoneyData.TransactionSuccess = success; | 485 | money.MoneyData.TransactionSuccess = success; |
498 | money.MoneyData.Description = description; | 486 | money.MoneyData.Description = description; |
@@ -506,7 +494,6 @@ namespace OpenSim.Region.ClientStack | |||
506 | pc.PingID.PingID = seq; | 494 | pc.PingID.PingID = seq; |
507 | pc.Header.Reliable = false; | 495 | pc.Header.Reliable = false; |
508 | OutPacket(pc); | 496 | OutPacket(pc); |
509 | |||
510 | } | 497 | } |
511 | 498 | ||
512 | public void SendKillObject(ulong regionHandle, uint localID) | 499 | public void SendKillObject(ulong regionHandle, uint localID) |
@@ -522,8 +509,8 @@ namespace OpenSim.Region.ClientStack | |||
522 | { | 509 | { |
523 | Encoding enc = Encoding.ASCII; | 510 | Encoding enc = Encoding.ASCII; |
524 | uint FULL_MASK_PERMISSIONS = 2147483647; | 511 | uint FULL_MASK_PERMISSIONS = 2147483647; |
525 | InventoryDescendentsPacket descend = this.CreateInventoryDescendentsPacket(ownerID, folderID); | 512 | InventoryDescendentsPacket descend = CreateInventoryDescendentsPacket(ownerID, folderID); |
526 | 513 | ||
527 | int count = 0; | 514 | int count = 0; |
528 | if (items.Count < 40) | 515 | if (items.Count < 40) |
529 | { | 516 | { |
@@ -550,25 +537,30 @@ namespace OpenSim.Region.ClientStack | |||
550 | descend.ItemData[i].FolderID = item.parentFolderID; | 537 | descend.ItemData[i].FolderID = item.parentFolderID; |
551 | descend.ItemData[i].GroupID = new LLUUID("00000000-0000-0000-0000-000000000000"); | 538 | descend.ItemData[i].GroupID = new LLUUID("00000000-0000-0000-0000-000000000000"); |
552 | descend.ItemData[i].GroupMask = 0; | 539 | descend.ItemData[i].GroupMask = 0; |
553 | descend.ItemData[i].InvType = (sbyte)item.invType; | 540 | descend.ItemData[i].InvType = (sbyte) item.invType; |
554 | descend.ItemData[i].Name = enc.GetBytes(item.inventoryName + "\0"); | 541 | descend.ItemData[i].Name = enc.GetBytes(item.inventoryName + "\0"); |
555 | descend.ItemData[i].NextOwnerMask = item.inventoryNextPermissions; | 542 | descend.ItemData[i].NextOwnerMask = item.inventoryNextPermissions; |
556 | descend.ItemData[i].OwnerID = item.avatarID; | 543 | descend.ItemData[i].OwnerID = item.avatarID; |
557 | descend.ItemData[i].OwnerMask = item.inventoryCurrentPermissions; | 544 | descend.ItemData[i].OwnerMask = item.inventoryCurrentPermissions; |
558 | descend.ItemData[i].SalePrice = 0; | 545 | descend.ItemData[i].SalePrice = 0; |
559 | descend.ItemData[i].SaleType = 0; | 546 | descend.ItemData[i].SaleType = 0; |
560 | descend.ItemData[i].Type = (sbyte)item.assetType; | 547 | descend.ItemData[i].Type = (sbyte) item.assetType; |
561 | descend.ItemData[i].CRC = Helpers.InventoryCRC(1000, 0, descend.ItemData[i].InvType, descend.ItemData[i].Type, descend.ItemData[i].AssetID, descend.ItemData[i].GroupID, 100, descend.ItemData[i].OwnerID, descend.ItemData[i].CreatorID, descend.ItemData[i].ItemID, descend.ItemData[i].FolderID, FULL_MASK_PERMISSIONS, 1, FULL_MASK_PERMISSIONS, FULL_MASK_PERMISSIONS, FULL_MASK_PERMISSIONS); | 548 | descend.ItemData[i].CRC = |
549 | Helpers.InventoryCRC(1000, 0, descend.ItemData[i].InvType, descend.ItemData[i].Type, | ||
550 | descend.ItemData[i].AssetID, descend.ItemData[i].GroupID, 100, | ||
551 | descend.ItemData[i].OwnerID, descend.ItemData[i].CreatorID, | ||
552 | descend.ItemData[i].ItemID, descend.ItemData[i].FolderID, FULL_MASK_PERMISSIONS, | ||
553 | 1, FULL_MASK_PERMISSIONS, FULL_MASK_PERMISSIONS, FULL_MASK_PERMISSIONS); | ||
562 | 554 | ||
563 | i++; | 555 | i++; |
564 | count++; | 556 | count++; |
565 | if (i == 40) | 557 | if (i == 40) |
566 | { | 558 | { |
567 | this.OutPacket(descend); | 559 | OutPacket(descend); |
568 | 560 | ||
569 | if ((items.Count - count) > 0) | 561 | if ((items.Count - count) > 0) |
570 | { | 562 | { |
571 | descend = this.CreateInventoryDescendentsPacket(ownerID, folderID); | 563 | descend = CreateInventoryDescendentsPacket(ownerID, folderID); |
572 | if ((items.Count - count) < 40) | 564 | if ((items.Count - count) < 40) |
573 | { | 565 | { |
574 | descend.ItemData = new InventoryDescendentsPacket.ItemDataBlock[items.Count - count]; | 566 | descend.ItemData = new InventoryDescendentsPacket.ItemDataBlock[items.Count - count]; |
@@ -586,15 +578,14 @@ namespace OpenSim.Region.ClientStack | |||
586 | 578 | ||
587 | if (i < 40) | 579 | if (i < 40) |
588 | { | 580 | { |
589 | this.OutPacket(descend); | 581 | OutPacket(descend); |
590 | } | 582 | } |
591 | |||
592 | } | 583 | } |
593 | 584 | ||
594 | private InventoryDescendentsPacket CreateInventoryDescendentsPacket(LLUUID ownerID, LLUUID folderID) | 585 | private InventoryDescendentsPacket CreateInventoryDescendentsPacket(LLUUID ownerID, LLUUID folderID) |
595 | { | 586 | { |
596 | InventoryDescendentsPacket descend = new InventoryDescendentsPacket(); | 587 | InventoryDescendentsPacket descend = new InventoryDescendentsPacket(); |
597 | descend.AgentData.AgentID = this.AgentId; | 588 | descend.AgentData.AgentID = AgentId; |
598 | descend.AgentData.OwnerID = ownerID; | 589 | descend.AgentData.OwnerID = ownerID; |
599 | descend.AgentData.FolderID = folderID; | 590 | descend.AgentData.FolderID = folderID; |
600 | descend.AgentData.Version = 0; | 591 | descend.AgentData.Version = 0; |
@@ -607,31 +598,39 @@ namespace OpenSim.Region.ClientStack | |||
607 | Encoding enc = Encoding.ASCII; | 598 | Encoding enc = Encoding.ASCII; |
608 | uint FULL_MASK_PERMISSIONS = 2147483647; | 599 | uint FULL_MASK_PERMISSIONS = 2147483647; |
609 | FetchInventoryReplyPacket inventoryReply = new FetchInventoryReplyPacket(); | 600 | FetchInventoryReplyPacket inventoryReply = new FetchInventoryReplyPacket(); |
610 | inventoryReply.AgentData.AgentID = this.AgentId; | 601 | inventoryReply.AgentData.AgentID = AgentId; |
611 | inventoryReply.InventoryData = new FetchInventoryReplyPacket.InventoryDataBlock[1]; | 602 | inventoryReply.InventoryData = new FetchInventoryReplyPacket.InventoryDataBlock[1]; |
612 | inventoryReply.InventoryData[0] = new FetchInventoryReplyPacket.InventoryDataBlock(); | 603 | inventoryReply.InventoryData[0] = new FetchInventoryReplyPacket.InventoryDataBlock(); |
613 | inventoryReply.InventoryData[0].ItemID = item.inventoryID; | 604 | inventoryReply.InventoryData[0].ItemID = item.inventoryID; |
614 | inventoryReply.InventoryData[0].AssetID = item.assetID; | 605 | inventoryReply.InventoryData[0].AssetID = item.assetID; |
615 | inventoryReply.InventoryData[0].CreatorID = item.creatorsID; | 606 | inventoryReply.InventoryData[0].CreatorID = item.creatorsID; |
616 | inventoryReply.InventoryData[0].BaseMask = item.inventoryBasePermissions; | 607 | inventoryReply.InventoryData[0].BaseMask = item.inventoryBasePermissions; |
617 | inventoryReply.InventoryData[0].CreationDate = (int)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds; | 608 | inventoryReply.InventoryData[0].CreationDate = |
609 | (int) (DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds; | ||
618 | inventoryReply.InventoryData[0].Description = enc.GetBytes(item.inventoryDescription + "\0"); | 610 | inventoryReply.InventoryData[0].Description = enc.GetBytes(item.inventoryDescription + "\0"); |
619 | inventoryReply.InventoryData[0].EveryoneMask = item.inventoryEveryOnePermissions; | 611 | inventoryReply.InventoryData[0].EveryoneMask = item.inventoryEveryOnePermissions; |
620 | inventoryReply.InventoryData[0].Flags = 0; | 612 | inventoryReply.InventoryData[0].Flags = 0; |
621 | inventoryReply.InventoryData[0].FolderID = item.parentFolderID; | 613 | inventoryReply.InventoryData[0].FolderID = item.parentFolderID; |
622 | inventoryReply.InventoryData[0].GroupID = new LLUUID("00000000-0000-0000-0000-000000000000"); | 614 | inventoryReply.InventoryData[0].GroupID = new LLUUID("00000000-0000-0000-0000-000000000000"); |
623 | inventoryReply.InventoryData[0].GroupMask = 0; | 615 | inventoryReply.InventoryData[0].GroupMask = 0; |
624 | inventoryReply.InventoryData[0].InvType = (sbyte)item.invType; | 616 | inventoryReply.InventoryData[0].InvType = (sbyte) item.invType; |
625 | inventoryReply.InventoryData[0].Name = enc.GetBytes(item.inventoryName + "\0"); | 617 | inventoryReply.InventoryData[0].Name = enc.GetBytes(item.inventoryName + "\0"); |
626 | inventoryReply.InventoryData[0].NextOwnerMask = item.inventoryNextPermissions; | 618 | inventoryReply.InventoryData[0].NextOwnerMask = item.inventoryNextPermissions; |
627 | inventoryReply.InventoryData[0].OwnerID = item.avatarID; | 619 | inventoryReply.InventoryData[0].OwnerID = item.avatarID; |
628 | inventoryReply.InventoryData[0].OwnerMask = item.inventoryCurrentPermissions; | 620 | inventoryReply.InventoryData[0].OwnerMask = item.inventoryCurrentPermissions; |
629 | inventoryReply.InventoryData[0].SalePrice = 0; | 621 | inventoryReply.InventoryData[0].SalePrice = 0; |
630 | inventoryReply.InventoryData[0].SaleType = 0; | 622 | inventoryReply.InventoryData[0].SaleType = 0; |
631 | inventoryReply.InventoryData[0].Type = (sbyte)item.assetType; | 623 | inventoryReply.InventoryData[0].Type = (sbyte) item.assetType; |
632 | inventoryReply.InventoryData[0].CRC = Helpers.InventoryCRC(1000, 0, inventoryReply.InventoryData[0].InvType, inventoryReply.InventoryData[0].Type, inventoryReply.InventoryData[0].AssetID, inventoryReply.InventoryData[0].GroupID, 100, inventoryReply.InventoryData[0].OwnerID, inventoryReply.InventoryData[0].CreatorID, inventoryReply.InventoryData[0].ItemID, inventoryReply.InventoryData[0].FolderID, FULL_MASK_PERMISSIONS, 1, FULL_MASK_PERMISSIONS, FULL_MASK_PERMISSIONS, FULL_MASK_PERMISSIONS); | 624 | inventoryReply.InventoryData[0].CRC = |
633 | 625 | Helpers.InventoryCRC(1000, 0, inventoryReply.InventoryData[0].InvType, | |
634 | this.OutPacket(inventoryReply); | 626 | inventoryReply.InventoryData[0].Type, inventoryReply.InventoryData[0].AssetID, |
627 | inventoryReply.InventoryData[0].GroupID, 100, | ||
628 | inventoryReply.InventoryData[0].OwnerID, inventoryReply.InventoryData[0].CreatorID, | ||
629 | inventoryReply.InventoryData[0].ItemID, inventoryReply.InventoryData[0].FolderID, | ||
630 | FULL_MASK_PERMISSIONS, 1, FULL_MASK_PERMISSIONS, FULL_MASK_PERMISSIONS, | ||
631 | FULL_MASK_PERMISSIONS); | ||
632 | |||
633 | OutPacket(inventoryReply); | ||
635 | } | 634 | } |
636 | 635 | ||
637 | public void SendInventoryItemUpdate(InventoryItemBase Item) | 636 | public void SendInventoryItemUpdate(InventoryItemBase Item) |
@@ -639,7 +638,7 @@ namespace OpenSim.Region.ClientStack | |||
639 | Encoding enc = Encoding.ASCII; | 638 | Encoding enc = Encoding.ASCII; |
640 | uint FULL_MASK_PERMISSIONS = 2147483647; | 639 | uint FULL_MASK_PERMISSIONS = 2147483647; |
641 | UpdateCreateInventoryItemPacket InventoryReply = new UpdateCreateInventoryItemPacket(); | 640 | UpdateCreateInventoryItemPacket InventoryReply = new UpdateCreateInventoryItemPacket(); |
642 | InventoryReply.AgentData.AgentID = this.AgentId; | 641 | InventoryReply.AgentData.AgentID = AgentId; |
643 | InventoryReply.AgentData.SimApproved = true; | 642 | InventoryReply.AgentData.SimApproved = true; |
644 | InventoryReply.InventoryData = new UpdateCreateInventoryItemPacket.InventoryDataBlock[1]; | 643 | InventoryReply.InventoryData = new UpdateCreateInventoryItemPacket.InventoryDataBlock[1]; |
645 | InventoryReply.InventoryData[0] = new UpdateCreateInventoryItemPacket.InventoryDataBlock(); | 644 | InventoryReply.InventoryData[0] = new UpdateCreateInventoryItemPacket.InventoryDataBlock(); |
@@ -654,15 +653,22 @@ namespace OpenSim.Region.ClientStack | |||
654 | InventoryReply.InventoryData[0].FolderID = Item.parentFolderID; | 653 | InventoryReply.InventoryData[0].FolderID = Item.parentFolderID; |
655 | InventoryReply.InventoryData[0].GroupID = new LLUUID("00000000-0000-0000-0000-000000000000"); | 654 | InventoryReply.InventoryData[0].GroupID = new LLUUID("00000000-0000-0000-0000-000000000000"); |
656 | InventoryReply.InventoryData[0].GroupMask = 0; | 655 | InventoryReply.InventoryData[0].GroupMask = 0; |
657 | InventoryReply.InventoryData[0].InvType = (sbyte)Item.invType; | 656 | InventoryReply.InventoryData[0].InvType = (sbyte) Item.invType; |
658 | InventoryReply.InventoryData[0].Name = enc.GetBytes(Item.inventoryName + "\0"); | 657 | InventoryReply.InventoryData[0].Name = enc.GetBytes(Item.inventoryName + "\0"); |
659 | InventoryReply.InventoryData[0].NextOwnerMask = Item.inventoryNextPermissions; | 658 | InventoryReply.InventoryData[0].NextOwnerMask = Item.inventoryNextPermissions; |
660 | InventoryReply.InventoryData[0].OwnerID = Item.avatarID; | 659 | InventoryReply.InventoryData[0].OwnerID = Item.avatarID; |
661 | InventoryReply.InventoryData[0].OwnerMask = Item.inventoryCurrentPermissions; | 660 | InventoryReply.InventoryData[0].OwnerMask = Item.inventoryCurrentPermissions; |
662 | InventoryReply.InventoryData[0].SalePrice = 100; | 661 | InventoryReply.InventoryData[0].SalePrice = 100; |
663 | InventoryReply.InventoryData[0].SaleType = 0; | 662 | InventoryReply.InventoryData[0].SaleType = 0; |
664 | InventoryReply.InventoryData[0].Type = (sbyte)Item.assetType; | 663 | InventoryReply.InventoryData[0].Type = (sbyte) Item.assetType; |
665 | InventoryReply.InventoryData[0].CRC = Helpers.InventoryCRC(1000, 0, InventoryReply.InventoryData[0].InvType, InventoryReply.InventoryData[0].Type, InventoryReply.InventoryData[0].AssetID, InventoryReply.InventoryData[0].GroupID, 100, InventoryReply.InventoryData[0].OwnerID, InventoryReply.InventoryData[0].CreatorID, InventoryReply.InventoryData[0].ItemID, InventoryReply.InventoryData[0].FolderID, FULL_MASK_PERMISSIONS, 1, FULL_MASK_PERMISSIONS, FULL_MASK_PERMISSIONS, FULL_MASK_PERMISSIONS); | 664 | InventoryReply.InventoryData[0].CRC = |
665 | Helpers.InventoryCRC(1000, 0, InventoryReply.InventoryData[0].InvType, | ||
666 | InventoryReply.InventoryData[0].Type, InventoryReply.InventoryData[0].AssetID, | ||
667 | InventoryReply.InventoryData[0].GroupID, 100, | ||
668 | InventoryReply.InventoryData[0].OwnerID, InventoryReply.InventoryData[0].CreatorID, | ||
669 | InventoryReply.InventoryData[0].ItemID, InventoryReply.InventoryData[0].FolderID, | ||
670 | FULL_MASK_PERMISSIONS, 1, FULL_MASK_PERMISSIONS, FULL_MASK_PERMISSIONS, | ||
671 | FULL_MASK_PERMISSIONS); | ||
666 | 672 | ||
667 | OutPacket(InventoryReply); | 673 | OutPacket(InventoryReply); |
668 | } | 674 | } |
@@ -670,8 +676,8 @@ namespace OpenSim.Region.ClientStack | |||
670 | public void SendRemoveInventoryItem(LLUUID itemID) | 676 | public void SendRemoveInventoryItem(LLUUID itemID) |
671 | { | 677 | { |
672 | RemoveInventoryItemPacket remove = new RemoveInventoryItemPacket(); | 678 | RemoveInventoryItemPacket remove = new RemoveInventoryItemPacket(); |
673 | remove.AgentData.AgentID = this.AgentId; | 679 | remove.AgentData.AgentID = AgentId; |
674 | remove.AgentData.SessionID = this.m_sessionId; | 680 | remove.AgentData.SessionID = m_sessionId; |
675 | remove.InventoryData = new RemoveInventoryItemPacket.InventoryDataBlock[1]; | 681 | remove.InventoryData = new RemoveInventoryItemPacket.InventoryDataBlock[1]; |
676 | remove.InventoryData[0] = new RemoveInventoryItemPacket.InventoryDataBlock(); | 682 | remove.InventoryData[0] = new RemoveInventoryItemPacket.InventoryDataBlock(); |
677 | remove.InventoryData[0].ItemID = itemID; | 683 | remove.InventoryData[0].ItemID = itemID; |
@@ -716,13 +722,14 @@ namespace OpenSim.Region.ClientStack | |||
716 | public void SendAgentAlertMessage(string message, bool modal) | 722 | public void SendAgentAlertMessage(string message, bool modal) |
717 | { | 723 | { |
718 | AgentAlertMessagePacket alertPack = new AgentAlertMessagePacket(); | 724 | AgentAlertMessagePacket alertPack = new AgentAlertMessagePacket(); |
719 | alertPack.AgentData.AgentID = this.AgentId; | 725 | alertPack.AgentData.AgentID = AgentId; |
720 | alertPack.AlertData.Message = Helpers.StringToField(message); | 726 | alertPack.AlertData.Message = Helpers.StringToField(message); |
721 | alertPack.AlertData.Modal = modal; | 727 | alertPack.AlertData.Modal = modal; |
722 | OutPacket(alertPack); | 728 | OutPacket(alertPack); |
723 | } | 729 | } |
724 | 730 | ||
725 | public void SendLoadURL(string objectname, LLUUID objectID, LLUUID ownerID, bool groupOwned, string message, string url) | 731 | public void SendLoadURL(string objectname, LLUUID objectID, LLUUID ownerID, bool groupOwned, string message, |
732 | string url) | ||
726 | { | 733 | { |
727 | LoadURLPacket loadURL = new LoadURLPacket(); | 734 | LoadURLPacket loadURL = new LoadURLPacket(); |
728 | loadURL.Data.ObjectName = Helpers.StringToField(objectname); | 735 | loadURL.Data.ObjectName = Helpers.StringToField(objectname); |
@@ -761,14 +768,13 @@ namespace OpenSim.Region.ClientStack | |||
761 | 768 | ||
762 | public void SendViewerTime(int phase) | 769 | public void SendViewerTime(int phase) |
763 | { | 770 | { |
764 | |||
765 | SimulatorViewerTimeMessagePacket viewertime = new SimulatorViewerTimeMessagePacket(); | 771 | SimulatorViewerTimeMessagePacket viewertime = new SimulatorViewerTimeMessagePacket(); |
766 | //viewertime.TimeInfo.SecPerDay = 86400; | 772 | //viewertime.TimeInfo.SecPerDay = 86400; |
767 | // viewertime.TimeInfo.SecPerYear = 31536000; | 773 | // viewertime.TimeInfo.SecPerYear = 31536000; |
768 | viewertime.TimeInfo.SecPerDay = 1000; | 774 | viewertime.TimeInfo.SecPerDay = 1000; |
769 | viewertime.TimeInfo.SecPerYear = 365000; | 775 | viewertime.TimeInfo.SecPerYear = 365000; |
770 | viewertime.TimeInfo.SunPhase = 1; | 776 | viewertime.TimeInfo.SunPhase = 1; |
771 | int sunPhase = (phase + 2) / 2; | 777 | int sunPhase = (phase + 2)/2; |
772 | if ((sunPhase < 6) || (sunPhase > 36)) | 778 | if ((sunPhase < 6) || (sunPhase > 36)) |
773 | { | 779 | { |
774 | viewertime.TimeInfo.SunDirection = new LLVector3(0f, 0.8f, -0.8f); | 780 | viewertime.TimeInfo.SunDirection = new LLVector3(0f, 0.8f, -0.8f); |
@@ -781,27 +787,41 @@ namespace OpenSim.Region.ClientStack | |||
781 | sunPhase = 12; | 787 | sunPhase = 12; |
782 | } | 788 | } |
783 | sunPhase = sunPhase - 12; | 789 | sunPhase = sunPhase - 12; |
784 | float yValue = 0.1f * (sunPhase); | 790 | float yValue = 0.1f*(sunPhase); |
785 | if (yValue > 1.2f) { yValue = yValue - 1.2f; } | 791 | if (yValue > 1.2f) |
786 | if (yValue > 1 ) { yValue = 1; } | 792 | { |
787 | if (yValue < 0) { yValue = 0; } | 793 | yValue = yValue - 1.2f; |
794 | } | ||
795 | if (yValue > 1) | ||
796 | { | ||
797 | yValue = 1; | ||
798 | } | ||
799 | if (yValue < 0) | ||
800 | { | ||
801 | yValue = 0; | ||
802 | } | ||
788 | if (sunPhase < 14) | 803 | if (sunPhase < 14) |
789 | { | 804 | { |
790 | yValue = 1 - yValue; | 805 | yValue = 1 - yValue; |
791 | } | 806 | } |
792 | if (sunPhase < 12) { yValue *= -1; } | 807 | if (sunPhase < 12) |
808 | { | ||
809 | yValue *= -1; | ||
810 | } | ||
793 | viewertime.TimeInfo.SunDirection = new LLVector3(0f, yValue, 0.3f); | 811 | viewertime.TimeInfo.SunDirection = new LLVector3(0f, yValue, 0.3f); |
794 | //Console.WriteLine("sending sun update " + yValue); | 812 | //Console.WriteLine("sending sun update " + yValue); |
795 | } | 813 | } |
796 | viewertime.TimeInfo.SunAngVelocity = new LLVector3(0, 0.0f, 10.0f); | 814 | viewertime.TimeInfo.SunAngVelocity = new LLVector3(0, 0.0f, 10.0f); |
797 | viewertime.TimeInfo.UsecSinceStart = (ulong)Util.UnixTimeSinceEpoch(); | 815 | viewertime.TimeInfo.UsecSinceStart = (ulong) Util.UnixTimeSinceEpoch(); |
798 | OutPacket(viewertime); | 816 | OutPacket(viewertime); |
799 | } | 817 | } |
800 | 818 | ||
801 | public void SendAvatarProperties(LLUUID avatarID, string aboutText, string bornOn, string charterMember, string flAbout, uint flags, LLUUID flImageID, LLUUID imageID, string profileURL, LLUUID partnerID) | 819 | public void SendAvatarProperties(LLUUID avatarID, string aboutText, string bornOn, string charterMember, |
820 | string flAbout, uint flags, LLUUID flImageID, LLUUID imageID, string profileURL, | ||
821 | LLUUID partnerID) | ||
802 | { | 822 | { |
803 | AvatarPropertiesReplyPacket avatarReply = new AvatarPropertiesReplyPacket(); | 823 | AvatarPropertiesReplyPacket avatarReply = new AvatarPropertiesReplyPacket(); |
804 | avatarReply.AgentData.AgentID = this.AgentId; | 824 | avatarReply.AgentData.AgentID = AgentId; |
805 | avatarReply.AgentData.AvatarID = avatarID; | 825 | avatarReply.AgentData.AvatarID = avatarID; |
806 | avatarReply.PropertiesData.AboutText = Helpers.StringToField(aboutText); | 826 | avatarReply.PropertiesData.AboutText = Helpers.StringToField(aboutText); |
807 | avatarReply.PropertiesData.BornOn = Helpers.StringToField(bornOn); | 827 | avatarReply.PropertiesData.BornOn = Helpers.StringToField(bornOn); |
@@ -827,6 +847,7 @@ namespace OpenSim.Region.ClientStack | |||
827 | 847 | ||
828 | OutPacket(avatarSitResponse); | 848 | OutPacket(avatarSitResponse); |
829 | } | 849 | } |
850 | |||
830 | #endregion | 851 | #endregion |
831 | 852 | ||
832 | #region Appearance/ Wearables Methods | 853 | #region Appearance/ Wearables Methods |
@@ -838,22 +859,22 @@ namespace OpenSim.Region.ClientStack | |||
838 | public void SendWearables(AvatarWearable[] wearables) | 859 | public void SendWearables(AvatarWearable[] wearables) |
839 | { | 860 | { |
840 | AgentWearablesUpdatePacket aw = new AgentWearablesUpdatePacket(); | 861 | AgentWearablesUpdatePacket aw = new AgentWearablesUpdatePacket(); |
841 | aw.AgentData.AgentID = this.AgentId; | 862 | aw.AgentData.AgentID = AgentId; |
842 | aw.AgentData.SerialNum = 0; | 863 | aw.AgentData.SerialNum = 0; |
843 | aw.AgentData.SessionID = this.m_sessionId; | 864 | aw.AgentData.SessionID = m_sessionId; |
844 | 865 | ||
845 | aw.WearableData = new AgentWearablesUpdatePacket.WearableDataBlock[13]; | 866 | aw.WearableData = new AgentWearablesUpdatePacket.WearableDataBlock[13]; |
846 | AgentWearablesUpdatePacket.WearableDataBlock awb; | 867 | AgentWearablesUpdatePacket.WearableDataBlock awb; |
847 | for (int i = 0; i < wearables.Length; i++) | 868 | for (int i = 0; i < wearables.Length; i++) |
848 | { | 869 | { |
849 | awb = new AgentWearablesUpdatePacket.WearableDataBlock(); | 870 | awb = new AgentWearablesUpdatePacket.WearableDataBlock(); |
850 | awb.WearableType = (byte)i; | 871 | awb.WearableType = (byte) i; |
851 | awb.AssetID = wearables[i].AssetID; | 872 | awb.AssetID = wearables[i].AssetID; |
852 | awb.ItemID = wearables[i].ItemID; | 873 | awb.ItemID = wearables[i].ItemID; |
853 | aw.WearableData[i] = awb; | 874 | aw.WearableData[i] = awb; |
854 | } | 875 | } |
855 | 876 | ||
856 | this.OutPacket(aw); | 877 | OutPacket(aw); |
857 | } | 878 | } |
858 | 879 | ||
859 | /// <summary> | 880 | /// <summary> |
@@ -893,7 +914,7 @@ namespace OpenSim.Region.ClientStack | |||
893 | ani.AnimationList[0] = new AvatarAnimationPacket.AnimationListBlock(); | 914 | ani.AnimationList[0] = new AvatarAnimationPacket.AnimationListBlock(); |
894 | ani.AnimationList[0].AnimID = animID; | 915 | ani.AnimationList[0].AnimID = animID; |
895 | ani.AnimationList[0].AnimSequenceID = seq; | 916 | ani.AnimationList[0].AnimSequenceID = seq; |
896 | this.OutPacket(ani); | 917 | OutPacket(ani); |
897 | } | 918 | } |
898 | 919 | ||
899 | #endregion | 920 | #endregion |
@@ -909,25 +930,26 @@ namespace OpenSim.Region.ClientStack | |||
909 | /// <param name="avatarID"></param> | 930 | /// <param name="avatarID"></param> |
910 | /// <param name="avatarLocalID"></param> | 931 | /// <param name="avatarLocalID"></param> |
911 | /// <param name="Pos"></param> | 932 | /// <param name="Pos"></param> |
912 | public void SendAvatarData(ulong regionHandle, string firstName, string lastName, LLUUID avatarID, uint avatarLocalID, LLVector3 Pos, byte[] textureEntry, uint parentID) | 933 | public void SendAvatarData(ulong regionHandle, string firstName, string lastName, LLUUID avatarID, |
934 | uint avatarLocalID, LLVector3 Pos, byte[] textureEntry, uint parentID) | ||
913 | { | 935 | { |
914 | ObjectUpdatePacket objupdate = new ObjectUpdatePacket(); | 936 | ObjectUpdatePacket objupdate = new ObjectUpdatePacket(); |
915 | objupdate.RegionData.RegionHandle = regionHandle; | 937 | objupdate.RegionData.RegionHandle = regionHandle; |
916 | objupdate.RegionData.TimeDilation = 64096; | 938 | objupdate.RegionData.TimeDilation = 64096; |
917 | objupdate.ObjectData = new ObjectUpdatePacket.ObjectDataBlock[1]; | 939 | objupdate.ObjectData = new ObjectUpdatePacket.ObjectDataBlock[1]; |
918 | objupdate.ObjectData[0] = this.CreateDefaultAvatarPacket(textureEntry); | 940 | objupdate.ObjectData[0] = CreateDefaultAvatarPacket(textureEntry); |
919 | 941 | ||
920 | //give this avatar object a local id and assign the user a name | 942 | //give this avatar object a local id and assign the user a name |
921 | objupdate.ObjectData[0].ID = avatarLocalID; | 943 | objupdate.ObjectData[0].ID = avatarLocalID; |
922 | objupdate.ObjectData[0].FullID = avatarID; | 944 | objupdate.ObjectData[0].FullID = avatarID; |
923 | objupdate.ObjectData[0].ParentID = parentID; | 945 | objupdate.ObjectData[0].ParentID = parentID; |
924 | objupdate.ObjectData[0].NameValue = Helpers.StringToField("FirstName STRING RW SV " + firstName + "\nLastName STRING RW SV " + lastName); | 946 | objupdate.ObjectData[0].NameValue = |
925 | LLVector3 pos2 = new LLVector3((float)Pos.X, (float)Pos.Y, (float)Pos.Z); | 947 | Helpers.StringToField("FirstName STRING RW SV " + firstName + "\nLastName STRING RW SV " + lastName); |
948 | LLVector3 pos2 = new LLVector3((float) Pos.X, (float) Pos.Y, (float) Pos.Z); | ||
926 | byte[] pb = pos2.GetBytes(); | 949 | byte[] pb = pos2.GetBytes(); |
927 | Array.Copy(pb, 0, objupdate.ObjectData[0].ObjectData, 16, pb.Length); | 950 | Array.Copy(pb, 0, objupdate.ObjectData[0].ObjectData, 16, pb.Length); |
928 | 951 | ||
929 | OutPacket(objupdate); | 952 | OutPacket(objupdate); |
930 | |||
931 | } | 953 | } |
932 | 954 | ||
933 | /// <summary> | 955 | /// <summary> |
@@ -938,38 +960,41 @@ namespace OpenSim.Region.ClientStack | |||
938 | /// <param name="localID"></param> | 960 | /// <param name="localID"></param> |
939 | /// <param name="position"></param> | 961 | /// <param name="position"></param> |
940 | /// <param name="velocity"></param> | 962 | /// <param name="velocity"></param> |
941 | public void SendAvatarTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID, LLVector3 position, LLVector3 velocity, LLQuaternion rotation) | 963 | public void SendAvatarTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID, LLVector3 position, |
964 | LLVector3 velocity, LLQuaternion rotation) | ||
942 | { | 965 | { |
943 | ImprovedTerseObjectUpdatePacket.ObjectDataBlock terseBlock = this.CreateAvatarImprovedBlock(localID, position, velocity, rotation); | 966 | ImprovedTerseObjectUpdatePacket.ObjectDataBlock terseBlock = |
967 | CreateAvatarImprovedBlock(localID, position, velocity, rotation); | ||
944 | ImprovedTerseObjectUpdatePacket terse = new ImprovedTerseObjectUpdatePacket(); | 968 | ImprovedTerseObjectUpdatePacket terse = new ImprovedTerseObjectUpdatePacket(); |
945 | terse.RegionData.RegionHandle = regionHandle; | 969 | terse.RegionData.RegionHandle = regionHandle; |
946 | terse.RegionData.TimeDilation = timeDilation; | 970 | terse.RegionData.TimeDilation = timeDilation; |
947 | terse.ObjectData = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock[1]; | 971 | terse.ObjectData = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock[1]; |
948 | terse.ObjectData[0] = terseBlock; | 972 | terse.ObjectData[0] = terseBlock; |
949 | 973 | ||
950 | this.OutPacket(terse); | 974 | OutPacket(terse); |
951 | } | 975 | } |
952 | 976 | ||
953 | public void SendCoarseLocationUpdate(List<LLVector3> CoarseLocations) | 977 | public void SendCoarseLocationUpdate(List<LLVector3> CoarseLocations) |
954 | { | 978 | { |
955 | CoarseLocationUpdatePacket loc = new CoarseLocationUpdatePacket(); | 979 | CoarseLocationUpdatePacket loc = new CoarseLocationUpdatePacket(); |
956 | int total = CoarseLocations.Count; | 980 | int total = CoarseLocations.Count; |
957 | CoarseLocationUpdatePacket.IndexBlock ib = | 981 | CoarseLocationUpdatePacket.IndexBlock ib = |
958 | new CoarseLocationUpdatePacket.IndexBlock(); | 982 | new CoarseLocationUpdatePacket.IndexBlock(); |
959 | loc.Location = new CoarseLocationUpdatePacket.LocationBlock[total]; | 983 | loc.Location = new CoarseLocationUpdatePacket.LocationBlock[total]; |
960 | for(int i=0; i<total; i++) { | 984 | for (int i = 0; i < total; i++) |
961 | CoarseLocationUpdatePacket.LocationBlock lb = | 985 | { |
962 | new CoarseLocationUpdatePacket.LocationBlock(); | 986 | CoarseLocationUpdatePacket.LocationBlock lb = |
963 | lb.X = (byte)CoarseLocations[i].X; | 987 | new CoarseLocationUpdatePacket.LocationBlock(); |
964 | lb.Y = (byte)CoarseLocations[i].Y; | 988 | lb.X = (byte) CoarseLocations[i].X; |
965 | lb.Z = (byte)(CoarseLocations[i].Z/4); | 989 | lb.Y = (byte) CoarseLocations[i].Y; |
966 | loc.Location[i] = lb; | 990 | lb.Z = (byte) (CoarseLocations[i].Z/4); |
967 | } | 991 | loc.Location[i] = lb; |
968 | ib.You = -1; | 992 | } |
969 | ib.Prey = -1; | 993 | ib.You = -1; |
970 | loc.Index = ib; | 994 | ib.Prey = -1; |
971 | this.OutPacket(loc); | 995 | loc.Index = ib; |
972 | } | 996 | OutPacket(loc); |
997 | } | ||
973 | 998 | ||
974 | #endregion | 999 | #endregion |
975 | 1000 | ||
@@ -984,27 +1009,28 @@ namespace OpenSim.Region.ClientStack | |||
984 | public void AttachObject(uint localID, LLQuaternion rotation, byte attachPoint) | 1009 | public void AttachObject(uint localID, LLQuaternion rotation, byte attachPoint) |
985 | { | 1010 | { |
986 | ObjectAttachPacket attach = new ObjectAttachPacket(); | 1011 | ObjectAttachPacket attach = new ObjectAttachPacket(); |
987 | attach.AgentData.AgentID = this.AgentId; | 1012 | attach.AgentData.AgentID = AgentId; |
988 | attach.AgentData.SessionID = this.m_sessionId; | 1013 | attach.AgentData.SessionID = m_sessionId; |
989 | attach.AgentData.AttachmentPoint = attachPoint; | 1014 | attach.AgentData.AttachmentPoint = attachPoint; |
990 | attach.ObjectData = new ObjectAttachPacket.ObjectDataBlock[1]; | 1015 | attach.ObjectData = new ObjectAttachPacket.ObjectDataBlock[1]; |
991 | attach.ObjectData[0] = new ObjectAttachPacket.ObjectDataBlock(); | 1016 | attach.ObjectData[0] = new ObjectAttachPacket.ObjectDataBlock(); |
992 | attach.ObjectData[0].ObjectLocalID = localID; | 1017 | attach.ObjectData[0].ObjectLocalID = localID; |
993 | attach.ObjectData[0].Rotation = rotation; | 1018 | attach.ObjectData[0].Rotation = rotation; |
994 | 1019 | ||
995 | this.OutPacket(attach); | 1020 | OutPacket(attach); |
996 | } | 1021 | } |
997 | 1022 | ||
998 | public void SendPrimitiveToClient( | 1023 | public void SendPrimitiveToClient( |
999 | ulong regionHandle, ushort timeDilation, uint localID, PrimitiveBaseShape primShape, LLVector3 pos, uint flags, | 1024 | ulong regionHandle, ushort timeDilation, uint localID, PrimitiveBaseShape primShape, LLVector3 pos, |
1025 | uint flags, | ||
1000 | LLUUID objectID, LLUUID ownerID, string text, uint parentID, byte[] particleSystem, LLQuaternion rotation) | 1026 | LLUUID objectID, LLUUID ownerID, string text, uint parentID, byte[] particleSystem, LLQuaternion rotation) |
1001 | { | 1027 | { |
1002 | ObjectUpdatePacket outPacket = new ObjectUpdatePacket(); | 1028 | ObjectUpdatePacket outPacket = new ObjectUpdatePacket(); |
1003 | outPacket.RegionData.RegionHandle = regionHandle; | 1029 | outPacket.RegionData.RegionHandle = regionHandle; |
1004 | outPacket.RegionData.TimeDilation = timeDilation; | 1030 | outPacket.RegionData.TimeDilation = timeDilation; |
1005 | outPacket.ObjectData = new ObjectUpdatePacket.ObjectDataBlock[1]; | 1031 | outPacket.ObjectData = new ObjectUpdatePacket.ObjectDataBlock[1]; |
1006 | 1032 | ||
1007 | outPacket.ObjectData[0] = this.CreatePrimUpdateBlock(primShape, flags); | 1033 | outPacket.ObjectData[0] = CreatePrimUpdateBlock(primShape, flags); |
1008 | 1034 | ||
1009 | outPacket.ObjectData[0].ID = localID; | 1035 | outPacket.ObjectData[0].ID = localID; |
1010 | outPacket.ObjectData[0].FullID = objectID; | 1036 | outPacket.ObjectData[0].FullID = objectID; |
@@ -1033,35 +1059,38 @@ namespace OpenSim.Region.ClientStack | |||
1033 | /// <param name="localID"></param> | 1059 | /// <param name="localID"></param> |
1034 | /// <param name="position"></param> | 1060 | /// <param name="position"></param> |
1035 | /// <param name="rotation"></param> | 1061 | /// <param name="rotation"></param> |
1036 | public void SendPrimTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID, LLVector3 position, LLQuaternion rotation) | 1062 | public void SendPrimTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID, LLVector3 position, |
1063 | LLQuaternion rotation) | ||
1037 | { | 1064 | { |
1038 | ImprovedTerseObjectUpdatePacket terse = new ImprovedTerseObjectUpdatePacket(); | 1065 | ImprovedTerseObjectUpdatePacket terse = new ImprovedTerseObjectUpdatePacket(); |
1039 | terse.RegionData.RegionHandle = regionHandle; | 1066 | terse.RegionData.RegionHandle = regionHandle; |
1040 | terse.RegionData.TimeDilation = timeDilation; | 1067 | terse.RegionData.TimeDilation = timeDilation; |
1041 | terse.ObjectData = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock[1]; | 1068 | terse.ObjectData = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock[1]; |
1042 | terse.ObjectData[0] = this.CreatePrimImprovedBlock(localID, position, rotation); | 1069 | terse.ObjectData[0] = CreatePrimImprovedBlock(localID, position, rotation); |
1043 | 1070 | ||
1044 | this.OutPacket(terse); | 1071 | OutPacket(terse); |
1045 | } | 1072 | } |
1046 | 1073 | ||
1047 | #endregion | 1074 | #endregion |
1048 | 1075 | ||
1049 | #region Helper Methods | 1076 | #region Helper Methods |
1050 | 1077 | ||
1051 | protected ImprovedTerseObjectUpdatePacket.ObjectDataBlock CreateAvatarImprovedBlock(uint localID, LLVector3 pos, LLVector3 velocity, LLQuaternion rotation) | 1078 | protected ImprovedTerseObjectUpdatePacket.ObjectDataBlock CreateAvatarImprovedBlock(uint localID, LLVector3 pos, |
1079 | LLVector3 velocity, | ||
1080 | LLQuaternion rotation) | ||
1052 | { | 1081 | { |
1053 | byte[] bytes = new byte[60]; | 1082 | byte[] bytes = new byte[60]; |
1054 | int i = 0; | 1083 | int i = 0; |
1055 | ImprovedTerseObjectUpdatePacket.ObjectDataBlock dat = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock(); | 1084 | ImprovedTerseObjectUpdatePacket.ObjectDataBlock dat = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock(); |
1056 | 1085 | ||
1057 | dat.TextureEntry = new byte[0];// AvatarTemplate.TextureEntry; | 1086 | dat.TextureEntry = new byte[0]; // AvatarTemplate.TextureEntry; |
1058 | 1087 | ||
1059 | uint ID = localID; | 1088 | uint ID = localID; |
1060 | 1089 | ||
1061 | bytes[i++] = (byte)(ID % 256); | 1090 | bytes[i++] = (byte) (ID%256); |
1062 | bytes[i++] = (byte)((ID >> 8) % 256); | 1091 | bytes[i++] = (byte) ((ID >> 8)%256); |
1063 | bytes[i++] = (byte)((ID >> 16) % 256); | 1092 | bytes[i++] = (byte) ((ID >> 16)%256); |
1064 | bytes[i++] = (byte)((ID >> 24) % 256); | 1093 | bytes[i++] = (byte) ((ID >> 24)%256); |
1065 | bytes[i++] = 0; | 1094 | bytes[i++] = 0; |
1066 | bytes[i++] = 1; | 1095 | bytes[i++] = 1; |
1067 | i += 14; | 1096 | i += 14; |
@@ -1078,55 +1107,55 @@ namespace OpenSim.Region.ClientStack | |||
1078 | 1107 | ||
1079 | internDirec = new Vector3(velocity.X, velocity.Y, velocity.Z); | 1108 | internDirec = new Vector3(velocity.X, velocity.Y, velocity.Z); |
1080 | 1109 | ||
1081 | internDirec = internDirec / 128.0f; | 1110 | internDirec = internDirec/128.0f; |
1082 | internDirec.x += 1; | 1111 | internDirec.x += 1; |
1083 | internDirec.y += 1; | 1112 | internDirec.y += 1; |
1084 | internDirec.z += 1; | 1113 | internDirec.z += 1; |
1085 | 1114 | ||
1086 | InternVelocityX = (ushort)(32768 * internDirec.x); | 1115 | InternVelocityX = (ushort) (32768*internDirec.x); |
1087 | InternVelocityY = (ushort)(32768 * internDirec.y); | 1116 | InternVelocityY = (ushort) (32768*internDirec.y); |
1088 | InternVelocityZ = (ushort)(32768 * internDirec.z); | 1117 | InternVelocityZ = (ushort) (32768*internDirec.z); |
1089 | 1118 | ||
1090 | ushort ac = 32767; | 1119 | ushort ac = 32767; |
1091 | bytes[i++] = (byte)(InternVelocityX % 256); | 1120 | bytes[i++] = (byte) (InternVelocityX%256); |
1092 | bytes[i++] = (byte)((InternVelocityX >> 8) % 256); | 1121 | bytes[i++] = (byte) ((InternVelocityX >> 8)%256); |
1093 | bytes[i++] = (byte)(InternVelocityY % 256); | 1122 | bytes[i++] = (byte) (InternVelocityY%256); |
1094 | bytes[i++] = (byte)((InternVelocityY >> 8) % 256); | 1123 | bytes[i++] = (byte) ((InternVelocityY >> 8)%256); |
1095 | bytes[i++] = (byte)(InternVelocityZ % 256); | 1124 | bytes[i++] = (byte) (InternVelocityZ%256); |
1096 | bytes[i++] = (byte)((InternVelocityZ >> 8) % 256); | 1125 | bytes[i++] = (byte) ((InternVelocityZ >> 8)%256); |
1097 | 1126 | ||
1098 | //accel | 1127 | //accel |
1099 | bytes[i++] = (byte)(ac % 256); | 1128 | bytes[i++] = (byte) (ac%256); |
1100 | bytes[i++] = (byte)((ac >> 8) % 256); | 1129 | bytes[i++] = (byte) ((ac >> 8)%256); |
1101 | bytes[i++] = (byte)(ac % 256); | 1130 | bytes[i++] = (byte) (ac%256); |
1102 | bytes[i++] = (byte)((ac >> 8) % 256); | 1131 | bytes[i++] = (byte) ((ac >> 8)%256); |
1103 | bytes[i++] = (byte)(ac % 256); | 1132 | bytes[i++] = (byte) (ac%256); |
1104 | bytes[i++] = (byte)((ac >> 8) % 256); | 1133 | bytes[i++] = (byte) ((ac >> 8)%256); |
1105 | 1134 | ||
1106 | //rotation | 1135 | //rotation |
1107 | ushort rw, rx, ry, rz; | 1136 | ushort rw, rx, ry, rz; |
1108 | rw = (ushort)(32768 * (rotation.W + 1)); | 1137 | rw = (ushort) (32768*(rotation.W + 1)); |
1109 | rx = (ushort)(32768 * (rotation.X + 1)); | 1138 | rx = (ushort) (32768*(rotation.X + 1)); |
1110 | ry = (ushort)(32768 * (rotation.Y + 1)); | 1139 | ry = (ushort) (32768*(rotation.Y + 1)); |
1111 | rz = (ushort)(32768 * (rotation.Z + 1)); | 1140 | rz = (ushort) (32768*(rotation.Z + 1)); |
1112 | 1141 | ||
1113 | //rot | 1142 | //rot |
1114 | bytes[i++] = (byte)(rx % 256); | 1143 | bytes[i++] = (byte) (rx%256); |
1115 | bytes[i++] = (byte)((rx >> 8) % 256); | 1144 | bytes[i++] = (byte) ((rx >> 8)%256); |
1116 | bytes[i++] = (byte)(ry % 256); | 1145 | bytes[i++] = (byte) (ry%256); |
1117 | bytes[i++] = (byte)((ry >> 8) % 256); | 1146 | bytes[i++] = (byte) ((ry >> 8)%256); |
1118 | bytes[i++] = (byte)(rz % 256); | 1147 | bytes[i++] = (byte) (rz%256); |
1119 | bytes[i++] = (byte)((rz >> 8) % 256); | 1148 | bytes[i++] = (byte) ((rz >> 8)%256); |
1120 | bytes[i++] = (byte)(rw % 256); | 1149 | bytes[i++] = (byte) (rw%256); |
1121 | bytes[i++] = (byte)((rw >> 8) % 256); | 1150 | bytes[i++] = (byte) ((rw >> 8)%256); |
1122 | 1151 | ||
1123 | //rotation vel | 1152 | //rotation vel |
1124 | bytes[i++] = (byte)(ac % 256); | 1153 | bytes[i++] = (byte) (ac%256); |
1125 | bytes[i++] = (byte)((ac >> 8) % 256); | 1154 | bytes[i++] = (byte) ((ac >> 8)%256); |
1126 | bytes[i++] = (byte)(ac % 256); | 1155 | bytes[i++] = (byte) (ac%256); |
1127 | bytes[i++] = (byte)((ac >> 8) % 256); | 1156 | bytes[i++] = (byte) ((ac >> 8)%256); |
1128 | bytes[i++] = (byte)(ac % 256); | 1157 | bytes[i++] = (byte) (ac%256); |
1129 | bytes[i++] = (byte)((ac >> 8) % 256); | 1158 | bytes[i++] = (byte) ((ac >> 8)%256); |
1130 | 1159 | ||
1131 | dat.Data = bytes; | 1160 | dat.Data = bytes; |
1132 | 1161 | ||
@@ -1140,7 +1169,9 @@ namespace OpenSim.Region.ClientStack | |||
1140 | /// <param name="position"></param> | 1169 | /// <param name="position"></param> |
1141 | /// <param name="rotation"></param> | 1170 | /// <param name="rotation"></param> |
1142 | /// <returns></returns> | 1171 | /// <returns></returns> |
1143 | protected ImprovedTerseObjectUpdatePacket.ObjectDataBlock CreatePrimImprovedBlock(uint localID, LLVector3 position, LLQuaternion rotation) | 1172 | protected ImprovedTerseObjectUpdatePacket.ObjectDataBlock CreatePrimImprovedBlock(uint localID, |
1173 | LLVector3 position, | ||
1174 | LLQuaternion rotation) | ||
1144 | { | 1175 | { |
1145 | uint ID = localID; | 1176 | uint ID = localID; |
1146 | byte[] bytes = new byte[60]; | 1177 | byte[] bytes = new byte[60]; |
@@ -1148,10 +1179,10 @@ namespace OpenSim.Region.ClientStack | |||
1148 | int i = 0; | 1179 | int i = 0; |
1149 | ImprovedTerseObjectUpdatePacket.ObjectDataBlock dat = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock(); | 1180 | ImprovedTerseObjectUpdatePacket.ObjectDataBlock dat = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock(); |
1150 | dat.TextureEntry = new byte[0]; | 1181 | dat.TextureEntry = new byte[0]; |
1151 | bytes[i++] = (byte)(ID % 256); | 1182 | bytes[i++] = (byte) (ID%256); |
1152 | bytes[i++] = (byte)((ID >> 8) % 256); | 1183 | bytes[i++] = (byte) ((ID >> 8)%256); |
1153 | bytes[i++] = (byte)((ID >> 16) % 256); | 1184 | bytes[i++] = (byte) ((ID >> 16)%256); |
1154 | bytes[i++] = (byte)((ID >> 24) % 256); | 1185 | bytes[i++] = (byte) ((ID >> 24)%256); |
1155 | bytes[i++] = 0; | 1186 | bytes[i++] = 0; |
1156 | bytes[i++] = 0; | 1187 | bytes[i++] = 0; |
1157 | 1188 | ||
@@ -1161,44 +1192,44 @@ namespace OpenSim.Region.ClientStack | |||
1161 | ushort ac = 32767; | 1192 | ushort ac = 32767; |
1162 | 1193 | ||
1163 | //vel | 1194 | //vel |
1164 | bytes[i++] = (byte)(ac % 256); | 1195 | bytes[i++] = (byte) (ac%256); |
1165 | bytes[i++] = (byte)((ac >> 8) % 256); | 1196 | bytes[i++] = (byte) ((ac >> 8)%256); |
1166 | bytes[i++] = (byte)(ac % 256); | 1197 | bytes[i++] = (byte) (ac%256); |
1167 | bytes[i++] = (byte)((ac >> 8) % 256); | 1198 | bytes[i++] = (byte) ((ac >> 8)%256); |
1168 | bytes[i++] = (byte)(ac % 256); | 1199 | bytes[i++] = (byte) (ac%256); |
1169 | bytes[i++] = (byte)((ac >> 8) % 256); | 1200 | bytes[i++] = (byte) ((ac >> 8)%256); |
1170 | 1201 | ||
1171 | //accel | 1202 | //accel |
1172 | bytes[i++] = (byte)(ac % 256); | 1203 | bytes[i++] = (byte) (ac%256); |
1173 | bytes[i++] = (byte)((ac >> 8) % 256); | 1204 | bytes[i++] = (byte) ((ac >> 8)%256); |
1174 | bytes[i++] = (byte)(ac % 256); | 1205 | bytes[i++] = (byte) (ac%256); |
1175 | bytes[i++] = (byte)((ac >> 8) % 256); | 1206 | bytes[i++] = (byte) ((ac >> 8)%256); |
1176 | bytes[i++] = (byte)(ac % 256); | 1207 | bytes[i++] = (byte) (ac%256); |
1177 | bytes[i++] = (byte)((ac >> 8) % 256); | 1208 | bytes[i++] = (byte) ((ac >> 8)%256); |
1178 | 1209 | ||
1179 | ushort rw, rx, ry, rz; | 1210 | ushort rw, rx, ry, rz; |
1180 | rw = (ushort)(32768 * (rotation.W + 1)); | 1211 | rw = (ushort) (32768*(rotation.W + 1)); |
1181 | rx = (ushort)(32768 * (rotation.X + 1)); | 1212 | rx = (ushort) (32768*(rotation.X + 1)); |
1182 | ry = (ushort)(32768 * (rotation.Y + 1)); | 1213 | ry = (ushort) (32768*(rotation.Y + 1)); |
1183 | rz = (ushort)(32768 * (rotation.Z + 1)); | 1214 | rz = (ushort) (32768*(rotation.Z + 1)); |
1184 | 1215 | ||
1185 | //rot | 1216 | //rot |
1186 | bytes[i++] = (byte)(rx % 256); | 1217 | bytes[i++] = (byte) (rx%256); |
1187 | bytes[i++] = (byte)((rx >> 8) % 256); | 1218 | bytes[i++] = (byte) ((rx >> 8)%256); |
1188 | bytes[i++] = (byte)(ry % 256); | 1219 | bytes[i++] = (byte) (ry%256); |
1189 | bytes[i++] = (byte)((ry >> 8) % 256); | 1220 | bytes[i++] = (byte) ((ry >> 8)%256); |
1190 | bytes[i++] = (byte)(rz % 256); | 1221 | bytes[i++] = (byte) (rz%256); |
1191 | bytes[i++] = (byte)((rz >> 8) % 256); | 1222 | bytes[i++] = (byte) ((rz >> 8)%256); |
1192 | bytes[i++] = (byte)(rw % 256); | 1223 | bytes[i++] = (byte) (rw%256); |
1193 | bytes[i++] = (byte)((rw >> 8) % 256); | 1224 | bytes[i++] = (byte) ((rw >> 8)%256); |
1194 | 1225 | ||
1195 | //rotation vel | 1226 | //rotation vel |
1196 | bytes[i++] = (byte)(ac % 256); | 1227 | bytes[i++] = (byte) (ac%256); |
1197 | bytes[i++] = (byte)((ac >> 8) % 256); | 1228 | bytes[i++] = (byte) ((ac >> 8)%256); |
1198 | bytes[i++] = (byte)(ac % 256); | 1229 | bytes[i++] = (byte) (ac%256); |
1199 | bytes[i++] = (byte)((ac >> 8) % 256); | 1230 | bytes[i++] = (byte) ((ac >> 8)%256); |
1200 | bytes[i++] = (byte)(ac % 256); | 1231 | bytes[i++] = (byte) (ac%256); |
1201 | bytes[i++] = (byte)((ac >> 8) % 256); | 1232 | bytes[i++] = (byte) ((ac >> 8)%256); |
1202 | 1233 | ||
1203 | dat.Data = bytes; | 1234 | dat.Data = bytes; |
1204 | return dat; | 1235 | return dat; |
@@ -1212,16 +1243,15 @@ namespace OpenSim.Region.ClientStack | |||
1212 | protected ObjectUpdatePacket.ObjectDataBlock CreatePrimUpdateBlock(PrimitiveBaseShape primShape, uint flags) | 1243 | protected ObjectUpdatePacket.ObjectDataBlock CreatePrimUpdateBlock(PrimitiveBaseShape primShape, uint flags) |
1213 | { | 1244 | { |
1214 | ObjectUpdatePacket.ObjectDataBlock objupdate = new ObjectUpdatePacket.ObjectDataBlock(); | 1245 | ObjectUpdatePacket.ObjectDataBlock objupdate = new ObjectUpdatePacket.ObjectDataBlock(); |
1215 | this.SetDefaultPrimPacketValues(objupdate); | 1246 | SetDefaultPrimPacketValues(objupdate); |
1216 | objupdate.UpdateFlags = flags; | 1247 | objupdate.UpdateFlags = flags; |
1217 | this.SetPrimPacketShapeData(objupdate, primShape); | 1248 | SetPrimPacketShapeData(objupdate, primShape); |
1218 | 1249 | ||
1219 | return objupdate; | 1250 | return objupdate; |
1220 | } | 1251 | } |
1221 | 1252 | ||
1222 | protected void SetPrimPacketShapeData(ObjectUpdatePacket.ObjectDataBlock objectData, PrimitiveBaseShape primData) | 1253 | protected void SetPrimPacketShapeData(ObjectUpdatePacket.ObjectDataBlock objectData, PrimitiveBaseShape primData) |
1223 | { | 1254 | { |
1224 | |||
1225 | objectData.TextureEntry = primData.TextureEntry; | 1255 | objectData.TextureEntry = primData.TextureEntry; |
1226 | objectData.PCode = primData.PCode; | 1256 | objectData.PCode = primData.PCode; |
1227 | objectData.PathBegin = primData.PathBegin; | 1257 | objectData.PathBegin = primData.PathBegin; |
@@ -1278,10 +1308,11 @@ namespace OpenSim.Region.ClientStack | |||
1278 | /// <returns></returns> | 1308 | /// <returns></returns> |
1279 | protected ObjectUpdatePacket.ObjectDataBlock CreateDefaultAvatarPacket(byte[] textureEntry) | 1309 | protected ObjectUpdatePacket.ObjectDataBlock CreateDefaultAvatarPacket(byte[] textureEntry) |
1280 | { | 1310 | { |
1281 | ObjectUpdatePacket.ObjectDataBlock objdata = new ObjectUpdatePacket.ObjectDataBlock(); // new libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock(data1, ref i); | 1311 | ObjectUpdatePacket.ObjectDataBlock objdata = new ObjectUpdatePacket.ObjectDataBlock(); |
1312 | // new libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock(data1, ref i); | ||
1282 | 1313 | ||
1283 | SetDefaultAvatarPacketValues(ref objdata); | 1314 | SetDefaultAvatarPacketValues(ref objdata); |
1284 | objdata.UpdateFlags = 61 + (9 << 8) + (130 << 16) + (16 << 24); | 1315 | objdata.UpdateFlags = 61 + (9 << 8) + (130 << 16) + (16 << 24); |
1285 | objdata.PathCurve = 16; | 1316 | objdata.PathCurve = 16; |
1286 | objdata.ProfileCurve = 1; | 1317 | objdata.ProfileCurve = 1; |
1287 | objdata.PathScaleX = 100; | 1318 | objdata.PathScaleX = 100; |
@@ -1353,6 +1384,5 @@ namespace OpenSim.Region.ClientStack | |||
1353 | } | 1384 | } |
1354 | 1385 | ||
1355 | #endregion | 1386 | #endregion |
1356 | |||
1357 | } | 1387 | } |
1358 | } | 1388 | } \ No newline at end of file |
diff --git a/OpenSim/Region/ClientStack/ClientView.PacketHandlers.cs b/OpenSim/Region/ClientStack/ClientView.PacketHandlers.cs index 0771a4a..d589a7b 100644 --- a/OpenSim/Region/ClientStack/ClientView.PacketHandlers.cs +++ b/OpenSim/Region/ClientStack/ClientView.PacketHandlers.cs | |||
@@ -27,9 +27,8 @@ | |||
27 | */ | 27 | */ |
28 | using libsecondlife; | 28 | using libsecondlife; |
29 | using libsecondlife.Packets; | 29 | using libsecondlife.Packets; |
30 | using OpenSim.Framework.Console; | ||
31 | using OpenSim.Framework.Interfaces; | ||
32 | using OpenSim.Framework; | 30 | using OpenSim.Framework; |
31 | using OpenSim.Framework.Console; | ||
33 | 32 | ||
34 | namespace OpenSim.Region.ClientStack | 33 | namespace OpenSim.Region.ClientStack |
35 | { | 34 | { |
@@ -37,17 +36,17 @@ namespace OpenSim.Region.ClientStack | |||
37 | { | 36 | { |
38 | protected virtual void RegisterLocalPacketHandlers() | 37 | protected virtual void RegisterLocalPacketHandlers() |
39 | { | 38 | { |
40 | this.AddLocalPacketHandler(PacketType.LogoutRequest, this.Logout); | 39 | AddLocalPacketHandler(PacketType.LogoutRequest, Logout); |
41 | this.AddLocalPacketHandler(PacketType.ViewerEffect, this.HandleViewerEffect); | 40 | AddLocalPacketHandler(PacketType.ViewerEffect, HandleViewerEffect); |
42 | this.AddLocalPacketHandler(PacketType.AgentCachedTexture, this.AgentTextureCached); | 41 | AddLocalPacketHandler(PacketType.AgentCachedTexture, AgentTextureCached); |
43 | this.AddLocalPacketHandler(PacketType.MultipleObjectUpdate, this.MultipleObjUpdate); | 42 | AddLocalPacketHandler(PacketType.MultipleObjectUpdate, MultipleObjUpdate); |
44 | } | 43 | } |
45 | 44 | ||
46 | private bool HandleViewerEffect(IClientAPI sender, Packet Pack) | 45 | private bool HandleViewerEffect(IClientAPI sender, Packet Pack) |
47 | { | 46 | { |
48 | ViewerEffectPacket viewer = (ViewerEffectPacket)Pack; | 47 | ViewerEffectPacket viewer = (ViewerEffectPacket) Pack; |
49 | 48 | ||
50 | if( OnViewerEffect != null ) | 49 | if (OnViewerEffect != null) |
51 | { | 50 | { |
52 | OnViewerEffect(sender, viewer.Effect); | 51 | OnViewerEffect(sender, viewer.Effect); |
53 | } | 52 | } |
@@ -59,7 +58,7 @@ namespace OpenSim.Region.ClientStack | |||
59 | { | 58 | { |
60 | MainLog.Instance.Verbose("CLIENT", "Got a logout request"); | 59 | MainLog.Instance.Verbose("CLIENT", "Got a logout request"); |
61 | 60 | ||
62 | if( OnLogout != null ) | 61 | if (OnLogout != null) |
63 | { | 62 | { |
64 | OnLogout(client); | 63 | OnLogout(client); |
65 | } | 64 | } |
@@ -70,13 +69,14 @@ namespace OpenSim.Region.ClientStack | |||
70 | protected bool AgentTextureCached(IClientAPI simclient, Packet packet) | 69 | protected bool AgentTextureCached(IClientAPI simclient, Packet packet) |
71 | { | 70 | { |
72 | //System.Console.WriteLine("texture cached: " + packet.ToString()); | 71 | //System.Console.WriteLine("texture cached: " + packet.ToString()); |
73 | AgentCachedTexturePacket chechedtex = (AgentCachedTexturePacket)packet; | 72 | AgentCachedTexturePacket chechedtex = (AgentCachedTexturePacket) packet; |
74 | AgentCachedTextureResponsePacket cachedresp = new AgentCachedTextureResponsePacket(); | 73 | AgentCachedTextureResponsePacket cachedresp = new AgentCachedTextureResponsePacket(); |
75 | cachedresp.AgentData.AgentID = this.AgentId; | 74 | cachedresp.AgentData.AgentID = AgentId; |
76 | cachedresp.AgentData.SessionID = this.m_sessionId; | 75 | cachedresp.AgentData.SessionID = m_sessionId; |
77 | cachedresp.AgentData.SerialNum = this.cachedtextureserial; | 76 | cachedresp.AgentData.SerialNum = cachedtextureserial; |
78 | this.cachedtextureserial++; | 77 | cachedtextureserial++; |
79 | cachedresp.WearableData = new AgentCachedTextureResponsePacket.WearableDataBlock[chechedtex.WearableData.Length]; | 78 | cachedresp.WearableData = |
79 | new AgentCachedTextureResponsePacket.WearableDataBlock[chechedtex.WearableData.Length]; | ||
80 | for (int i = 0; i < chechedtex.WearableData.Length; i++) | 80 | for (int i = 0; i < chechedtex.WearableData.Length; i++) |
81 | { | 81 | { |
82 | cachedresp.WearableData[i] = new AgentCachedTextureResponsePacket.WearableDataBlock(); | 82 | cachedresp.WearableData[i] = new AgentCachedTextureResponsePacket.WearableDataBlock(); |
@@ -84,17 +84,18 @@ namespace OpenSim.Region.ClientStack | |||
84 | cachedresp.WearableData[i].TextureID = LLUUID.Zero; | 84 | cachedresp.WearableData[i].TextureID = LLUUID.Zero; |
85 | cachedresp.WearableData[i].HostName = new byte[0]; | 85 | cachedresp.WearableData[i].HostName = new byte[0]; |
86 | } | 86 | } |
87 | this.OutPacket(cachedresp); | 87 | OutPacket(cachedresp); |
88 | return true; | 88 | return true; |
89 | } | 89 | } |
90 | 90 | ||
91 | protected bool MultipleObjUpdate(IClientAPI simClient, Packet packet) | 91 | protected bool MultipleObjUpdate(IClientAPI simClient, Packet packet) |
92 | { | 92 | { |
93 | MultipleObjectUpdatePacket multipleupdate = (MultipleObjectUpdatePacket)packet; | 93 | MultipleObjectUpdatePacket multipleupdate = (MultipleObjectUpdatePacket) packet; |
94 | // System.Console.WriteLine("new multi update packet " + multipleupdate.ToString()); | 94 | // System.Console.WriteLine("new multi update packet " + multipleupdate.ToString()); |
95 | for (int i = 0; i < multipleupdate.ObjectData.Length; i++) | 95 | for (int i = 0; i < multipleupdate.ObjectData.Length; i++) |
96 | { | 96 | { |
97 | #region position | 97 | #region position |
98 | |||
98 | if (multipleupdate.ObjectData[i].Type == 9) //change position | 99 | if (multipleupdate.ObjectData[i].Type == 9) //change position |
99 | { | 100 | { |
100 | if (OnUpdatePrimGroupPosition != null) | 101 | if (OnUpdatePrimGroupPosition != null) |
@@ -102,20 +103,20 @@ namespace OpenSim.Region.ClientStack | |||
102 | LLVector3 pos = new LLVector3(multipleupdate.ObjectData[i].Data, 0); | 103 | LLVector3 pos = new LLVector3(multipleupdate.ObjectData[i].Data, 0); |
103 | OnUpdatePrimGroupPosition(multipleupdate.ObjectData[i].ObjectLocalID, pos, this); | 104 | OnUpdatePrimGroupPosition(multipleupdate.ObjectData[i].ObjectLocalID, pos, this); |
104 | } | 105 | } |
105 | |||
106 | } | 106 | } |
107 | else if (multipleupdate.ObjectData[i].Type == 1) //single item of group change position | 107 | else if (multipleupdate.ObjectData[i].Type == 1) //single item of group change position |
108 | { | 108 | { |
109 | if (OnUpdatePrimSinglePosition != null) | 109 | if (OnUpdatePrimSinglePosition != null) |
110 | { | 110 | { |
111 | libsecondlife.LLVector3 pos = new LLVector3(multipleupdate.ObjectData[i].Data, 0); | 111 | LLVector3 pos = new LLVector3(multipleupdate.ObjectData[i].Data, 0); |
112 | // System.Console.WriteLine("new movement position is " + pos.X + " , " + pos.Y + " , " + pos.Z); | 112 | // System.Console.WriteLine("new movement position is " + pos.X + " , " + pos.Y + " , " + pos.Z); |
113 | OnUpdatePrimSinglePosition(multipleupdate.ObjectData[i].ObjectLocalID, pos, this); | 113 | OnUpdatePrimSinglePosition(multipleupdate.ObjectData[i].ObjectLocalID, pos, this); |
114 | } | 114 | } |
115 | } | 115 | } |
116 | #endregion position | 116 | #endregion position |
117 | #region rotation | 117 | #region rotation |
118 | else if (multipleupdate.ObjectData[i].Type == 2)// single item of group rotation from tab | 118 | |
119 | else if (multipleupdate.ObjectData[i].Type == 2) // single item of group rotation from tab | ||
119 | { | 120 | { |
120 | if (OnUpdatePrimSingleRotation != null) | 121 | if (OnUpdatePrimSingleRotation != null) |
121 | { | 122 | { |
@@ -124,38 +125,39 @@ namespace OpenSim.Region.ClientStack | |||
124 | OnUpdatePrimSingleRotation(multipleupdate.ObjectData[i].ObjectLocalID, rot, this); | 125 | OnUpdatePrimSingleRotation(multipleupdate.ObjectData[i].ObjectLocalID, rot, this); |
125 | } | 126 | } |
126 | } | 127 | } |
127 | else if (multipleupdate.ObjectData[i].Type == 3)// single item of group rotation from mouse | 128 | else if (multipleupdate.ObjectData[i].Type == 3) // single item of group rotation from mouse |
128 | { | 129 | { |
129 | if (OnUpdatePrimSingleRotation != null) | 130 | if (OnUpdatePrimSingleRotation != null) |
130 | { | 131 | { |
131 | libsecondlife.LLQuaternion rot = new LLQuaternion(multipleupdate.ObjectData[i].Data, 12, true); | 132 | LLQuaternion rot = new LLQuaternion(multipleupdate.ObjectData[i].Data, 12, true); |
132 | //System.Console.WriteLine("new mouse rotation is " + rot.X + " , " + rot.Y + " , " + rot.Z + " , " + rot.W); | 133 | //System.Console.WriteLine("new mouse rotation is " + rot.X + " , " + rot.Y + " , " + rot.Z + " , " + rot.W); |
133 | OnUpdatePrimSingleRotation(multipleupdate.ObjectData[i].ObjectLocalID, rot, this); | 134 | OnUpdatePrimSingleRotation(multipleupdate.ObjectData[i].ObjectLocalID, rot, this); |
134 | } | 135 | } |
135 | } | 136 | } |
136 | else if (multipleupdate.ObjectData[i].Type == 10)//group rotation from object tab | 137 | else if (multipleupdate.ObjectData[i].Type == 10) //group rotation from object tab |
137 | { | 138 | { |
138 | if (OnUpdatePrimGroupRotation != null) | 139 | if (OnUpdatePrimGroupRotation != null) |
139 | { | 140 | { |
140 | libsecondlife.LLQuaternion rot = new LLQuaternion(multipleupdate.ObjectData[i].Data, 0, true); | 141 | LLQuaternion rot = new LLQuaternion(multipleupdate.ObjectData[i].Data, 0, true); |
141 | // Console.WriteLine("new rotation is " + rot.X + " , " + rot.Y + " , " + rot.Z + " , " + rot.W); | 142 | // Console.WriteLine("new rotation is " + rot.X + " , " + rot.Y + " , " + rot.Z + " , " + rot.W); |
142 | OnUpdatePrimGroupRotation(multipleupdate.ObjectData[i].ObjectLocalID, rot, this); | 143 | OnUpdatePrimGroupRotation(multipleupdate.ObjectData[i].ObjectLocalID, rot, this); |
143 | } | 144 | } |
144 | } | 145 | } |
145 | else if (multipleupdate.ObjectData[i].Type == 11)//group rotation from mouse | 146 | else if (multipleupdate.ObjectData[i].Type == 11) //group rotation from mouse |
146 | { | 147 | { |
147 | if (OnUpdatePrimGroupMouseRotation != null) | 148 | if (OnUpdatePrimGroupMouseRotation != null) |
148 | { | 149 | { |
149 | libsecondlife.LLVector3 pos = new LLVector3(multipleupdate.ObjectData[i].Data, 0); | 150 | LLVector3 pos = new LLVector3(multipleupdate.ObjectData[i].Data, 0); |
150 | libsecondlife.LLQuaternion rot = new LLQuaternion(multipleupdate.ObjectData[i].Data, 12, true); | 151 | LLQuaternion rot = new LLQuaternion(multipleupdate.ObjectData[i].Data, 12, true); |
151 | //Console.WriteLine("new rotation position is " + pos.X + " , " + pos.Y + " , " + pos.Z); | 152 | //Console.WriteLine("new rotation position is " + pos.X + " , " + pos.Y + " , " + pos.Z); |
152 | // Console.WriteLine("new rotation is " + rot.X + " , " + rot.Y + " , " + rot.Z + " , " + rot.W); | 153 | // Console.WriteLine("new rotation is " + rot.X + " , " + rot.Y + " , " + rot.Z + " , " + rot.W); |
153 | OnUpdatePrimGroupMouseRotation(multipleupdate.ObjectData[i].ObjectLocalID, pos, rot, this); | 154 | OnUpdatePrimGroupMouseRotation(multipleupdate.ObjectData[i].ObjectLocalID, pos, rot, this); |
154 | } | 155 | } |
155 | } | 156 | } |
156 | #endregion | 157 | #endregion |
157 | #region scale | 158 | #region scale |
158 | else if (multipleupdate.ObjectData[i].Type == 13)//group scale from object tab | 159 | |
160 | else if (multipleupdate.ObjectData[i].Type == 13) //group scale from object tab | ||
159 | { | 161 | { |
160 | if (OnUpdatePrimScale != null) | 162 | if (OnUpdatePrimScale != null) |
161 | { | 163 | { |
@@ -164,40 +166,41 @@ namespace OpenSim.Region.ClientStack | |||
164 | OnUpdatePrimScale(multipleupdate.ObjectData[i].ObjectLocalID, scale, this); | 166 | OnUpdatePrimScale(multipleupdate.ObjectData[i].ObjectLocalID, scale, this); |
165 | 167 | ||
166 | // Change the position based on scale (for bug number 246) | 168 | // Change the position based on scale (for bug number 246) |
167 | libsecondlife.LLVector3 pos = new LLVector3(multipleupdate.ObjectData[i].Data, 0); | 169 | LLVector3 pos = new LLVector3(multipleupdate.ObjectData[i].Data, 0); |
168 | // System.Console.WriteLine("new movement position is " + pos.X + " , " + pos.Y + " , " + pos.Z); | 170 | // System.Console.WriteLine("new movement position is " + pos.X + " , " + pos.Y + " , " + pos.Z); |
169 | OnUpdatePrimSinglePosition(multipleupdate.ObjectData[i].ObjectLocalID, pos, this); | 171 | OnUpdatePrimSinglePosition(multipleupdate.ObjectData[i].ObjectLocalID, pos, this); |
170 | } | 172 | } |
171 | } | 173 | } |
172 | else if (multipleupdate.ObjectData[i].Type == 29)//group scale from mouse | 174 | else if (multipleupdate.ObjectData[i].Type == 29) //group scale from mouse |
173 | { | 175 | { |
174 | if (OnUpdatePrimScale != null) | 176 | if (OnUpdatePrimScale != null) |
175 | { | 177 | { |
176 | libsecondlife.LLVector3 scale = new LLVector3(multipleupdate.ObjectData[i].Data, 12); | 178 | LLVector3 scale = new LLVector3(multipleupdate.ObjectData[i].Data, 12); |
177 | // Console.WriteLine("new scale is " + scale.X + " , " + scale.Y + " , " + scale.Z ); | 179 | // Console.WriteLine("new scale is " + scale.X + " , " + scale.Y + " , " + scale.Z ); |
178 | OnUpdatePrimScale(multipleupdate.ObjectData[i].ObjectLocalID, scale, this); | 180 | OnUpdatePrimScale(multipleupdate.ObjectData[i].ObjectLocalID, scale, this); |
179 | libsecondlife.LLVector3 pos = new LLVector3(multipleupdate.ObjectData[i].Data, 0); | 181 | LLVector3 pos = new LLVector3(multipleupdate.ObjectData[i].Data, 0); |
180 | OnUpdatePrimSinglePosition(multipleupdate.ObjectData[i].ObjectLocalID, pos, this); | 182 | OnUpdatePrimSinglePosition(multipleupdate.ObjectData[i].ObjectLocalID, pos, this); |
181 | } | 183 | } |
182 | } | 184 | } |
183 | else if (multipleupdate.ObjectData[i].Type == 5)//single prim scale from object tab | 185 | else if (multipleupdate.ObjectData[i].Type == 5) //single prim scale from object tab |
184 | { | 186 | { |
185 | if (OnUpdatePrimScale != null) | 187 | if (OnUpdatePrimScale != null) |
186 | { | 188 | { |
187 | libsecondlife.LLVector3 scale = new LLVector3(multipleupdate.ObjectData[i].Data, 12); | 189 | LLVector3 scale = new LLVector3(multipleupdate.ObjectData[i].Data, 12); |
188 | // Console.WriteLine("new scale is " + scale.X + " , " + scale.Y + " , " + scale.Z); | 190 | // Console.WriteLine("new scale is " + scale.X + " , " + scale.Y + " , " + scale.Z); |
189 | OnUpdatePrimScale(multipleupdate.ObjectData[i].ObjectLocalID, scale, this); | 191 | OnUpdatePrimScale(multipleupdate.ObjectData[i].ObjectLocalID, scale, this); |
190 | } | 192 | } |
191 | } | 193 | } |
192 | else if (multipleupdate.ObjectData[i].Type == 21)//single prim scale from mouse | 194 | else if (multipleupdate.ObjectData[i].Type == 21) //single prim scale from mouse |
193 | { | 195 | { |
194 | if (OnUpdatePrimScale != null) | 196 | if (OnUpdatePrimScale != null) |
195 | { | 197 | { |
196 | libsecondlife.LLVector3 scale = new LLVector3(multipleupdate.ObjectData[i].Data, 12); | 198 | LLVector3 scale = new LLVector3(multipleupdate.ObjectData[i].Data, 12); |
197 | // Console.WriteLine("new scale is " + scale.X + " , " + scale.Y + " , " + scale.Z); | 199 | // Console.WriteLine("new scale is " + scale.X + " , " + scale.Y + " , " + scale.Z); |
198 | OnUpdatePrimScale(multipleupdate.ObjectData[i].ObjectLocalID, scale, this); | 200 | OnUpdatePrimScale(multipleupdate.ObjectData[i].ObjectLocalID, scale, this); |
199 | } | 201 | } |
200 | } | 202 | } |
203 | |||
201 | #endregion | 204 | #endregion |
202 | } | 205 | } |
203 | return true; | 206 | return true; |
@@ -208,7 +211,7 @@ namespace OpenSim.Region.ClientStack | |||
208 | //should be getting the map layer from the grid server | 211 | //should be getting the map layer from the grid server |
209 | //send a layer covering the 800,800 - 1200,1200 area (should be covering the requested area) | 212 | //send a layer covering the 800,800 - 1200,1200 area (should be covering the requested area) |
210 | MapLayerReplyPacket mapReply = new MapLayerReplyPacket(); | 213 | MapLayerReplyPacket mapReply = new MapLayerReplyPacket(); |
211 | mapReply.AgentData.AgentID = this.AgentId; | 214 | mapReply.AgentData.AgentID = AgentId; |
212 | mapReply.AgentData.Flags = 0; | 215 | mapReply.AgentData.Flags = 0; |
213 | mapReply.LayerData = new MapLayerReplyPacket.LayerDataBlock[1]; | 216 | mapReply.LayerData = new MapLayerReplyPacket.LayerDataBlock[1]; |
214 | mapReply.LayerData[0] = new MapLayerReplyPacket.LayerDataBlock(); | 217 | mapReply.LayerData[0] = new MapLayerReplyPacket.LayerDataBlock(); |
@@ -217,7 +220,7 @@ namespace OpenSim.Region.ClientStack | |||
217 | mapReply.LayerData[0].Top = 30000; | 220 | mapReply.LayerData[0].Top = 30000; |
218 | mapReply.LayerData[0].Right = 30000; | 221 | mapReply.LayerData[0].Right = 30000; |
219 | mapReply.LayerData[0].ImageID = new LLUUID("00000000-0000-0000-9999-000000000006"); | 222 | mapReply.LayerData[0].ImageID = new LLUUID("00000000-0000-0000-9999-000000000006"); |
220 | this.OutPacket(mapReply); | 223 | OutPacket(mapReply); |
221 | } | 224 | } |
222 | 225 | ||
223 | public void RequestMapBlocks(int minX, int minY, int maxX, int maxY) | 226 | public void RequestMapBlocks(int minX, int minY, int maxX, int maxY) |
@@ -251,4 +254,4 @@ namespace OpenSim.Region.ClientStack | |||
251 | */ | 254 | */ |
252 | } | 255 | } |
253 | } | 256 | } |
254 | } | 257 | } \ No newline at end of file |
diff --git a/OpenSim/Region/ClientStack/ClientView.PacketQueue.cs b/OpenSim/Region/ClientStack/ClientView.PacketQueue.cs index 5cd30ce..efeff29 100644 --- a/OpenSim/Region/ClientStack/ClientView.PacketQueue.cs +++ b/OpenSim/Region/ClientStack/ClientView.PacketQueue.cs | |||
@@ -32,13 +32,12 @@ using System.Net.Sockets; | |||
32 | using System.Timers; | 32 | using System.Timers; |
33 | using libsecondlife; | 33 | using libsecondlife; |
34 | using libsecondlife.Packets; | 34 | using libsecondlife.Packets; |
35 | using OpenSim.Framework.Console; | ||
36 | using OpenSim.Framework; | 35 | using OpenSim.Framework; |
37 | using OpenSim.Region.Environment; | 36 | using OpenSim.Framework.Console; |
38 | 37 | ||
39 | namespace OpenSim.Region.ClientStack | 38 | namespace OpenSim.Region.ClientStack |
40 | { | 39 | { |
41 | public partial class ClientView | 40 | public partial class ClientView |
42 | { | 41 | { |
43 | protected BlockingQueue<QueItem> PacketQueue; | 42 | protected BlockingQueue<QueItem> PacketQueue; |
44 | protected Dictionary<uint, uint> PendingAcks = new Dictionary<uint, uint>(); | 43 | protected Dictionary<uint, uint> PendingAcks = new Dictionary<uint, uint>(); |
@@ -84,7 +83,7 @@ namespace OpenSim.Region.ClientStack | |||
84 | Pack.Header.Sequence = Sequence; | 83 | Pack.Header.Sequence = Sequence; |
85 | } | 84 | } |
86 | 85 | ||
87 | if (Pack.Header.Reliable) //DIRTY HACK | 86 | if (Pack.Header.Reliable) //DIRTY HACK |
88 | { | 87 | { |
89 | lock (NeedAck) | 88 | lock (NeedAck) |
90 | { | 89 | { |
@@ -148,19 +147,21 @@ namespace OpenSim.Region.ClientStack | |||
148 | if (Pack.Header.Zerocoded) | 147 | if (Pack.Header.Zerocoded) |
149 | { | 148 | { |
150 | int packetsize = Helpers.ZeroEncode(sendbuffer, sendbuffer.Length, ZeroOutBuffer); | 149 | int packetsize = Helpers.ZeroEncode(sendbuffer, sendbuffer.Length, ZeroOutBuffer); |
151 | m_networkServer.SendPacketTo(ZeroOutBuffer, packetsize, SocketFlags.None, m_circuitCode);//userEP); | 150 | m_networkServer.SendPacketTo(ZeroOutBuffer, packetsize, SocketFlags.None, m_circuitCode); //userEP); |
152 | } | 151 | } |
153 | else | 152 | else |
154 | { | 153 | { |
155 | m_networkServer.SendPacketTo(sendbuffer, sendbuffer.Length, SocketFlags.None, m_circuitCode); //userEP); | 154 | m_networkServer.SendPacketTo(sendbuffer, sendbuffer.Length, SocketFlags.None, m_circuitCode); |
155 | //userEP); | ||
156 | } | 156 | } |
157 | } | 157 | } |
158 | catch (Exception) | 158 | catch (Exception) |
159 | { | 159 | { |
160 | MainLog.Instance.Warn("client", "OpenSimClient.cs:ProcessOutPacket() - WARNING: Socket exception occurred on connection " + userEP.ToString() + " - killing thread"); | 160 | MainLog.Instance.Warn("client", |
161 | this.KillThread(); | 161 | "OpenSimClient.cs:ProcessOutPacket() - WARNING: Socket exception occurred on connection " + |
162 | userEP.ToString() + " - killing thread"); | ||
163 | KillThread(); | ||
162 | } | 164 | } |
163 | |||
164 | } | 165 | } |
165 | 166 | ||
166 | public virtual void InPacket(Packet NewPack) | 167 | public virtual void InPacket(Packet NewPack) |
@@ -180,7 +181,7 @@ namespace OpenSim.Region.ClientStack | |||
180 | // Handle PacketAck packets | 181 | // Handle PacketAck packets |
181 | if (NewPack.Type == PacketType.PacketAck) | 182 | if (NewPack.Type == PacketType.PacketAck) |
182 | { | 183 | { |
183 | PacketAckPacket ackPacket = (PacketAckPacket)NewPack; | 184 | PacketAckPacket ackPacket = (PacketAckPacket) NewPack; |
184 | 185 | ||
185 | lock (NeedAck) | 186 | lock (NeedAck) |
186 | { | 187 | { |
@@ -193,7 +194,7 @@ namespace OpenSim.Region.ClientStack | |||
193 | else if ((NewPack.Type == PacketType.StartPingCheck)) | 194 | else if ((NewPack.Type == PacketType.StartPingCheck)) |
194 | { | 195 | { |
195 | //reply to pingcheck | 196 | //reply to pingcheck |
196 | StartPingCheckPacket startPing = (StartPingCheckPacket)NewPack; | 197 | StartPingCheckPacket startPing = (StartPingCheckPacket) NewPack; |
197 | CompletePingCheckPacket endPing = new CompletePingCheckPacket(); | 198 | CompletePingCheckPacket endPing = new CompletePingCheckPacket(); |
198 | endPing.PingID.PingID = startPing.PingID.PingID; | 199 | endPing.PingID.PingID = startPing.PingID.PingID; |
199 | OutPacket(endPing); | 200 | OutPacket(endPing); |
@@ -203,9 +204,8 @@ namespace OpenSim.Region.ClientStack | |||
203 | QueItem item = new QueItem(); | 204 | QueItem item = new QueItem(); |
204 | item.Packet = NewPack; | 205 | item.Packet = NewPack; |
205 | item.Incoming = true; | 206 | item.Incoming = true; |
206 | this.PacketQueue.Enqueue(item); | 207 | PacketQueue.Enqueue(item); |
207 | } | 208 | } |
208 | |||
209 | } | 209 | } |
210 | 210 | ||
211 | public virtual void OutPacket(Packet NewPack) | 211 | public virtual void OutPacket(Packet NewPack) |
@@ -213,7 +213,7 @@ namespace OpenSim.Region.ClientStack | |||
213 | QueItem item = new QueItem(); | 213 | QueItem item = new QueItem(); |
214 | item.Packet = NewPack; | 214 | item.Packet = NewPack; |
215 | item.Incoming = false; | 215 | item.Incoming = false; |
216 | this.PacketQueue.Enqueue(item); | 216 | PacketQueue.Enqueue(item); |
217 | } | 217 | } |
218 | 218 | ||
219 | # region Low Level Packet Methods | 219 | # region Low Level Packet Methods |
@@ -229,7 +229,6 @@ namespace OpenSim.Region.ClientStack | |||
229 | ack_it.Header.Reliable = false; | 229 | ack_it.Header.Reliable = false; |
230 | 230 | ||
231 | OutPacket(ack_it); | 231 | OutPacket(ack_it); |
232 | |||
233 | } | 232 | } |
234 | /* | 233 | /* |
235 | if (Pack.Header.Reliable) | 234 | if (Pack.Header.Reliable) |
@@ -252,8 +251,8 @@ namespace OpenSim.Region.ClientStack | |||
252 | { | 251 | { |
253 | if ((now - packet.TickCount > RESEND_TIMEOUT) && (!packet.Header.Resent)) | 252 | if ((now - packet.TickCount > RESEND_TIMEOUT) && (!packet.Header.Resent)) |
254 | { | 253 | { |
255 | MainLog.Instance.Verbose( "Resending " + packet.Type.ToString() + " packet, " + | 254 | MainLog.Instance.Verbose("Resending " + packet.Type.ToString() + " packet, " + |
256 | (now - packet.TickCount) + "ms have passed"); | 255 | (now - packet.TickCount) + "ms have passed"); |
257 | 256 | ||
258 | packet.Header.Resent = true; | 257 | packet.Header.Resent = true; |
259 | OutPacket(packet); | 258 | OutPacket(packet); |
@@ -271,7 +270,7 @@ namespace OpenSim.Region.ClientStack | |||
271 | if (PendingAcks.Count > 250) | 270 | if (PendingAcks.Count > 250) |
272 | { | 271 | { |
273 | // FIXME: Handle the odd case where we have too many pending ACKs queued up | 272 | // FIXME: Handle the odd case where we have too many pending ACKs queued up |
274 | MainLog.Instance.Verbose( "Too many ACKs queued up!"); | 273 | MainLog.Instance.Verbose("Too many ACKs queued up!"); |
275 | return; | 274 | return; |
276 | } | 275 | } |
277 | 276 | ||
@@ -302,6 +301,7 @@ namespace OpenSim.Region.ClientStack | |||
302 | SendAcks(); | 301 | SendAcks(); |
303 | ResendUnacked(); | 302 | ResendUnacked(); |
304 | } | 303 | } |
304 | |||
305 | #endregion | 305 | #endregion |
306 | 306 | ||
307 | #region Nested Classes | 307 | #region Nested Classes |
@@ -315,6 +315,7 @@ namespace OpenSim.Region.ClientStack | |||
315 | public Packet Packet; | 315 | public Packet Packet; |
316 | public bool Incoming; | 316 | public bool Incoming; |
317 | } | 317 | } |
318 | |||
318 | #endregion | 319 | #endregion |
319 | } | 320 | } |
320 | } | 321 | } \ No newline at end of file |
diff --git a/OpenSim/Region/ClientStack/ClientView.ProcessPackets.cs b/OpenSim/Region/ClientStack/ClientView.ProcessPackets.cs index 13e8b43..dd2562c 100644 --- a/OpenSim/Region/ClientStack/ClientView.ProcessPackets.cs +++ b/OpenSim/Region/ClientStack/ClientView.ProcessPackets.cs | |||
@@ -31,8 +31,6 @@ using System.Text; | |||
31 | using libsecondlife; | 31 | using libsecondlife; |
32 | using libsecondlife.Packets; | 32 | using libsecondlife.Packets; |
33 | using OpenSim.Framework; | 33 | using OpenSim.Framework; |
34 | using OpenSim.Framework.Interfaces; | ||
35 | using OpenSim.Region.Environment.Scenes; | ||
36 | 34 | ||
37 | namespace OpenSim.Region.ClientStack | 35 | namespace OpenSim.Region.ClientStack |
38 | { | 36 | { |
@@ -63,7 +61,7 @@ namespace OpenSim.Region.ClientStack | |||
63 | { | 61 | { |
64 | ack_pack(Pack); | 62 | ack_pack(Pack); |
65 | 63 | ||
66 | if (this.ProcessPacketMethod(Pack)) | 64 | if (ProcessPacketMethod(Pack)) |
67 | { | 65 | { |
68 | //there is a handler registered that handled this packet type | 66 | //there is a handler registered that handled this packet type |
69 | return; | 67 | return; |
@@ -74,16 +72,17 @@ namespace OpenSim.Region.ClientStack | |||
74 | 72 | ||
75 | switch (Pack.Type) | 73 | switch (Pack.Type) |
76 | { | 74 | { |
77 | #region Scene/Avatar | 75 | #region Scene/Avatar |
76 | |||
78 | case PacketType.AvatarPropertiesRequest: | 77 | case PacketType.AvatarPropertiesRequest: |
79 | AvatarPropertiesRequestPacket avatarProperties = (AvatarPropertiesRequestPacket)Pack; | 78 | AvatarPropertiesRequestPacket avatarProperties = (AvatarPropertiesRequestPacket) Pack; |
80 | if (OnRequestAvatarProperties != null) | 79 | if (OnRequestAvatarProperties != null) |
81 | { | 80 | { |
82 | OnRequestAvatarProperties(this, avatarProperties.AgentData.AvatarID); | 81 | OnRequestAvatarProperties(this, avatarProperties.AgentData.AvatarID); |
83 | } | 82 | } |
84 | break; | 83 | break; |
85 | case PacketType.ChatFromViewer: | 84 | case PacketType.ChatFromViewer: |
86 | ChatFromViewerPacket inchatpack = (ChatFromViewerPacket)Pack; | 85 | ChatFromViewerPacket inchatpack = (ChatFromViewerPacket) Pack; |
87 | if (Util.FieldToString(inchatpack.ChatData.Message) == "") | 86 | if (Util.FieldToString(inchatpack.ChatData.Message) == "") |
88 | { | 87 | { |
89 | //empty message so don't bother with it | 88 | //empty message so don't bother with it |
@@ -103,30 +102,32 @@ namespace OpenSim.Region.ClientStack | |||
103 | args.Channel = channel; | 102 | args.Channel = channel; |
104 | args.From = fromName; | 103 | args.From = fromName; |
105 | args.Message = Util.FieldToString(message); | 104 | args.Message = Util.FieldToString(message); |
106 | args.Type = (ChatTypeEnum)type; | 105 | args.Type = (ChatTypeEnum) type; |
107 | args.Position = fromPos; | 106 | args.Position = fromPos; |
108 | 107 | ||
109 | args.Scene = Scene; | 108 | args.Scene = Scene; |
110 | args.Sender = this; | 109 | args.Sender = this; |
111 | 110 | ||
112 | this.OnChatFromViewer(this, args); | 111 | OnChatFromViewer(this, args); |
113 | } | 112 | } |
114 | break; | 113 | break; |
115 | case PacketType.ImprovedInstantMessage: | 114 | case PacketType.ImprovedInstantMessage: |
116 | ImprovedInstantMessagePacket msgpack = (ImprovedInstantMessagePacket)Pack; | 115 | ImprovedInstantMessagePacket msgpack = (ImprovedInstantMessagePacket) Pack; |
117 | string IMfromName = Util.FieldToString(msgpack.MessageBlock.FromAgentName); | 116 | string IMfromName = Util.FieldToString(msgpack.MessageBlock.FromAgentName); |
118 | string IMmessage = Util.FieldToString(msgpack.MessageBlock.Message); | 117 | string IMmessage = Util.FieldToString(msgpack.MessageBlock.Message); |
119 | if (OnInstantMessage != null) | 118 | if (OnInstantMessage != null) |
120 | { | 119 | { |
121 | this.OnInstantMessage(msgpack.AgentData.AgentID, msgpack.AgentData.SessionID, msgpack.MessageBlock.ToAgentID, msgpack.MessageBlock.ID, | 120 | OnInstantMessage(msgpack.AgentData.AgentID, msgpack.AgentData.SessionID, |
122 | msgpack.MessageBlock.Timestamp, IMfromName, IMmessage, msgpack.MessageBlock.Dialog); | 121 | msgpack.MessageBlock.ToAgentID, msgpack.MessageBlock.ID, |
122 | msgpack.MessageBlock.Timestamp, IMfromName, IMmessage, | ||
123 | msgpack.MessageBlock.Dialog); | ||
123 | } | 124 | } |
124 | break; | 125 | break; |
125 | case PacketType.RezObject: | 126 | case PacketType.RezObject: |
126 | RezObjectPacket rezPacket = (RezObjectPacket)Pack; | 127 | RezObjectPacket rezPacket = (RezObjectPacket) Pack; |
127 | if (OnRezObject != null) | 128 | if (OnRezObject != null) |
128 | { | 129 | { |
129 | this.OnRezObject(this, rezPacket.InventoryData.ItemID, rezPacket.RezData.RayEnd); | 130 | OnRezObject(this, rezPacket.InventoryData.ItemID, rezPacket.RezData.RayEnd); |
130 | } | 131 | } |
131 | break; | 132 | break; |
132 | case PacketType.DeRezObject: | 133 | case PacketType.DeRezObject: |
@@ -136,13 +137,15 @@ namespace OpenSim.Region.ClientStack | |||
136 | } | 137 | } |
137 | break; | 138 | break; |
138 | case PacketType.ModifyLand: | 139 | case PacketType.ModifyLand: |
139 | ModifyLandPacket modify = (ModifyLandPacket)Pack; | 140 | ModifyLandPacket modify = (ModifyLandPacket) Pack; |
140 | if (modify.ParcelData.Length > 0) | 141 | if (modify.ParcelData.Length > 0) |
141 | { | 142 | { |
142 | if (OnModifyTerrain != null) | 143 | if (OnModifyTerrain != null) |
143 | { | 144 | { |
144 | OnModifyTerrain(modify.ModifyBlock.Height, modify.ModifyBlock.Seconds, modify.ModifyBlock.BrushSize, | 145 | OnModifyTerrain(modify.ModifyBlock.Height, modify.ModifyBlock.Seconds, |
145 | modify.ModifyBlock.Action, modify.ParcelData[0].North, modify.ParcelData[0].West, this); | 146 | modify.ModifyBlock.BrushSize, |
147 | modify.ModifyBlock.Action, modify.ParcelData[0].North, | ||
148 | modify.ParcelData[0].West, this); | ||
146 | } | 149 | } |
147 | } | 150 | } |
148 | break; | 151 | break; |
@@ -164,7 +167,7 @@ namespace OpenSim.Region.ClientStack | |||
164 | break; | 167 | break; |
165 | case PacketType.AgentSetAppearance: | 168 | case PacketType.AgentSetAppearance: |
166 | //OpenSim.Framework.Console.MainLog.Instance.Verbose("set appear", Pack.ToString()); | 169 | //OpenSim.Framework.Console.MainLog.Instance.Verbose("set appear", Pack.ToString()); |
167 | AgentSetAppearancePacket appear = (AgentSetAppearancePacket)Pack; | 170 | AgentSetAppearancePacket appear = (AgentSetAppearancePacket) Pack; |
168 | if (OnSetAppearance != null) | 171 | if (OnSetAppearance != null) |
169 | { | 172 | { |
170 | OnSetAppearance(appear.ObjectData.TextureEntry, appear.VisualParam); | 173 | OnSetAppearance(appear.ObjectData.TextureEntry, appear.VisualParam); |
@@ -179,17 +182,16 @@ namespace OpenSim.Region.ClientStack | |||
179 | case PacketType.AgentUpdate: | 182 | case PacketType.AgentUpdate: |
180 | if (OnAgentUpdate != null) | 183 | if (OnAgentUpdate != null) |
181 | { | 184 | { |
182 | AgentUpdatePacket agenUpdate = (AgentUpdatePacket)Pack; | 185 | AgentUpdatePacket agenUpdate = (AgentUpdatePacket) Pack; |
183 | OnAgentUpdate(this, agenUpdate.AgentData.ControlFlags, agenUpdate.AgentData.BodyRotation); | 186 | OnAgentUpdate(this, agenUpdate.AgentData.ControlFlags, agenUpdate.AgentData.BodyRotation); |
184 | } | 187 | } |
185 | break; | 188 | break; |
186 | case PacketType.AgentAnimation: | 189 | case PacketType.AgentAnimation: |
187 | AgentAnimationPacket AgentAni = (AgentAnimationPacket)Pack; | 190 | AgentAnimationPacket AgentAni = (AgentAnimationPacket) Pack; |
188 | for (int i = 0; i < AgentAni.AnimationList.Length; i++) | 191 | for (int i = 0; i < AgentAni.AnimationList.Length; i++) |
189 | { | 192 | { |
190 | if (AgentAni.AnimationList[i].StartAnim) | 193 | if (AgentAni.AnimationList[i].StartAnim) |
191 | { | 194 | { |
192 | |||
193 | if (OnStartAnim != null) | 195 | if (OnStartAnim != null) |
194 | { | 196 | { |
195 | OnStartAnim(this, AgentAni.AnimationList[i].AnimID, 1); | 197 | OnStartAnim(this, AgentAni.AnimationList[i].AnimID, 1); |
@@ -198,27 +200,29 @@ namespace OpenSim.Region.ClientStack | |||
198 | } | 200 | } |
199 | break; | 201 | break; |
200 | case PacketType.AgentRequestSit: | 202 | case PacketType.AgentRequestSit: |
201 | AgentRequestSitPacket agentRequestSit = (AgentRequestSitPacket)Pack; | 203 | AgentRequestSitPacket agentRequestSit = (AgentRequestSitPacket) Pack; |
202 | SendSitResponse(agentRequestSit.TargetObject.TargetID, agentRequestSit.TargetObject.Offset); | 204 | SendSitResponse(agentRequestSit.TargetObject.TargetID, agentRequestSit.TargetObject.Offset); |
203 | if (OnAgentRequestSit != null) | 205 | if (OnAgentRequestSit != null) |
204 | { | 206 | { |
205 | OnAgentRequestSit(this, agentRequestSit.AgentData.AgentID, agentRequestSit.TargetObject.TargetID); | 207 | OnAgentRequestSit(this, agentRequestSit.AgentData.AgentID, |
208 | agentRequestSit.TargetObject.TargetID); | ||
206 | } | 209 | } |
207 | break; | 210 | break; |
208 | case PacketType.AgentSit: | 211 | case PacketType.AgentSit: |
209 | if (OnAgentSit != null) | 212 | if (OnAgentSit != null) |
210 | { | 213 | { |
211 | AgentSitPacket agentSit = (AgentSitPacket)Pack; | 214 | AgentSitPacket agentSit = (AgentSitPacket) Pack; |
212 | OnAgentSit(this, agentSit.AgentData.AgentID); | 215 | OnAgentSit(this, agentSit.AgentData.AgentID); |
213 | } | 216 | } |
214 | break; | 217 | break; |
215 | 218 | ||
216 | #endregion | 219 | #endregion |
220 | |||
221 | #region Objects/m_sceneObjects | ||
217 | 222 | ||
218 | #region Objects/m_sceneObjects | ||
219 | case PacketType.ObjectLink: | 223 | case PacketType.ObjectLink: |
220 | // OpenSim.Framework.Console.MainLog.Instance.Verbose( Pack.ToString()); | 224 | // OpenSim.Framework.Console.MainLog.Instance.Verbose( Pack.ToString()); |
221 | ObjectLinkPacket link = (ObjectLinkPacket)Pack; | 225 | ObjectLinkPacket link = (ObjectLinkPacket) Pack; |
222 | uint parentprimid = 0; | 226 | uint parentprimid = 0; |
223 | List<uint> childrenprims = new List<uint>(); | 227 | List<uint> childrenprims = new List<uint>(); |
224 | if (link.ObjectData.Length > 1) | 228 | if (link.ObjectData.Length > 1) |
@@ -238,13 +242,13 @@ namespace OpenSim.Region.ClientStack | |||
238 | case PacketType.ObjectAdd: | 242 | case PacketType.ObjectAdd: |
239 | if (OnAddPrim != null) | 243 | if (OnAddPrim != null) |
240 | { | 244 | { |
241 | ObjectAddPacket addPacket = (ObjectAddPacket)Pack; | 245 | ObjectAddPacket addPacket = (ObjectAddPacket) Pack; |
242 | PrimitiveBaseShape shape = GetShapeFromAddPacket(addPacket); | 246 | PrimitiveBaseShape shape = GetShapeFromAddPacket(addPacket); |
243 | OnAddPrim(this.AgentId, addPacket.ObjectData.RayEnd, shape); | 247 | OnAddPrim(AgentId, addPacket.ObjectData.RayEnd, shape); |
244 | } | 248 | } |
245 | break; | 249 | break; |
246 | case PacketType.ObjectShape: | 250 | case PacketType.ObjectShape: |
247 | ObjectShapePacket shapePacket = (ObjectShapePacket)Pack; | 251 | ObjectShapePacket shapePacket = (ObjectShapePacket) Pack; |
248 | for (int i = 0; i < shapePacket.ObjectData.Length; i++) | 252 | for (int i = 0; i < shapePacket.ObjectData.Length; i++) |
249 | { | 253 | { |
250 | if (OnUpdatePrimShape != null) | 254 | if (OnUpdatePrimShape != null) |
@@ -254,26 +258,28 @@ namespace OpenSim.Region.ClientStack | |||
254 | } | 258 | } |
255 | break; | 259 | break; |
256 | case PacketType.ObjectExtraParams: | 260 | case PacketType.ObjectExtraParams: |
257 | ObjectExtraParamsPacket extraPar = (ObjectExtraParamsPacket)Pack; | 261 | ObjectExtraParamsPacket extraPar = (ObjectExtraParamsPacket) Pack; |
258 | if (OnUpdateExtraParams != null) | 262 | if (OnUpdateExtraParams != null) |
259 | { | 263 | { |
260 | OnUpdateExtraParams(extraPar.ObjectData[0].ObjectLocalID, extraPar.ObjectData[0].ParamType, extraPar.ObjectData[0].ParamInUse, extraPar.ObjectData[0].ParamData); | 264 | OnUpdateExtraParams(extraPar.ObjectData[0].ObjectLocalID, extraPar.ObjectData[0].ParamType, |
265 | extraPar.ObjectData[0].ParamInUse, extraPar.ObjectData[0].ParamData); | ||
261 | } | 266 | } |
262 | break; | 267 | break; |
263 | case PacketType.ObjectDuplicate: | 268 | case PacketType.ObjectDuplicate: |
264 | ObjectDuplicatePacket dupe = (ObjectDuplicatePacket)Pack; | 269 | ObjectDuplicatePacket dupe = (ObjectDuplicatePacket) Pack; |
265 | for (int i = 0; i < dupe.ObjectData.Length; i++) | 270 | for (int i = 0; i < dupe.ObjectData.Length; i++) |
266 | { | 271 | { |
267 | if (OnObjectDuplicate != null) | 272 | if (OnObjectDuplicate != null) |
268 | { | 273 | { |
269 | OnObjectDuplicate(dupe.ObjectData[i].ObjectLocalID, dupe.SharedData.Offset, dupe.SharedData.DuplicateFlags); | 274 | OnObjectDuplicate(dupe.ObjectData[i].ObjectLocalID, dupe.SharedData.Offset, |
275 | dupe.SharedData.DuplicateFlags); | ||
270 | } | 276 | } |
271 | } | 277 | } |
272 | 278 | ||
273 | break; | 279 | break; |
274 | 280 | ||
275 | case PacketType.ObjectSelect: | 281 | case PacketType.ObjectSelect: |
276 | ObjectSelectPacket incomingselect = (ObjectSelectPacket)Pack; | 282 | ObjectSelectPacket incomingselect = (ObjectSelectPacket) Pack; |
277 | for (int i = 0; i < incomingselect.ObjectData.Length; i++) | 283 | for (int i = 0; i < incomingselect.ObjectData.Length; i++) |
278 | { | 284 | { |
279 | if (OnObjectSelect != null) | 285 | if (OnObjectSelect != null) |
@@ -283,7 +289,7 @@ namespace OpenSim.Region.ClientStack | |||
283 | } | 289 | } |
284 | break; | 290 | break; |
285 | case PacketType.ObjectDeselect: | 291 | case PacketType.ObjectDeselect: |
286 | ObjectDeselectPacket incomingdeselect = (ObjectDeselectPacket)Pack; | 292 | ObjectDeselectPacket incomingdeselect = (ObjectDeselectPacket) Pack; |
287 | for (int i = 0; i < incomingdeselect.ObjectData.Length; i++) | 293 | for (int i = 0; i < incomingdeselect.ObjectData.Length; i++) |
288 | { | 294 | { |
289 | if (OnObjectDeselect != null) | 295 | if (OnObjectDeselect != null) |
@@ -293,55 +299,58 @@ namespace OpenSim.Region.ClientStack | |||
293 | } | 299 | } |
294 | break; | 300 | break; |
295 | case PacketType.ObjectFlagUpdate: | 301 | case PacketType.ObjectFlagUpdate: |
296 | ObjectFlagUpdatePacket flags = (ObjectFlagUpdatePacket)Pack; | 302 | ObjectFlagUpdatePacket flags = (ObjectFlagUpdatePacket) Pack; |
297 | if (OnUpdatePrimFlags != null) | 303 | if (OnUpdatePrimFlags != null) |
298 | { | 304 | { |
299 | OnUpdatePrimFlags(flags.AgentData.ObjectLocalID, Pack, this); | 305 | OnUpdatePrimFlags(flags.AgentData.ObjectLocalID, Pack, this); |
300 | } | 306 | } |
301 | break; | 307 | break; |
302 | case PacketType.ObjectImage: | 308 | case PacketType.ObjectImage: |
303 | ObjectImagePacket imagePack = (ObjectImagePacket)Pack; | 309 | ObjectImagePacket imagePack = (ObjectImagePacket) Pack; |
304 | for (int i = 0; i < imagePack.ObjectData.Length; i++) | 310 | for (int i = 0; i < imagePack.ObjectData.Length; i++) |
305 | { | 311 | { |
306 | if (OnUpdatePrimTexture != null) | 312 | if (OnUpdatePrimTexture != null) |
307 | { | 313 | { |
308 | OnUpdatePrimTexture(imagePack.ObjectData[i].ObjectLocalID, imagePack.ObjectData[i].TextureEntry, this); | 314 | OnUpdatePrimTexture(imagePack.ObjectData[i].ObjectLocalID, |
315 | imagePack.ObjectData[i].TextureEntry, this); | ||
309 | } | 316 | } |
310 | } | 317 | } |
311 | break; | 318 | break; |
312 | case PacketType.ObjectGrab: | 319 | case PacketType.ObjectGrab: |
313 | ObjectGrabPacket grab = (ObjectGrabPacket)Pack; | 320 | ObjectGrabPacket grab = (ObjectGrabPacket) Pack; |
314 | if (OnGrabObject != null) | 321 | if (OnGrabObject != null) |
315 | { | 322 | { |
316 | OnGrabObject(grab.ObjectData.LocalID, grab.ObjectData.GrabOffset, this); | 323 | OnGrabObject(grab.ObjectData.LocalID, grab.ObjectData.GrabOffset, this); |
317 | } | 324 | } |
318 | break; | 325 | break; |
319 | case PacketType.ObjectGrabUpdate: | 326 | case PacketType.ObjectGrabUpdate: |
320 | ObjectGrabUpdatePacket grabUpdate = (ObjectGrabUpdatePacket)Pack; | 327 | ObjectGrabUpdatePacket grabUpdate = (ObjectGrabUpdatePacket) Pack; |
321 | if (OnGrabUpdate != null) | 328 | if (OnGrabUpdate != null) |
322 | { | 329 | { |
323 | OnGrabUpdate(grabUpdate.ObjectData.ObjectID, grabUpdate.ObjectData.GrabOffsetInitial, grabUpdate.ObjectData.GrabPosition, this); | 330 | OnGrabUpdate(grabUpdate.ObjectData.ObjectID, grabUpdate.ObjectData.GrabOffsetInitial, |
331 | grabUpdate.ObjectData.GrabPosition, this); | ||
324 | } | 332 | } |
325 | break; | 333 | break; |
326 | case PacketType.ObjectDeGrab: | 334 | case PacketType.ObjectDeGrab: |
327 | ObjectDeGrabPacket deGrab = (ObjectDeGrabPacket)Pack; | 335 | ObjectDeGrabPacket deGrab = (ObjectDeGrabPacket) Pack; |
328 | if (OnDeGrabObject != null) | 336 | if (OnDeGrabObject != null) |
329 | { | 337 | { |
330 | OnDeGrabObject(deGrab.ObjectData.LocalID, this); | 338 | OnDeGrabObject(deGrab.ObjectData.LocalID, this); |
331 | } | 339 | } |
332 | break; | 340 | break; |
333 | case PacketType.ObjectDescription: | 341 | case PacketType.ObjectDescription: |
334 | ObjectDescriptionPacket objDes = (ObjectDescriptionPacket)Pack; | 342 | ObjectDescriptionPacket objDes = (ObjectDescriptionPacket) Pack; |
335 | for (int i = 0; i < objDes.ObjectData.Length; i++) | 343 | for (int i = 0; i < objDes.ObjectData.Length; i++) |
336 | { | 344 | { |
337 | if (OnObjectDescription != null) | 345 | if (OnObjectDescription != null) |
338 | { | 346 | { |
339 | OnObjectDescription(objDes.ObjectData[i].LocalID, enc.GetString(objDes.ObjectData[i].Description)); | 347 | OnObjectDescription(objDes.ObjectData[i].LocalID, |
348 | enc.GetString(objDes.ObjectData[i].Description)); | ||
340 | } | 349 | } |
341 | } | 350 | } |
342 | break; | 351 | break; |
343 | case PacketType.ObjectName: | 352 | case PacketType.ObjectName: |
344 | ObjectNamePacket objName = (ObjectNamePacket)Pack; | 353 | ObjectNamePacket objName = (ObjectNamePacket) Pack; |
345 | for (int i = 0; i < objName.ObjectData.Length; i++) | 354 | for (int i = 0; i < objName.ObjectData.Length; i++) |
346 | { | 355 | { |
347 | if (OnObjectName != null) | 356 | if (OnObjectName != null) |
@@ -353,15 +362,16 @@ namespace OpenSim.Region.ClientStack | |||
353 | case PacketType.ObjectPermissions: | 362 | case PacketType.ObjectPermissions: |
354 | //Console.WriteLine("permissions set " + Pack.ToString()); | 363 | //Console.WriteLine("permissions set " + Pack.ToString()); |
355 | break; | 364 | break; |
356 | #endregion | ||
357 | 365 | ||
358 | #region Inventory/Asset/Other related packets | 366 | #endregion |
367 | |||
368 | #region Inventory/Asset/Other related packets | ||
369 | |||
359 | case PacketType.RequestImage: | 370 | case PacketType.RequestImage: |
360 | RequestImagePacket imageRequest = (RequestImagePacket)Pack; | 371 | RequestImagePacket imageRequest = (RequestImagePacket) Pack; |
361 | //Console.WriteLine("image request: " + Pack.ToString()); | 372 | //Console.WriteLine("image request: " + Pack.ToString()); |
362 | for (int i = 0; i < imageRequest.RequestImage.Length; i++) | 373 | for (int i = 0; i < imageRequest.RequestImage.Length; i++) |
363 | { | 374 | { |
364 | |||
365 | // still working on the Texture download module so for now using old method | 375 | // still working on the Texture download module so for now using old method |
366 | // TextureRequestArgs args = new TextureRequestArgs(); | 376 | // TextureRequestArgs args = new TextureRequestArgs(); |
367 | // args.RequestedAssetID = imageRequest.RequestImage[i].Image; | 377 | // args.RequestedAssetID = imageRequest.RequestImage[i].Image; |
@@ -373,86 +383,104 @@ namespace OpenSim.Region.ClientStack | |||
373 | // OnRequestTexture(this, args); | 383 | // OnRequestTexture(this, args); |
374 | // } | 384 | // } |
375 | 385 | ||
376 | m_assetCache.AddTextureRequest(this, imageRequest.RequestImage[i].Image, imageRequest.RequestImage[i].Packet, imageRequest.RequestImage[i].DiscardLevel); | 386 | m_assetCache.AddTextureRequest(this, imageRequest.RequestImage[i].Image, |
387 | imageRequest.RequestImage[i].Packet, | ||
388 | imageRequest.RequestImage[i].DiscardLevel); | ||
377 | } | 389 | } |
378 | break; | 390 | break; |
379 | case PacketType.TransferRequest: | 391 | case PacketType.TransferRequest: |
380 | //Console.WriteLine("OpenSimClient.cs:ProcessInPacket() - Got transfer request"); | 392 | //Console.WriteLine("OpenSimClient.cs:ProcessInPacket() - Got transfer request"); |
381 | TransferRequestPacket transfer = (TransferRequestPacket)Pack; | 393 | TransferRequestPacket transfer = (TransferRequestPacket) Pack; |
382 | m_assetCache.AddAssetRequest(this, transfer); | 394 | m_assetCache.AddAssetRequest(this, transfer); |
383 | break; | 395 | break; |
384 | case PacketType.AssetUploadRequest: | 396 | case PacketType.AssetUploadRequest: |
385 | AssetUploadRequestPacket request = (AssetUploadRequestPacket)Pack; | 397 | AssetUploadRequestPacket request = (AssetUploadRequestPacket) Pack; |
386 | // Console.WriteLine("upload request " + Pack.ToString()); | 398 | // Console.WriteLine("upload request " + Pack.ToString()); |
387 | // Console.WriteLine("upload request was for assetid: " + request.AssetBlock.TransactionID.Combine(this.SecureSessionID).ToStringHyphenated()); | 399 | // Console.WriteLine("upload request was for assetid: " + request.AssetBlock.TransactionID.Combine(this.SecureSessionID).ToStringHyphenated()); |
388 | if (OnAssetUploadRequest != null) | 400 | if (OnAssetUploadRequest != null) |
389 | { | 401 | { |
390 | OnAssetUploadRequest(this, request.AssetBlock.TransactionID.Combine(this.SecureSessionID), request.AssetBlock.TransactionID, request.AssetBlock.Type, request.AssetBlock.AssetData, request.AssetBlock.StoreLocal); | 402 | OnAssetUploadRequest(this, request.AssetBlock.TransactionID.Combine(SecureSessionID), |
403 | request.AssetBlock.TransactionID, request.AssetBlock.Type, | ||
404 | request.AssetBlock.AssetData, request.AssetBlock.StoreLocal); | ||
391 | } | 405 | } |
392 | break; | 406 | break; |
393 | case PacketType.RequestXfer: | 407 | case PacketType.RequestXfer: |
394 | RequestXferPacket xferReq = (RequestXferPacket)Pack; | 408 | RequestXferPacket xferReq = (RequestXferPacket) Pack; |
395 | if (OnRequestXfer != null) | 409 | if (OnRequestXfer != null) |
396 | { | 410 | { |
397 | OnRequestXfer(this, xferReq.XferID.ID, Util.FieldToString(xferReq.XferID.Filename)); | 411 | OnRequestXfer(this, xferReq.XferID.ID, Util.FieldToString(xferReq.XferID.Filename)); |
398 | } | 412 | } |
399 | break; | 413 | break; |
400 | case PacketType.SendXferPacket: | 414 | case PacketType.SendXferPacket: |
401 | SendXferPacketPacket xferRec = (SendXferPacketPacket)Pack; | 415 | SendXferPacketPacket xferRec = (SendXferPacketPacket) Pack; |
402 | if (OnXferReceive != null) | 416 | if (OnXferReceive != null) |
403 | { | 417 | { |
404 | OnXferReceive(this, xferRec.XferID.ID, xferRec.XferID.Packet, xferRec.DataPacket.Data); | 418 | OnXferReceive(this, xferRec.XferID.ID, xferRec.XferID.Packet, xferRec.DataPacket.Data); |
405 | } | 419 | } |
406 | break; | 420 | break; |
407 | case PacketType.ConfirmXferPacket: | 421 | case PacketType.ConfirmXferPacket: |
408 | ConfirmXferPacketPacket confirmXfer = (ConfirmXferPacketPacket)Pack; | 422 | ConfirmXferPacketPacket confirmXfer = (ConfirmXferPacketPacket) Pack; |
409 | if (OnConfirmXfer != null) | 423 | if (OnConfirmXfer != null) |
410 | { | 424 | { |
411 | OnConfirmXfer(this, confirmXfer.XferID.ID, confirmXfer.XferID.Packet); | 425 | OnConfirmXfer(this, confirmXfer.XferID.ID, confirmXfer.XferID.Packet); |
412 | } | 426 | } |
413 | break; | 427 | break; |
414 | case PacketType.CreateInventoryFolder: | 428 | case PacketType.CreateInventoryFolder: |
415 | if (this.OnCreateNewInventoryFolder != null) | 429 | if (OnCreateNewInventoryFolder != null) |
416 | { | 430 | { |
417 | CreateInventoryFolderPacket invFolder = (CreateInventoryFolderPacket)Pack; | 431 | CreateInventoryFolderPacket invFolder = (CreateInventoryFolderPacket) Pack; |
418 | this.OnCreateNewInventoryFolder(this, invFolder.FolderData.FolderID, (ushort)invFolder.FolderData.Type, Util.FieldToString(invFolder.FolderData.Name), invFolder.FolderData.ParentID); | 432 | OnCreateNewInventoryFolder(this, invFolder.FolderData.FolderID, |
433 | (ushort) invFolder.FolderData.Type, | ||
434 | Util.FieldToString(invFolder.FolderData.Name), | ||
435 | invFolder.FolderData.ParentID); | ||
419 | } | 436 | } |
420 | break; | 437 | break; |
421 | case PacketType.CreateInventoryItem: | 438 | case PacketType.CreateInventoryItem: |
422 | CreateInventoryItemPacket createItem = (CreateInventoryItemPacket)Pack; | 439 | CreateInventoryItemPacket createItem = (CreateInventoryItemPacket) Pack; |
423 | if (this.OnCreateNewInventoryItem != null) | 440 | if (OnCreateNewInventoryItem != null) |
424 | { | 441 | { |
425 | this.OnCreateNewInventoryItem(this, createItem.InventoryBlock.TransactionID, createItem.InventoryBlock.FolderID, createItem.InventoryBlock.CallbackID, | 442 | OnCreateNewInventoryItem(this, createItem.InventoryBlock.TransactionID, |
426 | Util.FieldToString(createItem.InventoryBlock.Description), Util.FieldToString(createItem.InventoryBlock.Name), createItem.InventoryBlock.InvType, | 443 | createItem.InventoryBlock.FolderID, |
427 | createItem.InventoryBlock.Type, createItem.InventoryBlock.WearableType, createItem.InventoryBlock.NextOwnerMask); | 444 | createItem.InventoryBlock.CallbackID, |
445 | Util.FieldToString(createItem.InventoryBlock.Description), | ||
446 | Util.FieldToString(createItem.InventoryBlock.Name), | ||
447 | createItem.InventoryBlock.InvType, | ||
448 | createItem.InventoryBlock.Type, | ||
449 | createItem.InventoryBlock.WearableType, | ||
450 | createItem.InventoryBlock.NextOwnerMask); | ||
428 | } | 451 | } |
429 | break; | 452 | break; |
430 | case PacketType.FetchInventory: | 453 | case PacketType.FetchInventory: |
431 | if (this.OnFetchInventory != null) | 454 | if (OnFetchInventory != null) |
432 | { | 455 | { |
433 | FetchInventoryPacket FetchInventory = (FetchInventoryPacket)Pack; | 456 | FetchInventoryPacket FetchInventory = (FetchInventoryPacket) Pack; |
434 | for (int i = 0; i < FetchInventory.InventoryData.Length; i++) | 457 | for (int i = 0; i < FetchInventory.InventoryData.Length; i++) |
435 | { | 458 | { |
436 | this.OnFetchInventory(this, FetchInventory.InventoryData[i].ItemID, FetchInventory.InventoryData[i].OwnerID); | 459 | OnFetchInventory(this, FetchInventory.InventoryData[i].ItemID, |
460 | FetchInventory.InventoryData[i].OwnerID); | ||
437 | } | 461 | } |
438 | } | 462 | } |
439 | break; | 463 | break; |
440 | case PacketType.FetchInventoryDescendents: | 464 | case PacketType.FetchInventoryDescendents: |
441 | if (this.OnFetchInventoryDescendents != null) | 465 | if (OnFetchInventoryDescendents != null) |
442 | { | 466 | { |
443 | FetchInventoryDescendentsPacket Fetch = (FetchInventoryDescendentsPacket)Pack; | 467 | FetchInventoryDescendentsPacket Fetch = (FetchInventoryDescendentsPacket) Pack; |
444 | this.OnFetchInventoryDescendents(this, Fetch.InventoryData.FolderID, Fetch.InventoryData.OwnerID, Fetch.InventoryData.FetchFolders, Fetch.InventoryData.FetchItems, Fetch.InventoryData.SortOrder); | 468 | OnFetchInventoryDescendents(this, Fetch.InventoryData.FolderID, Fetch.InventoryData.OwnerID, |
469 | Fetch.InventoryData.FetchFolders, Fetch.InventoryData.FetchItems, | ||
470 | Fetch.InventoryData.SortOrder); | ||
445 | } | 471 | } |
446 | break; | 472 | break; |
447 | case PacketType.UpdateInventoryItem: | 473 | case PacketType.UpdateInventoryItem: |
448 | UpdateInventoryItemPacket update = (UpdateInventoryItemPacket)Pack; | 474 | UpdateInventoryItemPacket update = (UpdateInventoryItemPacket) Pack; |
449 | if (OnUpdateInventoryItem != null) | 475 | if (OnUpdateInventoryItem != null) |
450 | { | 476 | { |
451 | for (int i = 0; i < update.InventoryData.Length; i++) | 477 | for (int i = 0; i < update.InventoryData.Length; i++) |
452 | { | 478 | { |
453 | if (update.InventoryData[i].TransactionID != LLUUID.Zero) | 479 | if (update.InventoryData[i].TransactionID != LLUUID.Zero) |
454 | { | 480 | { |
455 | OnUpdateInventoryItem(this, update.InventoryData[i].TransactionID, update.InventoryData[i].TransactionID.Combine(this.SecureSessionID), update.InventoryData[i].ItemID); | 481 | OnUpdateInventoryItem(this, update.InventoryData[i].TransactionID, |
482 | update.InventoryData[i].TransactionID.Combine(SecureSessionID), | ||
483 | update.InventoryData[i].ItemID); | ||
456 | } | 484 | } |
457 | } | 485 | } |
458 | } | 486 | } |
@@ -488,25 +516,26 @@ namespace OpenSim.Region.ClientStack | |||
488 | }*/ | 516 | }*/ |
489 | break; | 517 | break; |
490 | case PacketType.RequestTaskInventory: | 518 | case PacketType.RequestTaskInventory: |
491 | RequestTaskInventoryPacket requesttask = (RequestTaskInventoryPacket)Pack; | 519 | RequestTaskInventoryPacket requesttask = (RequestTaskInventoryPacket) Pack; |
492 | if (this.OnRequestTaskInventory != null) | 520 | if (OnRequestTaskInventory != null) |
493 | { | 521 | { |
494 | this.OnRequestTaskInventory(this, requesttask.InventoryData.LocalID); | 522 | OnRequestTaskInventory(this, requesttask.InventoryData.LocalID); |
495 | } | 523 | } |
496 | break; | 524 | break; |
497 | case PacketType.UpdateTaskInventory: | 525 | case PacketType.UpdateTaskInventory: |
498 | //Console.WriteLine(Pack.ToString()); | 526 | //Console.WriteLine(Pack.ToString()); |
499 | UpdateTaskInventoryPacket updatetask = (UpdateTaskInventoryPacket)Pack; | 527 | UpdateTaskInventoryPacket updatetask = (UpdateTaskInventoryPacket) Pack; |
500 | if (OnUpdateTaskInventory != null) | 528 | if (OnUpdateTaskInventory != null) |
501 | { | 529 | { |
502 | if (updatetask.UpdateData.Key == 0) | 530 | if (updatetask.UpdateData.Key == 0) |
503 | { | 531 | { |
504 | OnUpdateTaskInventory(this, updatetask.InventoryData.ItemID, updatetask.InventoryData.FolderID, updatetask.UpdateData.LocalID); | 532 | OnUpdateTaskInventory(this, updatetask.InventoryData.ItemID, |
533 | updatetask.InventoryData.FolderID, updatetask.UpdateData.LocalID); | ||
505 | } | 534 | } |
506 | } | 535 | } |
507 | break; | 536 | break; |
508 | case PacketType.RemoveTaskInventory: | 537 | case PacketType.RemoveTaskInventory: |
509 | RemoveTaskInventoryPacket removeTask = (RemoveTaskInventoryPacket)Pack; | 538 | RemoveTaskInventoryPacket removeTask = (RemoveTaskInventoryPacket) Pack; |
510 | if (OnRemoveTaskItem != null) | 539 | if (OnRemoveTaskItem != null) |
511 | { | 540 | { |
512 | OnRemoveTaskItem(this, removeTask.InventoryData.ItemID, removeTask.InventoryData.LocalID); | 541 | OnRemoveTaskItem(this, removeTask.InventoryData.ItemID, removeTask.InventoryData.LocalID); |
@@ -517,38 +546,39 @@ namespace OpenSim.Region.ClientStack | |||
517 | break; | 546 | break; |
518 | case PacketType.RezScript: | 547 | case PacketType.RezScript: |
519 | //Console.WriteLine(Pack.ToString()); | 548 | //Console.WriteLine(Pack.ToString()); |
520 | RezScriptPacket rezScript = (RezScriptPacket)Pack; | 549 | RezScriptPacket rezScript = (RezScriptPacket) Pack; |
521 | if (OnRezScript != null) | 550 | if (OnRezScript != null) |
522 | { | 551 | { |
523 | OnRezScript(this, rezScript.InventoryBlock.ItemID, rezScript.UpdateBlock.ObjectLocalID); | 552 | OnRezScript(this, rezScript.InventoryBlock.ItemID, rezScript.UpdateBlock.ObjectLocalID); |
524 | } | 553 | } |
525 | break; | 554 | break; |
526 | case PacketType.MapLayerRequest: | 555 | case PacketType.MapLayerRequest: |
527 | this.RequestMapLayer(); | 556 | RequestMapLayer(); |
528 | break; | 557 | break; |
529 | case PacketType.MapBlockRequest: | 558 | case PacketType.MapBlockRequest: |
530 | MapBlockRequestPacket MapRequest = (MapBlockRequestPacket)Pack; | 559 | MapBlockRequestPacket MapRequest = (MapBlockRequestPacket) Pack; |
531 | if (OnRequestMapBlocks != null) | 560 | if (OnRequestMapBlocks != null) |
532 | { | 561 | { |
533 | OnRequestMapBlocks(this, MapRequest.PositionData.MinX, MapRequest.PositionData.MinY, MapRequest.PositionData.MaxX, MapRequest.PositionData.MaxY); | 562 | OnRequestMapBlocks(this, MapRequest.PositionData.MinX, MapRequest.PositionData.MinY, |
563 | MapRequest.PositionData.MaxX, MapRequest.PositionData.MaxY); | ||
534 | } | 564 | } |
535 | break; | 565 | break; |
536 | case PacketType.TeleportLandmarkRequest: | 566 | case PacketType.TeleportLandmarkRequest: |
537 | TeleportLandmarkRequestPacket tpReq = (TeleportLandmarkRequestPacket)Pack; | 567 | TeleportLandmarkRequestPacket tpReq = (TeleportLandmarkRequestPacket) Pack; |
538 | 568 | ||
539 | TeleportStartPacket tpStart = new TeleportStartPacket(); | 569 | TeleportStartPacket tpStart = new TeleportStartPacket(); |
540 | tpStart.Info.TeleportFlags = 8; // tp via lm | 570 | tpStart.Info.TeleportFlags = 8; // tp via lm |
541 | this.OutPacket(tpStart); | 571 | OutPacket(tpStart); |
542 | 572 | ||
543 | TeleportProgressPacket tpProgress = new TeleportProgressPacket(); | 573 | TeleportProgressPacket tpProgress = new TeleportProgressPacket(); |
544 | tpProgress.Info.Message = (new ASCIIEncoding()).GetBytes("sending_landmark"); | 574 | tpProgress.Info.Message = (new ASCIIEncoding()).GetBytes("sending_landmark"); |
545 | tpProgress.Info.TeleportFlags = 8; | 575 | tpProgress.Info.TeleportFlags = 8; |
546 | tpProgress.AgentData.AgentID = tpReq.Info.AgentID; | 576 | tpProgress.AgentData.AgentID = tpReq.Info.AgentID; |
547 | this.OutPacket(tpProgress); | 577 | OutPacket(tpProgress); |
548 | 578 | ||
549 | // Fetch landmark | 579 | // Fetch landmark |
550 | LLUUID lmid = tpReq.Info.LandmarkID; | 580 | LLUUID lmid = tpReq.Info.LandmarkID; |
551 | AssetBase lma = this.m_assetCache.GetAsset(lmid); | 581 | AssetBase lma = m_assetCache.GetAsset(lmid); |
552 | if (lma != null) | 582 | if (lma != null) |
553 | { | 583 | { |
554 | AssetLandmark lm = new AssetLandmark(lma); | 584 | AssetLandmark lm = new AssetLandmark(lma); |
@@ -558,7 +588,7 @@ namespace OpenSim.Region.ClientStack | |||
558 | TeleportLocalPacket tpLocal = new TeleportLocalPacket(); | 588 | TeleportLocalPacket tpLocal = new TeleportLocalPacket(); |
559 | 589 | ||
560 | tpLocal.Info.AgentID = tpReq.Info.AgentID; | 590 | tpLocal.Info.AgentID = tpReq.Info.AgentID; |
561 | tpLocal.Info.TeleportFlags = 8; // Teleport via landmark | 591 | tpLocal.Info.TeleportFlags = 8; // Teleport via landmark |
562 | tpLocal.Info.LocationID = 2; | 592 | tpLocal.Info.LocationID = 2; |
563 | tpLocal.Info.Position = lm.Position; | 593 | tpLocal.Info.Position = lm.Position; |
564 | OutPacket(tpLocal); | 594 | OutPacket(tpLocal); |
@@ -582,12 +612,13 @@ namespace OpenSim.Region.ClientStack | |||
582 | } | 612 | } |
583 | break; | 613 | break; |
584 | case PacketType.TeleportLocationRequest: | 614 | case PacketType.TeleportLocationRequest: |
585 | TeleportLocationRequestPacket tpLocReq = (TeleportLocationRequestPacket)Pack; | 615 | TeleportLocationRequestPacket tpLocReq = (TeleportLocationRequestPacket) Pack; |
586 | // Console.WriteLine(tpLocReq.ToString()); | 616 | // Console.WriteLine(tpLocReq.ToString()); |
587 | 617 | ||
588 | if (OnTeleportLocationRequest != null) | 618 | if (OnTeleportLocationRequest != null) |
589 | { | 619 | { |
590 | OnTeleportLocationRequest(this, tpLocReq.Info.RegionHandle, tpLocReq.Info.Position, tpLocReq.Info.LookAt, 16); | 620 | OnTeleportLocationRequest(this, tpLocReq.Info.RegionHandle, tpLocReq.Info.Position, |
621 | tpLocReq.Info.LookAt, 16); | ||
591 | } | 622 | } |
592 | else | 623 | else |
593 | { | 624 | { |
@@ -598,76 +629,94 @@ namespace OpenSim.Region.ClientStack | |||
598 | OutPacket(tpCancel); | 629 | OutPacket(tpCancel); |
599 | } | 630 | } |
600 | break; | 631 | break; |
601 | #endregion | 632 | |
633 | #endregion | ||
602 | 634 | ||
603 | case PacketType.MoneyBalanceRequest: | 635 | case PacketType.MoneyBalanceRequest: |
604 | SendMoneyBalance(LLUUID.Zero, true, new byte[0], MoneyBalance); | 636 | SendMoneyBalance(LLUUID.Zero, true, new byte[0], MoneyBalance); |
605 | break; | 637 | break; |
606 | case PacketType.UUIDNameRequest: | 638 | case PacketType.UUIDNameRequest: |
607 | UUIDNameRequestPacket incoming = (UUIDNameRequestPacket)Pack; | 639 | UUIDNameRequestPacket incoming = (UUIDNameRequestPacket) Pack; |
608 | foreach (UUIDNameRequestPacket.UUIDNameBlockBlock UUIDBlock in incoming.UUIDNameBlock) | 640 | foreach (UUIDNameRequestPacket.UUIDNameBlockBlock UUIDBlock in incoming.UUIDNameBlock) |
609 | { | 641 | { |
610 | OnNameFromUUIDRequest(UUIDBlock.ID, this); | 642 | OnNameFromUUIDRequest(UUIDBlock.ID, this); |
611 | } | 643 | } |
612 | break; | 644 | break; |
613 | #region Parcel related packets | 645 | |
646 | #region Parcel related packets | ||
647 | |||
614 | case PacketType.ParcelPropertiesRequest: | 648 | case PacketType.ParcelPropertiesRequest: |
615 | ParcelPropertiesRequestPacket propertiesRequest = (ParcelPropertiesRequestPacket)Pack; | 649 | ParcelPropertiesRequestPacket propertiesRequest = (ParcelPropertiesRequestPacket) Pack; |
616 | if (OnParcelPropertiesRequest != null) | 650 | if (OnParcelPropertiesRequest != null) |
617 | { | 651 | { |
618 | OnParcelPropertiesRequest((int)Math.Round(propertiesRequest.ParcelData.West), (int)Math.Round(propertiesRequest.ParcelData.South), (int)Math.Round(propertiesRequest.ParcelData.East), (int)Math.Round(propertiesRequest.ParcelData.North), propertiesRequest.ParcelData.SequenceID, propertiesRequest.ParcelData.SnapSelection, this); | 652 | OnParcelPropertiesRequest((int) Math.Round(propertiesRequest.ParcelData.West), |
653 | (int) Math.Round(propertiesRequest.ParcelData.South), | ||
654 | (int) Math.Round(propertiesRequest.ParcelData.East), | ||
655 | (int) Math.Round(propertiesRequest.ParcelData.North), | ||
656 | propertiesRequest.ParcelData.SequenceID, | ||
657 | propertiesRequest.ParcelData.SnapSelection, this); | ||
619 | } | 658 | } |
620 | break; | 659 | break; |
621 | case PacketType.ParcelDivide: | 660 | case PacketType.ParcelDivide: |
622 | ParcelDividePacket landDivide = (ParcelDividePacket)Pack; | 661 | ParcelDividePacket landDivide = (ParcelDividePacket) Pack; |
623 | if (OnParcelDivideRequest != null) | 662 | if (OnParcelDivideRequest != null) |
624 | { | 663 | { |
625 | OnParcelDivideRequest((int)Math.Round(landDivide.ParcelData.West), (int)Math.Round(landDivide.ParcelData.South), (int)Math.Round(landDivide.ParcelData.East), (int)Math.Round(landDivide.ParcelData.North), this); | 664 | OnParcelDivideRequest((int) Math.Round(landDivide.ParcelData.West), |
665 | (int) Math.Round(landDivide.ParcelData.South), | ||
666 | (int) Math.Round(landDivide.ParcelData.East), | ||
667 | (int) Math.Round(landDivide.ParcelData.North), this); | ||
626 | } | 668 | } |
627 | break; | 669 | break; |
628 | case PacketType.ParcelJoin: | 670 | case PacketType.ParcelJoin: |
629 | ParcelJoinPacket landJoin = (ParcelJoinPacket)Pack; | 671 | ParcelJoinPacket landJoin = (ParcelJoinPacket) Pack; |
630 | if (OnParcelJoinRequest != null) | 672 | if (OnParcelJoinRequest != null) |
631 | { | 673 | { |
632 | OnParcelJoinRequest((int)Math.Round(landJoin.ParcelData.West), (int)Math.Round(landJoin.ParcelData.South), (int)Math.Round(landJoin.ParcelData.East), (int)Math.Round(landJoin.ParcelData.North), this); | 674 | OnParcelJoinRequest((int) Math.Round(landJoin.ParcelData.West), |
675 | (int) Math.Round(landJoin.ParcelData.South), | ||
676 | (int) Math.Round(landJoin.ParcelData.East), | ||
677 | (int) Math.Round(landJoin.ParcelData.North), this); | ||
633 | } | 678 | } |
634 | break; | 679 | break; |
635 | case PacketType.ParcelPropertiesUpdate: | 680 | case PacketType.ParcelPropertiesUpdate: |
636 | ParcelPropertiesUpdatePacket updatePacket = (ParcelPropertiesUpdatePacket)Pack; | 681 | ParcelPropertiesUpdatePacket updatePacket = (ParcelPropertiesUpdatePacket) Pack; |
637 | if (OnParcelPropertiesUpdateRequest != null) | 682 | if (OnParcelPropertiesUpdateRequest != null) |
638 | { | 683 | { |
639 | OnParcelPropertiesUpdateRequest(updatePacket, this); | 684 | OnParcelPropertiesUpdateRequest(updatePacket, this); |
640 | |||
641 | } | 685 | } |
642 | break; | 686 | break; |
643 | case PacketType.ParcelSelectObjects: | 687 | case PacketType.ParcelSelectObjects: |
644 | ParcelSelectObjectsPacket selectPacket = (ParcelSelectObjectsPacket)Pack; | 688 | ParcelSelectObjectsPacket selectPacket = (ParcelSelectObjectsPacket) Pack; |
645 | if (OnParcelSelectObjects != null) | 689 | if (OnParcelSelectObjects != null) |
646 | { | 690 | { |
647 | OnParcelSelectObjects(selectPacket.ParcelData.LocalID, Convert.ToInt32(selectPacket.ParcelData.ReturnType), this); | 691 | OnParcelSelectObjects(selectPacket.ParcelData.LocalID, |
692 | Convert.ToInt32(selectPacket.ParcelData.ReturnType), this); | ||
648 | } | 693 | } |
649 | break; | 694 | break; |
650 | 695 | ||
651 | case PacketType.ParcelObjectOwnersRequest: | 696 | case PacketType.ParcelObjectOwnersRequest: |
652 | ParcelObjectOwnersRequestPacket reqPacket = (ParcelObjectOwnersRequestPacket)Pack; | 697 | ParcelObjectOwnersRequestPacket reqPacket = (ParcelObjectOwnersRequestPacket) Pack; |
653 | if (OnParcelObjectOwnerRequest != null) | 698 | if (OnParcelObjectOwnerRequest != null) |
654 | { | 699 | { |
655 | OnParcelObjectOwnerRequest(reqPacket.ParcelData.LocalID, this); | 700 | OnParcelObjectOwnerRequest(reqPacket.ParcelData.LocalID, this); |
656 | } | 701 | } |
657 | break; | 702 | break; |
658 | #endregion | ||
659 | 703 | ||
660 | #region Estate Packets | 704 | #endregion |
705 | |||
706 | #region Estate Packets | ||
707 | |||
661 | case PacketType.EstateOwnerMessage: | 708 | case PacketType.EstateOwnerMessage: |
662 | EstateOwnerMessagePacket messagePacket = (EstateOwnerMessagePacket)Pack; | 709 | EstateOwnerMessagePacket messagePacket = (EstateOwnerMessagePacket) Pack; |
663 | if (OnEstateOwnerMessage != null) | 710 | if (OnEstateOwnerMessage != null) |
664 | { | 711 | { |
665 | OnEstateOwnerMessage(messagePacket, this); | 712 | OnEstateOwnerMessage(messagePacket, this); |
666 | } | 713 | } |
667 | break; | 714 | break; |
668 | #endregion | ||
669 | 715 | ||
670 | #region unimplemented handlers | 716 | #endregion |
717 | |||
718 | #region unimplemented handlers | ||
719 | |||
671 | case PacketType.AgentIsNowWearing: | 720 | case PacketType.AgentIsNowWearing: |
672 | // AgentIsNowWearingPacket wear = (AgentIsNowWearingPacket)Pack; | 721 | // AgentIsNowWearingPacket wear = (AgentIsNowWearingPacket)Pack; |
673 | //Console.WriteLine(Pack.ToString()); | 722 | //Console.WriteLine(Pack.ToString()); |
@@ -675,7 +724,8 @@ namespace OpenSim.Region.ClientStack | |||
675 | case PacketType.ObjectScale: | 724 | case PacketType.ObjectScale: |
676 | //OpenSim.Framework.Console.MainLog.Instance.Verbose( Pack.ToString()); | 725 | //OpenSim.Framework.Console.MainLog.Instance.Verbose( Pack.ToString()); |
677 | break; | 726 | break; |
678 | #endregion | 727 | |
728 | #endregion | ||
679 | } | 729 | } |
680 | } | 730 | } |
681 | } | 731 | } |
@@ -721,4 +771,4 @@ namespace OpenSim.Region.ClientStack | |||
721 | OutPacket(logReply); | 771 | OutPacket(logReply); |
722 | } | 772 | } |
723 | } | 773 | } |
724 | } | 774 | } \ No newline at end of file |
diff --git a/OpenSim/Region/ClientStack/ClientView.cs b/OpenSim/Region/ClientStack/ClientView.cs index 6d49e34..55f50a4 100644 --- a/OpenSim/Region/ClientStack/ClientView.cs +++ b/OpenSim/Region/ClientStack/ClientView.cs | |||
@@ -36,7 +36,7 @@ using libsecondlife.Packets; | |||
36 | using OpenSim.Framework; | 36 | using OpenSim.Framework; |
37 | using OpenSim.Framework.Communications.Cache; | 37 | using OpenSim.Framework.Communications.Cache; |
38 | using OpenSim.Framework.Console; | 38 | using OpenSim.Framework.Console; |
39 | using Timer = System.Timers.Timer; | 39 | using Timer=System.Timers.Timer; |
40 | 40 | ||
41 | namespace OpenSim.Region.ClientStack | 41 | namespace OpenSim.Region.ClientStack |
42 | { | 42 | { |
@@ -50,8 +50,11 @@ namespace OpenSim.Region.ClientStack | |||
50 | { | 50 | { |
51 | public static TerrainManager TerrainManager; | 51 | public static TerrainManager TerrainManager; |
52 | 52 | ||
53 | protected static Dictionary<PacketType, PacketMethod> PacketHandlers = new Dictionary<PacketType, PacketMethod>(); //Global/static handlers for all clients | 53 | protected static Dictionary<PacketType, PacketMethod> PacketHandlers = |
54 | protected Dictionary<PacketType, PacketMethod> m_packetHandlers = new Dictionary<PacketType, PacketMethod>(); //local handlers for this instance | 54 | new Dictionary<PacketType, PacketMethod>(); //Global/static handlers for all clients |
55 | |||
56 | protected Dictionary<PacketType, PacketMethod> m_packetHandlers = new Dictionary<PacketType, PacketMethod>(); | ||
57 | //local handlers for this instance | ||
55 | 58 | ||
56 | private LLUUID m_sessionId; | 59 | private LLUUID m_sessionId; |
57 | public LLUUID SecureSessionID = LLUUID.Zero; | 60 | public LLUUID SecureSessionID = LLUUID.Zero; |
@@ -84,7 +87,9 @@ namespace OpenSim.Region.ClientStack | |||
84 | private int probesWithNoIngressPackets = 0; | 87 | private int probesWithNoIngressPackets = 0; |
85 | private int lastPacketsReceived = 0; | 88 | private int lastPacketsReceived = 0; |
86 | 89 | ||
87 | public ClientView(EndPoint remoteEP, UseCircuitCodePacket initialcirpack, ClientManager clientManager, IScene scene, AssetCache assetCache, PacketServer packServer, AgentCircuitManager authenSessions) | 90 | public ClientView(EndPoint remoteEP, UseCircuitCodePacket initialcirpack, ClientManager clientManager, |
91 | IScene scene, AssetCache assetCache, PacketServer packServer, | ||
92 | AgentCircuitManager authenSessions) | ||
88 | { | 93 | { |
89 | m_moneyBalance = 1000; | 94 | m_moneyBalance = 1000; |
90 | 95 | ||
@@ -96,11 +101,11 @@ namespace OpenSim.Region.ClientStack | |||
96 | // m_inventoryCache = inventoryCache; | 101 | // m_inventoryCache = inventoryCache; |
97 | m_authenticateSessionsHandler = authenSessions; | 102 | m_authenticateSessionsHandler = authenSessions; |
98 | 103 | ||
99 | MainLog.Instance.Verbose("CLIENT","Started up new client thread to handle incoming request"); | 104 | MainLog.Instance.Verbose("CLIENT", "Started up new client thread to handle incoming request"); |
100 | cirpack = initialcirpack; | 105 | cirpack = initialcirpack; |
101 | userEP = remoteEP; | 106 | userEP = remoteEP; |
102 | 107 | ||
103 | this.startpos = m_authenticateSessionsHandler.GetPosition(initialcirpack.CircuitCode.Code); | 108 | startpos = m_authenticateSessionsHandler.GetPosition(initialcirpack.CircuitCode.Code); |
104 | 109 | ||
105 | PacketQueue = new BlockingQueue<QueItem>(); | 110 | PacketQueue = new BlockingQueue<QueItem>(); |
106 | 111 | ||
@@ -109,7 +114,7 @@ namespace OpenSim.Region.ClientStack | |||
109 | AckTimer.Elapsed += new ElapsedEventHandler(AckTimer_Elapsed); | 114 | AckTimer.Elapsed += new ElapsedEventHandler(AckTimer_Elapsed); |
110 | AckTimer.Start(); | 115 | AckTimer.Start(); |
111 | 116 | ||
112 | this.RegisterLocalPacketHandlers(); | 117 | RegisterLocalPacketHandlers(); |
113 | 118 | ||
114 | ClientThread = new Thread(new ThreadStart(AuthUser)); | 119 | ClientThread = new Thread(new ThreadStart(AuthUser)); |
115 | ClientThread.IsBackground = true; | 120 | ClientThread.IsBackground = true; |
@@ -121,7 +126,7 @@ namespace OpenSim.Region.ClientStack | |||
121 | get { return m_sessionId; } | 126 | get { return m_sessionId; } |
122 | } | 127 | } |
123 | 128 | ||
124 | public void SetDebug(int newDebug) | 129 | public void SetDebug(int newDebug) |
125 | { | 130 | { |
126 | debug = newDebug; | 131 | debug = newDebug; |
127 | } | 132 | } |
@@ -132,14 +137,15 @@ namespace OpenSim.Region.ClientStack | |||
132 | { | 137 | { |
133 | clientPingTimer.Stop(); | 138 | clientPingTimer.Stop(); |
134 | 139 | ||
135 | m_scene.RemoveClient(this.AgentId); | 140 | m_scene.RemoveClient(AgentId); |
136 | 141 | ||
137 | this.ClientThread.Abort(); | 142 | ClientThread.Abort(); |
138 | } | 143 | } |
139 | 144 | ||
140 | #endregion | 145 | #endregion |
141 | 146 | ||
142 | # region Packet Handling | 147 | # region Packet Handling |
148 | |||
143 | public static bool AddPacketHandler(PacketType packetType, PacketMethod handler) | 149 | public static bool AddPacketHandler(PacketType packetType, PacketMethod handler) |
144 | { | 150 | { |
145 | bool result = false; | 151 | bool result = false; |
@@ -195,23 +201,27 @@ namespace OpenSim.Region.ClientStack | |||
195 | 201 | ||
196 | protected void DebugPacket(string direction, Packet packet) | 202 | protected void DebugPacket(string direction, Packet packet) |
197 | { | 203 | { |
198 | if (debug > 0) { | 204 | if (debug > 0) |
205 | { | ||
199 | string info; | 206 | string info; |
200 | if (debug < 255 && packet.Type == PacketType.AgentUpdate) | 207 | if (debug < 255 && packet.Type == PacketType.AgentUpdate) |
201 | return; | 208 | return; |
202 | if (debug < 254 && packet.Type == PacketType.ViewerEffect) | 209 | if (debug < 254 && packet.Type == PacketType.ViewerEffect) |
203 | return; | 210 | return; |
204 | if (debug < 253 && ( | 211 | if (debug < 253 && ( |
205 | packet.Type == PacketType.CompletePingCheck || | 212 | packet.Type == PacketType.CompletePingCheck || |
206 | packet.Type == PacketType.StartPingCheck | 213 | packet.Type == PacketType.StartPingCheck |
207 | ) ) | 214 | )) |
208 | return; | 215 | return; |
209 | if (debug < 252 && packet.Type == PacketType.PacketAck) | 216 | if (debug < 252 && packet.Type == PacketType.PacketAck) |
210 | return; | 217 | return; |
211 | 218 | ||
212 | if (debug > 1) { | 219 | if (debug > 1) |
220 | { | ||
213 | info = packet.ToString(); | 221 | info = packet.ToString(); |
214 | } else { | 222 | } |
223 | else | ||
224 | { | ||
215 | info = packet.Type.ToString(); | 225 | info = packet.Type.ToString(); |
216 | } | 226 | } |
217 | Console.WriteLine(m_circuitCode + ":" + direction + ": " + info); | 227 | Console.WriteLine(m_circuitCode + ":" + direction + ": " + info); |
@@ -242,6 +252,7 @@ namespace OpenSim.Region.ClientStack | |||
242 | } | 252 | } |
243 | } | 253 | } |
244 | } | 254 | } |
255 | |||
245 | # endregion | 256 | # endregion |
246 | 257 | ||
247 | protected void CheckClientConnectivity(object sender, ElapsedEventArgs e) | 258 | protected void CheckClientConnectivity(object sender, ElapsedEventArgs e) |
@@ -251,7 +262,7 @@ namespace OpenSim.Region.ClientStack | |||
251 | probesWithNoIngressPackets++; | 262 | probesWithNoIngressPackets++; |
252 | if (probesWithNoIngressPackets > 30) | 263 | if (probesWithNoIngressPackets > 30) |
253 | { | 264 | { |
254 | if( OnConnectionClosed != null ) | 265 | if (OnConnectionClosed != null) |
255 | { | 266 | { |
256 | OnConnectionClosed(this); | 267 | OnConnectionClosed(this); |
257 | } | 268 | } |
@@ -278,14 +289,16 @@ namespace OpenSim.Region.ClientStack | |||
278 | clientPingTimer.Elapsed += new ElapsedEventHandler(CheckClientConnectivity); | 289 | clientPingTimer.Elapsed += new ElapsedEventHandler(CheckClientConnectivity); |
279 | clientPingTimer.Enabled = true; | 290 | clientPingTimer.Enabled = true; |
280 | 291 | ||
281 | MainLog.Instance.Verbose("CLIENT","Adding viewer agent to scene"); | 292 | MainLog.Instance.Verbose("CLIENT", "Adding viewer agent to scene"); |
282 | this.m_scene.AddNewClient(this, true); | 293 | m_scene.AddNewClient(this, true); |
283 | } | 294 | } |
284 | 295 | ||
285 | protected virtual void AuthUser() | 296 | protected virtual void AuthUser() |
286 | { | 297 | { |
287 | // AuthenticateResponse sessionInfo = m_gridServer.AuthenticateSession(cirpack.m_circuitCode.m_sessionId, cirpack.m_circuitCode.ID, cirpack.m_circuitCode.Code); | 298 | // AuthenticateResponse sessionInfo = m_gridServer.AuthenticateSession(cirpack.m_circuitCode.m_sessionId, cirpack.m_circuitCode.ID, cirpack.m_circuitCode.Code); |
288 | AuthenticateResponse sessionInfo = this.m_authenticateSessionsHandler.AuthenticateSession(cirpack.CircuitCode.SessionID, cirpack.CircuitCode.ID, cirpack.CircuitCode.Code); | 299 | AuthenticateResponse sessionInfo = |
300 | m_authenticateSessionsHandler.AuthenticateSession(cirpack.CircuitCode.SessionID, cirpack.CircuitCode.ID, | ||
301 | cirpack.CircuitCode.Code); | ||
289 | if (!sessionInfo.Authorised) | 302 | if (!sessionInfo.Authorised) |
290 | { | 303 | { |
291 | //session/circuit not authorised | 304 | //session/circuit not authorised |
@@ -297,27 +310,26 @@ namespace OpenSim.Region.ClientStack | |||
297 | MainLog.Instance.Notice("CLIENT", "Got authenticated connection from " + userEP.ToString()); | 310 | MainLog.Instance.Notice("CLIENT", "Got authenticated connection from " + userEP.ToString()); |
298 | //session is authorised | 311 | //session is authorised |
299 | m_agentId = cirpack.CircuitCode.ID; | 312 | m_agentId = cirpack.CircuitCode.ID; |
300 | this.m_sessionId = cirpack.CircuitCode.SessionID; | 313 | m_sessionId = cirpack.CircuitCode.SessionID; |
301 | this.m_circuitCode = cirpack.CircuitCode.Code; | 314 | m_circuitCode = cirpack.CircuitCode.Code; |
302 | this.firstName = sessionInfo.LoginInfo.First; | 315 | firstName = sessionInfo.LoginInfo.First; |
303 | this.lastName = sessionInfo.LoginInfo.Last; | 316 | lastName = sessionInfo.LoginInfo.Last; |
304 | 317 | ||
305 | if (sessionInfo.LoginInfo.SecureSession != LLUUID.Zero) | 318 | if (sessionInfo.LoginInfo.SecureSession != LLUUID.Zero) |
306 | { | 319 | { |
307 | this.SecureSessionID = sessionInfo.LoginInfo.SecureSession; | 320 | SecureSessionID = sessionInfo.LoginInfo.SecureSession; |
308 | } | 321 | } |
309 | InitNewClient(); | 322 | InitNewClient(); |
310 | 323 | ||
311 | ClientLoop(); | 324 | ClientLoop(); |
312 | } | 325 | } |
313 | } | 326 | } |
314 | # endregion | ||
315 | 327 | ||
328 | # endregion | ||
316 | 329 | ||
317 | protected void KillThread() | 330 | protected void KillThread() |
318 | { | 331 | { |
319 | this.ClientThread.Abort(); | 332 | ClientThread.Abort(); |
320 | } | 333 | } |
321 | |||
322 | } | 334 | } |
323 | } | 335 | } \ No newline at end of file |
diff --git a/OpenSim/Region/ClientStack/PacketServer.cs b/OpenSim/Region/ClientStack/PacketServer.cs index 1b64602..f75536a 100644 --- a/OpenSim/Region/ClientStack/PacketServer.cs +++ b/OpenSim/Region/ClientStack/PacketServer.cs | |||
@@ -25,15 +25,11 @@ | |||
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 | using System.Collections.Generic; | ||
29 | using System.Net; | 28 | using System.Net; |
30 | using System.Net.Sockets; | 29 | using System.Net.Sockets; |
31 | using libsecondlife.Packets; | 30 | using libsecondlife.Packets; |
32 | using OpenSim.Framework; | 31 | using OpenSim.Framework; |
33 | using OpenSim.Framework.Communications.Cache; | 32 | using OpenSim.Framework.Communications.Cache; |
34 | using OpenSim.Framework; | ||
35 | using OpenSim.Framework.Interfaces; | ||
36 | using libsecondlife; | ||
37 | 33 | ||
38 | namespace OpenSim.Region.ClientStack | 34 | namespace OpenSim.Region.ClientStack |
39 | { | 35 | { |
@@ -56,10 +52,7 @@ namespace OpenSim.Region.ClientStack | |||
56 | 52 | ||
57 | public IScene LocalScene | 53 | public IScene LocalScene |
58 | { | 54 | { |
59 | set | 55 | set { m_scene = value; } |
60 | { | ||
61 | this.m_scene = value; | ||
62 | } | ||
63 | } | 56 | } |
64 | 57 | ||
65 | /// <summary> | 58 | /// <summary> |
@@ -72,17 +65,21 @@ namespace OpenSim.Region.ClientStack | |||
72 | m_scene.ClientManager.InPacket(circuitCode, packet); | 65 | m_scene.ClientManager.InPacket(circuitCode, packet); |
73 | } | 66 | } |
74 | 67 | ||
75 | protected virtual IClientAPI CreateNewClient(EndPoint remoteEP, UseCircuitCodePacket initialcirpack, ClientManager clientManager, IScene scene, AssetCache assetCache, PacketServer packServer, AgentCircuitManager authenSessions) | 68 | protected virtual IClientAPI CreateNewClient(EndPoint remoteEP, UseCircuitCodePacket initialcirpack, |
69 | ClientManager clientManager, IScene scene, AssetCache assetCache, | ||
70 | PacketServer packServer, AgentCircuitManager authenSessions) | ||
76 | { | 71 | { |
77 | return new ClientView(remoteEP, initialcirpack, clientManager, scene, assetCache, packServer, authenSessions ); | 72 | return |
73 | new ClientView(remoteEP, initialcirpack, clientManager, scene, assetCache, packServer, authenSessions); | ||
78 | } | 74 | } |
79 | 75 | ||
80 | public virtual bool AddNewClient(EndPoint epSender, UseCircuitCodePacket useCircuit, AssetCache assetCache, AgentCircuitManager authenticateSessionsClass) | 76 | public virtual bool AddNewClient(EndPoint epSender, UseCircuitCodePacket useCircuit, AssetCache assetCache, |
77 | AgentCircuitManager authenticateSessionsClass) | ||
81 | { | 78 | { |
82 | IClientAPI newuser; | 79 | IClientAPI newuser; |
83 | 80 | ||
84 | if (m_scene.ClientManager.TryGetClient(useCircuit.CircuitCode.Code, out newuser)) | 81 | if (m_scene.ClientManager.TryGetClient(useCircuit.CircuitCode.Code, out newuser)) |
85 | { | 82 | { |
86 | return false; | 83 | return false; |
87 | } | 84 | } |
88 | else | 85 | else |
@@ -104,7 +101,7 @@ namespace OpenSim.Region.ClientStack | |||
104 | { | 101 | { |
105 | client.SendLogoutPacket(); | 102 | client.SendLogoutPacket(); |
106 | 103 | ||
107 | CloseClient( client ); | 104 | CloseClient(client); |
108 | } | 105 | } |
109 | 106 | ||
110 | 107 | ||
@@ -117,7 +114,7 @@ namespace OpenSim.Region.ClientStack | |||
117 | /// <param name="circuitcode"></param> | 114 | /// <param name="circuitcode"></param> |
118 | public virtual void SendPacketTo(byte[] buffer, int size, SocketFlags flags, uint circuitcode) | 115 | public virtual void SendPacketTo(byte[] buffer, int size, SocketFlags flags, uint circuitcode) |
119 | { | 116 | { |
120 | this.m_networkHandler.SendPacketTo(buffer, size, flags, circuitcode); | 117 | m_networkHandler.SendPacketTo(buffer, size, flags, circuitcode); |
121 | } | 118 | } |
122 | 119 | ||
123 | /// <summary> | 120 | /// <summary> |
@@ -126,13 +123,13 @@ namespace OpenSim.Region.ClientStack | |||
126 | /// <param name="circuitcode"></param> | 123 | /// <param name="circuitcode"></param> |
127 | public virtual void CloseCircuit(uint circuitcode) | 124 | public virtual void CloseCircuit(uint circuitcode) |
128 | { | 125 | { |
129 | m_networkHandler.RemoveClientCircuit( circuitcode ); | 126 | m_networkHandler.RemoveClientCircuit(circuitcode); |
130 | m_scene.ClientManager.CloseAllAgents(circuitcode); | 127 | m_scene.ClientManager.CloseAllAgents(circuitcode); |
131 | } | 128 | } |
132 | 129 | ||
133 | public virtual void CloseClient( IClientAPI client ) | 130 | public virtual void CloseClient(IClientAPI client) |
134 | { | 131 | { |
135 | CloseCircuit( client.CircuitCode ); | 132 | CloseCircuit(client.CircuitCode); |
136 | } | 133 | } |
137 | } | 134 | } |
138 | } | 135 | } \ No newline at end of file |
diff --git a/OpenSim/Region/ClientStack/RegionApplicationBase.cs b/OpenSim/Region/ClientStack/RegionApplicationBase.cs index 657af54..7551bff 100644 --- a/OpenSim/Region/ClientStack/RegionApplicationBase.cs +++ b/OpenSim/Region/ClientStack/RegionApplicationBase.cs | |||
@@ -28,17 +28,15 @@ | |||
28 | using System; | 28 | using System; |
29 | using System.Collections.Generic; | 29 | using System.Collections.Generic; |
30 | using System.Net; | 30 | using System.Net; |
31 | using libsecondlife; | ||
31 | using OpenSim.Framework; | 32 | using OpenSim.Framework; |
33 | using OpenSim.Framework.Communications; | ||
32 | using OpenSim.Framework.Communications.Cache; | 34 | using OpenSim.Framework.Communications.Cache; |
33 | using OpenSim.Framework.Console; | 35 | using OpenSim.Framework.Console; |
34 | using OpenSim.Framework.Interfaces; | ||
35 | using OpenSim.Framework.Servers; | 36 | using OpenSim.Framework.Servers; |
36 | using OpenSim.Framework; | ||
37 | using OpenSim.Region.Physics.Manager; | ||
38 | using OpenSim.Region.Environment; | 37 | using OpenSim.Region.Environment; |
39 | using libsecondlife; | ||
40 | using OpenSim.Region.Environment.Scenes; | 38 | using OpenSim.Region.Environment.Scenes; |
41 | using OpenSim.Framework.Communications; | 39 | using OpenSim.Region.Physics.Manager; |
42 | 40 | ||
43 | namespace OpenSim.Region.ClientStack | 41 | namespace OpenSim.Region.ClientStack |
44 | { | 42 | { |
@@ -67,9 +65,8 @@ namespace OpenSim.Region.ClientStack | |||
67 | m_startuptime = DateTime.Now; | 65 | m_startuptime = DateTime.Now; |
68 | } | 66 | } |
69 | 67 | ||
70 | virtual public void StartUp() | 68 | public virtual void StartUp() |
71 | { | 69 | { |
72 | |||
73 | ClientView.TerrainManager = new TerrainManager(new SecondLife()); | 70 | ClientView.TerrainManager = new TerrainManager(new SecondLife()); |
74 | 71 | ||
75 | Initialize(); | 72 | Initialize(); |
@@ -116,7 +113,10 @@ namespace OpenSim.Region.ClientStack | |||
116 | scene.PhysScene.SetTerrain(scene.Terrain.GetHeights1D()); | 113 | scene.PhysScene.SetTerrain(scene.Terrain.GetHeights1D()); |
117 | 114 | ||
118 | //Master Avatar Setup | 115 | //Master Avatar Setup |
119 | UserProfileData masterAvatar = m_commsManager.UserService.SetupMasterUser(scene.RegionInfo.MasterAvatarFirstName, scene.RegionInfo.MasterAvatarLastName, scene.RegionInfo.MasterAvatarSandboxPassword); | 116 | UserProfileData masterAvatar = |
117 | m_commsManager.UserService.SetupMasterUser(scene.RegionInfo.MasterAvatarFirstName, | ||
118 | scene.RegionInfo.MasterAvatarLastName, | ||
119 | scene.RegionInfo.MasterAvatarSandboxPassword); | ||
120 | if (masterAvatar != null) | 120 | if (masterAvatar != null) |
121 | { | 121 | { |
122 | m_log.Verbose("PARCEL", "Found master avatar [" + masterAvatar.UUID.ToStringHyphenated() + "]"); | 122 | m_log.Verbose("PARCEL", "Found master avatar [" + masterAvatar.UUID.ToStringHyphenated() + "]"); |
@@ -126,7 +126,7 @@ namespace OpenSim.Region.ClientStack | |||
126 | else | 126 | else |
127 | { | 127 | { |
128 | m_log.Verbose("PARCEL", "No master avatar found, using null."); | 128 | m_log.Verbose("PARCEL", "No master avatar found, using null."); |
129 | scene.RegionInfo.MasterAvatarAssignedUUID = libsecondlife.LLUUID.Zero; | 129 | scene.RegionInfo.MasterAvatarAssignedUUID = LLUUID.Zero; |
130 | //TODO: Load parcels from storageManager | 130 | //TODO: Load parcels from storageManager |
131 | } | 131 | } |
132 | 132 | ||
@@ -138,8 +138,7 @@ namespace OpenSim.Region.ClientStack | |||
138 | return scene; | 138 | return scene; |
139 | } | 139 | } |
140 | 140 | ||
141 | protected abstract Scene CreateScene(RegionInfo regionInfo, StorageManager storageManager, AgentCircuitManager circuitManager); | 141 | protected abstract Scene CreateScene(RegionInfo regionInfo, StorageManager storageManager, |
142 | 142 | AgentCircuitManager circuitManager); | |
143 | |||
144 | } | 143 | } |
145 | } | 144 | } \ No newline at end of file |
diff --git a/OpenSim/Region/ClientStack/UDPServer.cs b/OpenSim/Region/ClientStack/UDPServer.cs index 584b80c..e5965cb 100644 --- a/OpenSim/Region/ClientStack/UDPServer.cs +++ b/OpenSim/Region/ClientStack/UDPServer.cs | |||
@@ -32,13 +32,10 @@ using System.Net.Sockets; | |||
32 | using libsecondlife.Packets; | 32 | using libsecondlife.Packets; |
33 | using OpenSim.Framework; | 33 | using OpenSim.Framework; |
34 | using OpenSim.Framework.Communications.Cache; | 34 | using OpenSim.Framework.Communications.Cache; |
35 | using OpenSim.Framework; | ||
36 | using OpenSim.Framework.Console; | 35 | using OpenSim.Framework.Console; |
37 | using OpenSim.Framework.Interfaces; | ||
38 | 36 | ||
39 | namespace OpenSim.Region.ClientStack | 37 | namespace OpenSim.Region.ClientStack |
40 | { | 38 | { |
41 | |||
42 | public class UDPServer : ClientStackNetworkHandler | 39 | public class UDPServer : ClientStackNetworkHandler |
43 | { | 40 | { |
44 | protected Dictionary<EndPoint, uint> clientCircuits = new Dictionary<EndPoint, uint>(); | 41 | protected Dictionary<EndPoint, uint> clientCircuits = new Dictionary<EndPoint, uint>(); |
@@ -59,22 +56,16 @@ namespace OpenSim.Region.ClientStack | |||
59 | 56 | ||
60 | public PacketServer PacketServer | 57 | public PacketServer PacketServer |
61 | { | 58 | { |
62 | get | 59 | get { return m_packetServer; } |
63 | { | 60 | set { m_packetServer = value; } |
64 | return m_packetServer; | ||
65 | } | ||
66 | set | ||
67 | { | ||
68 | m_packetServer = value; | ||
69 | } | ||
70 | } | 61 | } |
71 | 62 | ||
72 | public IScene LocalScene | 63 | public IScene LocalScene |
73 | { | 64 | { |
74 | set | 65 | set |
75 | { | 66 | { |
76 | this.m_localScene = value; | 67 | m_localScene = value; |
77 | this.m_packetServer.LocalScene = this.m_localScene; | 68 | m_packetServer.LocalScene = m_localScene; |
78 | } | 69 | } |
79 | } | 70 | } |
80 | 71 | ||
@@ -85,10 +76,10 @@ namespace OpenSim.Region.ClientStack | |||
85 | public UDPServer(int port, AssetCache assetCache, LogBase console, AgentCircuitManager authenticateClass) | 76 | public UDPServer(int port, AssetCache assetCache, LogBase console, AgentCircuitManager authenticateClass) |
86 | { | 77 | { |
87 | listenPort = port; | 78 | listenPort = port; |
88 | this.m_assetCache = assetCache; | 79 | m_assetCache = assetCache; |
89 | this.m_log = console; | 80 | m_log = console; |
90 | this.m_authenticateSessionsClass = authenticateClass; | 81 | m_authenticateSessionsClass = authenticateClass; |
91 | this.CreatePacketServer(); | 82 | CreatePacketServer(); |
92 | } | 83 | } |
93 | 84 | ||
94 | protected virtual void CreatePacketServer() | 85 | protected virtual void CreatePacketServer() |
@@ -99,7 +90,7 @@ namespace OpenSim.Region.ClientStack | |||
99 | protected virtual void OnReceivedData(IAsyncResult result) | 90 | protected virtual void OnReceivedData(IAsyncResult result) |
100 | { | 91 | { |
101 | ipeSender = new IPEndPoint(IPAddress.Parse("0.0.0.0"), 0); | 92 | ipeSender = new IPEndPoint(IPAddress.Parse("0.0.0.0"), 0); |
102 | epSender = (EndPoint)ipeSender; | 93 | epSender = (EndPoint) ipeSender; |
103 | Packet packet = null; | 94 | Packet packet = null; |
104 | 95 | ||
105 | int numBytes; | 96 | int numBytes; |
@@ -108,7 +99,7 @@ namespace OpenSim.Region.ClientStack | |||
108 | { | 99 | { |
109 | numBytes = Server.EndReceiveFrom(result, ref epSender); | 100 | numBytes = Server.EndReceiveFrom(result, ref epSender); |
110 | } | 101 | } |
111 | catch (System.Net.Sockets.SocketException e) | 102 | catch (SocketException e) |
112 | { | 103 | { |
113 | // TODO : Actually only handle those states that we have control over, re-throw everything else, | 104 | // TODO : Actually only handle those states that we have control over, re-throw everything else, |
114 | // TODO: implement cases as we encounter them. | 105 | // TODO: implement cases as we encounter them. |
@@ -134,7 +125,7 @@ namespace OpenSim.Region.ClientStack | |||
134 | if (clientCircuits.TryGetValue(epSender, out circuit)) | 125 | if (clientCircuits.TryGetValue(epSender, out circuit)) |
135 | { | 126 | { |
136 | //if so then send packet to the packetserver | 127 | //if so then send packet to the packetserver |
137 | this.m_packetServer.InPacket(circuit, packet); | 128 | m_packetServer.InPacket(circuit, packet); |
138 | } | 129 | } |
139 | else if (packet.Type == PacketType.UseCircuitCode) | 130 | else if (packet.Type == PacketType.UseCircuitCode) |
140 | { | 131 | { |
@@ -142,7 +133,8 @@ namespace OpenSim.Region.ClientStack | |||
142 | AddNewClient(packet); | 133 | AddNewClient(packet); |
143 | } | 134 | } |
144 | else | 135 | else |
145 | { // invalid client | 136 | { |
137 | // invalid client | ||
146 | m_log.Warn("client", "Got a packet from an invalid client - " + epSender.ToString()); | 138 | m_log.Warn("client", "Got a packet from an invalid client - " + epSender.ToString()); |
147 | } | 139 | } |
148 | 140 | ||
@@ -160,10 +152,10 @@ namespace OpenSim.Region.ClientStack | |||
160 | 152 | ||
161 | protected virtual void AddNewClient(Packet packet) | 153 | protected virtual void AddNewClient(Packet packet) |
162 | { | 154 | { |
163 | UseCircuitCodePacket useCircuit = (UseCircuitCodePacket)packet; | 155 | UseCircuitCodePacket useCircuit = (UseCircuitCodePacket) packet; |
164 | this.clientCircuits.Add(epSender, useCircuit.CircuitCode.Code); | 156 | clientCircuits.Add(epSender, useCircuit.CircuitCode.Code); |
165 | 157 | ||
166 | this.PacketServer.AddNewClient(epSender, useCircuit, m_assetCache, m_authenticateSessionsClass); | 158 | PacketServer.AddNewClient(epSender, useCircuit, m_assetCache, m_authenticateSessionsClass); |
167 | } | 159 | } |
168 | 160 | ||
169 | public void ServerListener() | 161 | public void ServerListener() |
@@ -177,24 +169,24 @@ namespace OpenSim.Region.ClientStack | |||
177 | m_log.Verbose("SERVER", "UDP socket bound, getting ready to listen"); | 169 | m_log.Verbose("SERVER", "UDP socket bound, getting ready to listen"); |
178 | 170 | ||
179 | ipeSender = new IPEndPoint(IPAddress.Parse("0.0.0.0"), 0); | 171 | ipeSender = new IPEndPoint(IPAddress.Parse("0.0.0.0"), 0); |
180 | epSender = (EndPoint)ipeSender; | 172 | epSender = (EndPoint) ipeSender; |
181 | ReceivedData = new AsyncCallback(this.OnReceivedData); | 173 | ReceivedData = new AsyncCallback(OnReceivedData); |
182 | Server.BeginReceiveFrom(RecvBuffer, 0, RecvBuffer.Length, SocketFlags.None, ref epSender, ReceivedData, null); | 174 | Server.BeginReceiveFrom(RecvBuffer, 0, RecvBuffer.Length, SocketFlags.None, ref epSender, ReceivedData, null); |
183 | 175 | ||
184 | m_log.Status("SERVER", "Listening..."); | 176 | m_log.Status("SERVER", "Listening..."); |
185 | |||
186 | } | 177 | } |
187 | 178 | ||
188 | public virtual void RegisterPacketServer(PacketServer server) | 179 | public virtual void RegisterPacketServer(PacketServer server) |
189 | { | 180 | { |
190 | this.m_packetServer = server; | 181 | m_packetServer = server; |
191 | } | 182 | } |
192 | 183 | ||
193 | public virtual void SendPacketTo(byte[] buffer, int size, SocketFlags flags, uint circuitcode)//EndPoint packetSender) | 184 | public virtual void SendPacketTo(byte[] buffer, int size, SocketFlags flags, uint circuitcode) |
185 | //EndPoint packetSender) | ||
194 | { | 186 | { |
195 | // find the endpoint for this circuit | 187 | // find the endpoint for this circuit |
196 | EndPoint sendto = null; | 188 | EndPoint sendto = null; |
197 | foreach (KeyValuePair<EndPoint, uint> p in this.clientCircuits) | 189 | foreach (KeyValuePair<EndPoint, uint> p in clientCircuits) |
198 | { | 190 | { |
199 | if (p.Value == circuitcode) | 191 | if (p.Value == circuitcode) |
200 | { | 192 | { |
@@ -205,22 +197,20 @@ namespace OpenSim.Region.ClientStack | |||
205 | if (sendto != null) | 197 | if (sendto != null) |
206 | { | 198 | { |
207 | //we found the endpoint so send the packet to it | 199 | //we found the endpoint so send the packet to it |
208 | this.Server.SendTo(buffer, size, flags, sendto); | 200 | Server.SendTo(buffer, size, flags, sendto); |
209 | } | 201 | } |
210 | } | 202 | } |
211 | 203 | ||
212 | public virtual void RemoveClientCircuit(uint circuitcode) | 204 | public virtual void RemoveClientCircuit(uint circuitcode) |
213 | { | 205 | { |
214 | foreach (KeyValuePair<EndPoint, uint> p in this.clientCircuits) | 206 | foreach (KeyValuePair<EndPoint, uint> p in clientCircuits) |
215 | { | 207 | { |
216 | if (p.Value == circuitcode) | 208 | if (p.Value == circuitcode) |
217 | { | 209 | { |
218 | this.clientCircuits.Remove(p.Key); | 210 | clientCircuits.Remove(p.Key); |
219 | break; | 211 | break; |
220 | } | 212 | } |
221 | } | 213 | } |
222 | } | 214 | } |
223 | |||
224 | |||
225 | } | 215 | } |
226 | } \ No newline at end of file | 216 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Communications/Local/CommunicationsLocal.cs b/OpenSim/Region/Communications/Local/CommunicationsLocal.cs index ef5150f..eac293e 100644 --- a/OpenSim/Region/Communications/Local/CommunicationsLocal.cs +++ b/OpenSim/Region/Communications/Local/CommunicationsLocal.cs | |||
@@ -25,32 +25,30 @@ | |||
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 | using OpenSim.Framework; | ||
28 | using OpenSim.Framework.Communications; | 29 | using OpenSim.Framework.Communications; |
29 | using OpenSim.Framework.Communications.Cache; | 30 | using OpenSim.Framework.Communications.Cache; |
30 | using OpenSim.Framework.Interfaces; | 31 | using OpenSim.Framework.Interfaces; |
31 | using OpenSim.Framework.Servers; | 32 | using OpenSim.Framework.Servers; |
32 | using OpenSim.Framework; | ||
33 | 33 | ||
34 | namespace OpenSim.Region.Communications.Local | 34 | namespace OpenSim.Region.Communications.Local |
35 | { | 35 | { |
36 | public class CommunicationsLocal : CommunicationsManager | 36 | public class CommunicationsLocal : CommunicationsManager |
37 | { | 37 | { |
38 | public CommunicationsLocal( | 38 | public CommunicationsLocal( |
39 | NetworkServersInfo serversInfo, | 39 | NetworkServersInfo serversInfo, |
40 | BaseHttpServer httpServer, | 40 | BaseHttpServer httpServer, |
41 | AssetCache assetCache, | 41 | AssetCache assetCache, |
42 | IUserService userService, | 42 | IUserService userService, |
43 | LocalInventoryService inventoryService, | 43 | LocalInventoryService inventoryService, |
44 | IInterRegionCommunications interRegionService, | 44 | IInterRegionCommunications interRegionService, |
45 | IGridServices gridService, bool dumpAssetsToFile ) | 45 | IGridServices gridService, bool dumpAssetsToFile) |
46 | : base(serversInfo, httpServer, assetCache, dumpAssetsToFile) | 46 | : base(serversInfo, httpServer, assetCache, dumpAssetsToFile) |
47 | { | 47 | { |
48 | m_inventoryService = inventoryService; | 48 | m_inventoryService = inventoryService; |
49 | m_userService = userService; | 49 | m_userService = userService; |
50 | m_gridService = gridService; | 50 | m_gridService = gridService; |
51 | m_interRegion = interRegionService; | 51 | m_interRegion = interRegionService; |
52 | |||
53 | } | 52 | } |
54 | |||
55 | } | 53 | } |
56 | } | 54 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Communications/Local/LocalBackEndServices.cs b/OpenSim/Region/Communications/Local/LocalBackEndServices.cs index 99c4bc3..3a0b47f 100644 --- a/OpenSim/Region/Communications/Local/LocalBackEndServices.cs +++ b/OpenSim/Region/Communications/Local/LocalBackEndServices.cs | |||
@@ -25,25 +25,25 @@ | |||
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 | using System.Collections; | ||
28 | using System.Collections.Generic; | 29 | using System.Collections.Generic; |
29 | using libsecondlife; | 30 | using libsecondlife; |
30 | using OpenSim.Framework; | 31 | using OpenSim.Framework; |
31 | using OpenSim.Framework.Communications; | 32 | using OpenSim.Framework.Communications; |
32 | using OpenSim.Framework; | ||
33 | using System.Collections; | ||
34 | 33 | ||
35 | namespace OpenSim.Region.Communications.Local | 34 | namespace OpenSim.Region.Communications.Local |
36 | { | 35 | { |
37 | |||
38 | public class LocalBackEndServices : IGridServices, IInterRegionCommunications | 36 | public class LocalBackEndServices : IGridServices, IInterRegionCommunications |
39 | { | 37 | { |
40 | protected Dictionary<ulong, RegionInfo> m_regions = new Dictionary<ulong, RegionInfo>(); | 38 | protected Dictionary<ulong, RegionInfo> m_regions = new Dictionary<ulong, RegionInfo>(); |
41 | protected Dictionary<ulong, RegionCommsListener> m_regionListeners = new Dictionary<ulong, RegionCommsListener>(); | 39 | |
40 | protected Dictionary<ulong, RegionCommsListener> m_regionListeners = | ||
41 | new Dictionary<ulong, RegionCommsListener>(); | ||
42 | |||
42 | private Dictionary<ulong, RegionInfo> m_remoteRegionInfoCache = new Dictionary<ulong, RegionInfo>(); | 43 | private Dictionary<ulong, RegionInfo> m_remoteRegionInfoCache = new Dictionary<ulong, RegionInfo>(); |
43 | 44 | ||
44 | public LocalBackEndServices() | 45 | public LocalBackEndServices() |
45 | { | 46 | { |
46 | |||
47 | } | 47 | } |
48 | 48 | ||
49 | /// <summary> | 49 | /// <summary> |
@@ -54,13 +54,13 @@ namespace OpenSim.Region.Communications.Local | |||
54 | public RegionCommsListener RegisterRegion(RegionInfo regionInfo) | 54 | public RegionCommsListener RegisterRegion(RegionInfo regionInfo) |
55 | { | 55 | { |
56 | //Console.WriteLine("CommsManager - Region " + regionInfo.RegionHandle + " , " + regionInfo.RegionLocX + " , "+ regionInfo.RegionLocY +" is registering"); | 56 | //Console.WriteLine("CommsManager - Region " + regionInfo.RegionHandle + " , " + regionInfo.RegionLocX + " , "+ regionInfo.RegionLocY +" is registering"); |
57 | if (!this.m_regions.ContainsKey((uint)regionInfo.RegionHandle)) | 57 | if (!m_regions.ContainsKey((uint) regionInfo.RegionHandle)) |
58 | { | 58 | { |
59 | //Console.WriteLine("CommsManager - Adding Region " + regionInfo.RegionHandle ); | 59 | //Console.WriteLine("CommsManager - Adding Region " + regionInfo.RegionHandle ); |
60 | this.m_regions.Add(regionInfo.RegionHandle, regionInfo); | 60 | m_regions.Add(regionInfo.RegionHandle, regionInfo); |
61 | 61 | ||
62 | RegionCommsListener regionHost = new RegionCommsListener(); | 62 | RegionCommsListener regionHost = new RegionCommsListener(); |
63 | this.m_regionListeners.Add(regionInfo.RegionHandle, regionHost); | 63 | m_regionListeners.Add(regionInfo.RegionHandle, regionHost); |
64 | 64 | ||
65 | return regionHost; | 65 | return regionHost; |
66 | } | 66 | } |
@@ -103,9 +103,9 @@ namespace OpenSim.Region.Communications.Local | |||
103 | /// <returns></returns> | 103 | /// <returns></returns> |
104 | public RegionInfo RequestNeighbourInfo(ulong regionHandle) | 104 | public RegionInfo RequestNeighbourInfo(ulong regionHandle) |
105 | { | 105 | { |
106 | if (this.m_regions.ContainsKey(regionHandle)) | 106 | if (m_regions.ContainsKey(regionHandle)) |
107 | { | 107 | { |
108 | return this.m_regions[regionHandle]; | 108 | return m_regions[regionHandle]; |
109 | } | 109 | } |
110 | return null; | 110 | return null; |
111 | } | 111 | } |
@@ -121,16 +121,18 @@ namespace OpenSim.Region.Communications.Local | |||
121 | public List<MapBlockData> RequestNeighbourMapBlocks(int minX, int minY, int maxX, int maxY) | 121 | public List<MapBlockData> RequestNeighbourMapBlocks(int minX, int minY, int maxX, int maxY) |
122 | { | 122 | { |
123 | List<MapBlockData> mapBlocks = new List<MapBlockData>(); | 123 | List<MapBlockData> mapBlocks = new List<MapBlockData>(); |
124 | foreach (RegionInfo regInfo in this.m_regions.Values) | 124 | foreach (RegionInfo regInfo in m_regions.Values) |
125 | { | 125 | { |
126 | if (((regInfo.RegionLocX >= minX) && (regInfo.RegionLocX <= maxX)) && ((regInfo.RegionLocY >= minY) && (regInfo.RegionLocY <= maxY))) | 126 | if (((regInfo.RegionLocX >= minX) && (regInfo.RegionLocX <= maxX)) && |
127 | ((regInfo.RegionLocY >= minY) && (regInfo.RegionLocY <= maxY))) | ||
127 | { | 128 | { |
128 | MapBlockData map = new MapBlockData(); | 129 | MapBlockData map = new MapBlockData(); |
129 | map.Name = regInfo.RegionName; | 130 | map.Name = regInfo.RegionName; |
130 | map.X = (ushort)regInfo.RegionLocX; | 131 | map.X = (ushort) regInfo.RegionLocX; |
131 | map.Y = (ushort)regInfo.RegionLocY; | 132 | map.Y = (ushort) regInfo.RegionLocY; |
132 | map.WaterHeight = (byte)regInfo.EstateSettings.waterHeight; | 133 | map.WaterHeight = (byte) regInfo.EstateSettings.waterHeight; |
133 | map.MapImageId = regInfo.EstateSettings.terrainImageID; //new LLUUID("00000000-0000-0000-9999-000000000007"); | 134 | map.MapImageId = regInfo.EstateSettings.terrainImageID; |
135 | //new LLUUID("00000000-0000-0000-9999-000000000007"); | ||
134 | map.Agents = 1; | 136 | map.Agents = 1; |
135 | map.RegionFlags = 72458694; | 137 | map.RegionFlags = 72458694; |
136 | map.Access = 13; | 138 | map.Access = 13; |
@@ -145,13 +147,14 @@ namespace OpenSim.Region.Communications.Local | |||
145 | /// <param name="regionHandle"></param> | 147 | /// <param name="regionHandle"></param> |
146 | /// <param name="agentData"></param> | 148 | /// <param name="agentData"></param> |
147 | /// <returns></returns> | 149 | /// <returns></returns> |
148 | public bool InformRegionOfChildAgent(ulong regionHandle, AgentCircuitData agentData) //should change from agentCircuitData | 150 | public bool InformRegionOfChildAgent(ulong regionHandle, AgentCircuitData agentData) |
151 | //should change from agentCircuitData | ||
149 | { | 152 | { |
150 | //Console.WriteLine("CommsManager- Trying to Inform a region to expect child agent"); | 153 | //Console.WriteLine("CommsManager- Trying to Inform a region to expect child agent"); |
151 | if (this.m_regionListeners.ContainsKey(regionHandle)) | 154 | if (m_regionListeners.ContainsKey(regionHandle)) |
152 | { | 155 | { |
153 | // Console.WriteLine("CommsManager- Informing a region to expect child agent"); | 156 | // Console.WriteLine("CommsManager- Informing a region to expect child agent"); |
154 | this.m_regionListeners[regionHandle].TriggerExpectUser(regionHandle, agentData); | 157 | m_regionListeners[regionHandle].TriggerExpectUser(regionHandle, agentData); |
155 | return true; | 158 | return true; |
156 | } | 159 | } |
157 | return false; | 160 | return false; |
@@ -166,10 +169,10 @@ namespace OpenSim.Region.Communications.Local | |||
166 | /// <returns></returns> | 169 | /// <returns></returns> |
167 | public bool ExpectAvatarCrossing(ulong regionHandle, LLUUID agentID, LLVector3 position, bool isFlying) | 170 | public bool ExpectAvatarCrossing(ulong regionHandle, LLUUID agentID, LLVector3 position, bool isFlying) |
168 | { | 171 | { |
169 | if (this.m_regionListeners.ContainsKey(regionHandle)) | 172 | if (m_regionListeners.ContainsKey(regionHandle)) |
170 | { | 173 | { |
171 | // Console.WriteLine("CommsManager- Informing a region to expect avatar crossing"); | 174 | // Console.WriteLine("CommsManager- Informing a region to expect avatar crossing"); |
172 | this.m_regionListeners[regionHandle].TriggerExpectAvatarCrossing(regionHandle, agentID, position, isFlying); | 175 | m_regionListeners[regionHandle].TriggerExpectAvatarCrossing(regionHandle, agentID, position, isFlying); |
173 | return true; | 176 | return true; |
174 | } | 177 | } |
175 | return false; | 178 | return false; |
@@ -177,7 +180,7 @@ namespace OpenSim.Region.Communications.Local | |||
177 | 180 | ||
178 | public bool AcknowledgeAgentCrossed(ulong regionHandle, LLUUID agentId) | 181 | public bool AcknowledgeAgentCrossed(ulong regionHandle, LLUUID agentId) |
179 | { | 182 | { |
180 | if (this.m_regionListeners.ContainsKey(regionHandle)) | 183 | if (m_regionListeners.ContainsKey(regionHandle)) |
181 | { | 184 | { |
182 | return true; | 185 | return true; |
183 | } | 186 | } |
@@ -210,15 +213,15 @@ namespace OpenSim.Region.Communications.Local | |||
210 | 213 | ||
211 | public void TriggerExpectUser(ulong regionHandle, AgentCircuitData agent) | 214 | public void TriggerExpectUser(ulong regionHandle, AgentCircuitData agent) |
212 | { | 215 | { |
213 | if (this.m_regionListeners.ContainsKey(regionHandle)) | 216 | if (m_regionListeners.ContainsKey(regionHandle)) |
214 | { | 217 | { |
215 | this.m_regionListeners[regionHandle].TriggerExpectUser(regionHandle, agent); | 218 | m_regionListeners[regionHandle].TriggerExpectUser(regionHandle, agent); |
216 | } | 219 | } |
217 | } | 220 | } |
218 | 221 | ||
219 | public void PingCheckReply(Hashtable respData) | 222 | public void PingCheckReply(Hashtable respData) |
220 | { | 223 | { |
221 | foreach (ulong region in this.m_regions.Keys) | 224 | foreach (ulong region in m_regions.Keys) |
222 | { | 225 | { |
223 | Hashtable regData = new Hashtable(); | 226 | Hashtable regData = new Hashtable(); |
224 | RegionInfo reg = m_regions[region]; | 227 | RegionInfo reg = m_regions[region]; |
@@ -234,7 +237,7 @@ namespace OpenSim.Region.Communications.Local | |||
234 | if (m_regionListeners.ContainsKey(regionHandle)) | 237 | if (m_regionListeners.ContainsKey(regionHandle)) |
235 | { | 238 | { |
236 | return m_regionListeners[regionHandle].TriggerExpectAvatarCrossing(regionHandle, agentID, position, | 239 | return m_regionListeners[regionHandle].TriggerExpectAvatarCrossing(regionHandle, agentID, position, |
237 | isFlying); | 240 | isFlying); |
238 | } | 241 | } |
239 | 242 | ||
240 | return false; | 243 | return false; |
@@ -250,11 +253,5 @@ namespace OpenSim.Region.Communications.Local | |||
250 | 253 | ||
251 | return false; | 254 | return false; |
252 | } | 255 | } |
253 | |||
254 | |||
255 | |||
256 | } | 256 | } |
257 | } | 257 | } \ No newline at end of file |
258 | |||
259 | |||
260 | |||
diff --git a/OpenSim/Region/Communications/Local/LocalInventoryService.cs b/OpenSim/Region/Communications/Local/LocalInventoryService.cs index b7d78bc..c38e922 100644 --- a/OpenSim/Region/Communications/Local/LocalInventoryService.cs +++ b/OpenSim/Region/Communications/Local/LocalInventoryService.cs | |||
@@ -28,29 +28,28 @@ | |||
28 | 28 | ||
29 | using System.Collections.Generic; | 29 | using System.Collections.Generic; |
30 | using libsecondlife; | 30 | using libsecondlife; |
31 | using OpenSim.Framework; | ||
31 | using OpenSim.Framework.Communications; | 32 | using OpenSim.Framework.Communications; |
32 | using OpenSim.Framework.Communications.Cache; | 33 | using OpenSim.Framework.Communications.Cache; |
33 | using OpenSim.Framework; | ||
34 | 34 | ||
35 | namespace OpenSim.Region.Communications.Local | 35 | namespace OpenSim.Region.Communications.Local |
36 | { | 36 | { |
37 | public class LocalInventoryService : InventoryServiceBase | 37 | public class LocalInventoryService : InventoryServiceBase |
38 | { | 38 | { |
39 | |||
40 | public LocalInventoryService() | 39 | public LocalInventoryService() |
41 | { | 40 | { |
42 | |||
43 | } | 41 | } |
44 | 42 | ||
45 | public override void RequestInventoryForUser(LLUUID userID, InventoryFolderInfo folderCallBack, InventoryItemInfo itemCallBack) | 43 | public override void RequestInventoryForUser(LLUUID userID, InventoryFolderInfo folderCallBack, |
44 | InventoryItemInfo itemCallBack) | ||
46 | { | 45 | { |
47 | List<InventoryFolderBase> folders = this.RequestFirstLevelFolders(userID); | 46 | List<InventoryFolderBase> folders = RequestFirstLevelFolders(userID); |
48 | InventoryFolderImpl rootFolder = null; | 47 | InventoryFolderImpl rootFolder = null; |
49 | 48 | ||
50 | //need to make sure we send root folder first | 49 | //need to make sure we send root folder first |
51 | foreach (InventoryFolderBase folder in folders) | 50 | foreach (InventoryFolderBase folder in folders) |
52 | { | 51 | { |
53 | if (folder.parentID == libsecondlife.LLUUID.Zero) | 52 | if (folder.parentID == LLUUID.Zero) |
54 | { | 53 | { |
55 | InventoryFolderImpl newfolder = new InventoryFolderImpl(folder); | 54 | InventoryFolderImpl newfolder = new InventoryFolderImpl(folder); |
56 | rootFolder = newfolder; | 55 | rootFolder = newfolder; |
@@ -67,7 +66,7 @@ namespace OpenSim.Region.Communications.Local | |||
67 | InventoryFolderImpl newfolder = new InventoryFolderImpl(folder); | 66 | InventoryFolderImpl newfolder = new InventoryFolderImpl(folder); |
68 | folderCallBack(userID, newfolder); | 67 | folderCallBack(userID, newfolder); |
69 | 68 | ||
70 | List<InventoryItemBase> items = this.RequestFolderItems(newfolder.folderID); | 69 | List<InventoryItemBase> items = RequestFolderItems(newfolder.folderID); |
71 | foreach (InventoryItemBase item in items) | 70 | foreach (InventoryItemBase item in items) |
72 | { | 71 | { |
73 | itemCallBack(userID, item); | 72 | itemCallBack(userID, item); |
@@ -79,17 +78,17 @@ namespace OpenSim.Region.Communications.Local | |||
79 | 78 | ||
80 | public override void AddNewInventoryFolder(LLUUID userID, InventoryFolderImpl folder) | 79 | public override void AddNewInventoryFolder(LLUUID userID, InventoryFolderImpl folder) |
81 | { | 80 | { |
82 | this.AddFolder(folder); | 81 | AddFolder(folder); |
83 | } | 82 | } |
84 | 83 | ||
85 | public override void AddNewInventoryItem(LLUUID userID, InventoryItemBase item) | 84 | public override void AddNewInventoryItem(LLUUID userID, InventoryItemBase item) |
86 | { | 85 | { |
87 | this.AddItem(item); | 86 | AddItem(item); |
88 | } | 87 | } |
89 | 88 | ||
90 | public override void DeleteInventoryItem(LLUUID userID, InventoryItemBase item) | 89 | public override void DeleteInventoryItem(LLUUID userID, InventoryItemBase item) |
91 | { | 90 | { |
92 | this.deleteItem(item); | 91 | deleteItem(item); |
93 | } | 92 | } |
94 | } | 93 | } |
95 | } | 94 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Communications/Local/LocalLoginService.cs b/OpenSim/Region/Communications/Local/LocalLoginService.cs index 1043683..aa1a0d9 100644 --- a/OpenSim/Region/Communications/Local/LocalLoginService.cs +++ b/OpenSim/Region/Communications/Local/LocalLoginService.cs | |||
@@ -30,9 +30,9 @@ using System; | |||
30 | using System.Collections; | 30 | using System.Collections; |
31 | using System.Collections.Generic; | 31 | using System.Collections.Generic; |
32 | using libsecondlife; | 32 | using libsecondlife; |
33 | using OpenSim.Framework.Communications; | ||
34 | using OpenSim.Framework; | 33 | using OpenSim.Framework; |
35 | using OpenSim.Framework.UserManagement; | 34 | using OpenSim.Framework.UserManagement; |
35 | using InventoryFolder=OpenSim.Framework.InventoryFolder; | ||
36 | 36 | ||
37 | namespace OpenSim.Region.Communications.Local | 37 | namespace OpenSim.Region.Communications.Local |
38 | { | 38 | { |
@@ -49,23 +49,23 @@ namespace OpenSim.Region.Communications.Local | |||
49 | 49 | ||
50 | public event LoginToRegionEvent OnLoginToRegion; | 50 | public event LoginToRegionEvent OnLoginToRegion; |
51 | 51 | ||
52 | public LocalLoginService(UserManagerBase userManager, string welcomeMess, CommunicationsLocal parent, NetworkServersInfo serversInfo, bool authenticate) | 52 | public LocalLoginService(UserManagerBase userManager, string welcomeMess, CommunicationsLocal parent, |
53 | NetworkServersInfo serversInfo, bool authenticate) | ||
53 | : base(userManager, welcomeMess) | 54 | : base(userManager, welcomeMess) |
54 | { | 55 | { |
55 | m_Parent = parent; | 56 | m_Parent = parent; |
56 | this.serversInfo = serversInfo; | 57 | this.serversInfo = serversInfo; |
57 | defaultHomeX = this.serversInfo.DefaultHomeLocX; | 58 | defaultHomeX = this.serversInfo.DefaultHomeLocX; |
58 | defaultHomeY = this.serversInfo.DefaultHomeLocY; | 59 | defaultHomeY = this.serversInfo.DefaultHomeLocY; |
59 | this.authUsers = authenticate; | 60 | authUsers = authenticate; |
60 | } | 61 | } |
61 | 62 | ||
62 | 63 | ||
63 | public override UserProfileData GetTheUser(string firstname, string lastname) | 64 | public override UserProfileData GetTheUser(string firstname, string lastname) |
64 | { | 65 | { |
65 | UserProfileData profile = this.m_userManager.GetUserProfile(firstname, lastname); | 66 | UserProfileData profile = m_userManager.GetUserProfile(firstname, lastname); |
66 | if (profile != null) | 67 | if (profile != null) |
67 | { | 68 | { |
68 | |||
69 | return profile; | 69 | return profile; |
70 | } | 70 | } |
71 | 71 | ||
@@ -73,9 +73,9 @@ namespace OpenSim.Region.Communications.Local | |||
73 | { | 73 | { |
74 | //no current user account so make one | 74 | //no current user account so make one |
75 | Console.WriteLine("No User account found so creating a new one "); | 75 | Console.WriteLine("No User account found so creating a new one "); |
76 | this.m_userManager.AddUserProfile(firstname, lastname, "test", defaultHomeX, defaultHomeY); | 76 | m_userManager.AddUserProfile(firstname, lastname, "test", defaultHomeX, defaultHomeY); |
77 | 77 | ||
78 | profile = this.m_userManager.GetUserProfile(firstname, lastname); | 78 | profile = m_userManager.GetUserProfile(firstname, lastname); |
79 | if (profile != null) | 79 | if (profile != null) |
80 | { | 80 | { |
81 | m_Parent.InventoryService.CreateNewUserInventory(profile.UUID); | 81 | m_Parent.InventoryService.CreateNewUserInventory(profile.UUID); |
@@ -113,18 +113,22 @@ namespace OpenSim.Region.Communications.Local | |||
113 | 113 | ||
114 | if (reg != null) | 114 | if (reg != null) |
115 | { | 115 | { |
116 | response.Home = "{'region_handle':[r" + (reg.RegionLocX * 256).ToString() + ",r" + (reg.RegionLocY * 256).ToString() + "], " + | 116 | response.Home = "{'region_handle':[r" + (reg.RegionLocX*256).ToString() + ",r" + |
117 | "'position':[r" + theUser.homeLocation.X.ToString() + ",r" + theUser.homeLocation.Y.ToString() + ",r" + theUser.homeLocation.Z.ToString() + "], " + | 117 | (reg.RegionLocY*256).ToString() + "], " + |
118 | "'look_at':[r" + theUser.homeLocation.X.ToString() + ",r" + theUser.homeLocation.Y.ToString() + ",r" + theUser.homeLocation.Z.ToString() + "]}"; | 118 | "'position':[r" + theUser.homeLocation.X.ToString() + ",r" + |
119 | theUser.homeLocation.Y.ToString() + ",r" + theUser.homeLocation.Z.ToString() + "], " + | ||
120 | "'look_at':[r" + theUser.homeLocation.X.ToString() + ",r" + | ||
121 | theUser.homeLocation.Y.ToString() + ",r" + theUser.homeLocation.Z.ToString() + "]}"; | ||
119 | string capsPath = Util.GetRandomCapsPath(); | 122 | string capsPath = Util.GetRandomCapsPath(); |
120 | response.SimAddress = reg.ExternalEndPoint.Address.ToString(); | 123 | response.SimAddress = reg.ExternalEndPoint.Address.ToString(); |
121 | response.SimPort = (Int32)reg.ExternalEndPoint.Port; | 124 | response.SimPort = (Int32) reg.ExternalEndPoint.Port; |
122 | response.RegionX = reg.RegionLocX; | 125 | response.RegionX = reg.RegionLocX; |
123 | response.RegionY = reg.RegionLocY; | 126 | response.RegionY = reg.RegionLocY; |
124 | |||
125 | 127 | ||
126 | response.SeedCapability = "http://" + reg.ExternalHostName + ":" + this.serversInfo.HttpListenerPort.ToString() + "/CAPS/" + capsPath + "0000/"; | 128 | |
127 | // response.SeedCapability = "http://" + reg.ExternalHostName + ":" + this.serversInfo.HttpListenerPort.ToString() + "/CapsSeed/" + capsPath + "0000/"; | 129 | response.SeedCapability = "http://" + reg.ExternalHostName + ":" + |
130 | serversInfo.HttpListenerPort.ToString() + "/CAPS/" + capsPath + "0000/"; | ||
131 | // response.SeedCapability = "http://" + reg.ExternalHostName + ":" + this.serversInfo.HttpListenerPort.ToString() + "/CapsSeed/" + capsPath + "0000/"; | ||
128 | theUser.currentAgent.currentRegion = reg.RegionID; | 132 | theUser.currentAgent.currentRegion = reg.RegionID; |
129 | theUser.currentAgent.currentHandle = reg.RegionHandle; | 133 | theUser.currentAgent.currentHandle = reg.RegionHandle; |
130 | 134 | ||
@@ -135,11 +139,11 @@ namespace OpenSim.Region.Communications.Local | |||
135 | _login.Agent = response.AgentID; | 139 | _login.Agent = response.AgentID; |
136 | _login.Session = response.SessionID; | 140 | _login.Session = response.SessionID; |
137 | _login.SecureSession = response.SecureSessionID; | 141 | _login.SecureSession = response.SecureSessionID; |
138 | _login.CircuitCode = (uint)response.CircuitCode; | 142 | _login.CircuitCode = (uint) response.CircuitCode; |
139 | _login.StartPos = new LLVector3(128, 128, 70); | 143 | _login.StartPos = new LLVector3(128, 128, 70); |
140 | _login.CapsPath = capsPath; | 144 | _login.CapsPath = capsPath; |
141 | 145 | ||
142 | if( OnLoginToRegion != null ) | 146 | if (OnLoginToRegion != null) |
143 | { | 147 | { |
144 | OnLoginToRegion(currentRegion, _login); | 148 | OnLoginToRegion(currentRegion, _login); |
145 | } | 149 | } |
@@ -148,7 +152,6 @@ namespace OpenSim.Region.Communications.Local | |||
148 | { | 152 | { |
149 | Console.WriteLine("not found region " + currentRegion); | 153 | Console.WriteLine("not found region " + currentRegion); |
150 | } | 154 | } |
151 | |||
152 | } | 155 | } |
153 | 156 | ||
154 | protected override InventoryData CreateInventoryData(LLUUID userID) | 157 | protected override InventoryData CreateInventoryData(LLUUID userID) |
@@ -168,8 +171,8 @@ namespace OpenSim.Region.Communications.Local | |||
168 | TempHash = new Hashtable(); | 171 | TempHash = new Hashtable(); |
169 | TempHash["name"] = InvFolder.name; | 172 | TempHash["name"] = InvFolder.name; |
170 | TempHash["parent_id"] = InvFolder.parentID.ToStringHyphenated(); | 173 | TempHash["parent_id"] = InvFolder.parentID.ToStringHyphenated(); |
171 | TempHash["version"] = (Int32)InvFolder.version; | 174 | TempHash["version"] = (Int32) InvFolder.version; |
172 | TempHash["type_default"] = (Int32)InvFolder.type; | 175 | TempHash["type_default"] = (Int32) InvFolder.type; |
173 | TempHash["folder_id"] = InvFolder.folderID.ToStringHyphenated(); | 176 | TempHash["folder_id"] = InvFolder.folderID.ToStringHyphenated(); |
174 | AgentInventoryArray.Add(TempHash); | 177 | AgentInventoryArray.Add(TempHash); |
175 | } | 178 | } |
@@ -182,13 +185,13 @@ namespace OpenSim.Region.Communications.Local | |||
182 | 185 | ||
183 | ArrayList AgentInventoryArray = new ArrayList(); | 186 | ArrayList AgentInventoryArray = new ArrayList(); |
184 | Hashtable TempHash; | 187 | Hashtable TempHash; |
185 | foreach (OpenSim.Framework.InventoryFolder InvFolder in userInventory.InventoryFolders.Values) | 188 | foreach (InventoryFolder InvFolder in userInventory.InventoryFolders.Values) |
186 | { | 189 | { |
187 | TempHash = new Hashtable(); | 190 | TempHash = new Hashtable(); |
188 | TempHash["name"] = InvFolder.FolderName; | 191 | TempHash["name"] = InvFolder.FolderName; |
189 | TempHash["parent_id"] = InvFolder.ParentID.ToStringHyphenated(); | 192 | TempHash["parent_id"] = InvFolder.ParentID.ToStringHyphenated(); |
190 | TempHash["version"] = (Int32)InvFolder.Version; | 193 | TempHash["version"] = (Int32) InvFolder.Version; |
191 | TempHash["type_default"] = (Int32)InvFolder.DefaultType; | 194 | TempHash["type_default"] = (Int32) InvFolder.DefaultType; |
192 | TempHash["folder_id"] = InvFolder.FolderID.ToStringHyphenated(); | 195 | TempHash["folder_id"] = InvFolder.FolderID.ToStringHyphenated(); |
193 | AgentInventoryArray.Add(TempHash); | 196 | AgentInventoryArray.Add(TempHash); |
194 | } | 197 | } |
@@ -197,4 +200,4 @@ namespace OpenSim.Region.Communications.Local | |||
197 | } | 200 | } |
198 | } | 201 | } |
199 | } | 202 | } |
200 | } | 203 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Communications/Local/LocalUserServices.cs b/OpenSim/Region/Communications/Local/LocalUserServices.cs index 1dede97..a7687c7 100644 --- a/OpenSim/Region/Communications/Local/LocalUserServices.cs +++ b/OpenSim/Region/Communications/Local/LocalUserServices.cs | |||
@@ -27,8 +27,8 @@ | |||
27 | */ | 27 | */ |
28 | 28 | ||
29 | using System; | 29 | using System; |
30 | using OpenSim.Framework.Communications; | ||
31 | using OpenSim.Framework; | 30 | using OpenSim.Framework; |
31 | using OpenSim.Framework.Communications; | ||
32 | using OpenSim.Framework.UserManagement; | 32 | using OpenSim.Framework.UserManagement; |
33 | 33 | ||
34 | namespace OpenSim.Region.Communications.Local | 34 | namespace OpenSim.Region.Communications.Local |
@@ -41,7 +41,8 @@ namespace OpenSim.Region.Communications.Local | |||
41 | private IInventoryServices m_inventoryService; | 41 | private IInventoryServices m_inventoryService; |
42 | 42 | ||
43 | 43 | ||
44 | public LocalUserServices(NetworkServersInfo serversInfo, uint defaultHomeLocX, uint defaultHomeLocY, IInventoryServices inventoryService) | 44 | public LocalUserServices(NetworkServersInfo serversInfo, uint defaultHomeLocX, uint defaultHomeLocY, |
45 | IInventoryServices inventoryService) | ||
45 | { | 46 | { |
46 | m_serversInfo = serversInfo; | 47 | m_serversInfo = serversInfo; |
47 | 48 | ||
@@ -49,7 +50,6 @@ namespace OpenSim.Region.Communications.Local | |||
49 | m_defaultHomeY = defaultHomeLocY; | 50 | m_defaultHomeY = defaultHomeLocY; |
50 | 51 | ||
51 | m_inventoryService = inventoryService; | 52 | m_inventoryService = inventoryService; |
52 | |||
53 | } | 53 | } |
54 | 54 | ||
55 | public override UserProfileData SetupMasterUser(string firstName, string lastName) | 55 | public override UserProfileData SetupMasterUser(string firstName, string lastName) |
@@ -82,4 +82,4 @@ namespace OpenSim.Region.Communications.Local | |||
82 | return profile; | 82 | return profile; |
83 | } | 83 | } |
84 | } | 84 | } |
85 | } | 85 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Communications/Local/Properties/AssemblyInfo.cs b/OpenSim/Region/Communications/Local/Properties/AssemblyInfo.cs index ca64319..481577e 100644 --- a/OpenSim/Region/Communications/Local/Properties/AssemblyInfo.cs +++ b/OpenSim/Region/Communications/Local/Properties/AssemblyInfo.cs | |||
@@ -1,24 +1,28 @@ | |||
1 | using System.Reflection; | 1 | using System.Reflection; |
2 | using System.Runtime.InteropServices; | 2 | using System.Runtime.InteropServices; |
3 | |||
3 | // General Information about an assembly is controlled through the following | 4 | // General Information about an assembly is controlled through the following |
4 | // set of attributes. Change these attribute values to modify the information | 5 | // set of attributes. Change these attribute values to modify the information |
5 | // associated with an assembly. | 6 | // associated with an assembly. |
6 | [assembly: AssemblyTitle("OpenSim.Region.Communications.Local")] | 7 | |
7 | [assembly: AssemblyDescription("")] | 8 | [assembly : AssemblyTitle("OpenSim.Region.Communications.Local")] |
8 | [assembly: AssemblyConfiguration("")] | 9 | [assembly : AssemblyDescription("")] |
9 | [assembly: AssemblyCompany("")] | 10 | [assembly : AssemblyConfiguration("")] |
10 | [assembly: AssemblyProduct("OpenSim.Region.Communications.Local")] | 11 | [assembly : AssemblyCompany("")] |
11 | [assembly: AssemblyCopyright("Copyright © 2007")] | 12 | [assembly : AssemblyProduct("OpenSim.Region.Communications.Local")] |
12 | [assembly: AssemblyTrademark("")] | 13 | [assembly : AssemblyCopyright("Copyright © 2007")] |
13 | [assembly: AssemblyCulture("")] | 14 | [assembly : AssemblyTrademark("")] |
15 | [assembly : AssemblyCulture("")] | ||
14 | 16 | ||
15 | // Setting ComVisible to false makes the types in this assembly not visible | 17 | // Setting ComVisible to false makes the types in this assembly not visible |
16 | // to COM components. If you need to access a type in this assembly from | 18 | // to COM components. If you need to access a type in this assembly from |
17 | // COM, set the ComVisible attribute to true on that type. | 19 | // COM, set the ComVisible attribute to true on that type. |
18 | [assembly: ComVisible(false)] | 20 | |
21 | [assembly : ComVisible(false)] | ||
19 | 22 | ||
20 | // The following GUID is for the ID of the typelib if this project is exposed to COM | 23 | // The following GUID is for the ID of the typelib if this project is exposed to COM |
21 | [assembly: Guid("fb173926-bd0a-4cd0-bb45-185b2f72ddfb")] | 24 | |
25 | [assembly : Guid("fb173926-bd0a-4cd0-bb45-185b2f72ddfb")] | ||
22 | 26 | ||
23 | // Version information for an assembly consists of the following four values: | 27 | // Version information for an assembly consists of the following four values: |
24 | // | 28 | // |
@@ -29,5 +33,6 @@ using System.Runtime.InteropServices; | |||
29 | // | 33 | // |
30 | // You can specify all the values or you can default the Revision and Build Numbers | 34 | // You can specify all the values or you can default the Revision and Build Numbers |
31 | // by using the '*' as shown below: | 35 | // by using the '*' as shown below: |
32 | [assembly: AssemblyVersion("1.0.0.0")] | 36 | |
33 | [assembly: AssemblyFileVersion("1.0.0.0")] | 37 | [assembly : AssemblyVersion("1.0.0.0")] |
38 | [assembly : AssemblyFileVersion("1.0.0.0")] \ No newline at end of file | ||
diff --git a/OpenSim/Region/Communications/OGS1/CommunicationsOGS1.cs b/OpenSim/Region/Communications/OGS1/CommunicationsOGS1.cs index 1807cc7..941cc30 100644 --- a/OpenSim/Region/Communications/OGS1/CommunicationsOGS1.cs +++ b/OpenSim/Region/Communications/OGS1/CommunicationsOGS1.cs | |||
@@ -26,17 +26,17 @@ | |||
26 | * | 26 | * |
27 | */ | 27 | */ |
28 | 28 | ||
29 | using OpenSim.Framework; | ||
29 | using OpenSim.Framework.Communications; | 30 | using OpenSim.Framework.Communications; |
30 | using OpenSim.Framework.Communications.Cache; | 31 | using OpenSim.Framework.Communications.Cache; |
31 | using OpenSim.Framework; | ||
32 | using OpenSim.Framework.Servers; | 32 | using OpenSim.Framework.Servers; |
33 | 33 | ||
34 | |||
35 | namespace OpenSim.Region.Communications.OGS1 | 34 | namespace OpenSim.Region.Communications.OGS1 |
36 | { | 35 | { |
37 | public class CommunicationsOGS1 : CommunicationsManager | 36 | public class CommunicationsOGS1 : CommunicationsManager |
38 | { | 37 | { |
39 | public CommunicationsOGS1(NetworkServersInfo serversInfo, BaseHttpServer httpServer, AssetCache assetCache ) :base(serversInfo, httpServer, assetCache, false) | 38 | public CommunicationsOGS1(NetworkServersInfo serversInfo, BaseHttpServer httpServer, AssetCache assetCache) |
39 | : base(serversInfo, httpServer, assetCache, false) | ||
40 | { | 40 | { |
41 | OGS1GridServices gridInterComms = new OGS1GridServices(serversInfo, httpServer); | 41 | OGS1GridServices gridInterComms = new OGS1GridServices(serversInfo, httpServer); |
42 | m_gridService = gridInterComms; | 42 | m_gridService = gridInterComms; |
@@ -46,4 +46,4 @@ namespace OpenSim.Region.Communications.OGS1 | |||
46 | m_userService = new OGS1UserServices(this); | 46 | m_userService = new OGS1UserServices(this); |
47 | } | 47 | } |
48 | } | 48 | } |
49 | } | 49 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs b/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs index 3719c97..d9af95b 100644 --- a/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs +++ b/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs | |||
@@ -35,14 +35,12 @@ using System.Runtime.Remoting; | |||
35 | using System.Runtime.Remoting.Channels; | 35 | using System.Runtime.Remoting.Channels; |
36 | using System.Runtime.Remoting.Channels.Tcp; | 36 | using System.Runtime.Remoting.Channels.Tcp; |
37 | using System.Security.Authentication; | 37 | using System.Security.Authentication; |
38 | |||
39 | using libsecondlife; | 38 | using libsecondlife; |
40 | using Nwc.XmlRpc; | 39 | using Nwc.XmlRpc; |
41 | using OpenSim.Framework; | 40 | using OpenSim.Framework; |
42 | using OpenSim.Framework.Communications; | 41 | using OpenSim.Framework.Communications; |
43 | using OpenSim.Framework.Console; | 42 | using OpenSim.Framework.Console; |
44 | using OpenSim.Framework.Servers; | 43 | using OpenSim.Framework.Servers; |
45 | using OpenSim.Framework; | ||
46 | using OpenSim.Region.Communications.Local; | 44 | using OpenSim.Region.Communications.Local; |
47 | 45 | ||
48 | namespace OpenSim.Region.Communications.OGS1 | 46 | namespace OpenSim.Region.Communications.OGS1 |
@@ -65,10 +63,10 @@ namespace OpenSim.Region.Communications.OGS1 | |||
65 | { | 63 | { |
66 | serversInfo = servers_info; | 64 | serversInfo = servers_info; |
67 | httpServer = httpServe; | 65 | httpServer = httpServe; |
68 | httpServer.AddXmlRPCHandler("expect_user", this.ExpectUser); | 66 | httpServer.AddXmlRPCHandler("expect_user", ExpectUser); |
69 | httpServer.AddXmlRPCHandler("check", this.PingCheckReply); | 67 | httpServer.AddXmlRPCHandler("check", PingCheckReply); |
70 | 68 | ||
71 | this.StartRemoting(); | 69 | StartRemoting(); |
72 | } | 70 | } |
73 | 71 | ||
74 | /// <summary> | 72 | /// <summary> |
@@ -99,14 +97,14 @@ namespace OpenSim.Region.Communications.OGS1 | |||
99 | // Send Request | 97 | // Send Request |
100 | XmlRpcRequest GridReq = new XmlRpcRequest("simulator_login", SendParams); | 98 | XmlRpcRequest GridReq = new XmlRpcRequest("simulator_login", SendParams); |
101 | XmlRpcResponse GridResp = GridReq.Send(serversInfo.GridURL, 10000); | 99 | XmlRpcResponse GridResp = GridReq.Send(serversInfo.GridURL, 10000); |
102 | Hashtable GridRespData = (Hashtable)GridResp.Value; | 100 | Hashtable GridRespData = (Hashtable) GridResp.Value; |
103 | 101 | ||
104 | Hashtable griddatahash = GridRespData; | 102 | Hashtable griddatahash = GridRespData; |
105 | 103 | ||
106 | // Process Response | 104 | // Process Response |
107 | if (GridRespData.ContainsKey("error")) | 105 | if (GridRespData.ContainsKey("error")) |
108 | { | 106 | { |
109 | string errorstring = (string)GridRespData["error"]; | 107 | string errorstring = (string) GridRespData["error"]; |
110 | MainLog.Instance.Error("Unable to connect to grid: " + errorstring); | 108 | MainLog.Instance.Error("Unable to connect to grid: " + errorstring); |
111 | return null; | 109 | return null; |
112 | } | 110 | } |
@@ -121,8 +119,7 @@ namespace OpenSim.Region.Communications.OGS1 | |||
121 | /// <returns></returns> | 119 | /// <returns></returns> |
122 | public List<SimpleRegionInfo> RequestNeighbours(uint x, uint y) | 120 | public List<SimpleRegionInfo> RequestNeighbours(uint x, uint y) |
123 | { | 121 | { |
124 | 122 | Hashtable respData = MapBlockQuery((int) x - 1, (int) y - 1, (int) x + 1, (int) y + 1); | |
125 | Hashtable respData = MapBlockQuery((int)x - 1, (int)y - 1, (int)x + 1, (int)y + 1); | ||
126 | 123 | ||
127 | List<SimpleRegionInfo> neighbours = new List<SimpleRegionInfo>(); | 124 | List<SimpleRegionInfo> neighbours = new List<SimpleRegionInfo>(); |
128 | 125 | ||
@@ -134,16 +131,15 @@ namespace OpenSim.Region.Communications.OGS1 | |||
134 | uint regY = Convert.ToUInt32(neighbourData["y"]); | 131 | uint regY = Convert.ToUInt32(neighbourData["y"]); |
135 | if ((x != regX) || (y != regY)) | 132 | if ((x != regX) || (y != regY)) |
136 | { | 133 | { |
137 | 134 | string simIp = (string) neighbourData["sim_ip"]; | |
138 | string simIp = (string)neighbourData["sim_ip"]; | ||
139 | 135 | ||
140 | int port = Convert.ToInt32(neighbourData["sim_port"]); | 136 | int port = Convert.ToInt32(neighbourData["sim_port"]); |
141 | string externalUri = (string)neighbourData["sim_uri"]; | 137 | string externalUri = (string) neighbourData["sim_uri"]; |
142 | 138 | ||
143 | string externalIpStr = OpenSim.Framework.Util.GetHostFromDNS(simIp).ToString(); | 139 | string externalIpStr = Util.GetHostFromDNS(simIp).ToString(); |
144 | SimpleRegionInfo sri = new SimpleRegionInfo(regX, regY, simIp, port); | 140 | SimpleRegionInfo sri = new SimpleRegionInfo(regX, regY, simIp, port); |
145 | sri.RemotingPort = Convert.ToUInt32(neighbourData["remoting_port"]); | 141 | sri.RemotingPort = Convert.ToUInt32(neighbourData["remoting_port"]); |
146 | sri.RegionID = new LLUUID((string)neighbourData["uuid"]); | 142 | sri.RegionID = new LLUUID((string) neighbourData["uuid"]); |
147 | 143 | ||
148 | neighbours.Add(sri); | 144 | neighbours.Add(sri); |
149 | } | 145 | } |
@@ -175,11 +171,11 @@ namespace OpenSim.Region.Communications.OGS1 | |||
175 | { | 171 | { |
176 | Hashtable requestData = new Hashtable(); | 172 | Hashtable requestData = new Hashtable(); |
177 | requestData["region_handle"] = regionHandle.ToString(); | 173 | requestData["region_handle"] = regionHandle.ToString(); |
178 | requestData["authkey"] = this.serversInfo.GridSendKey; | 174 | requestData["authkey"] = serversInfo.GridSendKey; |
179 | ArrayList SendParams = new ArrayList(); | 175 | ArrayList SendParams = new ArrayList(); |
180 | SendParams.Add(requestData); | 176 | SendParams.Add(requestData); |
181 | XmlRpcRequest GridReq = new XmlRpcRequest("simulator_data_request", SendParams); | 177 | XmlRpcRequest GridReq = new XmlRpcRequest("simulator_data_request", SendParams); |
182 | XmlRpcResponse GridResp = GridReq.Send(this.serversInfo.GridURL, 3000); | 178 | XmlRpcResponse GridResp = GridReq.Send(serversInfo.GridURL, 3000); |
183 | 179 | ||
184 | Hashtable responseData = (Hashtable) GridResp.Value; | 180 | Hashtable responseData = (Hashtable) GridResp.Value; |
185 | 181 | ||
@@ -205,7 +201,7 @@ namespace OpenSim.Region.Communications.OGS1 | |||
205 | regionInfo.RegionID = new LLUUID((string) responseData["region_UUID"]); | 201 | regionInfo.RegionID = new LLUUID((string) responseData["region_UUID"]); |
206 | regionInfo.RegionName = (string) responseData["region_name"]; | 202 | regionInfo.RegionName = (string) responseData["region_name"]; |
207 | 203 | ||
208 | m_remoteRegionInfoCache.Add( regionHandle, regionInfo ); | 204 | m_remoteRegionInfoCache.Add(regionHandle, regionInfo); |
209 | } | 205 | } |
210 | 206 | ||
211 | return regionInfo; | 207 | return regionInfo; |
@@ -234,11 +230,11 @@ namespace OpenSim.Region.Communications.OGS1 | |||
234 | neighbour.X = Convert.ToUInt16(n["x"]); | 230 | neighbour.X = Convert.ToUInt16(n["x"]); |
235 | neighbour.Y = Convert.ToUInt16(n["y"]); | 231 | neighbour.Y = Convert.ToUInt16(n["y"]); |
236 | 232 | ||
237 | neighbour.Name = (string)n["name"]; | 233 | neighbour.Name = (string) n["name"]; |
238 | neighbour.Access = Convert.ToByte(n["access"]); | 234 | neighbour.Access = Convert.ToByte(n["access"]); |
239 | neighbour.RegionFlags = Convert.ToUInt32(n["region-flags"]); | 235 | neighbour.RegionFlags = Convert.ToUInt32(n["region-flags"]); |
240 | neighbour.WaterHeight = Convert.ToByte(n["water-height"]); | 236 | neighbour.WaterHeight = Convert.ToByte(n["water-height"]); |
241 | neighbour.MapImageId = new LLUUID((string)n["map-image-id"]); | 237 | neighbour.MapImageId = new LLUUID((string) n["map-image-id"]); |
242 | 238 | ||
243 | neighbours.Add(neighbour); | 239 | neighbours.Add(neighbour); |
244 | } | 240 | } |
@@ -267,7 +263,7 @@ namespace OpenSim.Region.Communications.OGS1 | |||
267 | parameters.Add(param); | 263 | parameters.Add(param); |
268 | XmlRpcRequest req = new XmlRpcRequest("map_block", parameters); | 264 | XmlRpcRequest req = new XmlRpcRequest("map_block", parameters); |
269 | XmlRpcResponse resp = req.Send(serversInfo.GridURL, 10000); | 265 | XmlRpcResponse resp = req.Send(serversInfo.GridURL, 10000); |
270 | Hashtable respData = (Hashtable)resp.Value; | 266 | Hashtable respData = (Hashtable) resp.Value; |
271 | return respData; | 267 | return respData; |
272 | } | 268 | } |
273 | 269 | ||
@@ -300,15 +296,15 @@ namespace OpenSim.Region.Communications.OGS1 | |||
300 | public XmlRpcResponse ExpectUser(XmlRpcRequest request) | 296 | public XmlRpcResponse ExpectUser(XmlRpcRequest request) |
301 | { | 297 | { |
302 | Console.WriteLine("Expecting User..."); | 298 | Console.WriteLine("Expecting User..."); |
303 | Hashtable requestData = (Hashtable)request.Params[0]; | 299 | Hashtable requestData = (Hashtable) request.Params[0]; |
304 | AgentCircuitData agentData = new AgentCircuitData(); | 300 | AgentCircuitData agentData = new AgentCircuitData(); |
305 | agentData.SessionID = new LLUUID((string)requestData["session_id"]); | 301 | agentData.SessionID = new LLUUID((string) requestData["session_id"]); |
306 | agentData.SecureSessionID = new LLUUID((string)requestData["secure_session_id"]); | 302 | agentData.SecureSessionID = new LLUUID((string) requestData["secure_session_id"]); |
307 | agentData.firstname = (string)requestData["firstname"]; | 303 | agentData.firstname = (string) requestData["firstname"]; |
308 | agentData.lastname = (string)requestData["lastname"]; | 304 | agentData.lastname = (string) requestData["lastname"]; |
309 | agentData.AgentID = new LLUUID((string)requestData["agent_id"]); | 305 | agentData.AgentID = new LLUUID((string) requestData["agent_id"]); |
310 | agentData.circuitcode = Convert.ToUInt32(requestData["circuit_code"]); | 306 | agentData.circuitcode = Convert.ToUInt32(requestData["circuit_code"]); |
311 | agentData.CapsPath = (string)requestData["caps_path"]; | 307 | agentData.CapsPath = (string) requestData["caps_path"]; |
312 | 308 | ||
313 | if (requestData.ContainsKey("child_agent") && requestData["child_agent"].Equals("1")) | 309 | if (requestData.ContainsKey("child_agent") && requestData["child_agent"].Equals("1")) |
314 | { | 310 | { |
@@ -316,12 +312,14 @@ namespace OpenSim.Region.Communications.OGS1 | |||
316 | } | 312 | } |
317 | else | 313 | else |
318 | { | 314 | { |
319 | agentData.startpos = new LLVector3(Convert.ToUInt32(requestData["startpos_x"]), Convert.ToUInt32(requestData["startpos_y"]), Convert.ToUInt32(requestData["startpos_z"])); | 315 | agentData.startpos = |
316 | new LLVector3(Convert.ToUInt32(requestData["startpos_x"]), | ||
317 | Convert.ToUInt32(requestData["startpos_y"]), | ||
318 | Convert.ToUInt32(requestData["startpos_z"])); | ||
320 | agentData.child = false; | 319 | agentData.child = false; |
321 | |||
322 | } | 320 | } |
323 | 321 | ||
324 | ulong regionHandle = Convert.ToUInt64((string)requestData["regionhandle"]); | 322 | ulong regionHandle = Convert.ToUInt64((string) requestData["regionhandle"]); |
325 | 323 | ||
326 | m_localBackend.TriggerExpectUser(regionHandle, agentData); | 324 | m_localBackend.TriggerExpectUser(regionHandle, agentData); |
327 | 325 | ||
@@ -331,6 +329,7 @@ namespace OpenSim.Region.Communications.OGS1 | |||
331 | } | 329 | } |
332 | 330 | ||
333 | #region m_interRegion Comms | 331 | #region m_interRegion Comms |
332 | |||
334 | /// <summary> | 333 | /// <summary> |
335 | /// | 334 | /// |
336 | /// </summary> | 335 | /// </summary> |
@@ -339,13 +338,16 @@ namespace OpenSim.Region.Communications.OGS1 | |||
339 | TcpChannel ch = new TcpChannel(NetworkServersInfo.RemotingListenerPort); | 338 | TcpChannel ch = new TcpChannel(NetworkServersInfo.RemotingListenerPort); |
340 | ChannelServices.RegisterChannel(ch, false); // Disabled security as Mono doesnt support this. | 339 | ChannelServices.RegisterChannel(ch, false); // Disabled security as Mono doesnt support this. |
341 | 340 | ||
342 | WellKnownServiceTypeEntry wellType = new WellKnownServiceTypeEntry(typeof(OGS1InterRegionRemoting), "InterRegions", WellKnownObjectMode.Singleton); | 341 | WellKnownServiceTypeEntry wellType = |
342 | new WellKnownServiceTypeEntry(typeof (OGS1InterRegionRemoting), "InterRegions", | ||
343 | WellKnownObjectMode.Singleton); | ||
343 | RemotingConfiguration.RegisterWellKnownServiceType(wellType); | 344 | RemotingConfiguration.RegisterWellKnownServiceType(wellType); |
344 | InterRegionSingleton.Instance.OnArrival += this.TriggerExpectAvatarCrossing; | 345 | InterRegionSingleton.Instance.OnArrival += TriggerExpectAvatarCrossing; |
345 | InterRegionSingleton.Instance.OnChildAgent += this.IncomingChildAgent; | 346 | InterRegionSingleton.Instance.OnChildAgent += IncomingChildAgent; |
346 | } | 347 | } |
347 | 348 | ||
348 | #region Methods called by regions in this instance | 349 | #region Methods called by regions in this instance |
350 | |||
349 | /// <summary> | 351 | /// <summary> |
350 | /// | 352 | /// |
351 | /// </summary> | 353 | /// </summary> |
@@ -361,17 +363,19 @@ namespace OpenSim.Region.Communications.OGS1 | |||
361 | return true; | 363 | return true; |
362 | } | 364 | } |
363 | 365 | ||
364 | RegionInfo regInfo = this.RequestNeighbourInfo(regionHandle); | 366 | RegionInfo regInfo = RequestNeighbourInfo(regionHandle); |
365 | if (regInfo != null) | 367 | if (regInfo != null) |
366 | { | 368 | { |
367 | //don't want to be creating a new link to the remote instance every time like we are here | 369 | //don't want to be creating a new link to the remote instance every time like we are here |
368 | bool retValue = false; | 370 | bool retValue = false; |
369 | 371 | ||
370 | 372 | ||
371 | OGS1InterRegionRemoting remObject = (OGS1InterRegionRemoting)Activator.GetObject( | 373 | OGS1InterRegionRemoting remObject = (OGS1InterRegionRemoting) Activator.GetObject( |
372 | typeof(OGS1InterRegionRemoting), | 374 | typeof (OGS1InterRegionRemoting), |
373 | "tcp://" + regInfo.RemotingAddress + ":" + regInfo.RemotingPort + "/InterRegions"); | 375 | "tcp://" + regInfo.RemotingAddress + |
374 | 376 | ":" + regInfo.RemotingPort + | |
377 | "/InterRegions"); | ||
378 | |||
375 | if (remObject != null) | 379 | if (remObject != null) |
376 | { | 380 | { |
377 | retValue = remObject.InformRegionOfChildAgent(regionHandle, agentData); | 381 | retValue = remObject.InformRegionOfChildAgent(regionHandle, agentData); |
@@ -388,7 +392,7 @@ namespace OpenSim.Region.Communications.OGS1 | |||
388 | 392 | ||
389 | return false; | 393 | return false; |
390 | } | 394 | } |
391 | catch (System.Runtime.Remoting.RemotingException e) | 395 | catch (RemotingException e) |
392 | { | 396 | { |
393 | MainLog.Instance.Error("Remoting Error: Unable to connect to remote region.\n" + e.ToString()); | 397 | MainLog.Instance.Error("Remoting Error: Unable to connect to remote region.\n" + e.ToString()); |
394 | return false; | 398 | return false; |
@@ -432,13 +436,15 @@ namespace OpenSim.Region.Communications.OGS1 | |||
432 | return true; | 436 | return true; |
433 | } | 437 | } |
434 | 438 | ||
435 | RegionInfo regInfo = this.RequestNeighbourInfo(regionHandle); | 439 | RegionInfo regInfo = RequestNeighbourInfo(regionHandle); |
436 | if (regInfo != null) | 440 | if (regInfo != null) |
437 | { | 441 | { |
438 | bool retValue = false; | 442 | bool retValue = false; |
439 | OGS1InterRegionRemoting remObject = (OGS1InterRegionRemoting)Activator.GetObject( | 443 | OGS1InterRegionRemoting remObject = (OGS1InterRegionRemoting) Activator.GetObject( |
440 | typeof(OGS1InterRegionRemoting), | 444 | typeof (OGS1InterRegionRemoting), |
441 | "tcp://" + regInfo.RemotingAddress + ":" + regInfo.RemotingPort + "/InterRegions"); | 445 | "tcp://" + regInfo.RemotingAddress + |
446 | ":" + regInfo.RemotingPort + | ||
447 | "/InterRegions"); | ||
442 | if (remObject != null) | 448 | if (remObject != null) |
443 | { | 449 | { |
444 | retValue = remObject.ExpectAvatarCrossing(regionHandle, agentID, position, isFlying); | 450 | retValue = remObject.ExpectAvatarCrossing(regionHandle, agentID, position, isFlying); |
@@ -455,7 +461,7 @@ namespace OpenSim.Region.Communications.OGS1 | |||
455 | // to inform it. | 461 | // to inform it. |
456 | return false; | 462 | return false; |
457 | } | 463 | } |
458 | catch (System.Runtime.Remoting.RemotingException e) | 464 | catch (RemotingException e) |
459 | { | 465 | { |
460 | MainLog.Instance.Error("Remoting Error: Unable to connect to remote region.\n" + e.ToString()); | 466 | MainLog.Instance.Error("Remoting Error: Unable to connect to remote region.\n" + e.ToString()); |
461 | return false; | 467 | return false; |
@@ -474,6 +480,7 @@ namespace OpenSim.Region.Communications.OGS1 | |||
474 | #endregion | 480 | #endregion |
475 | 481 | ||
476 | #region Methods triggered by calls from external instances | 482 | #region Methods triggered by calls from external instances |
483 | |||
477 | /// <summary> | 484 | /// <summary> |
478 | /// | 485 | /// |
479 | /// </summary> | 486 | /// </summary> |
@@ -486,7 +493,7 @@ namespace OpenSim.Region.Communications.OGS1 | |||
486 | { | 493 | { |
487 | return m_localBackend.IncomingChildAgent(regionHandle, agentData); | 494 | return m_localBackend.IncomingChildAgent(regionHandle, agentData); |
488 | } | 495 | } |
489 | catch (System.Runtime.Remoting.RemotingException e) | 496 | catch (RemotingException e) |
490 | { | 497 | { |
491 | MainLog.Instance.Error("Remoting Error: Unable to connect to remote region.\n" + e.ToString()); | 498 | MainLog.Instance.Error("Remoting Error: Unable to connect to remote region.\n" + e.ToString()); |
492 | return false; | 499 | return false; |
@@ -502,18 +509,19 @@ namespace OpenSim.Region.Communications.OGS1 | |||
502 | /// <returns></returns> | 509 | /// <returns></returns> |
503 | public bool TriggerExpectAvatarCrossing(ulong regionHandle, LLUUID agentID, LLVector3 position, bool isFlying) | 510 | public bool TriggerExpectAvatarCrossing(ulong regionHandle, LLUUID agentID, LLVector3 position, bool isFlying) |
504 | { | 511 | { |
505 | |||
506 | try | 512 | try |
507 | { | 513 | { |
508 | return m_localBackend.TriggerExpectAvatarCrossing(regionHandle, agentID, position, isFlying); | 514 | return m_localBackend.TriggerExpectAvatarCrossing(regionHandle, agentID, position, isFlying); |
509 | } | 515 | } |
510 | catch (System.Runtime.Remoting.RemotingException e) | 516 | catch (RemotingException e) |
511 | { | 517 | { |
512 | MainLog.Instance.Error("Remoting Error: Unable to connect to remote region.\n" + e.ToString()); | 518 | MainLog.Instance.Error("Remoting Error: Unable to connect to remote region.\n" + e.ToString()); |
513 | return false; | 519 | return false; |
514 | } | 520 | } |
515 | } | 521 | } |
522 | |||
516 | #endregion | 523 | #endregion |
524 | |||
517 | #endregion | 525 | #endregion |
518 | } | 526 | } |
519 | } | 527 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Communications/OGS1/OGS1InterSimComms.cs b/OpenSim/Region/Communications/OGS1/OGS1InterSimComms.cs index 0b7bd82..a127010 100644 --- a/OpenSim/Region/Communications/OGS1/OGS1InterSimComms.cs +++ b/OpenSim/Region/Communications/OGS1/OGS1InterSimComms.cs | |||
@@ -27,17 +27,19 @@ | |||
27 | */ | 27 | */ |
28 | 28 | ||
29 | using System; | 29 | using System; |
30 | using System.Runtime.Remoting; | ||
30 | using libsecondlife; | 31 | using libsecondlife; |
31 | using OpenSim.Framework; | 32 | using OpenSim.Framework; |
32 | 33 | ||
33 | namespace OpenSim.Region.Communications.OGS1 | 34 | namespace OpenSim.Region.Communications.OGS1 |
34 | { | 35 | { |
35 | public delegate bool InformRegionChild(ulong regionHandle, AgentCircuitData agentData); | 36 | public delegate bool InformRegionChild(ulong regionHandle, AgentCircuitData agentData); |
37 | |||
36 | public delegate bool ExpectArrival(ulong regionHandle, LLUUID agentID, LLVector3 position, bool isFlying); | 38 | public delegate bool ExpectArrival(ulong regionHandle, LLUUID agentID, LLVector3 position, bool isFlying); |
37 | 39 | ||
38 | public sealed class InterRegionSingleton | 40 | public sealed class InterRegionSingleton |
39 | { | 41 | { |
40 | static readonly InterRegionSingleton instance = new InterRegionSingleton(); | 42 | private static readonly InterRegionSingleton instance = new InterRegionSingleton(); |
41 | 43 | ||
42 | public event InformRegionChild OnChildAgent; | 44 | public event InformRegionChild OnChildAgent; |
43 | public event ExpectArrival OnArrival; | 45 | public event ExpectArrival OnArrival; |
@@ -46,16 +48,13 @@ namespace OpenSim.Region.Communications.OGS1 | |||
46 | { | 48 | { |
47 | } | 49 | } |
48 | 50 | ||
49 | InterRegionSingleton() | 51 | private InterRegionSingleton() |
50 | { | 52 | { |
51 | } | 53 | } |
52 | 54 | ||
53 | public static InterRegionSingleton Instance | 55 | public static InterRegionSingleton Instance |
54 | { | 56 | { |
55 | get | 57 | get { return instance; } |
56 | { | ||
57 | return instance; | ||
58 | } | ||
59 | } | 58 | } |
60 | 59 | ||
61 | public bool InformRegionOfChildAgent(ulong regionHandle, AgentCircuitData agentData) | 60 | public bool InformRegionOfChildAgent(ulong regionHandle, AgentCircuitData agentData) |
@@ -79,7 +78,6 @@ namespace OpenSim.Region.Communications.OGS1 | |||
79 | 78 | ||
80 | public class OGS1InterRegionRemoting : MarshalByRefObject | 79 | public class OGS1InterRegionRemoting : MarshalByRefObject |
81 | { | 80 | { |
82 | |||
83 | public OGS1InterRegionRemoting() | 81 | public OGS1InterRegionRemoting() |
84 | { | 82 | { |
85 | } | 83 | } |
@@ -90,7 +88,7 @@ namespace OpenSim.Region.Communications.OGS1 | |||
90 | { | 88 | { |
91 | return InterRegionSingleton.Instance.InformRegionOfChildAgent(regionHandle, agentData); | 89 | return InterRegionSingleton.Instance.InformRegionOfChildAgent(regionHandle, agentData); |
92 | } | 90 | } |
93 | catch (System.Runtime.Remoting.RemotingException e) | 91 | catch (RemotingException e) |
94 | { | 92 | { |
95 | Console.WriteLine("Remoting Error: Unable to connect to remote region.\n" + e.ToString()); | 93 | Console.WriteLine("Remoting Error: Unable to connect to remote region.\n" + e.ToString()); |
96 | return false; | 94 | return false; |
@@ -103,11 +101,11 @@ namespace OpenSim.Region.Communications.OGS1 | |||
103 | { | 101 | { |
104 | return InterRegionSingleton.Instance.ExpectAvatarCrossing(regionHandle, agentID, position, isFlying); | 102 | return InterRegionSingleton.Instance.ExpectAvatarCrossing(regionHandle, agentID, position, isFlying); |
105 | } | 103 | } |
106 | catch (System.Runtime.Remoting.RemotingException e) | 104 | catch (RemotingException e) |
107 | { | 105 | { |
108 | Console.WriteLine("Remoting Error: Unable to connect to remote region.\n" + e.ToString()); | 106 | Console.WriteLine("Remoting Error: Unable to connect to remote region.\n" + e.ToString()); |
109 | return false; | 107 | return false; |
110 | } | 108 | } |
111 | } | 109 | } |
112 | } | 110 | } |
113 | } | 111 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Communications/OGS1/OGS1InventoryService.cs b/OpenSim/Region/Communications/OGS1/OGS1InventoryService.cs index 11dee2d..49fdee9 100644 --- a/OpenSim/Region/Communications/OGS1/OGS1InventoryService.cs +++ b/OpenSim/Region/Communications/OGS1/OGS1InventoryService.cs | |||
@@ -28,46 +28,39 @@ | |||
28 | 28 | ||
29 | using System.Collections.Generic; | 29 | using System.Collections.Generic; |
30 | using libsecondlife; | 30 | using libsecondlife; |
31 | using OpenSim.Framework; | ||
31 | using OpenSim.Framework.Communications; | 32 | using OpenSim.Framework.Communications; |
32 | using OpenSim.Framework.Communications.Cache; | 33 | using OpenSim.Framework.Communications.Cache; |
33 | using OpenSim.Framework; | ||
34 | |||
35 | 34 | ||
36 | namespace OpenSim.Region.Communications.OGS1 | 35 | namespace OpenSim.Region.Communications.OGS1 |
37 | { | 36 | { |
38 | public class OGS1InventoryService : IInventoryServices | 37 | public class OGS1InventoryService : IInventoryServices |
39 | { | 38 | { |
40 | |||
41 | public OGS1InventoryService() | 39 | public OGS1InventoryService() |
42 | { | 40 | { |
43 | |||
44 | } | 41 | } |
45 | 42 | ||
46 | #region IInventoryServices Members | 43 | #region IInventoryServices Members |
47 | 44 | ||
48 | public void RequestInventoryForUser(LLUUID userID, InventoryFolderInfo folderCallBack, InventoryItemInfo itemCallBack) | 45 | public void RequestInventoryForUser(LLUUID userID, InventoryFolderInfo folderCallBack, |
46 | InventoryItemInfo itemCallBack) | ||
49 | { | 47 | { |
50 | |||
51 | } | 48 | } |
52 | 49 | ||
53 | public void AddNewInventoryFolder(LLUUID userID, InventoryFolderImpl folder) | 50 | public void AddNewInventoryFolder(LLUUID userID, InventoryFolderImpl folder) |
54 | { | 51 | { |
55 | |||
56 | } | 52 | } |
57 | 53 | ||
58 | public void AddNewInventoryItem(LLUUID userID, InventoryItemBase item) | 54 | public void AddNewInventoryItem(LLUUID userID, InventoryItemBase item) |
59 | { | 55 | { |
60 | |||
61 | } | 56 | } |
62 | 57 | ||
63 | public void DeleteInventoryItem(LLUUID userID, InventoryItemBase item) | 58 | public void DeleteInventoryItem(LLUUID userID, InventoryItemBase item) |
64 | { | 59 | { |
65 | |||
66 | } | 60 | } |
67 | 61 | ||
68 | public void CreateNewUserInventory(LLUUID user) | 62 | public void CreateNewUserInventory(LLUUID user) |
69 | { | 63 | { |
70 | |||
71 | } | 64 | } |
72 | 65 | ||
73 | public List<InventoryFolderBase> RequestFirstLevelFolders(LLUUID userID) | 66 | public List<InventoryFolderBase> RequestFirstLevelFolders(LLUUID userID) |
@@ -77,4 +70,4 @@ namespace OpenSim.Region.Communications.OGS1 | |||
77 | 70 | ||
78 | #endregion | 71 | #endregion |
79 | } | 72 | } |
80 | } | 73 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Communications/OGS1/OGS1UserServices.cs b/OpenSim/Region/Communications/OGS1/OGS1UserServices.cs index 19a3c3b..d00a813 100644 --- a/OpenSim/Region/Communications/OGS1/OGS1UserServices.cs +++ b/OpenSim/Region/Communications/OGS1/OGS1UserServices.cs | |||
@@ -28,16 +28,19 @@ | |||
28 | 28 | ||
29 | using System; | 29 | using System; |
30 | using System.Collections; | 30 | using System.Collections; |
31 | using System.Net; | ||
31 | using libsecondlife; | 32 | using libsecondlife; |
32 | using Nwc.XmlRpc; | 33 | using Nwc.XmlRpc; |
33 | using OpenSim.Framework.Interfaces; | ||
34 | using OpenSim.Framework; | 34 | using OpenSim.Framework; |
35 | using OpenSim.Framework.Console; | ||
36 | using OpenSim.Framework.Interfaces; | ||
35 | 37 | ||
36 | namespace OpenSim.Region.Communications.OGS1 | 38 | namespace OpenSim.Region.Communications.OGS1 |
37 | { | 39 | { |
38 | public class OGS1UserServices :IUserService | 40 | public class OGS1UserServices : IUserService |
39 | { | 41 | { |
40 | CommunicationsOGS1 m_parent; | 42 | private CommunicationsOGS1 m_parent; |
43 | |||
41 | public OGS1UserServices(CommunicationsOGS1 parent) | 44 | public OGS1UserServices(CommunicationsOGS1 parent) |
42 | { | 45 | { |
43 | m_parent = parent; | 46 | m_parent = parent; |
@@ -47,32 +50,41 @@ namespace OpenSim.Region.Communications.OGS1 | |||
47 | { | 50 | { |
48 | if (data.Contains("error_type")) | 51 | if (data.Contains("error_type")) |
49 | { | 52 | { |
50 | Console.WriteLine("Error sent by user server when trying to get user profile: (" + data["error_type"] + "): " + data["error_desc"]); | 53 | Console.WriteLine("Error sent by user server when trying to get user profile: (" + data["error_type"] + |
54 | "): " + data["error_desc"]); | ||
51 | return null; | 55 | return null; |
52 | } | 56 | } |
53 | 57 | ||
54 | UserProfileData userData = new UserProfileData(); | 58 | UserProfileData userData = new UserProfileData(); |
55 | userData.username = (string)data["firstname"]; | 59 | userData.username = (string) data["firstname"]; |
56 | userData.surname = (string)data["lastname"]; | 60 | userData.surname = (string) data["lastname"]; |
57 | userData.UUID = new LLUUID((string)data["uuid"]); | 61 | userData.UUID = new LLUUID((string) data["uuid"]); |
58 | userData.userInventoryURI = (string)data["server_inventory"]; | 62 | userData.userInventoryURI = (string) data["server_inventory"]; |
59 | userData.userAssetURI = (string)data["server_asset"]; | 63 | userData.userAssetURI = (string) data["server_asset"]; |
60 | userData.profileFirstText = (string)data["profile_firstlife_about"]; | 64 | userData.profileFirstText = (string) data["profile_firstlife_about"]; |
61 | userData.profileFirstImage = new LLUUID((string)data["profile_firstlife_image"]); | 65 | userData.profileFirstImage = new LLUUID((string) data["profile_firstlife_image"]); |
62 | userData.profileCanDoMask = Convert.ToUInt32((string)data["profile_can_do"]); | 66 | userData.profileCanDoMask = Convert.ToUInt32((string) data["profile_can_do"]); |
63 | userData.profileWantDoMask = Convert.ToUInt32(data["profile_want_do"]); | 67 | userData.profileWantDoMask = Convert.ToUInt32(data["profile_want_do"]); |
64 | userData.profileImage = new LLUUID((string)data["profile_image"]); | 68 | userData.profileImage = new LLUUID((string) data["profile_image"]); |
65 | userData.lastLogin = Convert.ToInt32((string)data["profile_lastlogin"]); | 69 | userData.lastLogin = Convert.ToInt32((string) data["profile_lastlogin"]); |
66 | userData.homeRegion = Convert.ToUInt64((string)data["home_region"]); | 70 | userData.homeRegion = Convert.ToUInt64((string) data["home_region"]); |
67 | userData.homeLocation = new LLVector3((float)Convert.ToDecimal((string)data["home_coordinates_x"]), (float)Convert.ToDecimal((string)data["home_coordinates_y"]), (float)Convert.ToDecimal((string)data["home_coordinates_z"])); | 71 | userData.homeLocation = |
68 | userData.homeLookAt = new LLVector3((float)Convert.ToDecimal((string)data["home_look_x"]), (float)Convert.ToDecimal((string)data["home_look_y"]), (float)Convert.ToDecimal((string)data["home_look_z"])); | 72 | new LLVector3((float) Convert.ToDecimal((string) data["home_coordinates_x"]), |
73 | (float) Convert.ToDecimal((string) data["home_coordinates_y"]), | ||
74 | (float) Convert.ToDecimal((string) data["home_coordinates_z"])); | ||
75 | userData.homeLookAt = | ||
76 | new LLVector3((float) Convert.ToDecimal((string) data["home_look_x"]), | ||
77 | (float) Convert.ToDecimal((string) data["home_look_y"]), | ||
78 | (float) Convert.ToDecimal((string) data["home_look_z"])); | ||
69 | 79 | ||
70 | return userData; | 80 | return userData; |
71 | } | 81 | } |
82 | |||
72 | public UserProfileData GetUserProfile(string firstName, string lastName) | 83 | public UserProfileData GetUserProfile(string firstName, string lastName) |
73 | { | 84 | { |
74 | return GetUserProfile(firstName + " " + lastName); | 85 | return GetUserProfile(firstName + " " + lastName); |
75 | } | 86 | } |
87 | |||
76 | public UserProfileData GetUserProfile(string name) | 88 | public UserProfileData GetUserProfile(string name) |
77 | { | 89 | { |
78 | try | 90 | try |
@@ -83,16 +95,18 @@ namespace OpenSim.Region.Communications.OGS1 | |||
83 | parameters.Add(param); | 95 | parameters.Add(param); |
84 | XmlRpcRequest req = new XmlRpcRequest("get_user_by_name", parameters); | 96 | XmlRpcRequest req = new XmlRpcRequest("get_user_by_name", parameters); |
85 | XmlRpcResponse resp = req.Send(m_parent.NetworkServersInfo.UserURL, 3000); | 97 | XmlRpcResponse resp = req.Send(m_parent.NetworkServersInfo.UserURL, 3000); |
86 | Hashtable respData = (Hashtable)resp.Value; | 98 | Hashtable respData = (Hashtable) resp.Value; |
87 | 99 | ||
88 | return ConvertXMLRPCDataToUserProfile(respData); | 100 | return ConvertXMLRPCDataToUserProfile(respData); |
89 | } | 101 | } |
90 | catch (System.Net.WebException e) | 102 | catch (WebException e) |
91 | { | 103 | { |
92 | OpenSim.Framework.Console.MainLog.Instance.Warn("Error when trying to fetch profile data by name from remote user server: " + e.Message); | 104 | MainLog.Instance.Warn("Error when trying to fetch profile data by name from remote user server: " + |
105 | e.Message); | ||
93 | } | 106 | } |
94 | return null; | 107 | return null; |
95 | } | 108 | } |
109 | |||
96 | public UserProfileData GetUserProfile(LLUUID avatarID) | 110 | public UserProfileData GetUserProfile(LLUUID avatarID) |
97 | { | 111 | { |
98 | try | 112 | try |
@@ -103,18 +117,19 @@ namespace OpenSim.Region.Communications.OGS1 | |||
103 | parameters.Add(param); | 117 | parameters.Add(param); |
104 | XmlRpcRequest req = new XmlRpcRequest("get_user_by_uuid", parameters); | 118 | XmlRpcRequest req = new XmlRpcRequest("get_user_by_uuid", parameters); |
105 | XmlRpcResponse resp = req.Send(m_parent.NetworkServersInfo.UserURL, 3000); | 119 | XmlRpcResponse resp = req.Send(m_parent.NetworkServersInfo.UserURL, 3000); |
106 | Hashtable respData = (Hashtable)resp.Value; | 120 | Hashtable respData = (Hashtable) resp.Value; |
107 | 121 | ||
108 | return ConvertXMLRPCDataToUserProfile(respData); | 122 | return ConvertXMLRPCDataToUserProfile(respData); |
109 | } | 123 | } |
110 | catch (Exception e) | 124 | catch (Exception e) |
111 | { | 125 | { |
112 | Console.WriteLine("Error when trying to fetch profile data by uuid from remote user server: " + e.Message); | 126 | Console.WriteLine("Error when trying to fetch profile data by uuid from remote user server: " + |
127 | e.Message); | ||
113 | } | 128 | } |
114 | return null; | 129 | return null; |
115 | } | 130 | } |
116 | 131 | ||
117 | public void clearUserAgent(LLUUID avatarID) | 132 | public void clearUserAgent(LLUUID avatarID) |
118 | { | 133 | { |
119 | // TODO: implement | 134 | // TODO: implement |
120 | } | 135 | } |
@@ -135,4 +150,4 @@ namespace OpenSim.Region.Communications.OGS1 | |||
135 | throw new Exception("The method or operation is not implemented."); | 150 | throw new Exception("The method or operation is not implemented."); |
136 | } | 151 | } |
137 | } | 152 | } |
138 | } | 153 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Communications/OGS1/Properties/AssemblyInfo.cs b/OpenSim/Region/Communications/OGS1/Properties/AssemblyInfo.cs index 2bebf9f..631cfd0 100644 --- a/OpenSim/Region/Communications/OGS1/Properties/AssemblyInfo.cs +++ b/OpenSim/Region/Communications/OGS1/Properties/AssemblyInfo.cs | |||
@@ -1,24 +1,28 @@ | |||
1 | using System.Reflection; | 1 | using System.Reflection; |
2 | using System.Runtime.InteropServices; | 2 | using System.Runtime.InteropServices; |
3 | |||
3 | // General Information about an assembly is controlled through the following | 4 | // General Information about an assembly is controlled through the following |
4 | // set of attributes. Change these attribute values to modify the information | 5 | // set of attributes. Change these attribute values to modify the information |
5 | // associated with an assembly. | 6 | // associated with an assembly. |
6 | [assembly: AssemblyTitle("OpenGrid.Framework.Communications.OGS1")] | 7 | |
7 | [assembly: AssemblyDescription("")] | 8 | [assembly : AssemblyTitle("OpenGrid.Framework.Communications.OGS1")] |
8 | [assembly: AssemblyConfiguration("")] | 9 | [assembly : AssemblyDescription("")] |
9 | [assembly: AssemblyCompany("")] | 10 | [assembly : AssemblyConfiguration("")] |
10 | [assembly: AssemblyProduct("OpenGrid.Framework.Communications.OGS1")] | 11 | [assembly : AssemblyCompany("")] |
11 | [assembly: AssemblyCopyright("Copyright © 2007")] | 12 | [assembly : AssemblyProduct("OpenGrid.Framework.Communications.OGS1")] |
12 | [assembly: AssemblyTrademark("")] | 13 | [assembly : AssemblyCopyright("Copyright © 2007")] |
13 | [assembly: AssemblyCulture("")] | 14 | [assembly : AssemblyTrademark("")] |
15 | [assembly : AssemblyCulture("")] | ||
14 | 16 | ||
15 | // Setting ComVisible to false makes the types in this assembly not visible | 17 | // Setting ComVisible to false makes the types in this assembly not visible |
16 | // to COM components. If you need to access a type in this assembly from | 18 | // to COM components. If you need to access a type in this assembly from |
17 | // COM, set the ComVisible attribute to true on that type. | 19 | // COM, set the ComVisible attribute to true on that type. |
18 | [assembly: ComVisible(false)] | 20 | |
21 | [assembly : ComVisible(false)] | ||
19 | 22 | ||
20 | // The following GUID is for the ID of the typelib if this project is exposed to COM | 23 | // The following GUID is for the ID of the typelib if this project is exposed to COM |
21 | [assembly: Guid("a8b2b39b-c83b-41e2-b0b5-7ccfc1fddae7")] | 24 | |
25 | [assembly : Guid("a8b2b39b-c83b-41e2-b0b5-7ccfc1fddae7")] | ||
22 | 26 | ||
23 | // Version information for an assembly consists of the following four values: | 27 | // Version information for an assembly consists of the following four values: |
24 | // | 28 | // |
@@ -29,5 +33,6 @@ using System.Runtime.InteropServices; | |||
29 | // | 33 | // |
30 | // You can specify all the values or you can default the Revision and Build Numbers | 34 | // You can specify all the values or you can default the Revision and Build Numbers |
31 | // by using the '*' as shown below: | 35 | // by using the '*' as shown below: |
32 | [assembly: AssemblyVersion("1.0.0.0")] | 36 | |
33 | [assembly: AssemblyFileVersion("1.0.0.0")] | 37 | [assembly : AssemblyVersion("1.0.0.0")] |
38 | [assembly : AssemblyFileVersion("1.0.0.0")] \ No newline at end of file | ||
diff --git a/OpenSim/Region/Environment/EstateManager.cs b/OpenSim/Region/Environment/EstateManager.cs index 41d14f0..9e32b35 100644 --- a/OpenSim/Region/Environment/EstateManager.cs +++ b/OpenSim/Region/Environment/EstateManager.cs | |||
@@ -30,12 +30,10 @@ using System.Collections.Generic; | |||
30 | using System.Text; | 30 | using System.Text; |
31 | using libsecondlife; | 31 | using libsecondlife; |
32 | using libsecondlife.Packets; | 32 | using libsecondlife.Packets; |
33 | using OpenSim.Framework.Console; | ||
34 | using OpenSim.Framework.Interfaces; | ||
35 | using OpenSim.Framework; | 33 | using OpenSim.Framework; |
34 | using OpenSim.Framework.Console; | ||
36 | using OpenSim.Region.Environment.Scenes; | 35 | using OpenSim.Region.Environment.Scenes; |
37 | 36 | ||
38 | |||
39 | namespace OpenSim.Region.Environment | 37 | namespace OpenSim.Region.Environment |
40 | { | 38 | { |
41 | /// <summary> | 39 | /// <summary> |
@@ -216,14 +214,14 @@ namespace OpenSim.Region.Environment | |||
216 | 214 | ||
217 | int tempMaxAgents = | 215 | int tempMaxAgents = |
218 | Convert.ToInt16(Convert.ToDecimal(Helpers.FieldToUTF8String(packet.ParamList[4].Parameter))); | 216 | Convert.ToInt16(Convert.ToDecimal(Helpers.FieldToUTF8String(packet.ParamList[4].Parameter))); |
219 | m_regInfo.EstateSettings.maxAgents = (byte)tempMaxAgents; | 217 | m_regInfo.EstateSettings.maxAgents = (byte) tempMaxAgents; |
220 | 218 | ||
221 | float tempObjectBonusFactor = | 219 | float tempObjectBonusFactor = |
222 | (float)Convert.ToDecimal(Helpers.FieldToUTF8String(packet.ParamList[5].Parameter)); | 220 | (float) Convert.ToDecimal(Helpers.FieldToUTF8String(packet.ParamList[5].Parameter)); |
223 | m_regInfo.EstateSettings.objectBonusFactor = tempObjectBonusFactor; | 221 | m_regInfo.EstateSettings.objectBonusFactor = tempObjectBonusFactor; |
224 | 222 | ||
225 | int tempMatureLevel = Convert.ToInt16(Helpers.FieldToUTF8String(packet.ParamList[6].Parameter)); | 223 | int tempMatureLevel = Convert.ToInt16(Helpers.FieldToUTF8String(packet.ParamList[6].Parameter)); |
226 | m_regInfo.EstateSettings.simAccess = (Simulator.SimAccess)tempMatureLevel; | 224 | m_regInfo.EstateSettings.simAccess = (Simulator.SimAccess) tempMatureLevel; |
227 | 225 | ||
228 | 226 | ||
229 | if (convertParamStringToBool(packet.ParamList[7].Parameter)) | 227 | if (convertParamStringToBool(packet.ParamList[7].Parameter)) |
@@ -250,13 +248,13 @@ namespace OpenSim.Region.Environment | |||
250 | } | 248 | } |
251 | else | 249 | else |
252 | { | 250 | { |
253 | float WaterHeight = (float)Convert.ToDecimal(Helpers.FieldToUTF8String(packet.ParamList[0].Parameter)); | 251 | float WaterHeight = (float) Convert.ToDecimal(Helpers.FieldToUTF8String(packet.ParamList[0].Parameter)); |
254 | float TerrainRaiseLimit = | 252 | float TerrainRaiseLimit = |
255 | (float)Convert.ToDecimal(Helpers.FieldToUTF8String(packet.ParamList[1].Parameter)); | 253 | (float) Convert.ToDecimal(Helpers.FieldToUTF8String(packet.ParamList[1].Parameter)); |
256 | float TerrainLowerLimit = | 254 | float TerrainLowerLimit = |
257 | (float)Convert.ToDecimal(Helpers.FieldToUTF8String(packet.ParamList[2].Parameter)); | 255 | (float) Convert.ToDecimal(Helpers.FieldToUTF8String(packet.ParamList[2].Parameter)); |
258 | bool UseFixedSun = convertParamStringToBool(packet.ParamList[4].Parameter); | 256 | bool UseFixedSun = convertParamStringToBool(packet.ParamList[4].Parameter); |
259 | float SunHour = (float)Convert.ToDecimal(Helpers.FieldToUTF8String(packet.ParamList[5].Parameter)); | 257 | float SunHour = (float) Convert.ToDecimal(Helpers.FieldToUTF8String(packet.ParamList[5].Parameter)); |
260 | 258 | ||
261 | setRegionSettings(WaterHeight, TerrainRaiseLimit, TerrainLowerLimit, UseFixedSun, SunHour); | 259 | setRegionSettings(WaterHeight, TerrainRaiseLimit, TerrainLowerLimit, UseFixedSun, SunHour); |
262 | 260 | ||
@@ -273,8 +271,8 @@ namespace OpenSim.Region.Environment | |||
273 | if (splitField.Length == 3) | 271 | if (splitField.Length == 3) |
274 | { | 272 | { |
275 | Int16 corner = Convert.ToInt16(splitField[0]); | 273 | Int16 corner = Convert.ToInt16(splitField[0]); |
276 | float lowValue = (float)Convert.ToDecimal(splitField[1]); | 274 | float lowValue = (float) Convert.ToDecimal(splitField[1]); |
277 | float highValue = (float)Convert.ToDecimal(splitField[2]); | 275 | float highValue = (float) Convert.ToDecimal(splitField[2]); |
278 | 276 | ||
279 | setEstateTextureRange(corner, lowValue, highValue); | 277 | setEstateTextureRange(corner, lowValue, highValue); |
280 | } | 278 | } |
@@ -343,7 +341,7 @@ namespace OpenSim.Region.Environment | |||
343 | { | 341 | { |
344 | m_scene.Broadcast( | 342 | m_scene.Broadcast( |
345 | sendRegionHandshake | 343 | sendRegionHandshake |
346 | ); | 344 | ); |
347 | } | 345 | } |
348 | 346 | ||
349 | public void sendRegionInfoPacket(IClientAPI remote_client) | 347 | public void sendRegionInfoPacket(IClientAPI remote_client) |
@@ -363,8 +361,8 @@ namespace OpenSim.Region.Environment | |||
363 | regionInfoPacket.RegionInfo.PricePerMeter = m_regInfo.EstateSettings.pricePerMeter; | 361 | regionInfoPacket.RegionInfo.PricePerMeter = m_regInfo.EstateSettings.pricePerMeter; |
364 | regionInfoPacket.RegionInfo.RedirectGridX = m_regInfo.EstateSettings.redirectGridX; | 362 | regionInfoPacket.RegionInfo.RedirectGridX = m_regInfo.EstateSettings.redirectGridX; |
365 | regionInfoPacket.RegionInfo.RedirectGridY = m_regInfo.EstateSettings.redirectGridY; | 363 | regionInfoPacket.RegionInfo.RedirectGridY = m_regInfo.EstateSettings.redirectGridY; |
366 | regionInfoPacket.RegionInfo.RegionFlags = (uint)m_regInfo.EstateSettings.regionFlags; | 364 | regionInfoPacket.RegionInfo.RegionFlags = (uint) m_regInfo.EstateSettings.regionFlags; |
367 | regionInfoPacket.RegionInfo.SimAccess = (byte)m_regInfo.EstateSettings.simAccess; | 365 | regionInfoPacket.RegionInfo.SimAccess = (byte) m_regInfo.EstateSettings.simAccess; |
368 | regionInfoPacket.RegionInfo.SimName = _enc.GetBytes(m_regInfo.RegionName); | 366 | regionInfoPacket.RegionInfo.SimName = _enc.GetBytes(m_regInfo.RegionName); |
369 | regionInfoPacket.RegionInfo.SunHour = m_regInfo.EstateSettings.sunHour; | 367 | regionInfoPacket.RegionInfo.SunHour = m_regInfo.EstateSettings.sunHour; |
370 | regionInfoPacket.RegionInfo.TerrainLowerLimit = m_regInfo.EstateSettings.terrainLowerLimit; | 368 | regionInfoPacket.RegionInfo.TerrainLowerLimit = m_regInfo.EstateSettings.terrainLowerLimit; |
diff --git a/OpenSim/Region/Environment/Interfaces/IAvatarFactory.cs b/OpenSim/Region/Environment/Interfaces/IAvatarFactory.cs index 90c3730..e7ce957 100644 --- a/OpenSim/Region/Environment/Interfaces/IAvatarFactory.cs +++ b/OpenSim/Region/Environment/Interfaces/IAvatarFactory.cs | |||
@@ -1,6 +1,3 @@ | |||
1 | using System; | ||
2 | using System.Collections.Generic; | ||
3 | using System.Text; | ||
4 | using libsecondlife; | 1 | using libsecondlife; |
5 | using OpenSim.Framework; | 2 | using OpenSim.Framework; |
6 | 3 | ||
@@ -10,4 +7,4 @@ namespace OpenSim.Region.Environment.Interfaces | |||
10 | { | 7 | { |
11 | bool TryGetIntialAvatarAppearance(LLUUID avatarId, out AvatarWearable[] wearables, out byte[] visualParams); | 8 | bool TryGetIntialAvatarAppearance(LLUUID avatarId, out AvatarWearable[] wearables, out byte[] visualParams); |
12 | } | 9 | } |
13 | } | 10 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Environment/Interfaces/IDynamicTextureManager.cs b/OpenSim/Region/Environment/Interfaces/IDynamicTextureManager.cs index 8a31d87..daecf86 100644 --- a/OpenSim/Region/Environment/Interfaces/IDynamicTextureManager.cs +++ b/OpenSim/Region/Environment/Interfaces/IDynamicTextureManager.cs | |||
@@ -53,4 +53,4 @@ namespace OpenSim.Region.Environment.Interfaces | |||
53 | bool AsyncConvertUrl(LLUUID id, string url, string extraParams); | 53 | bool AsyncConvertUrl(LLUUID id, string url, string extraParams); |
54 | bool AsyncConvertData(LLUUID id, string bodyData, string extraParams); | 54 | bool AsyncConvertData(LLUUID id, string bodyData, string extraParams); |
55 | } | 55 | } |
56 | } | 56 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Environment/Interfaces/IHttpRequests.cs b/OpenSim/Region/Environment/Interfaces/IHttpRequests.cs index 19cf131..0357139 100644 --- a/OpenSim/Region/Environment/Interfaces/IHttpRequests.cs +++ b/OpenSim/Region/Environment/Interfaces/IHttpRequests.cs | |||
@@ -34,4 +34,4 @@ namespace OpenSim.Region.Environment.Interfaces | |||
34 | { | 34 | { |
35 | LLUUID MakeHttpRequest(string url, string type, string body); | 35 | LLUUID MakeHttpRequest(string url, string type, string body); |
36 | } | 36 | } |
37 | } | 37 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Environment/Interfaces/IRegionModule.cs b/OpenSim/Region/Environment/Interfaces/IRegionModule.cs index 808b94a..e5d0b26 100644 --- a/OpenSim/Region/Environment/Interfaces/IRegionModule.cs +++ b/OpenSim/Region/Environment/Interfaces/IRegionModule.cs | |||
@@ -26,8 +26,8 @@ | |||
26 | * | 26 | * |
27 | */ | 27 | */ |
28 | 28 | ||
29 | using OpenSim.Region.Environment.Scenes; | ||
30 | using Nini.Config; | 29 | using Nini.Config; |
30 | using OpenSim.Region.Environment.Scenes; | ||
31 | 31 | ||
32 | namespace OpenSim.Region.Environment.Interfaces | 32 | namespace OpenSim.Region.Environment.Interfaces |
33 | { | 33 | { |
@@ -39,4 +39,4 @@ namespace OpenSim.Region.Environment.Interfaces | |||
39 | string Name { get; } | 39 | string Name { get; } |
40 | bool IsSharedModule { get; } | 40 | bool IsSharedModule { get; } |
41 | } | 41 | } |
42 | } | 42 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Environment/Interfaces/ISimChat.cs b/OpenSim/Region/Environment/Interfaces/ISimChat.cs index 7dc3e0b..fb491cc 100644 --- a/OpenSim/Region/Environment/Interfaces/ISimChat.cs +++ b/OpenSim/Region/Environment/Interfaces/ISimChat.cs | |||
@@ -26,12 +26,13 @@ | |||
26 | * | 26 | * |
27 | */ | 27 | */ |
28 | 28 | ||
29 | using libsecondlife; | 29 | using System; |
30 | using OpenSim.Framework; | ||
30 | 31 | ||
31 | namespace OpenSim.Region.Environment.Interfaces | 32 | namespace OpenSim.Region.Environment.Interfaces |
32 | { | 33 | { |
33 | public interface ISimChat | 34 | public interface ISimChat |
34 | { | 35 | { |
35 | void SimChat(System.Object sender, OpenSim.Framework.ChatFromViewerArgs e); | 36 | void SimChat(Object sender, ChatFromViewerArgs e); |
36 | } | 37 | } |
37 | } | 38 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Environment/Interfaces/ITerrain.cs b/OpenSim/Region/Environment/Interfaces/ITerrain.cs index 77ec2dd..9171d09 100644 --- a/OpenSim/Region/Environment/Interfaces/ITerrain.cs +++ b/OpenSim/Region/Environment/Interfaces/ITerrain.cs | |||
@@ -26,7 +26,6 @@ | |||
26 | * | 26 | * |
27 | */ | 27 | */ |
28 | 28 | ||
29 | using OpenSim.Framework.Interfaces; | ||
30 | using OpenSim.Framework; | 29 | using OpenSim.Framework; |
31 | 30 | ||
32 | namespace OpenSim.Region.Environment.Interfaces | 31 | namespace OpenSim.Region.Environment.Interfaces |
@@ -72,4 +71,4 @@ namespace OpenSim.Region.Environment.Interfaces | |||
72 | void ExportImage(string filename, string gradientmap); | 71 | void ExportImage(string filename, string gradientmap); |
73 | byte[] ExportJpegImage(string gradientmap); | 72 | byte[] ExportJpegImage(string gradientmap); |
74 | } | 73 | } |
75 | } | 74 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Environment/Interfaces/IWorldComm.cs b/OpenSim/Region/Environment/Interfaces/IWorldComm.cs index 9d8c259..27b5466 100644 --- a/OpenSim/Region/Environment/Interfaces/IWorldComm.cs +++ b/OpenSim/Region/Environment/Interfaces/IWorldComm.cs | |||
@@ -40,4 +40,4 @@ namespace OpenSim.Region.Environment.Interfaces | |||
40 | void ListenControl(int handle, int active); | 40 | void ListenControl(int handle, int active); |
41 | void ListenRemove(int handle); | 41 | void ListenRemove(int handle); |
42 | } | 42 | } |
43 | } | 43 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Environment/Interfaces/IXMLRPC.cs b/OpenSim/Region/Environment/Interfaces/IXMLRPC.cs index d888a36..6786b8c 100644 --- a/OpenSim/Region/Environment/Interfaces/IXMLRPC.cs +++ b/OpenSim/Region/Environment/Interfaces/IXMLRPC.cs | |||
@@ -39,4 +39,4 @@ namespace OpenSim.Region.Environment.Interfaces | |||
39 | RPCRequestInfo GetNextRequest(); | 39 | RPCRequestInfo GetNextRequest(); |
40 | void RemoteDataReply(string channel, string message_id, string sdata, int idata); | 40 | void RemoteDataReply(string channel, string message_id, string sdata, int idata); |
41 | } | 41 | } |
42 | } | 42 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Environment/Interfaces/IXfer.cs b/OpenSim/Region/Environment/Interfaces/IXfer.cs index 3cbd549..5e5ff1b 100644 --- a/OpenSim/Region/Environment/Interfaces/IXfer.cs +++ b/OpenSim/Region/Environment/Interfaces/IXfer.cs | |||
@@ -32,4 +32,4 @@ namespace OpenSim.Region.Environment.Interfaces | |||
32 | { | 32 | { |
33 | bool AddNewFile(string fileName, byte[] data); | 33 | bool AddNewFile(string fileName, byte[] data); |
34 | } | 34 | } |
35 | } | 35 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Environment/LandManagement/Land.cs b/OpenSim/Region/Environment/LandManagement/Land.cs index 3962e5f..e9837c0 100644 --- a/OpenSim/Region/Environment/LandManagement/Land.cs +++ b/OpenSim/Region/Environment/LandManagement/Land.cs | |||
@@ -30,7 +30,6 @@ using System; | |||
30 | using System.Collections.Generic; | 30 | using System.Collections.Generic; |
31 | using libsecondlife; | 31 | using libsecondlife; |
32 | using libsecondlife.Packets; | 32 | using libsecondlife.Packets; |
33 | using OpenSim.Framework.Interfaces; | ||
34 | using OpenSim.Framework; | 33 | using OpenSim.Framework; |
35 | using OpenSim.Region.Environment.Scenes; | 34 | using OpenSim.Region.Environment.Scenes; |
36 | 35 | ||
@@ -652,4 +651,4 @@ namespace OpenSim.Region.Environment.LandManagement | |||
652 | } | 651 | } |
653 | 652 | ||
654 | #endregion | 653 | #endregion |
655 | } | 654 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Environment/LandManagement/LandManager.cs b/OpenSim/Region/Environment/LandManagement/LandManager.cs index ae89d85..785aafa 100644 --- a/OpenSim/Region/Environment/LandManagement/LandManager.cs +++ b/OpenSim/Region/Environment/LandManagement/LandManager.cs | |||
@@ -29,7 +29,6 @@ using System; | |||
29 | using System.Collections.Generic; | 29 | using System.Collections.Generic; |
30 | using libsecondlife; | 30 | using libsecondlife; |
31 | using libsecondlife.Packets; | 31 | using libsecondlife.Packets; |
32 | using OpenSim.Framework.Interfaces; | ||
33 | using OpenSim.Framework; | 32 | using OpenSim.Framework; |
34 | using OpenSim.Region.Environment.Scenes; | 33 | using OpenSim.Region.Environment.Scenes; |
35 | 34 | ||
diff --git a/OpenSim/Region/Environment/ModuleLoader.cs b/OpenSim/Region/Environment/ModuleLoader.cs index c0dd52a..cb72638 100644 --- a/OpenSim/Region/Environment/ModuleLoader.cs +++ b/OpenSim/Region/Environment/ModuleLoader.cs | |||
@@ -27,15 +27,14 @@ | |||
27 | */ | 27 | */ |
28 | 28 | ||
29 | using System; | 29 | using System; |
30 | using System.Collections; | ||
31 | using System.Collections.Generic; | 30 | using System.Collections.Generic; |
32 | using System.IO; | 31 | using System.IO; |
33 | using System.Reflection; | 32 | using System.Reflection; |
33 | using Nini.Config; | ||
34 | using OpenSim.Framework.Console; | 34 | using OpenSim.Framework.Console; |
35 | using OpenSim.Region.Environment.Interfaces; | 35 | using OpenSim.Region.Environment.Interfaces; |
36 | using OpenSim.Region.Environment.Modules; | 36 | using OpenSim.Region.Environment.Modules; |
37 | using OpenSim.Region.Environment.Scenes; | 37 | using OpenSim.Region.Environment.Scenes; |
38 | using Nini.Config; | ||
39 | 38 | ||
40 | namespace OpenSim.Region.Environment | 39 | namespace OpenSim.Region.Environment |
41 | { | 40 | { |
@@ -58,8 +57,8 @@ namespace OpenSim.Region.Environment | |||
58 | { | 57 | { |
59 | get | 58 | get |
60 | { | 59 | { |
61 | IRegionModule[] regionModules = new IRegionModule[ m_loadedSharedModules.Count ]; | 60 | IRegionModule[] regionModules = new IRegionModule[m_loadedSharedModules.Count]; |
62 | m_loadedSharedModules.Values.CopyTo( regionModules, 0 ); | 61 | m_loadedSharedModules.Values.CopyTo(regionModules, 0); |
63 | return regionModules; | 62 | return regionModules; |
64 | } | 63 | } |
65 | } | 64 | } |
@@ -132,7 +131,7 @@ namespace OpenSim.Region.Environment | |||
132 | 131 | ||
133 | if (modules.Length > 0) | 132 | if (modules.Length > 0) |
134 | { | 133 | { |
135 | m_log.Verbose("MODULES", "Found Module Library [{0}]", dllName ); | 134 | m_log.Verbose("MODULES", "Found Module Library [{0}]", dllName); |
136 | foreach (IRegionModule module in modules) | 135 | foreach (IRegionModule module in modules) |
137 | { | 136 | { |
138 | if (!module.IsSharedModule) | 137 | if (!module.IsSharedModule) |
@@ -179,16 +178,16 @@ namespace OpenSim.Region.Environment | |||
179 | List<IRegionModule> modules = new List<IRegionModule>(); | 178 | List<IRegionModule> modules = new List<IRegionModule>(); |
180 | 179 | ||
181 | Assembly pluginAssembly; | 180 | Assembly pluginAssembly; |
182 | if (!LoadedAssemblys.TryGetValue(dllName, out pluginAssembly )) | 181 | if (!LoadedAssemblys.TryGetValue(dllName, out pluginAssembly)) |
183 | { | 182 | { |
184 | try | 183 | try |
185 | { | 184 | { |
186 | pluginAssembly = Assembly.LoadFrom(dllName); | 185 | pluginAssembly = Assembly.LoadFrom(dllName); |
187 | LoadedAssemblys.Add(dllName, pluginAssembly); | 186 | LoadedAssemblys.Add(dllName, pluginAssembly); |
188 | } | 187 | } |
189 | catch( BadImageFormatException e ) | 188 | catch (BadImageFormatException e) |
190 | { | 189 | { |
191 | m_log.Verbose( "MODULES", "The file [{0}] is not a module assembly.", e.FileName ); | 190 | m_log.Verbose("MODULES", "The file [{0}] is not a module assembly.", e.FileName); |
192 | } | 191 | } |
193 | } | 192 | } |
194 | 193 | ||
@@ -201,7 +200,7 @@ namespace OpenSim.Region.Environment | |||
201 | { | 200 | { |
202 | if (!pluginType.IsAbstract) | 201 | if (!pluginType.IsAbstract) |
203 | { | 202 | { |
204 | if( pluginType.GetInterface("IRegionModule") != null ) | 203 | if (pluginType.GetInterface("IRegionModule") != null) |
205 | { | 204 | { |
206 | modules.Add((IRegionModule) Activator.CreateInstance(pluginType)); | 205 | modules.Add((IRegionModule) Activator.CreateInstance(pluginType)); |
207 | } | 206 | } |
@@ -231,4 +230,4 @@ namespace OpenSim.Region.Environment | |||
231 | LoadedAssemblys.Clear(); | 230 | LoadedAssemblys.Clear(); |
232 | } | 231 | } |
233 | } | 232 | } |
234 | } | 233 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Environment/Modules/AssetDownloadModule.cs b/OpenSim/Region/Environment/Modules/AssetDownloadModule.cs index e414713..54d5ad8 100644 --- a/OpenSim/Region/Environment/Modules/AssetDownloadModule.cs +++ b/OpenSim/Region/Environment/Modules/AssetDownloadModule.cs | |||
@@ -26,11 +26,10 @@ | |||
26 | * | 26 | * |
27 | */ | 27 | */ |
28 | 28 | ||
29 | using OpenSim.Framework.Interfaces; | 29 | using Nini.Config; |
30 | using OpenSim.Framework; | ||
30 | using OpenSim.Region.Environment.Interfaces; | 31 | using OpenSim.Region.Environment.Interfaces; |
31 | using OpenSim.Region.Environment.Scenes; | 32 | using OpenSim.Region.Environment.Scenes; |
32 | using OpenSim.Framework; | ||
33 | using Nini.Config; | ||
34 | 33 | ||
35 | namespace OpenSim.Region.Environment.Modules | 34 | namespace OpenSim.Region.Environment.Modules |
36 | { | 35 | { |
@@ -70,4 +69,4 @@ namespace OpenSim.Region.Environment.Modules | |||
70 | { | 69 | { |
71 | } | 70 | } |
72 | } | 71 | } |
73 | } | 72 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Environment/Modules/AvatarFactoryModule.cs b/OpenSim/Region/Environment/Modules/AvatarFactoryModule.cs index 456d838..4bb0638 100644 --- a/OpenSim/Region/Environment/Modules/AvatarFactoryModule.cs +++ b/OpenSim/Region/Environment/Modules/AvatarFactoryModule.cs | |||
@@ -1,6 +1,3 @@ | |||
1 | using System; | ||
2 | using System.Collections.Generic; | ||
3 | using System.Text; | ||
4 | using libsecondlife; | 1 | using libsecondlife; |
5 | using Nini.Config; | 2 | using Nini.Config; |
6 | using OpenSim.Framework; | 3 | using OpenSim.Framework; |
@@ -11,7 +8,8 @@ namespace OpenSim.Region.Environment.Modules | |||
11 | { | 8 | { |
12 | public class AvatarFactoryModule : IAvatarFactory | 9 | public class AvatarFactoryModule : IAvatarFactory |
13 | { | 10 | { |
14 | public bool TryGetIntialAvatarAppearance(LLUUID avatarId, out AvatarWearable[] wearables, out byte[] visualParams) | 11 | public bool TryGetIntialAvatarAppearance(LLUUID avatarId, out AvatarWearable[] wearables, |
12 | out byte[] visualParams) | ||
15 | { | 13 | { |
16 | GetDefaultAvatarAppearance(out wearables, out visualParams); | 14 | GetDefaultAvatarAppearance(out wearables, out visualParams); |
17 | return true; | 15 | return true; |
@@ -51,7 +49,4 @@ namespace OpenSim.Region.Environment.Modules | |||
51 | wearables = AvatarWearable.DefaultWearables; | 49 | wearables = AvatarWearable.DefaultWearables; |
52 | } | 50 | } |
53 | } | 51 | } |
54 | 52 | } \ No newline at end of file | |
55 | |||
56 | |||
57 | } | ||
diff --git a/OpenSim/Region/Environment/Modules/AvatarProfilesModule.cs b/OpenSim/Region/Environment/Modules/AvatarProfilesModule.cs index 802655f..1b7e2a4 100644 --- a/OpenSim/Region/Environment/Modules/AvatarProfilesModule.cs +++ b/OpenSim/Region/Environment/Modules/AvatarProfilesModule.cs | |||
@@ -27,11 +27,10 @@ | |||
27 | */ | 27 | */ |
28 | 28 | ||
29 | using libsecondlife; | 29 | using libsecondlife; |
30 | using OpenSim.Framework.Interfaces; | 30 | using Nini.Config; |
31 | using OpenSim.Framework; | ||
31 | using OpenSim.Region.Environment.Interfaces; | 32 | using OpenSim.Region.Environment.Interfaces; |
32 | using OpenSim.Region.Environment.Scenes; | 33 | using OpenSim.Region.Environment.Scenes; |
33 | using OpenSim.Framework; | ||
34 | using Nini.Config; | ||
35 | 34 | ||
36 | namespace OpenSim.Region.Environment.Modules | 35 | namespace OpenSim.Region.Environment.Modules |
37 | { | 36 | { |
@@ -92,4 +91,4 @@ namespace OpenSim.Region.Environment.Modules | |||
92 | partner); | 91 | partner); |
93 | } | 92 | } |
94 | } | 93 | } |
95 | } | 94 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Environment/Modules/ChatModule.cs b/OpenSim/Region/Environment/Modules/ChatModule.cs index bdb8ee5..9d4187a 100644 --- a/OpenSim/Region/Environment/Modules/ChatModule.cs +++ b/OpenSim/Region/Environment/Modules/ChatModule.cs | |||
@@ -27,13 +27,13 @@ | |||
27 | */ | 27 | */ |
28 | 28 | ||
29 | using System; | 29 | using System; |
30 | using System.Collections.Generic; | ||
30 | using System.IO; | 31 | using System.IO; |
31 | using System.Net.Sockets; | 32 | using System.Net.Sockets; |
32 | using System.Threading; | ||
33 | using System.Collections.Generic; | ||
34 | using System.Text.RegularExpressions; | 33 | using System.Text.RegularExpressions; |
34 | using System.Threading; | ||
35 | using libsecondlife; | 35 | using libsecondlife; |
36 | using OpenSim.Framework.Interfaces; | 36 | using Nini.Config; |
37 | using OpenSim.Framework; | 37 | using OpenSim.Framework; |
38 | using OpenSim.Framework.Console; | 38 | using OpenSim.Framework.Console; |
39 | using OpenSim.Region.Environment.Interfaces; | 39 | using OpenSim.Region.Environment.Interfaces; |
@@ -54,18 +54,22 @@ namespace OpenSim.Region.Environment.Modules | |||
54 | 54 | ||
55 | public ChatModule() | 55 | public ChatModule() |
56 | { | 56 | { |
57 | m_log = OpenSim.Framework.Console.MainLog.Instance; | 57 | m_log = MainLog.Instance; |
58 | } | 58 | } |
59 | 59 | ||
60 | public void Initialise(Scene scene, Nini.Config.IConfigSource config) | 60 | public void Initialise(Scene scene, IConfigSource config) |
61 | { | 61 | { |
62 | // wrap this in a try block so that defaults will work if | 62 | // wrap this in a try block so that defaults will work if |
63 | // the config file doesn't specify otherwise. | 63 | // the config file doesn't specify otherwise. |
64 | try { | 64 | try |
65 | m_whisperdistance = config.Configs["Chat"].GetInt("whisper_distance", m_whisperdistance); | 65 | { |
66 | m_whisperdistance = config.Configs["Chat"].GetInt("whisper_distance", m_whisperdistance); | ||
66 | m_saydistance = config.Configs["Chat"].GetInt("say_distance", m_saydistance); | 67 | m_saydistance = config.Configs["Chat"].GetInt("say_distance", m_saydistance); |
67 | m_shoutdistance = config.Configs["Chat"].GetInt("shout_distance", m_shoutdistance); | 68 | m_shoutdistance = config.Configs["Chat"].GetInt("shout_distance", m_shoutdistance); |
68 | } catch (Exception e) {} | 69 | } |
70 | catch (Exception e) | ||
71 | { | ||
72 | } | ||
69 | 73 | ||
70 | if (!m_scenes.Contains(scene)) | 74 | if (!m_scenes.Contains(scene)) |
71 | { | 75 | { |
@@ -73,20 +77,20 @@ namespace OpenSim.Region.Environment.Modules | |||
73 | scene.EventManager.OnNewClient += NewClient; | 77 | scene.EventManager.OnNewClient += NewClient; |
74 | scene.RegisterModuleInterface<ISimChat>(this); | 78 | scene.RegisterModuleInterface<ISimChat>(this); |
75 | } | 79 | } |
76 | 80 | ||
77 | // setup IRC Relay | 81 | // setup IRC Relay |
78 | m_irc = new IRCChatModule(config); | 82 | m_irc = new IRCChatModule(config); |
79 | } | 83 | } |
80 | 84 | ||
81 | public void PostInitialise() | 85 | public void PostInitialise() |
82 | { | 86 | { |
83 | 87 | if (m_irc.Enabled) | |
84 | if (m_irc.Enabled) { | 88 | { |
85 | m_irc.Connect(m_scenes); | 89 | m_irc.Connect(m_scenes); |
86 | } | 90 | } |
87 | } | 91 | } |
88 | 92 | ||
89 | public void Close() | 93 | public void Close() |
90 | { | 94 | { |
91 | m_irc.Close(); | 95 | m_irc.Close(); |
92 | } | 96 | } |
@@ -111,7 +115,7 @@ namespace OpenSim.Region.Environment.Modules | |||
111 | ScenePresence avatar = null; | 115 | ScenePresence avatar = null; |
112 | 116 | ||
113 | //TODO: Move ForEachScenePresence and others into IScene. | 117 | //TODO: Move ForEachScenePresence and others into IScene. |
114 | Scene scene = (Scene)e.Scene; | 118 | Scene scene = (Scene) e.Scene; |
115 | 119 | ||
116 | //TODO: Remove the need for this check | 120 | //TODO: Remove the need for this check |
117 | if (scene == null) | 121 | if (scene == null) |
@@ -119,10 +123,12 @@ namespace OpenSim.Region.Environment.Modules | |||
119 | 123 | ||
120 | // Filled in since it's easier than rewriting right now. | 124 | // Filled in since it's easier than rewriting right now. |
121 | LLVector3 fromPos = e.Position; | 125 | LLVector3 fromPos = e.Position; |
122 | LLVector3 fromRegionPos = e.Position + new LLVector3(e.Scene.RegionInfo.RegionLocX * 256, e.Scene.RegionInfo.RegionLocY * 256, 0); | 126 | LLVector3 fromRegionPos = e.Position + |
127 | new LLVector3(e.Scene.RegionInfo.RegionLocX*256, e.Scene.RegionInfo.RegionLocY*256, | ||
128 | 0); | ||
123 | string fromName = e.From; | 129 | string fromName = e.From; |
124 | string message = e.Message; | 130 | string message = e.Message; |
125 | byte type = (byte)e.Type; | 131 | byte type = (byte) e.Type; |
126 | LLUUID fromAgentID = LLUUID.Zero; | 132 | LLUUID fromAgentID = LLUUID.Zero; |
127 | 133 | ||
128 | if (e.Sender != null) | 134 | if (e.Sender != null) |
@@ -133,7 +139,8 @@ namespace OpenSim.Region.Environment.Modules | |||
133 | if (avatar != null) | 139 | if (avatar != null) |
134 | { | 140 | { |
135 | fromPos = avatar.AbsolutePosition; | 141 | fromPos = avatar.AbsolutePosition; |
136 | fromRegionPos = fromPos + new LLVector3(e.Scene.RegionInfo.RegionLocX * 256, e.Scene.RegionInfo.RegionLocY * 256, 0); | 142 | fromRegionPos = fromPos + |
143 | new LLVector3(e.Scene.RegionInfo.RegionLocX*256, e.Scene.RegionInfo.RegionLocY*256, 0); | ||
137 | fromName = avatar.Firstname + " " + avatar.Lastname; | 144 | fromName = avatar.Firstname + " " + avatar.Lastname; |
138 | fromAgentID = e.Sender.AgentId; | 145 | fromAgentID = e.Sender.AgentId; |
139 | avatar = null; | 146 | avatar = null; |
@@ -159,75 +166,84 @@ namespace OpenSim.Region.Environment.Modules | |||
159 | break; | 166 | break; |
160 | } | 167 | } |
161 | 168 | ||
162 | m_log.Verbose("CHAT", fromName + " (" + e.Channel + " @ " + scene.RegionInfo.RegionName + ") " + typeName + ": " + e.Message); | 169 | m_log.Verbose("CHAT", |
163 | 170 | fromName + " (" + e.Channel + " @ " + scene.RegionInfo.RegionName + ") " + typeName + ": " + | |
164 | if (m_irc.Connected) | 171 | e.Message); |
165 | { | 172 | |
166 | m_irc.PrivMsg(fromName, scene.RegionInfo.RegionName, e.Message); | 173 | if (m_irc.Connected) |
167 | } | 174 | { |
168 | 175 | m_irc.PrivMsg(fromName, scene.RegionInfo.RegionName, e.Message); | |
169 | if (e.Channel == 0) | 176 | } |
170 | { | 177 | |
171 | foreach (Scene m_scene in m_scenes) | 178 | if (e.Channel == 0) |
172 | { | 179 | { |
173 | m_scene.ForEachScenePresence(delegate(ScenePresence presence) | 180 | foreach (Scene m_scene in m_scenes) |
174 | { | 181 | { |
175 | int dis = -100000; | 182 | m_scene.ForEachScenePresence(delegate(ScenePresence presence) |
176 | 183 | { | |
177 | LLVector3 avatarRegionPos = presence.AbsolutePosition + new LLVector3(scene.RegionInfo.RegionLocX * 256, scene.RegionInfo.RegionLocY * 256, 0); | 184 | int dis = -100000; |
178 | dis = Math.Abs((int)avatarRegionPos.GetDistanceTo(fromRegionPos)); | 185 | |
179 | 186 | LLVector3 avatarRegionPos = presence.AbsolutePosition + | |
180 | switch (e.Type) | 187 | new LLVector3( |
181 | { | 188 | scene.RegionInfo.RegionLocX*256, |
182 | case ChatTypeEnum.Whisper: | 189 | scene.RegionInfo.RegionLocY*256, |
183 | if (dis < m_whisperdistance) | 190 | 0); |
184 | { | 191 | dis = |
185 | //should change so the message is sent through the avatar rather than direct to the ClientView | 192 | Math.Abs((int) avatarRegionPos.GetDistanceTo(fromRegionPos)); |
186 | presence.ControllingClient.SendChatMessage(message, | 193 | |
187 | type, | 194 | switch (e.Type) |
188 | fromPos, | 195 | { |
189 | fromName, | 196 | case ChatTypeEnum.Whisper: |
190 | fromAgentID); | 197 | if (dis < m_whisperdistance) |
191 | } | 198 | { |
192 | break; | 199 | //should change so the message is sent through the avatar rather than direct to the ClientView |
193 | case ChatTypeEnum.Say: | 200 | presence.ControllingClient.SendChatMessage(message, |
194 | if (dis < m_saydistance) | 201 | type, |
195 | { | 202 | fromPos, |
196 | //Console.WriteLine("sending chat"); | 203 | fromName, |
197 | presence.ControllingClient.SendChatMessage(message, | 204 | fromAgentID); |
198 | type, | 205 | } |
199 | fromPos, | 206 | break; |
200 | fromName, | 207 | case ChatTypeEnum.Say: |
201 | fromAgentID); | 208 | if (dis < m_saydistance) |
202 | } | 209 | { |
203 | break; | 210 | //Console.WriteLine("sending chat"); |
204 | case ChatTypeEnum.Shout: | 211 | presence.ControllingClient.SendChatMessage(message, |
205 | if (dis < m_shoutdistance) | 212 | type, |
206 | { | 213 | fromPos, |
207 | presence.ControllingClient.SendChatMessage(message, | 214 | fromName, |
208 | type, | 215 | fromAgentID); |
209 | fromPos, | 216 | } |
210 | fromName, | 217 | break; |
211 | fromAgentID); | 218 | case ChatTypeEnum.Shout: |
212 | } | 219 | if (dis < m_shoutdistance) |
213 | break; | 220 | { |
214 | 221 | presence.ControllingClient.SendChatMessage(message, | |
215 | case ChatTypeEnum.Broadcast: | 222 | type, |
216 | presence.ControllingClient.SendChatMessage(message, type, | 223 | fromPos, |
217 | fromPos, | 224 | fromName, |
218 | fromName, | 225 | fromAgentID); |
219 | fromAgentID); | 226 | } |
220 | break; | 227 | break; |
221 | default: | 228 | |
222 | break; | 229 | case ChatTypeEnum.Broadcast: |
223 | } | 230 | presence.ControllingClient.SendChatMessage(message, |
224 | }); | 231 | type, |
232 | fromPos, | ||
233 | fromName, | ||
234 | fromAgentID); | ||
235 | break; | ||
236 | default: | ||
237 | break; | ||
238 | } | ||
239 | }); | ||
225 | } | 240 | } |
226 | } | 241 | } |
227 | } | 242 | } |
228 | } | 243 | } |
229 | 244 | ||
230 | class IRCChatModule { | 245 | internal class IRCChatModule |
246 | { | ||
231 | private string m_server = null; | 247 | private string m_server = null; |
232 | private int m_port = 6668; | 248 | private int m_port = 6668; |
233 | private string m_user = "USER OpenSimBot 8 * :I'm a OpenSim to irc bot"; | 249 | private string m_user = "USER OpenSimBot 8 * :I'm a OpenSim to irc bot"; |
@@ -238,7 +254,7 @@ namespace OpenSim.Region.Environment.Modules | |||
238 | private TcpClient m_tcp; | 254 | private TcpClient m_tcp; |
239 | private StreamWriter m_writer; | 255 | private StreamWriter m_writer; |
240 | private StreamReader m_reader; | 256 | private StreamReader m_reader; |
241 | 257 | ||
242 | private Thread pingSender; | 258 | private Thread pingSender; |
243 | private Thread listener; | 259 | private Thread listener; |
244 | 260 | ||
@@ -248,29 +264,36 @@ namespace OpenSim.Region.Environment.Modules | |||
248 | private List<Scene> m_scenes = null; | 264 | private List<Scene> m_scenes = null; |
249 | private LogBase m_log; | 265 | private LogBase m_log; |
250 | 266 | ||
251 | public IRCChatModule(Nini.Config.IConfigSource config) { | 267 | public IRCChatModule(IConfigSource config) |
268 | { | ||
252 | m_nick = "OSimBot" + Util.RandomClass.Next(1, 99); | 269 | m_nick = "OSimBot" + Util.RandomClass.Next(1, 99); |
253 | m_tcp = null; | 270 | m_tcp = null; |
254 | m_writer = null; | 271 | m_writer = null; |
255 | m_reader = null; | 272 | m_reader = null; |
256 | 273 | ||
257 | try { | 274 | try |
275 | { | ||
258 | m_server = config.Configs["IRC"].GetString("server"); | 276 | m_server = config.Configs["IRC"].GetString("server"); |
259 | m_nick = config.Configs["IRC"].GetString("nick"); | 277 | m_nick = config.Configs["IRC"].GetString("nick"); |
260 | m_channel = config.Configs["IRC"].GetString("channel"); | 278 | m_channel = config.Configs["IRC"].GetString("channel"); |
261 | m_port = config.Configs["IRC"].GetInt("port", m_port); | 279 | m_port = config.Configs["IRC"].GetInt("port", m_port); |
262 | m_user = config.Configs["IRC"].GetString("username", m_user); | 280 | m_user = config.Configs["IRC"].GetString("username", m_user); |
263 | if (m_server != null && m_nick != null && m_channel != null) { | 281 | if (m_server != null && m_nick != null && m_channel != null) |
282 | { | ||
264 | m_enabled = true; | 283 | m_enabled = true; |
265 | } | 284 | } |
266 | } catch (Exception e) { | 285 | } |
286 | catch (Exception e) | ||
287 | { | ||
267 | Console.WriteLine("No IRC config information, skipping IRC bridge configuration"); | 288 | Console.WriteLine("No IRC config information, skipping IRC bridge configuration"); |
268 | } | 289 | } |
269 | m_log = OpenSim.Framework.Console.MainLog.Instance; | 290 | m_log = MainLog.Instance; |
270 | } | 291 | } |
271 | 292 | ||
272 | public bool Connect(List<Scene> scenes) { | 293 | public bool Connect(List<Scene> scenes) |
273 | try { | 294 | { |
295 | try | ||
296 | { | ||
274 | m_scenes = scenes; | 297 | m_scenes = scenes; |
275 | 298 | ||
276 | m_tcp = new TcpClient(m_server, m_port); | 299 | m_tcp = new TcpClient(m_server, m_port); |
@@ -279,13 +302,13 @@ namespace OpenSim.Region.Environment.Modules | |||
279 | m_log.Verbose("IRC", "Connected to " + m_server); | 302 | m_log.Verbose("IRC", "Connected to " + m_server); |
280 | m_reader = new StreamReader(m_stream); | 303 | m_reader = new StreamReader(m_stream); |
281 | m_writer = new StreamWriter(m_stream); | 304 | m_writer = new StreamWriter(m_stream); |
282 | 305 | ||
283 | pingSender = new Thread(new ThreadStart(this.PingRun)); | 306 | pingSender = new Thread(new ThreadStart(PingRun)); |
284 | pingSender.Start(); | 307 | pingSender.Start(); |
285 | 308 | ||
286 | listener = new Thread(new ThreadStart(this.ListenerRun)); | 309 | listener = new Thread(new ThreadStart(ListenerRun)); |
287 | listener.Start(); | 310 | listener.Start(); |
288 | 311 | ||
289 | m_writer.WriteLine(m_user); | 312 | m_writer.WriteLine(m_user); |
290 | m_writer.Flush(); | 313 | m_writer.Flush(); |
291 | m_writer.WriteLine("NICK " + m_nick); | 314 | m_writer.WriteLine("NICK " + m_nick); |
@@ -294,50 +317,61 @@ namespace OpenSim.Region.Environment.Modules | |||
294 | m_writer.Flush(); | 317 | m_writer.Flush(); |
295 | m_log.Verbose("IRC", "Connection fully established"); | 318 | m_log.Verbose("IRC", "Connection fully established"); |
296 | m_connected = true; | 319 | m_connected = true; |
297 | } catch (Exception e) { | 320 | } |
321 | catch (Exception e) | ||
322 | { | ||
298 | Console.WriteLine(e.ToString()); | 323 | Console.WriteLine(e.ToString()); |
299 | } | 324 | } |
300 | return m_connected; | 325 | return m_connected; |
301 | } | 326 | } |
302 | 327 | ||
303 | public bool Enabled | 328 | public bool Enabled |
304 | { | 329 | { |
305 | get { return m_enabled; } | 330 | get { return m_enabled; } |
306 | } | 331 | } |
307 | 332 | ||
308 | public bool Connected | 333 | public bool Connected |
309 | { | 334 | { |
310 | get { return m_connected; } | 335 | get { return m_connected; } |
311 | } | 336 | } |
312 | 337 | ||
313 | public void PrivMsg(string from, string region, string msg) { | 338 | public void PrivMsg(string from, string region, string msg) |
314 | try { | 339 | { |
340 | try | ||
341 | { | ||
315 | m_writer.WriteLine("PRIVMSG {0} :<{1} in {2}>: {3}", m_channel, from, region, msg); | 342 | m_writer.WriteLine("PRIVMSG {0} :<{1} in {2}>: {3}", m_channel, from, region, msg); |
316 | m_writer.Flush(); | 343 | m_writer.Flush(); |
317 | } catch (IOException) { | 344 | } |
318 | m_log.Error("IRC","Disconnected from IRC server."); | 345 | catch (IOException) |
346 | { | ||
347 | m_log.Error("IRC", "Disconnected from IRC server."); | ||
319 | listener.Abort(); | 348 | listener.Abort(); |
320 | pingSender.Abort(); | 349 | pingSender.Abort(); |
321 | m_connected = false; | 350 | m_connected = false; |
322 | } | 351 | } |
323 | } | 352 | } |
324 | 353 | ||
325 | private Dictionary<string, string> ExtractMsg(string input) { | 354 | private Dictionary<string, string> ExtractMsg(string input) |
355 | { | ||
326 | Dictionary<string, string> result = null; | 356 | Dictionary<string, string> result = null; |
327 | string regex = @":(?<nick>\w*)!~(?<user>\S*) PRIVMSG (?<channel>\S+) :(?<msg>.*)"; | 357 | string regex = @":(?<nick>\w*)!~(?<user>\S*) PRIVMSG (?<channel>\S+) :(?<msg>.*)"; |
328 | Regex RE = new Regex(regex, RegexOptions.Multiline); | 358 | Regex RE = new Regex(regex, RegexOptions.Multiline); |
329 | MatchCollection matches = RE.Matches(input); | 359 | MatchCollection matches = RE.Matches(input); |
330 | // Get some direct matches $1 $4 is a | 360 | // Get some direct matches $1 $4 is a |
331 | if ((matches.Count == 1) && (matches[0].Groups.Count == 5)) { | 361 | if ((matches.Count == 1) && (matches[0].Groups.Count == 5)) |
362 | { | ||
332 | result = new Dictionary<string, string>(); | 363 | result = new Dictionary<string, string>(); |
333 | result.Add("nick", matches[0].Groups[1].Value); | 364 | result.Add("nick", matches[0].Groups[1].Value); |
334 | result.Add("user", matches[0].Groups[2].Value); | 365 | result.Add("user", matches[0].Groups[2].Value); |
335 | result.Add("channel", matches[0].Groups[3].Value); | 366 | result.Add("channel", matches[0].Groups[3].Value); |
336 | result.Add("msg", matches[0].Groups[4].Value); | 367 | result.Add("msg", matches[0].Groups[4].Value); |
337 | } else { | 368 | } |
369 | else | ||
370 | { | ||
338 | m_log.Verbose("IRC", "Number of matches: " + matches.Count); | 371 | m_log.Verbose("IRC", "Number of matches: " + matches.Count); |
339 | if (matches.Count > 0) { | 372 | if (matches.Count > 0) |
340 | m_log.Verbose("IRC", "Number of groups: " + matches[0].Groups.Count); | 373 | { |
374 | m_log.Verbose("IRC", "Number of groups: " + matches[0].Groups.Count); | ||
341 | } | 375 | } |
342 | } | 376 | } |
343 | return result; | 377 | return result; |
@@ -365,19 +399,20 @@ namespace OpenSim.Region.Environment.Modules | |||
365 | if (inputLine.Contains(m_channel)) | 399 | if (inputLine.Contains(m_channel)) |
366 | { | 400 | { |
367 | Dictionary<string, string> data = ExtractMsg(inputLine); | 401 | Dictionary<string, string> data = ExtractMsg(inputLine); |
368 | if (data != null ) | 402 | if (data != null) |
369 | { | 403 | { |
370 | foreach (Scene m_scene in m_scenes) | 404 | foreach (Scene m_scene in m_scenes) |
371 | { | 405 | { |
372 | m_scene.ForEachScenePresence(delegate(ScenePresence avatar) | 406 | m_scene.ForEachScenePresence(delegate(ScenePresence avatar) |
373 | { | ||
374 | if (!avatar.IsChildAgent) | ||
375 | { | 407 | { |
376 | avatar.ControllingClient.SendChatMessage( | 408 | if (!avatar.IsChildAgent) |
377 | Helpers.StringToField(data["msg"]), 255, pos, data["nick"], | 409 | { |
378 | LLUUID.Zero); | 410 | avatar.ControllingClient.SendChatMessage( |
379 | } | 411 | Helpers.StringToField(data["msg"]), 255, |
380 | }); | 412 | pos, data["nick"], |
413 | LLUUID.Zero); | ||
414 | } | ||
415 | }); | ||
381 | } | 416 | } |
382 | } | 417 | } |
383 | } | 418 | } |
@@ -387,7 +422,8 @@ namespace OpenSim.Region.Environment.Modules | |||
387 | } | 422 | } |
388 | 423 | ||
389 | 424 | ||
390 | public void Close() { | 425 | public void Close() |
426 | { | ||
391 | listener.Abort(); | 427 | listener.Abort(); |
392 | pingSender.Abort(); | 428 | pingSender.Abort(); |
393 | m_writer.Close(); | 429 | m_writer.Close(); |
@@ -395,4 +431,4 @@ namespace OpenSim.Region.Environment.Modules | |||
395 | m_tcp.Close(); | 431 | m_tcp.Close(); |
396 | } | 432 | } |
397 | } | 433 | } |
398 | } | 434 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Environment/Modules/DynamicTextureModule.cs b/OpenSim/Region/Environment/Modules/DynamicTextureModule.cs index 7c852dc..2bc3db8 100644 --- a/OpenSim/Region/Environment/Modules/DynamicTextureModule.cs +++ b/OpenSim/Region/Environment/Modules/DynamicTextureModule.cs | |||
@@ -29,10 +29,10 @@ | |||
29 | using System; | 29 | using System; |
30 | using System.Collections.Generic; | 30 | using System.Collections.Generic; |
31 | using libsecondlife; | 31 | using libsecondlife; |
32 | using Nini.Config; | ||
32 | using OpenSim.Framework; | 33 | using OpenSim.Framework; |
33 | using OpenSim.Region.Environment.Interfaces; | 34 | using OpenSim.Region.Environment.Interfaces; |
34 | using OpenSim.Region.Environment.Scenes; | 35 | using OpenSim.Region.Environment.Scenes; |
35 | using Nini.Config; | ||
36 | 36 | ||
37 | namespace OpenSim.Region.Environment.Modules | 37 | namespace OpenSim.Region.Environment.Modules |
38 | { | 38 | { |
@@ -99,7 +99,7 @@ namespace OpenSim.Region.Environment.Modules | |||
99 | if (RenderPlugins.ContainsKey(contentType)) | 99 | if (RenderPlugins.ContainsKey(contentType)) |
100 | { | 100 | { |
101 | //Console.WriteLine("dynamic texture being created: " + url + " of type " + contentType); | 101 | //Console.WriteLine("dynamic texture being created: " + url + " of type " + contentType); |
102 | 102 | ||
103 | DynamicTextureUpdater updater = new DynamicTextureUpdater(); | 103 | DynamicTextureUpdater updater = new DynamicTextureUpdater(); |
104 | updater.SimUUID = simID; | 104 | updater.SimUUID = simID; |
105 | updater.PrimID = primID; | 105 | updater.PrimID = primID; |
@@ -187,4 +187,4 @@ namespace OpenSim.Region.Environment.Modules | |||
187 | } | 187 | } |
188 | } | 188 | } |
189 | } | 189 | } |
190 | } | 190 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Environment/Modules/EmailModule.cs b/OpenSim/Region/Environment/Modules/EmailModule.cs index 00ea07a..046a46c 100644 --- a/OpenSim/Region/Environment/Modules/EmailModule.cs +++ b/OpenSim/Region/Environment/Modules/EmailModule.cs | |||
@@ -31,4 +31,4 @@ namespace OpenSim.Region.Environment.Modules | |||
31 | internal class EmailModule | 31 | internal class EmailModule |
32 | { | 32 | { |
33 | } | 33 | } |
34 | } | 34 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Environment/Modules/FriendsModule.cs b/OpenSim/Region/Environment/Modules/FriendsModule.cs index 9144bee..d9f09f7 100644 --- a/OpenSim/Region/Environment/Modules/FriendsModule.cs +++ b/OpenSim/Region/Environment/Modules/FriendsModule.cs | |||
@@ -26,9 +26,9 @@ | |||
26 | * | 26 | * |
27 | */ | 27 | */ |
28 | 28 | ||
29 | using Nini.Config; | ||
29 | using OpenSim.Region.Environment.Interfaces; | 30 | using OpenSim.Region.Environment.Interfaces; |
30 | using OpenSim.Region.Environment.Scenes; | 31 | using OpenSim.Region.Environment.Scenes; |
31 | using Nini.Config; | ||
32 | 32 | ||
33 | namespace OpenSim.Region.Environment.Modules | 33 | namespace OpenSim.Region.Environment.Modules |
34 | { | 34 | { |
@@ -59,4 +59,4 @@ namespace OpenSim.Region.Environment.Modules | |||
59 | get { return false; } | 59 | get { return false; } |
60 | } | 60 | } |
61 | } | 61 | } |
62 | } | 62 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Environment/Modules/GroupsModule.cs b/OpenSim/Region/Environment/Modules/GroupsModule.cs index 150f294..50e9a39 100644 --- a/OpenSim/Region/Environment/Modules/GroupsModule.cs +++ b/OpenSim/Region/Environment/Modules/GroupsModule.cs | |||
@@ -26,9 +26,9 @@ | |||
26 | * | 26 | * |
27 | */ | 27 | */ |
28 | 28 | ||
29 | using Nini.Config; | ||
29 | using OpenSim.Region.Environment.Interfaces; | 30 | using OpenSim.Region.Environment.Interfaces; |
30 | using OpenSim.Region.Environment.Scenes; | 31 | using OpenSim.Region.Environment.Scenes; |
31 | using Nini.Config; | ||
32 | 32 | ||
33 | namespace OpenSim.Region.Environment.Modules | 33 | namespace OpenSim.Region.Environment.Modules |
34 | { | 34 | { |
@@ -59,4 +59,4 @@ namespace OpenSim.Region.Environment.Modules | |||
59 | get { return false; } | 59 | get { return false; } |
60 | } | 60 | } |
61 | } | 61 | } |
62 | } | 62 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Environment/Modules/InstantMessageModule.cs b/OpenSim/Region/Environment/Modules/InstantMessageModule.cs index 9ac1d76..2ad027a 100644 --- a/OpenSim/Region/Environment/Modules/InstantMessageModule.cs +++ b/OpenSim/Region/Environment/Modules/InstantMessageModule.cs | |||
@@ -27,11 +27,12 @@ | |||
27 | */ | 27 | */ |
28 | 28 | ||
29 | using System.Collections.Generic; | 29 | using System.Collections.Generic; |
30 | using libsecondlife; | ||
31 | using Nini.Config; | ||
32 | using OpenSim.Framework; | ||
33 | using OpenSim.Framework.Console; | ||
30 | using OpenSim.Region.Environment.Interfaces; | 34 | using OpenSim.Region.Environment.Interfaces; |
31 | using OpenSim.Region.Environment.Scenes; | 35 | using OpenSim.Region.Environment.Scenes; |
32 | using OpenSim.Framework.Console; | ||
33 | using OpenSim.Framework; | ||
34 | using Nini.Config; | ||
35 | 36 | ||
36 | namespace OpenSim.Region.Environment.Modules | 37 | namespace OpenSim.Region.Environment.Modules |
37 | { | 38 | { |
@@ -42,7 +43,7 @@ namespace OpenSim.Region.Environment.Modules | |||
42 | 43 | ||
43 | public InstantMessageModule() | 44 | public InstantMessageModule() |
44 | { | 45 | { |
45 | m_log = OpenSim.Framework.Console.MainLog.Instance; | 46 | m_log = MainLog.Instance; |
46 | } | 47 | } |
47 | 48 | ||
48 | public void Initialise(Scene scene, IConfigSource config) | 49 | public void Initialise(Scene scene, IConfigSource config) |
@@ -50,33 +51,34 @@ namespace OpenSim.Region.Environment.Modules | |||
50 | if (!m_scenes.Contains(scene)) | 51 | if (!m_scenes.Contains(scene)) |
51 | { | 52 | { |
52 | m_scenes.Add(scene); | 53 | m_scenes.Add(scene); |
53 | scene.EventManager.OnNewClient += OnNewClient; | 54 | scene.EventManager.OnNewClient += OnNewClient; |
54 | } | 55 | } |
55 | } | 56 | } |
56 | 57 | ||
57 | void OnNewClient(OpenSim.Framework.IClientAPI client) | 58 | private void OnNewClient(IClientAPI client) |
58 | { | 59 | { |
59 | client.OnInstantMessage += OnInstantMessage; | 60 | client.OnInstantMessage += OnInstantMessage; |
60 | } | 61 | } |
61 | 62 | ||
62 | void OnInstantMessage(libsecondlife.LLUUID fromAgentID, | 63 | private void OnInstantMessage(LLUUID fromAgentID, |
63 | libsecondlife.LLUUID fromAgentSession, libsecondlife.LLUUID toAgentID, | 64 | LLUUID fromAgentSession, LLUUID toAgentID, |
64 | libsecondlife.LLUUID imSessionID, uint timestamp, string fromAgentName, | 65 | LLUUID imSessionID, uint timestamp, string fromAgentName, |
65 | string message, byte dialog) | 66 | string message, byte dialog) |
66 | { | 67 | { |
67 | // TODO: Remove after debugging. Privacy implications. | 68 | // TODO: Remove after debugging. Privacy implications. |
68 | m_log.Verbose("IM",fromAgentName + ": " + message); | 69 | m_log.Verbose("IM", fromAgentName + ": " + message); |
69 | 70 | ||
70 | foreach (Scene m_scene in m_scenes) | 71 | foreach (Scene m_scene in m_scenes) |
71 | { | 72 | { |
72 | if (m_scene.Entities.ContainsKey(toAgentID) && m_scene.Entities[toAgentID] is ScenePresence) | 73 | if (m_scene.Entities.ContainsKey(toAgentID) && m_scene.Entities[toAgentID] is ScenePresence) |
73 | { | 74 | { |
74 | // Local Message | 75 | // Local Message |
75 | ScenePresence user = (ScenePresence)m_scene.Entities[toAgentID]; | 76 | ScenePresence user = (ScenePresence) m_scene.Entities[toAgentID]; |
76 | if (!user.IsChildAgent) | 77 | if (!user.IsChildAgent) |
77 | { | 78 | { |
78 | user.ControllingClient.SendInstantMessage(fromAgentID, fromAgentSession, message, | 79 | user.ControllingClient.SendInstantMessage(fromAgentID, fromAgentSession, message, |
79 | toAgentID, imSessionID, fromAgentName, dialog, timestamp); | 80 | toAgentID, imSessionID, fromAgentName, dialog, |
81 | timestamp); | ||
80 | } | 82 | } |
81 | // Message sent | 83 | // Message sent |
82 | return; | 84 | return; |
@@ -104,4 +106,4 @@ namespace OpenSim.Region.Environment.Modules | |||
104 | get { return true; } | 106 | get { return true; } |
105 | } | 107 | } |
106 | } | 108 | } |
107 | } | 109 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Environment/Modules/InventoryModule.cs b/OpenSim/Region/Environment/Modules/InventoryModule.cs index 3f8cd6e..e2ad0d5 100644 --- a/OpenSim/Region/Environment/Modules/InventoryModule.cs +++ b/OpenSim/Region/Environment/Modules/InventoryModule.cs | |||
@@ -26,9 +26,9 @@ | |||
26 | * | 26 | * |
27 | */ | 27 | */ |
28 | 28 | ||
29 | using Nini.Config; | ||
29 | using OpenSim.Region.Environment.Interfaces; | 30 | using OpenSim.Region.Environment.Interfaces; |
30 | using OpenSim.Region.Environment.Scenes; | 31 | using OpenSim.Region.Environment.Scenes; |
31 | using Nini.Config; | ||
32 | 32 | ||
33 | namespace OpenSim.Region.Environment.Modules | 33 | namespace OpenSim.Region.Environment.Modules |
34 | { | 34 | { |
@@ -59,4 +59,4 @@ namespace OpenSim.Region.Environment.Modules | |||
59 | get { return false; } | 59 | get { return false; } |
60 | } | 60 | } |
61 | } | 61 | } |
62 | } | 62 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Environment/Modules/LoadImageURLModule.cs b/OpenSim/Region/Environment/Modules/LoadImageURLModule.cs index 8b8b386..9d10fc3 100644 --- a/OpenSim/Region/Environment/Modules/LoadImageURLModule.cs +++ b/OpenSim/Region/Environment/Modules/LoadImageURLModule.cs | |||
@@ -1,18 +1,16 @@ | |||
1 | using System; | 1 | using System; |
2 | using System.Collections.Generic; | ||
3 | using System.Text; | ||
4 | using System.Net; | ||
5 | using System.IO; | ||
6 | using System.Drawing; | 2 | using System.Drawing; |
3 | using System.IO; | ||
4 | using System.Net; | ||
7 | using libsecondlife; | 5 | using libsecondlife; |
6 | using Nini.Config; | ||
8 | using OpenJPEGNet; | 7 | using OpenJPEGNet; |
9 | using OpenSim.Region.Environment.Scenes; | ||
10 | using OpenSim.Region.Environment.Interfaces; | 8 | using OpenSim.Region.Environment.Interfaces; |
11 | using Nini.Config; | 9 | using OpenSim.Region.Environment.Scenes; |
12 | 10 | ||
13 | namespace OpenSim.Region.Environment.Modules | 11 | namespace OpenSim.Region.Environment.Modules |
14 | { | 12 | { |
15 | public class LoadImageURLModule : IRegionModule , IDynamicTextureRender | 13 | public class LoadImageURLModule : IRegionModule, IDynamicTextureRender |
16 | { | 14 | { |
17 | private string m_name = "LoadImageURL"; | 15 | private string m_name = "LoadImageURL"; |
18 | private IDynamicTextureManager m_textureManager; | 16 | private IDynamicTextureManager m_textureManager; |
@@ -85,25 +83,25 @@ namespace OpenSim.Region.Environment.Modules | |||
85 | private void MakeHttpRequest(string url, LLUUID requestID) | 83 | private void MakeHttpRequest(string url, LLUUID requestID) |
86 | { | 84 | { |
87 | WebRequest request = HttpWebRequest.Create(url); | 85 | WebRequest request = HttpWebRequest.Create(url); |
88 | RequestState state = new RequestState((HttpWebRequest)request, requestID); | 86 | RequestState state = new RequestState((HttpWebRequest) request, requestID); |
89 | IAsyncResult result = request.BeginGetResponse(new AsyncCallback(HttpRequestReturn), state); | 87 | IAsyncResult result = request.BeginGetResponse(new AsyncCallback(HttpRequestReturn), state); |
90 | 88 | ||
91 | TimeSpan t = (DateTime.UtcNow - new DateTime(1970, 1, 1)); | 89 | TimeSpan t = (DateTime.UtcNow - new DateTime(1970, 1, 1)); |
92 | state.TimeOfRequest = (int)t.TotalSeconds; | 90 | state.TimeOfRequest = (int) t.TotalSeconds; |
93 | } | 91 | } |
94 | 92 | ||
95 | private void HttpRequestReturn(IAsyncResult result) | 93 | private void HttpRequestReturn(IAsyncResult result) |
96 | { | 94 | { |
97 | RequestState state = (RequestState)result.AsyncState; | 95 | RequestState state = (RequestState) result.AsyncState; |
98 | WebRequest request = (WebRequest)state.Request; | 96 | WebRequest request = (WebRequest) state.Request; |
99 | HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(result); | 97 | HttpWebResponse response = (HttpWebResponse) request.EndGetResponse(result); |
100 | if (response.StatusCode == HttpStatusCode.OK) | 98 | if (response.StatusCode == HttpStatusCode.OK) |
101 | { | 99 | { |
102 | Bitmap image = new Bitmap(response.GetResponseStream()); | 100 | Bitmap image = new Bitmap(response.GetResponseStream()); |
103 | Bitmap resize = new Bitmap(image, new Size(512, 512)); | 101 | Bitmap resize = new Bitmap(image, new Size(512, 512)); |
104 | byte[] imageJ2000 = OpenJPEG.EncodeFromImage(resize, true); | 102 | byte[] imageJ2000 = OpenJPEG.EncodeFromImage(resize, true); |
105 | 103 | ||
106 | m_textureManager.ReturnData(state.RequestID, imageJ2000); | 104 | m_textureManager.ReturnData(state.RequestID, imageJ2000); |
107 | } | 105 | } |
108 | } | 106 | } |
109 | 107 | ||
@@ -119,6 +117,5 @@ namespace OpenSim.Region.Environment.Modules | |||
119 | RequestID = requestID; | 117 | RequestID = requestID; |
120 | } | 118 | } |
121 | } | 119 | } |
122 | |||
123 | } | 120 | } |
124 | } | 121 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Environment/Modules/ScriptsHttpRequests.cs b/OpenSim/Region/Environment/Modules/ScriptsHttpRequests.cs index 9412089..5ac0b39 100644 --- a/OpenSim/Region/Environment/Modules/ScriptsHttpRequests.cs +++ b/OpenSim/Region/Environment/Modules/ScriptsHttpRequests.cs | |||
@@ -31,4 +31,4 @@ namespace OpenSim.Region.Environment.Modules | |||
31 | internal class ScriptsHttpRequests | 31 | internal class ScriptsHttpRequests |
32 | { | 32 | { |
33 | } | 33 | } |
34 | } | 34 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Environment/Modules/TeleportModule.cs b/OpenSim/Region/Environment/Modules/TeleportModule.cs index d22a722..77f8db2 100644 --- a/OpenSim/Region/Environment/Modules/TeleportModule.cs +++ b/OpenSim/Region/Environment/Modules/TeleportModule.cs | |||
@@ -31,4 +31,4 @@ namespace OpenSim.Region.Environment.Modules | |||
31 | internal class TeleportModule | 31 | internal class TeleportModule |
32 | { | 32 | { |
33 | } | 33 | } |
34 | } | 34 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Environment/Modules/TextureDownloadModule.cs b/OpenSim/Region/Environment/Modules/TextureDownloadModule.cs index 5eeeca6..66c499b 100644 --- a/OpenSim/Region/Environment/Modules/TextureDownloadModule.cs +++ b/OpenSim/Region/Environment/Modules/TextureDownloadModule.cs | |||
@@ -27,14 +27,12 @@ | |||
27 | */ | 27 | */ |
28 | using System; | 28 | using System; |
29 | using System.Collections.Generic; | 29 | using System.Collections.Generic; |
30 | using System.Threading; | ||
31 | using libsecondlife; | 30 | using libsecondlife; |
32 | using libsecondlife.Packets; | 31 | using libsecondlife.Packets; |
33 | using OpenSim.Framework.Interfaces; | 32 | using Nini.Config; |
34 | using OpenSim.Framework; | 33 | using OpenSim.Framework; |
35 | using OpenSim.Region.Environment.Interfaces; | 34 | using OpenSim.Region.Environment.Interfaces; |
36 | using OpenSim.Region.Environment.Scenes; | 35 | using OpenSim.Region.Environment.Scenes; |
37 | using Nini.Config; | ||
38 | 36 | ||
39 | namespace OpenSim.Region.Environment.Modules | 37 | namespace OpenSim.Region.Environment.Modules |
40 | { | 38 | { |
@@ -42,17 +40,19 @@ namespace OpenSim.Region.Environment.Modules | |||
42 | { | 40 | { |
43 | private Scene m_scene; | 41 | private Scene m_scene; |
44 | private List<Scene> m_scenes = new List<Scene>(); | 42 | private List<Scene> m_scenes = new List<Scene>(); |
45 | private Dictionary<LLUUID, Dictionary<LLUUID, AssetRequest>> ClientRequests = new Dictionary<LLUUID, Dictionary<LLUUID, AssetRequest>>(); | 43 | |
44 | private Dictionary<LLUUID, Dictionary<LLUUID, AssetRequest>> ClientRequests = | ||
45 | new Dictionary<LLUUID, Dictionary<LLUUID, AssetRequest>>(); | ||
46 | 46 | ||
47 | private BlockingQueue<TextureSender> QueueSenders = new BlockingQueue<TextureSender>(); | 47 | private BlockingQueue<TextureSender> QueueSenders = new BlockingQueue<TextureSender>(); |
48 | private Dictionary<LLUUID, List<LLUUID>> InProcess = new Dictionary<LLUUID, List<LLUUID>>(); | 48 | private Dictionary<LLUUID, List<LLUUID>> InProcess = new Dictionary<LLUUID, List<LLUUID>>(); |
49 | // private Thread m_thread; | 49 | // private Thread m_thread; |
50 | 50 | ||
51 | public TextureDownloadModule() | 51 | public TextureDownloadModule() |
52 | { | 52 | { |
53 | // m_thread = new Thread(new ThreadStart(ProcessTextureSenders)); | 53 | // m_thread = new Thread(new ThreadStart(ProcessTextureSenders)); |
54 | // m_thread.IsBackground = true; | 54 | // m_thread.IsBackground = true; |
55 | // m_thread.Start(); | 55 | // m_thread.Start(); |
56 | } | 56 | } |
57 | 57 | ||
58 | public void Initialise(Scene scene, IConfigSource config) | 58 | public void Initialise(Scene scene, IConfigSource config) |
@@ -85,7 +85,7 @@ namespace OpenSim.Region.Environment.Modules | |||
85 | 85 | ||
86 | public void NewClient(IClientAPI client) | 86 | public void NewClient(IClientAPI client) |
87 | { | 87 | { |
88 | /* lock (ClientRequests) | 88 | /* lock (ClientRequests) |
89 | { | 89 | { |
90 | if (!ClientRequests.ContainsKey(client.AgentId)) | 90 | if (!ClientRequests.ContainsKey(client.AgentId)) |
91 | { | 91 | { |
@@ -120,7 +120,7 @@ namespace OpenSim.Region.Environment.Modules | |||
120 | 120 | ||
121 | public void TextureRequest(Object sender, TextureRequestArgs e) | 121 | public void TextureRequest(Object sender, TextureRequestArgs e) |
122 | { | 122 | { |
123 | IClientAPI client = (IClientAPI)sender; | 123 | IClientAPI client = (IClientAPI) sender; |
124 | if (!ClientRequests[client.AgentId].ContainsKey(e.RequestedAssetID)) | 124 | if (!ClientRequests[client.AgentId].ContainsKey(e.RequestedAssetID)) |
125 | { | 125 | { |
126 | lock (ClientRequests) | 126 | lock (ClientRequests) |
@@ -136,15 +136,15 @@ namespace OpenSim.Region.Environment.Modules | |||
136 | { | 136 | { |
137 | while (true) | 137 | while (true) |
138 | { | 138 | { |
139 | TextureSender sender = this.QueueSenders.Dequeue(); | 139 | TextureSender sender = QueueSenders.Dequeue(); |
140 | bool finished = sender.SendTexture(); | 140 | bool finished = sender.SendTexture(); |
141 | if (finished) | 141 | if (finished) |
142 | { | 142 | { |
143 | this.TextureSent(sender); | 143 | TextureSent(sender); |
144 | } | 144 | } |
145 | else | 145 | else |
146 | { | 146 | { |
147 | this.QueueSenders.Enqueue(sender); | 147 | QueueSenders.Enqueue(sender); |
148 | } | 148 | } |
149 | } | 149 | } |
150 | } | 150 | } |
@@ -173,13 +173,13 @@ namespace OpenSim.Region.Environment.Modules | |||
173 | 173 | ||
174 | if (asset.Data.LongLength > 600) | 174 | if (asset.Data.LongLength > 600) |
175 | { | 175 | { |
176 | NumPackets = 2 + (int)(asset.Data.Length - 601) / 1000; | 176 | NumPackets = 2 + (int) (asset.Data.Length - 601)/1000; |
177 | } | 177 | } |
178 | else | 178 | else |
179 | { | 179 | { |
180 | NumPackets = 1; | 180 | NumPackets = 1; |
181 | } | 181 | } |
182 | 182 | ||
183 | PacketCounter = (int) req.PacketNumber; | 183 | PacketCounter = (int) req.PacketNumber; |
184 | } | 184 | } |
185 | 185 | ||
@@ -205,7 +205,7 @@ namespace OpenSim.Region.Environment.Modules | |||
205 | im.Header.Reliable = false; | 205 | im.Header.Reliable = false; |
206 | im.ImageID.Packets = 1; | 206 | im.ImageID.Packets = 1; |
207 | im.ImageID.ID = m_asset.FullID; | 207 | im.ImageID.ID = m_asset.FullID; |
208 | im.ImageID.Size = (uint)m_asset.Data.Length; | 208 | im.ImageID.Size = (uint) m_asset.Data.Length; |
209 | im.ImageData.Data = m_asset.Data; | 209 | im.ImageData.Data = m_asset.Data; |
210 | im.ImageID.Codec = 2; | 210 | im.ImageID.Codec = 2; |
211 | req.RequestUser.OutPacket(im); | 211 | req.RequestUser.OutPacket(im); |
@@ -215,9 +215,9 @@ namespace OpenSim.Region.Environment.Modules | |||
215 | { | 215 | { |
216 | ImageDataPacket im = new ImageDataPacket(); | 216 | ImageDataPacket im = new ImageDataPacket(); |
217 | im.Header.Reliable = false; | 217 | im.Header.Reliable = false; |
218 | im.ImageID.Packets = (ushort)(NumPackets); | 218 | im.ImageID.Packets = (ushort) (NumPackets); |
219 | im.ImageID.ID = m_asset.FullID; | 219 | im.ImageID.ID = m_asset.FullID; |
220 | im.ImageID.Size = (uint)m_asset.Data.Length; | 220 | im.ImageID.Size = (uint) m_asset.Data.Length; |
221 | im.ImageData.Data = new byte[600]; | 221 | im.ImageData.Data = new byte[600]; |
222 | Array.Copy(m_asset.Data, 0, im.ImageData.Data, 0, 600); | 222 | Array.Copy(m_asset.Data, 0, im.ImageData.Data, 0, 600); |
223 | im.ImageID.Codec = 2; | 223 | im.ImageID.Codec = 2; |
@@ -229,18 +229,16 @@ namespace OpenSim.Region.Environment.Modules | |||
229 | { | 229 | { |
230 | ImagePacketPacket im = new ImagePacketPacket(); | 230 | ImagePacketPacket im = new ImagePacketPacket(); |
231 | im.Header.Reliable = false; | 231 | im.Header.Reliable = false; |
232 | im.ImageID.Packet = (ushort)(PacketCounter); | 232 | im.ImageID.Packet = (ushort) (PacketCounter); |
233 | im.ImageID.ID = m_asset.FullID; | 233 | im.ImageID.ID = m_asset.FullID; |
234 | int size = m_asset.Data.Length - 600 - (1000 * (PacketCounter - 1)); | 234 | int size = m_asset.Data.Length - 600 - (1000*(PacketCounter - 1)); |
235 | if (size > 1000) size = 1000; | 235 | if (size > 1000) size = 1000; |
236 | im.ImageData.Data = new byte[size]; | 236 | im.ImageData.Data = new byte[size]; |
237 | Array.Copy(m_asset.Data, 600 + (1000 * (PacketCounter - 1)), im.ImageData.Data, 0, size); | 237 | Array.Copy(m_asset.Data, 600 + (1000*(PacketCounter - 1)), im.ImageData.Data, 0, size); |
238 | req.RequestUser.OutPacket(im); | 238 | req.RequestUser.OutPacket(im); |
239 | PacketCounter++; | 239 | PacketCounter++; |
240 | } | 240 | } |
241 | |||
242 | } | 241 | } |
243 | |||
244 | } | 242 | } |
245 | 243 | ||
246 | public class AssetRequest | 244 | public class AssetRequest |
@@ -258,6 +256,5 @@ namespace OpenSim.Region.Environment.Modules | |||
258 | PacketNumber = packetNumber; | 256 | PacketNumber = packetNumber; |
259 | } | 257 | } |
260 | } | 258 | } |
261 | |||
262 | } | 259 | } |
263 | } | 260 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Environment/Modules/WorldCommModule.cs b/OpenSim/Region/Environment/Modules/WorldCommModule.cs index a697162..7a631d7 100644 --- a/OpenSim/Region/Environment/Modules/WorldCommModule.cs +++ b/OpenSim/Region/Environment/Modules/WorldCommModule.cs | |||
@@ -27,20 +27,12 @@ | |||
27 | */ | 27 | */ |
28 | 28 | ||
29 | using System; | 29 | using System; |
30 | using System.IO; | 30 | using System.Collections.Generic; |
31 | using System.Net.Sockets; | ||
32 | using System.Text; | ||
33 | using System.Threading; | ||
34 | using libsecondlife; | 31 | using libsecondlife; |
35 | using OpenSim.Framework.Interfaces; | 32 | using Nini.Config; |
36 | using OpenSim.Framework; | 33 | using OpenSim.Framework; |
37 | using OpenSim.Region.Environment.Interfaces; | 34 | using OpenSim.Region.Environment.Interfaces; |
38 | using OpenSim.Region.Environment.Scenes; | 35 | using OpenSim.Region.Environment.Scenes; |
39 | using OpenSim.Framework.Servers; | ||
40 | using Nwc.XmlRpc; | ||
41 | using System.Collections; | ||
42 | using System.Collections.Generic; | ||
43 | using Nini.Config; | ||
44 | 36 | ||
45 | /***************************************************** | 37 | /***************************************************** |
46 | * | 38 | * |
@@ -71,6 +63,7 @@ using Nini.Config; | |||
71 | * thats the way it works. | 63 | * thats the way it works. |
72 | * | 64 | * |
73 | * **************************************************/ | 65 | * **************************************************/ |
66 | |||
74 | namespace OpenSim.Region.Environment.Modules | 67 | namespace OpenSim.Region.Environment.Modules |
75 | { | 68 | { |
76 | public class WorldCommModule : IRegionModule, IWorldComm | 69 | public class WorldCommModule : IRegionModule, IWorldComm |
@@ -120,9 +113,9 @@ namespace OpenSim.Region.Environment.Modules | |||
120 | private void DeliverClientMessage(Object sender, ChatFromViewerArgs e) | 113 | private void DeliverClientMessage(Object sender, ChatFromViewerArgs e) |
121 | { | 114 | { |
122 | DeliverMessage(e.Sender.AgentId.ToString(), | 115 | DeliverMessage(e.Sender.AgentId.ToString(), |
123 | (int)e.Type, e.Channel, | 116 | (int) e.Type, e.Channel, |
124 | e.Sender.FirstName + " " + e.Sender.LastName, | 117 | e.Sender.FirstName + " " + e.Sender.LastName, |
125 | e.Message); | 118 | e.Message); |
126 | } | 119 | } |
127 | 120 | ||
128 | public int Listen(uint localID, LLUUID itemID, LLUUID hostID, int channel, string name, string id, string msg) | 121 | public int Listen(uint localID, LLUUID itemID, LLUUID hostID, int channel, string name, string id, string msg) |
@@ -132,11 +125,10 @@ namespace OpenSim.Region.Environment.Modules | |||
132 | 125 | ||
133 | public void ListenControl(int handle, int active) | 126 | public void ListenControl(int handle, int active) |
134 | { | 127 | { |
135 | if ( active == 1 ) | 128 | if (active == 1) |
136 | m_listenerManager.Activate(handle); | 129 | m_listenerManager.Activate(handle); |
137 | else if ( active == 0 ) | 130 | else if (active == 0) |
138 | m_listenerManager.Dectivate(handle); | 131 | m_listenerManager.Dectivate(handle); |
139 | |||
140 | } | 132 | } |
141 | 133 | ||
142 | public void ListenRemove(int handle) | 134 | public void ListenRemove(int handle) |
@@ -151,7 +143,6 @@ namespace OpenSim.Region.Environment.Modules | |||
151 | // nearby avatards, the SimChat function is used. | 143 | // nearby avatards, the SimChat function is used. |
152 | public void DeliverMessage(string sourceItemID, int type, int channel, string name, string msg) | 144 | public void DeliverMessage(string sourceItemID, int type, int channel, string name, string msg) |
153 | { | 145 | { |
154 | |||
155 | SceneObjectPart source = null; | 146 | SceneObjectPart source = null; |
156 | ScenePresence avatar = null; | 147 | ScenePresence avatar = null; |
157 | 148 | ||
@@ -160,7 +151,7 @@ namespace OpenSim.Region.Environment.Modules | |||
160 | { | 151 | { |
161 | avatar = m_scene.GetScenePresence(new LLUUID(sourceItemID)); | 152 | avatar = m_scene.GetScenePresence(new LLUUID(sourceItemID)); |
162 | } | 153 | } |
163 | if( (avatar != null) || (source != null) ) | 154 | if ((avatar != null) || (source != null)) |
164 | { | 155 | { |
165 | // Loop through the objects in the scene | 156 | // Loop through the objects in the scene |
166 | // If they are in proximity, then if they are | 157 | // If they are in proximity, then if they are |
@@ -169,12 +160,12 @@ namespace OpenSim.Region.Environment.Modules | |||
169 | foreach (LLUUID eb in m_scene.Entities.Keys) | 160 | foreach (LLUUID eb in m_scene.Entities.Keys) |
170 | { | 161 | { |
171 | EntityBase sPart; | 162 | EntityBase sPart; |
172 | 163 | ||
173 | m_scene.Entities.TryGetValue(eb, out sPart); | 164 | m_scene.Entities.TryGetValue(eb, out sPart); |
174 | 165 | ||
175 | // Dont process if this message is from itself! | 166 | // Dont process if this message is from itself! |
176 | if (eb.ToString().Equals(sourceItemID) || | 167 | if (eb.ToString().Equals(sourceItemID) || |
177 | sPart.UUID.ToString().Equals(sourceItemID) ) | 168 | sPart.UUID.ToString().Equals(sourceItemID)) |
178 | continue; | 169 | continue; |
179 | 170 | ||
180 | double dis = 0; | 171 | double dis = 0; |
@@ -192,12 +183,11 @@ namespace OpenSim.Region.Environment.Modules | |||
192 | { | 183 | { |
193 | ListenerInfo isListener = m_listenerManager.IsListenerMatch( | 184 | ListenerInfo isListener = m_listenerManager.IsListenerMatch( |
194 | sourceItemID, sPart.UUID, channel, name, msg | 185 | sourceItemID, sPart.UUID, channel, name, msg |
195 | ); | 186 | ); |
196 | if (isListener != null) | 187 | if (isListener != null) |
197 | { | 188 | { |
198 | m_pending.Enqueue(isListener); | 189 | m_pending.Enqueue(isListener); |
199 | } | 190 | } |
200 | |||
201 | } | 191 | } |
202 | break; | 192 | break; |
203 | 193 | ||
@@ -207,12 +197,11 @@ namespace OpenSim.Region.Environment.Modules | |||
207 | { | 197 | { |
208 | ListenerInfo isListener = m_listenerManager.IsListenerMatch( | 198 | ListenerInfo isListener = m_listenerManager.IsListenerMatch( |
209 | sourceItemID, sPart.UUID, channel, name, msg | 199 | sourceItemID, sPart.UUID, channel, name, msg |
210 | ); | 200 | ); |
211 | if (isListener != null) | 201 | if (isListener != null) |
212 | { | 202 | { |
213 | m_pending.Enqueue(isListener); | 203 | m_pending.Enqueue(isListener); |
214 | } | 204 | } |
215 | |||
216 | } | 205 | } |
217 | break; | 206 | break; |
218 | 207 | ||
@@ -221,22 +210,22 @@ namespace OpenSim.Region.Environment.Modules | |||
221 | { | 210 | { |
222 | ListenerInfo isListener = m_listenerManager.IsListenerMatch( | 211 | ListenerInfo isListener = m_listenerManager.IsListenerMatch( |
223 | sourceItemID, sPart.UUID, channel, name, msg | 212 | sourceItemID, sPart.UUID, channel, name, msg |
224 | ); | 213 | ); |
225 | if (isListener != null) | 214 | if (isListener != null) |
226 | { | 215 | { |
227 | m_pending.Enqueue(isListener); | 216 | m_pending.Enqueue(isListener); |
228 | } | 217 | } |
229 | |||
230 | } | 218 | } |
231 | break; | 219 | break; |
232 | 220 | ||
233 | case 0xff: // Broadcast | 221 | case 0xff: // Broadcast |
234 | ListenerInfo isListen = m_listenerManager.IsListenerMatch(sourceItemID, eb, channel, name, msg); | 222 | ListenerInfo isListen = |
223 | m_listenerManager.IsListenerMatch(sourceItemID, eb, channel, name, msg); | ||
235 | if (isListen != null) | 224 | if (isListen != null) |
236 | { | 225 | { |
237 | ListenerInfo isListener = m_listenerManager.IsListenerMatch( | 226 | ListenerInfo isListener = m_listenerManager.IsListenerMatch( |
238 | sourceItemID, sPart.UUID, channel, name, msg | 227 | sourceItemID, sPart.UUID, channel, name, msg |
239 | ); | 228 | ); |
240 | if (isListener != null) | 229 | if (isListener != null) |
241 | { | 230 | { |
242 | m_pending.Enqueue(isListener); | 231 | m_pending.Enqueue(isListener); |
@@ -244,10 +233,9 @@ namespace OpenSim.Region.Environment.Modules | |||
244 | } | 233 | } |
245 | break; | 234 | break; |
246 | } | 235 | } |
247 | }; | 236 | } |
248 | 237 | ; | |
249 | } | 238 | } |
250 | |||
251 | } | 239 | } |
252 | 240 | ||
253 | public bool HasMessages() | 241 | public bool HasMessages() |
@@ -257,18 +245,15 @@ namespace OpenSim.Region.Environment.Modules | |||
257 | 245 | ||
258 | public ListenerInfo GetNextMessage() | 246 | public ListenerInfo GetNextMessage() |
259 | { | 247 | { |
260 | |||
261 | ListenerInfo li = null; | 248 | ListenerInfo li = null; |
262 | 249 | ||
263 | lock (CommListLock) | 250 | lock (CommListLock) |
264 | { | 251 | { |
265 | li = m_pending.Dequeue(); | 252 | li = m_pending.Dequeue(); |
266 | } | 253 | } |
267 | 254 | ||
268 | return li; | 255 | return li; |
269 | |||
270 | } | 256 | } |
271 | |||
272 | } | 257 | } |
273 | 258 | ||
274 | // hostID: the ID of the ScenePart | 259 | // hostID: the ID of the ScenePart |
@@ -285,20 +270,19 @@ namespace OpenSim.Region.Environment.Modules | |||
285 | m_listeners = new Dictionary<int, ListenerInfo>(); | 270 | m_listeners = new Dictionary<int, ListenerInfo>(); |
286 | } | 271 | } |
287 | 272 | ||
288 | public int AddListener(uint localID, LLUUID itemID, LLUUID hostID, int channel, string name, string id, string msg) | 273 | public int AddListener(uint localID, LLUUID itemID, LLUUID hostID, int channel, string name, string id, |
274 | string msg) | ||
289 | { | 275 | { |
290 | 276 | if (m_listeners.Count < m_MaxListeners) | |
291 | if ( m_listeners.Count < m_MaxListeners ) | ||
292 | { | 277 | { |
293 | ListenerInfo isListener = IsListenerMatch(LLUUID.Zero.ToString(), itemID, channel, name, msg); | 278 | ListenerInfo isListener = IsListenerMatch(LLUUID.Zero.ToString(), itemID, channel, name, msg); |
294 | 279 | ||
295 | if(isListener == null) | 280 | if (isListener == null) |
296 | { | 281 | { |
297 | int newHandle = GetNewHandle(); | 282 | int newHandle = GetNewHandle(); |
298 | 283 | ||
299 | if (newHandle > -1) | 284 | if (newHandle > -1) |
300 | { | 285 | { |
301 | |||
302 | ListenerInfo li = new ListenerInfo(localID, newHandle, itemID, hostID, channel, name, id, msg); | 286 | ListenerInfo li = new ListenerInfo(localID, newHandle, itemID, hostID, channel, name, id, msg); |
303 | 287 | ||
304 | lock (ListenersLock) | 288 | lock (ListenersLock) |
@@ -308,13 +292,10 @@ namespace OpenSim.Region.Environment.Modules | |||
308 | 292 | ||
309 | return newHandle; | 293 | return newHandle; |
310 | } | 294 | } |
311 | |||
312 | } | 295 | } |
313 | |||
314 | } | 296 | } |
315 | 297 | ||
316 | return -1; | 298 | return -1; |
317 | |||
318 | } | 299 | } |
319 | 300 | ||
320 | public void Remove(int handle) | 301 | public void Remove(int handle) |
@@ -324,7 +305,6 @@ namespace OpenSim.Region.Environment.Modules | |||
324 | 305 | ||
325 | private int GetNewHandle() | 306 | private int GetNewHandle() |
326 | { | 307 | { |
327 | |||
328 | for (int i = 0; i < int.MaxValue - 1; i++) | 308 | for (int i = 0; i < int.MaxValue - 1; i++) |
329 | { | 309 | { |
330 | if (!m_listeners.ContainsKey(i)) | 310 | if (!m_listeners.ContainsKey(i)) |
@@ -332,12 +312,10 @@ namespace OpenSim.Region.Environment.Modules | |||
332 | } | 312 | } |
333 | 313 | ||
334 | return -1; | 314 | return -1; |
335 | |||
336 | } | 315 | } |
337 | 316 | ||
338 | public bool IsListener(LLUUID hostID) | 317 | public bool IsListener(LLUUID hostID) |
339 | { | 318 | { |
340 | |||
341 | foreach (ListenerInfo li in m_listeners.Values) | 319 | foreach (ListenerInfo li in m_listeners.Values) |
342 | { | 320 | { |
343 | if (li.GetHostID().Equals(hostID)) | 321 | if (li.GetHostID().Equals(hostID)) |
@@ -345,15 +323,13 @@ namespace OpenSim.Region.Environment.Modules | |||
345 | } | 323 | } |
346 | 324 | ||
347 | return false; | 325 | return false; |
348 | |||
349 | } | 326 | } |
350 | 327 | ||
351 | public void Activate(int handle) | 328 | public void Activate(int handle) |
352 | { | 329 | { |
353 | |||
354 | ListenerInfo li; | 330 | ListenerInfo li; |
355 | 331 | ||
356 | if( m_listeners.TryGetValue(handle, out li) ) | 332 | if (m_listeners.TryGetValue(handle, out li)) |
357 | { | 333 | { |
358 | li.Activate(); | 334 | li.Activate(); |
359 | } | 335 | } |
@@ -361,10 +337,9 @@ namespace OpenSim.Region.Environment.Modules | |||
361 | 337 | ||
362 | public void Dectivate(int handle) | 338 | public void Dectivate(int handle) |
363 | { | 339 | { |
364 | |||
365 | ListenerInfo li; | 340 | ListenerInfo li; |
366 | 341 | ||
367 | if( m_listeners.TryGetValue(handle, out li) ) | 342 | if (m_listeners.TryGetValue(handle, out li)) |
368 | { | 343 | { |
369 | li.Deactivate(); | 344 | li.Deactivate(); |
370 | } | 345 | } |
@@ -372,40 +347,40 @@ namespace OpenSim.Region.Environment.Modules | |||
372 | 347 | ||
373 | // Theres probably a more clever and efficient way to | 348 | // Theres probably a more clever and efficient way to |
374 | // do this, maybe with regex. | 349 | // do this, maybe with regex. |
375 | public ListenerInfo IsListenerMatch(string sourceItemID, LLUUID listenerKey, int channel, string name, string msg) | 350 | public ListenerInfo IsListenerMatch(string sourceItemID, LLUUID listenerKey, int channel, string name, |
351 | string msg) | ||
376 | { | 352 | { |
377 | |||
378 | bool isMatch = true; | 353 | bool isMatch = true; |
379 | 354 | ||
380 | foreach (ListenerInfo li in m_listeners.Values) | 355 | foreach (ListenerInfo li in m_listeners.Values) |
381 | { | 356 | { |
382 | if (li.GetHostID().Equals(listenerKey)) | 357 | if (li.GetHostID().Equals(listenerKey)) |
383 | { | 358 | { |
384 | if ( li.IsActive() ) | 359 | if (li.IsActive()) |
385 | { | 360 | { |
386 | if ( channel == li.GetChannel() ) | 361 | if (channel == li.GetChannel()) |
387 | { | 362 | { |
388 | if ( (li.GetID().ToString().Length > 0) && | 363 | if ((li.GetID().ToString().Length > 0) && |
389 | (!li.GetID().Equals(LLUUID.Zero)) ) | 364 | (!li.GetID().Equals(LLUUID.Zero))) |
390 | { | 365 | { |
391 | if (!li.GetID().ToString().Equals(sourceItemID)) | 366 | if (!li.GetID().ToString().Equals(sourceItemID)) |
392 | { | 367 | { |
393 | isMatch = false; | 368 | isMatch = false; |
394 | } | 369 | } |
395 | } | 370 | } |
396 | if ( isMatch && (li.GetName().Length > 0) ) | 371 | if (isMatch && (li.GetName().Length > 0)) |
397 | { | 372 | { |
398 | if ( li.GetName().Equals(name) ) | 373 | if (li.GetName().Equals(name)) |
399 | { | 374 | { |
400 | isMatch = false; | 375 | isMatch = false; |
401 | } | 376 | } |
402 | } | 377 | } |
403 | if ( isMatch ) | 378 | if (isMatch) |
404 | { | 379 | { |
405 | return new ListenerInfo( | 380 | return new ListenerInfo( |
406 | li.GetLocalID(), li.GetHandle(), li.GetItemID(), li.GetHostID(), | 381 | li.GetLocalID(), li.GetHandle(), li.GetItemID(), li.GetHostID(), |
407 | li.GetChannel(), name, li.GetID(), msg, new LLUUID(sourceItemID) | 382 | li.GetChannel(), name, li.GetID(), msg, new LLUUID(sourceItemID) |
408 | ); | 383 | ); |
409 | } | 384 | } |
410 | } | 385 | } |
411 | } | 386 | } |
@@ -413,35 +388,36 @@ namespace OpenSim.Region.Environment.Modules | |||
413 | } | 388 | } |
414 | return null; | 389 | return null; |
415 | } | 390 | } |
416 | |||
417 | } | 391 | } |
418 | 392 | ||
419 | public class ListenerInfo | 393 | public class ListenerInfo |
420 | { | 394 | { |
421 | 395 | private LLUUID m_itemID; // ID of the host script engine | |
422 | private LLUUID m_itemID; // ID of the host script engine | 396 | private LLUUID m_hostID; // ID of the host/scene part |
423 | private LLUUID m_hostID; // ID of the host/scene part | 397 | private LLUUID m_sourceItemID; // ID of the scenePart or avatar source of the message |
424 | private LLUUID m_sourceItemID; // ID of the scenePart or avatar source of the message | 398 | private int m_channel; // Channel |
425 | private int m_channel; // Channel | 399 | private int m_handle; // Assigned handle of this listener |
426 | private int m_handle; // Assigned handle of this listener | 400 | private uint m_localID; // Local ID from script engine |
427 | private uint m_localID; // Local ID from script engine | 401 | private string m_name; // Object name to filter messages from |
428 | private string m_name; // Object name to filter messages from | 402 | private LLUUID m_id; // ID to filter messages from |
429 | private LLUUID m_id; // ID to filter messages from | 403 | private string m_message; // The message |
430 | private string m_message; // The message | 404 | private bool m_active; // Listener is active or not |
431 | private bool m_active; // Listener is active or not | 405 | |
432 | 406 | public ListenerInfo(uint localID, int handle, LLUUID ItemID, LLUUID hostID, int channel, string name, LLUUID id, | |
433 | public ListenerInfo(uint localID, int handle, LLUUID ItemID, LLUUID hostID, int channel, string name, LLUUID id, string message) | 407 | string message) |
434 | { | 408 | { |
435 | Initialise(localID, handle, ItemID, hostID, channel, name, id, message); | 409 | Initialise(localID, handle, ItemID, hostID, channel, name, id, message); |
436 | } | 410 | } |
437 | 411 | ||
438 | public ListenerInfo(uint localID, int handle, LLUUID ItemID, LLUUID hostID, int channel, string name, LLUUID id, string message, LLUUID sourceItemID) | 412 | public ListenerInfo(uint localID, int handle, LLUUID ItemID, LLUUID hostID, int channel, string name, LLUUID id, |
413 | string message, LLUUID sourceItemID) | ||
439 | { | 414 | { |
440 | Initialise(localID, handle, ItemID, hostID, channel, name, id, message); | 415 | Initialise(localID, handle, ItemID, hostID, channel, name, id, message); |
441 | m_sourceItemID = sourceItemID; | 416 | m_sourceItemID = sourceItemID; |
442 | } | 417 | } |
443 | 418 | ||
444 | private void Initialise(uint localID, int handle, LLUUID ItemID, LLUUID hostID, int channel, string name, LLUUID id, string message) | 419 | private void Initialise(uint localID, int handle, LLUUID ItemID, LLUUID hostID, int channel, string name, |
420 | LLUUID id, string message) | ||
445 | { | 421 | { |
446 | m_handle = handle; | 422 | m_handle = handle; |
447 | m_channel = channel; | 423 | m_channel = channel; |
@@ -453,55 +429,65 @@ namespace OpenSim.Region.Environment.Modules | |||
453 | m_active = true; | 429 | m_active = true; |
454 | m_localID = localID; | 430 | m_localID = localID; |
455 | } | 431 | } |
432 | |||
456 | public LLUUID GetItemID() | 433 | public LLUUID GetItemID() |
457 | { | 434 | { |
458 | return m_itemID; | 435 | return m_itemID; |
459 | } | 436 | } |
437 | |||
460 | public LLUUID GetHostID() | 438 | public LLUUID GetHostID() |
461 | { | 439 | { |
462 | return m_hostID; | 440 | return m_hostID; |
463 | } | 441 | } |
442 | |||
464 | public LLUUID GetSourceItemID() | 443 | public LLUUID GetSourceItemID() |
465 | { | 444 | { |
466 | return m_sourceItemID; | 445 | return m_sourceItemID; |
467 | } | 446 | } |
447 | |||
468 | public int GetChannel() | 448 | public int GetChannel() |
469 | { | 449 | { |
470 | return m_channel; | 450 | return m_channel; |
471 | } | 451 | } |
452 | |||
472 | public uint GetLocalID() | 453 | public uint GetLocalID() |
473 | { | 454 | { |
474 | return m_localID; | 455 | return m_localID; |
475 | } | 456 | } |
457 | |||
476 | public int GetHandle() | 458 | public int GetHandle() |
477 | { | 459 | { |
478 | return m_handle; | 460 | return m_handle; |
479 | } | 461 | } |
462 | |||
480 | public string GetMessage() | 463 | public string GetMessage() |
481 | { | 464 | { |
482 | return m_message; | 465 | return m_message; |
483 | } | 466 | } |
467 | |||
484 | public string GetName() | 468 | public string GetName() |
485 | { | 469 | { |
486 | return m_name; | 470 | return m_name; |
487 | } | 471 | } |
472 | |||
488 | public bool IsActive() | 473 | public bool IsActive() |
489 | { | 474 | { |
490 | return m_active; | 475 | return m_active; |
491 | } | 476 | } |
477 | |||
492 | public void Deactivate() | 478 | public void Deactivate() |
493 | { | 479 | { |
494 | m_active = false; | 480 | m_active = false; |
495 | } | 481 | } |
482 | |||
496 | public void Activate() | 483 | public void Activate() |
497 | { | 484 | { |
498 | m_active = true; | 485 | m_active = true; |
499 | } | 486 | } |
487 | |||
500 | public LLUUID GetID() | 488 | public LLUUID GetID() |
501 | { | 489 | { |
502 | return m_id; | 490 | return m_id; |
503 | } | 491 | } |
504 | |||
505 | } | 492 | } |
506 | 493 | } \ No newline at end of file | |
507 | } | ||
diff --git a/OpenSim/Region/Environment/Modules/XMLRPCModule.cs b/OpenSim/Region/Environment/Modules/XMLRPCModule.cs index dd84778..434c92f 100644 --- a/OpenSim/Region/Environment/Modules/XMLRPCModule.cs +++ b/OpenSim/Region/Environment/Modules/XMLRPCModule.cs | |||
@@ -26,20 +26,15 @@ | |||
26 | * | 26 | * |
27 | */ | 27 | */ |
28 | 28 | ||
29 | using System; | 29 | using System.Collections; |
30 | using System.IO; | 30 | using System.Collections.Generic; |
31 | using System.Net.Sockets; | ||
32 | using System.Threading; | 31 | using System.Threading; |
33 | using libsecondlife; | 32 | using libsecondlife; |
34 | using OpenSim.Framework.Interfaces; | 33 | using Nini.Config; |
35 | using OpenSim.Framework; | 34 | using Nwc.XmlRpc; |
35 | using OpenSim.Framework.Servers; | ||
36 | using OpenSim.Region.Environment.Interfaces; | 36 | using OpenSim.Region.Environment.Interfaces; |
37 | using OpenSim.Region.Environment.Scenes; | 37 | using OpenSim.Region.Environment.Scenes; |
38 | using OpenSim.Framework.Servers; | ||
39 | using Nwc.XmlRpc; | ||
40 | using System.Collections; | ||
41 | using System.Collections.Generic; | ||
42 | using Nini.Config; | ||
43 | 38 | ||
44 | /***************************************************** | 39 | /***************************************************** |
45 | * | 40 | * |
@@ -73,6 +68,7 @@ using Nini.Config; | |||
73 | * llCloseRemoteDataChannel | 68 | * llCloseRemoteDataChannel |
74 | * | 69 | * |
75 | * **************************************************/ | 70 | * **************************************************/ |
71 | |||
76 | namespace OpenSim.Region.Environment.Modules | 72 | namespace OpenSim.Region.Environment.Modules |
77 | { | 73 | { |
78 | public class XMLRPCModule : IRegionModule, IXMLRPC | 74 | public class XMLRPCModule : IRegionModule, IXMLRPC |
@@ -83,7 +79,7 @@ namespace OpenSim.Region.Environment.Modules | |||
83 | private string m_name = "XMLRPCModule"; | 79 | private string m_name = "XMLRPCModule"; |
84 | private int RemoteReplyScriptWait = 100; | 80 | private int RemoteReplyScriptWait = 100; |
85 | private int RemoteReplyScriptTimeout = 300; | 81 | private int RemoteReplyScriptTimeout = 300; |
86 | 82 | ||
87 | // <channel id, RPCChannelInfo> | 83 | // <channel id, RPCChannelInfo> |
88 | private Dictionary<LLUUID, RPCChannelInfo> m_openChannels; | 84 | private Dictionary<LLUUID, RPCChannelInfo> m_openChannels; |
89 | 85 | ||
@@ -106,7 +102,7 @@ namespace OpenSim.Region.Environment.Modules | |||
106 | // Start http server | 102 | // Start http server |
107 | // Attach xmlrpc handlers | 103 | // Attach xmlrpc handlers |
108 | BaseHttpServer httpServer = new BaseHttpServer(20800); | 104 | BaseHttpServer httpServer = new BaseHttpServer(20800); |
109 | httpServer.AddXmlRPCHandler("llRemoteData", this.XmlRpcRemoteData); | 105 | httpServer.AddXmlRPCHandler("llRemoteData", XmlRpcRemoteData); |
110 | httpServer.Start(); | 106 | httpServer.Start(); |
111 | } | 107 | } |
112 | 108 | ||
@@ -141,6 +137,7 @@ namespace OpenSim.Region.Environment.Modules | |||
141 | * current channel and assign a new one. | 137 | * current channel and assign a new one. |
142 | * | 138 | * |
143 | * ********************************************/ | 139 | * ********************************************/ |
140 | |||
144 | public LLUUID OpenXMLRPCChannel(uint localID, LLUUID itemID) | 141 | public LLUUID OpenXMLRPCChannel(uint localID, LLUUID itemID) |
145 | { | 142 | { |
146 | LLUUID channel = null; | 143 | LLUUID channel = null; |
@@ -156,7 +153,7 @@ namespace OpenSim.Region.Environment.Modules | |||
156 | } | 153 | } |
157 | } | 154 | } |
158 | 155 | ||
159 | if ( (channel == null) || (channel.Equals(LLUUID.Zero)) ) | 156 | if ((channel == null) || (channel.Equals(LLUUID.Zero))) |
160 | { | 157 | { |
161 | channel = LLUUID.Random(); | 158 | channel = LLUUID.Random(); |
162 | RPCChannelInfo rpcChanInfo = new RPCChannelInfo(localID, itemID, channel); | 159 | RPCChannelInfo rpcChanInfo = new RPCChannelInfo(localID, itemID, channel); |
@@ -164,7 +161,6 @@ namespace OpenSim.Region.Environment.Modules | |||
164 | { | 161 | { |
165 | m_openChannels.Add(channel, rpcChanInfo); | 162 | m_openChannels.Add(channel, rpcChanInfo); |
166 | } | 163 | } |
167 | |||
168 | } | 164 | } |
169 | 165 | ||
170 | return channel; | 166 | return channel; |
@@ -176,6 +172,7 @@ namespace OpenSim.Region.Environment.Modules | |||
176 | * Response to RPC message | 172 | * Response to RPC message |
177 | * | 173 | * |
178 | *********************************************/ | 174 | *********************************************/ |
175 | |||
179 | public void RemoteDataReply(string channel, string message_id, string sdata, int idata) | 176 | public void RemoteDataReply(string channel, string message_id, string sdata, int idata) |
180 | { | 177 | { |
181 | RPCRequestInfo rpcInfo; | 178 | RPCRequestInfo rpcInfo; |
@@ -191,7 +188,6 @@ namespace OpenSim.Region.Environment.Modules | |||
191 | m_pendingResponse.Remove(message_key); | 188 | m_pendingResponse.Remove(message_key); |
192 | } | 189 | } |
193 | } | 190 | } |
194 | |||
195 | } | 191 | } |
196 | 192 | ||
197 | /********************************************** | 193 | /********************************************** |
@@ -200,41 +196,44 @@ namespace OpenSim.Region.Environment.Modules | |||
200 | * Remove channel from dictionary | 196 | * Remove channel from dictionary |
201 | * | 197 | * |
202 | *********************************************/ | 198 | *********************************************/ |
199 | |||
203 | public void CloseXMLRPCChannel(LLUUID channelKey) | 200 | public void CloseXMLRPCChannel(LLUUID channelKey) |
204 | { | 201 | { |
205 | if(m_openChannels.ContainsKey(channelKey)) | 202 | if (m_openChannels.ContainsKey(channelKey)) |
206 | m_openChannels.Remove(channelKey); | 203 | m_openChannels.Remove(channelKey); |
207 | } | 204 | } |
208 | 205 | ||
209 | 206 | ||
210 | public XmlRpcResponse XmlRpcRemoteData(XmlRpcRequest request) | 207 | public XmlRpcResponse XmlRpcRemoteData(XmlRpcRequest request) |
211 | { | 208 | { |
212 | |||
213 | XmlRpcResponse response = new XmlRpcResponse(); | 209 | XmlRpcResponse response = new XmlRpcResponse(); |
214 | 210 | ||
215 | Hashtable requestData = (Hashtable)request.Params[0]; | 211 | Hashtable requestData = (Hashtable) request.Params[0]; |
216 | bool GoodXML = (requestData.Contains("Channel") && requestData.Contains("IntValue") && requestData.Contains("StringValue")); | 212 | bool GoodXML = (requestData.Contains("Channel") && requestData.Contains("IntValue") && |
213 | requestData.Contains("StringValue")); | ||
217 | 214 | ||
218 | if (GoodXML) | 215 | if (GoodXML) |
219 | { | 216 | { |
220 | LLUUID channel = new LLUUID((string)requestData["Channel"]); | 217 | LLUUID channel = new LLUUID((string) requestData["Channel"]); |
221 | RPCChannelInfo rpcChanInfo; | 218 | RPCChannelInfo rpcChanInfo; |
222 | if (m_openChannels.TryGetValue(channel, out rpcChanInfo)) | 219 | if (m_openChannels.TryGetValue(channel, out rpcChanInfo)) |
223 | { | 220 | { |
224 | string intVal = (string)requestData["IntValue"]; | 221 | string intVal = (string) requestData["IntValue"]; |
225 | string strVal = (string)requestData["StringValue"]; | 222 | string strVal = (string) requestData["StringValue"]; |
226 | 223 | ||
227 | RPCRequestInfo rpcInfo; | 224 | RPCRequestInfo rpcInfo; |
228 | 225 | ||
229 | lock (XMLRPCListLock) | 226 | lock (XMLRPCListLock) |
230 | { | 227 | { |
231 | rpcInfo = new RPCRequestInfo(rpcChanInfo.GetLocalID(), rpcChanInfo.GetItemID(), channel, strVal, intVal); | 228 | rpcInfo = |
229 | new RPCRequestInfo(rpcChanInfo.GetLocalID(), rpcChanInfo.GetItemID(), channel, strVal, | ||
230 | intVal); | ||
232 | rpcQueue.Enqueue(rpcInfo); | 231 | rpcQueue.Enqueue(rpcInfo); |
233 | } | 232 | } |
234 | 233 | ||
235 | int timeoutCtr = 0; | 234 | int timeoutCtr = 0; |
236 | 235 | ||
237 | while(!rpcInfo.IsProcessed() && (timeoutCtr < RemoteReplyScriptTimeout)) | 236 | while (!rpcInfo.IsProcessed() && (timeoutCtr < RemoteReplyScriptTimeout)) |
238 | { | 237 | { |
239 | Thread.Sleep(RemoteReplyScriptWait); | 238 | Thread.Sleep(RemoteReplyScriptWait); |
240 | timeoutCtr += RemoteReplyScriptWait; | 239 | timeoutCtr += RemoteReplyScriptWait; |
@@ -252,13 +251,11 @@ namespace OpenSim.Region.Environment.Modules | |||
252 | m_pendingResponse.Remove(rpcInfo.GetMessageID()); | 251 | m_pendingResponse.Remove(rpcInfo.GetMessageID()); |
253 | } | 252 | } |
254 | } | 253 | } |
255 | |||
256 | } | 254 | } |
257 | else | 255 | else |
258 | { | 256 | { |
259 | response.SetFault(-1, "Invalid channel"); | 257 | response.SetFault(-1, "Invalid channel"); |
260 | } | 258 | } |
261 | |||
262 | } | 259 | } |
263 | 260 | ||
264 | return response; | 261 | return response; |
@@ -278,7 +275,6 @@ namespace OpenSim.Region.Environment.Modules | |||
278 | return rpcInfo; | 275 | return rpcInfo; |
279 | } | 276 | } |
280 | } | 277 | } |
281 | |||
282 | } | 278 | } |
283 | 279 | ||
284 | /************************************************************** | 280 | /************************************************************** |
@@ -288,6 +284,7 @@ namespace OpenSim.Region.Environment.Modules | |||
288 | * Holds details about incoming requests until they are picked | 284 | * Holds details about incoming requests until they are picked |
289 | * from the queue by LSLLongCmdHandler | 285 | * from the queue by LSLLongCmdHandler |
290 | * ***********************************************************/ | 286 | * ***********************************************************/ |
287 | |||
291 | public class RPCRequestInfo | 288 | public class RPCRequestInfo |
292 | { | 289 | { |
293 | private string m_StrVal; | 290 | private string m_StrVal; |
@@ -315,6 +312,7 @@ namespace OpenSim.Region.Environment.Modules | |||
315 | { | 312 | { |
316 | return m_processed; | 313 | return m_processed; |
317 | } | 314 | } |
315 | |||
318 | public LLUUID GetChannelKey() | 316 | public LLUUID GetChannelKey() |
319 | { | 317 | { |
320 | return m_ChannelKey; | 318 | return m_ChannelKey; |
@@ -324,36 +322,41 @@ namespace OpenSim.Region.Environment.Modules | |||
324 | { | 322 | { |
325 | m_processed = processed; | 323 | m_processed = processed; |
326 | } | 324 | } |
325 | |||
327 | public void SetRetval(string resp) | 326 | public void SetRetval(string resp) |
328 | { | 327 | { |
329 | m_resp = resp; | 328 | m_resp = resp; |
330 | } | 329 | } |
330 | |||
331 | public string GetRetval() | 331 | public string GetRetval() |
332 | { | 332 | { |
333 | return m_resp; | 333 | return m_resp; |
334 | } | 334 | } |
335 | |||
335 | public uint GetLocalID() | 336 | public uint GetLocalID() |
336 | { | 337 | { |
337 | return m_localID; | 338 | return m_localID; |
338 | } | 339 | } |
340 | |||
339 | public LLUUID GetItemID() | 341 | public LLUUID GetItemID() |
340 | { | 342 | { |
341 | return m_ItemID; | 343 | return m_ItemID; |
342 | } | 344 | } |
345 | |||
343 | public string GetStrVal() | 346 | public string GetStrVal() |
344 | { | 347 | { |
345 | return m_StrVal; | 348 | return m_StrVal; |
346 | } | 349 | } |
350 | |||
347 | public int GetIntValue() | 351 | public int GetIntValue() |
348 | { | 352 | { |
349 | return int.Parse(m_IntVal); | 353 | return int.Parse(m_IntVal); |
350 | } | 354 | } |
355 | |||
351 | public LLUUID GetMessageID() | 356 | public LLUUID GetMessageID() |
352 | { | 357 | { |
353 | return m_MessageID; | 358 | return m_MessageID; |
354 | } | 359 | } |
355 | |||
356 | |||
357 | } | 360 | } |
358 | 361 | ||
359 | public class RPCChannelInfo | 362 | public class RPCChannelInfo |
@@ -383,7 +386,5 @@ namespace OpenSim.Region.Environment.Modules | |||
383 | { | 386 | { |
384 | return m_localID; | 387 | return m_localID; |
385 | } | 388 | } |
386 | |||
387 | } | 389 | } |
388 | 390 | } \ No newline at end of file | |
389 | } | ||
diff --git a/OpenSim/Region/Environment/Modules/XferModule.cs b/OpenSim/Region/Environment/Modules/XferModule.cs index e555475..807b46c 100644 --- a/OpenSim/Region/Environment/Modules/XferModule.cs +++ b/OpenSim/Region/Environment/Modules/XferModule.cs | |||
@@ -29,11 +29,10 @@ | |||
29 | using System; | 29 | using System; |
30 | using System.Collections.Generic; | 30 | using System.Collections.Generic; |
31 | using libsecondlife; | 31 | using libsecondlife; |
32 | using OpenSim.Framework.Interfaces; | 32 | using Nini.Config; |
33 | using OpenSim.Framework; | ||
33 | using OpenSim.Region.Environment.Interfaces; | 34 | using OpenSim.Region.Environment.Interfaces; |
34 | using OpenSim.Region.Environment.Scenes; | 35 | using OpenSim.Region.Environment.Scenes; |
35 | using OpenSim.Framework; | ||
36 | using Nini.Config; | ||
37 | 36 | ||
38 | namespace OpenSim.Region.Environment.Modules | 37 | namespace OpenSim.Region.Environment.Modules |
39 | { | 38 | { |
@@ -200,4 +199,4 @@ namespace OpenSim.Region.Environment.Modules | |||
200 | } | 199 | } |
201 | } | 200 | } |
202 | } | 201 | } |
203 | } | 202 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Environment/PermissionManager.cs b/OpenSim/Region/Environment/PermissionManager.cs index 63285dc..fd55833 100644 --- a/OpenSim/Region/Environment/PermissionManager.cs +++ b/OpenSim/Region/Environment/PermissionManager.cs | |||
@@ -29,7 +29,6 @@ | |||
29 | using libsecondlife; | 29 | using libsecondlife; |
30 | using OpenSim.Region.Environment.LandManagement; | 30 | using OpenSim.Region.Environment.LandManagement; |
31 | using OpenSim.Region.Environment.Scenes; | 31 | using OpenSim.Region.Environment.Scenes; |
32 | using OpenSim.Framework; | ||
33 | 32 | ||
34 | namespace OpenSim.Region.Environment | 33 | namespace OpenSim.Region.Environment |
35 | { | 34 | { |
@@ -337,4 +336,4 @@ namespace OpenSim.Region.Environment | |||
337 | 336 | ||
338 | #endregion | 337 | #endregion |
339 | } | 338 | } |
340 | } | 339 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Environment/Scenes/EntityBase.cs b/OpenSim/Region/Environment/Scenes/EntityBase.cs index 767a740..b8bae57 100644 --- a/OpenSim/Region/Environment/Scenes/EntityBase.cs +++ b/OpenSim/Region/Environment/Scenes/EntityBase.cs | |||
@@ -146,4 +146,4 @@ namespace OpenSim.Region.Environment.Scenes | |||
146 | 146 | ||
147 | public abstract void SetText(string text, Vector3 color, double alpha); | 147 | public abstract void SetText(string text, Vector3 color, double alpha); |
148 | } | 148 | } |
149 | } | 149 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Environment/Scenes/IScenePresenceBody.cs b/OpenSim/Region/Environment/Scenes/IScenePresenceBody.cs index 14a1c7e..0f3bca1 100644 --- a/OpenSim/Region/Environment/Scenes/IScenePresenceBody.cs +++ b/OpenSim/Region/Environment/Scenes/IScenePresenceBody.cs | |||
@@ -29,7 +29,6 @@ | |||
29 | using libsecondlife; | 29 | using libsecondlife; |
30 | using libsecondlife.Packets; | 30 | using libsecondlife.Packets; |
31 | using OpenSim.Framework; | 31 | using OpenSim.Framework; |
32 | using OpenSim.Framework.Interfaces; | ||
33 | 32 | ||
34 | namespace OpenSim.Region.Environment.Scenes | 33 | namespace OpenSim.Region.Environment.Scenes |
35 | { | 34 | { |
@@ -40,4 +39,4 @@ namespace OpenSim.Region.Environment.Scenes | |||
40 | void SendOurAppearance(IClientAPI OurClient); | 39 | void SendOurAppearance(IClientAPI OurClient); |
41 | void SendAppearanceToOtherAgent(ScenePresence avatarInfo); | 40 | void SendAppearanceToOtherAgent(ScenePresence avatarInfo); |
42 | } | 41 | } |
43 | } | 42 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs index 68591d4..a0c9a50 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.Inventory.cs | |||
@@ -29,9 +29,8 @@ | |||
29 | using Axiom.Math; | 29 | using Axiom.Math; |
30 | using libsecondlife; | 30 | using libsecondlife; |
31 | using libsecondlife.Packets; | 31 | using libsecondlife.Packets; |
32 | using OpenSim.Framework.Communications.Cache; | ||
33 | using OpenSim.Framework.Interfaces; | ||
34 | using OpenSim.Framework; | 32 | using OpenSim.Framework; |
33 | using OpenSim.Framework.Communications.Cache; | ||
35 | using OpenSim.Region.Physics.Manager; | 34 | using OpenSim.Region.Physics.Manager; |
36 | 35 | ||
37 | namespace OpenSim.Region.Environment.Scenes | 36 | namespace OpenSim.Region.Environment.Scenes |
@@ -45,7 +44,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
45 | { | 44 | { |
46 | ScenePresence avatar; | 45 | ScenePresence avatar; |
47 | 46 | ||
48 | if ( TryGetAvatar( avatarId, out avatar )) | 47 | if (TryGetAvatar(avatarId, out avatar)) |
49 | { | 48 | { |
50 | AddInventoryItem(avatar.ControllingClient, item); | 49 | AddInventoryItem(avatar.ControllingClient, item); |
51 | } | 50 | } |
@@ -392,7 +391,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
392 | remoteClient.SendInventoryItemUpdate(item); | 391 | remoteClient.SendInventoryItemUpdate(item); |
393 | } | 392 | } |
394 | 393 | ||
395 | DeleteSceneObjectGroup((SceneObjectGroup)selectedEnt); | 394 | DeleteSceneObjectGroup((SceneObjectGroup) selectedEnt); |
396 | } | 395 | } |
397 | } | 396 | } |
398 | } | 397 | } |
@@ -471,4 +470,4 @@ namespace OpenSim.Region.Environment.Scenes | |||
471 | } | 470 | } |
472 | } | 471 | } |
473 | } | 472 | } |
474 | } | 473 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs b/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs index 3a35e21..69bd310 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs | |||
@@ -28,9 +28,8 @@ | |||
28 | using System.Collections.Generic; | 28 | using System.Collections.Generic; |
29 | using libsecondlife; | 29 | using libsecondlife; |
30 | using libsecondlife.Packets; | 30 | using libsecondlife.Packets; |
31 | using OpenSim.Framework.Console; | ||
32 | using OpenSim.Framework.Interfaces; | ||
33 | using OpenSim.Framework; | 31 | using OpenSim.Framework; |
32 | using OpenSim.Framework.Console; | ||
34 | 33 | ||
35 | namespace OpenSim.Region.Environment.Scenes | 34 | namespace OpenSim.Region.Environment.Scenes |
36 | { | 35 | { |
@@ -73,12 +72,12 @@ namespace OpenSim.Region.Environment.Scenes | |||
73 | { | 72 | { |
74 | ChatFromViewerArgs args = new ChatFromViewerArgs(); | 73 | ChatFromViewerArgs args = new ChatFromViewerArgs(); |
75 | 74 | ||
76 | args.Message = OpenSim.Framework.Util.FieldToString(message); | 75 | args.Message = Util.FieldToString(message); |
77 | args.Channel = channel; | 76 | args.Channel = channel; |
78 | args.Type = (ChatTypeEnum)type; | 77 | args.Type = (ChatTypeEnum) type; |
79 | args.Position = fromPos; | 78 | args.Position = fromPos; |
80 | 79 | ||
81 | ScenePresence user = this.GetScenePresence(fromAgentID); | 80 | ScenePresence user = GetScenePresence(fromAgentID); |
82 | if (user != null) | 81 | if (user != null) |
83 | args.Sender = user.ControllingClient; | 82 | args.Sender = user.ControllingClient; |
84 | else | 83 | else |
@@ -488,10 +487,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
488 | 487 | ||
489 | public void StartAnimation(LLUUID animID, int seq, LLUUID agentId) | 488 | public void StartAnimation(LLUUID animID, int seq, LLUUID agentId) |
490 | { | 489 | { |
491 | Broadcast(delegate(IClientAPI client) | 490 | Broadcast(delegate(IClientAPI client) { client.SendAnimation(animID, seq, agentId); }); |
492 | { | ||
493 | client.SendAnimation(animID, seq, agentId); | ||
494 | }); | ||
495 | } | 491 | } |
496 | 492 | ||
497 | public virtual void ProcessObjectGrab(uint localID, LLVector3 offsetPos, IClientAPI remoteClient) | 493 | public virtual void ProcessObjectGrab(uint localID, LLVector3 offsetPos, IClientAPI remoteClient) |
@@ -503,14 +499,14 @@ namespace OpenSim.Region.Environment.Scenes | |||
503 | if (ent is SceneObjectGroup) | 499 | if (ent is SceneObjectGroup) |
504 | { | 500 | { |
505 | SceneObjectGroup obj = ent as SceneObjectGroup; | 501 | SceneObjectGroup obj = ent as SceneObjectGroup; |
506 | 502 | ||
507 | if( obj.HasChildPrim( localID ) ) | 503 | if (obj.HasChildPrim(localID)) |
508 | { | 504 | { |
509 | obj.ObjectGrabHandler(localID, offsetPos, remoteClient); | 505 | obj.ObjectGrabHandler(localID, offsetPos, remoteClient); |
510 | return; | 506 | return; |
511 | } | 507 | } |
512 | } | 508 | } |
513 | } | 509 | } |
514 | } | 510 | } |
515 | } | 511 | } |
516 | } | 512 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index b54c25b..db4d230 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs | |||
@@ -26,9 +26,9 @@ | |||
26 | * | 26 | * |
27 | */ | 27 | */ |
28 | using System; | 28 | using System; |
29 | using System.Net; | ||
30 | using System.Collections.Generic; | 29 | using System.Collections.Generic; |
31 | using System.IO; | 30 | using System.IO; |
31 | using System.Net; | ||
32 | using System.Threading; | 32 | using System.Threading; |
33 | using System.Timers; | 33 | using System.Timers; |
34 | using System.Xml; | 34 | using System.Xml; |
@@ -38,17 +38,16 @@ using OpenSim.Framework; | |||
38 | using OpenSim.Framework.Communications; | 38 | using OpenSim.Framework.Communications; |
39 | using OpenSim.Framework.Communications.Cache; | 39 | using OpenSim.Framework.Communications.Cache; |
40 | using OpenSim.Framework.Console; | 40 | using OpenSim.Framework.Console; |
41 | using OpenSim.Framework.Interfaces; | ||
42 | using OpenSim.Framework.Servers; | 41 | using OpenSim.Framework.Servers; |
43 | using OpenSim.Region.Capabilities; | 42 | using OpenSim.Region.Capabilities; |
44 | using OpenSim.Region.Environment.Interfaces; | 43 | using OpenSim.Region.Environment.Interfaces; |
45 | using OpenSim.Region.Environment.LandManagement; | 44 | using OpenSim.Region.Environment.LandManagement; |
45 | using OpenSim.Region.Environment.Modules; | ||
46 | using OpenSim.Region.Environment.Scenes.Scripting; | 46 | using OpenSim.Region.Environment.Scenes.Scripting; |
47 | using OpenSim.Region.Environment.Types; | 47 | using OpenSim.Region.Environment.Types; |
48 | using OpenSim.Region.Physics.Manager; | 48 | using OpenSim.Region.Physics.Manager; |
49 | using OpenSim.Region.Terrain; | 49 | using OpenSim.Region.Terrain; |
50 | using Timer = System.Timers.Timer; | 50 | using Timer=System.Timers.Timer; |
51 | using OpenSim.Region.Environment.Modules; | ||
52 | 51 | ||
53 | namespace OpenSim.Region.Environment.Scenes | 52 | namespace OpenSim.Region.Environment.Scenes |
54 | { | 53 | { |
@@ -130,6 +129,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
130 | private readonly EstateManager m_estateManager; | 129 | private readonly EstateManager m_estateManager; |
131 | 130 | ||
132 | private PhysicsScene phyScene; | 131 | private PhysicsScene phyScene; |
132 | |||
133 | public PhysicsScene PhysScene | 133 | public PhysicsScene PhysScene |
134 | { | 134 | { |
135 | set { phyScene = value; } | 135 | set { phyScene = value; } |
@@ -199,7 +199,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
199 | m_sceneObjects = new Dictionary<LLUUID, SceneObjectGroup>(); | 199 | m_sceneObjects = new Dictionary<LLUUID, SceneObjectGroup>(); |
200 | 200 | ||
201 | MainLog.Instance.Verbose("Creating LandMap"); | 201 | MainLog.Instance.Verbose("Creating LandMap"); |
202 | Terrain = new TerrainEngine((int)RegionInfo.RegionLocX, (int)RegionInfo.RegionLocY); | 202 | Terrain = new TerrainEngine((int) RegionInfo.RegionLocX, (int) RegionInfo.RegionLocY); |
203 | 203 | ||
204 | ScenePresence.LoadAnims(); | 204 | ScenePresence.LoadAnims(); |
205 | 205 | ||
@@ -233,7 +233,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
233 | public void StartTimer() | 233 | public void StartTimer() |
234 | { | 234 | { |
235 | m_heartbeatTimer.Enabled = true; | 235 | m_heartbeatTimer.Enabled = true; |
236 | m_heartbeatTimer.Interval = (int)(m_timespan * 1000); | 236 | m_heartbeatTimer.Interval = (int) (m_timespan*1000); |
237 | m_heartbeatTimer.Elapsed += new ElapsedEventHandler(Heartbeat); | 237 | m_heartbeatTimer.Elapsed += new ElapsedEventHandler(Heartbeat); |
238 | } | 238 | } |
239 | 239 | ||
@@ -267,33 +267,33 @@ namespace OpenSim.Region.Environment.Scenes | |||
267 | if (m_frame == Int32.MaxValue) | 267 | if (m_frame == Int32.MaxValue) |
268 | m_frame = 0; | 268 | m_frame = 0; |
269 | 269 | ||
270 | if (m_frame % m_update_physics == 0) | 270 | if (m_frame%m_update_physics == 0) |
271 | UpdatePreparePhysics(); | 271 | UpdatePreparePhysics(); |
272 | 272 | ||
273 | if (m_frame % m_update_entitymovement == 0) | 273 | if (m_frame%m_update_entitymovement == 0) |
274 | UpdateEntityMovement(); | 274 | UpdateEntityMovement(); |
275 | 275 | ||
276 | if (m_frame % m_update_physics == 0) | 276 | if (m_frame%m_update_physics == 0) |
277 | UpdatePhysics( | 277 | UpdatePhysics( |
278 | Math.Max(SinceLastFrame.TotalSeconds, m_timespan) | 278 | Math.Max(SinceLastFrame.TotalSeconds, m_timespan) |
279 | ); | 279 | ); |
280 | 280 | ||
281 | if (m_frame % m_update_entities == 0) | 281 | if (m_frame%m_update_entities == 0) |
282 | UpdateEntities(); | 282 | UpdateEntities(); |
283 | 283 | ||
284 | if (m_frame % m_update_events == 0) | 284 | if (m_frame%m_update_events == 0) |
285 | UpdateEvents(); | 285 | UpdateEvents(); |
286 | 286 | ||
287 | if (m_frame % m_update_backup == 0) | 287 | if (m_frame%m_update_backup == 0) |
288 | UpdateStorageBackup(); | 288 | UpdateStorageBackup(); |
289 | 289 | ||
290 | if (m_frame % m_update_terrain == 0) | 290 | if (m_frame%m_update_terrain == 0) |
291 | UpdateTerrain(); | 291 | UpdateTerrain(); |
292 | 292 | ||
293 | if (m_frame % m_update_land == 0) | 293 | if (m_frame%m_update_land == 0) |
294 | UpdateLand(); | 294 | UpdateLand(); |
295 | 295 | ||
296 | if (m_frame % m_update_avatars == 0) | 296 | if (m_frame%m_update_avatars == 0) |
297 | UpdateInWorldTime(); | 297 | UpdateInWorldTime(); |
298 | } | 298 | } |
299 | catch (NotImplementedException) | 299 | catch (NotImplementedException) |
@@ -308,7 +308,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
308 | { | 308 | { |
309 | updateLock.ReleaseMutex(); | 309 | updateLock.ReleaseMutex(); |
310 | 310 | ||
311 | m_timedilation = m_timespan / (float)SinceLastFrame.TotalSeconds; | 311 | m_timedilation = m_timespan/(float) SinceLastFrame.TotalSeconds; |
312 | m_lastupdate = DateTime.Now; | 312 | m_lastupdate = DateTime.Now; |
313 | } | 313 | } |
314 | } | 314 | } |
@@ -369,24 +369,23 @@ namespace OpenSim.Region.Environment.Scenes | |||
369 | phyScene.SetTerrain(Terrain.GetHeights1D()); | 369 | phyScene.SetTerrain(Terrain.GetHeights1D()); |
370 | } | 370 | } |
371 | 371 | ||
372 | storageManager.DataStore.StoreTerrain(Terrain.GetHeights2DD(),RegionInfo.RegionID); | 372 | storageManager.DataStore.StoreTerrain(Terrain.GetHeights2DD(), RegionInfo.RegionID); |
373 | 373 | ||
374 | float[] terData = Terrain.GetHeights1D(); | 374 | float[] terData = Terrain.GetHeights1D(); |
375 | 375 | ||
376 | Broadcast(delegate(IClientAPI client) | 376 | Broadcast(delegate(IClientAPI client) |
377 | { | 377 | { |
378 | for (int x = 0; x < 16; x++) | 378 | for (int x = 0; x < 16; x++) |
379 | { | 379 | { |
380 | for (int y = 0; y < 16; y++) | 380 | for (int y = 0; y < 16; y++) |
381 | { | 381 | { |
382 | if (Terrain.Tainted(x * 16, y * 16)) | 382 | if (Terrain.Tainted(x*16, y*16)) |
383 | { | 383 | { |
384 | client.SendLayerData(x, y, terData); | 384 | client.SendLayerData(x, y, terData); |
385 | } | 385 | } |
386 | } | 386 | } |
387 | } | 387 | } |
388 | }); | 388 | }); |
389 | |||
390 | 389 | ||
391 | 390 | ||
392 | Terrain.ResetTaint(); | 391 | Terrain.ResetTaint(); |
@@ -418,7 +417,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
418 | { | 417 | { |
419 | lock (m_syncRoot) | 418 | lock (m_syncRoot) |
420 | { | 419 | { |
421 | phyScene.Simulate((float)elapsed); | 420 | phyScene.Simulate((float) elapsed); |
422 | } | 421 | } |
423 | } | 422 | } |
424 | 423 | ||
@@ -438,11 +437,9 @@ namespace OpenSim.Region.Environment.Scenes | |||
438 | /// <returns></returns> | 437 | /// <returns></returns> |
439 | internal void Broadcast(Action<IClientAPI> whatToDo) | 438 | internal void Broadcast(Action<IClientAPI> whatToDo) |
440 | { | 439 | { |
441 | ForEachScenePresence(delegate(ScenePresence presence) | 440 | ForEachScenePresence(delegate(ScenePresence presence) { whatToDo(presence.ControllingClient); }); |
442 | { | ||
443 | whatToDo(presence.ControllingClient); | ||
444 | }); | ||
445 | } | 441 | } |
442 | |||
446 | /// <summary> | 443 | /// <summary> |
447 | /// | 444 | /// |
448 | /// </summary> | 445 | /// </summary> |
@@ -473,7 +470,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
473 | MainLog.Instance.Verbose("TERRAIN", "No default terrain. Generating a new terrain."); | 470 | MainLog.Instance.Verbose("TERRAIN", "No default terrain. Generating a new terrain."); |
474 | Terrain.HillsGenerator(); | 471 | Terrain.HillsGenerator(); |
475 | 472 | ||
476 | storageManager.DataStore.StoreTerrain(Terrain.GetHeights2DD(),RegionInfo.RegionID); | 473 | storageManager.DataStore.StoreTerrain(Terrain.GetHeights2DD(), RegionInfo.RegionID); |
477 | } | 474 | } |
478 | else | 475 | else |
479 | { | 476 | { |
@@ -484,7 +481,8 @@ namespace OpenSim.Region.Environment.Scenes | |||
484 | } | 481 | } |
485 | catch | 482 | catch |
486 | { | 483 | { |
487 | MainLog.Instance.Verbose("TERRAIN", "No terrain found in database or default. Generating a new terrain."); | 484 | MainLog.Instance.Verbose("TERRAIN", |
485 | "No terrain found in database or default. Generating a new terrain."); | ||
488 | Terrain.HillsGenerator(); | 486 | Terrain.HillsGenerator(); |
489 | } | 487 | } |
490 | storageManager.DataStore.StoreTerrain(Terrain.GetHeights2DD(), RegionInfo.RegionID); | 488 | storageManager.DataStore.StoreTerrain(Terrain.GetHeights2DD(), RegionInfo.RegionID); |
@@ -535,7 +533,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
535 | { | 533 | { |
536 | AddEntityFromStorage(prim); | 534 | AddEntityFromStorage(prim); |
537 | SceneObjectPart rootPart = prim.GetChildPart(prim.UUID); | 535 | SceneObjectPart rootPart = prim.GetChildPart(prim.UUID); |
538 | if ((rootPart.ObjectFlags & (uint)LLObject.ObjectFlags.Phantom) == 0) | 536 | if ((rootPart.ObjectFlags & (uint) LLObject.ObjectFlags.Phantom) == 0) |
539 | rootPart.PhysActor = phyScene.AddPrimShape( | 537 | rootPart.PhysActor = phyScene.AddPrimShape( |
540 | rootPart.Name, | 538 | rootPart.Name, |
541 | rootPart.Shape, | 539 | rootPart.Shape, |
@@ -581,17 +579,17 @@ namespace OpenSim.Region.Environment.Scenes | |||
581 | // if grass or tree, make phantom | 579 | // if grass or tree, make phantom |
582 | if ((rootPart.Shape.PCode == 95) || (rootPart.Shape.PCode == 255)) | 580 | if ((rootPart.Shape.PCode == 95) || (rootPart.Shape.PCode == 255)) |
583 | { | 581 | { |
584 | rootPart.ObjectFlags += (uint)LLObject.ObjectFlags.Phantom; | 582 | rootPart.ObjectFlags += (uint) LLObject.ObjectFlags.Phantom; |
585 | } | 583 | } |
586 | // if not phantom, add to physics | 584 | // if not phantom, add to physics |
587 | if ((rootPart.ObjectFlags & (uint)LLObject.ObjectFlags.Phantom) == 0) | 585 | if ((rootPart.ObjectFlags & (uint) LLObject.ObjectFlags.Phantom) == 0) |
588 | rootPart.PhysActor = | 586 | rootPart.PhysActor = |
589 | phyScene.AddPrimShape( | 587 | phyScene.AddPrimShape( |
590 | rootPart.Name, | 588 | rootPart.Name, |
591 | rootPart.Shape, | 589 | rootPart.Shape, |
592 | new PhysicsVector(pos.X, pos.Y, pos.Z), | 590 | new PhysicsVector(pos.X, pos.Y, pos.Z), |
593 | new PhysicsVector(shape.Scale.X, shape.Scale.Y, shape.Scale.Z), | 591 | new PhysicsVector(shape.Scale.X, shape.Scale.Y, shape.Scale.Z), |
594 | new Quaternion()); | 592 | new Quaternion()); |
595 | } | 593 | } |
596 | } | 594 | } |
597 | 595 | ||
@@ -601,9 +599,9 @@ namespace OpenSim.Region.Environment.Scenes | |||
601 | { | 599 | { |
602 | if (obj is SceneObjectGroup) | 600 | if (obj is SceneObjectGroup) |
603 | { | 601 | { |
604 | if (((SceneObjectGroup)obj).LocalId == localID) | 602 | if (((SceneObjectGroup) obj).LocalId == localID) |
605 | { | 603 | { |
606 | RemoveEntity((SceneObjectGroup)obj); | 604 | RemoveEntity((SceneObjectGroup) obj); |
607 | return; | 605 | return; |
608 | } | 606 | } |
609 | } | 607 | } |
@@ -657,7 +655,6 @@ namespace OpenSim.Region.Environment.Scenes | |||
657 | int primCount = 0; | 655 | int primCount = 0; |
658 | if ((fileName.StartsWith("http:")) | (File.Exists(fileName))) | 656 | if ((fileName.StartsWith("http:")) | (File.Exists(fileName))) |
659 | { | 657 | { |
660 | |||
661 | XmlTextReader reader = new XmlTextReader(fileName); | 658 | XmlTextReader reader = new XmlTextReader(fileName); |
662 | reader.WhitespaceHandling = WhitespaceHandling.None; | 659 | reader.WhitespaceHandling = WhitespaceHandling.None; |
663 | doc.Load(reader); | 660 | doc.Load(reader); |
@@ -672,7 +669,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
672 | AddEntity(obj); | 669 | AddEntity(obj); |
673 | 670 | ||
674 | SceneObjectPart rootPart = obj.GetChildPart(obj.UUID); | 671 | SceneObjectPart rootPart = obj.GetChildPart(obj.UUID); |
675 | if ((rootPart.ObjectFlags & (uint)LLObject.ObjectFlags.Phantom) == 0) | 672 | if ((rootPart.ObjectFlags & (uint) LLObject.ObjectFlags.Phantom) == 0) |
676 | rootPart.PhysActor = phyScene.AddPrimShape( | 673 | rootPart.PhysActor = phyScene.AddPrimShape( |
677 | rootPart.Name, | 674 | rootPart.Name, |
678 | rootPart.Shape, | 675 | rootPart.Shape, |
@@ -700,7 +697,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
700 | { | 697 | { |
701 | if (ent is SceneObjectGroup) | 698 | if (ent is SceneObjectGroup) |
702 | { | 699 | { |
703 | stream.WriteLine(((SceneObjectGroup)ent).ToXmlString()); | 700 | stream.WriteLine(((SceneObjectGroup) ent).ToXmlString()); |
704 | primCount++; | 701 | primCount++; |
705 | } | 702 | } |
706 | } | 703 | } |
@@ -737,7 +734,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
737 | AddEntityFromStorage(obj); | 734 | AddEntityFromStorage(obj); |
738 | 735 | ||
739 | SceneObjectPart rootPart = obj.GetChildPart(obj.UUID); | 736 | SceneObjectPart rootPart = obj.GetChildPart(obj.UUID); |
740 | if ((rootPart.ObjectFlags & (uint)LLObject.ObjectFlags.Phantom) == 0) | 737 | if ((rootPart.ObjectFlags & (uint) LLObject.ObjectFlags.Phantom) == 0) |
741 | rootPart.PhysActor = phyScene.AddPrimShape( | 738 | rootPart.PhysActor = phyScene.AddPrimShape( |
742 | rootPart.Name, | 739 | rootPart.Name, |
743 | rootPart.Shape, | 740 | rootPart.Shape, |
@@ -758,7 +755,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
758 | { | 755 | { |
759 | if (ent is SceneObjectGroup) | 756 | if (ent is SceneObjectGroup) |
760 | { | 757 | { |
761 | stream.WriteLine(((SceneObjectGroup)ent).ToXmlString2()); | 758 | stream.WriteLine(((SceneObjectGroup) ent).ToXmlString2()); |
762 | primCount++; | 759 | primCount++; |
763 | } | 760 | } |
764 | } | 761 | } |
@@ -857,7 +854,8 @@ namespace OpenSim.Region.Environment.Scenes | |||
857 | byte[] visualParams; | 854 | byte[] visualParams; |
858 | AvatarWearable[] wearables; | 855 | AvatarWearable[] wearables; |
859 | 856 | ||
860 | if( m_AvatarFactory == null || !m_AvatarFactory.TryGetIntialAvatarAppearance( client.AgentId, out wearables, out visualParams)) | 857 | if (m_AvatarFactory == null || |
858 | !m_AvatarFactory.TryGetIntialAvatarAppearance(client.AgentId, out wearables, out visualParams)) | ||
861 | { | 859 | { |
862 | AvatarFactoryModule.GetDefaultAvatarAppearance(out wearables, out visualParams); | 860 | AvatarFactoryModule.GetDefaultAvatarAppearance(out wearables, out visualParams); |
863 | } | 861 | } |
@@ -916,16 +914,10 @@ namespace OpenSim.Region.Environment.Scenes | |||
916 | 914 | ||
917 | ScenePresence avatar = GetScenePresence(agentID); | 915 | ScenePresence avatar = GetScenePresence(agentID); |
918 | 916 | ||
919 | Broadcast(delegate(IClientAPI client) | 917 | Broadcast(delegate(IClientAPI client) { client.SendKillObject(avatar.RegionHandle, avatar.LocalId); }); |
920 | { | ||
921 | client.SendKillObject(avatar.RegionHandle, avatar.LocalId); | ||
922 | }); | ||
923 | 918 | ||
924 | ForEachScenePresence( | 919 | ForEachScenePresence( |
925 | delegate(ScenePresence presence) | 920 | delegate(ScenePresence presence) { presence.CoarseLocationChange(); }); |
926 | { | ||
927 | presence.CoarseLocationChange(); | ||
928 | }); | ||
929 | 921 | ||
930 | lock (m_scenePresences) | 922 | lock (m_scenePresences) |
931 | { | 923 | { |
@@ -965,10 +957,8 @@ namespace OpenSim.Region.Environment.Scenes | |||
965 | 957 | ||
966 | public List<ScenePresence> GetAvatars() | 958 | public List<ScenePresence> GetAvatars() |
967 | { | 959 | { |
968 | List<ScenePresence> result = GetScenePresences(delegate(ScenePresence scenePresence) | 960 | List<ScenePresence> result = |
969 | { | 961 | GetScenePresences(delegate(ScenePresence scenePresence) { return !scenePresence.IsChildAgent; }); |
970 | return !scenePresence.IsChildAgent; | ||
971 | }); | ||
972 | 962 | ||
973 | return result; | 963 | return result; |
974 | } | 964 | } |
@@ -1046,18 +1036,12 @@ namespace OpenSim.Region.Environment.Scenes | |||
1046 | 1036 | ||
1047 | public void SendKillObject(uint localID) | 1037 | public void SendKillObject(uint localID) |
1048 | { | 1038 | { |
1049 | Broadcast(delegate(IClientAPI client) | 1039 | Broadcast(delegate(IClientAPI client) { client.SendKillObject(m_regionHandle, localID); }); |
1050 | { | ||
1051 | client.SendKillObject(m_regionHandle, localID); | ||
1052 | }); | ||
1053 | } | 1040 | } |
1054 | 1041 | ||
1055 | public void NotifyMyCoarseLocationChange() | 1042 | public void NotifyMyCoarseLocationChange() |
1056 | { | 1043 | { |
1057 | ForEachScenePresence(delegate(ScenePresence presence) | 1044 | ForEachScenePresence(delegate(ScenePresence presence) { presence.CoarseLocationChange(); }); |
1058 | { | ||
1059 | presence.CoarseLocationChange(); | ||
1060 | }); | ||
1061 | } | 1045 | } |
1062 | 1046 | ||
1063 | public void SendAllSceneObjectsToClient(ScenePresence presence) | 1047 | public void SendAllSceneObjectsToClient(ScenePresence presence) |
@@ -1067,7 +1051,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
1067 | if (ent is SceneObjectGroup) | 1051 | if (ent is SceneObjectGroup) |
1068 | { | 1052 | { |
1069 | // ((SceneObjectGroup)ent).SendFullUpdateToClient(client); | 1053 | // ((SceneObjectGroup)ent).SendFullUpdateToClient(client); |
1070 | ((SceneObjectGroup)ent).ScheduleFullUpdateToAvatar(presence); | 1054 | ((SceneObjectGroup) ent).ScheduleFullUpdateToAvatar(presence); |
1071 | } | 1055 | } |
1072 | } | 1056 | } |
1073 | } | 1057 | } |
@@ -1137,11 +1121,12 @@ namespace OpenSim.Region.Environment.Scenes | |||
1137 | } | 1121 | } |
1138 | } | 1122 | } |
1139 | 1123 | ||
1140 | delegate void InformClientOfNeighbourDelegate(IClientAPI remoteClient, AgentCircuitData a, ulong regionHandle, IPEndPoint endPoint); | 1124 | private delegate void InformClientOfNeighbourDelegate( |
1125 | IClientAPI remoteClient, AgentCircuitData a, ulong regionHandle, IPEndPoint endPoint); | ||
1141 | 1126 | ||
1142 | private void InformClientOfNeighbourCompleted(IAsyncResult iar) | 1127 | private void InformClientOfNeighbourCompleted(IAsyncResult iar) |
1143 | { | 1128 | { |
1144 | InformClientOfNeighbourDelegate icon = (InformClientOfNeighbourDelegate)iar.AsyncState; | 1129 | InformClientOfNeighbourDelegate icon = (InformClientOfNeighbourDelegate) iar.AsyncState; |
1145 | 1130 | ||
1146 | 1131 | ||
1147 | icon.EndInvoke(iar); | 1132 | icon.EndInvoke(iar); |
@@ -1157,7 +1142,8 @@ namespace OpenSim.Region.Environment.Scenes | |||
1157 | /// <param name="a"></param> | 1142 | /// <param name="a"></param> |
1158 | /// <param name="regionHandle"></param> | 1143 | /// <param name="regionHandle"></param> |
1159 | /// <param name="endPoint"></param> | 1144 | /// <param name="endPoint"></param> |
1160 | private void InformClientOfNeighbourAsync(IClientAPI remoteClient, AgentCircuitData a, ulong regionHandle, IPEndPoint endPoint) | 1145 | private void InformClientOfNeighbourAsync(IClientAPI remoteClient, AgentCircuitData a, ulong regionHandle, |
1146 | IPEndPoint endPoint) | ||
1161 | { | 1147 | { |
1162 | MainLog.Instance.Notice("INTERGRID", "Starting to inform client about neighbours"); | 1148 | MainLog.Instance.Notice("INTERGRID", "Starting to inform client about neighbours"); |
1163 | bool regionAccepted = commsManager.InterRegion.InformRegionOfChildAgent(regionHandle, a); | 1149 | bool regionAccepted = commsManager.InterRegion.InformRegionOfChildAgent(regionHandle, a); |
@@ -1172,7 +1158,8 @@ namespace OpenSim.Region.Environment.Scenes | |||
1172 | /// </summary> | 1158 | /// </summary> |
1173 | public void InformClientOfNeighbours(IClientAPI remoteClient) | 1159 | public void InformClientOfNeighbours(IClientAPI remoteClient) |
1174 | { | 1160 | { |
1175 | List<SimpleRegionInfo> neighbours = commsManager.GridService.RequestNeighbours(m_regInfo.RegionLocX, m_regInfo.RegionLocY); | 1161 | List<SimpleRegionInfo> neighbours = |
1162 | commsManager.GridService.RequestNeighbours(m_regInfo.RegionLocX, m_regInfo.RegionLocY); | ||
1176 | if (neighbours != null) | 1163 | if (neighbours != null) |
1177 | { | 1164 | { |
1178 | for (int i = 0; i < neighbours.Count; i++) | 1165 | for (int i = 0; i < neighbours.Count; i++) |
@@ -1185,9 +1172,8 @@ namespace OpenSim.Region.Environment.Scenes | |||
1185 | 1172 | ||
1186 | InformClientOfNeighbourDelegate d = InformClientOfNeighbourAsync; | 1173 | InformClientOfNeighbourDelegate d = InformClientOfNeighbourAsync; |
1187 | d.BeginInvoke(remoteClient, agent, neighbours[i].RegionHandle, neighbours[i].ExternalEndPoint, | 1174 | d.BeginInvoke(remoteClient, agent, neighbours[i].RegionHandle, neighbours[i].ExternalEndPoint, |
1188 | InformClientOfNeighbourCompleted, | 1175 | InformClientOfNeighbourCompleted, |
1189 | d); | 1176 | d); |
1190 | |||
1191 | } | 1177 | } |
1192 | } | 1178 | } |
1193 | } | 1179 | } |
@@ -1289,17 +1275,17 @@ namespace OpenSim.Region.Environment.Scenes | |||
1289 | 1275 | ||
1290 | public void RegisterModuleInterface<M>(M mod) | 1276 | public void RegisterModuleInterface<M>(M mod) |
1291 | { | 1277 | { |
1292 | if (!ModuleInterfaces.ContainsKey(typeof(M))) | 1278 | if (!ModuleInterfaces.ContainsKey(typeof (M))) |
1293 | { | 1279 | { |
1294 | ModuleInterfaces.Add(typeof(M), mod); | 1280 | ModuleInterfaces.Add(typeof (M), mod); |
1295 | } | 1281 | } |
1296 | } | 1282 | } |
1297 | 1283 | ||
1298 | public T RequestModuleInterface<T>() | 1284 | public T RequestModuleInterface<T>() |
1299 | { | 1285 | { |
1300 | if (ModuleInterfaces.ContainsKey(typeof(T))) | 1286 | if (ModuleInterfaces.ContainsKey(typeof (T))) |
1301 | { | 1287 | { |
1302 | return (T)ModuleInterfaces[typeof(T)]; | 1288 | return (T) ModuleInterfaces[typeof (T)]; |
1303 | } | 1289 | } |
1304 | else | 1290 | else |
1305 | { | 1291 | { |
@@ -1317,7 +1303,8 @@ namespace OpenSim.Region.Environment.Scenes | |||
1317 | { | 1303 | { |
1318 | if (m_scenePresences.ContainsKey(avatarID)) | 1304 | if (m_scenePresences.ContainsKey(avatarID)) |
1319 | { | 1305 | { |
1320 | m_scenePresences[avatarID].ControllingClient.SendLoadURL(objectname, objectID, ownerID, groupOwned, message, url); | 1306 | m_scenePresences[avatarID].ControllingClient.SendLoadURL(objectname, objectID, ownerID, groupOwned, |
1307 | message, url); | ||
1321 | } | 1308 | } |
1322 | } | 1309 | } |
1323 | 1310 | ||
@@ -1388,7 +1375,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
1388 | { | 1375 | { |
1389 | if (ent is SceneObjectGroup) | 1376 | if (ent is SceneObjectGroup) |
1390 | { | 1377 | { |
1391 | ((SceneObjectGroup)ent).ScheduleGroupForFullUpdate(); | 1378 | ((SceneObjectGroup) ent).ScheduleGroupForFullUpdate(); |
1392 | } | 1379 | } |
1393 | } | 1380 | } |
1394 | } | 1381 | } |
@@ -1400,7 +1387,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
1400 | { | 1387 | { |
1401 | if (ent is SceneObjectGroup) | 1388 | if (ent is SceneObjectGroup) |
1402 | { | 1389 | { |
1403 | SceneObjectPart part = ((SceneObjectGroup)ent).GetChildPart(((SceneObjectGroup)ent).UUID); | 1390 | SceneObjectPart part = ((SceneObjectGroup) ent).GetChildPart(((SceneObjectGroup) ent).UUID); |
1404 | if (part != null) | 1391 | if (part != null) |
1405 | { | 1392 | { |
1406 | if (part.Name == cmmdparams[0]) | 1393 | if (part.Name == cmmdparams[0]) |
@@ -1429,14 +1416,14 @@ namespace OpenSim.Region.Environment.Scenes | |||
1429 | foreach (ScenePresence scenePrescence in GetAvatars()) | 1416 | foreach (ScenePresence scenePrescence in GetAvatars()) |
1430 | { | 1417 | { |
1431 | MainLog.Instance.Error( | 1418 | MainLog.Instance.Error( |
1432 | String.Format("{0,-16}{1,-16}{2,-25}{3,-25}{4,-16},{5,-16}{6,-16}", | 1419 | String.Format("{0,-16}{1,-16}{2,-25}{3,-25}{4,-16},{5,-16}{6,-16}", |
1433 | scenePrescence.Firstname, | 1420 | scenePrescence.Firstname, |
1434 | scenePrescence.Lastname, | 1421 | scenePrescence.Lastname, |
1435 | scenePrescence.UUID, | 1422 | scenePrescence.UUID, |
1436 | scenePrescence.ControllingClient.AgentId, | 1423 | scenePrescence.ControllingClient.AgentId, |
1437 | "Unknown", | 1424 | "Unknown", |
1438 | "Unknown", | 1425 | "Unknown", |
1439 | RegionInfo.RegionName)); | 1426 | RegionInfo.RegionName)); |
1440 | } | 1427 | } |
1441 | break; | 1428 | break; |
1442 | case "modules": | 1429 | case "modules": |
@@ -1482,10 +1469,10 @@ namespace OpenSim.Region.Environment.Scenes | |||
1482 | { | 1469 | { |
1483 | if (ent is SceneObjectGroup) | 1470 | if (ent is SceneObjectGroup) |
1484 | { | 1471 | { |
1485 | hasPrim = ((SceneObjectGroup)ent).HasChildPrim(localID); | 1472 | hasPrim = ((SceneObjectGroup) ent).HasChildPrim(localID); |
1486 | if (hasPrim != false) | 1473 | if (hasPrim != false) |
1487 | { | 1474 | { |
1488 | return ((SceneObjectGroup)ent).GetPartsFullID(localID); | 1475 | return ((SceneObjectGroup) ent).GetPartsFullID(localID); |
1489 | } | 1476 | } |
1490 | } | 1477 | } |
1491 | } | 1478 | } |
@@ -1499,10 +1486,10 @@ namespace OpenSim.Region.Environment.Scenes | |||
1499 | { | 1486 | { |
1500 | if (ent is SceneObjectGroup) | 1487 | if (ent is SceneObjectGroup) |
1501 | { | 1488 | { |
1502 | hasPrim = ((SceneObjectGroup)ent).HasChildPrim(localID); | 1489 | hasPrim = ((SceneObjectGroup) ent).HasChildPrim(localID); |
1503 | if (hasPrim != false) | 1490 | if (hasPrim != false) |
1504 | { | 1491 | { |
1505 | return ((SceneObjectGroup)ent).GetChildPart(localID); | 1492 | return ((SceneObjectGroup) ent).GetChildPart(localID); |
1506 | } | 1493 | } |
1507 | } | 1494 | } |
1508 | } | 1495 | } |
@@ -1516,10 +1503,10 @@ namespace OpenSim.Region.Environment.Scenes | |||
1516 | { | 1503 | { |
1517 | if (ent is SceneObjectGroup) | 1504 | if (ent is SceneObjectGroup) |
1518 | { | 1505 | { |
1519 | hasPrim = ((SceneObjectGroup)ent).HasChildPrim(fullID); | 1506 | hasPrim = ((SceneObjectGroup) ent).HasChildPrim(fullID); |
1520 | if (hasPrim != false) | 1507 | if (hasPrim != false) |
1521 | { | 1508 | { |
1522 | return ((SceneObjectGroup)ent).GetChildPart(fullID); | 1509 | return ((SceneObjectGroup) ent).GetChildPart(fullID); |
1523 | } | 1510 | } |
1524 | } | 1511 | } |
1525 | } | 1512 | } |
@@ -1569,12 +1556,12 @@ namespace OpenSim.Region.Environment.Scenes | |||
1569 | return false; | 1556 | return false; |
1570 | } | 1557 | } |
1571 | 1558 | ||
1572 | internal void ForEachClient( Action<IClientAPI> action ) | 1559 | internal void ForEachClient(Action<IClientAPI> action) |
1573 | { | 1560 | { |
1574 | foreach (ScenePresence presence in m_scenePresences.Values ) | 1561 | foreach (ScenePresence presence in m_scenePresences.Values) |
1575 | { | 1562 | { |
1576 | action(presence.ControllingClient); | 1563 | action(presence.ControllingClient); |
1577 | } | 1564 | } |
1578 | } | 1565 | } |
1579 | } | 1566 | } |
1580 | } | 1567 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Environment/Scenes/SceneBase.cs b/OpenSim/Region/Environment/Scenes/SceneBase.cs index 0072d4e..4ad9d65 100644 --- a/OpenSim/Region/Environment/Scenes/SceneBase.cs +++ b/OpenSim/Region/Environment/Scenes/SceneBase.cs | |||
@@ -28,10 +28,9 @@ | |||
28 | using System; | 28 | using System; |
29 | using System.Collections.Generic; | 29 | using System.Collections.Generic; |
30 | using libsecondlife; | 30 | using libsecondlife; |
31 | using OpenSim.Framework; | ||
31 | using OpenSim.Framework.Communications.Cache; | 32 | using OpenSim.Framework.Communications.Cache; |
32 | using OpenSim.Framework.Console; | 33 | using OpenSim.Framework.Console; |
33 | using OpenSim.Framework.Interfaces; | ||
34 | using OpenSim.Framework; | ||
35 | using OpenSim.Region.Terrain; | 34 | using OpenSim.Region.Terrain; |
36 | 35 | ||
37 | namespace OpenSim.Region.Environment.Scenes | 36 | namespace OpenSim.Region.Environment.Scenes |
@@ -39,6 +38,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
39 | public abstract class SceneBase : IScene | 38 | public abstract class SceneBase : IScene |
40 | { | 39 | { |
41 | private readonly ClientManager m_clientManager = new ClientManager(); | 40 | private readonly ClientManager m_clientManager = new ClientManager(); |
41 | |||
42 | public ClientManager ClientManager | 42 | public ClientManager ClientManager |
43 | { | 43 | { |
44 | get { return m_clientManager; } | 44 | get { return m_clientManager; } |
diff --git a/OpenSim/Region/Environment/Scenes/SceneEvents.cs b/OpenSim/Region/Environment/Scenes/SceneEvents.cs index ea47713..493afd1 100644 --- a/OpenSim/Region/Environment/Scenes/SceneEvents.cs +++ b/OpenSim/Region/Environment/Scenes/SceneEvents.cs | |||
@@ -27,9 +27,8 @@ | |||
27 | */ | 27 | */ |
28 | 28 | ||
29 | using libsecondlife; | 29 | using libsecondlife; |
30 | using OpenSim.Framework.Interfaces; | ||
31 | using OpenSim.Region.Environment.Interfaces; | ||
32 | using OpenSim.Framework; | 30 | using OpenSim.Framework; |
31 | using OpenSim.Region.Environment.Interfaces; | ||
33 | 32 | ||
34 | namespace OpenSim.Region.Environment.Scenes | 33 | namespace OpenSim.Region.Environment.Scenes |
35 | { | 34 | { |
@@ -207,4 +206,4 @@ namespace OpenSim.Region.Environment.Scenes | |||
207 | } | 206 | } |
208 | } | 207 | } |
209 | } | 208 | } |
210 | } | 209 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Environment/Scenes/SceneManager.cs b/OpenSim/Region/Environment/Scenes/SceneManager.cs index a315d02..75e2a41 100644 --- a/OpenSim/Region/Environment/Scenes/SceneManager.cs +++ b/OpenSim/Region/Environment/Scenes/SceneManager.cs | |||
@@ -28,9 +28,9 @@ | |||
28 | 28 | ||
29 | using System; | 29 | using System; |
30 | using System.Collections.Generic; | 30 | using System.Collections.Generic; |
31 | using OpenSim.Framework.Console; | ||
32 | using OpenSim.Framework; | ||
33 | using libsecondlife; | 31 | using libsecondlife; |
32 | using OpenSim.Framework; | ||
33 | using OpenSim.Framework.Console; | ||
34 | 34 | ||
35 | namespace OpenSim.Region.Environment.Scenes | 35 | namespace OpenSim.Region.Environment.Scenes |
36 | { | 36 | { |
@@ -152,10 +152,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
152 | 152 | ||
153 | public void SendGeneralMessage(string msg) | 153 | public void SendGeneralMessage(string msg) |
154 | { | 154 | { |
155 | ForEachCurrentScene(delegate(Scene scene) | 155 | ForEachCurrentScene(delegate(Scene scene) { scene.SendGeneralAlert(msg); }); |
156 | { | ||
157 | scene.SendGeneralAlert(msg); | ||
158 | }); | ||
159 | } | 156 | } |
160 | 157 | ||
161 | public bool TrySetCurrentScene(string regionName) | 158 | public bool TrySetCurrentScene(string regionName) |
@@ -185,23 +182,24 @@ namespace OpenSim.Region.Environment.Scenes | |||
185 | public void SetDebugPacketOnCurrentScene(LogBase log, int newDebug) | 182 | public void SetDebugPacketOnCurrentScene(LogBase log, int newDebug) |
186 | { | 183 | { |
187 | ForEachCurrentScene(delegate(Scene scene) | 184 | ForEachCurrentScene(delegate(Scene scene) |
188 | { | ||
189 | foreach (EntityBase entity in scene.Entities.Values) | ||
190 | { | ||
191 | if (entity is ScenePresence) | ||
192 | { | ||
193 | ScenePresence scenePrescence = entity as ScenePresence; | ||
194 | if (!scenePrescence.IsChildAgent) | ||
195 | { | 185 | { |
196 | log.Error(String.Format("Packet debug for {0} {1} set to {2}", | 186 | foreach (EntityBase entity in scene.Entities.Values) |
197 | scenePrescence.Firstname, scenePrescence.Lastname, | 187 | { |
198 | newDebug)); | 188 | if (entity is ScenePresence) |
199 | 189 | { | |
200 | scenePrescence.ControllingClient.SetDebug(newDebug); | 190 | ScenePresence scenePrescence = entity as ScenePresence; |
201 | } | 191 | if (!scenePrescence.IsChildAgent) |
202 | } | 192 | { |
203 | } | 193 | log.Error(String.Format("Packet debug for {0} {1} set to {2}", |
204 | }); | 194 | scenePrescence.Firstname, |
195 | scenePrescence.Lastname, | ||
196 | newDebug)); | ||
197 | |||
198 | scenePrescence.ControllingClient.SetDebug(newDebug); | ||
199 | } | ||
200 | } | ||
201 | } | ||
202 | }); | ||
205 | } | 203 | } |
206 | 204 | ||
207 | public List<ScenePresence> GetCurrentSceneAvatars() | 205 | public List<ScenePresence> GetCurrentSceneAvatars() |
@@ -209,19 +207,19 @@ namespace OpenSim.Region.Environment.Scenes | |||
209 | List<ScenePresence> avatars = new List<ScenePresence>(); | 207 | List<ScenePresence> avatars = new List<ScenePresence>(); |
210 | 208 | ||
211 | ForEachCurrentScene(delegate(Scene scene) | 209 | ForEachCurrentScene(delegate(Scene scene) |
212 | { | ||
213 | foreach (EntityBase entity in scene.Entities.Values) | ||
214 | { | ||
215 | if (entity is ScenePresence) | ||
216 | { | ||
217 | ScenePresence scenePrescence = entity as ScenePresence; | ||
218 | if (!scenePrescence.IsChildAgent) | ||
219 | { | 210 | { |
220 | avatars.Add(scenePrescence); | 211 | foreach (EntityBase entity in scene.Entities.Values) |
221 | } | 212 | { |
222 | } | 213 | if (entity is ScenePresence) |
223 | } | 214 | { |
224 | }); | 215 | ScenePresence scenePrescence = entity as ScenePresence; |
216 | if (!scenePrescence.IsChildAgent) | ||
217 | { | ||
218 | avatars.Add(scenePrescence); | ||
219 | } | ||
220 | } | ||
221 | } | ||
222 | }); | ||
225 | 223 | ||
226 | return avatars; | 224 | return avatars; |
227 | } | 225 | } |
@@ -242,11 +240,11 @@ namespace OpenSim.Region.Environment.Scenes | |||
242 | public void SetCurrentSceneTimePhase(int timePhase) | 240 | public void SetCurrentSceneTimePhase(int timePhase) |
243 | { | 241 | { |
244 | ForEachCurrentScene(delegate(Scene scene) | 242 | ForEachCurrentScene(delegate(Scene scene) |
245 | { | 243 | { |
246 | scene.SetTimePhase( | 244 | scene.SetTimePhase( |
247 | timePhase) | 245 | timePhase) |
248 | ; | 246 | ; |
249 | }); | 247 | }); |
250 | } | 248 | } |
251 | 249 | ||
252 | 250 | ||
@@ -260,11 +258,11 @@ namespace OpenSim.Region.Environment.Scenes | |||
260 | ForEachCurrentScene(delegate(Scene scene) { scene.HandleEditCommand(cmdparams); }); | 258 | ForEachCurrentScene(delegate(Scene scene) { scene.HandleEditCommand(cmdparams); }); |
261 | } | 259 | } |
262 | 260 | ||
263 | public bool TryGetAvatar( LLUUID avatarId, out ScenePresence avatar ) | 261 | public bool TryGetAvatar(LLUUID avatarId, out ScenePresence avatar) |
264 | { | 262 | { |
265 | foreach (Scene scene in m_localScenes) | 263 | foreach (Scene scene in m_localScenes) |
266 | { | 264 | { |
267 | if( scene.TryGetAvatar( avatarId, out avatar )) | 265 | if (scene.TryGetAvatar(avatarId, out avatar)) |
268 | { | 266 | { |
269 | return true; | 267 | return true; |
270 | } | 268 | } |
@@ -311,9 +309,9 @@ namespace OpenSim.Region.Environment.Scenes | |||
311 | return false; | 309 | return false; |
312 | } | 310 | } |
313 | 311 | ||
314 | public void ForEachScene(Action<Scene> action ) | 312 | public void ForEachScene(Action<Scene> action) |
315 | { | 313 | { |
316 | m_localScenes.ForEach( action ); | 314 | m_localScenes.ForEach(action); |
317 | } | 315 | } |
318 | } | 316 | } |
319 | } | 317 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs index 4603902..4d439b2 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs | |||
@@ -34,7 +34,6 @@ using System.Xml; | |||
34 | using Axiom.Math; | 34 | using Axiom.Math; |
35 | using libsecondlife; | 35 | using libsecondlife; |
36 | using libsecondlife.Packets; | 36 | using libsecondlife.Packets; |
37 | using OpenSim.Framework.Interfaces; | ||
38 | using OpenSim.Framework; | 37 | using OpenSim.Framework; |
39 | using OpenSim.Region.Environment.Interfaces; | 38 | using OpenSim.Region.Environment.Interfaces; |
40 | using OpenSim.Region.Physics.Manager; | 39 | using OpenSim.Region.Physics.Manager; |
@@ -270,7 +269,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
270 | StringReader sr = new StringReader(xmlData); | 269 | StringReader sr = new StringReader(xmlData); |
271 | XmlTextReader reader = new XmlTextReader(sr); | 270 | XmlTextReader reader = new XmlTextReader(sr); |
272 | reader.Read(); | 271 | reader.Read(); |
273 | 272 | ||
274 | reader.ReadStartElement("SceneObjectGroup"); | 273 | reader.ReadStartElement("SceneObjectGroup"); |
275 | m_rootPart = SceneObjectPart.FromXml(reader); | 274 | m_rootPart = SceneObjectPart.FromXml(reader); |
276 | 275 | ||
@@ -285,14 +284,14 @@ namespace OpenSim.Region.Environment.Scenes | |||
285 | if (reader.Name == "SceneObjectPart") | 284 | if (reader.Name == "SceneObjectPart") |
286 | { | 285 | { |
287 | SceneObjectPart Part = SceneObjectPart.FromXml(reader); | 286 | SceneObjectPart Part = SceneObjectPart.FromXml(reader); |
288 | AddPart(Part); | 287 | AddPart(Part); |
289 | } | 288 | } |
290 | break; | 289 | break; |
291 | case XmlNodeType.EndElement: | 290 | case XmlNodeType.EndElement: |
292 | reader.Read(); | 291 | reader.Read(); |
293 | break; | 292 | break; |
294 | } | 293 | } |
295 | more = !reader.EOF; | 294 | more = !reader.EOF; |
296 | } | 295 | } |
297 | reader.Close(); | 296 | reader.Close(); |
298 | sr.Close(); | 297 | sr.Close(); |
@@ -424,13 +423,13 @@ namespace OpenSim.Region.Environment.Scenes | |||
424 | PrimitiveBaseShape pbs = dupe.RootPart.Shape; | 423 | PrimitiveBaseShape pbs = dupe.RootPart.Shape; |
425 | 424 | ||
426 | dupe.RootPart.PhysActor = m_scene.PhysScene.AddPrimShape( | 425 | dupe.RootPart.PhysActor = m_scene.PhysScene.AddPrimShape( |
427 | dupe.RootPart.Name, | 426 | dupe.RootPart.Name, |
428 | pbs, | 427 | pbs, |
429 | new PhysicsVector(dupe.RootPart.AbsolutePosition.X, dupe.RootPart.AbsolutePosition.Y, dupe.RootPart.AbsolutePosition.Z), | 428 | new PhysicsVector(dupe.RootPart.AbsolutePosition.X, dupe.RootPart.AbsolutePosition.Y, |
430 | new PhysicsVector(dupe.RootPart.Scale.X, dupe.RootPart.Scale.Y, dupe.RootPart.Scale.Z), | 429 | dupe.RootPart.AbsolutePosition.Z), |
431 | new Axiom.Math.Quaternion(dupe.RootPart.RotationOffset.W, dupe.RootPart.RotationOffset.X, | 430 | new PhysicsVector(dupe.RootPart.Scale.X, dupe.RootPart.Scale.Y, dupe.RootPart.Scale.Z), |
432 | dupe.RootPart.RotationOffset.Y, dupe.RootPart.RotationOffset.Z)); | 431 | new Quaternion(dupe.RootPart.RotationOffset.W, dupe.RootPart.RotationOffset.X, |
433 | 432 | dupe.RootPart.RotationOffset.Y, dupe.RootPart.RotationOffset.Z)); | |
434 | } | 433 | } |
435 | 434 | ||
436 | List<SceneObjectPart> partList = new List<SceneObjectPart>(m_parts.Values); | 435 | List<SceneObjectPart> partList = new List<SceneObjectPart>(m_parts.Values); |
@@ -951,14 +950,15 @@ namespace OpenSim.Region.Environment.Scenes | |||
951 | } | 950 | } |
952 | if (m_rootPart.PhysActor != null) | 951 | if (m_rootPart.PhysActor != null) |
953 | { | 952 | { |
954 | this.m_scene.PhysScene.RemovePrim(m_rootPart.PhysActor); | 953 | m_scene.PhysScene.RemovePrim(m_rootPart.PhysActor); |
955 | m_rootPart.PhysActor = m_scene.PhysScene.AddPrimShape( | 954 | m_rootPart.PhysActor = m_scene.PhysScene.AddPrimShape( |
956 | m_rootPart.Name, | 955 | m_rootPart.Name, |
957 | m_rootPart.Shape, | 956 | m_rootPart.Shape, |
958 | new PhysicsVector(m_rootPart.AbsolutePosition.X, m_rootPart.AbsolutePosition.Y, m_rootPart.AbsolutePosition.Z), | 957 | new PhysicsVector(m_rootPart.AbsolutePosition.X, m_rootPart.AbsolutePosition.Y, |
959 | new PhysicsVector(m_rootPart.Scale.X, m_rootPart.Scale.Y, m_rootPart.Scale.Z), | 958 | m_rootPart.AbsolutePosition.Z), |
960 | new Axiom.Math.Quaternion(m_rootPart.RotationOffset.W, m_rootPart.RotationOffset.X, | 959 | new PhysicsVector(m_rootPart.Scale.X, m_rootPart.Scale.Y, m_rootPart.Scale.Z), |
961 | m_rootPart.RotationOffset.Y, m_rootPart.RotationOffset.Z)); | 960 | new Quaternion(m_rootPart.RotationOffset.W, m_rootPart.RotationOffset.X, |
961 | m_rootPart.RotationOffset.Y, m_rootPart.RotationOffset.Z)); | ||
962 | } | 962 | } |
963 | } | 963 | } |
964 | 964 | ||
@@ -1001,7 +1001,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
1001 | AbsolutePosition = pos; | 1001 | AbsolutePosition = pos; |
1002 | ScheduleGroupForTerseUpdate(); | 1002 | ScheduleGroupForTerseUpdate(); |
1003 | 1003 | ||
1004 | m_scene.EventManager.TriggerGroupMove(this.UUID, pos); | 1004 | m_scene.EventManager.TriggerGroupMove(UUID, pos); |
1005 | } | 1005 | } |
1006 | 1006 | ||
1007 | /// <summary> | 1007 | /// <summary> |
@@ -1350,7 +1350,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
1350 | 1350 | ||
1351 | public virtual void OnGrabGroup(LLVector3 offsetPos, IClientAPI remoteClient) | 1351 | public virtual void OnGrabGroup(LLVector3 offsetPos, IClientAPI remoteClient) |
1352 | { | 1352 | { |
1353 | m_scene.EventManager.TriggerGroupGrab(this.UUID, offsetPos, remoteClient.AgentId); | 1353 | m_scene.EventManager.TriggerGroupGrab(UUID, offsetPos, remoteClient.AgentId); |
1354 | } | 1354 | } |
1355 | 1355 | ||
1356 | public void DeleteGroup() | 1356 | public void DeleteGroup() |
@@ -1377,4 +1377,4 @@ namespace OpenSim.Region.Environment.Scenes | |||
1377 | Text = text; | 1377 | Text = text; |
1378 | } | 1378 | } |
1379 | } | 1379 | } |
1380 | } | 1380 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs b/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs index 3e104e3..387f573 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs | |||
@@ -33,12 +33,10 @@ using System.Xml.Serialization; | |||
33 | using Axiom.Math; | 33 | using Axiom.Math; |
34 | using libsecondlife; | 34 | using libsecondlife; |
35 | using libsecondlife.Packets; | 35 | using libsecondlife.Packets; |
36 | using OpenSim.Framework.Interfaces; | ||
37 | using OpenSim.Framework; | 36 | using OpenSim.Framework; |
38 | using OpenSim.Region.Environment.Interfaces; | 37 | using OpenSim.Region.Environment.Interfaces; |
39 | using OpenSim.Region.Environment.Scenes.Scripting; | 38 | using OpenSim.Region.Environment.Scenes.Scripting; |
40 | using OpenSim.Region.Physics.Manager; | 39 | using OpenSim.Region.Physics.Manager; |
41 | using OpenSim.Region.Environment.Types; | ||
42 | 40 | ||
43 | namespace OpenSim.Region.Environment.Scenes | 41 | namespace OpenSim.Region.Environment.Scenes |
44 | { | 42 | { |
@@ -49,8 +47,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
49 | private string m_inventoryFileName = ""; | 47 | private string m_inventoryFileName = ""; |
50 | private LLUUID m_folderID = LLUUID.Zero; | 48 | private LLUUID m_folderID = LLUUID.Zero; |
51 | 49 | ||
52 | [XmlIgnore] | 50 | [XmlIgnore] public PhysicsActor PhysActor = null; |
53 | public PhysicsActor PhysActor = null; | ||
54 | 51 | ||
55 | protected Dictionary<LLUUID, TaskInventoryItem> TaskInventory = new Dictionary<LLUUID, TaskInventoryItem>(); | 52 | protected Dictionary<LLUUID, TaskInventoryItem> TaskInventory = new Dictionary<LLUUID, TaskInventoryItem>(); |
56 | 53 | ||
@@ -68,10 +65,8 @@ namespace OpenSim.Region.Environment.Scenes | |||
68 | 65 | ||
69 | protected byte[] m_particleSystem = new byte[0]; | 66 | protected byte[] m_particleSystem = new byte[0]; |
70 | 67 | ||
71 | [XmlIgnore] | 68 | [XmlIgnore] public uint TimeStampFull = 0; |
72 | public uint TimeStampFull = 0; | 69 | [XmlIgnore] public uint TimeStampTerse = 0; |
73 | [XmlIgnore] | ||
74 | public uint TimeStampTerse = 0; | ||
75 | 70 | ||
76 | protected SceneObjectGroup m_parentGroup; | 71 | protected SceneObjectGroup m_parentGroup; |
77 | 72 | ||
@@ -124,7 +119,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
124 | set { m_name = value; } | 119 | set { m_name = value; } |
125 | } | 120 | } |
126 | 121 | ||
127 | protected LLObject.ObjectFlags m_flags =0; | 122 | protected LLObject.ObjectFlags m_flags = 0; |
128 | 123 | ||
129 | public uint ObjectFlags | 124 | public uint ObjectFlags |
130 | { | 125 | { |
@@ -132,7 +127,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
132 | set { m_flags = (LLObject.ObjectFlags) value; } | 127 | set { m_flags = (LLObject.ObjectFlags) value; } |
133 | } | 128 | } |
134 | 129 | ||
135 | protected LLObject.MaterialType m_material =0; | 130 | protected LLObject.MaterialType m_material = 0; |
136 | 131 | ||
137 | public byte Material | 132 | public byte Material |
138 | { | 133 | { |
@@ -712,7 +707,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
712 | List<ScenePresence> avatars = m_parentGroup.GetScenePresences(); | 707 | List<ScenePresence> avatars = m_parentGroup.GetScenePresences(); |
713 | for (int i = 0; i < avatars.Count; i++) | 708 | for (int i = 0; i < avatars.Count; i++) |
714 | { | 709 | { |
715 | avatars[i].QueuePartForUpdate(this); | 710 | avatars[i].QueuePartForUpdate(this); |
716 | } | 711 | } |
717 | } | 712 | } |
718 | 713 | ||
@@ -774,13 +769,13 @@ namespace OpenSim.Region.Environment.Scenes | |||
774 | List<ScenePresence> avatars = m_parentGroup.GetScenePresences(); | 769 | List<ScenePresence> avatars = m_parentGroup.GetScenePresences(); |
775 | for (int i = 0; i < avatars.Count; i++) | 770 | for (int i = 0; i < avatars.Count; i++) |
776 | { | 771 | { |
777 | avatars[i].QueuePartForUpdate(this); | 772 | avatars[i].QueuePartForUpdate(this); |
778 | } | 773 | } |
779 | } | 774 | } |
780 | 775 | ||
781 | public void AddTerseUpdateToAvatar(ScenePresence presence) | 776 | public void AddTerseUpdateToAvatar(ScenePresence presence) |
782 | { | 777 | { |
783 | presence.QueuePartForUpdate(this); | 778 | presence.QueuePartForUpdate(this); |
784 | } | 779 | } |
785 | 780 | ||
786 | /// <summary> | 781 | /// <summary> |
@@ -927,4 +922,4 @@ namespace OpenSim.Region.Environment.Scenes | |||
927 | } | 922 | } |
928 | } | 923 | } |
929 | } | 924 | } |
930 | } | 925 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Environment/Scenes/ScenePresence.Animations.cs b/OpenSim/Region/Environment/Scenes/ScenePresence.Animations.cs index 8ed4e87..f43a9fc 100644 --- a/OpenSim/Region/Environment/Scenes/ScenePresence.Animations.cs +++ b/OpenSim/Region/Environment/Scenes/ScenePresence.Animations.cs | |||
@@ -45,7 +45,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
45 | public void LoadAnims() | 45 | public void LoadAnims() |
46 | { | 46 | { |
47 | //OpenSim.Framework.Console.MainLog.Instance.Verbose("Avatar.cs:LoadAnims() - Loading avatar animations"); | 47 | //OpenSim.Framework.Console.MainLog.Instance.Verbose("Avatar.cs:LoadAnims() - Loading avatar animations"); |
48 | using( XmlTextReader reader = new XmlTextReader("data/avataranimations.xml") ) | 48 | using (XmlTextReader reader = new XmlTextReader("data/avataranimations.xml")) |
49 | { | 49 | { |
50 | XmlDocument doc = new XmlDocument(); | 50 | XmlDocument doc = new XmlDocument(); |
51 | doc.Load(reader); | 51 | doc.Load(reader); |
diff --git a/OpenSim/Region/Environment/Scenes/ScenePresence.cs b/OpenSim/Region/Environment/Scenes/ScenePresence.cs index 6ed50b7..527eb22 100644 --- a/OpenSim/Region/Environment/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Environment/Scenes/ScenePresence.cs | |||
@@ -30,11 +30,10 @@ using System.Collections.Generic; | |||
30 | using Axiom.Math; | 30 | using Axiom.Math; |
31 | using libsecondlife; | 31 | using libsecondlife; |
32 | using libsecondlife.Packets; | 32 | using libsecondlife.Packets; |
33 | using OpenSim.Framework.Console; | ||
34 | using OpenSim.Framework.Interfaces; | ||
35 | using OpenSim.Framework; | 33 | using OpenSim.Framework; |
36 | using OpenSim.Region.Physics.Manager; | 34 | using OpenSim.Framework.Console; |
37 | using OpenSim.Region.Environment.Types; | 35 | using OpenSim.Region.Environment.Types; |
36 | using OpenSim.Region.Physics.Manager; | ||
38 | 37 | ||
39 | namespace OpenSim.Region.Environment.Scenes | 38 | namespace OpenSim.Region.Environment.Scenes |
40 | { | 39 | { |
@@ -116,18 +115,21 @@ namespace OpenSim.Region.Environment.Scenes | |||
116 | } | 115 | } |
117 | 116 | ||
118 | private readonly ulong m_regionHandle; | 117 | private readonly ulong m_regionHandle; |
118 | |||
119 | public ulong RegionHandle | 119 | public ulong RegionHandle |
120 | { | 120 | { |
121 | get { return m_regionHandle; } | 121 | get { return m_regionHandle; } |
122 | } | 122 | } |
123 | 123 | ||
124 | private readonly string m_firstname; | 124 | private readonly string m_firstname; |
125 | |||
125 | public string Firstname | 126 | public string Firstname |
126 | { | 127 | { |
127 | get { return m_firstname; } | 128 | get { return m_firstname; } |
128 | } | 129 | } |
129 | 130 | ||
130 | private readonly string m_lastname; | 131 | private readonly string m_lastname; |
132 | |||
131 | public string Lastname | 133 | public string Lastname |
132 | { | 134 | { |
133 | get { return m_lastname; } | 135 | get { return m_lastname; } |
@@ -210,6 +212,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
210 | } | 212 | } |
211 | 213 | ||
212 | private bool m_isChildAgent = true; | 214 | private bool m_isChildAgent = true; |
215 | |||
213 | public bool IsChildAgent | 216 | public bool IsChildAgent |
214 | { | 217 | { |
215 | get { return m_isChildAgent; } | 218 | get { return m_isChildAgent; } |
@@ -217,6 +220,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
217 | } | 220 | } |
218 | 221 | ||
219 | private uint m_parentID = 0; | 222 | private uint m_parentID = 0; |
223 | |||
220 | public uint ParentID | 224 | public uint ParentID |
221 | { | 225 | { |
222 | get { return m_parentID; } | 226 | get { return m_parentID; } |
@@ -227,7 +231,8 @@ namespace OpenSim.Region.Environment.Scenes | |||
227 | 231 | ||
228 | #region Constructor(s) | 232 | #region Constructor(s) |
229 | 233 | ||
230 | public ScenePresence(IClientAPI client, Scene world, RegionInfo reginfo, byte[] visualParams, AvatarWearable[] wearables) | 234 | public ScenePresence(IClientAPI client, Scene world, RegionInfo reginfo, byte[] visualParams, |
235 | AvatarWearable[] wearables) | ||
231 | { | 236 | { |
232 | m_scene = world; | 237 | m_scene = world; |
233 | m_uuid = client.AgentId; | 238 | m_uuid = client.AgentId; |
@@ -309,24 +314,24 @@ namespace OpenSim.Region.Environment.Scenes | |||
309 | if (update.LastFullUpdateTime < part.TimeStampFull) | 314 | if (update.LastFullUpdateTime < part.TimeStampFull) |
310 | { | 315 | { |
311 | //need to do a full update | 316 | //need to do a full update |
312 | part.SendFullUpdate(this.ControllingClient); | 317 | part.SendFullUpdate(ControllingClient); |
313 | update.LastFullUpdateTime = (uint)Util.UnixTimeSinceEpoch(); | 318 | update.LastFullUpdateTime = (uint) Util.UnixTimeSinceEpoch(); |
314 | updateCount++; | 319 | updateCount++; |
315 | } | 320 | } |
316 | else if (update.LastTerseUpdateTime < part.TimeStampTerse) | 321 | else if (update.LastTerseUpdateTime < part.TimeStampTerse) |
317 | { | 322 | { |
318 | part.SendTerseUpdate(this.ControllingClient); | 323 | part.SendTerseUpdate(ControllingClient); |
319 | update.LastTerseUpdateTime = (uint)Util.UnixTimeSinceEpoch(); | 324 | update.LastTerseUpdateTime = (uint) Util.UnixTimeSinceEpoch(); |
320 | updateCount++; | 325 | updateCount++; |
321 | } | 326 | } |
322 | } | 327 | } |
323 | else | 328 | else |
324 | { | 329 | { |
325 | //never been sent to client before so do full update | 330 | //never been sent to client before so do full update |
326 | part.SendFullUpdate(this.ControllingClient); | 331 | part.SendFullUpdate(ControllingClient); |
327 | ScenePartUpdate update = new ScenePartUpdate(); | 332 | ScenePartUpdate update = new ScenePartUpdate(); |
328 | update.FullID = part.UUID; | 333 | update.FullID = part.UUID; |
329 | update.LastFullUpdateTime = (uint)Util.UnixTimeSinceEpoch(); | 334 | update.LastFullUpdateTime = (uint) Util.UnixTimeSinceEpoch(); |
330 | m_updateTimes.Add(part.UUID, update); | 335 | m_updateTimes.Add(part.UUID, update); |
331 | updateCount++; | 336 | updateCount++; |
332 | } | 337 | } |
@@ -339,7 +344,6 @@ namespace OpenSim.Region.Environment.Scenes | |||
339 | } | 344 | } |
340 | } | 345 | } |
341 | 346 | ||
342 | |||
343 | #region Status Methods | 347 | #region Status Methods |
344 | 348 | ||
345 | public void MakeRootAgent(LLVector3 pos, bool isFlying) | 349 | public void MakeRootAgent(LLVector3 pos, bool isFlying) |
@@ -368,10 +372,10 @@ namespace OpenSim.Region.Environment.Scenes | |||
368 | 372 | ||
369 | private void RemoveFromPhysicalScene() | 373 | private void RemoveFromPhysicalScene() |
370 | { | 374 | { |
371 | if (this.PhysicsActor != null) | 375 | if (PhysicsActor != null) |
372 | { | 376 | { |
373 | m_scene.PhysScene.RemoveAvatar(this.PhysicsActor); | 377 | m_scene.PhysScene.RemoveAvatar(PhysicsActor); |
374 | this.PhysicsActor = null; | 378 | PhysicsActor = null; |
375 | } | 379 | } |
376 | } | 380 | } |
377 | 381 | ||
@@ -432,7 +436,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
432 | m_isChildAgent = false; | 436 | m_isChildAgent = false; |
433 | 437 | ||
434 | //this.m_scene.SendAllSceneObjectsToClient(this.ControllingClient); | 438 | //this.m_scene.SendAllSceneObjectsToClient(this.ControllingClient); |
435 | this.MakeRootAgent(this.AbsolutePosition, false); | 439 | MakeRootAgent(AbsolutePosition, false); |
436 | } | 440 | } |
437 | } | 441 | } |
438 | 442 | ||
@@ -457,13 +461,13 @@ namespace OpenSim.Region.Environment.Scenes | |||
457 | Vector3 agent_control_v3 = new Vector3(0, 0, 0); | 461 | Vector3 agent_control_v3 = new Vector3(0, 0, 0); |
458 | Quaternion q = new Quaternion(bodyRotation.W, bodyRotation.X, bodyRotation.Y, bodyRotation.Z); | 462 | Quaternion q = new Quaternion(bodyRotation.W, bodyRotation.X, bodyRotation.Y, bodyRotation.Z); |
459 | bool oldflying = PhysicsActor.Flying; | 463 | bool oldflying = PhysicsActor.Flying; |
460 | PhysicsActor.Flying = ((flags & (uint)MainAvatar.ControlFlags.AGENT_CONTROL_FLY) != 0); | 464 | PhysicsActor.Flying = ((flags & (uint) MainAvatar.ControlFlags.AGENT_CONTROL_FLY) != 0); |
461 | if (PhysicsActor.Flying != oldflying) | 465 | if (PhysicsActor.Flying != oldflying) |
462 | { | 466 | { |
463 | update_movementflag = true; | 467 | update_movementflag = true; |
464 | } | 468 | } |
465 | 469 | ||
466 | if ((flags & (uint)MainAvatar.ControlFlags.AGENT_CONTROL_STAND_UP) != 0) | 470 | if ((flags & (uint) MainAvatar.ControlFlags.AGENT_CONTROL_STAND_UP) != 0) |
467 | { | 471 | { |
468 | StandUp(); | 472 | StandUp(); |
469 | update_movementflag = true; | 473 | update_movementflag = true; |
@@ -477,23 +481,23 @@ namespace OpenSim.Region.Environment.Scenes | |||
477 | 481 | ||
478 | if (m_parentID == 0) | 482 | if (m_parentID == 0) |
479 | { | 483 | { |
480 | foreach (Dir_ControlFlags DCF in Enum.GetValues(typeof(Dir_ControlFlags))) | 484 | foreach (Dir_ControlFlags DCF in Enum.GetValues(typeof (Dir_ControlFlags))) |
481 | { | 485 | { |
482 | if ((flags & (uint)DCF) != 0) | 486 | if ((flags & (uint) DCF) != 0) |
483 | { | 487 | { |
484 | DCFlagKeyPressed = true; | 488 | DCFlagKeyPressed = true; |
485 | agent_control_v3 += Dir_Vectors[i]; | 489 | agent_control_v3 += Dir_Vectors[i]; |
486 | if ((m_movementflag & (uint)DCF) == 0) | 490 | if ((m_movementflag & (uint) DCF) == 0) |
487 | { | 491 | { |
488 | m_movementflag += (byte)(uint)DCF; | 492 | m_movementflag += (byte) (uint) DCF; |
489 | update_movementflag = true; | 493 | update_movementflag = true; |
490 | } | 494 | } |
491 | } | 495 | } |
492 | else | 496 | else |
493 | { | 497 | { |
494 | if ((m_movementflag & (uint)DCF) != 0) | 498 | if ((m_movementflag & (uint) DCF) != 0) |
495 | { | 499 | { |
496 | m_movementflag -= (byte)(uint)DCF; | 500 | m_movementflag -= (byte) (uint) DCF; |
497 | update_movementflag = true; | 501 | update_movementflag = true; |
498 | } | 502 | } |
499 | } | 503 | } |
@@ -580,10 +584,10 @@ namespace OpenSim.Region.Environment.Scenes | |||
580 | } | 584 | } |
581 | 585 | ||
582 | NewForce newVelocity = new NewForce(); | 586 | NewForce newVelocity = new NewForce(); |
583 | Vector3 direc = rotation * vec; | 587 | Vector3 direc = rotation*vec; |
584 | direc.Normalize(); | 588 | direc.Normalize(); |
585 | 589 | ||
586 | direc = direc * ((0.03f) * 128f); | 590 | direc = direc*((0.03f)*128f); |
587 | if (m_physicsActor.Flying) | 591 | if (m_physicsActor.Flying) |
588 | direc *= 4; | 592 | direc *= 4; |
589 | 593 | ||
@@ -692,8 +696,6 @@ namespace OpenSim.Region.Environment.Scenes | |||
692 | } | 696 | } |
693 | 697 | ||
694 | 698 | ||
695 | |||
696 | |||
697 | /// <summary> | 699 | /// <summary> |
698 | /// | 700 | /// |
699 | /// </summary> | 701 | /// </summary> |
@@ -701,7 +703,8 @@ namespace OpenSim.Region.Environment.Scenes | |||
701 | public void SendFullUpdateToOtherClient(ScenePresence remoteAvatar) | 703 | public void SendFullUpdateToOtherClient(ScenePresence remoteAvatar) |
702 | { | 704 | { |
703 | remoteAvatar.m_controllingClient.SendAvatarData(m_regionInfo.RegionHandle, m_firstname, m_lastname, m_uuid, | 705 | remoteAvatar.m_controllingClient.SendAvatarData(m_regionInfo.RegionHandle, m_firstname, m_lastname, m_uuid, |
704 | LocalId, AbsolutePosition, m_textureEntry.ToBytes(), m_parentID); | 706 | LocalId, AbsolutePosition, m_textureEntry.ToBytes(), |
707 | m_parentID); | ||
705 | } | 708 | } |
706 | 709 | ||
707 | public void SendFullUpdateToAllClients() | 710 | public void SendFullUpdateToAllClients() |
@@ -784,7 +787,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
784 | public void SendAppearanceToOtherAgent(ScenePresence avatarInfo) | 787 | public void SendAppearanceToOtherAgent(ScenePresence avatarInfo) |
785 | { | 788 | { |
786 | avatarInfo.m_controllingClient.SendAppearance(m_controllingClient.AgentId, m_visualParams, | 789 | avatarInfo.m_controllingClient.SendAppearance(m_controllingClient.AgentId, m_visualParams, |
787 | m_textureEntry.ToBytes()); | 790 | m_textureEntry.ToBytes()); |
788 | } | 791 | } |
789 | 792 | ||
790 | /// <summary> | 793 | /// <summary> |
@@ -798,10 +801,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
798 | AnimationSeq = seq; | 801 | AnimationSeq = seq; |
799 | LLUUID sourceAgentId = m_controllingClient.AgentId; | 802 | LLUUID sourceAgentId = m_controllingClient.AgentId; |
800 | 803 | ||
801 | m_scene.Broadcast(delegate(IClientAPI client) | 804 | m_scene.Broadcast(delegate(IClientAPI client) { client.SendAnimation(animID, seq, sourceAgentId); }); |
802 | { | ||
803 | client.SendAnimation(animID, seq, sourceAgentId); | ||
804 | }); | ||
805 | } | 805 | } |
806 | 806 | ||
807 | /// <summary> | 807 | /// <summary> |
@@ -842,9 +842,9 @@ namespace OpenSim.Region.Environment.Scenes | |||
842 | LLVector3 vel = Velocity; | 842 | LLVector3 vel = Velocity; |
843 | 843 | ||
844 | float timeStep = 0.1f; | 844 | float timeStep = 0.1f; |
845 | pos2.X = pos2.X + (vel.X * timeStep); | 845 | pos2.X = pos2.X + (vel.X*timeStep); |
846 | pos2.Y = pos2.Y + (vel.Y * timeStep); | 846 | pos2.Y = pos2.Y + (vel.Y*timeStep); |
847 | pos2.Z = pos2.Z + (vel.Z * timeStep); | 847 | pos2.Z = pos2.Z + (vel.Z*timeStep); |
848 | 848 | ||
849 | if ((pos2.X < 0) || (pos2.X > 256)) | 849 | if ((pos2.X < 0) || (pos2.X > 256)) |
850 | { | 850 | { |
@@ -889,7 +889,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
889 | } | 889 | } |
890 | 890 | ||
891 | LLVector3 vel = m_velocity; | 891 | LLVector3 vel = m_velocity; |
892 | ulong neighbourHandle = Helpers.UIntsToLong((uint)(neighbourx * 256), (uint)(neighboury * 256)); | 892 | ulong neighbourHandle = Helpers.UIntsToLong((uint) (neighbourx*256), (uint) (neighboury*256)); |
893 | RegionInfo neighbourRegion = m_scene.RequestNeighbouringRegionInfo(neighbourHandle); | 893 | RegionInfo neighbourRegion = m_scene.RequestNeighbouringRegionInfo(neighbourHandle); |
894 | if (neighbourRegion != null) | 894 | if (neighbourRegion != null) |
895 | { | 895 | { |
@@ -901,7 +901,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
901 | AgentCircuitData circuitdata = m_controllingClient.RequestClientInfo(); | 901 | AgentCircuitData circuitdata = m_controllingClient.RequestClientInfo(); |
902 | string capsPath = Util.GetCapsURL(m_controllingClient.AgentId); | 902 | string capsPath = Util.GetCapsURL(m_controllingClient.AgentId); |
903 | m_controllingClient.CrossRegion(neighbourHandle, newpos, vel, neighbourRegion.ExternalEndPoint, | 903 | m_controllingClient.CrossRegion(neighbourHandle, newpos, vel, neighbourRegion.ExternalEndPoint, |
904 | capsPath); | 904 | capsPath); |
905 | MakeChildAgent(); | 905 | MakeChildAgent(); |
906 | m_scene.SendKillObject(m_localId); | 906 | m_scene.SendKillObject(m_localId); |
907 | m_scene.NotifyMyCoarseLocationChange(); | 907 | m_scene.NotifyMyCoarseLocationChange(); |
@@ -980,7 +980,6 @@ namespace OpenSim.Region.Environment.Scenes | |||
980 | LastFullUpdateTime = 0; | 980 | LastFullUpdateTime = 0; |
981 | LastTerseUpdateTime = 0; | 981 | LastTerseUpdateTime = 0; |
982 | } | 982 | } |
983 | |||
984 | } | 983 | } |
985 | 984 | ||
986 | 985 | ||
@@ -997,7 +996,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
997 | new PhysicsVector(AbsolutePosition.X, AbsolutePosition.Y, | 996 | new PhysicsVector(AbsolutePosition.X, AbsolutePosition.Y, |
998 | AbsolutePosition.Z); | 997 | AbsolutePosition.Z); |
999 | 998 | ||
1000 | m_physicsActor = scene.AddAvatar(this.Firstname + "." + this.Lastname, pVec); | 999 | m_physicsActor = scene.AddAvatar(Firstname + "." + Lastname, pVec); |
1001 | } | 1000 | } |
1002 | 1001 | ||
1003 | internal void Close() | 1002 | internal void Close() |
@@ -1008,7 +1007,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
1008 | public void SetWearable(int wearableId, AvatarWearable wearable) | 1007 | public void SetWearable(int wearableId, AvatarWearable wearable) |
1009 | { | 1008 | { |
1010 | m_wearables[wearableId] = wearable; | 1009 | m_wearables[wearableId] = wearable; |
1011 | SendOurAppearance( m_controllingClient ); | 1010 | SendOurAppearance(m_controllingClient); |
1012 | } | 1011 | } |
1013 | } | 1012 | } |
1014 | } | 1013 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Environment/Scenes/Scripting/IScriptHost.cs b/OpenSim/Region/Environment/Scenes/Scripting/IScriptHost.cs index 01c1d65..cb000c4 100644 --- a/OpenSim/Region/Environment/Scenes/Scripting/IScriptHost.cs +++ b/OpenSim/Region/Environment/Scenes/Scripting/IScriptHost.cs | |||
@@ -43,4 +43,4 @@ namespace OpenSim.Region.Environment.Scenes.Scripting | |||
43 | LLVector3 AbsolutePosition { get; } | 43 | LLVector3 AbsolutePosition { get; } |
44 | void SetText(string text, Vector3 color, double alpha); | 44 | void SetText(string text, Vector3 color, double alpha); |
45 | } | 45 | } |
46 | } | 46 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Environment/Scenes/Scripting/NullScriptHost.cs b/OpenSim/Region/Environment/Scenes/Scripting/NullScriptHost.cs index 2fb3e78..c1bf72b 100644 --- a/OpenSim/Region/Environment/Scenes/Scripting/NullScriptHost.cs +++ b/OpenSim/Region/Environment/Scenes/Scripting/NullScriptHost.cs | |||
@@ -85,4 +85,4 @@ namespace OpenSim.Region.Environment.Scenes.Scripting | |||
85 | Console.WriteLine("Tried to SetText [{0}] on NullScriptHost", text); | 85 | Console.WriteLine("Tried to SetText [{0}] on NullScriptHost", text); |
86 | } | 86 | } |
87 | } | 87 | } |
88 | } | 88 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Environment/StorageManager.cs b/OpenSim/Region/Environment/StorageManager.cs index 42048ea..11f0ce0 100644 --- a/OpenSim/Region/Environment/StorageManager.cs +++ b/OpenSim/Region/Environment/StorageManager.cs | |||
@@ -78,4 +78,4 @@ namespace OpenSim.Region.Environment | |||
78 | //TODO: Add checking and warning to make sure it initialised. | 78 | //TODO: Add checking and warning to make sure it initialised. |
79 | } | 79 | } |
80 | } | 80 | } |
81 | } | 81 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Environment/Types/BasicQuadTreeNode.cs b/OpenSim/Region/Environment/Types/BasicQuadTreeNode.cs index 942ec4d..70b957e 100644 --- a/OpenSim/Region/Environment/Types/BasicQuadTreeNode.cs +++ b/OpenSim/Region/Environment/Types/BasicQuadTreeNode.cs | |||
@@ -44,7 +44,8 @@ namespace OpenSim.Region.Environment.Types | |||
44 | //private int m_quadNumber; | 44 | //private int m_quadNumber; |
45 | private string m_quadID; | 45 | private string m_quadID; |
46 | 46 | ||
47 | public BasicQuadTreeNode(BasicQuadTreeNode parent, string quadID, short leftX, short leftY, short width, short height) | 47 | public BasicQuadTreeNode(BasicQuadTreeNode parent, string quadID, short leftX, short leftY, short width, |
48 | short height) | ||
48 | { | 49 | { |
49 | m_parent = parent; | 50 | m_parent = parent; |
50 | m_quadID = quadID; | 51 | m_quadID = quadID; |
@@ -66,9 +67,9 @@ namespace OpenSim.Region.Environment.Types | |||
66 | } | 67 | } |
67 | else | 68 | else |
68 | { | 69 | { |
69 | if (obj.AbsolutePosition.X < (m_leftX + (m_width / 2))) | 70 | if (obj.AbsolutePosition.X < (m_leftX + (m_width/2))) |
70 | { | 71 | { |
71 | if (obj.AbsolutePosition.Y < (m_leftY + (m_height / 2))) | 72 | if (obj.AbsolutePosition.Y < (m_leftY + (m_height/2))) |
72 | { | 73 | { |
73 | m_childNodes[0].AddObject(obj); | 74 | m_childNodes[0].AddObject(obj); |
74 | } | 75 | } |
@@ -79,7 +80,7 @@ namespace OpenSim.Region.Environment.Types | |||
79 | } | 80 | } |
80 | else | 81 | else |
81 | { | 82 | { |
82 | if (obj.AbsolutePosition.Y < (m_leftY + (m_height / 2))) | 83 | if (obj.AbsolutePosition.Y < (m_leftY + (m_height/2))) |
83 | { | 84 | { |
84 | m_childNodes[1].AddObject(obj); | 85 | m_childNodes[1].AddObject(obj); |
85 | } | 86 | } |
@@ -96,10 +97,18 @@ namespace OpenSim.Region.Environment.Types | |||
96 | if (m_childNodes == null) | 97 | if (m_childNodes == null) |
97 | { | 98 | { |
98 | m_childNodes = new BasicQuadTreeNode[4]; | 99 | m_childNodes = new BasicQuadTreeNode[4]; |
99 | m_childNodes[0] = new BasicQuadTreeNode(this, m_quadID + "1/", m_leftX, m_leftY, (short)(m_width / 2), (short)(m_height / 2)); | 100 | m_childNodes[0] = |
100 | m_childNodes[1] = new BasicQuadTreeNode(this, m_quadID + "2/", (short)(m_leftX + (m_width / 2)), m_leftY, (short)(m_width / 2), (short)(m_height / 2)); | 101 | new BasicQuadTreeNode(this, m_quadID + "1/", m_leftX, m_leftY, (short) (m_width/2), |
101 | m_childNodes[2] = new BasicQuadTreeNode(this, m_quadID + "3/", m_leftX, (short)(m_leftY + (m_height / 2)), (short)(m_width / 2), (short)(m_height / 2)); | 102 | (short) (m_height/2)); |
102 | m_childNodes[3] = new BasicQuadTreeNode(this, m_quadID + "4/", (short)(m_leftX + (m_width / 2)), (short)(m_height + (m_height / 2)), (short)(m_width / 2), (short)(m_height / 2)); | 103 | m_childNodes[1] = |
104 | new BasicQuadTreeNode(this, m_quadID + "2/", (short) (m_leftX + (m_width/2)), m_leftY, | ||
105 | (short) (m_width/2), (short) (m_height/2)); | ||
106 | m_childNodes[2] = | ||
107 | new BasicQuadTreeNode(this, m_quadID + "3/", m_leftX, (short) (m_leftY + (m_height/2)), | ||
108 | (short) (m_width/2), (short) (m_height/2)); | ||
109 | m_childNodes[3] = | ||
110 | new BasicQuadTreeNode(this, m_quadID + "4/", (short) (m_leftX + (m_width/2)), | ||
111 | (short) (m_height + (m_height/2)), (short) (m_width/2), (short) (m_height/2)); | ||
103 | } | 112 | } |
104 | else | 113 | else |
105 | { | 114 | { |
@@ -118,9 +127,9 @@ namespace OpenSim.Region.Environment.Types | |||
118 | } | 127 | } |
119 | else | 128 | else |
120 | { | 129 | { |
121 | if (x < m_leftX + (m_width / 2)) | 130 | if (x < m_leftX + (m_width/2)) |
122 | { | 131 | { |
123 | if (y < m_leftY + (m_height / 2)) | 132 | if (y < m_leftY + (m_height/2)) |
124 | { | 133 | { |
125 | return m_childNodes[0].GetObjectsFrom(x, y); | 134 | return m_childNodes[0].GetObjectsFrom(x, y); |
126 | } | 135 | } |
@@ -131,7 +140,7 @@ namespace OpenSim.Region.Environment.Types | |||
131 | } | 140 | } |
132 | else | 141 | else |
133 | { | 142 | { |
134 | if (y < m_leftY + (m_height / 2)) | 143 | if (y < m_leftY + (m_height/2)) |
135 | { | 144 | { |
136 | return m_childNodes[1].GetObjectsFrom(x, y); | 145 | return m_childNodes[1].GetObjectsFrom(x, y); |
137 | } | 146 | } |
@@ -172,9 +181,9 @@ namespace OpenSim.Region.Environment.Types | |||
172 | } | 181 | } |
173 | else | 182 | else |
174 | { | 183 | { |
175 | if (x < m_leftX + (m_width / 2)) | 184 | if (x < m_leftX + (m_width/2)) |
176 | { | 185 | { |
177 | if (y < m_leftY + (m_height / 2)) | 186 | if (y < m_leftY + (m_height/2)) |
178 | { | 187 | { |
179 | return m_childNodes[0].GetNodeID(x, y); | 188 | return m_childNodes[0].GetNodeID(x, y); |
180 | } | 189 | } |
@@ -185,7 +194,7 @@ namespace OpenSim.Region.Environment.Types | |||
185 | } | 194 | } |
186 | else | 195 | else |
187 | { | 196 | { |
188 | if (y < m_leftY + (m_height / 2)) | 197 | if (y < m_leftY + (m_height/2)) |
189 | { | 198 | { |
190 | return m_childNodes[1].GetNodeID(x, y); | 199 | return m_childNodes[1].GetNodeID(x, y); |
191 | } | 200 | } |
@@ -211,7 +220,8 @@ namespace OpenSim.Region.Environment.Types | |||
211 | List<SceneObjectGroup> outBounds = new List<SceneObjectGroup>(); | 220 | List<SceneObjectGroup> outBounds = new List<SceneObjectGroup>(); |
212 | foreach (SceneObjectGroup group in m_objects) | 221 | foreach (SceneObjectGroup group in m_objects) |
213 | { | 222 | { |
214 | 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)))) | 223 | if (((group.AbsolutePosition.X > m_leftX) && (group.AbsolutePosition.X < (m_leftX + m_width))) && |
224 | ((group.AbsolutePosition.Y > m_leftY) && (group.AbsolutePosition.Y < (m_leftY + m_height)))) | ||
215 | { | 225 | { |
216 | //still in bounds | 226 | //still in bounds |
217 | } | 227 | } |
@@ -235,7 +245,8 @@ namespace OpenSim.Region.Environment.Types | |||
235 | 245 | ||
236 | public void PassUp(SceneObjectGroup group) | 246 | public void PassUp(SceneObjectGroup group) |
237 | { | 247 | { |
238 | 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)))) | 248 | if (((group.AbsolutePosition.X > m_leftX) && (group.AbsolutePosition.X < (m_leftX + m_width))) && |
249 | ((group.AbsolutePosition.Y > m_leftY) && (group.AbsolutePosition.Y < (m_leftY + m_height)))) | ||
239 | { | 250 | { |
240 | AddObject(group); | 251 | AddObject(group); |
241 | } | 252 | } |
@@ -255,4 +266,4 @@ namespace OpenSim.Region.Environment.Types | |||
255 | return retVal; | 266 | return retVal; |
256 | } | 267 | } |
257 | } | 268 | } |
258 | } | 269 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Environment/Types/UpdateQueue.cs b/OpenSim/Region/Environment/Types/UpdateQueue.cs index 442e9d5..0648476 100644 --- a/OpenSim/Region/Environment/Types/UpdateQueue.cs +++ b/OpenSim/Region/Environment/Types/UpdateQueue.cs | |||
@@ -76,4 +76,4 @@ namespace OpenSim.Region.Environment.Types | |||
76 | return part; | 76 | return part; |
77 | } | 77 | } |
78 | } | 78 | } |
79 | } | 79 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Examples/SimpleApp/ComplexObject.cs b/OpenSim/Region/Examples/SimpleApp/ComplexObject.cs index f5a080f..bfd9d06 100644 --- a/OpenSim/Region/Examples/SimpleApp/ComplexObject.cs +++ b/OpenSim/Region/Examples/SimpleApp/ComplexObject.cs | |||
@@ -26,60 +26,69 @@ | |||
26 | * | 26 | * |
27 | */ | 27 | */ |
28 | 28 | ||
29 | using System; | ||
30 | using System.Collections.Generic; | ||
31 | using System.Text; | ||
32 | using OpenSim.Region.Environment.Scenes; | ||
33 | using Axiom.Math; | ||
34 | using libsecondlife; | 29 | using libsecondlife; |
35 | using OpenSim.Framework; | 30 | using OpenSim.Framework; |
36 | using OpenSim.Framework.Interfaces; | 31 | using OpenSim.Region.Environment.Scenes; |
37 | 32 | ||
38 | namespace SimpleApp | 33 | namespace SimpleApp |
39 | { | 34 | { |
40 | public class ComplexObject : SceneObjectGroup | 35 | public class ComplexObject : SceneObjectGroup |
41 | { | 36 | { |
42 | private LLQuaternion m_rotationDirection; | 37 | private LLQuaternion m_rotationDirection; |
43 | 38 | ||
44 | private class RotatingWheel : SceneObjectPart | 39 | private class RotatingWheel : SceneObjectPart |
45 | { | 40 | { |
46 | private LLQuaternion m_rotationDirection; | 41 | private LLQuaternion m_rotationDirection; |
47 | 42 | ||
48 | public RotatingWheel(ulong regionHandle, SceneObjectGroup parent, LLUUID ownerID, uint localID, LLVector3 groupPosition, LLVector3 offsetPosition, LLQuaternion rotationDirection) | 43 | public RotatingWheel(ulong regionHandle, SceneObjectGroup parent, LLUUID ownerID, uint localID, |
49 | : base(regionHandle, parent, ownerID, localID, new CylinderShape( 0.5f, 0.2f ), groupPosition, offsetPosition ) | 44 | LLVector3 groupPosition, LLVector3 offsetPosition, LLQuaternion rotationDirection) |
45 | : base( | ||
46 | regionHandle, parent, ownerID, localID, new CylinderShape(0.5f, 0.2f), groupPosition, offsetPosition | ||
47 | ) | ||
50 | { | 48 | { |
51 | m_rotationDirection = rotationDirection; | 49 | m_rotationDirection = rotationDirection; |
52 | } | 50 | } |
53 | 51 | ||
54 | public override void UpdateMovement() | 52 | public override void UpdateMovement() |
55 | { | 53 | { |
56 | UpdateRotation(RotationOffset * m_rotationDirection); | 54 | UpdateRotation(RotationOffset*m_rotationDirection); |
57 | } | 55 | } |
58 | } | 56 | } |
59 | 57 | ||
60 | public override void UpdateMovement() | 58 | public override void UpdateMovement() |
61 | { | 59 | { |
62 | UpdateGroupRotation(GroupRotation * m_rotationDirection); | 60 | UpdateGroupRotation(GroupRotation*m_rotationDirection); |
63 | 61 | ||
64 | base.UpdateMovement(); | 62 | base.UpdateMovement(); |
65 | } | 63 | } |
66 | 64 | ||
67 | 65 | ||
68 | 66 | public ComplexObject(Scene scene, ulong regionHandle, LLUUID ownerID, uint localID, LLVector3 pos) | |
69 | public ComplexObject(Scene scene, ulong regionHandle, LLUUID ownerID, uint localID, LLVector3 pos ) | 67 | : base(scene, regionHandle, ownerID, localID, pos, BoxShape.Default) |
70 | : base(scene, regionHandle, ownerID, localID, pos, BoxShape.Default ) | ||
71 | { | 68 | { |
72 | m_rotationDirection = new LLQuaternion(0.05f, 0.1f, 0.15f); | 69 | m_rotationDirection = new LLQuaternion(0.05f, 0.1f, 0.15f); |
73 | 70 | ||
74 | AddPart(new RotatingWheel(regionHandle, this, ownerID, scene.PrimIDAllocate(), pos, new LLVector3(0, 0, 0.75f), new LLQuaternion(0.05f,0,0))); | 71 | AddPart( |
75 | AddPart(new RotatingWheel(regionHandle, this, ownerID, scene.PrimIDAllocate(), pos, new LLVector3(0, 0, -0.75f), new LLQuaternion(-0.05f,0,0))); | 72 | new RotatingWheel(regionHandle, this, ownerID, scene.PrimIDAllocate(), pos, new LLVector3(0, 0, 0.75f), |
73 | new LLQuaternion(0.05f, 0, 0))); | ||
74 | AddPart( | ||
75 | new RotatingWheel(regionHandle, this, ownerID, scene.PrimIDAllocate(), pos, new LLVector3(0, 0, -0.75f), | ||
76 | new LLQuaternion(-0.05f, 0, 0))); | ||
77 | |||
78 | AddPart( | ||
79 | new RotatingWheel(regionHandle, this, ownerID, scene.PrimIDAllocate(), pos, new LLVector3(0, 0.75f, 0), | ||
80 | new LLQuaternion(0.5f, 0, 0.05f))); | ||
81 | AddPart( | ||
82 | new RotatingWheel(regionHandle, this, ownerID, scene.PrimIDAllocate(), pos, new LLVector3(0, -0.75f, 0), | ||
83 | new LLQuaternion(-0.5f, 0, -0.05f))); | ||
76 | 84 | ||
77 | AddPart(new RotatingWheel(regionHandle, this, ownerID, scene.PrimIDAllocate(), pos, new LLVector3(0, 0.75f,0), new LLQuaternion(0.5f, 0, 0.05f))); | 85 | AddPart( |
78 | AddPart(new RotatingWheel(regionHandle, this, ownerID, scene.PrimIDAllocate(), pos, new LLVector3(0, -0.75f,0), new LLQuaternion(-0.5f, 0, -0.05f))); | 86 | new RotatingWheel(regionHandle, this, ownerID, scene.PrimIDAllocate(), pos, new LLVector3(0.75f, 0, 0), |
87 | new LLQuaternion(0, 0.5f, 0.05f))); | ||
88 | AddPart( | ||
89 | new RotatingWheel(regionHandle, this, ownerID, scene.PrimIDAllocate(), pos, new LLVector3(-0.75f, 0, 0), | ||
90 | new LLQuaternion(0, -0.5f, -0.05f))); | ||
79 | 91 | ||
80 | AddPart(new RotatingWheel(regionHandle, this, ownerID, scene.PrimIDAllocate(), pos, new LLVector3(0.75f, 0, 0), new LLQuaternion(0, 0.5f, 0.05f))); | ||
81 | AddPart(new RotatingWheel(regionHandle, this, ownerID, scene.PrimIDAllocate(), pos, new LLVector3(-0.75f, 0, 0), new LLQuaternion(0, -0.5f, -0.05f))); | ||
82 | |||
83 | UpdateParentIDs(); | 92 | UpdateParentIDs(); |
84 | } | 93 | } |
85 | 94 | ||
@@ -88,12 +97,12 @@ namespace SimpleApp | |||
88 | m_parts.Remove(part.UUID); | 97 | m_parts.Remove(part.UUID); |
89 | remoteClient.SendKillObject(m_regionHandle, part.LocalID); | 98 | remoteClient.SendKillObject(m_regionHandle, part.LocalID); |
90 | remoteClient.AddMoney(1); | 99 | remoteClient.AddMoney(1); |
91 | remoteClient.SendChatMessage("Poof!", 1, this.AbsolutePosition, "Party Party", LLUUID.Zero); | 100 | remoteClient.SendChatMessage("Poof!", 1, AbsolutePosition, "Party Party", LLUUID.Zero); |
92 | } | 101 | } |
93 | 102 | ||
94 | public override void OnGrabGroup( LLVector3 offsetPos, IClientAPI remoteClient) | 103 | public override void OnGrabGroup(LLVector3 offsetPos, IClientAPI remoteClient) |
95 | { | 104 | { |
96 | if( m_parts.Count == 1 ) | 105 | if (m_parts.Count == 1) |
97 | { | 106 | { |
98 | m_parts.Remove(m_rootPart.UUID); | 107 | m_parts.Remove(m_rootPart.UUID); |
99 | m_scene.RemoveEntity(this); | 108 | m_scene.RemoveEntity(this); |
@@ -103,4 +112,4 @@ namespace SimpleApp | |||
103 | } | 112 | } |
104 | } | 113 | } |
105 | } | 114 | } |
106 | } | 115 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Examples/SimpleApp/CpuCounterObject.cs b/OpenSim/Region/Examples/SimpleApp/CpuCounterObject.cs index 0f833ea..cbc4dea 100644 --- a/OpenSim/Region/Examples/SimpleApp/CpuCounterObject.cs +++ b/OpenSim/Region/Examples/SimpleApp/CpuCounterObject.cs | |||
@@ -27,37 +27,34 @@ | |||
27 | */ | 27 | */ |
28 | 28 | ||
29 | using System; | 29 | using System; |
30 | using System.Collections.Generic; | 30 | using System.Diagnostics; |
31 | using System.Text; | ||
32 | using OpenSim.Region.Environment.Scenes; | ||
33 | using libsecondlife; | 31 | using libsecondlife; |
34 | using OpenSim.Framework; | 32 | using OpenSim.Framework; |
35 | using System.Timers; | 33 | using OpenSim.Region.Environment.Scenes; |
36 | using System.Diagnostics; | ||
37 | 34 | ||
38 | namespace SimpleApp | 35 | namespace SimpleApp |
39 | { | 36 | { |
40 | public class CpuCounterObject : SceneObjectGroup | 37 | public class CpuCounterObject : SceneObjectGroup |
41 | { | 38 | { |
42 | private PerformanceCounter m_counter; | 39 | private PerformanceCounter m_counter; |
43 | 40 | ||
44 | public CpuCounterObject(Scene world, ulong regionHandle, LLUUID ownerID, uint localID, LLVector3 pos ) | 41 | public CpuCounterObject(Scene world, ulong regionHandle, LLUUID ownerID, uint localID, LLVector3 pos) |
45 | : base(world, regionHandle, ownerID, localID, pos, BoxShape.Default ) | 42 | : base(world, regionHandle, ownerID, localID, pos, BoxShape.Default) |
46 | { | 43 | { |
47 | String objectName = "Processor"; | 44 | String objectName = "Processor"; |
48 | String counterName = "% Processor Time"; | 45 | String counterName = "% Processor Time"; |
49 | String instanceName = "_Total"; | 46 | String instanceName = "_Total"; |
50 | 47 | ||
51 | m_counter = new PerformanceCounter(objectName, counterName, instanceName); | 48 | m_counter = new PerformanceCounter(objectName, counterName, instanceName); |
52 | } | 49 | } |
53 | 50 | ||
54 | public override void UpdateMovement( ) | 51 | public override void UpdateMovement() |
55 | { | 52 | { |
56 | float cpu = m_counter.NextValue() / 40f; | 53 | float cpu = m_counter.NextValue()/40f; |
57 | LLVector3 size = new LLVector3(cpu, cpu, cpu); | 54 | LLVector3 size = new LLVector3(cpu, cpu, cpu); |
58 | //rootPrimitive.ResizeGoup( size ); | 55 | //rootPrimitive.ResizeGoup( size ); |
59 | 56 | ||
60 | base.UpdateMovement(); | 57 | base.UpdateMovement(); |
61 | } | 58 | } |
62 | } | 59 | } |
63 | } | 60 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Examples/SimpleApp/FileSystemObject.cs b/OpenSim/Region/Examples/SimpleApp/FileSystemObject.cs index 746340f..7b1420b 100644 --- a/OpenSim/Region/Examples/SimpleApp/FileSystemObject.cs +++ b/OpenSim/Region/Examples/SimpleApp/FileSystemObject.cs | |||
@@ -27,14 +27,10 @@ | |||
27 | */ | 27 | */ |
28 | 28 | ||
29 | using System; | 29 | using System; |
30 | using System.Collections.Generic; | 30 | using System.IO; |
31 | using System.Text; | ||
32 | using OpenSim.Region.Environment.Scenes; | ||
33 | using libsecondlife; | 31 | using libsecondlife; |
34 | using OpenSim.Framework; | 32 | using OpenSim.Framework; |
35 | using System.Timers; | 33 | using OpenSim.Region.Environment.Scenes; |
36 | using System.Diagnostics; | ||
37 | using System.IO; | ||
38 | 34 | ||
39 | namespace SimpleApp | 35 | namespace SimpleApp |
40 | { | 36 | { |
@@ -43,9 +39,7 @@ namespace SimpleApp | |||
43 | public FileSystemObject(Scene world, FileInfo fileInfo, LLVector3 pos) | 39 | public FileSystemObject(Scene world, FileInfo fileInfo, LLVector3 pos) |
44 | : base(world, world.RegionInfo.RegionHandle, LLUUID.Zero, world.NextLocalId, pos, BoxShape.Default) | 40 | : base(world, world.RegionInfo.RegionHandle, LLUUID.Zero, world.NextLocalId, pos, BoxShape.Default) |
45 | { | 41 | { |
46 | 42 | float size = (float) Math.Pow((double) fileInfo.Length, (double) 1/3)/5; | |
47 | |||
48 | float size = (float)Math.Pow((double)fileInfo.Length, (double)1 / 3) / 5; | ||
49 | // rootPrimitive.ResizeGoup(new LLVector3(size, size, size)); | 43 | // rootPrimitive.ResizeGoup(new LLVector3(size, size, size)); |
50 | Text = fileInfo.Name; | 44 | Text = fileInfo.Name; |
51 | ScheduleGroupForFullUpdate(); | 45 | ScheduleGroupForFullUpdate(); |
@@ -56,4 +50,4 @@ namespace SimpleApp | |||
56 | base.Update(); | 50 | base.Update(); |
57 | } | 51 | } |
58 | } | 52 | } |
59 | } | 53 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Examples/SimpleApp/MyNpcCharacter.cs b/OpenSim/Region/Examples/SimpleApp/MyNpcCharacter.cs index 03e0f98..f7fdbb5 100644 --- a/OpenSim/Region/Examples/SimpleApp/MyNpcCharacter.cs +++ b/OpenSim/Region/Examples/SimpleApp/MyNpcCharacter.cs | |||
@@ -26,16 +26,14 @@ | |||
26 | * | 26 | * |
27 | */ | 27 | */ |
28 | 28 | ||
29 | using System; | ||
29 | using System.Collections.Generic; | 30 | using System.Collections.Generic; |
30 | using System.Net; | 31 | using System.Net; |
31 | using System.Text; | 32 | using System.Text; |
32 | using libsecondlife; | 33 | using libsecondlife; |
33 | using libsecondlife.Packets; | 34 | using libsecondlife.Packets; |
34 | using OpenSim.Framework.Interfaces; | ||
35 | using OpenSim.Framework; | ||
36 | using OpenSim.Framework; | 35 | using OpenSim.Framework; |
37 | using OpenSim.Region.Environment.Scenes; | 36 | using OpenSim.Region.Environment.Scenes; |
38 | using System; | ||
39 | 37 | ||
40 | namespace SimpleApp | 38 | namespace SimpleApp |
41 | { | 39 | { |
@@ -126,13 +124,15 @@ namespace SimpleApp | |||
126 | #pragma warning restore 67 | 124 | #pragma warning restore 67 |
127 | 125 | ||
128 | private LLUUID myID = LLUUID.Random(); | 126 | private LLUUID myID = LLUUID.Random(); |
129 | public MyNpcCharacter( EventManager eventManager ) | 127 | |
128 | public MyNpcCharacter(EventManager eventManager) | ||
130 | { | 129 | { |
131 | // startPos = new LLVector3(128, (float)(Util.RandomClass.NextDouble()*100), 2); | 130 | // startPos = new LLVector3(128, (float)(Util.RandomClass.NextDouble()*100), 2); |
132 | eventManager.OnFrame += Update; | 131 | eventManager.OnFrame += Update; |
133 | } | 132 | } |
134 | 133 | ||
135 | private LLVector3 startPos = new LLVector3(128, 128,2); | 134 | private LLVector3 startPos = new LLVector3(128, 128, 2); |
135 | |||
136 | public virtual LLVector3 StartPos | 136 | public virtual LLVector3 StartPos |
137 | { | 137 | { |
138 | get { return startPos; } | 138 | get { return startPos; } |
@@ -155,92 +155,218 @@ namespace SimpleApp | |||
155 | } | 155 | } |
156 | 156 | ||
157 | private string lastName = "NPC" + Util.RandomClass.Next(1, 1000); | 157 | private string lastName = "NPC" + Util.RandomClass.Next(1, 1000); |
158 | |||
158 | public virtual string LastName | 159 | public virtual string LastName |
159 | { | 160 | { |
160 | get { return lastName; } | 161 | get { return lastName; } |
161 | } | 162 | } |
162 | 163 | ||
163 | public virtual void OutPacket(Packet newPack) { } | 164 | public virtual void OutPacket(Packet newPack) |
164 | public virtual void SendWearables(AvatarWearable[] wearables) { } | 165 | { |
165 | public virtual void SendAppearance(LLUUID agentID, byte[] visualParams, byte[] textureEntry) { } | 166 | } |
166 | public virtual void SendStartPingCheck(byte seq) { } | 167 | |
167 | public virtual void SendKillObject(ulong regionHandle, uint localID) { } | 168 | public virtual void SendWearables(AvatarWearable[] wearables) |
168 | public virtual void SendAnimation(LLUUID animID, int seq, LLUUID sourceAgentId) { } | 169 | { |
169 | public virtual void SendChatMessage(string message, byte type, LLVector3 fromPos, string fromName, LLUUID fromAgentID) { } | 170 | } |
170 | public virtual void SendChatMessage(byte[] message, byte type, LLVector3 fromPos, string fromName, LLUUID fromAgentID) { } | 171 | |
171 | public virtual void SendInstantMessage(LLUUID fromAgent, LLUUID fromAgentSession, string message, LLUUID toAgent, LLUUID imSessionID, string fromName, byte dialog, uint timeStamp) { } | 172 | public virtual void SendAppearance(LLUUID agentID, byte[] visualParams, byte[] textureEntry) |
172 | public virtual void SendLayerData(float[] map) { } | 173 | { |
173 | public virtual void SendLayerData(int px, int py, float[] map) { } | 174 | } |
174 | public virtual void MoveAgentIntoRegion(RegionInfo regInfo, LLVector3 pos, LLVector3 look) { } | 175 | |
175 | public virtual void InformClientOfNeighbour(ulong neighbourHandle, IPEndPoint neighbourExternalEndPoint) { } | 176 | public virtual void SendStartPingCheck(byte seq) |
176 | public virtual AgentCircuitData RequestClientInfo() { return new AgentCircuitData(); } | 177 | { |
177 | public virtual void CrossRegion(ulong newRegionHandle, LLVector3 pos, LLVector3 lookAt, IPEndPoint newRegionExternalEndPoint, string capsURL) { } | 178 | } |
178 | public virtual void SendMapBlock(List<MapBlockData> mapBlocks) { } | 179 | |
179 | public virtual void SendLocalTeleport(LLVector3 position, LLVector3 lookAt, uint flags) { } | 180 | public virtual void SendKillObject(ulong regionHandle, uint localID) |
180 | public virtual void SendRegionTeleport(ulong regionHandle, byte simAccess, IPEndPoint regionExternalEndPoint, uint locationID, uint flags, string capsURL) { } | 181 | { |
181 | public virtual void SendTeleportCancel() { } | 182 | } |
182 | public virtual void SendTeleportLocationStart() { } | 183 | |
183 | public virtual void SendMoneyBalance(LLUUID transaction, bool success, byte[] description, int balance) { } | 184 | public virtual void SendAnimation(LLUUID animID, int seq, LLUUID sourceAgentId) |
184 | 185 | { | |
185 | public virtual void SendAvatarData(ulong regionHandle, string firstName, string lastName, LLUUID avatarID, uint avatarLocalID, LLVector3 Pos, byte[] textureEntry, uint parentID) { } | 186 | } |
186 | public virtual void SendAvatarTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID, LLVector3 position, LLVector3 velocity, LLQuaternion rotation) { } | 187 | |
187 | public virtual void SendCoarseLocationUpdate(List<LLVector3> CoarseLocations) { } | 188 | public virtual void SendChatMessage(string message, byte type, LLVector3 fromPos, string fromName, |
188 | 189 | LLUUID fromAgentID) | |
189 | public virtual void AttachObject(uint localID, LLQuaternion rotation, byte attachPoint) { } | 190 | { |
190 | 191 | } | |
191 | public virtual void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimitiveBaseShape primShape, LLVector3 pos, uint flags, LLUUID objectID, LLUUID ownerID, string text, uint parentID, byte[] particleSystem, LLQuaternion rotation) { } | 192 | |
192 | public virtual void SendPrimTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID, LLVector3 position, LLQuaternion rotation) { } | 193 | public virtual void SendChatMessage(byte[] message, byte type, LLVector3 fromPos, string fromName, |
193 | 194 | LLUUID fromAgentID) | |
194 | public virtual void SendInventoryFolderDetails(LLUUID ownerID, LLUUID folderID, List<InventoryItemBase> items) { } | 195 | { |
195 | public virtual void SendInventoryItemDetails(LLUUID ownerID, InventoryItemBase item) { } | 196 | } |
196 | public virtual void SendInventoryItemUpdate(InventoryItemBase Item) { } | 197 | |
197 | public virtual void SendRemoveInventoryItem(LLUUID itemID) { } | 198 | public virtual void SendInstantMessage(LLUUID fromAgent, LLUUID fromAgentSession, string message, LLUUID toAgent, |
198 | public virtual void SendTaskInventory(LLUUID taskID, short serial, byte[] fileName) { } | 199 | LLUUID imSessionID, string fromName, byte dialog, uint timeStamp) |
199 | public virtual void SendXferPacket(ulong xferID, uint packet, byte[] data) { } | 200 | { |
200 | 201 | } | |
201 | public virtual void SendNameReply(LLUUID profileId, string firstname, string lastname) { } | 202 | |
202 | 203 | public virtual void SendLayerData(float[] map) | |
203 | public virtual void SendPreLoadSound(LLUUID objectID, LLUUID ownerID, LLUUID soundID) { } | 204 | { |
204 | public virtual void SendPlayAttachedSound(LLUUID soundID, LLUUID objectID, LLUUID ownerID, float gain, byte flags) { } | 205 | } |
205 | 206 | ||
206 | public void SendAlertMessage(string message) { } | 207 | public virtual void SendLayerData(int px, int py, float[] map) |
207 | public void SendAgentAlertMessage(string message, bool modal) { } | 208 | { |
208 | public void SendLoadURL(string objectname, LLUUID objectID, LLUUID ownerID, bool groupOwned, string message, string url) { } | 209 | } |
210 | |||
211 | public virtual void MoveAgentIntoRegion(RegionInfo regInfo, LLVector3 pos, LLVector3 look) | ||
212 | { | ||
213 | } | ||
214 | |||
215 | public virtual void InformClientOfNeighbour(ulong neighbourHandle, IPEndPoint neighbourExternalEndPoint) | ||
216 | { | ||
217 | } | ||
218 | |||
219 | public virtual AgentCircuitData RequestClientInfo() | ||
220 | { | ||
221 | return new AgentCircuitData(); | ||
222 | } | ||
223 | |||
224 | public virtual void CrossRegion(ulong newRegionHandle, LLVector3 pos, LLVector3 lookAt, | ||
225 | IPEndPoint newRegionExternalEndPoint, string capsURL) | ||
226 | { | ||
227 | } | ||
228 | |||
229 | public virtual void SendMapBlock(List<MapBlockData> mapBlocks) | ||
230 | { | ||
231 | } | ||
232 | |||
233 | public virtual void SendLocalTeleport(LLVector3 position, LLVector3 lookAt, uint flags) | ||
234 | { | ||
235 | } | ||
236 | |||
237 | public virtual void SendRegionTeleport(ulong regionHandle, byte simAccess, IPEndPoint regionExternalEndPoint, | ||
238 | uint locationID, uint flags, string capsURL) | ||
239 | { | ||
240 | } | ||
241 | |||
242 | public virtual void SendTeleportCancel() | ||
243 | { | ||
244 | } | ||
245 | |||
246 | public virtual void SendTeleportLocationStart() | ||
247 | { | ||
248 | } | ||
249 | |||
250 | public virtual void SendMoneyBalance(LLUUID transaction, bool success, byte[] description, int balance) | ||
251 | { | ||
252 | } | ||
253 | |||
254 | public virtual void SendAvatarData(ulong regionHandle, string firstName, string lastName, LLUUID avatarID, | ||
255 | uint avatarLocalID, LLVector3 Pos, byte[] textureEntry, uint parentID) | ||
256 | { | ||
257 | } | ||
258 | |||
259 | public virtual void SendAvatarTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID, | ||
260 | LLVector3 position, LLVector3 velocity, LLQuaternion rotation) | ||
261 | { | ||
262 | } | ||
263 | |||
264 | public virtual void SendCoarseLocationUpdate(List<LLVector3> CoarseLocations) | ||
265 | { | ||
266 | } | ||
267 | |||
268 | public virtual void AttachObject(uint localID, LLQuaternion rotation, byte attachPoint) | ||
269 | { | ||
270 | } | ||
271 | |||
272 | public virtual void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, | ||
273 | PrimitiveBaseShape primShape, LLVector3 pos, uint flags, | ||
274 | LLUUID objectID, LLUUID ownerID, string text, uint parentID, | ||
275 | byte[] particleSystem, LLQuaternion rotation) | ||
276 | { | ||
277 | } | ||
278 | |||
279 | public virtual void SendPrimTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID, | ||
280 | LLVector3 position, LLQuaternion rotation) | ||
281 | { | ||
282 | } | ||
283 | |||
284 | public virtual void SendInventoryFolderDetails(LLUUID ownerID, LLUUID folderID, List<InventoryItemBase> items) | ||
285 | { | ||
286 | } | ||
287 | |||
288 | public virtual void SendInventoryItemDetails(LLUUID ownerID, InventoryItemBase item) | ||
289 | { | ||
290 | } | ||
291 | |||
292 | public virtual void SendInventoryItemUpdate(InventoryItemBase Item) | ||
293 | { | ||
294 | } | ||
295 | |||
296 | public virtual void SendRemoveInventoryItem(LLUUID itemID) | ||
297 | { | ||
298 | } | ||
299 | |||
300 | public virtual void SendTaskInventory(LLUUID taskID, short serial, byte[] fileName) | ||
301 | { | ||
302 | } | ||
303 | |||
304 | public virtual void SendXferPacket(ulong xferID, uint packet, byte[] data) | ||
305 | { | ||
306 | } | ||
307 | |||
308 | public virtual void SendNameReply(LLUUID profileId, string firstname, string lastname) | ||
309 | { | ||
310 | } | ||
311 | |||
312 | public virtual void SendPreLoadSound(LLUUID objectID, LLUUID ownerID, LLUUID soundID) | ||
313 | { | ||
314 | } | ||
315 | |||
316 | public virtual void SendPlayAttachedSound(LLUUID soundID, LLUUID objectID, LLUUID ownerID, float gain, | ||
317 | byte flags) | ||
318 | { | ||
319 | } | ||
320 | |||
321 | public void SendAlertMessage(string message) | ||
322 | { | ||
323 | } | ||
324 | |||
325 | public void SendAgentAlertMessage(string message, bool modal) | ||
326 | { | ||
327 | } | ||
328 | |||
329 | public void SendLoadURL(string objectname, LLUUID objectID, LLUUID ownerID, bool groupOwned, string message, | ||
330 | string url) | ||
331 | { | ||
332 | } | ||
209 | 333 | ||
210 | public virtual void SendRegionHandshake(RegionInfo regionInfo) | 334 | public virtual void SendRegionHandshake(RegionInfo regionInfo) |
211 | { | 335 | { |
212 | if (OnRegionHandShakeReply != null) | 336 | if (OnRegionHandShakeReply != null) |
213 | { | 337 | { |
214 | this.OnRegionHandShakeReply(this); | 338 | OnRegionHandShakeReply(this); |
215 | } | 339 | } |
216 | 340 | ||
217 | if (OnCompleteMovementToRegion != null) | 341 | if (OnCompleteMovementToRegion != null) |
218 | { | 342 | { |
219 | this.OnCompleteMovementToRegion(); | 343 | OnCompleteMovementToRegion(); |
220 | } | 344 | } |
221 | } | 345 | } |
222 | 346 | ||
223 | private void Update( ) | 347 | private void Update() |
224 | { | 348 | { |
225 | Encoding enc = Encoding.ASCII; | 349 | Encoding enc = Encoding.ASCII; |
226 | 350 | ||
227 | if (this.OnAgentUpdate != null) | 351 | if (OnAgentUpdate != null) |
228 | { | 352 | { |
229 | this.OnAgentUpdate(this, movementFlag, bodyDirection); | 353 | OnAgentUpdate(this, movementFlag, bodyDirection); |
230 | } | 354 | } |
231 | if (this.flyState == 0) | 355 | if (flyState == 0) |
232 | { | 356 | { |
233 | movementFlag = (uint)MainAvatar.ControlFlags.AGENT_CONTROL_FLY | (uint)MainAvatar.ControlFlags.AGENT_CONTROL_UP_NEG; | 357 | movementFlag = (uint) MainAvatar.ControlFlags.AGENT_CONTROL_FLY | |
358 | (uint) MainAvatar.ControlFlags.AGENT_CONTROL_UP_NEG; | ||
234 | flyState = 1; | 359 | flyState = 1; |
235 | } | 360 | } |
236 | else if (this.flyState == 1) | 361 | else if (flyState == 1) |
237 | { | 362 | { |
238 | movementFlag = (uint)MainAvatar.ControlFlags.AGENT_CONTROL_FLY | (uint)MainAvatar.ControlFlags.AGENT_CONTROL_UP_POS; | 363 | movementFlag = (uint) MainAvatar.ControlFlags.AGENT_CONTROL_FLY | |
364 | (uint) MainAvatar.ControlFlags.AGENT_CONTROL_UP_POS; | ||
239 | flyState = 2; | 365 | flyState = 2; |
240 | } | 366 | } |
241 | else | 367 | else |
242 | { | 368 | { |
243 | movementFlag = (uint)MainAvatar.ControlFlags.AGENT_CONTROL_FLY; | 369 | movementFlag = (uint) MainAvatar.ControlFlags.AGENT_CONTROL_FLY; |
244 | flyState = 0; | 370 | flyState = 0; |
245 | } | 371 | } |
246 | 372 | ||
@@ -251,15 +377,14 @@ namespace SimpleApp | |||
251 | ChatFromViewerArgs args = new ChatFromViewerArgs(); | 377 | ChatFromViewerArgs args = new ChatFromViewerArgs(); |
252 | args.Message = "Kinda quiet around here, isn't it?"; | 378 | args.Message = "Kinda quiet around here, isn't it?"; |
253 | args.Channel = 0; | 379 | args.Channel = 0; |
254 | args.From = this.FirstName + " " + this.LastName; | 380 | args.From = FirstName + " " + LastName; |
255 | args.Position = new LLVector3(128, 128, 26); | 381 | args.Position = new LLVector3(128, 128, 26); |
256 | args.Sender = this; | 382 | args.Sender = this; |
257 | args.Type = ChatTypeEnum.Shout; | 383 | args.Type = ChatTypeEnum.Shout; |
258 | 384 | ||
259 | this.OnChatFromViewer(this, args); | 385 | OnChatFromViewer(this, args); |
260 | } | 386 | } |
261 | count = -1; | 387 | count = -1; |
262 | |||
263 | } | 388 | } |
264 | 389 | ||
265 | count++; | 390 | count++; |
@@ -270,9 +395,19 @@ namespace SimpleApp | |||
270 | return false; | 395 | return false; |
271 | } | 396 | } |
272 | 397 | ||
273 | public void SendViewerTime(int phase) { } | 398 | public void SendViewerTime(int phase) |
274 | public void SendAvatarProperties(LLUUID avatarID, string aboutText, string bornOn, string charterMember, string flAbout, uint flags, LLUUID flImageID, LLUUID imageID, string profileURL, LLUUID partnerID) { } | 399 | { |
275 | public void SetDebug(int newDebug) { } | 400 | } |
401 | |||
402 | public void SendAvatarProperties(LLUUID avatarID, string aboutText, string bornOn, string charterMember, | ||
403 | string flAbout, uint flags, LLUUID flImageID, LLUUID imageID, string profileURL, | ||
404 | LLUUID partnerID) | ||
405 | { | ||
406 | } | ||
407 | |||
408 | public void SetDebug(int newDebug) | ||
409 | { | ||
410 | } | ||
276 | 411 | ||
277 | public void InPacket(Packet NewPack) | 412 | public void InPacket(Packet NewPack) |
278 | { | 413 | { |
@@ -281,22 +416,17 @@ namespace SimpleApp | |||
281 | public void Close() | 416 | public void Close() |
282 | { | 417 | { |
283 | } | 418 | } |
284 | 419 | ||
285 | private uint m_circuitCode; | 420 | private uint m_circuitCode; |
421 | |||
286 | public uint CircuitCode | 422 | public uint CircuitCode |
287 | { | 423 | { |
288 | get | 424 | get { return m_circuitCode; } |
289 | { | 425 | set { m_circuitCode = value; } |
290 | return m_circuitCode; | ||
291 | } | ||
292 | set | ||
293 | { | ||
294 | m_circuitCode = value; | ||
295 | } | ||
296 | } | 426 | } |
297 | 427 | ||
298 | public void SendLogoutPacket() | 428 | public void SendLogoutPacket() |
299 | { | 429 | { |
300 | } | 430 | } |
301 | } | 431 | } |
302 | } | 432 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Examples/SimpleApp/MyWorld.cs b/OpenSim/Region/Examples/SimpleApp/MyWorld.cs index 9a7b340..c616f6a 100644 --- a/OpenSim/Region/Examples/SimpleApp/MyWorld.cs +++ b/OpenSim/Region/Examples/SimpleApp/MyWorld.cs | |||
@@ -31,13 +31,9 @@ using libsecondlife; | |||
31 | using OpenSim.Framework; | 31 | using OpenSim.Framework; |
32 | using OpenSim.Framework.Communications; | 32 | using OpenSim.Framework.Communications; |
33 | using OpenSim.Framework.Communications.Cache; | 33 | using OpenSim.Framework.Communications.Cache; |
34 | using OpenSim.Framework.Interfaces; | ||
35 | using OpenSim.Framework.Servers; | 34 | using OpenSim.Framework.Servers; |
36 | using OpenSim.Framework; | ||
37 | |||
38 | using OpenSim.Region.Environment.Scenes; | ||
39 | using OpenSim.Region.Terrain; | ||
40 | using OpenSim.Region.Environment; | 35 | using OpenSim.Region.Environment; |
36 | using OpenSim.Region.Environment.Scenes; | ||
41 | using Avatar=OpenSim.Region.Environment.Scenes.ScenePresence; | 37 | using Avatar=OpenSim.Region.Environment.Scenes.ScenePresence; |
42 | 38 | ||
43 | namespace SimpleApp | 39 | namespace SimpleApp |
@@ -46,8 +42,10 @@ namespace SimpleApp | |||
46 | { | 42 | { |
47 | private List<ScenePresence> m_avatars; | 43 | private List<ScenePresence> m_avatars; |
48 | 44 | ||
49 | public MyWorld( RegionInfo regionInfo, AgentCircuitManager authen, CommunicationsManager commsMan, AssetCache assetCach, StorageManager storeMan, BaseHttpServer httpServer, ModuleLoader moduleLoader) | 45 | public MyWorld(RegionInfo regionInfo, AgentCircuitManager authen, CommunicationsManager commsMan, |
50 | : base( regionInfo, authen, commsMan, assetCach, storeMan, httpServer, moduleLoader, false) | 46 | AssetCache assetCach, StorageManager storeMan, BaseHttpServer httpServer, |
47 | ModuleLoader moduleLoader) | ||
48 | : base(regionInfo, authen, commsMan, assetCach, storeMan, httpServer, moduleLoader, false) | ||
51 | { | 49 | { |
52 | m_avatars = new List<Avatar>(); | 50 | m_avatars = new List<Avatar>(); |
53 | } | 51 | } |
@@ -58,32 +56,30 @@ namespace SimpleApp | |||
58 | 56 | ||
59 | for (int i = 0; i < 65536; i++) | 57 | for (int i = 0; i < 65536; i++) |
60 | { | 58 | { |
61 | int x = i % 256; | 59 | int x = i%256; |
62 | int y = i / 256; | 60 | int y = i/256; |
63 | 61 | ||
64 | map[i] = 25f; | 62 | map[i] = 25f; |
65 | } | 63 | } |
66 | 64 | ||
67 | this.Terrain.GetHeights1D(map); | 65 | Terrain.GetHeights1D(map); |
68 | this.CreateTerrainTexture(); | 66 | CreateTerrainTexture(); |
69 | } | 67 | } |
70 | 68 | ||
71 | override public void AddNewClient(IClientAPI client, bool child) | 69 | public override void AddNewClient(IClientAPI client, bool child) |
72 | { | 70 | { |
73 | SubscribeToClientEvents(client); | 71 | SubscribeToClientEvents(client); |
74 | 72 | ||
75 | ScenePresence avatar = CreateAndAddScenePresence(client, child ); | 73 | ScenePresence avatar = CreateAndAddScenePresence(client, child); |
76 | avatar.AbsolutePosition = new LLVector3(128, 128, 26); | 74 | avatar.AbsolutePosition = new LLVector3(128, 128, 26); |
77 | 75 | ||
78 | LLVector3 pos = new LLVector3(128, 128, 128); | 76 | LLVector3 pos = new LLVector3(128, 128, 128); |
79 | 77 | ||
80 | client.OnCompleteMovementToRegion += delegate() | 78 | client.OnCompleteMovementToRegion += |
81 | { | 79 | delegate() { client.SendChatMessage("Welcome to My World.", 1, pos, "System", LLUUID.Zero); }; |
82 | client.SendChatMessage("Welcome to My World.", 1, pos, "System", LLUUID.Zero ); | ||
83 | }; | ||
84 | 80 | ||
85 | 81 | ||
86 | client.SendRegionHandshake(m_regInfo); | 82 | client.SendRegionHandshake(m_regInfo); |
87 | } | 83 | } |
88 | } | 84 | } |
89 | } | 85 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Examples/SimpleApp/Program.cs b/OpenSim/Region/Examples/SimpleApp/Program.cs index 72aaf6b..b37c2ee 100644 --- a/OpenSim/Region/Examples/SimpleApp/Program.cs +++ b/OpenSim/Region/Examples/SimpleApp/Program.cs | |||
@@ -31,23 +31,23 @@ using System.Collections.Generic; | |||
31 | using System.IO; | 31 | using System.IO; |
32 | using System.Net; | 32 | using System.Net; |
33 | using libsecondlife; | 33 | using libsecondlife; |
34 | using Nini.Config; | ||
35 | using OpenSim.Framework; | ||
34 | using OpenSim.Framework.Communications.Cache; | 36 | using OpenSim.Framework.Communications.Cache; |
35 | using OpenSim.Framework.Console; | 37 | using OpenSim.Framework.Console; |
36 | using OpenSim.Framework; | ||
37 | using OpenSim.Region.ClientStack; | 38 | using OpenSim.Region.ClientStack; |
38 | using OpenSim.Region.Communications.Local; | 39 | using OpenSim.Region.Communications.Local; |
39 | using OpenSim.Region.Environment; | 40 | using OpenSim.Region.Environment; |
40 | using OpenSim.Region.Environment.Scenes; | 41 | using OpenSim.Region.Environment.Scenes; |
41 | using OpenSim.Region.Physics.Manager; | 42 | using OpenSim.Region.Physics.Manager; |
42 | using Nini.Config; | ||
43 | 43 | ||
44 | namespace SimpleApp | 44 | namespace SimpleApp |
45 | { | 45 | { |
46 | class Program : RegionApplicationBase, conscmd_callback | 46 | internal class Program : RegionApplicationBase, conscmd_callback |
47 | { | 47 | { |
48 | private ModuleLoader m_moduleLoader; | 48 | private ModuleLoader m_moduleLoader; |
49 | private IConfigSource m_config; | 49 | private IConfigSource m_config; |
50 | 50 | ||
51 | protected override LogBase CreateLog() | 51 | protected override LogBase CreateLog() |
52 | { | 52 | { |
53 | return new LogBase(null, "SimpleApp", this, true); | 53 | return new LogBase(null, "SimpleApp", this, true); |
@@ -57,45 +57,51 @@ namespace SimpleApp | |||
57 | { | 57 | { |
58 | StartLog(); | 58 | StartLog(); |
59 | 59 | ||
60 | m_networkServersInfo = new NetworkServersInfo( 1000, 1000 ); | 60 | m_networkServersInfo = new NetworkServersInfo(1000, 1000); |
61 | 61 | ||
62 | LocalAssetServer assetServer = new LocalAssetServer(); | 62 | LocalAssetServer assetServer = new LocalAssetServer(); |
63 | 63 | ||
64 | m_assetCache = new AssetCache(assetServer); | 64 | m_assetCache = new AssetCache(assetServer); |
65 | } | 65 | } |
66 | 66 | ||
67 | public void Run() | 67 | public void Run() |
68 | { | 68 | { |
69 | base.StartUp(); | 69 | base.StartUp(); |
70 | 70 | ||
71 | LocalInventoryService inventoryService = new LocalInventoryService(); | 71 | LocalInventoryService inventoryService = new LocalInventoryService(); |
72 | LocalUserServices userService = new LocalUserServices(m_networkServersInfo, m_networkServersInfo.DefaultHomeLocX, m_networkServersInfo.DefaultHomeLocY, inventoryService); | 72 | LocalUserServices userService = |
73 | new LocalUserServices(m_networkServersInfo, m_networkServersInfo.DefaultHomeLocX, | ||
74 | m_networkServersInfo.DefaultHomeLocY, inventoryService); | ||
73 | LocalBackEndServices backendService = new LocalBackEndServices(); | 75 | LocalBackEndServices backendService = new LocalBackEndServices(); |
74 | 76 | ||
75 | CommunicationsLocal localComms = new CommunicationsLocal(m_networkServersInfo, m_httpServer, m_assetCache, userService, inventoryService, backendService, backendService, false); | 77 | CommunicationsLocal localComms = |
78 | new CommunicationsLocal(m_networkServersInfo, m_httpServer, m_assetCache, userService, inventoryService, | ||
79 | backendService, backendService, false); | ||
76 | m_commsManager = localComms; | 80 | m_commsManager = localComms; |
77 | 81 | ||
78 | LocalLoginService loginService = new LocalLoginService(userService, "", localComms, m_networkServersInfo, false); | 82 | LocalLoginService loginService = |
83 | new LocalLoginService(userService, "", localComms, m_networkServersInfo, false); | ||
79 | loginService.OnLoginToRegion += backendService.AddNewSession; | 84 | loginService.OnLoginToRegion += backendService.AddNewSession; |
80 | 85 | ||
81 | m_httpServer.AddXmlRPCHandler("login_to_simulator", loginService.XmlRpcLoginMethod); | 86 | m_httpServer.AddXmlRPCHandler("login_to_simulator", loginService.XmlRpcLoginMethod); |
82 | 87 | ||
83 | m_log.Notice(m_log.LineInfo); | 88 | m_log.Notice(m_log.LineInfo); |
84 | 89 | ||
85 | IPEndPoint internalEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), m_networkServersInfo.HttpListenerPort); | 90 | IPEndPoint internalEndPoint = |
91 | new IPEndPoint(IPAddress.Parse("127.0.0.1"), m_networkServersInfo.HttpListenerPort); | ||
86 | 92 | ||
87 | RegionInfo regionInfo = new RegionInfo(1000, 1000, internalEndPoint, "localhost"); | 93 | RegionInfo regionInfo = new RegionInfo(1000, 1000, internalEndPoint, "localhost"); |
88 | regionInfo.DataStore = "simpleapp_datastore.yap"; | 94 | regionInfo.DataStore = "simpleapp_datastore.yap"; |
89 | 95 | ||
90 | UDPServer udpServer; | 96 | UDPServer udpServer; |
91 | 97 | ||
92 | m_moduleLoader = new ModuleLoader( m_log, m_config ); | 98 | m_moduleLoader = new ModuleLoader(m_log, m_config); |
93 | m_moduleLoader.LoadDefaultSharedModules(); | 99 | m_moduleLoader.LoadDefaultSharedModules(); |
94 | 100 | ||
95 | Scene scene = SetupScene(regionInfo, out udpServer); | 101 | Scene scene = SetupScene(regionInfo, out udpServer); |
96 | 102 | ||
97 | m_moduleLoader.InitialiseSharedModules(scene); | 103 | m_moduleLoader.InitialiseSharedModules(scene); |
98 | 104 | ||
99 | scene.SetModuleInterfaces(); | 105 | scene.SetModuleInterfaces(); |
100 | 106 | ||
101 | scene.StartTimer(); | 107 | scene.StartTimer(); |
@@ -104,18 +110,22 @@ namespace SimpleApp | |||
104 | 110 | ||
105 | m_moduleLoader.PostInitialise(); | 111 | m_moduleLoader.PostInitialise(); |
106 | m_moduleLoader.ClearCache(); | 112 | m_moduleLoader.ClearCache(); |
107 | 113 | ||
108 | udpServer.ServerListener(); | 114 | udpServer.ServerListener(); |
109 | 115 | ||
110 | LLVector3 pos = new LLVector3(110, 129, 27); | 116 | LLVector3 pos = new LLVector3(110, 129, 27); |
111 | 117 | ||
112 | SceneObjectGroup sceneObject = new CpuCounterObject(scene, regionInfo.RegionHandle, LLUUID.Zero, scene.PrimIDAllocate(), pos + new LLVector3( 1f, 1f, 1f )); | 118 | SceneObjectGroup sceneObject = |
119 | new CpuCounterObject(scene, regionInfo.RegionHandle, LLUUID.Zero, scene.PrimIDAllocate(), | ||
120 | pos + new LLVector3(1f, 1f, 1f)); | ||
113 | scene.AddEntity(sceneObject); | 121 | scene.AddEntity(sceneObject); |
114 | 122 | ||
115 | for (int i = 0; i < 27; i++) | 123 | for (int i = 0; i < 27; i++) |
116 | { | 124 | { |
117 | LLVector3 posOffset = new LLVector3( (i%3)*4, (i%9)/3 * 4, (i/9) * 4 ); | 125 | LLVector3 posOffset = new LLVector3((i%3)*4, (i%9)/3*4, (i/9)*4); |
118 | ComplexObject complexObject = new ComplexObject(scene, regionInfo.RegionHandle, LLUUID.Zero, scene.PrimIDAllocate(), pos + posOffset ); | 126 | ComplexObject complexObject = |
127 | new ComplexObject(scene, regionInfo.RegionHandle, LLUUID.Zero, scene.PrimIDAllocate(), | ||
128 | pos + posOffset); | ||
119 | scene.AddEntity(complexObject); | 129 | scene.AddEntity(complexObject); |
120 | } | 130 | } |
121 | 131 | ||
@@ -128,45 +138,48 @@ namespace SimpleApp | |||
128 | List<ScenePresence> avatars = scene.GetAvatars(); | 138 | List<ScenePresence> avatars = scene.GetAvatars(); |
129 | foreach (ScenePresence avatar in avatars) | 139 | foreach (ScenePresence avatar in avatars) |
130 | { | 140 | { |
131 | avatar.AbsolutePosition = new LLVector3((float)OpenSim.Framework.Util.RandomClass.Next(100,200), (float)OpenSim.Framework.Util.RandomClass.Next(30, 200), 2); | 141 | avatar.AbsolutePosition = |
142 | new LLVector3((float) Util.RandomClass.Next(100, 200), (float) Util.RandomClass.Next(30, 200), 2); | ||
132 | } | 143 | } |
133 | 144 | ||
134 | 145 | ||
135 | 146 | DirectoryInfo dirInfo = new DirectoryInfo("."); | |
136 | DirectoryInfo dirInfo = new DirectoryInfo( "." ); | ||
137 | 147 | ||
138 | float x = 0; | 148 | float x = 0; |
139 | float z = 0; | 149 | float z = 0; |
140 | 150 | ||
141 | foreach( FileInfo fileInfo in dirInfo.GetFiles()) | 151 | foreach (FileInfo fileInfo in dirInfo.GetFiles()) |
142 | { | 152 | { |
143 | LLVector3 filePos = new LLVector3(100 + x, 129, 27 + z); | 153 | LLVector3 filePos = new LLVector3(100 + x, 129, 27 + z); |
144 | x = x + 2; | 154 | x = x + 2; |
145 | if( x > 50 ) | 155 | if (x > 50) |
146 | { | 156 | { |
147 | x = 0; | 157 | x = 0; |
148 | z = z + 2; | 158 | z = z + 2; |
149 | } | 159 | } |
150 | 160 | ||
151 | FileSystemObject fileObject = new FileSystemObject( scene, fileInfo, filePos ); | 161 | FileSystemObject fileObject = new FileSystemObject(scene, fileInfo, filePos); |
152 | scene.AddEntity(fileObject); | 162 | scene.AddEntity(fileObject); |
153 | } | 163 | } |
154 | 164 | ||
155 | m_log.Notice("Press enter to quit."); | 165 | m_log.Notice("Press enter to quit."); |
156 | m_log.ReadLine(); | 166 | m_log.ReadLine(); |
157 | } | 167 | } |
158 | 168 | ||
159 | protected override Scene CreateScene(RegionInfo regionInfo, StorageManager storageManager, AgentCircuitManager circuitManager) | 169 | protected override Scene CreateScene(RegionInfo regionInfo, StorageManager storageManager, |
170 | AgentCircuitManager circuitManager) | ||
160 | { | 171 | { |
161 | return new MyWorld(regionInfo, circuitManager, m_commsManager, m_assetCache, storageManager, m_httpServer, new ModuleLoader( m_log, m_config )); | 172 | return |
173 | new MyWorld(regionInfo, circuitManager, m_commsManager, m_assetCache, storageManager, m_httpServer, | ||
174 | new ModuleLoader(m_log, m_config)); | ||
162 | } | 175 | } |
163 | 176 | ||
164 | protected override StorageManager CreateStorageManager(RegionInfo regionInfo) | 177 | protected override StorageManager CreateStorageManager(RegionInfo regionInfo) |
165 | { | 178 | { |
166 | return new StorageManager("OpenSim.DataStore.NullStorage.dll", "simpleapp.yap", "simpleapp"); | 179 | return new StorageManager("OpenSim.DataStore.NullStorage.dll", "simpleapp.yap", "simpleapp"); |
167 | } | 180 | } |
168 | 181 | ||
169 | protected override PhysicsScene GetPhysicsScene( ) | 182 | protected override PhysicsScene GetPhysicsScene() |
170 | { | 183 | { |
171 | return GetPhysicsScene("basicphysics"); | 184 | return GetPhysicsScene("basicphysics"); |
172 | } | 185 | } |
@@ -185,11 +198,11 @@ namespace SimpleApp | |||
185 | 198 | ||
186 | #endregion | 199 | #endregion |
187 | 200 | ||
188 | static void Main(string[] args) | 201 | private static void Main(string[] args) |
189 | { | 202 | { |
190 | Program app = new Program(); | 203 | Program app = new Program(); |
191 | 204 | ||
192 | app.Run(); | 205 | app.Run(); |
193 | } | 206 | } |
194 | } | 207 | } |
195 | } | 208 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Examples/SimpleApp/Properties/AssemblyInfo.cs b/OpenSim/Region/Examples/SimpleApp/Properties/AssemblyInfo.cs index 2250613..a5c8f05 100644 --- a/OpenSim/Region/Examples/SimpleApp/Properties/AssemblyInfo.cs +++ b/OpenSim/Region/Examples/SimpleApp/Properties/AssemblyInfo.cs | |||
@@ -1,24 +1,28 @@ | |||
1 | using System.Reflection; | 1 | using System.Reflection; |
2 | using System.Runtime.InteropServices; | 2 | using System.Runtime.InteropServices; |
3 | |||
3 | // General Information about an assembly is controlled through the following | 4 | // General Information about an assembly is controlled through the following |
4 | // set of attributes. Change these attribute values to modify the information | 5 | // set of attributes. Change these attribute values to modify the information |
5 | // associated with an assembly. | 6 | // associated with an assembly. |
6 | [assembly: AssemblyTitle("SimpleApp")] | 7 | |
7 | [assembly: AssemblyDescription("")] | 8 | [assembly : AssemblyTitle("SimpleApp")] |
8 | [assembly: AssemblyConfiguration("")] | 9 | [assembly : AssemblyDescription("")] |
9 | [assembly: AssemblyCompany("Playahead AB")] | 10 | [assembly : AssemblyConfiguration("")] |
10 | [assembly: AssemblyProduct("SimpleApp")] | 11 | [assembly : AssemblyCompany("Playahead AB")] |
11 | [assembly: AssemblyCopyright("Copyright © Playahead AB 2007")] | 12 | [assembly : AssemblyProduct("SimpleApp")] |
12 | [assembly: AssemblyTrademark("")] | 13 | [assembly : AssemblyCopyright("Copyright © Playahead AB 2007")] |
13 | [assembly: AssemblyCulture("")] | 14 | [assembly : AssemblyTrademark("")] |
15 | [assembly : AssemblyCulture("")] | ||
14 | 16 | ||
15 | // Setting ComVisible to false makes the types in this assembly not visible | 17 | // Setting ComVisible to false makes the types in this assembly not visible |
16 | // to COM components. If you need to access a type in this assembly from | 18 | // to COM components. If you need to access a type in this assembly from |
17 | // COM, set the ComVisible attribute to true on that type. | 19 | // COM, set the ComVisible attribute to true on that type. |
18 | [assembly: ComVisible(false)] | 20 | |
21 | [assembly : ComVisible(false)] | ||
19 | 22 | ||
20 | // The following GUID is for the ID of the typelib if this project is exposed to COM | 23 | // The following GUID is for the ID of the typelib if this project is exposed to COM |
21 | [assembly: Guid("a5cfa45f-5acf-4b2e-9c50-1dd1fd7608ee")] | 24 | |
25 | [assembly : Guid("a5cfa45f-5acf-4b2e-9c50-1dd1fd7608ee")] | ||
22 | 26 | ||
23 | // Version information for an assembly consists of the following four values: | 27 | // Version information for an assembly consists of the following four values: |
24 | // | 28 | // |
@@ -27,5 +31,6 @@ using System.Runtime.InteropServices; | |||
27 | // Build Number | 31 | // Build Number |
28 | // Revision | 32 | // Revision |
29 | // | 33 | // |
30 | [assembly: AssemblyVersion("1.0.0.0")] | 34 | |
31 | [assembly: AssemblyFileVersion("1.0.0.0")] | 35 | [assembly : AssemblyVersion("1.0.0.0")] |
36 | [assembly : AssemblyFileVersion("1.0.0.0")] \ No newline at end of file | ||
diff --git a/OpenSim/Region/ExtensionsScriptModule/Engines/CSharp/CSharpScriptEngine.cs b/OpenSim/Region/ExtensionsScriptModule/Engines/CSharp/CSharpScriptEngine.cs index d4b27fc..176fc7b 100644 --- a/OpenSim/Region/ExtensionsScriptModule/Engines/CSharp/CSharpScriptEngine.cs +++ b/OpenSim/Region/ExtensionsScriptModule/Engines/CSharp/CSharpScriptEngine.cs | |||
@@ -40,7 +40,7 @@ namespace OpenSim.Region.ExtensionsScriptModule.CSharp | |||
40 | return ".cs"; | 40 | return ".cs"; |
41 | } | 41 | } |
42 | 42 | ||
43 | private Dictionary<string,IScript> LoadDotNetScript(CodeDomProvider compiler, string filename) | 43 | private Dictionary<string, IScript> LoadDotNetScript(CodeDomProvider compiler, string filename) |
44 | { | 44 | { |
45 | CompilerParameters compilerParams = new CompilerParameters(); | 45 | CompilerParameters compilerParams = new CompilerParameters(); |
46 | CompilerResults compilerResults; | 46 | CompilerResults compilerResults; |
@@ -66,15 +66,16 @@ namespace OpenSim.Region.ExtensionsScriptModule.CSharp | |||
66 | } | 66 | } |
67 | else | 67 | else |
68 | { | 68 | { |
69 | Dictionary<string,IScript> scripts = new Dictionary<string,IScript>(); | 69 | Dictionary<string, IScript> scripts = new Dictionary<string, IScript>(); |
70 | 70 | ||
71 | foreach (Type pluginType in compilerResults.CompiledAssembly.GetExportedTypes()) | 71 | foreach (Type pluginType in compilerResults.CompiledAssembly.GetExportedTypes()) |
72 | { | 72 | { |
73 | Type testInterface = pluginType.GetInterface("IScript", true); | 73 | Type testInterface = pluginType.GetInterface("IScript", true); |
74 | 74 | ||
75 | if (testInterface != null) | 75 | if (testInterface != null) |
76 | { | 76 | { |
77 | IScript script = (IScript)compilerResults.CompiledAssembly.CreateInstance(pluginType.ToString()); | 77 | IScript script = |
78 | (IScript) compilerResults.CompiledAssembly.CreateInstance(pluginType.ToString()); | ||
78 | 79 | ||
79 | string scriptName = "C#/" + script.Name; | 80 | string scriptName = "C#/" + script.Name; |
80 | Console.WriteLine("Script: " + scriptName + " loaded."); | 81 | Console.WriteLine("Script: " + scriptName + " loaded."); |
@@ -94,10 +95,10 @@ namespace OpenSim.Region.ExtensionsScriptModule.CSharp | |||
94 | return null; | 95 | return null; |
95 | } | 96 | } |
96 | 97 | ||
97 | public Dictionary<string,IScript> compile(string filename) | 98 | public Dictionary<string, IScript> compile(string filename) |
98 | { | 99 | { |
99 | CSharpCodeProvider csharpProvider = new CSharpCodeProvider(); | 100 | CSharpCodeProvider csharpProvider = new CSharpCodeProvider(); |
100 | return LoadDotNetScript(csharpProvider, filename); | 101 | return LoadDotNetScript(csharpProvider, filename); |
101 | } | 102 | } |
102 | } | 103 | } |
103 | } | 104 | } \ No newline at end of file |
diff --git a/OpenSim/Region/ExtensionsScriptModule/Engines/CSharp/Examples/ExportRegionToLSL.cs b/OpenSim/Region/ExtensionsScriptModule/Engines/CSharp/Examples/ExportRegionToLSL.cs index 7ae4658..2d684d1 100644 --- a/OpenSim/Region/ExtensionsScriptModule/Engines/CSharp/Examples/ExportRegionToLSL.cs +++ b/OpenSim/Region/ExtensionsScriptModule/Engines/CSharp/Examples/ExportRegionToLSL.cs | |||
@@ -26,19 +26,13 @@ | |||
26 | * | 26 | * |
27 | */ | 27 | */ |
28 | 28 | ||
29 | using OpenSim.Framework.Console; | ||
30 | using OpenSim.Framework; | ||
31 | using OpenSim.Region.Environment; | ||
32 | using OpenSim.Region.Environment.Scenes; | 29 | using OpenSim.Region.Environment.Scenes; |
33 | 30 | ||
34 | using System.Collections.Generic; | ||
35 | using libsecondlife; | ||
36 | |||
37 | namespace OpenSim.Region.ExtensionsScriptModule.CSharp.Examples | 31 | namespace OpenSim.Region.ExtensionsScriptModule.CSharp.Examples |
38 | { | 32 | { |
39 | public class LSLExportScript : IScript | 33 | public class LSLExportScript : IScript |
40 | { | 34 | { |
41 | ScriptInfo script; | 35 | private ScriptInfo script; |
42 | 36 | ||
43 | public string Name | 37 | public string Name |
44 | { | 38 | { |
@@ -48,11 +42,11 @@ namespace OpenSim.Region.ExtensionsScriptModule.CSharp.Examples | |||
48 | public void Initialise(ScriptInfo scriptInfo) | 42 | public void Initialise(ScriptInfo scriptInfo) |
49 | { | 43 | { |
50 | script = scriptInfo; | 44 | script = scriptInfo; |
51 | 45 | ||
52 | script.events.OnPluginConsole += new EventManager.OnPluginConsoleDelegate(ProcessConsoleMsg); | 46 | script.events.OnPluginConsole += new EventManager.OnPluginConsoleDelegate(ProcessConsoleMsg); |
53 | } | 47 | } |
54 | 48 | ||
55 | void ProcessConsoleMsg(string[] args) | 49 | private void ProcessConsoleMsg(string[] args) |
56 | { | 50 | { |
57 | /*if (args[0].ToLower() == "lslexport") | 51 | /*if (args[0].ToLower() == "lslexport") |
58 | { | 52 | { |
@@ -79,7 +73,7 @@ namespace OpenSim.Region.ExtensionsScriptModule.CSharp.Examples | |||
79 | }*/ | 73 | }*/ |
80 | } | 74 | } |
81 | 75 | ||
82 | string processPrimitiveToString(OpenSim.Region.Environment.Scenes.SceneObjectPart prim) | 76 | private string processPrimitiveToString(SceneObjectPart prim) |
83 | { | 77 | { |
84 | /*string desc = prim.Description; | 78 | /*string desc = prim.Description; |
85 | string name = prim.Name; | 79 | string name = prim.Name; |
@@ -97,4 +91,4 @@ namespace OpenSim.Region.ExtensionsScriptModule.CSharp.Examples | |||
97 | return ""; | 91 | return ""; |
98 | } | 92 | } |
99 | } | 93 | } |
100 | } | 94 | } \ No newline at end of file |
diff --git a/OpenSim/Region/ExtensionsScriptModule/Engines/JScript/JScriptEngine.cs b/OpenSim/Region/ExtensionsScriptModule/Engines/JScript/JScriptEngine.cs index 4bde721..ea0e92a 100644 --- a/OpenSim/Region/ExtensionsScriptModule/Engines/JScript/JScriptEngine.cs +++ b/OpenSim/Region/ExtensionsScriptModule/Engines/JScript/JScriptEngine.cs | |||
@@ -74,7 +74,8 @@ namespace OpenSim.Region.ExtensionsScriptModule.JScript | |||
74 | 74 | ||
75 | if (testInterface != null) | 75 | if (testInterface != null) |
76 | { | 76 | { |
77 | IScript script = (IScript)compilerResults.CompiledAssembly.CreateInstance(pluginType.ToString()); | 77 | IScript script = |
78 | (IScript) compilerResults.CompiledAssembly.CreateInstance(pluginType.ToString()); | ||
78 | 79 | ||
79 | string scriptName = "JS.NET/" + script.Name; | 80 | string scriptName = "JS.NET/" + script.Name; |
80 | Console.WriteLine("Script: " + scriptName + " loaded."); | 81 | Console.WriteLine("Script: " + scriptName + " loaded."); |
@@ -100,4 +101,4 @@ namespace OpenSim.Region.ExtensionsScriptModule.JScript | |||
100 | return LoadDotNetScript(jscriptProvider, filename); | 101 | return LoadDotNetScript(jscriptProvider, filename); |
101 | } | 102 | } |
102 | } | 103 | } |
103 | } | 104 | } \ No newline at end of file |
diff --git a/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JVM/ClassInstance.cs b/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JVM/ClassInstance.cs index 6100c67..3f09099 100644 --- a/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JVM/ClassInstance.cs +++ b/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JVM/ClassInstance.cs | |||
@@ -25,9 +25,7 @@ | |||
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 | using System; | ||
29 | using System.Collections.Generic; | 28 | using System.Collections.Generic; |
30 | using System.Text; | ||
31 | using OpenSim.Region.ExtensionsScriptModule.JVMEngine.Types; | 29 | using OpenSim.Region.ExtensionsScriptModule.JVMEngine.Types; |
32 | 30 | ||
33 | namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | 31 | namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM |
@@ -40,7 +38,6 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
40 | 38 | ||
41 | public ClassInstance() | 39 | public ClassInstance() |
42 | { | 40 | { |
43 | |||
44 | } | 41 | } |
45 | } | 42 | } |
46 | } | 43 | } \ No newline at end of file |
diff --git a/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JVM/ClassRecord.cs b/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JVM/ClassRecord.cs index 5c3629c..3bcc824 100644 --- a/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JVM/ClassRecord.cs +++ b/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JVM/ClassRecord.cs | |||
@@ -26,9 +26,8 @@ | |||
26 | * | 26 | * |
27 | */ | 27 | */ |
28 | using System; | 28 | using System; |
29 | using System.IO; | ||
30 | using System.Collections.Generic; | 29 | using System.Collections.Generic; |
31 | using System.Text; | 30 | using System.IO; |
32 | using OpenSim.Region.ExtensionsScriptModule.JVMEngine.Types; | 31 | using OpenSim.Region.ExtensionsScriptModule.JVMEngine.Types; |
33 | using OpenSim.Region.ExtensionsScriptModule.JVMEngine.Types.PrimitiveTypes; | 32 | using OpenSim.Region.ExtensionsScriptModule.JVMEngine.Types.PrimitiveTypes; |
34 | 33 | ||
@@ -56,7 +55,6 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
56 | 55 | ||
57 | public ClassRecord() | 56 | public ClassRecord() |
58 | { | 57 | { |
59 | |||
60 | } | 58 | } |
61 | 59 | ||
62 | public ClassInstance CreateNewInstance() | 60 | public ClassInstance CreateNewInstance() |
@@ -72,7 +70,7 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
72 | { | 70 | { |
73 | Console.WriteLine("loading script " + fileName); | 71 | Console.WriteLine("loading script " + fileName); |
74 | FileStream fs = File.OpenRead(fileName); | 72 | FileStream fs = File.OpenRead(fileName); |
75 | this.LoadClassFromBytes(ReadFully(fs)); | 73 | LoadClassFromBytes(ReadFully(fs)); |
76 | fs.Close(); | 74 | fs.Close(); |
77 | } | 75 | } |
78 | 76 | ||
@@ -80,9 +78,9 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
80 | { | 78 | { |
81 | int i = 0; | 79 | int i = 0; |
82 | i += 4; | 80 | i += 4; |
83 | m_minorVersion = (ushort)((data[i++] << 8) + data[i++]); | 81 | m_minorVersion = (ushort) ((data[i++] << 8) + data[i++]); |
84 | m_majorVersion = (ushort)((data[i++] << 8) + data[i++]); | 82 | m_majorVersion = (ushort) ((data[i++] << 8) + data[i++]); |
85 | m_constantPoolCount = (ushort)((data[i++] << 8) + data[i++]); | 83 | m_constantPoolCount = (ushort) ((data[i++] << 8) + data[i++]); |
86 | Console.WriteLine("there should be " + m_constantPoolCount + " items in the pool"); | 84 | Console.WriteLine("there should be " + m_constantPoolCount + " items in the pool"); |
87 | for (int count = 0; count < (m_constantPoolCount - 1); count++) | 85 | for (int count = 0; count < (m_constantPoolCount - 1); count++) |
88 | { | 86 | { |
@@ -92,13 +90,13 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
92 | //Console.WriteLine("start position is: " + i); | 90 | //Console.WriteLine("start position is: " + i); |
93 | switch (pooltype) | 91 | switch (pooltype) |
94 | { | 92 | { |
95 | case 1: //Utf8 | 93 | case 1: //Utf8 |
96 | ushort uLength = (ushort)((data[i++] << 8) + data[i++]); | 94 | ushort uLength = (ushort) ((data[i++] << 8) + data[i++]); |
97 | 95 | ||
98 | // Console.WriteLine("new utf8 type, length is " + uLength); | 96 | // Console.WriteLine("new utf8 type, length is " + uLength); |
99 | PoolUtf8 utf8 = new PoolUtf8(); | 97 | PoolUtf8 utf8 = new PoolUtf8(); |
100 | utf8.readValue(data, ref i, uLength); | 98 | utf8.readValue(data, ref i, uLength); |
101 | this.m_constantsPool.Add(utf8); | 99 | m_constantsPool.Add(utf8); |
102 | break; | 100 | break; |
103 | case 3: //Int | 101 | case 3: //Int |
104 | break; | 102 | break; |
@@ -107,53 +105,53 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
107 | case 7: //Class | 105 | case 7: //Class |
108 | PoolClass pClass = new PoolClass(this); | 106 | PoolClass pClass = new PoolClass(this); |
109 | pClass.readValue(data, ref i); | 107 | pClass.readValue(data, ref i); |
110 | this.m_constantsPool.Add(pClass); | 108 | m_constantsPool.Add(pClass); |
111 | break; | 109 | break; |
112 | case 9: //FieldRef | 110 | case 9: //FieldRef |
113 | PoolFieldRef pField = new PoolFieldRef(this); | 111 | PoolFieldRef pField = new PoolFieldRef(this); |
114 | pField.readValue(data, ref i); | 112 | pField.readValue(data, ref i); |
115 | this.m_constantsPool.Add(pField); | 113 | m_constantsPool.Add(pField); |
116 | break; | 114 | break; |
117 | case 10: //Method | 115 | case 10: //Method |
118 | PoolMethodRef pMeth = new PoolMethodRef(this); | 116 | PoolMethodRef pMeth = new PoolMethodRef(this); |
119 | pMeth.readValue(data, ref i); | 117 | pMeth.readValue(data, ref i); |
120 | this.m_constantsPool.Add(pMeth); | 118 | m_constantsPool.Add(pMeth); |
121 | break; | 119 | break; |
122 | case 12: //NamedType | 120 | case 12: //NamedType |
123 | PoolNamedType pNamed = new PoolNamedType(this); | 121 | PoolNamedType pNamed = new PoolNamedType(this); |
124 | pNamed.readValue(data, ref i); | 122 | pNamed.readValue(data, ref i); |
125 | this.m_constantsPool.Add(pNamed); | 123 | m_constantsPool.Add(pNamed); |
126 | break; | 124 | break; |
127 | } | 125 | } |
128 | } | 126 | } |
129 | 127 | ||
130 | m_accessFlags = (ushort)((data[i++] << 8) + data[i++]); | 128 | m_accessFlags = (ushort) ((data[i++] << 8) + data[i++]); |
131 | m_thisClass = (ushort)((data[i++] << 8) + data[i++]); | 129 | m_thisClass = (ushort) ((data[i++] << 8) + data[i++]); |
132 | m_supperClass = (ushort)((data[i++] << 8) + data[i++]); | 130 | m_supperClass = (ushort) ((data[i++] << 8) + data[i++]); |
133 | 131 | ||
134 | if (this.m_constantsPool[this.m_thisClass - 1] is PoolClass) | 132 | if (m_constantsPool[m_thisClass - 1] is PoolClass) |
135 | { | 133 | { |
136 | this.MClass = ((PoolClass)this.m_constantsPool[this.m_thisClass - 1]); | 134 | MClass = ((PoolClass) m_constantsPool[m_thisClass - 1]); |
137 | } | 135 | } |
138 | 136 | ||
139 | m_interfaceCount = (ushort)((data[i++] << 8) + data[i++]); | 137 | m_interfaceCount = (ushort) ((data[i++] << 8) + data[i++]); |
140 | //should now read in the info for each interface | 138 | //should now read in the info for each interface |
141 | 139 | ||
142 | m_fieldCount = (ushort)((data[i++] << 8) + data[i++]); | 140 | m_fieldCount = (ushort) ((data[i++] << 8) + data[i++]); |
143 | //should now read in the info for each field | 141 | //should now read in the info for each field |
144 | for (int count = 0; count < m_fieldCount; count++) | 142 | for (int count = 0; count < m_fieldCount; count++) |
145 | { | 143 | { |
146 | FieldInfo fieldInf = new FieldInfo(this); | 144 | FieldInfo fieldInf = new FieldInfo(this); |
147 | fieldInf.ReadData(data, ref i); | 145 | fieldInf.ReadData(data, ref i); |
148 | this.m_fieldList.Add(fieldInf); | 146 | m_fieldList.Add(fieldInf); |
149 | } | 147 | } |
150 | 148 | ||
151 | m_methodCount = (ushort)((data[i++] << 8) + data[i++]); | 149 | m_methodCount = (ushort) ((data[i++] << 8) + data[i++]); |
152 | for (int count = 0; count < m_methodCount; count++) | 150 | for (int count = 0; count < m_methodCount; count++) |
153 | { | 151 | { |
154 | MethodInfo methInf = new MethodInfo(this); | 152 | MethodInfo methInf = new MethodInfo(this); |
155 | methInf.ReadData(data, ref i); | 153 | methInf.ReadData(data, ref i); |
156 | this.m_methodsList.Add(methInf); | 154 | m_methodsList.Add(methInf); |
157 | } | 155 | } |
158 | } | 156 | } |
159 | 157 | ||
@@ -161,7 +159,7 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
161 | { | 159 | { |
162 | for (int count = 0; count < m_methodCount; count++) | 160 | for (int count = 0; count < m_methodCount; count++) |
163 | { | 161 | { |
164 | this.m_methodsList[count].AddMethodCode(memory); | 162 | m_methodsList[count].AddMethodCode(memory); |
165 | } | 163 | } |
166 | } | 164 | } |
167 | 165 | ||
@@ -169,12 +167,12 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
169 | { | 167 | { |
170 | for (int count = 0; count < m_methodCount; count++) | 168 | for (int count = 0; count < m_methodCount; count++) |
171 | { | 169 | { |
172 | if (this.m_constantsPool[this.m_methodsList[count].NameIndex - 1] is PoolUtf8) | 170 | if (m_constantsPool[m_methodsList[count].NameIndex - 1] is PoolUtf8) |
173 | { | 171 | { |
174 | if (((PoolUtf8)this.m_constantsPool[this.m_methodsList[count].NameIndex - 1]).Value == methodName) | 172 | if (((PoolUtf8) m_constantsPool[m_methodsList[count].NameIndex - 1]).Value == methodName) |
175 | { | 173 | { |
176 | //Console.WriteLine("found method: " + ((PoolUtf8)this._constantsPool[this._methodsList[count].NameIndex - 1]).Value); | 174 | //Console.WriteLine("found method: " + ((PoolUtf8)this._constantsPool[this._methodsList[count].NameIndex - 1]).Value); |
177 | thread.SetPC(this.m_methodsList[count].CodePointer); | 175 | thread.SetPC(m_methodsList[count].CodePointer); |
178 | return true; | 176 | return true; |
179 | } | 177 | } |
180 | } | 178 | } |
@@ -191,7 +189,7 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
191 | 189 | ||
192 | for (int i = 0; i < m_constantsPool.Count; i++) | 190 | for (int i = 0; i < m_constantsPool.Count; i++) |
193 | { | 191 | { |
194 | this.m_constantsPool[i].Print(); | 192 | m_constantsPool[i].Print(); |
195 | } | 193 | } |
196 | 194 | ||
197 | Console.WriteLine("Access flags: " + m_accessFlags); | 195 | Console.WriteLine("Access flags: " + m_accessFlags); |
@@ -201,16 +199,16 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
201 | for (int count = 0; count < m_fieldCount; count++) | 199 | for (int count = 0; count < m_fieldCount; count++) |
202 | { | 200 | { |
203 | Console.WriteLine(); | 201 | Console.WriteLine(); |
204 | this.m_fieldList[count].Print(); | 202 | m_fieldList[count].Print(); |
205 | } | 203 | } |
206 | 204 | ||
207 | for (int count = 0; count < m_methodCount; count++) | 205 | for (int count = 0; count < m_methodCount; count++) |
208 | { | 206 | { |
209 | Console.WriteLine(); | 207 | Console.WriteLine(); |
210 | this.m_methodsList[count].Print(); | 208 | m_methodsList[count].Print(); |
211 | } | 209 | } |
212 | 210 | ||
213 | Console.WriteLine("class name is " + this.MClass.Name.Value); | 211 | Console.WriteLine("class name is " + MClass.Name.Value); |
214 | } | 212 | } |
215 | 213 | ||
216 | public static byte[] ReadFully(Stream stream) | 214 | public static byte[] ReadFully(Stream stream) |
@@ -229,11 +227,11 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
229 | } | 227 | } |
230 | 228 | ||
231 | #region nested classes | 229 | #region nested classes |
230 | |||
232 | public class PoolItem | 231 | public class PoolItem |
233 | { | 232 | { |
234 | public virtual void Print() | 233 | public virtual void Print() |
235 | { | 234 | { |
236 | |||
237 | } | 235 | } |
238 | } | 236 | } |
239 | 237 | ||
@@ -245,21 +243,21 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
245 | { | 243 | { |
246 | for (int i = 0; i < length; i++) | 244 | for (int i = 0; i < length; i++) |
247 | { | 245 | { |
248 | int a = (int)data[pointer++]; | 246 | int a = (int) data[pointer++]; |
249 | if ((a & 0x80) == 0) | 247 | if ((a & 0x80) == 0) |
250 | { | 248 | { |
251 | Value = Value + (char)a; | 249 | Value = Value + (char) a; |
252 | } | 250 | } |
253 | else if ((a & 0x20) == 0) | 251 | else if ((a & 0x20) == 0) |
254 | { | 252 | { |
255 | int b = (int)data[pointer++]; | 253 | int b = (int) data[pointer++]; |
256 | Value = Value + (char)(((a & 0x1f) << 6) + (b & 0x3f)); | 254 | Value = Value + (char) (((a & 0x1f) << 6) + (b & 0x3f)); |
257 | } | 255 | } |
258 | else | 256 | else |
259 | { | 257 | { |
260 | int b = (int)data[pointer++]; | 258 | int b = (int) data[pointer++]; |
261 | int c = (int)data[pointer++]; | 259 | int c = (int) data[pointer++]; |
262 | Value = Value + (char)(((a & 0xf) << 12) + ((b & 0x3f) << 6) + (c & 0x3f)); | 260 | Value = Value + (char) (((a & 0xf) << 12) + ((b & 0x3f) << 6) + (c & 0x3f)); |
263 | } | 261 | } |
264 | } | 262 | } |
265 | } | 263 | } |
@@ -272,7 +270,6 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
272 | 270 | ||
273 | private class PoolInt : PoolItem | 271 | private class PoolInt : PoolItem |
274 | { | 272 | { |
275 | |||
276 | } | 273 | } |
277 | 274 | ||
278 | public class PoolClass : PoolItem | 275 | public class PoolClass : PoolItem |
@@ -289,15 +286,14 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
289 | 286 | ||
290 | public void readValue(byte[] data, ref int pointer) | 287 | public void readValue(byte[] data, ref int pointer) |
291 | { | 288 | { |
292 | namePointer = (ushort)((data[pointer++] << 8) + data[pointer++]); | 289 | namePointer = (ushort) ((data[pointer++] << 8) + data[pointer++]); |
293 | } | 290 | } |
294 | 291 | ||
295 | public override void Print() | 292 | public override void Print() |
296 | { | 293 | { |
297 | this.Name = ((PoolUtf8)this.parent.m_constantsPool[namePointer - 1]); | 294 | Name = ((PoolUtf8) parent.m_constantsPool[namePointer - 1]); |
298 | Console.Write("Class type: " + namePointer); | 295 | Console.Write("Class type: " + namePointer); |
299 | Console.WriteLine(" // " + ((PoolUtf8)this.parent.m_constantsPool[namePointer - 1]).Value); | 296 | Console.WriteLine(" // " + ((PoolUtf8) parent.m_constantsPool[namePointer - 1]).Value); |
300 | |||
301 | } | 297 | } |
302 | } | 298 | } |
303 | 299 | ||
@@ -316,14 +312,14 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
316 | 312 | ||
317 | public void readValue(byte[] data, ref int pointer) | 313 | public void readValue(byte[] data, ref int pointer) |
318 | { | 314 | { |
319 | classPointer = (ushort)((data[pointer++] << 8) + data[pointer++]); | 315 | classPointer = (ushort) ((data[pointer++] << 8) + data[pointer++]); |
320 | nameTypePointer = (ushort)((data[pointer++] << 8) + data[pointer++]); | 316 | nameTypePointer = (ushort) ((data[pointer++] << 8) + data[pointer++]); |
321 | } | 317 | } |
322 | 318 | ||
323 | public override void Print() | 319 | public override void Print() |
324 | { | 320 | { |
325 | this.mNameType = ((PoolNamedType)this.parent.m_constantsPool[nameTypePointer - 1]); | 321 | mNameType = ((PoolNamedType) parent.m_constantsPool[nameTypePointer - 1]); |
326 | this.mClass = ((PoolClass)this.parent.m_constantsPool[classPointer - 1]); | 322 | mClass = ((PoolClass) parent.m_constantsPool[classPointer - 1]); |
327 | Console.WriteLine("FieldRef type: " + classPointer + " , " + nameTypePointer); | 323 | Console.WriteLine("FieldRef type: " + classPointer + " , " + nameTypePointer); |
328 | } | 324 | } |
329 | } | 325 | } |
@@ -343,14 +339,14 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
343 | 339 | ||
344 | public void readValue(byte[] data, ref int pointer) | 340 | public void readValue(byte[] data, ref int pointer) |
345 | { | 341 | { |
346 | classPointer = (ushort)((data[pointer++] << 8) + data[pointer++]); | 342 | classPointer = (ushort) ((data[pointer++] << 8) + data[pointer++]); |
347 | nameTypePointer = (ushort)((data[pointer++] << 8) + data[pointer++]); | 343 | nameTypePointer = (ushort) ((data[pointer++] << 8) + data[pointer++]); |
348 | } | 344 | } |
349 | 345 | ||
350 | public override void Print() | 346 | public override void Print() |
351 | { | 347 | { |
352 | this.mNameType = ((PoolNamedType)this.parent.m_constantsPool[nameTypePointer - 1]); | 348 | mNameType = ((PoolNamedType) parent.m_constantsPool[nameTypePointer - 1]); |
353 | this.mClass = ((PoolClass)this.parent.m_constantsPool[classPointer - 1]); | 349 | mClass = ((PoolClass) parent.m_constantsPool[classPointer - 1]); |
354 | Console.WriteLine("MethodRef type: " + classPointer + " , " + nameTypePointer); | 350 | Console.WriteLine("MethodRef type: " + classPointer + " , " + nameTypePointer); |
355 | } | 351 | } |
356 | } | 352 | } |
@@ -370,16 +366,16 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
370 | 366 | ||
371 | public void readValue(byte[] data, ref int pointer) | 367 | public void readValue(byte[] data, ref int pointer) |
372 | { | 368 | { |
373 | namePointer = (ushort)((data[pointer++] << 8) + data[pointer++]); | 369 | namePointer = (ushort) ((data[pointer++] << 8) + data[pointer++]); |
374 | typePointer = (ushort)((data[pointer++] << 8) + data[pointer++]); | 370 | typePointer = (ushort) ((data[pointer++] << 8) + data[pointer++]); |
375 | } | 371 | } |
376 | 372 | ||
377 | public override void Print() | 373 | public override void Print() |
378 | { | 374 | { |
379 | Name = ((PoolUtf8)this.parent.m_constantsPool[namePointer - 1]); | 375 | Name = ((PoolUtf8) parent.m_constantsPool[namePointer - 1]); |
380 | Type = ((PoolUtf8)this.parent.m_constantsPool[typePointer - 1]); | 376 | Type = ((PoolUtf8) parent.m_constantsPool[typePointer - 1]); |
381 | Console.Write("Named type: " + namePointer + " , " + typePointer); | 377 | Console.Write("Named type: " + namePointer + " , " + typePointer); |
382 | Console.WriteLine(" // " + ((PoolUtf8)this.parent.m_constantsPool[namePointer - 1]).Value); | 378 | Console.WriteLine(" // " + ((PoolUtf8) parent.m_constantsPool[namePointer - 1]).Value); |
383 | } | 379 | } |
384 | } | 380 | } |
385 | 381 | ||
@@ -402,23 +398,23 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
402 | 398 | ||
403 | public void AddMethodCode(MethodMemory memory) | 399 | public void AddMethodCode(MethodMemory memory) |
404 | { | 400 | { |
405 | Array.Copy(this.Attributes[0].Code, 0, memory.MethodBuffer, memory.NextMethodPC, this.Attributes[0].Code.Length); | 401 | Array.Copy(Attributes[0].Code, 0, memory.MethodBuffer, memory.NextMethodPC, Attributes[0].Code.Length); |
406 | memory.Methodcount++; | 402 | memory.Methodcount++; |
407 | this.CodePointer = memory.NextMethodPC; | 403 | CodePointer = memory.NextMethodPC; |
408 | memory.NextMethodPC += this.Attributes[0].Code.Length; | 404 | memory.NextMethodPC += Attributes[0].Code.Length; |
409 | } | 405 | } |
410 | 406 | ||
411 | public void ReadData(byte[] data, ref int pointer) | 407 | public void ReadData(byte[] data, ref int pointer) |
412 | { | 408 | { |
413 | AccessFlags = (ushort)((data[pointer++] << 8) + data[pointer++]); | 409 | AccessFlags = (ushort) ((data[pointer++] << 8) + data[pointer++]); |
414 | NameIndex = (ushort)((data[pointer++] << 8) + data[pointer++]); | 410 | NameIndex = (ushort) ((data[pointer++] << 8) + data[pointer++]); |
415 | DescriptorIndex = (ushort)((data[pointer++] << 8) + data[pointer++]); | 411 | DescriptorIndex = (ushort) ((data[pointer++] << 8) + data[pointer++]); |
416 | AttributeCount = (ushort)((data[pointer++] << 8) + data[pointer++]); | 412 | AttributeCount = (ushort) ((data[pointer++] << 8) + data[pointer++]); |
417 | for (int i = 0; i < AttributeCount; i++) | 413 | for (int i = 0; i < AttributeCount; i++) |
418 | { | 414 | { |
419 | MethodAttribute attri = new MethodAttribute(this.parent); | 415 | MethodAttribute attri = new MethodAttribute(parent); |
420 | attri.ReadData(data, ref pointer); | 416 | attri.ReadData(data, ref pointer); |
421 | this.Attributes.Add(attri); | 417 | Attributes.Add(attri); |
422 | } | 418 | } |
423 | } | 419 | } |
424 | 420 | ||
@@ -426,12 +422,14 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
426 | { | 422 | { |
427 | Console.WriteLine("Method Info Struct: "); | 423 | Console.WriteLine("Method Info Struct: "); |
428 | Console.WriteLine("AccessFlags: " + AccessFlags); | 424 | Console.WriteLine("AccessFlags: " + AccessFlags); |
429 | Console.WriteLine("NameIndex: " + NameIndex + " // " + ((PoolUtf8)this.parent.m_constantsPool[NameIndex - 1]).Value); | 425 | Console.WriteLine("NameIndex: " + NameIndex + " // " + |
430 | Console.WriteLine("DescriptorIndex: " + DescriptorIndex + " // " + ((PoolUtf8)this.parent.m_constantsPool[DescriptorIndex - 1]).Value); | 426 | ((PoolUtf8) parent.m_constantsPool[NameIndex - 1]).Value); |
427 | Console.WriteLine("DescriptorIndex: " + DescriptorIndex + " // " + | ||
428 | ((PoolUtf8) parent.m_constantsPool[DescriptorIndex - 1]).Value); | ||
431 | Console.WriteLine("Attribute Count:" + AttributeCount); | 429 | Console.WriteLine("Attribute Count:" + AttributeCount); |
432 | for (int i = 0; i < AttributeCount; i++) | 430 | for (int i = 0; i < AttributeCount; i++) |
433 | { | 431 | { |
434 | this.Attributes[i].Print(); | 432 | Attributes[i].Print(); |
435 | } | 433 | } |
436 | } | 434 | } |
437 | 435 | ||
@@ -457,30 +455,35 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
457 | 455 | ||
458 | public void ReadData(byte[] data, ref int pointer) | 456 | public void ReadData(byte[] data, ref int pointer) |
459 | { | 457 | { |
460 | NameIndex = (ushort)((data[pointer++] << 8) + data[pointer++]); | 458 | NameIndex = (ushort) ((data[pointer++] << 8) + data[pointer++]); |
461 | Length = (Int32)((data[pointer++] << 24) + (data[pointer++] << 16) + (data[pointer++] << 8) + data[pointer++]); | 459 | Length = |
462 | MaxStack = (ushort)((data[pointer++] << 8) + data[pointer++]); | 460 | (Int32) |
463 | MaxLocals = (ushort)((data[pointer++] << 8) + data[pointer++]); | 461 | ((data[pointer++] << 24) + (data[pointer++] << 16) + (data[pointer++] << 8) + data[pointer++]); |
464 | CodeLength = (Int32)((data[pointer++] << 24) + (data[pointer++] << 16) + (data[pointer++] << 8) + data[pointer++]); | 462 | MaxStack = (ushort) ((data[pointer++] << 8) + data[pointer++]); |
463 | MaxLocals = (ushort) ((data[pointer++] << 8) + data[pointer++]); | ||
464 | CodeLength = | ||
465 | (Int32) | ||
466 | ((data[pointer++] << 24) + (data[pointer++] << 16) + (data[pointer++] << 8) + data[pointer++]); | ||
465 | Code = new byte[CodeLength]; | 467 | Code = new byte[CodeLength]; |
466 | for (int i = 0; i < CodeLength; i++) | 468 | for (int i = 0; i < CodeLength; i++) |
467 | { | 469 | { |
468 | Code[i] = data[pointer++]; | 470 | Code[i] = data[pointer++]; |
469 | } | 471 | } |
470 | ExceptionTableLength = (ushort)((data[pointer++] << 8) + data[pointer++]); | 472 | ExceptionTableLength = (ushort) ((data[pointer++] << 8) + data[pointer++]); |
471 | SubAttributeCount = (ushort)((data[pointer++] << 8) + data[pointer++]); | 473 | SubAttributeCount = (ushort) ((data[pointer++] << 8) + data[pointer++]); |
472 | for (int i = 0; i < SubAttributeCount; i++) | 474 | for (int i = 0; i < SubAttributeCount; i++) |
473 | { | 475 | { |
474 | SubAttribute subAttri = new SubAttribute(this.parent); | 476 | SubAttribute subAttri = new SubAttribute(parent); |
475 | subAttri.ReadData(data, ref pointer); | 477 | subAttri.ReadData(data, ref pointer); |
476 | this.SubAttributes.Add(subAttri); | 478 | SubAttributes.Add(subAttri); |
477 | } | 479 | } |
478 | } | 480 | } |
479 | 481 | ||
480 | public void Print() | 482 | public void Print() |
481 | { | 483 | { |
482 | Console.WriteLine("Method Attribute: "); | 484 | Console.WriteLine("Method Attribute: "); |
483 | Console.WriteLine("Name Index: " + NameIndex + " // " + ((PoolUtf8)this.parent.m_constantsPool[NameIndex - 1]).Value); | 485 | Console.WriteLine("Name Index: " + NameIndex + " // " + |
486 | ((PoolUtf8) parent.m_constantsPool[NameIndex - 1]).Value); | ||
484 | Console.WriteLine("Length: " + Length); | 487 | Console.WriteLine("Length: " + Length); |
485 | Console.WriteLine("MaxStack: " + MaxStack); | 488 | Console.WriteLine("MaxStack: " + MaxStack); |
486 | Console.WriteLine("MaxLocals: " + MaxLocals); | 489 | Console.WriteLine("MaxLocals: " + MaxLocals); |
@@ -492,7 +495,7 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
492 | Console.WriteLine("SubAttributes: " + SubAttributeCount); | 495 | Console.WriteLine("SubAttributes: " + SubAttributeCount); |
493 | for (int i = 0; i < SubAttributeCount; i++) | 496 | for (int i = 0; i < SubAttributeCount; i++) |
494 | { | 497 | { |
495 | this.SubAttributes[i].Print(); | 498 | SubAttributes[i].Print(); |
496 | } | 499 | } |
497 | } | 500 | } |
498 | 501 | ||
@@ -511,8 +514,11 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
511 | 514 | ||
512 | public void ReadData(byte[] data, ref int pointer) | 515 | public void ReadData(byte[] data, ref int pointer) |
513 | { | 516 | { |
514 | NameIndex = (ushort)((data[pointer++] << 8) + data[pointer++]); | 517 | NameIndex = (ushort) ((data[pointer++] << 8) + data[pointer++]); |
515 | Length = (Int32)((data[pointer++] << 24) + (data[pointer++] << 16) + (data[pointer++] << 8) + data[pointer++]); | 518 | Length = |
519 | (Int32) | ||
520 | ((data[pointer++] << 24) + (data[pointer++] << 16) + (data[pointer++] << 8) + | ||
521 | data[pointer++]); | ||
516 | Data = new byte[Length]; | 522 | Data = new byte[Length]; |
517 | for (int i = 0; i < Length; i++) | 523 | for (int i = 0; i < Length; i++) |
518 | { | 524 | { |
@@ -522,18 +528,17 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
522 | 528 | ||
523 | public void Print() | 529 | public void Print() |
524 | { | 530 | { |
525 | Console.WriteLine("SubAttribute: NameIndex: " + NameIndex + " // " + ((PoolUtf8)this.parent.m_constantsPool[NameIndex - 1]).Value); | 531 | Console.WriteLine("SubAttribute: NameIndex: " + NameIndex + " // " + |
532 | ((PoolUtf8) parent.m_constantsPool[NameIndex - 1]).Value); | ||
526 | } | 533 | } |
527 | |||
528 | } | 534 | } |
529 | } | 535 | } |
530 | |||
531 | } | 536 | } |
537 | |||
532 | private class InterfaceInfo | 538 | private class InterfaceInfo |
533 | { | 539 | { |
534 | public void ReadData(byte[] data, ref int i) | 540 | public void ReadData(byte[] data, ref int i) |
535 | { | 541 | { |
536 | |||
537 | } | 542 | } |
538 | } | 543 | } |
539 | 544 | ||
@@ -554,15 +559,15 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
554 | 559 | ||
555 | public void ReadData(byte[] data, ref int pointer) | 560 | public void ReadData(byte[] data, ref int pointer) |
556 | { | 561 | { |
557 | AccessFlags = (ushort)((data[pointer++] << 8) + data[pointer++]); | 562 | AccessFlags = (ushort) ((data[pointer++] << 8) + data[pointer++]); |
558 | NameIndex = (ushort)((data[pointer++] << 8) + data[pointer++]); | 563 | NameIndex = (ushort) ((data[pointer++] << 8) + data[pointer++]); |
559 | DescriptorIndex = (ushort)((data[pointer++] << 8) + data[pointer++]); | 564 | DescriptorIndex = (ushort) ((data[pointer++] << 8) + data[pointer++]); |
560 | AttributeCount = (ushort)((data[pointer++] << 8) + data[pointer++]); | 565 | AttributeCount = (ushort) ((data[pointer++] << 8) + data[pointer++]); |
561 | for (int i = 0; i < AttributeCount; i++) | 566 | for (int i = 0; i < AttributeCount; i++) |
562 | { | 567 | { |
563 | FieldAttribute attri = new FieldAttribute(this.parent); | 568 | FieldAttribute attri = new FieldAttribute(parent); |
564 | attri.ReadData(data, ref pointer); | 569 | attri.ReadData(data, ref pointer); |
565 | this.Attributes.Add(attri); | 570 | Attributes.Add(attri); |
566 | } | 571 | } |
567 | } | 572 | } |
568 | 573 | ||
@@ -570,29 +575,30 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
570 | { | 575 | { |
571 | Console.WriteLine("Field Info Struct: "); | 576 | Console.WriteLine("Field Info Struct: "); |
572 | Console.WriteLine("AccessFlags: " + AccessFlags); | 577 | Console.WriteLine("AccessFlags: " + AccessFlags); |
573 | Console.WriteLine("NameIndex: " + NameIndex + " // " + ((PoolUtf8)this.parent.m_constantsPool[NameIndex - 1]).Value); | 578 | Console.WriteLine("NameIndex: " + NameIndex + " // " + |
574 | Console.WriteLine("DescriptorIndex: " + DescriptorIndex + " // " + ((PoolUtf8)this.parent.m_constantsPool[DescriptorIndex - 1]).Value); | 579 | ((PoolUtf8) parent.m_constantsPool[NameIndex - 1]).Value); |
580 | Console.WriteLine("DescriptorIndex: " + DescriptorIndex + " // " + | ||
581 | ((PoolUtf8) parent.m_constantsPool[DescriptorIndex - 1]).Value); | ||
575 | Console.WriteLine("Attribute Count:" + AttributeCount); | 582 | Console.WriteLine("Attribute Count:" + AttributeCount); |
576 | //if static, add to static field list | 583 | //if static, add to static field list |
577 | // if (this.AccessFlags == 9) //public and static | 584 | // if (this.AccessFlags == 9) //public and static |
578 | if ((this.AccessFlags & 0x08) != 0) | 585 | if ((AccessFlags & 0x08) != 0) |
579 | { | 586 | { |
580 | switch (((PoolUtf8)this.parent.m_constantsPool[DescriptorIndex - 1]).Value) | 587 | switch (((PoolUtf8) parent.m_constantsPool[DescriptorIndex - 1]).Value) |
581 | { | 588 | { |
582 | case "I": | 589 | case "I": |
583 | Int newin = new Int(); | 590 | Int newin = new Int(); |
584 | this.parent.StaticFields.Add(((PoolUtf8)this.parent.m_constantsPool[NameIndex - 1]).Value, newin); | 591 | parent.StaticFields.Add(((PoolUtf8) parent.m_constantsPool[NameIndex - 1]).Value, newin); |
585 | break; | 592 | break; |
586 | case "F": | 593 | case "F": |
587 | Float newfl = new Float(); | 594 | Float newfl = new Float(); |
588 | this.parent.StaticFields.Add(((PoolUtf8)this.parent.m_constantsPool[NameIndex - 1]).Value, newfl); | 595 | parent.StaticFields.Add(((PoolUtf8) parent.m_constantsPool[NameIndex - 1]).Value, newfl); |
589 | break; | 596 | break; |
590 | } | 597 | } |
591 | |||
592 | } | 598 | } |
593 | for (int i = 0; i < AttributeCount; i++) | 599 | for (int i = 0; i < AttributeCount; i++) |
594 | { | 600 | { |
595 | this.Attributes[i].Print(); | 601 | Attributes[i].Print(); |
596 | } | 602 | } |
597 | } | 603 | } |
598 | 604 | ||
@@ -611,8 +617,10 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
611 | 617 | ||
612 | public void ReadData(byte[] data, ref int pointer) | 618 | public void ReadData(byte[] data, ref int pointer) |
613 | { | 619 | { |
614 | NameIndex = (ushort)((data[pointer++] << 8) + data[pointer++]); | 620 | NameIndex = (ushort) ((data[pointer++] << 8) + data[pointer++]); |
615 | Length = (Int32)((data[pointer++] << 24) + (data[pointer++] << 16) + (data[pointer++] << 8) + data[pointer++]); | 621 | Length = |
622 | (Int32) | ||
623 | ((data[pointer++] << 24) + (data[pointer++] << 16) + (data[pointer++] << 8) + data[pointer++]); | ||
616 | Data = new byte[Length]; | 624 | Data = new byte[Length]; |
617 | for (int i = 0; i < Length; i++) | 625 | for (int i = 0; i < Length; i++) |
618 | { | 626 | { |
@@ -622,7 +630,8 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
622 | 630 | ||
623 | public void Print() | 631 | public void Print() |
624 | { | 632 | { |
625 | Console.WriteLine("FieldAttribute: NameIndex: " + NameIndex + " // " + ((PoolUtf8)this.parent.m_constantsPool[NameIndex - 1]).Value); | 633 | Console.WriteLine("FieldAttribute: NameIndex: " + NameIndex + " // " + |
634 | ((PoolUtf8) parent.m_constantsPool[NameIndex - 1]).Value); | ||
626 | } | 635 | } |
627 | } | 636 | } |
628 | } | 637 | } |
@@ -631,10 +640,9 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
631 | { | 640 | { |
632 | public void ReadData(byte[] data, ref int i) | 641 | public void ReadData(byte[] data, ref int i) |
633 | { | 642 | { |
634 | |||
635 | } | 643 | } |
636 | } | 644 | } |
637 | #endregion | ||
638 | 645 | ||
646 | #endregion | ||
639 | } | 647 | } |
640 | } \ No newline at end of file | 648 | } \ No newline at end of file |
diff --git a/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JVM/Heap.cs b/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JVM/Heap.cs index c76767a..9876caa 100644 --- a/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JVM/Heap.cs +++ b/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JVM/Heap.cs | |||
@@ -25,9 +25,7 @@ | |||
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 | using System; | ||
29 | using System.Collections.Generic; | 28 | using System.Collections.Generic; |
30 | using System.Text; | ||
31 | 29 | ||
32 | namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | 30 | namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM |
33 | { | 31 | { |
@@ -37,7 +35,6 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
37 | 35 | ||
38 | public Heap() | 36 | public Heap() |
39 | { | 37 | { |
40 | |||
41 | } | 38 | } |
42 | } | 39 | } |
43 | } | 40 | } \ No newline at end of file |
diff --git a/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JVM/Interpreter.Logic.cs b/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JVM/Interpreter.Logic.cs index 6b8930e..b172562 100644 --- a/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JVM/Interpreter.Logic.cs +++ b/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JVM/Interpreter.Logic.cs | |||
@@ -25,9 +25,6 @@ | |||
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 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Text; | ||
31 | using OpenSim.Region.ExtensionsScriptModule.JVMEngine.Types; | 28 | using OpenSim.Region.ExtensionsScriptModule.JVMEngine.Types; |
32 | using OpenSim.Region.ExtensionsScriptModule.JVMEngine.Types.PrimitiveTypes; | 29 | using OpenSim.Region.ExtensionsScriptModule.JVMEngine.Types.PrimitiveTypes; |
33 | 30 | ||
@@ -42,304 +39,313 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
42 | bool result = false; | 39 | bool result = false; |
43 | switch (opcode) | 40 | switch (opcode) |
44 | { | 41 | { |
45 | case (byte)(byte)OpCode.iconst_m1: | 42 | case (byte) (byte) OpCode.iconst_m1: |
46 | Int m_int = new Int(); | 43 | Int m_int = new Int(); |
47 | m_int.mValue = -1; | 44 | m_int.mValue = -1; |
48 | this.m_thread.m_currentFrame.OpStack.Push(m_int); | 45 | m_thread.m_currentFrame.OpStack.Push(m_int); |
49 | result = true; | 46 | result = true; |
50 | break; | 47 | break; |
51 | case (byte)(byte)OpCode.iconst_0: | 48 | case (byte) (byte) OpCode.iconst_0: |
52 | m_int = new Int(); | 49 | m_int = new Int(); |
53 | m_int.mValue = 0; | 50 | m_int.mValue = 0; |
54 | this.m_thread.m_currentFrame.OpStack.Push(m_int); | 51 | m_thread.m_currentFrame.OpStack.Push(m_int); |
55 | result = true; | 52 | result = true; |
56 | break; | 53 | break; |
57 | case (byte)(byte)OpCode.iconst_1: | 54 | case (byte) (byte) OpCode.iconst_1: |
58 | m_int = new Int(); | 55 | m_int = new Int(); |
59 | m_int.mValue = 1; | 56 | m_int.mValue = 1; |
60 | this.m_thread.m_currentFrame.OpStack.Push(m_int); | 57 | m_thread.m_currentFrame.OpStack.Push(m_int); |
61 | result = true; | 58 | result = true; |
62 | break; | 59 | break; |
63 | case (byte)(byte)OpCode.iconst_2: | 60 | case (byte) (byte) OpCode.iconst_2: |
64 | m_int = new Int(); | 61 | m_int = new Int(); |
65 | m_int.mValue = 2; | 62 | m_int.mValue = 2; |
66 | this.m_thread.m_currentFrame.OpStack.Push(m_int); | 63 | m_thread.m_currentFrame.OpStack.Push(m_int); |
67 | result = true; | 64 | result = true; |
68 | break; | 65 | break; |
69 | case (byte)(byte)OpCode.iconst_3: | 66 | case (byte) (byte) OpCode.iconst_3: |
70 | m_int = new Int(); | 67 | m_int = new Int(); |
71 | m_int.mValue = 3; | 68 | m_int.mValue = 3; |
72 | this.m_thread.m_currentFrame.OpStack.Push(m_int); | 69 | m_thread.m_currentFrame.OpStack.Push(m_int); |
73 | break; | 70 | break; |
74 | case (byte)(byte)OpCode.iconst_4: | 71 | case (byte) (byte) OpCode.iconst_4: |
75 | m_int = new Int(); | 72 | m_int = new Int(); |
76 | m_int.mValue = 4; | 73 | m_int.mValue = 4; |
77 | this.m_thread.m_currentFrame.OpStack.Push(m_int); | 74 | m_thread.m_currentFrame.OpStack.Push(m_int); |
78 | result = true; | 75 | result = true; |
79 | break; | 76 | break; |
80 | case (byte)OpCode.iconst_5: | 77 | case (byte) OpCode.iconst_5: |
81 | m_int = new Int(); | 78 | m_int = new Int(); |
82 | m_int.mValue = 5; | 79 | m_int.mValue = 5; |
83 | this.m_thread.m_currentFrame.OpStack.Push(m_int); | 80 | m_thread.m_currentFrame.OpStack.Push(m_int); |
84 | result = true; | 81 | result = true; |
85 | break; | 82 | break; |
86 | case (byte)OpCode.fconst_0: | 83 | case (byte) OpCode.fconst_0: |
87 | Float m_float = new Float(); | 84 | Float m_float = new Float(); |
88 | m_float.mValue = 0.0f; | 85 | m_float.mValue = 0.0f; |
89 | this.m_thread.m_currentFrame.OpStack.Push(m_float); | 86 | m_thread.m_currentFrame.OpStack.Push(m_float); |
90 | result = true; | 87 | result = true; |
91 | break; | 88 | break; |
92 | case (byte)OpCode.fconst_1: | 89 | case (byte) OpCode.fconst_1: |
93 | m_float = new Float(); | 90 | m_float = new Float(); |
94 | m_float.mValue = 1.0f; | 91 | m_float.mValue = 1.0f; |
95 | this.m_thread.m_currentFrame.OpStack.Push(m_float); | 92 | m_thread.m_currentFrame.OpStack.Push(m_float); |
96 | result = true; | 93 | result = true; |
97 | break; | 94 | break; |
98 | case (byte)OpCode.fconst_2: | 95 | case (byte) OpCode.fconst_2: |
99 | m_float = new Float(); | 96 | m_float = new Float(); |
100 | m_float.mValue = 2.0f; | 97 | m_float.mValue = 2.0f; |
101 | this.m_thread.m_currentFrame.OpStack.Push(m_float); | 98 | m_thread.m_currentFrame.OpStack.Push(m_float); |
102 | result = true; | 99 | result = true; |
103 | break; | 100 | break; |
104 | case (byte)OpCode.bipush: //is this right? this should be pushing a byte onto stack not int? | 101 | case (byte) OpCode.bipush: //is this right? this should be pushing a byte onto stack not int? |
105 | int pushvalue = (int)GlobalMemory.MethodArea.MethodBuffer[this.m_thread.PC]; | 102 | int pushvalue = (int) GlobalMemory.MethodArea.MethodBuffer[m_thread.PC]; |
106 | Int pushInt = new Int(); | 103 | Int pushInt = new Int(); |
107 | pushInt.mValue = pushvalue; | 104 | pushInt.mValue = pushvalue; |
108 | this.m_thread.m_currentFrame.OpStack.Push(pushInt); | 105 | m_thread.m_currentFrame.OpStack.Push(pushInt); |
109 | this.m_thread.PC++; | 106 | m_thread.PC++; |
110 | result = true; | 107 | result = true; |
111 | break; | 108 | break; |
112 | case (byte)OpCode.sipush: | 109 | case (byte) OpCode.sipush: |
113 | short pushvalue2 = (short)((GlobalMemory.MethodArea.MethodBuffer[this.m_thread.PC] << 8) + GlobalMemory.MethodArea.MethodBuffer[this.m_thread.PC + 1]); | 110 | short pushvalue2 = |
111 | (short) | ||
112 | ((GlobalMemory.MethodArea.MethodBuffer[m_thread.PC] << 8) + | ||
113 | GlobalMemory.MethodArea.MethodBuffer[m_thread.PC + 1]); | ||
114 | Int pushInt2 = new Int(); | 114 | Int pushInt2 = new Int(); |
115 | pushInt2.mValue = pushvalue2; | 115 | pushInt2.mValue = pushvalue2; |
116 | this.m_thread.m_currentFrame.OpStack.Push(pushInt2); | 116 | m_thread.m_currentFrame.OpStack.Push(pushInt2); |
117 | this.m_thread.PC += 2; | 117 | m_thread.PC += 2; |
118 | result = true; | 118 | result = true; |
119 | break; | 119 | break; |
120 | case (byte)OpCode.fload: | 120 | case (byte) OpCode.fload: |
121 | short findex1 = (short)((GlobalMemory.MethodArea.MethodBuffer[this.m_thread.PC])); | 121 | short findex1 = (short) ((GlobalMemory.MethodArea.MethodBuffer[m_thread.PC])); |
122 | Float fload = new Float(); | 122 | Float fload = new Float(); |
123 | if (this.m_thread.m_currentFrame.LocalVariables[findex1] != null) | 123 | if (m_thread.m_currentFrame.LocalVariables[findex1] != null) |
124 | { | 124 | { |
125 | if (this.m_thread.m_currentFrame.LocalVariables[findex1] is Float) | 125 | if (m_thread.m_currentFrame.LocalVariables[findex1] is Float) |
126 | { | 126 | { |
127 | fload.mValue = ((Float)this.m_thread.m_currentFrame.LocalVariables[findex1]).mValue; | 127 | fload.mValue = ((Float) m_thread.m_currentFrame.LocalVariables[findex1]).mValue; |
128 | this.m_thread.m_currentFrame.OpStack.Push(fload); | 128 | m_thread.m_currentFrame.OpStack.Push(fload); |
129 | } | 129 | } |
130 | } | 130 | } |
131 | this.m_thread.PC++; | 131 | m_thread.PC++; |
132 | result = true; | 132 | result = true; |
133 | break; | 133 | break; |
134 | case (byte)OpCode.iload_0: | 134 | case (byte) OpCode.iload_0: |
135 | if (this.m_thread.m_currentFrame.LocalVariables[0] != null) | 135 | if (m_thread.m_currentFrame.LocalVariables[0] != null) |
136 | { | 136 | { |
137 | if (this.m_thread.m_currentFrame.LocalVariables[0] is Int) | 137 | if (m_thread.m_currentFrame.LocalVariables[0] is Int) |
138 | { | 138 | { |
139 | Int newInt = new Int(); | 139 | Int newInt = new Int(); |
140 | newInt.mValue = ((Int)this.m_thread.m_currentFrame.LocalVariables[0]).mValue; | 140 | newInt.mValue = ((Int) m_thread.m_currentFrame.LocalVariables[0]).mValue; |
141 | this.m_thread.m_currentFrame.OpStack.Push(newInt); | 141 | m_thread.m_currentFrame.OpStack.Push(newInt); |
142 | } | 142 | } |
143 | } | 143 | } |
144 | result = true; | 144 | result = true; |
145 | break; | 145 | break; |
146 | case (byte)OpCode.iload_1: | 146 | case (byte) OpCode.iload_1: |
147 | if (this.m_thread.m_currentFrame.LocalVariables[1] != null) | 147 | if (m_thread.m_currentFrame.LocalVariables[1] != null) |
148 | { | 148 | { |
149 | if (this.m_thread.m_currentFrame.LocalVariables[1] is Int) | 149 | if (m_thread.m_currentFrame.LocalVariables[1] is Int) |
150 | { | 150 | { |
151 | Int newInt = new Int(); | 151 | Int newInt = new Int(); |
152 | newInt.mValue = ((Int)this.m_thread.m_currentFrame.LocalVariables[1]).mValue; | 152 | newInt.mValue = ((Int) m_thread.m_currentFrame.LocalVariables[1]).mValue; |
153 | this.m_thread.m_currentFrame.OpStack.Push(newInt); | 153 | m_thread.m_currentFrame.OpStack.Push(newInt); |
154 | } | 154 | } |
155 | } | 155 | } |
156 | result = true; | 156 | result = true; |
157 | break; | 157 | break; |
158 | case (byte)OpCode.fload_0: | 158 | case (byte) OpCode.fload_0: |
159 | if (this.m_thread.m_currentFrame.LocalVariables[0] != null) | 159 | if (m_thread.m_currentFrame.LocalVariables[0] != null) |
160 | { | 160 | { |
161 | if (this.m_thread.m_currentFrame.LocalVariables[0] is Float) | 161 | if (m_thread.m_currentFrame.LocalVariables[0] is Float) |
162 | { | 162 | { |
163 | Float newfloat = new Float(); | 163 | Float newfloat = new Float(); |
164 | newfloat.mValue = ((Float)this.m_thread.m_currentFrame.LocalVariables[0]).mValue; | 164 | newfloat.mValue = ((Float) m_thread.m_currentFrame.LocalVariables[0]).mValue; |
165 | this.m_thread.m_currentFrame.OpStack.Push(newfloat); | 165 | m_thread.m_currentFrame.OpStack.Push(newfloat); |
166 | } | 166 | } |
167 | } | 167 | } |
168 | result = true; | 168 | result = true; |
169 | break; | 169 | break; |
170 | case (byte)OpCode.fload_1: | 170 | case (byte) OpCode.fload_1: |
171 | if (this.m_thread.m_currentFrame.LocalVariables[1] != null) | 171 | if (m_thread.m_currentFrame.LocalVariables[1] != null) |
172 | { | 172 | { |
173 | if (this.m_thread.m_currentFrame.LocalVariables[1] is Float) | 173 | if (m_thread.m_currentFrame.LocalVariables[1] is Float) |
174 | { | 174 | { |
175 | Float newfloat = new Float(); | 175 | Float newfloat = new Float(); |
176 | newfloat.mValue = ((Float)this.m_thread.m_currentFrame.LocalVariables[1]).mValue; | 176 | newfloat.mValue = ((Float) m_thread.m_currentFrame.LocalVariables[1]).mValue; |
177 | this.m_thread.m_currentFrame.OpStack.Push(newfloat); | 177 | m_thread.m_currentFrame.OpStack.Push(newfloat); |
178 | } | 178 | } |
179 | } | 179 | } |
180 | result = true; | 180 | result = true; |
181 | break; | 181 | break; |
182 | case (byte)OpCode.fload_2: | 182 | case (byte) OpCode.fload_2: |
183 | if (this.m_thread.m_currentFrame.LocalVariables[2] != null) | 183 | if (m_thread.m_currentFrame.LocalVariables[2] != null) |
184 | { | 184 | { |
185 | if (this.m_thread.m_currentFrame.LocalVariables[2] is Float) | 185 | if (m_thread.m_currentFrame.LocalVariables[2] is Float) |
186 | { | 186 | { |
187 | Float newfloat = new Float(); | 187 | Float newfloat = new Float(); |
188 | newfloat.mValue = ((Float)this.m_thread.m_currentFrame.LocalVariables[2]).mValue; | 188 | newfloat.mValue = ((Float) m_thread.m_currentFrame.LocalVariables[2]).mValue; |
189 | this.m_thread.m_currentFrame.OpStack.Push(newfloat); | 189 | m_thread.m_currentFrame.OpStack.Push(newfloat); |
190 | } | 190 | } |
191 | } | 191 | } |
192 | result = true; | 192 | result = true; |
193 | break; | 193 | break; |
194 | case (byte)OpCode.fload_3: | 194 | case (byte) OpCode.fload_3: |
195 | if (this.m_thread.m_currentFrame.LocalVariables[3] != null) | 195 | if (m_thread.m_currentFrame.LocalVariables[3] != null) |
196 | { | 196 | { |
197 | if (this.m_thread.m_currentFrame.LocalVariables[3] is Float) | 197 | if (m_thread.m_currentFrame.LocalVariables[3] is Float) |
198 | { | 198 | { |
199 | Float newfloat = new Float(); | 199 | Float newfloat = new Float(); |
200 | newfloat.mValue = ((Float)this.m_thread.m_currentFrame.LocalVariables[3]).mValue; | 200 | newfloat.mValue = ((Float) m_thread.m_currentFrame.LocalVariables[3]).mValue; |
201 | this.m_thread.m_currentFrame.OpStack.Push(newfloat); | 201 | m_thread.m_currentFrame.OpStack.Push(newfloat); |
202 | } | 202 | } |
203 | } | 203 | } |
204 | result = true; | 204 | result = true; |
205 | break; | 205 | break; |
206 | case (byte)OpCode.istore: | 206 | case (byte) OpCode.istore: |
207 | short findex3 = (short)((GlobalMemory.MethodArea.MethodBuffer[this.m_thread.PC])); | 207 | short findex3 = (short) ((GlobalMemory.MethodArea.MethodBuffer[m_thread.PC])); |
208 | BaseType istor = this.m_thread.m_currentFrame.OpStack.Pop(); | 208 | BaseType istor = m_thread.m_currentFrame.OpStack.Pop(); |
209 | if (istor is Int) | 209 | if (istor is Int) |
210 | { | 210 | { |
211 | this.m_thread.m_currentFrame.LocalVariables[findex3] = (Int)istor; | 211 | m_thread.m_currentFrame.LocalVariables[findex3] = (Int) istor; |
212 | } | 212 | } |
213 | this.m_thread.PC++; | 213 | m_thread.PC++; |
214 | result = true; | 214 | result = true; |
215 | break; | 215 | break; |
216 | case (byte)OpCode.fstore: | 216 | case (byte) OpCode.fstore: |
217 | short findex = (short)((GlobalMemory.MethodArea.MethodBuffer[this.m_thread.PC])); | 217 | short findex = (short) ((GlobalMemory.MethodArea.MethodBuffer[m_thread.PC])); |
218 | BaseType fstor = this.m_thread.m_currentFrame.OpStack.Pop(); | 218 | BaseType fstor = m_thread.m_currentFrame.OpStack.Pop(); |
219 | if (fstor is Float) | 219 | if (fstor is Float) |
220 | { | 220 | { |
221 | this.m_thread.m_currentFrame.LocalVariables[findex] = (Float)fstor; | 221 | m_thread.m_currentFrame.LocalVariables[findex] = (Float) fstor; |
222 | } | 222 | } |
223 | this.m_thread.PC++; | 223 | m_thread.PC++; |
224 | result = true; | 224 | result = true; |
225 | break; | 225 | break; |
226 | case (byte)OpCode.istore_0: | 226 | case (byte) OpCode.istore_0: |
227 | BaseType baset = this.m_thread.m_currentFrame.OpStack.Pop(); | 227 | BaseType baset = m_thread.m_currentFrame.OpStack.Pop(); |
228 | if (baset is Int) | 228 | if (baset is Int) |
229 | { | 229 | { |
230 | this.m_thread.m_currentFrame.LocalVariables[0] = (Int)baset; | 230 | m_thread.m_currentFrame.LocalVariables[0] = (Int) baset; |
231 | } | 231 | } |
232 | result = true; | 232 | result = true; |
233 | break; | 233 | break; |
234 | case (byte)OpCode.istore_1: | 234 | case (byte) OpCode.istore_1: |
235 | baset = this.m_thread.m_currentFrame.OpStack.Pop(); | 235 | baset = m_thread.m_currentFrame.OpStack.Pop(); |
236 | if (baset is Int) | 236 | if (baset is Int) |
237 | { | 237 | { |
238 | this.m_thread.m_currentFrame.LocalVariables[1] = (Int)baset; | 238 | m_thread.m_currentFrame.LocalVariables[1] = (Int) baset; |
239 | } | 239 | } |
240 | result = true; | 240 | result = true; |
241 | break; | 241 | break; |
242 | case (byte)OpCode.fstore_0: | 242 | case (byte) OpCode.fstore_0: |
243 | baset = this.m_thread.m_currentFrame.OpStack.Pop(); | 243 | baset = m_thread.m_currentFrame.OpStack.Pop(); |
244 | if (baset is Float) | 244 | if (baset is Float) |
245 | { | 245 | { |
246 | this.m_thread.m_currentFrame.LocalVariables[0] = (Float)baset; | 246 | m_thread.m_currentFrame.LocalVariables[0] = (Float) baset; |
247 | } | 247 | } |
248 | result = true; | 248 | result = true; |
249 | break; | 249 | break; |
250 | case (byte)OpCode.fstore_1: | 250 | case (byte) OpCode.fstore_1: |
251 | baset = this.m_thread.m_currentFrame.OpStack.Pop(); | 251 | baset = m_thread.m_currentFrame.OpStack.Pop(); |
252 | if (baset is Float) | 252 | if (baset is Float) |
253 | { | 253 | { |
254 | this.m_thread.m_currentFrame.LocalVariables[1] = (Float)baset; | 254 | m_thread.m_currentFrame.LocalVariables[1] = (Float) baset; |
255 | } | 255 | } |
256 | result = true; | 256 | result = true; |
257 | break; | 257 | break; |
258 | case (byte)OpCode.fstore_2: | 258 | case (byte) OpCode.fstore_2: |
259 | baset = this.m_thread.m_currentFrame.OpStack.Pop(); | 259 | baset = m_thread.m_currentFrame.OpStack.Pop(); |
260 | if (baset is Float) | 260 | if (baset is Float) |
261 | { | 261 | { |
262 | this.m_thread.m_currentFrame.LocalVariables[2] = (Float)baset; | 262 | m_thread.m_currentFrame.LocalVariables[2] = (Float) baset; |
263 | } | 263 | } |
264 | result = true; | 264 | result = true; |
265 | break; | 265 | break; |
266 | case (byte)OpCode.fstore_3: | 266 | case (byte) OpCode.fstore_3: |
267 | baset = this.m_thread.m_currentFrame.OpStack.Pop(); | 267 | baset = m_thread.m_currentFrame.OpStack.Pop(); |
268 | if (baset is Float) | 268 | if (baset is Float) |
269 | { | 269 | { |
270 | this.m_thread.m_currentFrame.LocalVariables[3] = (Float)baset; | 270 | m_thread.m_currentFrame.LocalVariables[3] = (Float) baset; |
271 | } | 271 | } |
272 | result = true; | 272 | result = true; |
273 | break; | 273 | break; |
274 | case (byte)OpCode.pop: | 274 | case (byte) OpCode.pop: |
275 | this.m_thread.m_currentFrame.OpStack.Pop(); | 275 | m_thread.m_currentFrame.OpStack.Pop(); |
276 | result = true; | 276 | result = true; |
277 | break; | 277 | break; |
278 | case (byte)OpCode.fadd: | 278 | case (byte) OpCode.fadd: |
279 | BaseType bf2 = this.m_thread.m_currentFrame.OpStack.Pop(); | 279 | BaseType bf2 = m_thread.m_currentFrame.OpStack.Pop(); |
280 | BaseType bf1 = this.m_thread.m_currentFrame.OpStack.Pop(); | 280 | BaseType bf1 = m_thread.m_currentFrame.OpStack.Pop(); |
281 | if (bf1 is Float && bf2 is Float) | 281 | if (bf1 is Float && bf2 is Float) |
282 | { | 282 | { |
283 | Float nflt = new Float(); | 283 | Float nflt = new Float(); |
284 | nflt.mValue = ((Float)bf1).mValue + ((Float)bf2).mValue; | 284 | nflt.mValue = ((Float) bf1).mValue + ((Float) bf2).mValue; |
285 | this.m_thread.m_currentFrame.OpStack.Push(nflt); | 285 | m_thread.m_currentFrame.OpStack.Push(nflt); |
286 | } | 286 | } |
287 | result = true; | 287 | result = true; |
288 | break; | 288 | break; |
289 | case (byte)OpCode.fsub: | 289 | case (byte) OpCode.fsub: |
290 | BaseType bsf2 = this.m_thread.m_currentFrame.OpStack.Pop(); | 290 | BaseType bsf2 = m_thread.m_currentFrame.OpStack.Pop(); |
291 | BaseType bsf1 = this.m_thread.m_currentFrame.OpStack.Pop(); | 291 | BaseType bsf1 = m_thread.m_currentFrame.OpStack.Pop(); |
292 | if (bsf1 is Float && bsf2 is Float) | 292 | if (bsf1 is Float && bsf2 is Float) |
293 | { | 293 | { |
294 | Float resf = new Float(); | 294 | Float resf = new Float(); |
295 | resf.mValue = ((Float)bsf1).mValue - ((Float)bsf2).mValue; | 295 | resf.mValue = ((Float) bsf1).mValue - ((Float) bsf2).mValue; |
296 | this.m_thread.m_currentFrame.OpStack.Push(resf); | 296 | m_thread.m_currentFrame.OpStack.Push(resf); |
297 | } | 297 | } |
298 | result = true; | 298 | result = true; |
299 | break; | 299 | break; |
300 | case (byte)OpCode.imul: //check the order of the two values off the stack is correct | 300 | case (byte) OpCode.imul: //check the order of the two values off the stack is correct |
301 | BaseType bs2 = this.m_thread.m_currentFrame.OpStack.Pop(); | 301 | BaseType bs2 = m_thread.m_currentFrame.OpStack.Pop(); |
302 | BaseType bs1 = this.m_thread.m_currentFrame.OpStack.Pop(); | 302 | BaseType bs1 = m_thread.m_currentFrame.OpStack.Pop(); |
303 | if (bs1 is Int && bs2 is Int) | 303 | if (bs1 is Int && bs2 is Int) |
304 | { | 304 | { |
305 | Int nInt = new Int(); | 305 | Int nInt = new Int(); |
306 | nInt.mValue = ((Int)bs1).mValue * ((Int)bs2).mValue; | 306 | nInt.mValue = ((Int) bs1).mValue*((Int) bs2).mValue; |
307 | this.m_thread.m_currentFrame.OpStack.Push(nInt); | 307 | m_thread.m_currentFrame.OpStack.Push(nInt); |
308 | } | 308 | } |
309 | result = true; | 309 | result = true; |
310 | break; | 310 | break; |
311 | case (byte)OpCode.iinc: | 311 | case (byte) OpCode.iinc: |
312 | if (this.m_thread.m_currentFrame.LocalVariables[GlobalMemory.MethodArea.MethodBuffer[this.m_thread.PC]] != null) | 312 | if (m_thread.m_currentFrame.LocalVariables[GlobalMemory.MethodArea.MethodBuffer[m_thread.PC]] != |
313 | null) | ||
313 | { | 314 | { |
314 | if (this.m_thread.m_currentFrame.LocalVariables[GlobalMemory.MethodArea.MethodBuffer[this.m_thread.PC]] is Int) | 315 | if ( |
316 | m_thread.m_currentFrame.LocalVariables[GlobalMemory.MethodArea.MethodBuffer[m_thread.PC] | ||
317 | ] is Int) | ||
315 | { | 318 | { |
316 | ((Int)this.m_thread.m_currentFrame.LocalVariables[GlobalMemory.MethodArea.MethodBuffer[this.m_thread.PC]]).mValue += (sbyte)GlobalMemory.MethodArea.MethodBuffer[this.m_thread.PC + 1]; | 319 | ((Int) |
320 | m_thread.m_currentFrame.LocalVariables[ | ||
321 | GlobalMemory.MethodArea.MethodBuffer[m_thread.PC]]).mValue += | ||
322 | (sbyte) GlobalMemory.MethodArea.MethodBuffer[m_thread.PC + 1]; | ||
317 | } | 323 | } |
318 | } | 324 | } |
319 | this.m_thread.PC += 2; | 325 | m_thread.PC += 2; |
320 | result = true; | 326 | result = true; |
321 | break; | 327 | break; |
322 | case (byte)OpCode.f2i: | 328 | case (byte) OpCode.f2i: |
323 | BaseType conv1 = this.m_thread.m_currentFrame.OpStack.Pop(); | 329 | BaseType conv1 = m_thread.m_currentFrame.OpStack.Pop(); |
324 | if (conv1 is Float) | 330 | if (conv1 is Float) |
325 | { | 331 | { |
326 | Int newconv = new Int(); | 332 | Int newconv = new Int(); |
327 | newconv.mValue = (int)((Float)conv1).mValue; | 333 | newconv.mValue = (int) ((Float) conv1).mValue; |
328 | this.m_thread.m_currentFrame.OpStack.Push(newconv); | 334 | m_thread.m_currentFrame.OpStack.Push(newconv); |
329 | } | 335 | } |
330 | result = true; | 336 | result = true; |
331 | break; | 337 | break; |
332 | case (byte)OpCode.fcmpl: | 338 | case (byte) OpCode.fcmpl: |
333 | BaseType flcom2 = this.m_thread.m_currentFrame.OpStack.Pop(); | 339 | BaseType flcom2 = m_thread.m_currentFrame.OpStack.Pop(); |
334 | BaseType flcom1 = this.m_thread.m_currentFrame.OpStack.Pop(); | 340 | BaseType flcom1 = m_thread.m_currentFrame.OpStack.Pop(); |
335 | if (flcom1 is Float && flcom2 is Float) | 341 | if (flcom1 is Float && flcom2 is Float) |
336 | { | 342 | { |
337 | Int compres = new Int(); | 343 | Int compres = new Int(); |
338 | if (((Float)flcom1).mValue < ((Float)flcom2).mValue) | 344 | if (((Float) flcom1).mValue < ((Float) flcom2).mValue) |
339 | { | 345 | { |
340 | compres.mValue = -1; | 346 | compres.mValue = -1; |
341 | } | 347 | } |
342 | else if (((Float)flcom1).mValue > ((Float)flcom2).mValue) | 348 | else if (((Float) flcom1).mValue > ((Float) flcom2).mValue) |
343 | { | 349 | { |
344 | compres.mValue = 1; | 350 | compres.mValue = 1; |
345 | } | 351 | } |
@@ -347,21 +353,21 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
347 | { | 353 | { |
348 | compres.mValue = 0; | 354 | compres.mValue = 0; |
349 | } | 355 | } |
350 | this.m_thread.m_currentFrame.OpStack.Push(compres); | 356 | m_thread.m_currentFrame.OpStack.Push(compres); |
351 | } | 357 | } |
352 | result = true; | 358 | result = true; |
353 | break; | 359 | break; |
354 | case (byte)OpCode.fcmpg: | 360 | case (byte) OpCode.fcmpg: |
355 | flcom2 = this.m_thread.m_currentFrame.OpStack.Pop(); | 361 | flcom2 = m_thread.m_currentFrame.OpStack.Pop(); |
356 | flcom1 = this.m_thread.m_currentFrame.OpStack.Pop(); | 362 | flcom1 = m_thread.m_currentFrame.OpStack.Pop(); |
357 | if (flcom1 is Float && flcom2 is Float) | 363 | if (flcom1 is Float && flcom2 is Float) |
358 | { | 364 | { |
359 | Int compres = new Int(); | 365 | Int compres = new Int(); |
360 | if (((Float)flcom1).mValue < ((Float)flcom2).mValue) | 366 | if (((Float) flcom1).mValue < ((Float) flcom2).mValue) |
361 | { | 367 | { |
362 | compres.mValue = -1; | 368 | compres.mValue = -1; |
363 | } | 369 | } |
364 | else if (((Float)flcom1).mValue > ((Float)flcom2).mValue) | 370 | else if (((Float) flcom1).mValue > ((Float) flcom2).mValue) |
365 | { | 371 | { |
366 | compres.mValue = 1; | 372 | compres.mValue = 1; |
367 | } | 373 | } |
@@ -369,128 +375,169 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
369 | { | 375 | { |
370 | compres.mValue = 0; | 376 | compres.mValue = 0; |
371 | } | 377 | } |
372 | this.m_thread.m_currentFrame.OpStack.Push(compres); | 378 | m_thread.m_currentFrame.OpStack.Push(compres); |
373 | } | 379 | } |
374 | result = true; | 380 | result = true; |
375 | break; | 381 | break; |
376 | case (byte)OpCode.ifge: | 382 | case (byte) OpCode.ifge: |
377 | short compareoffset2 = (short)((GlobalMemory.MethodArea.MethodBuffer[this.m_thread.PC] << 8) + GlobalMemory.MethodArea.MethodBuffer[this.m_thread.PC + 1]); | 383 | short compareoffset2 = |
378 | BaseType compe1 = this.m_thread.m_currentFrame.OpStack.Pop(); | 384 | (short) |
385 | ((GlobalMemory.MethodArea.MethodBuffer[m_thread.PC] << 8) + | ||
386 | GlobalMemory.MethodArea.MethodBuffer[m_thread.PC + 1]); | ||
387 | BaseType compe1 = m_thread.m_currentFrame.OpStack.Pop(); | ||
379 | if (compe1 is Int) | 388 | if (compe1 is Int) |
380 | { | 389 | { |
381 | if (((Int)compe1).mValue >= 0) | 390 | if (((Int) compe1).mValue >= 0) |
382 | { | 391 | { |
383 | this.m_thread.PC += -1 + compareoffset2; | 392 | m_thread.PC += -1 + compareoffset2; |
384 | } | 393 | } |
385 | else | 394 | else |
386 | { | 395 | { |
387 | this.m_thread.PC += 2; | 396 | m_thread.PC += 2; |
388 | } | 397 | } |
389 | } | 398 | } |
390 | else | 399 | else |
391 | { | 400 | { |
392 | this.m_thread.PC += 2; | 401 | m_thread.PC += 2; |
393 | } | 402 | } |
394 | result = true; | 403 | result = true; |
395 | break; | 404 | break; |
396 | case (byte)OpCode.ifle: | 405 | case (byte) OpCode.ifle: |
397 | short compareoffset1 = (short)((GlobalMemory.MethodArea.MethodBuffer[this.m_thread.PC] << 8) + GlobalMemory.MethodArea.MethodBuffer[this.m_thread.PC + 1]); | 406 | short compareoffset1 = |
398 | BaseType comp1 = this.m_thread.m_currentFrame.OpStack.Pop(); | 407 | (short) |
408 | ((GlobalMemory.MethodArea.MethodBuffer[m_thread.PC] << 8) + | ||
409 | GlobalMemory.MethodArea.MethodBuffer[m_thread.PC + 1]); | ||
410 | BaseType comp1 = m_thread.m_currentFrame.OpStack.Pop(); | ||
399 | if (comp1 is Int) | 411 | if (comp1 is Int) |
400 | { | 412 | { |
401 | if (((Int)comp1).mValue <= 0) | 413 | if (((Int) comp1).mValue <= 0) |
402 | { | 414 | { |
403 | this.m_thread.PC += -1 + compareoffset1; | 415 | m_thread.PC += -1 + compareoffset1; |
404 | } | 416 | } |
405 | else | 417 | else |
406 | { | 418 | { |
407 | this.m_thread.PC += 2; | 419 | m_thread.PC += 2; |
408 | } | 420 | } |
409 | } | 421 | } |
410 | else | 422 | else |
411 | { | 423 | { |
412 | this.m_thread.PC += 2; | 424 | m_thread.PC += 2; |
413 | } | 425 | } |
414 | result = true; | 426 | result = true; |
415 | break; | 427 | break; |
416 | case (byte)OpCode.if_icmpge: | 428 | case (byte) OpCode.if_icmpge: |
417 | short compareoffset = (short)((GlobalMemory.MethodArea.MethodBuffer[this.m_thread.PC] << 8) + GlobalMemory.MethodArea.MethodBuffer[this.m_thread.PC + 1]); | 429 | short compareoffset = |
418 | BaseType bc2 = this.m_thread.m_currentFrame.OpStack.Pop(); | 430 | (short) |
419 | BaseType bc1 = this.m_thread.m_currentFrame.OpStack.Pop(); | 431 | ((GlobalMemory.MethodArea.MethodBuffer[m_thread.PC] << 8) + |
432 | GlobalMemory.MethodArea.MethodBuffer[m_thread.PC + 1]); | ||
433 | BaseType bc2 = m_thread.m_currentFrame.OpStack.Pop(); | ||
434 | BaseType bc1 = m_thread.m_currentFrame.OpStack.Pop(); | ||
420 | if (bc1 is Int && bc2 is Int) | 435 | if (bc1 is Int && bc2 is Int) |
421 | { | 436 | { |
422 | //Console.WriteLine("comparing " + ((Int)bc1).mValue + " and " + ((Int)bc2).mValue); | 437 | //Console.WriteLine("comparing " + ((Int)bc1).mValue + " and " + ((Int)bc2).mValue); |
423 | if (((Int)bc1).mValue >= ((Int)bc2).mValue) | 438 | if (((Int) bc1).mValue >= ((Int) bc2).mValue) |
424 | { | 439 | { |
425 | // Console.WriteLine("branch compare true , offset is " +compareoffset); | 440 | // Console.WriteLine("branch compare true , offset is " +compareoffset); |
426 | // Console.WriteLine("current PC is " + this._mThread.PC); | 441 | // Console.WriteLine("current PC is " + this._mThread.PC); |
427 | this.m_thread.PC += -1 + compareoffset; | 442 | m_thread.PC += -1 + compareoffset; |
428 | //Console.WriteLine("new PC is " + this._mThread.PC); | 443 | //Console.WriteLine("new PC is " + this._mThread.PC); |
429 | } | 444 | } |
430 | else | 445 | else |
431 | { | 446 | { |
432 | //Console.WriteLine("branch compare false"); | 447 | //Console.WriteLine("branch compare false"); |
433 | this.m_thread.PC += 2; | 448 | m_thread.PC += 2; |
434 | } | 449 | } |
435 | } | 450 | } |
436 | else | 451 | else |
437 | { | 452 | { |
438 | this.m_thread.PC += 2; | 453 | m_thread.PC += 2; |
439 | } | 454 | } |
440 | result = true; | 455 | result = true; |
441 | break; | 456 | break; |
442 | case (byte)OpCode.if_icmple: | 457 | case (byte) OpCode.if_icmple: |
443 | short compareloffset = (short)((GlobalMemory.MethodArea.MethodBuffer[this.m_thread.PC] << 8) + GlobalMemory.MethodArea.MethodBuffer[this.m_thread.PC + 1]); | 458 | short compareloffset = |
444 | BaseType bcl2 = this.m_thread.m_currentFrame.OpStack.Pop(); | 459 | (short) |
445 | BaseType bcl1 = this.m_thread.m_currentFrame.OpStack.Pop(); | 460 | ((GlobalMemory.MethodArea.MethodBuffer[m_thread.PC] << 8) + |
461 | GlobalMemory.MethodArea.MethodBuffer[m_thread.PC + 1]); | ||
462 | BaseType bcl2 = m_thread.m_currentFrame.OpStack.Pop(); | ||
463 | BaseType bcl1 = m_thread.m_currentFrame.OpStack.Pop(); | ||
446 | if (bcl1 is Int && bcl2 is Int) | 464 | if (bcl1 is Int && bcl2 is Int) |
447 | { | 465 | { |
448 | //Console.WriteLine("comparing " + ((Int)bcl1).mValue + " and " + ((Int)bcl2).mValue); | 466 | //Console.WriteLine("comparing " + ((Int)bcl1).mValue + " and " + ((Int)bcl2).mValue); |
449 | if (((Int)bcl1).mValue <= ((Int)bcl2).mValue) | 467 | if (((Int) bcl1).mValue <= ((Int) bcl2).mValue) |
450 | { | 468 | { |
451 | // Console.WriteLine("branch compare true , offset is " + compareloffset); | 469 | // Console.WriteLine("branch compare true , offset is " + compareloffset); |
452 | // Console.WriteLine("current PC is " + this._mThread.PC); | 470 | // Console.WriteLine("current PC is " + this._mThread.PC); |
453 | this.m_thread.PC += -1 + compareloffset; | 471 | m_thread.PC += -1 + compareloffset; |
454 | // Console.WriteLine("new PC is " + this._mThread.PC); | 472 | // Console.WriteLine("new PC is " + this._mThread.PC); |
455 | } | 473 | } |
456 | else | 474 | else |
457 | { | 475 | { |
458 | //Console.WriteLine("branch compare false"); | 476 | //Console.WriteLine("branch compare false"); |
459 | this.m_thread.PC += 2; | 477 | m_thread.PC += 2; |
460 | } | 478 | } |
461 | } | 479 | } |
462 | else | 480 | else |
463 | { | 481 | { |
464 | this.m_thread.PC += 2; | 482 | m_thread.PC += 2; |
465 | } | 483 | } |
466 | result = true; | 484 | result = true; |
467 | break; | 485 | break; |
468 | case (byte)OpCode._goto: | 486 | case (byte) OpCode._goto: |
469 | short offset = (short)((GlobalMemory.MethodArea.MethodBuffer[this.m_thread.PC] << 8) + GlobalMemory.MethodArea.MethodBuffer[this.m_thread.PC + 1]); | 487 | short offset = |
470 | this.m_thread.PC += -1 + offset; | 488 | (short) |
489 | ((GlobalMemory.MethodArea.MethodBuffer[m_thread.PC] << 8) + | ||
490 | GlobalMemory.MethodArea.MethodBuffer[m_thread.PC + 1]); | ||
491 | m_thread.PC += -1 + offset; | ||
471 | result = true; | 492 | result = true; |
472 | break; | 493 | break; |
473 | case (byte)OpCode.getstatic: | 494 | case (byte) OpCode.getstatic: |
474 | short fieldrefIndex = (short)((GlobalMemory.MethodArea.MethodBuffer[this.m_thread.PC] << 8) + GlobalMemory.MethodArea.MethodBuffer[this.m_thread.PC + 1]); | 495 | short fieldrefIndex = |
475 | if (this.m_thread.currentClass.m_constantsPool[fieldrefIndex - 1] is ClassRecord.PoolFieldRef) | 496 | (short) |
497 | ((GlobalMemory.MethodArea.MethodBuffer[m_thread.PC] << 8) + | ||
498 | GlobalMemory.MethodArea.MethodBuffer[m_thread.PC + 1]); | ||
499 | if (m_thread.currentClass.m_constantsPool[fieldrefIndex - 1] is ClassRecord.PoolFieldRef) | ||
476 | { | 500 | { |
477 | if (((ClassRecord.PoolFieldRef)this.m_thread.currentClass.m_constantsPool[fieldrefIndex - 1]).mClass.Name.Value == this.m_thread.currentClass.MClass.Name.Value) | 501 | if ( |
502 | ((ClassRecord.PoolFieldRef) m_thread.currentClass.m_constantsPool[fieldrefIndex - 1]). | ||
503 | mClass.Name.Value == m_thread.currentClass.MClass.Name.Value) | ||
478 | { | 504 | { |
479 | //from this class | 505 | //from this class |
480 | if (this.m_thread.currentClass.StaticFields.ContainsKey(((ClassRecord.PoolFieldRef)this.m_thread.currentClass.m_constantsPool[fieldrefIndex - 1]).mNameType.Name.Value)) | 506 | if ( |
507 | m_thread.currentClass.StaticFields.ContainsKey( | ||
508 | ((ClassRecord.PoolFieldRef) | ||
509 | m_thread.currentClass.m_constantsPool[fieldrefIndex - 1]).mNameType.Name.Value)) | ||
481 | { | 510 | { |
482 | if (this.m_thread.currentClass.StaticFields[((ClassRecord.PoolFieldRef)this.m_thread.currentClass.m_constantsPool[fieldrefIndex - 1]).mNameType.Name.Value] is Float) | 511 | if ( |
512 | m_thread.currentClass.StaticFields[ | ||
513 | ((ClassRecord.PoolFieldRef) | ||
514 | m_thread.currentClass.m_constantsPool[fieldrefIndex - 1]).mNameType.Name. | ||
515 | Value] is Float) | ||
483 | { | 516 | { |
484 | Float retFloat = new Float(); | 517 | Float retFloat = new Float(); |
485 | retFloat.mValue = ((Float)this.m_thread.currentClass.StaticFields[((ClassRecord.PoolFieldRef)this.m_thread.currentClass.m_constantsPool[fieldrefIndex - 1]).mNameType.Name.Value]).mValue; | 518 | retFloat.mValue = |
486 | this.m_thread.m_currentFrame.OpStack.Push(retFloat); | 519 | ((Float) |
520 | m_thread.currentClass.StaticFields[ | ||
521 | ((ClassRecord.PoolFieldRef) | ||
522 | m_thread.currentClass.m_constantsPool[fieldrefIndex - 1]).mNameType. | ||
523 | Name.Value]).mValue; | ||
524 | m_thread.m_currentFrame.OpStack.Push(retFloat); | ||
487 | } | 525 | } |
488 | else if (this.m_thread.currentClass.StaticFields[((ClassRecord.PoolFieldRef)this.m_thread.currentClass.m_constantsPool[fieldrefIndex - 1]).mNameType.Name.Value] is Int) | 526 | else if ( |
527 | m_thread.currentClass.StaticFields[ | ||
528 | ((ClassRecord.PoolFieldRef) | ||
529 | m_thread.currentClass.m_constantsPool[fieldrefIndex - 1]).mNameType. | ||
530 | Name.Value] is Int) | ||
489 | { | 531 | { |
490 | Int retInt = new Int(); | 532 | Int retInt = new Int(); |
491 | retInt.mValue = ((Int)this.m_thread.currentClass.StaticFields[((ClassRecord.PoolFieldRef)this.m_thread.currentClass.m_constantsPool[fieldrefIndex - 1]).mNameType.Name.Value]).mValue; | 533 | retInt.mValue = |
534 | ((Int) | ||
535 | m_thread.currentClass.StaticFields[ | ||
536 | ((ClassRecord.PoolFieldRef) | ||
537 | m_thread.currentClass.m_constantsPool[fieldrefIndex - 1]). | ||
538 | mNameType.Name.Value]).mValue; | ||
492 | // Console.WriteLine("getting static field, " + retInt.mValue); | 539 | // Console.WriteLine("getting static field, " + retInt.mValue); |
493 | this.m_thread.m_currentFrame.OpStack.Push(retInt); | 540 | m_thread.m_currentFrame.OpStack.Push(retInt); |
494 | } | 541 | } |
495 | } | 542 | } |
496 | } | 543 | } |
@@ -499,36 +546,58 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
499 | //get from a different class | 546 | //get from a different class |
500 | } | 547 | } |
501 | } | 548 | } |
502 | this.m_thread.PC += 2; | 549 | m_thread.PC += 2; |
503 | result = true; | 550 | result = true; |
504 | break; | 551 | break; |
505 | case (byte)OpCode.putstatic: | 552 | case (byte) OpCode.putstatic: |
506 | fieldrefIndex = (short)((GlobalMemory.MethodArea.MethodBuffer[this.m_thread.PC] << 8) + GlobalMemory.MethodArea.MethodBuffer[this.m_thread.PC + 1]); | 553 | fieldrefIndex = |
507 | BaseType addstatic = this.m_thread.m_currentFrame.OpStack.Pop(); | 554 | (short) |
508 | if (this.m_thread.currentClass.m_constantsPool[fieldrefIndex - 1] is ClassRecord.PoolFieldRef) | 555 | ((GlobalMemory.MethodArea.MethodBuffer[m_thread.PC] << 8) + |
556 | GlobalMemory.MethodArea.MethodBuffer[m_thread.PC + 1]); | ||
557 | BaseType addstatic = m_thread.m_currentFrame.OpStack.Pop(); | ||
558 | if (m_thread.currentClass.m_constantsPool[fieldrefIndex - 1] is ClassRecord.PoolFieldRef) | ||
509 | { | 559 | { |
510 | if (((ClassRecord.PoolFieldRef)this.m_thread.currentClass.m_constantsPool[fieldrefIndex - 1]).mClass.Name.Value == this.m_thread.currentClass.MClass.Name.Value) | 560 | if ( |
561 | ((ClassRecord.PoolFieldRef) m_thread.currentClass.m_constantsPool[fieldrefIndex - 1]). | ||
562 | mClass.Name.Value == m_thread.currentClass.MClass.Name.Value) | ||
511 | { | 563 | { |
512 | // this class | 564 | // this class |
513 | if (this.m_thread.currentClass.StaticFields.ContainsKey(((ClassRecord.PoolFieldRef)this.m_thread.currentClass.m_constantsPool[fieldrefIndex - 1]).mNameType.Name.Value)) | 565 | if ( |
566 | m_thread.currentClass.StaticFields.ContainsKey( | ||
567 | ((ClassRecord.PoolFieldRef) | ||
568 | m_thread.currentClass.m_constantsPool[fieldrefIndex - 1]).mNameType.Name.Value)) | ||
514 | { | 569 | { |
515 | if (addstatic is Float) | 570 | if (addstatic is Float) |
516 | { | 571 | { |
517 | if (this.m_thread.currentClass.StaticFields[((ClassRecord.PoolFieldRef)this.m_thread.currentClass.m_constantsPool[fieldrefIndex - 1]).mNameType.Name.Value] is Float) | 572 | if ( |
573 | m_thread.currentClass.StaticFields[ | ||
574 | ((ClassRecord.PoolFieldRef) | ||
575 | m_thread.currentClass.m_constantsPool[fieldrefIndex - 1]).mNameType. | ||
576 | Name.Value] is Float) | ||
518 | { | 577 | { |
519 | Float newf = new Float(); | 578 | Float newf = new Float(); |
520 | newf.mValue = ((Float)addstatic).mValue; | 579 | newf.mValue = ((Float) addstatic).mValue; |
521 | this.m_thread.currentClass.StaticFields[((ClassRecord.PoolFieldRef)this.m_thread.currentClass.m_constantsPool[fieldrefIndex - 1]).mNameType.Name.Value] = newf; | 580 | m_thread.currentClass.StaticFields[ |
581 | ((ClassRecord.PoolFieldRef) | ||
582 | m_thread.currentClass.m_constantsPool[fieldrefIndex - 1]).mNameType. | ||
583 | Name.Value] = newf; | ||
522 | } | 584 | } |
523 | } | 585 | } |
524 | else if (addstatic is Int) | 586 | else if (addstatic is Int) |
525 | { | 587 | { |
526 | if (this.m_thread.currentClass.StaticFields[((ClassRecord.PoolFieldRef)this.m_thread.currentClass.m_constantsPool[fieldrefIndex - 1]).mNameType.Name.Value] is Int) | 588 | if ( |
589 | m_thread.currentClass.StaticFields[ | ||
590 | ((ClassRecord.PoolFieldRef) | ||
591 | m_thread.currentClass.m_constantsPool[fieldrefIndex - 1]).mNameType. | ||
592 | Name.Value] is Int) | ||
527 | { | 593 | { |
528 | //Console.WriteLine("setting static field to " + ((Int)addstatic).mValue); | 594 | //Console.WriteLine("setting static field to " + ((Int)addstatic).mValue); |
529 | Int newi = new Int(); | 595 | Int newi = new Int(); |
530 | newi.mValue = ((Int)addstatic).mValue; | 596 | newi.mValue = ((Int) addstatic).mValue; |
531 | this.m_thread.currentClass.StaticFields[((ClassRecord.PoolFieldRef)this.m_thread.currentClass.m_constantsPool[fieldrefIndex - 1]).mNameType.Name.Value] = newi; | 597 | m_thread.currentClass.StaticFields[ |
598 | ((ClassRecord.PoolFieldRef) | ||
599 | m_thread.currentClass.m_constantsPool[fieldrefIndex - 1]).mNameType. | ||
600 | Name.Value] = newi; | ||
532 | } | 601 | } |
533 | } | 602 | } |
534 | } | 603 | } |
@@ -538,10 +607,9 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
538 | // a different class | 607 | // a different class |
539 | } | 608 | } |
540 | } | 609 | } |
541 | this.m_thread.PC += 2; | 610 | m_thread.PC += 2; |
542 | result = true; | 611 | result = true; |
543 | break; | 612 | break; |
544 | |||
545 | } | 613 | } |
546 | 614 | ||
547 | return result; | 615 | return result; |
diff --git a/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JVM/Interpreter.Methods.cs b/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JVM/Interpreter.Methods.cs index a5bd48b..b27630a 100644 --- a/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JVM/Interpreter.Methods.cs +++ b/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JVM/Interpreter.Methods.cs | |||
@@ -25,15 +25,6 @@ | |||
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 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Text; | ||
31 | using OpenSim.Framework.Interfaces; | ||
32 | using OpenSim.Framework; | ||
33 | using OpenSim.Framework; | ||
34 | using OpenSim.Region.ExtensionsScriptModule.JVMEngine.Types; | ||
35 | using OpenSim.Region.ExtensionsScriptModule.JVMEngine.Types.PrimitiveTypes; | ||
36 | |||
37 | namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | 28 | namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM |
38 | { | 29 | { |
39 | partial class Thread | 30 | partial class Thread |
@@ -46,10 +37,15 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
46 | switch (opcode) | 37 | switch (opcode) |
47 | { | 38 | { |
48 | case 184: | 39 | case 184: |
49 | short refIndex = (short) ((GlobalMemory.MethodArea.MethodBuffer[this.m_thread.PC] << 8) + GlobalMemory.MethodArea.MethodBuffer[this.m_thread.PC+1]); | 40 | short refIndex = |
50 | if (this.m_thread.currentClass.m_constantsPool[refIndex - 1] is ClassRecord.PoolMethodRef) | 41 | (short) |
42 | ((GlobalMemory.MethodArea.MethodBuffer[m_thread.PC] << 8) + | ||
43 | GlobalMemory.MethodArea.MethodBuffer[m_thread.PC + 1]); | ||
44 | if (m_thread.currentClass.m_constantsPool[refIndex - 1] is ClassRecord.PoolMethodRef) | ||
51 | { | 45 | { |
52 | string typ = ((ClassRecord.PoolMethodRef)this.m_thread.currentClass.m_constantsPool[refIndex - 1]).mNameType.Type.Value; | 46 | string typ = |
47 | ((ClassRecord.PoolMethodRef) m_thread.currentClass.m_constantsPool[refIndex - 1]). | ||
48 | mNameType.Type.Value; | ||
53 | string typeparam = ""; | 49 | string typeparam = ""; |
54 | string typereturn = ""; | 50 | string typereturn = ""; |
55 | int firstbrak = 0; | 51 | int firstbrak = 0; |
@@ -58,16 +54,22 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
58 | secondbrak = typ.LastIndexOf(')'); | 54 | secondbrak = typ.LastIndexOf(')'); |
59 | typeparam = typ.Substring(firstbrak + 1, secondbrak - firstbrak - 1); | 55 | typeparam = typ.Substring(firstbrak + 1, secondbrak - firstbrak - 1); |
60 | typereturn = typ.Substring(secondbrak + 1, typ.Length - secondbrak - 1); | 56 | typereturn = typ.Substring(secondbrak + 1, typ.Length - secondbrak - 1); |
61 | if (((ClassRecord.PoolMethodRef)this.m_thread.currentClass.m_constantsPool[refIndex - 1]).mClass.Name.Value == this.m_thread.currentClass.MClass.Name.Value) | 57 | if ( |
58 | ((ClassRecord.PoolMethodRef) m_thread.currentClass.m_constantsPool[refIndex - 1]).mClass | ||
59 | .Name.Value == m_thread.currentClass.MClass.Name.Value) | ||
62 | { | 60 | { |
63 | //calling a method in this class | 61 | //calling a method in this class |
64 | if (typeparam.Length == 0) | 62 | if (typeparam.Length == 0) |
65 | { | 63 | { |
66 | this.m_thread.JumpToStaticVoidMethod(((ClassRecord.PoolMethodRef)this.m_thread.currentClass.m_constantsPool[refIndex - 1]).mNameType.Name.Value, (this.m_thread.PC + 2)); | 64 | m_thread.JumpToStaticVoidMethod( |
65 | ((ClassRecord.PoolMethodRef) m_thread.currentClass.m_constantsPool[refIndex - 1]) | ||
66 | .mNameType.Name.Value, (m_thread.PC + 2)); | ||
67 | } | 67 | } |
68 | else | 68 | else |
69 | { | 69 | { |
70 | this.m_thread.JumpToStaticParamMethod(((ClassRecord.PoolMethodRef)this.m_thread.currentClass.m_constantsPool[refIndex - 1]).mNameType.Name.Value, typeparam, (this.m_thread.PC + 2)); | 70 | m_thread.JumpToStaticParamMethod( |
71 | ((ClassRecord.PoolMethodRef) m_thread.currentClass.m_constantsPool[refIndex - 1]) | ||
72 | .mNameType.Name.Value, typeparam, (m_thread.PC + 2)); | ||
71 | } | 73 | } |
72 | } | 74 | } |
73 | else | 75 | else |
@@ -75,15 +77,19 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
75 | //calling a method of a different class | 77 | //calling a method of a different class |
76 | 78 | ||
77 | // OpenSimAPI Class | 79 | // OpenSimAPI Class |
78 | if (((ClassRecord.PoolMethodRef)this.m_thread.currentClass.m_constantsPool[refIndex - 1]).mClass.Name.Value == "OpenSimAPI") | 80 | if ( |
81 | ((ClassRecord.PoolMethodRef) m_thread.currentClass.m_constantsPool[refIndex - 1]). | ||
82 | mClass.Name.Value == "OpenSimAPI") | ||
79 | { | 83 | { |
80 | this.m_thread.scriptInfo.api.CallMethod(((ClassRecord.PoolMethodRef)this.m_thread.currentClass.m_constantsPool[refIndex - 1]).mNameType.Name.Value, null); | 84 | m_thread.scriptInfo.api.CallMethod( |
85 | ((ClassRecord.PoolMethodRef) m_thread.currentClass.m_constantsPool[refIndex - 1]) | ||
86 | .mNameType.Name.Value, null); | ||
81 | } | 87 | } |
82 | } | 88 | } |
83 | } | 89 | } |
84 | else | 90 | else |
85 | { | 91 | { |
86 | this.m_thread.PC += 2; | 92 | m_thread.PC += 2; |
87 | } | 93 | } |
88 | result = true; | 94 | result = true; |
89 | break; | 95 | break; |
@@ -93,4 +99,4 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
93 | } | 99 | } |
94 | } | 100 | } |
95 | } | 101 | } |
96 | } | 102 | } \ No newline at end of file |
diff --git a/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JVM/Interpreter.Return.cs b/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JVM/Interpreter.Return.cs index 5a42285..2814720 100644 --- a/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JVM/Interpreter.Return.cs +++ b/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JVM/Interpreter.Return.cs | |||
@@ -25,10 +25,6 @@ | |||
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 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Text; | ||
31 | |||
32 | namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | 28 | namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM |
33 | { | 29 | { |
34 | partial class Thread | 30 | partial class Thread |
@@ -37,4 +33,4 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
37 | { | 33 | { |
38 | } | 34 | } |
39 | } | 35 | } |
40 | } | 36 | } \ No newline at end of file |
diff --git a/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JVM/Interpreter.cs b/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JVM/Interpreter.cs index 698a518..4e7351e 100644 --- a/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JVM/Interpreter.cs +++ b/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JVM/Interpreter.cs | |||
@@ -26,8 +26,6 @@ | |||
26 | * | 26 | * |
27 | */ | 27 | */ |
28 | using System; | 28 | using System; |
29 | using System.Collections.Generic; | ||
30 | using System.Text; | ||
31 | using OpenSim.Region.ExtensionsScriptModule.JVMEngine.Types; | 29 | using OpenSim.Region.ExtensionsScriptModule.JVMEngine.Types; |
32 | using OpenSim.Region.ExtensionsScriptModule.JVMEngine.Types.PrimitiveTypes; | 30 | using OpenSim.Region.ExtensionsScriptModule.JVMEngine.Types.PrimitiveTypes; |
33 | 31 | ||
@@ -47,77 +45,77 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
47 | public bool Excute() | 45 | public bool Excute() |
48 | { | 46 | { |
49 | bool run = true; | 47 | bool run = true; |
50 | byte currentOpCode = GlobalMemory.MethodArea.MethodBuffer[this.m_thread.PC++]; | 48 | byte currentOpCode = GlobalMemory.MethodArea.MethodBuffer[m_thread.PC++]; |
51 | // Console.WriteLine("opCode is: " + currentOpCode); | 49 | // Console.WriteLine("opCode is: " + currentOpCode); |
52 | bool handled = false; | 50 | bool handled = false; |
53 | 51 | ||
54 | handled = this.IsLogicOpCode(currentOpCode); | 52 | handled = IsLogicOpCode(currentOpCode); |
55 | if (!handled) | 53 | if (!handled) |
56 | { | 54 | { |
57 | handled = this.IsMethodOpCode(currentOpCode); | 55 | handled = IsMethodOpCode(currentOpCode); |
58 | } | 56 | } |
59 | if (!handled) | 57 | if (!handled) |
60 | { | 58 | { |
61 | if (currentOpCode == 172) | 59 | if (currentOpCode == 172) |
62 | { | 60 | { |
63 | if (this.m_thread.stack.StackFrames.Count > 1) | 61 | if (m_thread.stack.StackFrames.Count > 1) |
64 | { | 62 | { |
65 | Console.WriteLine("returning int from function"); | 63 | Console.WriteLine("returning int from function"); |
66 | int retPC1 = this.m_thread.m_currentFrame.ReturnPC; | 64 | int retPC1 = m_thread.m_currentFrame.ReturnPC; |
67 | BaseType bas1 = this.m_thread.m_currentFrame.OpStack.Pop(); | 65 | BaseType bas1 = m_thread.m_currentFrame.OpStack.Pop(); |
68 | this.m_thread.stack.StackFrames.Pop(); | 66 | m_thread.stack.StackFrames.Pop(); |
69 | this.m_thread.m_currentFrame = this.m_thread.stack.StackFrames.Peek(); | 67 | m_thread.m_currentFrame = m_thread.stack.StackFrames.Peek(); |
70 | this.m_thread.PC = retPC1; | 68 | m_thread.PC = retPC1; |
71 | if (bas1 is Int) | 69 | if (bas1 is Int) |
72 | { | 70 | { |
73 | this.m_thread.m_currentFrame.OpStack.Push((Int)bas1); | 71 | m_thread.m_currentFrame.OpStack.Push((Int) bas1); |
74 | } | 72 | } |
75 | } | 73 | } |
76 | else | 74 | else |
77 | { | 75 | { |
78 | // Console.WriteLine("No parent function so ending program"); | 76 | // Console.WriteLine("No parent function so ending program"); |
79 | this.m_thread.stack.StackFrames.Pop(); | 77 | m_thread.stack.StackFrames.Pop(); |
80 | run = false; | 78 | run = false; |
81 | } | 79 | } |
82 | handled = true; | 80 | handled = true; |
83 | } | 81 | } |
84 | if (currentOpCode == 174) | 82 | if (currentOpCode == 174) |
85 | { | 83 | { |
86 | if (this.m_thread.stack.StackFrames.Count > 1) | 84 | if (m_thread.stack.StackFrames.Count > 1) |
87 | { | 85 | { |
88 | Console.WriteLine("returning float from function"); | 86 | Console.WriteLine("returning float from function"); |
89 | int retPC1 = this.m_thread.m_currentFrame.ReturnPC; | 87 | int retPC1 = m_thread.m_currentFrame.ReturnPC; |
90 | BaseType bas1 = this.m_thread.m_currentFrame.OpStack.Pop(); | 88 | BaseType bas1 = m_thread.m_currentFrame.OpStack.Pop(); |
91 | this.m_thread.stack.StackFrames.Pop(); | 89 | m_thread.stack.StackFrames.Pop(); |
92 | this.m_thread.m_currentFrame = this.m_thread.stack.StackFrames.Peek(); | 90 | m_thread.m_currentFrame = m_thread.stack.StackFrames.Peek(); |
93 | this.m_thread.PC = retPC1; | 91 | m_thread.PC = retPC1; |
94 | if (bas1 is Float) | 92 | if (bas1 is Float) |
95 | { | 93 | { |
96 | this.m_thread.m_currentFrame.OpStack.Push((Float)bas1); | 94 | m_thread.m_currentFrame.OpStack.Push((Float) bas1); |
97 | } | 95 | } |
98 | } | 96 | } |
99 | else | 97 | else |
100 | { | 98 | { |
101 | // Console.WriteLine("No parent function so ending program"); | 99 | // Console.WriteLine("No parent function so ending program"); |
102 | this.m_thread.stack.StackFrames.Pop(); | 100 | m_thread.stack.StackFrames.Pop(); |
103 | run = false; | 101 | run = false; |
104 | } | 102 | } |
105 | handled = true; | 103 | handled = true; |
106 | } | 104 | } |
107 | if (currentOpCode == 177) | 105 | if (currentOpCode == 177) |
108 | { | 106 | { |
109 | if (this.m_thread.stack.StackFrames.Count > 1) | 107 | if (m_thread.stack.StackFrames.Count > 1) |
110 | { | 108 | { |
111 | Console.WriteLine("returning from function"); | 109 | Console.WriteLine("returning from function"); |
112 | int retPC = this.m_thread.m_currentFrame.ReturnPC; | 110 | int retPC = m_thread.m_currentFrame.ReturnPC; |
113 | this.m_thread.stack.StackFrames.Pop(); | 111 | m_thread.stack.StackFrames.Pop(); |
114 | this.m_thread.m_currentFrame = this.m_thread.stack.StackFrames.Peek(); | 112 | m_thread.m_currentFrame = m_thread.stack.StackFrames.Peek(); |
115 | this.m_thread.PC = retPC; | 113 | m_thread.PC = retPC; |
116 | } | 114 | } |
117 | else | 115 | else |
118 | { | 116 | { |
119 | // Console.WriteLine("No parent function so ending program"); | 117 | // Console.WriteLine("No parent function so ending program"); |
120 | this.m_thread.stack.StackFrames.Pop(); | 118 | m_thread.stack.StackFrames.Pop(); |
121 | run = false; | 119 | run = false; |
122 | } | 120 | } |
123 | handled = true; | 121 | handled = true; |
@@ -128,8 +126,7 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
128 | Console.WriteLine("opcode " + currentOpCode + " not been handled "); | 126 | Console.WriteLine("opcode " + currentOpCode + " not been handled "); |
129 | } | 127 | } |
130 | return run; | 128 | return run; |
131 | |||
132 | } | 129 | } |
133 | } | 130 | } |
134 | } | 131 | } |
135 | } | 132 | } \ No newline at end of file |
diff --git a/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JVM/MainMemory.cs b/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JVM/MainMemory.cs index 34d4fc5..adad1a8 100644 --- a/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JVM/MainMemory.cs +++ b/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JVM/MainMemory.cs | |||
@@ -25,21 +25,17 @@ | |||
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 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Text; | ||
31 | |||
32 | namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | 28 | namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM |
33 | { | 29 | { |
34 | public class MainMemory | 30 | public class MainMemory |
35 | { | 31 | { |
36 | public Heap HeapArea; | 32 | public Heap HeapArea; |
37 | public MethodMemory MethodArea; | 33 | public MethodMemory MethodArea; |
38 | 34 | ||
39 | public MainMemory() | 35 | public MainMemory() |
40 | { | 36 | { |
41 | MethodArea = new MethodMemory(); | 37 | MethodArea = new MethodMemory(); |
42 | HeapArea = new Heap(); | 38 | HeapArea = new Heap(); |
43 | } | 39 | } |
44 | } | 40 | } |
45 | } | 41 | } \ No newline at end of file |
diff --git a/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JVM/MethodMemory.cs b/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JVM/MethodMemory.cs index f470583..86df4c2 100644 --- a/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JVM/MethodMemory.cs +++ b/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JVM/MethodMemory.cs | |||
@@ -25,9 +25,7 @@ | |||
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 | using System; | ||
29 | using System.Collections.Generic; | 28 | using System.Collections.Generic; |
30 | using System.Text; | ||
31 | 29 | ||
32 | namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | 30 | namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM |
33 | { | 31 | { |
@@ -43,4 +41,4 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
43 | MethodBuffer = new byte[20000]; | 41 | MethodBuffer = new byte[20000]; |
44 | } | 42 | } |
45 | } | 43 | } |
46 | } | 44 | } \ No newline at end of file |
diff --git a/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JVM/Object.cs b/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JVM/Object.cs index 21e467a..1d9cabb 100644 --- a/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JVM/Object.cs +++ b/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JVM/Object.cs | |||
@@ -25,13 +25,9 @@ | |||
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 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Text; | ||
31 | |||
32 | namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | 28 | namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM |
33 | { | 29 | { |
34 | public class Object | 30 | public class Object |
35 | { | 31 | { |
36 | } | 32 | } |
37 | } | 33 | } \ No newline at end of file |
diff --git a/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JVM/OpCodes.cs b/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JVM/OpCodes.cs index 9fcec49..616b64e 100644 --- a/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JVM/OpCodes.cs +++ b/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JVM/OpCodes.cs | |||
@@ -26,10 +26,6 @@ | |||
26 | * | 26 | * |
27 | */ | 27 | */ |
28 | 28 | ||
29 | using System; | ||
30 | using System.Collections.Generic; | ||
31 | using System.Text; | ||
32 | |||
33 | namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | 29 | namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM |
34 | { | 30 | { |
35 | public enum OpCode : byte | 31 | public enum OpCode : byte |
@@ -81,4 +77,4 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
81 | getstatic = 178, | 77 | getstatic = 178, |
82 | putstatic = 179 | 78 | putstatic = 179 |
83 | } | 79 | } |
84 | } | 80 | } \ No newline at end of file |
diff --git a/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JVM/Stack.cs b/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JVM/Stack.cs index 56e02ff..4f6c1e7 100644 --- a/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JVM/Stack.cs +++ b/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JVM/Stack.cs | |||
@@ -25,9 +25,7 @@ | |||
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 | using System; | ||
29 | using System.Collections.Generic; | 28 | using System.Collections.Generic; |
30 | using System.Text; | ||
31 | 29 | ||
32 | namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | 30 | namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM |
33 | { | 31 | { |
@@ -39,4 +37,4 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
39 | { | 37 | { |
40 | } | 38 | } |
41 | } | 39 | } |
42 | } | 40 | } \ No newline at end of file |
diff --git a/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JVM/StackFrame.cs b/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JVM/StackFrame.cs index a5f9029..306a70d 100644 --- a/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JVM/StackFrame.cs +++ b/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JVM/StackFrame.cs | |||
@@ -25,9 +25,7 @@ | |||
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 | using System; | ||
29 | using System.Collections.Generic; | 28 | using System.Collections.Generic; |
30 | using System.Text; | ||
31 | using OpenSim.Region.ExtensionsScriptModule.JVMEngine.Types; | 29 | using OpenSim.Region.ExtensionsScriptModule.JVMEngine.Types; |
32 | 30 | ||
33 | namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | 31 | namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM |
@@ -44,6 +42,5 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
44 | { | 42 | { |
45 | LocalVariables = new BaseType[20]; | 43 | LocalVariables = new BaseType[20]; |
46 | } | 44 | } |
47 | |||
48 | } | 45 | } |
49 | } | 46 | } \ No newline at end of file |
diff --git a/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JVM/Thread.cs b/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JVM/Thread.cs index b810676..64093ef 100644 --- a/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JVM/Thread.cs +++ b/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JVM/Thread.cs | |||
@@ -25,15 +25,9 @@ | |||
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 | using System; | 28 | using OpenSim.Region.Environment.Scenes; |
29 | using System.Collections.Generic; | ||
30 | using System.Text; | ||
31 | using OpenSim.Region.ExtensionsScriptModule.JVMEngine.Types; | 29 | using OpenSim.Region.ExtensionsScriptModule.JVMEngine.Types; |
32 | using OpenSim.Region.ExtensionsScriptModule.JVMEngine.Types.PrimitiveTypes; | 30 | using OpenSim.Region.ExtensionsScriptModule.JVMEngine.Types.PrimitiveTypes; |
33 | using OpenSim.Framework; | ||
34 | using OpenSim.Framework.Interfaces; | ||
35 | using OpenSim.Region.Environment.Scenes; | ||
36 | using OpenSim.Region.ExtensionsScriptModule; | ||
37 | 31 | ||
38 | namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | 32 | namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM |
39 | { | 33 | { |
@@ -55,8 +49,8 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
55 | 49 | ||
56 | public Thread() | 50 | public Thread() |
57 | { | 51 | { |
58 | this.m_Interpreter = new Interpreter(this); | 52 | m_Interpreter = new Interpreter(this); |
59 | this.stack = new Stack(); | 53 | stack = new Stack(); |
60 | } | 54 | } |
61 | 55 | ||
62 | public void SetPC(int methodpointer) | 56 | public void SetPC(int methodpointer) |
@@ -68,15 +62,15 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
68 | public void StartMethod(ClassRecord rec, string methName) | 62 | public void StartMethod(ClassRecord rec, string methName) |
69 | { | 63 | { |
70 | m_currentFrame = new StackFrame(); | 64 | m_currentFrame = new StackFrame(); |
71 | this.stack.StackFrames.Push(m_currentFrame); | 65 | stack.StackFrames.Push(m_currentFrame); |
72 | this.currentClass = rec; | 66 | currentClass = rec; |
73 | currentClass.StartMethod(this, methName); | 67 | currentClass.StartMethod(this, methName); |
74 | } | 68 | } |
75 | 69 | ||
76 | public void StartMethod( string methName) | 70 | public void StartMethod(string methName) |
77 | { | 71 | { |
78 | m_currentFrame = new StackFrame(); | 72 | m_currentFrame = new StackFrame(); |
79 | this.stack.StackFrames.Push(m_currentFrame); | 73 | stack.StackFrames.Push(m_currentFrame); |
80 | currentClass.StartMethod(this, methName); | 74 | currentClass.StartMethod(this, methName); |
81 | } | 75 | } |
82 | 76 | ||
@@ -84,7 +78,7 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
84 | { | 78 | { |
85 | m_currentFrame = new StackFrame(); | 79 | m_currentFrame = new StackFrame(); |
86 | m_currentFrame.ReturnPC = returnPC; | 80 | m_currentFrame.ReturnPC = returnPC; |
87 | this.stack.StackFrames.Push(m_currentFrame); | 81 | stack.StackFrames.Push(m_currentFrame); |
88 | currentClass.StartMethod(this, methName); | 82 | currentClass.StartMethod(this, methName); |
89 | } | 83 | } |
90 | 84 | ||
@@ -95,25 +89,23 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM | |||
95 | BaseType bs1 = m_currentFrame.OpStack.Pop(); | 89 | BaseType bs1 = m_currentFrame.OpStack.Pop(); |
96 | m_currentFrame = new StackFrame(); | 90 | m_currentFrame = new StackFrame(); |
97 | m_currentFrame.ReturnPC = returnPC; | 91 | m_currentFrame.ReturnPC = returnPC; |
98 | this.stack.StackFrames.Push(m_currentFrame); | 92 | stack.StackFrames.Push(m_currentFrame); |
99 | m_currentFrame.LocalVariables[0] = ((Int)bs1); | 93 | m_currentFrame.LocalVariables[0] = ((Int) bs1); |
100 | currentClass.StartMethod(this, methName); | 94 | currentClass.StartMethod(this, methName); |
101 | } | 95 | } |
102 | if (param == "F") | 96 | if (param == "F") |
103 | { | 97 | { |
104 | |||
105 | } | 98 | } |
106 | } | 99 | } |
107 | 100 | ||
108 | public void JumpToClassStaticVoidMethod(string className, string methName, int returnPC) | 101 | public void JumpToClassStaticVoidMethod(string className, string methName, int returnPC) |
109 | { | 102 | { |
110 | |||
111 | } | 103 | } |
112 | 104 | ||
113 | public bool Excute() | 105 | public bool Excute() |
114 | { | 106 | { |
115 | excutionCounter++; | 107 | excutionCounter++; |
116 | return this.m_Interpreter.Excute(); | 108 | return m_Interpreter.Excute(); |
117 | } | 109 | } |
118 | } | 110 | } |
119 | } | 111 | } \ No newline at end of file |
diff --git a/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JavaEngine.cs b/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JavaEngine.cs index 0f0ff16..ea99626 100644 --- a/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JavaEngine.cs +++ b/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/JavaEngine.cs | |||
@@ -26,11 +26,7 @@ | |||
26 | * | 26 | * |
27 | */ | 27 | */ |
28 | 28 | ||
29 | using System; | ||
30 | using System.Collections.Generic; | 29 | using System.Collections.Generic; |
31 | using System.Text; | ||
32 | |||
33 | using OpenSim.Region.ExtensionsScriptModule; | ||
34 | 30 | ||
35 | namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine | 31 | namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine |
36 | { | 32 | { |
@@ -53,4 +49,4 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine | |||
53 | return returns; | 49 | return returns; |
54 | } | 50 | } |
55 | } | 51 | } |
56 | } | 52 | } \ No newline at end of file |
diff --git a/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/OpenSimJVM.cs b/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/OpenSimJVM.cs index b1258f6..274932a 100644 --- a/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/OpenSimJVM.cs +++ b/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/OpenSimJVM.cs | |||
@@ -27,15 +27,11 @@ | |||
27 | */ | 27 | */ |
28 | using System; | 28 | using System; |
29 | using System.Collections.Generic; | 29 | using System.Collections.Generic; |
30 | using System.Text; | 30 | using System.Diagnostics; |
31 | using System.IO; | 31 | using System.IO; |
32 | using System.Threading; | ||
33 | using OpenSim.Framework; | ||
34 | using OpenSim.Framework.Interfaces; | ||
35 | using OpenSim.Framework; | 32 | using OpenSim.Framework; |
36 | using OpenSim.Region.Environment.Scenes; | 33 | using OpenSim.Region.Environment.Scenes; |
37 | using OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM; | 34 | using OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM; |
38 | using Thread = OpenSim.Region.ExtensionsScriptModule.JVMEngine.JVM.Thread; | ||
39 | 35 | ||
40 | namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine | 36 | namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine |
41 | { | 37 | { |
@@ -45,14 +41,14 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine | |||
45 | private BlockingQueue<CompileInfo> CompileScripts = new BlockingQueue<CompileInfo>(); | 41 | private BlockingQueue<CompileInfo> CompileScripts = new BlockingQueue<CompileInfo>(); |
46 | private MainMemory _mainMemory; | 42 | private MainMemory _mainMemory; |
47 | 43 | ||
48 | ScriptInfo scriptInfo; | 44 | private ScriptInfo scriptInfo; |
49 | 45 | ||
50 | public void Initialise(ScriptInfo info) | 46 | public void Initialise(ScriptInfo info) |
51 | { | 47 | { |
52 | scriptInfo = info; | 48 | scriptInfo = info; |
53 | 49 | ||
54 | _mainMemory = new MainMemory(); | 50 | _mainMemory = new MainMemory(); |
55 | Thread.GlobalMemory = this._mainMemory; | 51 | Thread.GlobalMemory = _mainMemory; |
56 | Thread.World = info.world; | 52 | Thread.World = info.world; |
57 | CompileScript(); | 53 | CompileScript(); |
58 | 54 | ||
@@ -60,33 +56,33 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine | |||
60 | scriptInfo.events.OnNewPresence += new EventManager.OnNewPresenceDelegate(events_OnNewPresence); | 56 | scriptInfo.events.OnNewPresence += new EventManager.OnNewPresenceDelegate(events_OnNewPresence); |
61 | } | 57 | } |
62 | 58 | ||
63 | void events_OnNewPresence(ScenePresence presence) | 59 | private void events_OnNewPresence(ScenePresence presence) |
64 | { | 60 | { |
65 | for (int i = 0; i < this._threads.Count; i++) | 61 | for (int i = 0; i < _threads.Count; i++) |
66 | { | 62 | { |
67 | if (!this._threads[i].running) | 63 | if (!_threads[i].running) |
68 | { | 64 | { |
69 | this._threads[i].StartMethod("OnNewPresence"); | 65 | _threads[i].StartMethod("OnNewPresence"); |
70 | bool run = true; | 66 | bool run = true; |
71 | while (run) | 67 | while (run) |
72 | { | 68 | { |
73 | run = this._threads[i].Excute(); | 69 | run = _threads[i].Excute(); |
74 | } | 70 | } |
75 | } | 71 | } |
76 | } | 72 | } |
77 | } | 73 | } |
78 | 74 | ||
79 | void events_OnFrame() | 75 | private void events_OnFrame() |
80 | { | 76 | { |
81 | for (int i = 0; i < this._threads.Count; i++) | 77 | for (int i = 0; i < _threads.Count; i++) |
82 | { | 78 | { |
83 | if (!this._threads[i].running) | 79 | if (!_threads[i].running) |
84 | { | 80 | { |
85 | this._threads[i].StartMethod("OnFrame"); | 81 | _threads[i].StartMethod("OnFrame"); |
86 | bool run = true; | 82 | bool run = true; |
87 | while (run) | 83 | while (run) |
88 | { | 84 | { |
89 | run = this._threads[i].Excute(); | 85 | run = _threads[i].Excute(); |
90 | } | 86 | } |
91 | } | 87 | } |
92 | } | 88 | } |
@@ -103,12 +99,12 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine | |||
103 | CompileInfo comp = new CompileInfo(); | 99 | CompileInfo comp = new CompileInfo(); |
104 | comp.script = script; | 100 | comp.script = script; |
105 | comp.scriptName = script; | 101 | comp.scriptName = script; |
106 | this.CompileScripts.Enqueue(comp); | 102 | CompileScripts.Enqueue(comp); |
107 | } | 103 | } |
108 | 104 | ||
109 | public void CompileScript() | 105 | public void CompileScript() |
110 | { | 106 | { |
111 | CompileInfo comp = this.CompileScripts.Dequeue(); | 107 | CompileInfo comp = CompileScripts.Dequeue(); |
112 | string script = comp.script; | 108 | string script = comp.script; |
113 | string scriptName = comp.scriptName; | 109 | string scriptName = comp.scriptName; |
114 | try | 110 | try |
@@ -121,13 +117,13 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine | |||
121 | tw.Close(); | 117 | tw.Close(); |
122 | 118 | ||
123 | //now compile | 119 | //now compile |
124 | System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo("javac.exe", "*.java"); | 120 | ProcessStartInfo psi = new ProcessStartInfo("javac.exe", "*.java"); |
125 | // psi.RedirectStandardOutput = true; | 121 | // psi.RedirectStandardOutput = true; |
126 | psi.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; | 122 | psi.WindowStyle = ProcessWindowStyle.Hidden; |
127 | psi.UseShellExecute = false; | 123 | psi.UseShellExecute = false; |
128 | 124 | ||
129 | System.Diagnostics.Process javacomp; | 125 | Process javacomp; |
130 | javacomp = System.Diagnostics.Process.Start(psi); | 126 | javacomp = Process.Start(psi); |
131 | javacomp.WaitForExit(); | 127 | javacomp.WaitForExit(); |
132 | 128 | ||
133 | 129 | ||
@@ -136,17 +132,17 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine | |||
136 | class1.LoadClassFromFile(scriptName + ".class"); | 132 | class1.LoadClassFromFile(scriptName + ".class"); |
137 | class1.PrintToConsole(); | 133 | class1.PrintToConsole(); |
138 | //Console.WriteLine(); | 134 | //Console.WriteLine(); |
139 | this._mainMemory.MethodArea.Classes.Add(class1); | 135 | _mainMemory.MethodArea.Classes.Add(class1); |
140 | class1.AddMethodsToMemory(this._mainMemory.MethodArea); | 136 | class1.AddMethodsToMemory(_mainMemory.MethodArea); |
141 | 137 | ||
142 | Thread newThread = new Thread(); | 138 | Thread newThread = new Thread(); |
143 | this._threads.Add(newThread); | 139 | _threads.Add(newThread); |
144 | newThread.currentClass = class1; | 140 | newThread.currentClass = class1; |
145 | newThread.scriptInfo = scriptInfo; | 141 | newThread.scriptInfo = scriptInfo; |
146 | 142 | ||
147 | //now delete the created files | 143 | //now delete the created files |
148 | System.IO.File.Delete(scriptName + ".java"); | 144 | File.Delete(scriptName + ".java"); |
149 | System.IO.File.Delete(scriptName + ".class"); | 145 | File.Delete(scriptName + ".class"); |
150 | //this.OnFrame(); | 146 | //this.OnFrame(); |
151 | } | 147 | } |
152 | catch (Exception e) | 148 | catch (Exception e) |
@@ -164,8 +160,7 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine | |||
164 | 160 | ||
165 | public CompileInfo() | 161 | public CompileInfo() |
166 | { | 162 | { |
167 | |||
168 | } | 163 | } |
169 | } | 164 | } |
170 | } | 165 | } |
171 | } | 166 | } \ No newline at end of file |
diff --git a/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/Types/ArrayReference.cs b/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/Types/ArrayReference.cs index a36ad77..3c82952 100644 --- a/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/Types/ArrayReference.cs +++ b/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/Types/ArrayReference.cs | |||
@@ -26,13 +26,9 @@ | |||
26 | * | 26 | * |
27 | */ | 27 | */ |
28 | 28 | ||
29 | using System; | ||
30 | using System.Collections.Generic; | ||
31 | using System.Text; | ||
32 | |||
33 | namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.Types | 29 | namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.Types |
34 | { | 30 | { |
35 | public class ArrayReference :BaseType | 31 | public class ArrayReference : BaseType |
36 | { | 32 | { |
37 | } | 33 | } |
38 | } | 34 | } \ No newline at end of file |
diff --git a/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/Types/ObjectReference.cs b/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/Types/ObjectReference.cs index 5921446..4026c10 100644 --- a/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/Types/ObjectReference.cs +++ b/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/Types/ObjectReference.cs | |||
@@ -26,10 +26,6 @@ | |||
26 | * | 26 | * |
27 | */ | 27 | */ |
28 | 28 | ||
29 | using System; | ||
30 | using System.Collections.Generic; | ||
31 | using System.Text; | ||
32 | |||
33 | namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.Types | 29 | namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.Types |
34 | { | 30 | { |
35 | public class ObjectReference : BaseType | 31 | public class ObjectReference : BaseType |
@@ -38,7 +34,6 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.Types | |||
38 | 34 | ||
39 | public ObjectReference() | 35 | public ObjectReference() |
40 | { | 36 | { |
41 | |||
42 | } | 37 | } |
43 | } | 38 | } |
44 | } | 39 | } \ No newline at end of file |
diff --git a/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/Types/PrimitiveTypes/Byte.cs b/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/Types/PrimitiveTypes/Byte.cs index aa59681..de1aa87 100644 --- a/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/Types/PrimitiveTypes/Byte.cs +++ b/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/Types/PrimitiveTypes/Byte.cs | |||
@@ -26,14 +26,9 @@ | |||
26 | * | 26 | * |
27 | */ | 27 | */ |
28 | 28 | ||
29 | using System; | ||
30 | using System.Collections.Generic; | ||
31 | using System.Text; | ||
32 | using OpenSim.Region.ExtensionsScriptModule.JVMEngine.Types; | ||
33 | |||
34 | namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.Types.PrimitiveTypes | 29 | namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.Types.PrimitiveTypes |
35 | { | 30 | { |
36 | public class Byte : BaseType | 31 | public class Byte : BaseType |
37 | { | 32 | { |
38 | } | 33 | } |
39 | } | 34 | } \ No newline at end of file |
diff --git a/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/Types/PrimitiveTypes/Char.cs b/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/Types/PrimitiveTypes/Char.cs index 1cef150..0e17057 100644 --- a/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/Types/PrimitiveTypes/Char.cs +++ b/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/Types/PrimitiveTypes/Char.cs | |||
@@ -26,14 +26,9 @@ | |||
26 | * | 26 | * |
27 | */ | 27 | */ |
28 | 28 | ||
29 | using System; | ||
30 | using System.Collections.Generic; | ||
31 | using System.Text; | ||
32 | using OpenSim.Region.ExtensionsScriptModule.JVMEngine.Types; | ||
33 | |||
34 | namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.Types.PrimitiveTypes | 29 | namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.Types.PrimitiveTypes |
35 | { | 30 | { |
36 | public class Char : BaseType | 31 | public class Char : BaseType |
37 | { | 32 | { |
38 | } | 33 | } |
39 | } | 34 | } \ No newline at end of file |
diff --git a/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/Types/PrimitiveTypes/Float.cs b/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/Types/PrimitiveTypes/Float.cs index 0614dfd..ce8648c 100644 --- a/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/Types/PrimitiveTypes/Float.cs +++ b/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/Types/PrimitiveTypes/Float.cs | |||
@@ -26,11 +26,6 @@ | |||
26 | * | 26 | * |
27 | */ | 27 | */ |
28 | 28 | ||
29 | using System; | ||
30 | using System.Collections.Generic; | ||
31 | using System.Text; | ||
32 | using OpenSim.Region.ExtensionsScriptModule.JVMEngine.Types; | ||
33 | |||
34 | namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.Types.PrimitiveTypes | 29 | namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.Types.PrimitiveTypes |
35 | { | 30 | { |
36 | public class Float : BaseType | 31 | public class Float : BaseType |
@@ -39,7 +34,6 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.Types.PrimitiveTypes | |||
39 | 34 | ||
40 | public Float() | 35 | public Float() |
41 | { | 36 | { |
42 | |||
43 | } | 37 | } |
44 | } | 38 | } |
45 | } | 39 | } \ No newline at end of file |
diff --git a/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/Types/PrimitiveTypes/Int.cs b/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/Types/PrimitiveTypes/Int.cs index 35f9822..251b736 100644 --- a/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/Types/PrimitiveTypes/Int.cs +++ b/OpenSim/Region/ExtensionsScriptModule/Engines/JVMEngine/Types/PrimitiveTypes/Int.cs | |||
@@ -26,11 +26,6 @@ | |||
26 | * | 26 | * |
27 | */ | 27 | */ |
28 | 28 | ||
29 | using System; | ||
30 | using System.Collections.Generic; | ||
31 | using System.Text; | ||
32 | using OpenSim.Region.ExtensionsScriptModule.JVMEngine.Types; | ||
33 | |||
34 | namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.Types.PrimitiveTypes | 29 | namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.Types.PrimitiveTypes |
35 | { | 30 | { |
36 | public class Int : BaseType | 31 | public class Int : BaseType |
@@ -39,7 +34,6 @@ namespace OpenSim.Region.ExtensionsScriptModule.JVMEngine.Types.PrimitiveTypes | |||
39 | 34 | ||
40 | public Int() | 35 | public Int() |
41 | { | 36 | { |
42 | |||
43 | } | 37 | } |
44 | } | 38 | } |
45 | } | 39 | } \ No newline at end of file |
diff --git a/OpenSim/Region/ExtensionsScriptModule/Script.cs b/OpenSim/Region/ExtensionsScriptModule/Script.cs index 251b8c3..5f85799 100644 --- a/OpenSim/Region/ExtensionsScriptModule/Script.cs +++ b/OpenSim/Region/ExtensionsScriptModule/Script.cs | |||
@@ -37,7 +37,7 @@ namespace OpenSim.Region.ExtensionsScriptModule | |||
37 | 37 | ||
38 | public class TestScript : IScript | 38 | public class TestScript : IScript |
39 | { | 39 | { |
40 | ScriptInfo script; | 40 | private ScriptInfo script; |
41 | 41 | ||
42 | public string Name | 42 | public string Name |
43 | { | 43 | { |
@@ -51,14 +51,14 @@ namespace OpenSim.Region.ExtensionsScriptModule | |||
51 | script.events.OnNewPresence += events_OnNewPresence; | 51 | script.events.OnNewPresence += events_OnNewPresence; |
52 | } | 52 | } |
53 | 53 | ||
54 | void events_OnNewPresence(ScenePresence presence) | 54 | private void events_OnNewPresence(ScenePresence presence) |
55 | { | 55 | { |
56 | script.logger.Verbose("Hello " + presence.Firstname.ToString() + "!"); | 56 | script.logger.Verbose("Hello " + presence.Firstname.ToString() + "!"); |
57 | } | 57 | } |
58 | 58 | ||
59 | void events_OnFrame() | 59 | private void events_OnFrame() |
60 | { | 60 | { |
61 | //script.logger.Verbose("Hello World!"); | 61 | //script.logger.Verbose("Hello World!"); |
62 | } | 62 | } |
63 | } | 63 | } |
64 | } | 64 | } \ No newline at end of file |
diff --git a/OpenSim/Region/ExtensionsScriptModule/ScriptAPI.cs b/OpenSim/Region/ExtensionsScriptModule/ScriptAPI.cs index 39dc878..9384efa 100644 --- a/OpenSim/Region/ExtensionsScriptModule/ScriptAPI.cs +++ b/OpenSim/Region/ExtensionsScriptModule/ScriptAPI.cs | |||
@@ -27,24 +27,21 @@ | |||
27 | */ | 27 | */ |
28 | 28 | ||
29 | using System; | 29 | using System; |
30 | using System.Collections.Generic; | 30 | using OpenSim.Region.Environment.Scenes; |
31 | using System.Text; | ||
32 | using Key = libsecondlife.LLUUID; | 31 | using Key = libsecondlife.LLUUID; |
33 | using Rotation = libsecondlife.LLQuaternion; | 32 | using Rotation = libsecondlife.LLQuaternion; |
34 | using Vector = libsecondlife.LLVector3; | 33 | using Vector = libsecondlife.LLVector3; |
35 | using LSLList = System.Collections.Generic.List<string>; | 34 | using LSLList = System.Collections.Generic.List<string>; |
36 | 35 | ||
37 | 36 | ||
38 | using OpenSim.Region.Environment.Scenes; | ||
39 | |||
40 | namespace OpenSim.Region.ExtensionsScriptModule | 37 | namespace OpenSim.Region.ExtensionsScriptModule |
41 | { | 38 | { |
42 | // This class is to be used for engines which may not be able to access the Scene directly. | 39 | // This class is to be used for engines which may not be able to access the Scene directly. |
43 | // Scene access is preffered, but obviously not possible on some non-.NET languages. | 40 | // Scene access is preffered, but obviously not possible on some non-.NET languages. |
44 | public class ScriptAPI | 41 | public class ScriptAPI |
45 | { | 42 | { |
46 | Scene scene; | 43 | private Scene scene; |
47 | ScriptInterpretedAPI interpretedAPI; | 44 | private ScriptInterpretedAPI interpretedAPI; |
48 | 45 | ||
49 | public ScriptAPI(Scene world, Key taskID) | 46 | public ScriptAPI(Scene world, Key taskID) |
50 | { | 47 | { |
@@ -57,4 +54,4 @@ namespace OpenSim.Region.ExtensionsScriptModule | |||
57 | return null; | 54 | return null; |
58 | } | 55 | } |
59 | } | 56 | } |
60 | } | 57 | } \ No newline at end of file |
diff --git a/OpenSim/Region/ExtensionsScriptModule/ScriptInfo.cs b/OpenSim/Region/ExtensionsScriptModule/ScriptInfo.cs index aaadd1f..cfa3c8e 100644 --- a/OpenSim/Region/ExtensionsScriptModule/ScriptInfo.cs +++ b/OpenSim/Region/ExtensionsScriptModule/ScriptInfo.cs | |||
@@ -25,6 +25,7 @@ | |||
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 | using libsecondlife; | ||
28 | using OpenSim.Framework.Console; | 29 | using OpenSim.Framework.Console; |
29 | using OpenSim.Region.Environment.Scenes; | 30 | using OpenSim.Region.Environment.Scenes; |
30 | 31 | ||
@@ -52,12 +53,12 @@ namespace OpenSim.Region.ExtensionsScriptModule | |||
52 | world = scene; | 53 | world = scene; |
53 | events = world.EventManager; | 54 | events = world.EventManager; |
54 | logger = MainLog.Instance; | 55 | logger = MainLog.Instance; |
55 | api = new ScriptAPI(world, libsecondlife.LLUUID.Zero); | 56 | api = new ScriptAPI(world, LLUUID.Zero); |
56 | } | 57 | } |
57 | 58 | ||
58 | public void CreateTaskAPI(libsecondlife.LLUUID task) | 59 | public void CreateTaskAPI(LLUUID task) |
59 | { | 60 | { |
60 | api = new ScriptAPI(world, task); | 61 | api = new ScriptAPI(world, task); |
61 | } | 62 | } |
62 | } | 63 | } |
63 | } | 64 | } \ No newline at end of file |
diff --git a/OpenSim/Region/ExtensionsScriptModule/ScriptInterpretedAPI.cs b/OpenSim/Region/ExtensionsScriptModule/ScriptInterpretedAPI.cs index eb85dbe..2895c4e 100644 --- a/OpenSim/Region/ExtensionsScriptModule/ScriptInterpretedAPI.cs +++ b/OpenSim/Region/ExtensionsScriptModule/ScriptInterpretedAPI.cs | |||
@@ -27,26 +27,25 @@ | |||
27 | */ | 27 | */ |
28 | 28 | ||
29 | using System; | 29 | using System; |
30 | using System.Collections.Generic; | ||
31 | using System.Text; | 30 | using System.Text; |
31 | using Axiom.Math; | ||
32 | using OpenSim.Framework.Console; | ||
33 | using OpenSim.Region.Environment.LandManagement; | ||
34 | using OpenSim.Region.Environment.Scenes; | ||
32 | using Key = libsecondlife.LLUUID; | 35 | using Key = libsecondlife.LLUUID; |
33 | using Rotation = libsecondlife.LLQuaternion; | 36 | using Rotation = libsecondlife.LLQuaternion; |
34 | using Vector = libsecondlife.LLVector3; | 37 | using Vector = libsecondlife.LLVector3; |
35 | using LSLList = System.Collections.Generic.List<string>; | 38 | using LSLList = System.Collections.Generic.List<string>; |
36 | 39 | ||
37 | using OpenSim.Region.Environment.Scenes; | ||
38 | using OpenSim.Region.Environment.LandManagement; | ||
39 | using libsecondlife; | ||
40 | |||
41 | namespace OpenSim.Region.ExtensionsScriptModule | 40 | namespace OpenSim.Region.ExtensionsScriptModule |
42 | { | 41 | { |
43 | /// <summary> | 42 | /// <summary> |
44 | /// A class inteded to act as an API for LSL-styled interpreted languages | 43 | /// A class inteded to act as an API for LSL-styled interpreted languages |
45 | /// </summary> | 44 | /// </summary> |
46 | /// <remarks>Avoid at all costs. This should ONLY be used for LSL.</remarks> | 45 | /// <remarks>Avoid at all costs. This should ONLY be used for LSL.</remarks> |
47 | class ScriptInterpretedAPI | 46 | internal class ScriptInterpretedAPI |
48 | { | 47 | { |
49 | protected LLUUID m_object; | 48 | protected Key m_object; |
50 | protected Scene m_scene; | 49 | protected Scene m_scene; |
51 | 50 | ||
52 | /// <summary> | 51 | /// <summary> |
@@ -78,7 +77,7 @@ namespace OpenSim.Region.ExtensionsScriptModule | |||
78 | /// </summary> | 77 | /// </summary> |
79 | /// <param name="world">The scene the object is located in</param> | 78 | /// <param name="world">The scene the object is located in</param> |
80 | /// <param name="member">The specific member being 'occupied' by the script</param> | 79 | /// <param name="member">The specific member being 'occupied' by the script</param> |
81 | public ScriptInterpretedAPI(Scene world, libsecondlife.LLUUID member) | 80 | public ScriptInterpretedAPI(Scene world, Key member) |
82 | { | 81 | { |
83 | m_scene = world; | 82 | m_scene = world; |
84 | m_object = member; | 83 | m_object = member; |
@@ -96,7 +95,7 @@ namespace OpenSim.Region.ExtensionsScriptModule | |||
96 | 95 | ||
97 | public float osAcos(float val) | 96 | public float osAcos(float val) |
98 | { | 97 | { |
99 | return (float)Math.Acos(val); | 98 | return (float) Math.Acos(val); |
100 | } | 99 | } |
101 | 100 | ||
102 | [Obsolete("Unimplemented")] | 101 | [Obsolete("Unimplemented")] |
@@ -105,14 +104,15 @@ namespace OpenSim.Region.ExtensionsScriptModule | |||
105 | Vector myPosition = Task.AbsolutePosition; | 104 | Vector myPosition = Task.AbsolutePosition; |
106 | Land myParcel = Scene.LandManager.getLandObject(myPosition.X, myPosition.Y); | 105 | Land myParcel = Scene.LandManager.getLandObject(myPosition.X, myPosition.Y); |
107 | 106 | ||
108 | OpenSim.Framework.Console.MainLog.Instance.Warn("script", "Unimplemented function called by script: osAddToLandPassList(Key avatar, float hours)"); | 107 | MainLog.Instance.Warn("script", |
108 | "Unimplemented function called by script: osAddToLandPassList(Key avatar, float hours)"); | ||
109 | return; | 109 | return; |
110 | } | 110 | } |
111 | 111 | ||
112 | [Obsolete("Unimplemented")] | 112 | [Obsolete("Unimplemented")] |
113 | public void osAdjustSoundVolume(float volume) | 113 | public void osAdjustSoundVolume(float volume) |
114 | { | 114 | { |
115 | OpenSim.Framework.Console.MainLog.Instance.Warn("script", "Unimplemented function called by script: osAdjustSoundVolume(float volume)"); | 115 | MainLog.Instance.Warn("script", "Unimplemented function called by script: osAdjustSoundVolume(float volume)"); |
116 | return; | 116 | return; |
117 | } | 117 | } |
118 | 118 | ||
@@ -125,8 +125,8 @@ namespace OpenSim.Region.ExtensionsScriptModule | |||
125 | [Obsolete("Unimplemented")] | 125 | [Obsolete("Unimplemented")] |
126 | public float osAngleBetween(Rotation a, Rotation b) | 126 | public float osAngleBetween(Rotation a, Rotation b) |
127 | { | 127 | { |
128 | Axiom.Math.Quaternion axA = new Axiom.Math.Quaternion(a.W, a.X, a.Y, a.Z); | 128 | Quaternion axA = new Quaternion(a.W, a.X, a.Y, a.Z); |
129 | Axiom.Math.Quaternion axB = new Axiom.Math.Quaternion(b.W, b.X, b.Y, b.Z); | 129 | Quaternion axB = new Quaternion(b.W, b.X, b.Y, b.Z); |
130 | 130 | ||
131 | return 0; | 131 | return 0; |
132 | } | 132 | } |
@@ -145,12 +145,12 @@ namespace OpenSim.Region.ExtensionsScriptModule | |||
145 | 145 | ||
146 | public float osAsin(float val) | 146 | public float osAsin(float val) |
147 | { | 147 | { |
148 | return (float)Math.Asin(val); | 148 | return (float) Math.Asin(val); |
149 | } | 149 | } |
150 | 150 | ||
151 | public float osAtan2(float x, float y) | 151 | public float osAtan2(float x, float y) |
152 | { | 152 | { |
153 | return (float)Math.Atan2(x, y); | 153 | return (float) Math.Atan2(x, y); |
154 | } | 154 | } |
155 | 155 | ||
156 | [Obsolete("Unimplemented")] | 156 | [Obsolete("Unimplemented")] |
@@ -178,10 +178,10 @@ namespace OpenSim.Region.ExtensionsScriptModule | |||
178 | 178 | ||
179 | public Rotation osAxes2Rot(Vector fwd, Vector left, Vector up) | 179 | public Rotation osAxes2Rot(Vector fwd, Vector left, Vector up) |
180 | { | 180 | { |
181 | Axiom.Math.Quaternion axQ = new Axiom.Math.Quaternion(); | 181 | Quaternion axQ = new Quaternion(); |
182 | Axiom.Math.Vector3 axFwd = new Axiom.Math.Vector3(fwd.X, fwd.Y, fwd.Z); | 182 | Vector3 axFwd = new Vector3(fwd.X, fwd.Y, fwd.Z); |
183 | Axiom.Math.Vector3 axLeft = new Axiom.Math.Vector3(left.X, left.Y, left.Z); | 183 | Vector3 axLeft = new Vector3(left.X, left.Y, left.Z); |
184 | Axiom.Math.Vector3 axUp = new Axiom.Math.Vector3(up.X, up.Y, up.Z); | 184 | Vector3 axUp = new Vector3(up.X, up.Y, up.Z); |
185 | 185 | ||
186 | axQ.FromAxes(axFwd, axLeft, axUp); | 186 | axQ.FromAxes(axFwd, axLeft, axUp); |
187 | 187 | ||
@@ -190,14 +190,14 @@ namespace OpenSim.Region.ExtensionsScriptModule | |||
190 | 190 | ||
191 | public Rotation osAxisAngle2Rot(Vector axis, float angle) | 191 | public Rotation osAxisAngle2Rot(Vector axis, float angle) |
192 | { | 192 | { |
193 | Axiom.Math.Quaternion axQ = Axiom.Math.Quaternion.FromAngleAxis(angle, new Axiom.Math.Vector3(axis.X, axis.Y, axis.Z)); | 193 | Quaternion axQ = Quaternion.FromAngleAxis(angle, new Vector3(axis.X, axis.Y, axis.Z)); |
194 | 194 | ||
195 | return new Rotation(axQ.x, axQ.y, axQ.z, axQ.w); | 195 | return new Rotation(axQ.x, axQ.y, axQ.z, axQ.w); |
196 | } | 196 | } |
197 | 197 | ||
198 | public string osBase64ToString(string str) | 198 | public string osBase64ToString(string str) |
199 | { | 199 | { |
200 | Encoding enc = System.Text.Encoding.UTF8; | 200 | Encoding enc = Encoding.UTF8; |
201 | return enc.GetString(Convert.FromBase64String(str)); | 201 | return enc.GetString(Convert.FromBase64String(str)); |
202 | } | 202 | } |
203 | 203 | ||
@@ -223,7 +223,7 @@ namespace OpenSim.Region.ExtensionsScriptModule | |||
223 | 223 | ||
224 | public int osCeil(float val) | 224 | public int osCeil(float val) |
225 | { | 225 | { |
226 | return (int)Math.Ceiling(val); | 226 | return (int) Math.Ceiling(val); |
227 | } | 227 | } |
228 | 228 | ||
229 | [Obsolete("Unimplemented")] | 229 | [Obsolete("Unimplemented")] |
@@ -252,13 +252,13 @@ namespace OpenSim.Region.ExtensionsScriptModule | |||
252 | 252 | ||
253 | public float osCos(float theta) | 253 | public float osCos(float theta) |
254 | { | 254 | { |
255 | return (float)Math.Cos(theta); | 255 | return (float) Math.Cos(theta); |
256 | } | 256 | } |
257 | 257 | ||
258 | public void osCreateLink(Key target, int parent) | 258 | public void osCreateLink(Key target, int parent) |
259 | { | 259 | { |
260 | if(Scene.Entities[target] is SceneObjectGroup) | 260 | if (Scene.Entities[target] is SceneObjectGroup) |
261 | Task.LinkToGroup((SceneObjectGroup)Scene.Entities[target]); | 261 | Task.LinkToGroup((SceneObjectGroup) Scene.Entities[target]); |
262 | 262 | ||
263 | return; | 263 | return; |
264 | } | 264 | } |
@@ -292,4 +292,4 @@ namespace OpenSim.Region.ExtensionsScriptModule | |||
292 | return; | 292 | return; |
293 | } | 293 | } |
294 | } | 294 | } |
295 | } | 295 | } \ No newline at end of file |
diff --git a/OpenSim/Region/ExtensionsScriptModule/ScriptInterpretedEvents.cs b/OpenSim/Region/ExtensionsScriptModule/ScriptInterpretedEvents.cs index 068df33..44feaff 100644 --- a/OpenSim/Region/ExtensionsScriptModule/ScriptInterpretedEvents.cs +++ b/OpenSim/Region/ExtensionsScriptModule/ScriptInterpretedEvents.cs | |||
@@ -26,19 +26,14 @@ | |||
26 | * | 26 | * |
27 | */ | 27 | */ |
28 | 28 | ||
29 | using System; | ||
30 | using System.Collections.Generic; | ||
31 | using System.Text; | ||
32 | using OpenSim.Region.Environment.Scenes; | ||
33 | using libsecondlife; | ||
34 | using Key = libsecondlife.LLUUID; | 29 | using Key = libsecondlife.LLUUID; |
35 | 30 | ||
36 | namespace OpenSim.Region.ExtensionsScriptModule | 31 | namespace OpenSim.Region.ExtensionsScriptModule |
37 | { | 32 | { |
38 | |||
39 | public class ScriptInterpretedEvents | 33 | public class ScriptInterpretedEvents |
40 | { | 34 | { |
41 | public delegate void OnTouchStartDelegate(Key user); | 35 | public delegate void OnTouchStartDelegate(Key user); |
36 | |||
42 | public event OnTouchStartDelegate OnTouchStart; | 37 | public event OnTouchStartDelegate OnTouchStart; |
43 | 38 | ||
44 | 39 | ||
@@ -48,4 +43,4 @@ namespace OpenSim.Region.ExtensionsScriptModule | |||
48 | OnTouchStart(user); | 43 | OnTouchStart(user); |
49 | } | 44 | } |
50 | } | 45 | } |
51 | } | 46 | } \ No newline at end of file |
diff --git a/OpenSim/Region/ExtensionsScriptModule/ScriptManager.cs b/OpenSim/Region/ExtensionsScriptModule/ScriptManager.cs index 95ab2ca..2778e9c 100644 --- a/OpenSim/Region/ExtensionsScriptModule/ScriptManager.cs +++ b/OpenSim/Region/ExtensionsScriptModule/ScriptManager.cs | |||
@@ -26,27 +26,28 @@ | |||
26 | * | 26 | * |
27 | */ | 27 | */ |
28 | using System.Collections.Generic; | 28 | using System.Collections.Generic; |
29 | using Nini.Config; | ||
29 | using OpenSim.Framework.Console; | 30 | using OpenSim.Framework.Console; |
30 | using OpenSim.Region.Environment.Interfaces; | 31 | using OpenSim.Region.Environment.Interfaces; |
31 | using OpenSim.Region.Environment.Scenes; | 32 | using OpenSim.Region.Environment.Scenes; |
32 | using OpenSim.Region.ExtensionsScriptModule.CSharp; | 33 | using OpenSim.Region.ExtensionsScriptModule.CSharp; |
33 | using OpenSim.Region.ExtensionsScriptModule.JScript; | 34 | using OpenSim.Region.ExtensionsScriptModule.JScript; |
34 | using OpenSim.Region.ExtensionsScriptModule.JVMEngine; | 35 | using OpenSim.Region.ExtensionsScriptModule.JVMEngine; |
35 | using Nini.Config; | ||
36 | 36 | ||
37 | namespace OpenSim.Region.ExtensionsScriptModule | 37 | namespace OpenSim.Region.ExtensionsScriptModule |
38 | { | 38 | { |
39 | public class ScriptManager : IRegionModule, IExtensionScriptModule | 39 | public class ScriptManager : IRegionModule, IExtensionScriptModule |
40 | { | 40 | { |
41 | readonly List<IScript> scripts = new List<IScript>(); | 41 | private readonly List<IScript> scripts = new List<IScript>(); |
42 | Scene m_scene; | 42 | private Scene m_scene; |
43 | readonly Dictionary<string, IScriptCompiler> compilers = new Dictionary<string, IScriptCompiler>(); | 43 | private readonly Dictionary<string, IScriptCompiler> compilers = new Dictionary<string, IScriptCompiler>(); |
44 | 44 | ||
45 | private void LoadFromCompiler(Dictionary<string, IScript> compiledscripts) | 45 | private void LoadFromCompiler(Dictionary<string, IScript> compiledscripts) |
46 | { | 46 | { |
47 | foreach (KeyValuePair<string, IScript> script in compiledscripts) | 47 | foreach (KeyValuePair<string, IScript> script in compiledscripts) |
48 | { | 48 | { |
49 | ScriptInfo scriptInfo = new ScriptInfo(m_scene); // Since each script could potentially corrupt their access with a stray assignment, making a new one for each script. | 49 | ScriptInfo scriptInfo = new ScriptInfo(m_scene); |
50 | // Since each script could potentially corrupt their access with a stray assignment, making a new one for each script. | ||
50 | MainLog.Instance.Verbose("Loading " + script.Key); | 51 | MainLog.Instance.Verbose("Loading " + script.Key); |
51 | script.Value.Initialise(scriptInfo); | 52 | script.Value.Initialise(scriptInfo); |
52 | scripts.Add(script.Value); | 53 | scripts.Add(script.Value); |
@@ -70,7 +71,7 @@ namespace OpenSim.Region.ExtensionsScriptModule | |||
70 | 71 | ||
71 | public void Initialise(Scene scene, IConfigSource config) | 72 | public void Initialise(Scene scene, IConfigSource config) |
72 | { | 73 | { |
73 | OpenSim.Framework.Console.MainLog.Instance.Verbose("SCRIPTMODULE", "Initialising Extensions Scripting Module"); | 74 | MainLog.Instance.Verbose("SCRIPTMODULE", "Initialising Extensions Scripting Module"); |
74 | m_scene = scene; | 75 | m_scene = scene; |
75 | 76 | ||
76 | m_scene.RegisterModuleInterface<IExtensionScriptModule>(this); | 77 | m_scene.RegisterModuleInterface<IExtensionScriptModule>(this); |
@@ -78,12 +79,10 @@ namespace OpenSim.Region.ExtensionsScriptModule | |||
78 | 79 | ||
79 | public void PostInitialise() | 80 | public void PostInitialise() |
80 | { | 81 | { |
81 | |||
82 | } | 82 | } |
83 | 83 | ||
84 | public void Close() | 84 | public void Close() |
85 | { | 85 | { |
86 | |||
87 | } | 86 | } |
88 | 87 | ||
89 | public string Name | 88 | public string Name |
@@ -92,8 +91,8 @@ namespace OpenSim.Region.ExtensionsScriptModule | |||
92 | } | 91 | } |
93 | 92 | ||
94 | public bool IsSharedModule | 93 | public bool IsSharedModule |
95 | { | 94 | { |
96 | get { return false; } | 95 | get { return false; } |
97 | } | 96 | } |
98 | 97 | ||
99 | public bool Compile(string filename) | 98 | public bool Compile(string filename) |
@@ -127,7 +126,8 @@ namespace OpenSim.Region.ExtensionsScriptModule | |||
127 | public bool AddPreCompiledScript(IScript script) | 126 | public bool AddPreCompiledScript(IScript script) |
128 | { | 127 | { |
129 | MainLog.Instance.Verbose("Loading script " + script.Name); | 128 | MainLog.Instance.Verbose("Loading script " + script.Name); |
130 | ScriptInfo scriptInfo = new ScriptInfo(m_scene); // Since each script could potentially corrupt their access with a stray assignment, making a new one for each script. | 129 | ScriptInfo scriptInfo = new ScriptInfo(m_scene); |
130 | // Since each script could potentially corrupt their access with a stray assignment, making a new one for each script. | ||
131 | script.Initialise(scriptInfo); | 131 | script.Initialise(scriptInfo); |
132 | scripts.Add(script); | 132 | scripts.Add(script); |
133 | 133 | ||
@@ -141,9 +141,9 @@ namespace OpenSim.Region.ExtensionsScriptModule | |||
141 | bool AddPreCompiledScript(IScript script); | 141 | bool AddPreCompiledScript(IScript script); |
142 | } | 142 | } |
143 | 143 | ||
144 | interface IScriptCompiler | 144 | internal interface IScriptCompiler |
145 | { | 145 | { |
146 | Dictionary<string, IScript> compile(string filename); | 146 | Dictionary<string, IScript> compile(string filename); |
147 | string FileExt(); | 147 | string FileExt(); |
148 | } | 148 | } |
149 | } | 149 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Physics/BasicPhysicsPlugin/AssemblyInfo.cs b/OpenSim/Region/Physics/BasicPhysicsPlugin/AssemblyInfo.cs index 2d4d898..a8f1de1 100644 --- a/OpenSim/Region/Physics/BasicPhysicsPlugin/AssemblyInfo.cs +++ b/OpenSim/Region/Physics/BasicPhysicsPlugin/AssemblyInfo.cs | |||
@@ -27,24 +27,26 @@ | |||
27 | */ | 27 | */ |
28 | using System.Reflection; | 28 | using System.Reflection; |
29 | using System.Runtime.InteropServices; | 29 | using System.Runtime.InteropServices; |
30 | |||
30 | // Information about this assembly is defined by the following | 31 | // Information about this assembly is defined by the following |
31 | // attributes. | 32 | // attributes. |
32 | // | 33 | // |
33 | // change them to the information which is associated with the assembly | 34 | // change them to the information which is associated with the assembly |
34 | // you compile. | 35 | // you compile. |
35 | 36 | ||
36 | [assembly: AssemblyTitle("PhysXplugin")] | 37 | [assembly : AssemblyTitle("PhysXplugin")] |
37 | [assembly: AssemblyDescription("")] | 38 | [assembly : AssemblyDescription("")] |
38 | [assembly: AssemblyConfiguration("")] | 39 | [assembly : AssemblyConfiguration("")] |
39 | [assembly: AssemblyCompany("")] | 40 | [assembly : AssemblyCompany("")] |
40 | [assembly: AssemblyProduct("PhysXplugin")] | 41 | [assembly : AssemblyProduct("PhysXplugin")] |
41 | [assembly: AssemblyCopyright("")] | 42 | [assembly : AssemblyCopyright("")] |
42 | [assembly: AssemblyTrademark("")] | 43 | [assembly : AssemblyTrademark("")] |
43 | [assembly: AssemblyCulture("")] | 44 | [assembly : AssemblyCulture("")] |
44 | 45 | ||
45 | // This sets the default COM visibility of types in the assembly to invisible. | 46 | // This sets the default COM visibility of types in the assembly to invisible. |
46 | // If you need to expose a type to COM, use [ComVisible(true)] on that type. | 47 | // If you need to expose a type to COM, use [ComVisible(true)] on that type. |
47 | [assembly: ComVisible(false)] | 48 | |
49 | [assembly : ComVisible(false)] | ||
48 | 50 | ||
49 | // The assembly version has following format : | 51 | // The assembly version has following format : |
50 | // | 52 | // |
@@ -53,4 +55,4 @@ using System.Runtime.InteropServices; | |||
53 | // You can specify all values by your own or you can build default build and revision | 55 | // You can specify all values by your own or you can build default build and revision |
54 | // numbers with the '*' character (the default): | 56 | // numbers with the '*' character (the default): |
55 | 57 | ||
56 | [assembly: AssemblyVersion("1.0.*")] | 58 | [assembly : AssemblyVersion("1.0.*")] \ No newline at end of file |
diff --git a/OpenSim/Region/Physics/BasicPhysicsPlugin/BasicPhysicsPlugin.cs b/OpenSim/Region/Physics/BasicPhysicsPlugin/BasicPhysicsPlugin.cs index 95e6095..b412818 100644 --- a/OpenSim/Region/Physics/BasicPhysicsPlugin/BasicPhysicsPlugin.cs +++ b/OpenSim/Region/Physics/BasicPhysicsPlugin/BasicPhysicsPlugin.cs | |||
@@ -39,7 +39,6 @@ namespace OpenSim.Region.Physics.BasicPhysicsPlugin | |||
39 | { | 39 | { |
40 | public BasicPhysicsPlugin() | 40 | public BasicPhysicsPlugin() |
41 | { | 41 | { |
42 | |||
43 | } | 42 | } |
44 | 43 | ||
45 | public bool Init() | 44 | public bool Init() |
@@ -59,7 +58,6 @@ namespace OpenSim.Region.Physics.BasicPhysicsPlugin | |||
59 | 58 | ||
60 | public void Dispose() | 59 | public void Dispose() |
61 | { | 60 | { |
62 | |||
63 | } | 61 | } |
64 | } | 62 | } |
65 | 63 | ||
@@ -70,7 +68,6 @@ namespace OpenSim.Region.Physics.BasicPhysicsPlugin | |||
70 | 68 | ||
71 | public BasicScene() | 69 | public BasicScene() |
72 | { | 70 | { |
73 | |||
74 | } | 71 | } |
75 | 72 | ||
76 | public override PhysicsActor AddAvatar(string avName, PhysicsVector position) | 73 | public override PhysicsActor AddAvatar(string avName, PhysicsVector position) |
@@ -83,17 +80,15 @@ namespace OpenSim.Region.Physics.BasicPhysicsPlugin | |||
83 | 80 | ||
84 | public override void RemovePrim(PhysicsActor prim) | 81 | public override void RemovePrim(PhysicsActor prim) |
85 | { | 82 | { |
86 | |||
87 | } | 83 | } |
88 | 84 | ||
89 | public override void RemoveAvatar(PhysicsActor actor) | 85 | public override void RemoveAvatar(PhysicsActor actor) |
90 | { | 86 | { |
91 | BasicActor act = (BasicActor)actor; | 87 | BasicActor act = (BasicActor) actor; |
92 | if (_actors.Contains(act)) | 88 | if (_actors.Contains(act)) |
93 | { | 89 | { |
94 | _actors.Remove(act); | 90 | _actors.Remove(act); |
95 | } | 91 | } |
96 | |||
97 | } | 92 | } |
98 | 93 | ||
99 | /* | 94 | /* |
@@ -102,7 +97,9 @@ namespace OpenSim.Region.Physics.BasicPhysicsPlugin | |||
102 | return null; | 97 | return null; |
103 | } | 98 | } |
104 | */ | 99 | */ |
105 | public override PhysicsActor AddPrimShape(string primName, PrimitiveBaseShape pbs, PhysicsVector position, PhysicsVector size, Quaternion rotation) | 100 | |
101 | public override PhysicsActor AddPrimShape(string primName, PrimitiveBaseShape pbs, PhysicsVector position, | ||
102 | PhysicsVector size, Quaternion rotation) | ||
106 | { | 103 | { |
107 | return null; | 104 | return null; |
108 | } | 105 | } |
@@ -112,8 +109,8 @@ namespace OpenSim.Region.Physics.BasicPhysicsPlugin | |||
112 | { | 109 | { |
113 | foreach (BasicActor actor in _actors) | 110 | foreach (BasicActor actor in _actors) |
114 | { | 111 | { |
115 | actor.Position.X = actor.Position.X + (actor.Velocity.X * timeStep); | 112 | actor.Position.X = actor.Position.X + (actor.Velocity.X*timeStep); |
116 | actor.Position.Y = actor.Position.Y + (actor.Velocity.Y * timeStep); | 113 | actor.Position.Y = actor.Position.Y + (actor.Velocity.Y*timeStep); |
117 | if (actor.Position.Y < 0) | 114 | if (actor.Position.Y < 0) |
118 | { | 115 | { |
119 | actor.Position.Y = 0.1F; | 116 | actor.Position.Y = 0.1F; |
@@ -132,17 +129,18 @@ namespace OpenSim.Region.Physics.BasicPhysicsPlugin | |||
132 | actor.Position.X = 255.9F; | 129 | actor.Position.X = 255.9F; |
133 | } | 130 | } |
134 | 131 | ||
135 | float height = _heightMap[(int)actor.Position.Y * 256 + (int)actor.Position.X] + 1.0f; | 132 | float height = _heightMap[(int) actor.Position.Y*256 + (int) actor.Position.X] + 1.0f; |
136 | if (actor.Flying) | 133 | if (actor.Flying) |
137 | { | 134 | { |
138 | if (actor.Position.Z + (actor.Velocity.Z * timeStep) < _heightMap[(int)actor.Position.Y * 256 + (int)actor.Position.X] + 2) | 135 | if (actor.Position.Z + (actor.Velocity.Z*timeStep) < |
136 | _heightMap[(int) actor.Position.Y*256 + (int) actor.Position.X] + 2) | ||
139 | { | 137 | { |
140 | actor.Position.Z = height; | 138 | actor.Position.Z = height; |
141 | actor.Velocity.Z = 0; | 139 | actor.Velocity.Z = 0; |
142 | } | 140 | } |
143 | else | 141 | else |
144 | { | 142 | { |
145 | actor.Position.Z = actor.Position.Z + (actor.Velocity.Z * timeStep); | 143 | actor.Position.Z = actor.Position.Z + (actor.Velocity.Z*timeStep); |
146 | } | 144 | } |
147 | } | 145 | } |
148 | else | 146 | else |
@@ -150,32 +148,26 @@ namespace OpenSim.Region.Physics.BasicPhysicsPlugin | |||
150 | actor.Position.Z = height; | 148 | actor.Position.Z = height; |
151 | actor.Velocity.Z = 0; | 149 | actor.Velocity.Z = 0; |
152 | } | 150 | } |
153 | |||
154 | |||
155 | } | 151 | } |
156 | } | 152 | } |
157 | 153 | ||
158 | public override void GetResults() | 154 | public override void GetResults() |
159 | { | 155 | { |
160 | |||
161 | } | 156 | } |
162 | 157 | ||
163 | public override bool IsThreaded | 158 | public override bool IsThreaded |
164 | { | 159 | { |
165 | get | 160 | get { return (false); // for now we won't be multithreaded |
166 | { | ||
167 | return (false); // for now we won't be multithreaded | ||
168 | } | 161 | } |
169 | } | 162 | } |
170 | 163 | ||
171 | public override void SetTerrain(float[] heightMap) | 164 | public override void SetTerrain(float[] heightMap) |
172 | { | 165 | { |
173 | this._heightMap = heightMap; | 166 | _heightMap = heightMap; |
174 | } | 167 | } |
175 | 168 | ||
176 | public override void DeleteTerrain() | 169 | public override void DeleteTerrain() |
177 | { | 170 | { |
178 | |||
179 | } | 171 | } |
180 | } | 172 | } |
181 | 173 | ||
@@ -185,6 +177,7 @@ namespace OpenSim.Region.Physics.BasicPhysicsPlugin | |||
185 | private PhysicsVector _velocity; | 177 | private PhysicsVector _velocity; |
186 | private PhysicsVector _acceleration; | 178 | private PhysicsVector _acceleration; |
187 | private bool flying; | 179 | private bool flying; |
180 | |||
188 | public BasicActor() | 181 | public BasicActor() |
189 | { | 182 | { |
190 | _velocity = new PhysicsVector(); | 183 | _velocity = new PhysicsVector(); |
@@ -194,97 +187,56 @@ namespace OpenSim.Region.Physics.BasicPhysicsPlugin | |||
194 | 187 | ||
195 | public override bool Flying | 188 | public override bool Flying |
196 | { | 189 | { |
197 | get | 190 | get { return flying; } |
198 | { | 191 | set { flying = value; } |
199 | return flying; | ||
200 | } | ||
201 | set | ||
202 | { | ||
203 | flying = value; | ||
204 | } | ||
205 | } | 192 | } |
206 | 193 | ||
207 | public override PhysicsVector Position | 194 | public override PhysicsVector Position |
208 | { | 195 | { |
209 | get | 196 | get { return _position; } |
210 | { | 197 | set { _position = value; } |
211 | return _position; | ||
212 | } | ||
213 | set | ||
214 | { | ||
215 | _position = value; | ||
216 | } | ||
217 | } | 198 | } |
218 | 199 | ||
219 | public override PhysicsVector Size | 200 | public override PhysicsVector Size |
220 | { | 201 | { |
221 | get | 202 | get { return new PhysicsVector(0, 0, 0); } |
222 | { | 203 | set { } |
223 | return new PhysicsVector(0, 0, 0); | ||
224 | } | ||
225 | set | ||
226 | { | ||
227 | } | ||
228 | } | 204 | } |
229 | 205 | ||
230 | public override PhysicsVector Velocity | 206 | public override PhysicsVector Velocity |
231 | { | 207 | { |
232 | get | 208 | get { return _velocity; } |
233 | { | 209 | set { _velocity = value; } |
234 | return _velocity; | ||
235 | } | ||
236 | set | ||
237 | { | ||
238 | _velocity = value; | ||
239 | } | ||
240 | } | 210 | } |
241 | 211 | ||
242 | public override Quaternion Orientation | 212 | public override Quaternion Orientation |
243 | { | 213 | { |
244 | get | 214 | get { return Quaternion.Identity; } |
245 | { | 215 | set { } |
246 | return Quaternion.Identity; | ||
247 | } | ||
248 | set | ||
249 | { | ||
250 | |||
251 | } | ||
252 | } | 216 | } |
253 | 217 | ||
254 | public override PhysicsVector Acceleration | 218 | public override PhysicsVector Acceleration |
255 | { | 219 | { |
256 | get | 220 | get { return _acceleration; } |
257 | { | ||
258 | return _acceleration; | ||
259 | } | ||
260 | |||
261 | } | 221 | } |
262 | 222 | ||
263 | public override bool Kinematic | 223 | public override bool Kinematic |
264 | { | 224 | { |
265 | get | 225 | get { return true; } |
266 | { | 226 | set { } |
267 | return true; | ||
268 | } | ||
269 | set | ||
270 | { | ||
271 | |||
272 | } | ||
273 | } | 227 | } |
228 | |||
274 | public void SetAcceleration(PhysicsVector accel) | 229 | public void SetAcceleration(PhysicsVector accel) |
275 | { | 230 | { |
276 | this._acceleration = accel; | 231 | _acceleration = accel; |
277 | } | 232 | } |
278 | 233 | ||
279 | public override void AddForce(PhysicsVector force) | 234 | public override void AddForce(PhysicsVector force) |
280 | { | 235 | { |
281 | |||
282 | } | 236 | } |
283 | 237 | ||
284 | public override void SetMomentum(PhysicsVector momentum) | 238 | public override void SetMomentum(PhysicsVector momentum) |
285 | { | 239 | { |
286 | |||
287 | } | 240 | } |
288 | } | 241 | } |
289 | 242 | } \ No newline at end of file | |
290 | } | ||
diff --git a/OpenSim/Region/Physics/BulletXPlugin/AssemblyInfo.cs b/OpenSim/Region/Physics/BulletXPlugin/AssemblyInfo.cs index 0180917..c8596f7 100644 --- a/OpenSim/Region/Physics/BulletXPlugin/AssemblyInfo.cs +++ b/OpenSim/Region/Physics/BulletXPlugin/AssemblyInfo.cs | |||
@@ -1,4 +1,4 @@ | |||
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 | * |
@@ -27,24 +27,26 @@ | |||
27 | */ | 27 | */ |
28 | using System.Reflection; | 28 | using System.Reflection; |
29 | using System.Runtime.InteropServices; | 29 | using System.Runtime.InteropServices; |
30 | |||
30 | // Information about this assembly is defined by the following | 31 | // Information about this assembly is defined by the following |
31 | // attributes. | 32 | // attributes. |
32 | // | 33 | // |
33 | // change them to the information which is associated with the assembly | 34 | // change them to the information which is associated with the assembly |
34 | // you compile. | 35 | // you compile. |
35 | 36 | ||
36 | [assembly: AssemblyTitle("BulletXPlugin")] | 37 | [assembly : AssemblyTitle("BulletXPlugin")] |
37 | [assembly: AssemblyDescription("")] | 38 | [assembly : AssemblyDescription("")] |
38 | [assembly: AssemblyConfiguration("")] | 39 | [assembly : AssemblyConfiguration("")] |
39 | [assembly: AssemblyCompany("")] | 40 | [assembly : AssemblyCompany("")] |
40 | [assembly: AssemblyProduct("BulletXPlugin")] | 41 | [assembly : AssemblyProduct("BulletXPlugin")] |
41 | [assembly: AssemblyCopyright("")] | 42 | [assembly : AssemblyCopyright("")] |
42 | [assembly: AssemblyTrademark("")] | 43 | [assembly : AssemblyTrademark("")] |
43 | [assembly: AssemblyCulture("")] | 44 | [assembly : AssemblyCulture("")] |
44 | 45 | ||
45 | // This sets the default COM visibility of types in the assembly to invisible. | 46 | // This sets the default COM visibility of types in the assembly to invisible. |
46 | // If you need to expose a type to COM, use [ComVisible(true)] on that type. | 47 | // If you need to expose a type to COM, use [ComVisible(true)] on that type. |
47 | [assembly: ComVisible(false)] | 48 | |
49 | [assembly : ComVisible(false)] | ||
48 | 50 | ||
49 | // The assembly version has following format : | 51 | // The assembly version has following format : |
50 | // | 52 | // |
@@ -53,4 +55,4 @@ using System.Runtime.InteropServices; | |||
53 | // You can specify all values by your own or you can build default build and revision | 55 | // You can specify all values by your own or you can build default build and revision |
54 | // numbers with the '*' character (the default): | 56 | // numbers with the '*' character (the default): |
55 | 57 | ||
56 | [assembly: AssemblyVersion("1.0.0.0")] | 58 | [assembly : AssemblyVersion("1.0.0.0")] \ No newline at end of file |
diff --git a/OpenSim/Region/Physics/BulletXPlugin/BulletXPlugin.cs b/OpenSim/Region/Physics/BulletXPlugin/BulletXPlugin.cs index 9fdc017..1658e2d 100644 --- a/OpenSim/Region/Physics/BulletXPlugin/BulletXPlugin.cs +++ b/OpenSim/Region/Physics/BulletXPlugin/BulletXPlugin.cs | |||
@@ -27,6 +27,7 @@ | |||
27 | */ | 27 | */ |
28 | 28 | ||
29 | #region Copyright | 29 | #region Copyright |
30 | |||
30 | /* | 31 | /* |
31 | * Copyright (c) Contributors, http://www.openmetaverse.org/ | 32 | * Copyright (c) Contributors, http://www.openmetaverse.org/ |
32 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | 33 | * See CONTRIBUTORS.TXT for a full list of copyright holders. |
@@ -54,18 +55,21 @@ | |||
54 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 55 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
55 | * | 56 | * |
56 | */ | 57 | */ |
58 | |||
57 | #endregion | 59 | #endregion |
60 | |||
58 | #region References | 61 | #region References |
62 | |||
59 | using System; | 63 | using System; |
60 | using System.Collections.Generic; | 64 | using System.Collections.Generic; |
61 | using OpenSim.Region.Physics.Manager; | ||
62 | using OpenSim.Framework; | ||
63 | using Axiom.Math; | ||
64 | using AxiomQuaternion = Axiom.Math.Quaternion; | ||
65 | //Specific References for BulletXPlugin | ||
66 | using MonoXnaCompactMaths; | 65 | using MonoXnaCompactMaths; |
66 | using OpenSim.Framework; | ||
67 | using OpenSim.Region.Physics.Manager; | ||
67 | using XnaDevRu.BulletX; | 68 | using XnaDevRu.BulletX; |
68 | using XnaDevRu.BulletX.Dynamics; | 69 | using XnaDevRu.BulletX.Dynamics; |
70 | using AxiomQuaternion = Axiom.Math.Quaternion; | ||
71 | using BoxShape=XnaDevRu.BulletX.BoxShape; | ||
72 | //Specific References for BulletXPlugin | ||
69 | 73 | ||
70 | #endregion | 74 | #endregion |
71 | 75 | ||
@@ -80,27 +84,31 @@ namespace OpenSim.Region.Physics.BulletXPlugin | |||
80 | { | 84 | { |
81 | } | 85 | } |
82 | } | 86 | } |
87 | |||
83 | /// <summary> | 88 | /// <summary> |
84 | /// BulletXConversions are called now BulletXMaths | 89 | /// BulletXConversions are called now BulletXMaths |
85 | /// This Class converts objects and types for BulletX and give some operations | 90 | /// This Class converts objects and types for BulletX and give some operations |
86 | /// </summary> | 91 | /// </summary> |
87 | public class BulletXMaths | 92 | public class BulletXMaths |
88 | { | 93 | { |
89 | //Vector3 | 94 | //Vector3 |
90 | public static MonoXnaCompactMaths.Vector3 PhysicsVectorToXnaVector3(PhysicsVector physicsVector) | 95 | public static Vector3 PhysicsVectorToXnaVector3(PhysicsVector physicsVector) |
91 | { | 96 | { |
92 | return new MonoXnaCompactMaths.Vector3(physicsVector.X, physicsVector.Y, physicsVector.Z); | 97 | return new Vector3(physicsVector.X, physicsVector.Y, physicsVector.Z); |
93 | } | 98 | } |
94 | public static PhysicsVector XnaVector3ToPhysicsVector(MonoXnaCompactMaths.Vector3 xnaVector3) | 99 | |
100 | public static PhysicsVector XnaVector3ToPhysicsVector(Vector3 xnaVector3) | ||
95 | { | 101 | { |
96 | return new PhysicsVector(xnaVector3.X, xnaVector3.Y, xnaVector3.Z); | 102 | return new PhysicsVector(xnaVector3.X, xnaVector3.Y, xnaVector3.Z); |
97 | } | 103 | } |
104 | |||
98 | //Quaternion | 105 | //Quaternion |
99 | public static MonoXnaCompactMaths.Quaternion AxiomQuaternionToXnaQuaternion(AxiomQuaternion axiomQuaternion) | 106 | public static Quaternion AxiomQuaternionToXnaQuaternion(AxiomQuaternion axiomQuaternion) |
100 | { | 107 | { |
101 | return new MonoXnaCompactMaths.Quaternion(axiomQuaternion.x, axiomQuaternion.y, axiomQuaternion.z, axiomQuaternion.w); | 108 | return new Quaternion(axiomQuaternion.x, axiomQuaternion.y, axiomQuaternion.z, axiomQuaternion.w); |
102 | } | 109 | } |
103 | public static AxiomQuaternion XnaQuaternionToAxiomQuaternion(MonoXnaCompactMaths.Quaternion xnaQuaternion) | 110 | |
111 | public static AxiomQuaternion XnaQuaternionToAxiomQuaternion(Quaternion xnaQuaternion) | ||
104 | { | 112 | { |
105 | return new AxiomQuaternion(xnaQuaternion.W, xnaQuaternion.X, xnaQuaternion.Y, xnaQuaternion.Z); | 113 | return new AxiomQuaternion(xnaQuaternion.W, xnaQuaternion.X, xnaQuaternion.Y, xnaQuaternion.Z); |
106 | } | 114 | } |
@@ -110,70 +118,79 @@ namespace OpenSim.Region.Physics.BulletXPlugin | |||
110 | //- GetRotation (class MatrixOperations) | 118 | //- GetRotation (class MatrixOperations) |
111 | //- GetElement (class MathHelper) | 119 | //- GetElement (class MathHelper) |
112 | //- SetElement (class MathHelper) | 120 | //- SetElement (class MathHelper) |
113 | internal static void SetRotation(ref Matrix m, MonoXnaCompactMaths.Quaternion q) | 121 | internal static void SetRotation(ref Matrix m, Quaternion q) |
114 | { | 122 | { |
115 | float d = q.LengthSquared(); | 123 | float d = q.LengthSquared(); |
116 | float s = 2f / d; | 124 | float s = 2f/d; |
117 | float xs = q.X * s, ys = q.Y * s, zs = q.Z * s; | 125 | float xs = q.X*s, ys = q.Y*s, zs = q.Z*s; |
118 | float wx = q.W * xs, wy = q.W * ys, wz = q.W * zs; | 126 | float wx = q.W*xs, wy = q.W*ys, wz = q.W*zs; |
119 | float xx = q.X * xs, xy = q.X * ys, xz = q.X * zs; | 127 | float xx = q.X*xs, xy = q.X*ys, xz = q.X*zs; |
120 | float yy = q.Y * ys, yz = q.Y * zs, zz = q.Z * zs; | 128 | float yy = q.Y*ys, yz = q.Y*zs, zz = q.Z*zs; |
121 | m = new Matrix(1 - (yy + zz), xy - wz, xz + wy, 0, | 129 | m = new Matrix(1 - (yy + zz), xy - wz, xz + wy, 0, |
122 | xy + wz, 1 - (xx + zz), yz - wx, 0, | 130 | xy + wz, 1 - (xx + zz), yz - wx, 0, |
123 | xz - wy, yz + wx, 1 - (xx + yy), 0, | 131 | xz - wy, yz + wx, 1 - (xx + yy), 0, |
124 | m.M41, m.M42, m.M43, 1); | 132 | m.M41, m.M42, m.M43, 1); |
125 | } | 133 | } |
126 | internal static MonoXnaCompactMaths.Quaternion GetRotation(Matrix m) | 134 | |
135 | internal static Quaternion GetRotation(Matrix m) | ||
127 | { | 136 | { |
128 | MonoXnaCompactMaths.Quaternion q = new MonoXnaCompactMaths.Quaternion(); | 137 | Quaternion q = new Quaternion(); |
129 | 138 | ||
130 | float trace = m.M11 + m.M22 + m.M33; | 139 | float trace = m.M11 + m.M22 + m.M33; |
131 | 140 | ||
132 | if (trace > 0) | 141 | if (trace > 0) |
133 | { | 142 | { |
134 | float s = (float)Math.Sqrt(trace + 1); | 143 | float s = (float) Math.Sqrt(trace + 1); |
135 | q.W = s * 0.5f; | 144 | q.W = s*0.5f; |
136 | s = 0.5f / s; | 145 | s = 0.5f/s; |
137 | 146 | ||
138 | q.X = (m.M32 - m.M23) * s; | 147 | q.X = (m.M32 - m.M23)*s; |
139 | q.Y = (m.M13 - m.M31) * s; | 148 | q.Y = (m.M13 - m.M31)*s; |
140 | q.Z = (m.M21 - m.M12) * s; | 149 | q.Z = (m.M21 - m.M12)*s; |
141 | } | 150 | } |
142 | else | 151 | else |
143 | { | 152 | { |
144 | int i = m.M11 < m.M22 ? | 153 | int i = m.M11 < m.M22 |
145 | (m.M22 < m.M33 ? 2 : 1) : | 154 | ? |
146 | (m.M11 < m.M33 ? 2 : 0); | 155 | (m.M22 < m.M33 ? 2 : 1) |
147 | int j = (i + 1) % 3; | 156 | : |
148 | int k = (i + 2) % 3; | 157 | (m.M11 < m.M33 ? 2 : 0); |
149 | 158 | int j = (i + 1)%3; | |
150 | float s = (float)Math.Sqrt(GetElement(m, i, i) - GetElement(m, j, j) - GetElement(m, k, k) + 1); | 159 | int k = (i + 2)%3; |
151 | SetElement(ref q, i, s * 0.5f); | 160 | |
152 | s = 0.5f / s; | 161 | float s = (float) Math.Sqrt(GetElement(m, i, i) - GetElement(m, j, j) - GetElement(m, k, k) + 1); |
153 | 162 | SetElement(ref q, i, s*0.5f); | |
154 | q.W = (GetElement(m, k, j) - GetElement(m, j, k)) * s; | 163 | s = 0.5f/s; |
155 | SetElement(ref q, j, (GetElement(m, j, i) + GetElement(m, i, j)) * s); | 164 | |
156 | SetElement(ref q, k, (GetElement(m, k, i) + GetElement(m, i, k)) * s); | 165 | q.W = (GetElement(m, k, j) - GetElement(m, j, k))*s; |
166 | SetElement(ref q, j, (GetElement(m, j, i) + GetElement(m, i, j))*s); | ||
167 | SetElement(ref q, k, (GetElement(m, k, i) + GetElement(m, i, k))*s); | ||
157 | } | 168 | } |
158 | 169 | ||
159 | return q; | 170 | return q; |
160 | } | 171 | } |
161 | internal static float SetElement(ref MonoXnaCompactMaths.Quaternion q, int index, float value) | 172 | |
173 | internal static float SetElement(ref Quaternion q, int index, float value) | ||
162 | { | 174 | { |
163 | switch (index) | 175 | switch (index) |
164 | { | 176 | { |
165 | case 0: | 177 | case 0: |
166 | q.X = value; break; | 178 | q.X = value; |
179 | break; | ||
167 | case 1: | 180 | case 1: |
168 | q.Y = value; break; | 181 | q.Y = value; |
182 | break; | ||
169 | case 2: | 183 | case 2: |
170 | q.Z = value; break; | 184 | q.Z = value; |
185 | break; | ||
171 | case 3: | 186 | case 3: |
172 | q.W = value; break; | 187 | q.W = value; |
188 | break; | ||
173 | } | 189 | } |
174 | 190 | ||
175 | return 0; | 191 | return 0; |
176 | } | 192 | } |
193 | |||
177 | internal static float GetElement(Matrix mat, int row, int col) | 194 | internal static float GetElement(Matrix mat, int row, int col) |
178 | { | 195 | { |
179 | switch (row) | 196 | switch (row) |
@@ -187,7 +204,8 @@ namespace OpenSim.Region.Physics.BulletXPlugin | |||
187 | return mat.M12; | 204 | return mat.M12; |
188 | case 2: | 205 | case 2: |
189 | return mat.M13; | 206 | return mat.M13; |
190 | } break; | 207 | } |
208 | break; | ||
191 | case 1: | 209 | case 1: |
192 | switch (col) | 210 | switch (col) |
193 | { | 211 | { |
@@ -197,7 +215,8 @@ namespace OpenSim.Region.Physics.BulletXPlugin | |||
197 | return mat.M22; | 215 | return mat.M22; |
198 | case 2: | 216 | case 2: |
199 | return mat.M23; | 217 | return mat.M23; |
200 | } break; | 218 | } |
219 | break; | ||
201 | case 2: | 220 | case 2: |
202 | switch (col) | 221 | switch (col) |
203 | { | 222 | { |
@@ -207,12 +226,14 @@ namespace OpenSim.Region.Physics.BulletXPlugin | |||
207 | return mat.M32; | 226 | return mat.M32; |
208 | case 2: | 227 | case 2: |
209 | return mat.M33; | 228 | return mat.M33; |
210 | } break; | 229 | } |
230 | break; | ||
211 | } | 231 | } |
212 | 232 | ||
213 | return 0; | 233 | return 0; |
214 | } | 234 | } |
215 | } | 235 | } |
236 | |||
216 | /// <summary> | 237 | /// <summary> |
217 | /// PhysicsPlugin Class for BulletX | 238 | /// PhysicsPlugin Class for BulletX |
218 | /// </summary> | 239 | /// </summary> |
@@ -223,10 +244,12 @@ namespace OpenSim.Region.Physics.BulletXPlugin | |||
223 | public BulletXPlugin() | 244 | public BulletXPlugin() |
224 | { | 245 | { |
225 | } | 246 | } |
247 | |||
226 | public bool Init() | 248 | public bool Init() |
227 | { | 249 | { |
228 | return true; | 250 | return true; |
229 | } | 251 | } |
252 | |||
230 | public PhysicsScene GetScene() | 253 | public PhysicsScene GetScene() |
231 | { | 254 | { |
232 | if (_mScene == null) | 255 | if (_mScene == null) |
@@ -235,20 +258,24 @@ namespace OpenSim.Region.Physics.BulletXPlugin | |||
235 | } | 258 | } |
236 | return (_mScene); | 259 | return (_mScene); |
237 | } | 260 | } |
261 | |||
238 | public string GetName() | 262 | public string GetName() |
239 | { | 263 | { |
240 | return ("modified_BulletX");//Changed!! "BulletXEngine" To "modified_BulletX" | 264 | return ("modified_BulletX"); //Changed!! "BulletXEngine" To "modified_BulletX" |
241 | } | 265 | } |
266 | |||
242 | public void Dispose() | 267 | public void Dispose() |
243 | { | 268 | { |
244 | } | 269 | } |
245 | } | 270 | } |
271 | |||
246 | /// <summary> | 272 | /// <summary> |
247 | /// PhysicsScene Class for BulletX | 273 | /// PhysicsScene Class for BulletX |
248 | /// </summary> | 274 | /// </summary> |
249 | public class BulletXScene : PhysicsScene | 275 | public class BulletXScene : PhysicsScene |
250 | { | 276 | { |
251 | #region BulletXScene Fields | 277 | #region BulletXScene Fields |
278 | |||
252 | public DiscreteDynamicsWorld ddWorld; | 279 | public DiscreteDynamicsWorld ddWorld; |
253 | private CollisionDispatcher cDispatcher; | 280 | private CollisionDispatcher cDispatcher; |
254 | private OverlappingPairCache opCache; | 281 | private OverlappingPairCache opCache; |
@@ -271,33 +298,58 @@ namespace OpenSim.Region.Physics.BulletXPlugin | |||
271 | private List<BulletXCharacter> _characters = new List<BulletXCharacter>(); | 298 | private List<BulletXCharacter> _characters = new List<BulletXCharacter>(); |
272 | private List<BulletXPrim> _prims = new List<BulletXPrim>(); | 299 | private List<BulletXPrim> _prims = new List<BulletXPrim>(); |
273 | 300 | ||
274 | public static float Gravity { get { return gravity; } } | 301 | public static float Gravity |
275 | public static float HeightLevel0 { get { return heightLevel0; } } | 302 | { |
276 | public static float HeightLevel1 { get { return heightLevel1; } } | 303 | get { return gravity; } |
277 | public static float LowGravityFactor { get { return lowGravityFactor; } } | 304 | } |
278 | public static int MaxXY { get { return maxXY; } } | 305 | |
279 | public static int MaxZ { get { return maxZ; } } | 306 | public static float HeightLevel0 |
307 | { | ||
308 | get { return heightLevel0; } | ||
309 | } | ||
310 | |||
311 | public static float HeightLevel1 | ||
312 | { | ||
313 | get { return heightLevel1; } | ||
314 | } | ||
315 | |||
316 | public static float LowGravityFactor | ||
317 | { | ||
318 | get { return lowGravityFactor; } | ||
319 | } | ||
320 | |||
321 | public static int MaxXY | ||
322 | { | ||
323 | get { return maxXY; } | ||
324 | } | ||
325 | |||
326 | public static int MaxZ | ||
327 | { | ||
328 | get { return maxZ; } | ||
329 | } | ||
280 | 330 | ||
281 | private List<RigidBody> _forgottenRigidBodies = new List<RigidBody>(); | 331 | private List<RigidBody> _forgottenRigidBodies = new List<RigidBody>(); |
282 | internal string is_ex_message = "Can't remove rigidBody!: "; | 332 | internal string is_ex_message = "Can't remove rigidBody!: "; |
333 | |||
283 | #endregion | 334 | #endregion |
284 | 335 | ||
285 | public BulletXScene() | 336 | public BulletXScene() |
286 | { | 337 | { |
287 | cDispatcher = new CollisionDispatcher(); | 338 | cDispatcher = new CollisionDispatcher(); |
288 | MonoXnaCompactMaths.Vector3 worldMinDim = new MonoXnaCompactMaths.Vector3((float)minXY, (float)minXY, (float)minZ); | 339 | Vector3 worldMinDim = new Vector3((float) minXY, (float) minXY, (float) minZ); |
289 | MonoXnaCompactMaths.Vector3 worldMaxDim = new MonoXnaCompactMaths.Vector3((float)maxXY, (float)maxXY, (float)maxZ); | 340 | Vector3 worldMaxDim = new Vector3((float) maxXY, (float) maxXY, (float) maxZ); |
290 | opCache = new AxisSweep3(worldMinDim, worldMaxDim, maxHandles); | 341 | opCache = new AxisSweep3(worldMinDim, worldMaxDim, maxHandles); |
291 | sicSolver = new SequentialImpulseConstraintSolver(); | 342 | sicSolver = new SequentialImpulseConstraintSolver(); |
292 | 343 | ||
293 | lock (BulletXLock) | 344 | lock (BulletXLock) |
294 | { | 345 | { |
295 | ddWorld = new DiscreteDynamicsWorld(cDispatcher, opCache, sicSolver); | 346 | ddWorld = new DiscreteDynamicsWorld(cDispatcher, opCache, sicSolver); |
296 | ddWorld.Gravity = new MonoXnaCompactMaths.Vector3(0, 0, -gravity); | 347 | ddWorld.Gravity = new Vector3(0, 0, -gravity); |
297 | } | 348 | } |
298 | //this._heightmap = new float[65536]; | 349 | //this._heightmap = new float[65536]; |
299 | } | 350 | } |
300 | public override PhysicsActor AddAvatar(string avName, PhysicsVector position) | 351 | |
352 | public override PhysicsActor AddAvatar(string avName, PhysicsVector position) | ||
301 | { | 353 | { |
302 | PhysicsVector pos = new PhysicsVector(); | 354 | PhysicsVector pos = new PhysicsVector(); |
303 | pos.X = position.X; | 355 | pos.X = position.X; |
@@ -311,6 +363,7 @@ namespace OpenSim.Region.Physics.BulletXPlugin | |||
311 | } | 363 | } |
312 | return newAv; | 364 | return newAv; |
313 | } | 365 | } |
366 | |||
314 | public override void RemoveAvatar(PhysicsActor actor) | 367 | public override void RemoveAvatar(PhysicsActor actor) |
315 | { | 368 | { |
316 | if (actor is BulletXCharacter) | 369 | if (actor is BulletXCharacter) |
@@ -319,20 +372,22 @@ namespace OpenSim.Region.Physics.BulletXPlugin | |||
319 | { | 372 | { |
320 | try | 373 | try |
321 | { | 374 | { |
322 | ddWorld.RemoveRigidBody(((BulletXCharacter)actor).RigidBody); | 375 | ddWorld.RemoveRigidBody(((BulletXCharacter) actor).RigidBody); |
323 | } | 376 | } |
324 | catch (Exception ex) | 377 | catch (Exception ex) |
325 | { | 378 | { |
326 | BulletXMessage(is_ex_message + ex.Message, true); | 379 | BulletXMessage(is_ex_message + ex.Message, true); |
327 | ((BulletXCharacter)actor).RigidBody.ActivationState = ActivationState.DisableSimulation; | 380 | ((BulletXCharacter) actor).RigidBody.ActivationState = ActivationState.DisableSimulation; |
328 | AddForgottenRigidBody(((BulletXCharacter)actor).RigidBody); | 381 | AddForgottenRigidBody(((BulletXCharacter) actor).RigidBody); |
329 | } | 382 | } |
330 | _characters.Remove((BulletXCharacter)actor); | 383 | _characters.Remove((BulletXCharacter) actor); |
331 | } | 384 | } |
332 | GC.Collect(); | 385 | GC.Collect(); |
333 | } | 386 | } |
334 | } | 387 | } |
335 | public override PhysicsActor AddPrimShape(string primName, PrimitiveBaseShape pbs, PhysicsVector position, PhysicsVector size, AxiomQuaternion rotation) | 388 | |
389 | public override PhysicsActor AddPrimShape(string primName, PrimitiveBaseShape pbs, PhysicsVector position, | ||
390 | PhysicsVector size, AxiomQuaternion rotation) | ||
336 | { | 391 | { |
337 | PhysicsActor result; | 392 | PhysicsActor result; |
338 | 393 | ||
@@ -358,11 +413,14 @@ namespace OpenSim.Region.Physics.BulletXPlugin | |||
358 | 413 | ||
359 | return result; | 414 | return result; |
360 | } | 415 | } |
361 | public PhysicsActor AddPrim(PhysicsVector position, PhysicsVector size, Axiom.Math.Quaternion rotation) | 416 | |
417 | public PhysicsActor AddPrim(PhysicsVector position, PhysicsVector size, AxiomQuaternion rotation) | ||
362 | { | 418 | { |
363 | return AddPrim("", position, size, rotation, null, null); | 419 | return AddPrim("", position, size, rotation, null, null); |
364 | } | 420 | } |
365 | public PhysicsActor AddPrim(String name, PhysicsVector position, PhysicsVector size, AxiomQuaternion rotation, Mesh mesh, PrimitiveBaseShape pbs) | 421 | |
422 | public PhysicsActor AddPrim(String name, PhysicsVector position, PhysicsVector size, AxiomQuaternion rotation, | ||
423 | Mesh mesh, PrimitiveBaseShape pbs) | ||
366 | { | 424 | { |
367 | BulletXPrim newPrim = null; | 425 | BulletXPrim newPrim = null; |
368 | lock (BulletXLock) | 426 | lock (BulletXLock) |
@@ -372,6 +430,7 @@ namespace OpenSim.Region.Physics.BulletXPlugin | |||
372 | } | 430 | } |
373 | return newPrim; | 431 | return newPrim; |
374 | } | 432 | } |
433 | |||
375 | public override void RemovePrim(PhysicsActor prim) | 434 | public override void RemovePrim(PhysicsActor prim) |
376 | { | 435 | { |
377 | if (prim is BulletXPrim) | 436 | if (prim is BulletXPrim) |
@@ -380,19 +439,20 @@ namespace OpenSim.Region.Physics.BulletXPlugin | |||
380 | { | 439 | { |
381 | try | 440 | try |
382 | { | 441 | { |
383 | ddWorld.RemoveRigidBody(((BulletXPrim)prim).RigidBody); | 442 | ddWorld.RemoveRigidBody(((BulletXPrim) prim).RigidBody); |
384 | } | 443 | } |
385 | catch (Exception ex) | 444 | catch (Exception ex) |
386 | { | 445 | { |
387 | BulletXMessage(is_ex_message + ex.Message, true); | 446 | BulletXMessage(is_ex_message + ex.Message, true); |
388 | ((BulletXPrim)prim).RigidBody.ActivationState = ActivationState.DisableSimulation; | 447 | ((BulletXPrim) prim).RigidBody.ActivationState = ActivationState.DisableSimulation; |
389 | AddForgottenRigidBody(((BulletXPrim)prim).RigidBody); | 448 | AddForgottenRigidBody(((BulletXPrim) prim).RigidBody); |
390 | } | 449 | } |
391 | _prims.Remove((BulletXPrim)prim); | 450 | _prims.Remove((BulletXPrim) prim); |
392 | } | 451 | } |
393 | GC.Collect(); | 452 | GC.Collect(); |
394 | } | 453 | } |
395 | } | 454 | } |
455 | |||
396 | public override void Simulate(float timeStep) | 456 | public override void Simulate(float timeStep) |
397 | { | 457 | { |
398 | lock (BulletXLock) | 458 | lock (BulletXLock) |
@@ -408,6 +468,7 @@ namespace OpenSim.Region.Physics.BulletXPlugin | |||
408 | UpdateKineticsForAll(); | 468 | UpdateKineticsForAll(); |
409 | } | 469 | } |
410 | } | 470 | } |
471 | |||
411 | private void MoveAllObjects(float timeStep) | 472 | private void MoveAllObjects(float timeStep) |
412 | { | 473 | { |
413 | foreach (BulletXCharacter actor in _characters) | 474 | foreach (BulletXCharacter actor in _characters) |
@@ -418,6 +479,7 @@ namespace OpenSim.Region.Physics.BulletXPlugin | |||
418 | { | 479 | { |
419 | } | 480 | } |
420 | } | 481 | } |
482 | |||
421 | private void ValidateHeightForAll() | 483 | private void ValidateHeightForAll() |
422 | { | 484 | { |
423 | float _height; | 485 | float _height; |
@@ -431,7 +493,7 @@ namespace OpenSim.Region.Physics.BulletXPlugin | |||
431 | foreach (BulletXPrim prim in _prims) | 493 | foreach (BulletXPrim prim in _prims) |
432 | { | 494 | { |
433 | //_height = HeightValue(prim.RigidBodyPosition); | 495 | //_height = HeightValue(prim.RigidBodyPosition); |
434 | _height = _simFlatPlanet.HeightValue(prim.RigidBodyPosition); | 496 | _height = _simFlatPlanet.HeightValue(prim.RigidBodyPosition); |
435 | prim.ValidateHeight(_height); | 497 | prim.ValidateHeight(_height); |
436 | //if (_simFlatPlanet.heightIsNotValid(prim.RigidBodyPosition, out _height)) prim.ValidateHeight(_height); | 498 | //if (_simFlatPlanet.heightIsNotValid(prim.RigidBodyPosition, out _height)) prim.ValidateHeight(_height); |
437 | } | 499 | } |
@@ -444,6 +506,7 @@ namespace OpenSim.Region.Physics.BulletXPlugin | |||
444 | // prim.ValidateHeight(0); | 506 | // prim.ValidateHeight(0); |
445 | //} | 507 | //} |
446 | } | 508 | } |
509 | |||
447 | private void UpdateKineticsForAll() | 510 | private void UpdateKineticsForAll() |
448 | { | 511 | { |
449 | //UpdatePosition > UpdateKinetics. | 512 | //UpdatePosition > UpdateKinetics. |
@@ -458,17 +521,17 @@ namespace OpenSim.Region.Physics.BulletXPlugin | |||
458 | } | 521 | } |
459 | //if(this._simFlatPlanet!=null) this._simFlatPlanet.Restore(); | 522 | //if(this._simFlatPlanet!=null) this._simFlatPlanet.Restore(); |
460 | } | 523 | } |
524 | |||
461 | public override void GetResults() | 525 | public override void GetResults() |
462 | { | 526 | { |
463 | |||
464 | } | 527 | } |
528 | |||
465 | public override bool IsThreaded | 529 | public override bool IsThreaded |
466 | { | 530 | { |
467 | get | 531 | get { return (false); // for now we won't be multithreaded |
468 | { | ||
469 | return (false); // for now we won't be multithreaded | ||
470 | } | 532 | } |
471 | } | 533 | } |
534 | |||
472 | public override void SetTerrain(float[] heightMap) | 535 | public override void SetTerrain(float[] heightMap) |
473 | { | 536 | { |
474 | ////As the same as ODE, heightmap (x,y) must be swapped for BulletX | 537 | ////As the same as ODE, heightmap (x,y) must be swapped for BulletX |
@@ -494,41 +557,44 @@ namespace OpenSim.Region.Physics.BulletXPlugin | |||
494 | DeleteTerrain(); | 557 | DeleteTerrain(); |
495 | //There is a BulletXLock inside the constructor of BulletXPlanet | 558 | //There is a BulletXLock inside the constructor of BulletXPlanet |
496 | //this._simFlatPlanet = new BulletXPlanet(this, swappedHeightMap); | 559 | //this._simFlatPlanet = new BulletXPlanet(this, swappedHeightMap); |
497 | this._simFlatPlanet = new BulletXPlanet(this, heightMap); | 560 | _simFlatPlanet = new BulletXPlanet(this, heightMap); |
498 | //this._heightmap = heightMap; | 561 | //this._heightmap = heightMap; |
499 | } | 562 | } |
563 | |||
500 | public override void DeleteTerrain() | 564 | public override void DeleteTerrain() |
501 | { | 565 | { |
502 | if (this._simFlatPlanet != null) | 566 | if (_simFlatPlanet != null) |
503 | { | 567 | { |
504 | lock (BulletXLock) | 568 | lock (BulletXLock) |
505 | { | 569 | { |
506 | try | 570 | try |
507 | { | 571 | { |
508 | ddWorld.RemoveRigidBody(this._simFlatPlanet.RigidBody); | 572 | ddWorld.RemoveRigidBody(_simFlatPlanet.RigidBody); |
509 | } | 573 | } |
510 | catch (Exception ex) | 574 | catch (Exception ex) |
511 | { | 575 | { |
512 | BulletXMessage(is_ex_message + ex.Message, true); | 576 | BulletXMessage(is_ex_message + ex.Message, true); |
513 | this._simFlatPlanet.RigidBody.ActivationState = ActivationState.DisableSimulation; | 577 | _simFlatPlanet.RigidBody.ActivationState = ActivationState.DisableSimulation; |
514 | AddForgottenRigidBody(this._simFlatPlanet.RigidBody); | 578 | AddForgottenRigidBody(_simFlatPlanet.RigidBody); |
515 | } | 579 | } |
516 | } | 580 | } |
517 | this._simFlatPlanet = null; | 581 | _simFlatPlanet = null; |
518 | GC.Collect(); | 582 | GC.Collect(); |
519 | BulletXMessage("Terrain erased!", false); | 583 | BulletXMessage("Terrain erased!", false); |
520 | } | 584 | } |
521 | //this._heightmap = null; | 585 | //this._heightmap = null; |
522 | } | 586 | } |
587 | |||
523 | internal void AddForgottenRigidBody(RigidBody forgottenRigidBody) | 588 | internal void AddForgottenRigidBody(RigidBody forgottenRigidBody) |
524 | { | 589 | { |
525 | _forgottenRigidBodies.Add(forgottenRigidBody); | 590 | _forgottenRigidBodies.Add(forgottenRigidBody); |
526 | } | 591 | } |
592 | |||
527 | private void RemoveForgottenRigidBodies() | 593 | private void RemoveForgottenRigidBodies() |
528 | { | 594 | { |
529 | RigidBody forgottenRigidBody; | 595 | RigidBody forgottenRigidBody; |
530 | int nRigidBodies = _forgottenRigidBodies.Count; | 596 | int nRigidBodies = _forgottenRigidBodies.Count; |
531 | for(int i = nRigidBodies - 1; i >= 0; i--) | 597 | for (int i = nRigidBodies - 1; i >= 0; i--) |
532 | { | 598 | { |
533 | forgottenRigidBody = _forgottenRigidBodies[i]; | 599 | forgottenRigidBody = _forgottenRigidBodies[i]; |
534 | try | 600 | try |
@@ -544,10 +610,12 @@ namespace OpenSim.Region.Physics.BulletXPlugin | |||
544 | } | 610 | } |
545 | GC.Collect(); | 611 | GC.Collect(); |
546 | } | 612 | } |
613 | |||
547 | internal void BulletXMessage(string message, bool isWarning) | 614 | internal void BulletXMessage(string message, bool isWarning) |
548 | { | 615 | { |
549 | PhysicsPluginManager.PhysicsPluginMessage("[Modified BulletX]:\t" + message, isWarning); | 616 | PhysicsPluginManager.PhysicsPluginMessage("[Modified BulletX]:\t" + message, isWarning); |
550 | } | 617 | } |
618 | |||
551 | //temp | 619 | //temp |
552 | //private float HeightValue(MonoXnaCompactMaths.Vector3 position) | 620 | //private float HeightValue(MonoXnaCompactMaths.Vector3 position) |
553 | //{ | 621 | //{ |
@@ -559,10 +627,11 @@ namespace OpenSim.Region.Physics.BulletXPlugin | |||
559 | // height = this._heightmap[li_y * 256 + li_x]; | 627 | // height = this._heightmap[li_y * 256 + li_x]; |
560 | // if (height < 0) height = 0; | 628 | // if (height < 0) height = 0; |
561 | // else if (height > maxZ) height = maxZ; | 629 | // else if (height > maxZ) height = maxZ; |
562 | 630 | ||
563 | // return height; | 631 | // return height; |
564 | //} | 632 | //} |
565 | } | 633 | } |
634 | |||
566 | /// <summary> | 635 | /// <summary> |
567 | /// PhysicsActor Character Class for BulletX | 636 | /// PhysicsActor Character Class for BulletX |
568 | /// </summary> | 637 | /// </summary> |
@@ -576,21 +645,24 @@ namespace OpenSim.Region.Physics.BulletXPlugin | |||
576 | private bool flying; | 645 | private bool flying; |
577 | private RigidBody rigidBody; | 646 | private RigidBody rigidBody; |
578 | 647 | ||
579 | public MonoXnaCompactMaths.Vector3 RigidBodyPosition | 648 | public Vector3 RigidBodyPosition |
580 | { | 649 | { |
581 | get { return this.rigidBody.CenterOfMassPosition; } | 650 | get { return rigidBody.CenterOfMassPosition; } |
582 | } | 651 | } |
652 | |||
583 | public BulletXCharacter(BulletXScene parent_scene, PhysicsVector pos) | 653 | public BulletXCharacter(BulletXScene parent_scene, PhysicsVector pos) |
584 | : this("", parent_scene, pos) | 654 | : this("", parent_scene, pos) |
585 | { | 655 | { |
586 | } | 656 | } |
657 | |||
587 | public BulletXCharacter(String avName, BulletXScene parent_scene, PhysicsVector pos) | 658 | public BulletXCharacter(String avName, BulletXScene parent_scene, PhysicsVector pos) |
588 | : this(avName, parent_scene, pos, new PhysicsVector(), new PhysicsVector(), new PhysicsVector(), | 659 | : this(avName, parent_scene, pos, new PhysicsVector(), new PhysicsVector(), new PhysicsVector(), |
589 | AxiomQuaternion.Identity) | 660 | AxiomQuaternion.Identity) |
590 | { | 661 | { |
591 | } | 662 | } |
663 | |||
592 | public BulletXCharacter(String avName, BulletXScene parent_scene, PhysicsVector pos, PhysicsVector velocity, | 664 | public BulletXCharacter(String avName, BulletXScene parent_scene, PhysicsVector pos, PhysicsVector velocity, |
593 | PhysicsVector size, PhysicsVector acceleration, AxiomQuaternion orientation) | 665 | PhysicsVector size, PhysicsVector acceleration, AxiomQuaternion orientation) |
594 | { | 666 | { |
595 | //This fields will be removed. They're temporal | 667 | //This fields will be removed. They're temporal |
596 | float _sizeX = 0.5f; | 668 | float _sizeX = 0.5f; |
@@ -622,23 +694,23 @@ namespace OpenSim.Region.Physics.BulletXPlugin | |||
622 | //For now, like ODE, collisionShape = sphere of radious = 1.0 | 694 | //For now, like ODE, collisionShape = sphere of radious = 1.0 |
623 | CollisionShape _collisionShape = new SphereShape(1.0f); | 695 | CollisionShape _collisionShape = new SphereShape(1.0f); |
624 | DefaultMotionState _motionState = new DefaultMotionState(_startTransform, _centerOfMassOffset); | 696 | DefaultMotionState _motionState = new DefaultMotionState(_startTransform, _centerOfMassOffset); |
625 | MonoXnaCompactMaths.Vector3 _localInertia = new MonoXnaCompactMaths.Vector3(); | 697 | Vector3 _localInertia = new Vector3(); |
626 | _collisionShape.CalculateLocalInertia(_mass, out _localInertia); //Always when mass > 0 | 698 | _collisionShape.CalculateLocalInertia(_mass, out _localInertia); //Always when mass > 0 |
627 | rigidBody = new RigidBody(_mass, _motionState, _collisionShape, _localInertia, _linearDamping, _angularDamping, _friction, _restitution); | 699 | rigidBody = |
700 | new RigidBody(_mass, _motionState, _collisionShape, _localInertia, _linearDamping, _angularDamping, | ||
701 | _friction, _restitution); | ||
628 | //rigidBody.ActivationState = ActivationState.DisableDeactivation; | 702 | //rigidBody.ActivationState = ActivationState.DisableDeactivation; |
629 | //It's seems that there are a bug with rigidBody constructor and its CenterOfMassPosition | 703 | //It's seems that there are a bug with rigidBody constructor and its CenterOfMassPosition |
630 | MonoXnaCompactMaths.Vector3 _vDebugTranslation; | 704 | Vector3 _vDebugTranslation; |
631 | _vDebugTranslation = _startTransform.Translation - rigidBody.CenterOfMassPosition; | 705 | _vDebugTranslation = _startTransform.Translation - rigidBody.CenterOfMassPosition; |
632 | rigidBody.Translate(_vDebugTranslation); | 706 | rigidBody.Translate(_vDebugTranslation); |
633 | parent_scene.ddWorld.AddRigidBody(rigidBody); | 707 | parent_scene.ddWorld.AddRigidBody(rigidBody); |
634 | } | 708 | } |
635 | } | 709 | } |
710 | |||
636 | public override PhysicsVector Position | 711 | public override PhysicsVector Position |
637 | { | 712 | { |
638 | get | 713 | get { return _position; } |
639 | { | ||
640 | return _position; | ||
641 | } | ||
642 | set | 714 | set |
643 | { | 715 | { |
644 | lock (BulletXScene.BulletXLock) | 716 | lock (BulletXScene.BulletXLock) |
@@ -648,12 +720,10 @@ namespace OpenSim.Region.Physics.BulletXPlugin | |||
648 | } | 720 | } |
649 | } | 721 | } |
650 | } | 722 | } |
723 | |||
651 | public override PhysicsVector Velocity | 724 | public override PhysicsVector Velocity |
652 | { | 725 | { |
653 | get | 726 | get { return _velocity; } |
654 | { | ||
655 | return _velocity; | ||
656 | } | ||
657 | set | 727 | set |
658 | { | 728 | { |
659 | lock (BulletXScene.BulletXLock) | 729 | lock (BulletXScene.BulletXLock) |
@@ -663,12 +733,10 @@ namespace OpenSim.Region.Physics.BulletXPlugin | |||
663 | } | 733 | } |
664 | } | 734 | } |
665 | } | 735 | } |
736 | |||
666 | public override PhysicsVector Size | 737 | public override PhysicsVector Size |
667 | { | 738 | { |
668 | get | 739 | get { return _size; } |
669 | { | ||
670 | return _size; | ||
671 | } | ||
672 | set | 740 | set |
673 | { | 741 | { |
674 | lock (BulletXScene.BulletXLock) | 742 | lock (BulletXScene.BulletXLock) |
@@ -677,19 +745,15 @@ namespace OpenSim.Region.Physics.BulletXPlugin | |||
677 | } | 745 | } |
678 | } | 746 | } |
679 | } | 747 | } |
748 | |||
680 | public override PhysicsVector Acceleration | 749 | public override PhysicsVector Acceleration |
681 | { | 750 | { |
682 | get | 751 | get { return _acceleration; } |
683 | { | ||
684 | return _acceleration; | ||
685 | } | ||
686 | } | 752 | } |
753 | |||
687 | public override AxiomQuaternion Orientation | 754 | public override AxiomQuaternion Orientation |
688 | { | 755 | { |
689 | get | 756 | get { return _orientation; } |
690 | { | ||
691 | return _orientation; | ||
692 | } | ||
693 | set | 757 | set |
694 | { | 758 | { |
695 | lock (BulletXScene.BulletXLock) | 759 | lock (BulletXScene.BulletXLock) |
@@ -698,24 +762,18 @@ namespace OpenSim.Region.Physics.BulletXPlugin | |||
698 | } | 762 | } |
699 | } | 763 | } |
700 | } | 764 | } |
765 | |||
701 | public RigidBody RigidBody | 766 | public RigidBody RigidBody |
702 | { | 767 | { |
703 | get | 768 | get { return rigidBody; } |
704 | { | ||
705 | return rigidBody; | ||
706 | } | ||
707 | } | 769 | } |
770 | |||
708 | public override bool Flying | 771 | public override bool Flying |
709 | { | 772 | { |
710 | get | 773 | get { return flying; } |
711 | { | 774 | set { flying = value; } |
712 | return flying; | ||
713 | } | ||
714 | set | ||
715 | { | ||
716 | flying = value; | ||
717 | } | ||
718 | } | 775 | } |
776 | |||
719 | public void SetAcceleration(PhysicsVector accel) | 777 | public void SetAcceleration(PhysicsVector accel) |
720 | { | 778 | { |
721 | lock (BulletXScene.BulletXLock) | 779 | lock (BulletXScene.BulletXLock) |
@@ -723,116 +781,121 @@ namespace OpenSim.Region.Physics.BulletXPlugin | |||
723 | _acceleration = accel; | 781 | _acceleration = accel; |
724 | } | 782 | } |
725 | } | 783 | } |
784 | |||
726 | public override bool Kinematic | 785 | public override bool Kinematic |
727 | { | 786 | { |
728 | get | 787 | get { return false; } |
729 | { | 788 | set { } |
730 | return false; | ||
731 | } | ||
732 | set | ||
733 | { | ||
734 | |||
735 | } | ||
736 | } | 789 | } |
790 | |||
737 | public override void AddForce(PhysicsVector force) | 791 | public override void AddForce(PhysicsVector force) |
738 | { | 792 | { |
739 | |||
740 | } | 793 | } |
794 | |||
741 | public override void SetMomentum(PhysicsVector momentum) | 795 | public override void SetMomentum(PhysicsVector momentum) |
742 | { | 796 | { |
743 | |||
744 | } | 797 | } |
798 | |||
745 | internal void Move(float timeStep) | 799 | internal void Move(float timeStep) |
746 | { | 800 | { |
747 | MonoXnaCompactMaths.Vector3 vec = new MonoXnaCompactMaths.Vector3(); | 801 | Vector3 vec = new Vector3(); |
748 | //At this point it's supossed that: | 802 | //At this point it's supossed that: |
749 | //_velocity == rigidBody.LinearVelocity | 803 | //_velocity == rigidBody.LinearVelocity |
750 | vec.X = this._velocity.X; | 804 | vec.X = _velocity.X; |
751 | vec.Y = this._velocity.Y; | 805 | vec.Y = _velocity.Y; |
752 | vec.Z = this._velocity.Z; | 806 | vec.Z = _velocity.Z; |
753 | if ((vec.X != 0.0f) || (vec.Y != 0.0f) || (vec.Z != 0.0f)) rigidBody.Activate(); | 807 | if ((vec.X != 0.0f) || (vec.Y != 0.0f) || (vec.Z != 0.0f)) rigidBody.Activate(); |
754 | if (flying) | 808 | if (flying) |
755 | { | 809 | { |
756 | //Antigravity with movement | 810 | //Antigravity with movement |
757 | if (this._position.Z <= BulletXScene.HeightLevel0) | 811 | if (_position.Z <= BulletXScene.HeightLevel0) |
758 | { | 812 | { |
759 | vec.Z += BulletXScene.Gravity * timeStep; | 813 | vec.Z += BulletXScene.Gravity*timeStep; |
760 | } | 814 | } |
761 | //Lowgravity with movement | 815 | //Lowgravity with movement |
762 | else if ((this._position.Z > BulletXScene.HeightLevel0) | 816 | else if ((_position.Z > BulletXScene.HeightLevel0) |
763 | && (this._position.Z <= BulletXScene.HeightLevel1)) | 817 | && (_position.Z <= BulletXScene.HeightLevel1)) |
764 | { | 818 | { |
765 | vec.Z += BulletXScene.Gravity * timeStep * (1.0f - BulletXScene.LowGravityFactor); | 819 | vec.Z += BulletXScene.Gravity*timeStep*(1.0f - BulletXScene.LowGravityFactor); |
766 | } | 820 | } |
767 | //Lowgravity with... | 821 | //Lowgravity with... |
768 | else if (this._position.Z > BulletXScene.HeightLevel1) | 822 | else if (_position.Z > BulletXScene.HeightLevel1) |
769 | { | 823 | { |
770 | if (vec.Z > 0) //no movement | 824 | if (vec.Z > 0) //no movement |
771 | vec.Z = BulletXScene.Gravity * timeStep * (1.0f - BulletXScene.LowGravityFactor); | 825 | vec.Z = BulletXScene.Gravity*timeStep*(1.0f - BulletXScene.LowGravityFactor); |
772 | else | 826 | else |
773 | vec.Z += BulletXScene.Gravity * timeStep * (1.0f - BulletXScene.LowGravityFactor); | 827 | vec.Z += BulletXScene.Gravity*timeStep*(1.0f - BulletXScene.LowGravityFactor); |
774 | |||
775 | } | 828 | } |
776 | } | 829 | } |
777 | rigidBody.LinearVelocity = vec; | 830 | rigidBody.LinearVelocity = vec; |
778 | } | 831 | } |
832 | |||
779 | //This validation is very basic | 833 | //This validation is very basic |
780 | internal void ValidateHeight(float heighmapPositionValue) | 834 | internal void ValidateHeight(float heighmapPositionValue) |
781 | { | 835 | { |
782 | if (rigidBody.CenterOfMassPosition.Z < heighmapPositionValue + _size.Z / 2.0f) | 836 | if (rigidBody.CenterOfMassPosition.Z < heighmapPositionValue + _size.Z/2.0f) |
783 | { | 837 | { |
784 | Matrix m = rigidBody.WorldTransform; | 838 | Matrix m = rigidBody.WorldTransform; |
785 | MonoXnaCompactMaths.Vector3 v3 = m.Translation; | 839 | Vector3 v3 = m.Translation; |
786 | v3.Z = heighmapPositionValue + _size.Z / 2.0f; | 840 | v3.Z = heighmapPositionValue + _size.Z/2.0f; |
787 | m.Translation = v3; | 841 | m.Translation = v3; |
788 | rigidBody.WorldTransform = m; | 842 | rigidBody.WorldTransform = m; |
789 | //When an Avie touch the ground it's vertical velocity it's reduced to ZERO | 843 | //When an Avie touch the ground it's vertical velocity it's reduced to ZERO |
790 | Speed(new PhysicsVector(this.rigidBody.LinearVelocity.X, this.rigidBody.LinearVelocity.Y, 0.0f)); | 844 | Speed(new PhysicsVector(rigidBody.LinearVelocity.X, rigidBody.LinearVelocity.Y, 0.0f)); |
791 | } | 845 | } |
792 | } | 846 | } |
847 | |||
793 | internal void UpdateKinetics() | 848 | internal void UpdateKinetics() |
794 | { | 849 | { |
795 | this._position = BulletXMaths.XnaVector3ToPhysicsVector(rigidBody.CenterOfMassPosition); | 850 | _position = BulletXMaths.XnaVector3ToPhysicsVector(rigidBody.CenterOfMassPosition); |
796 | this._velocity = BulletXMaths.XnaVector3ToPhysicsVector(rigidBody.LinearVelocity); | 851 | _velocity = BulletXMaths.XnaVector3ToPhysicsVector(rigidBody.LinearVelocity); |
797 | //Orientation it seems that it will be the default. | 852 | //Orientation it seems that it will be the default. |
798 | ReOrient(); | 853 | ReOrient(); |
799 | } | 854 | } |
800 | 855 | ||
801 | #region Methods for updating values of RigidBody | 856 | #region Methods for updating values of RigidBody |
857 | |||
802 | private void Translate() | 858 | private void Translate() |
803 | { | 859 | { |
804 | Translate(this._position); | 860 | Translate(_position); |
805 | } | 861 | } |
862 | |||
806 | private void Translate(PhysicsVector _newPos) | 863 | private void Translate(PhysicsVector _newPos) |
807 | { | 864 | { |
808 | MonoXnaCompactMaths.Vector3 _translation; | 865 | Vector3 _translation; |
809 | _translation = BulletXMaths.PhysicsVectorToXnaVector3(_newPos) - rigidBody.CenterOfMassPosition; | 866 | _translation = BulletXMaths.PhysicsVectorToXnaVector3(_newPos) - rigidBody.CenterOfMassPosition; |
810 | rigidBody.Translate(_translation); | 867 | rigidBody.Translate(_translation); |
811 | } | 868 | } |
869 | |||
812 | private void Speed() | 870 | private void Speed() |
813 | { | 871 | { |
814 | Speed(this._velocity); | 872 | Speed(_velocity); |
815 | } | 873 | } |
874 | |||
816 | private void Speed(PhysicsVector _newSpeed) | 875 | private void Speed(PhysicsVector _newSpeed) |
817 | { | 876 | { |
818 | MonoXnaCompactMaths.Vector3 _speed; | 877 | Vector3 _speed; |
819 | _speed = BulletXMaths.PhysicsVectorToXnaVector3(_newSpeed); | 878 | _speed = BulletXMaths.PhysicsVectorToXnaVector3(_newSpeed); |
820 | rigidBody.LinearVelocity = _speed; | 879 | rigidBody.LinearVelocity = _speed; |
821 | } | 880 | } |
881 | |||
822 | private void ReOrient() | 882 | private void ReOrient() |
823 | { | 883 | { |
824 | ReOrient(this._orientation); | 884 | ReOrient(_orientation); |
825 | } | 885 | } |
886 | |||
826 | private void ReOrient(AxiomQuaternion _newOrient) | 887 | private void ReOrient(AxiomQuaternion _newOrient) |
827 | { | 888 | { |
828 | MonoXnaCompactMaths.Quaternion _newOrientation; | 889 | Quaternion _newOrientation; |
829 | _newOrientation = BulletXMaths.AxiomQuaternionToXnaQuaternion(_newOrient); | 890 | _newOrientation = BulletXMaths.AxiomQuaternionToXnaQuaternion(_newOrient); |
830 | Matrix _comTransform = rigidBody.CenterOfMassTransform; | 891 | Matrix _comTransform = rigidBody.CenterOfMassTransform; |
831 | BulletXMaths.SetRotation(ref _comTransform, _newOrientation); | 892 | BulletXMaths.SetRotation(ref _comTransform, _newOrientation); |
832 | rigidBody.CenterOfMassTransform = _comTransform; | 893 | rigidBody.CenterOfMassTransform = _comTransform; |
833 | } | 894 | } |
895 | |||
834 | #endregion | 896 | #endregion |
835 | } | 897 | } |
898 | |||
836 | /// <summary> | 899 | /// <summary> |
837 | /// PhysicsActor Prim Class for BulletX | 900 | /// PhysicsActor Prim Class for BulletX |
838 | /// </summary> | 901 | /// </summary> |
@@ -851,27 +914,32 @@ namespace OpenSim.Region.Physics.BulletXPlugin | |||
851 | //_physical value will be linked with the prim object value | 914 | //_physical value will be linked with the prim object value |
852 | private Boolean _physical = false; | 915 | private Boolean _physical = false; |
853 | 916 | ||
854 | public MonoXnaCompactMaths.Vector3 RigidBodyPosition | 917 | public Vector3 RigidBodyPosition |
855 | { | 918 | { |
856 | get { return this.rigidBody.CenterOfMassPosition; } | 919 | get { return rigidBody.CenterOfMassPosition; } |
857 | } | 920 | } |
921 | |||
858 | public BulletXPrim(BulletXScene parent_scene, PhysicsVector pos, PhysicsVector size, AxiomQuaternion rotation) | 922 | public BulletXPrim(BulletXScene parent_scene, PhysicsVector pos, PhysicsVector size, AxiomQuaternion rotation) |
859 | : this("", parent_scene, pos, new PhysicsVector(), size, new PhysicsVector(), rotation, null, null) | 923 | : this("", parent_scene, pos, new PhysicsVector(), size, new PhysicsVector(), rotation, null, null) |
860 | { | 924 | { |
861 | } | 925 | } |
862 | public BulletXPrim(String primName, BulletXScene parent_scene, PhysicsVector pos, PhysicsVector size, | 926 | |
863 | AxiomQuaternion rotation, Mesh mesh, PrimitiveBaseShape pbs) | 927 | public BulletXPrim(String primName, BulletXScene parent_scene, PhysicsVector pos, PhysicsVector size, |
928 | AxiomQuaternion rotation, Mesh mesh, PrimitiveBaseShape pbs) | ||
864 | : this(primName, parent_scene, pos, new PhysicsVector(), size, new PhysicsVector(), rotation, mesh, pbs) | 929 | : this(primName, parent_scene, pos, new PhysicsVector(), size, new PhysicsVector(), rotation, mesh, pbs) |
865 | { | 930 | { |
866 | } | 931 | } |
867 | public BulletXPrim(String primName, BulletXScene parent_scene, PhysicsVector pos, PhysicsVector velocity, PhysicsVector size, | 932 | |
868 | PhysicsVector aceleration, AxiomQuaternion rotation, Mesh mesh, PrimitiveBaseShape pbs) | 933 | public BulletXPrim(String primName, BulletXScene parent_scene, PhysicsVector pos, PhysicsVector velocity, |
934 | PhysicsVector size, | ||
935 | PhysicsVector aceleration, AxiomQuaternion rotation, Mesh mesh, PrimitiveBaseShape pbs) | ||
869 | { | 936 | { |
870 | if ((size.X == 0) || (size.Y == 0) || (size.Z == 0)) throw new Exception("Size 0"); | 937 | if ((size.X == 0) || (size.Y == 0) || (size.Z == 0)) throw new Exception("Size 0"); |
871 | if (rotation.Norm == 0f) rotation = AxiomQuaternion.Identity; | 938 | if (rotation.Norm == 0f) rotation = AxiomQuaternion.Identity; |
872 | 939 | ||
873 | _position = pos; | 940 | _position = pos; |
874 | if (_physical) _velocity = velocity; else _velocity = new PhysicsVector(); | 941 | if (_physical) _velocity = velocity; |
942 | else _velocity = new PhysicsVector(); | ||
875 | _size = size; | 943 | _size = size; |
876 | _acceleration = aceleration; | 944 | _acceleration = aceleration; |
877 | _orientation = rotation; | 945 | _orientation = rotation; |
@@ -889,26 +957,26 @@ namespace OpenSim.Region.Physics.BulletXPlugin | |||
889 | { | 957 | { |
890 | _startTransform.Translation = BulletXMaths.PhysicsVectorToXnaVector3(pos); | 958 | _startTransform.Translation = BulletXMaths.PhysicsVectorToXnaVector3(pos); |
891 | //For now all prims are boxes | 959 | //For now all prims are boxes |
892 | CollisionShape _collisionShape = new XnaDevRu.BulletX.BoxShape(BulletXMaths.PhysicsVectorToXnaVector3(_size) / 2.0f); | 960 | CollisionShape _collisionShape = new BoxShape(BulletXMaths.PhysicsVectorToXnaVector3(_size)/2.0f); |
893 | DefaultMotionState _motionState = new DefaultMotionState(_startTransform, _centerOfMassOffset); | 961 | DefaultMotionState _motionState = new DefaultMotionState(_startTransform, _centerOfMassOffset); |
894 | MonoXnaCompactMaths.Vector3 _localInertia = new MonoXnaCompactMaths.Vector3(); | 962 | Vector3 _localInertia = new Vector3(); |
895 | if(_physical) _collisionShape.CalculateLocalInertia(Mass, out _localInertia); //Always when mass > 0 | 963 | if (_physical) _collisionShape.CalculateLocalInertia(Mass, out _localInertia); //Always when mass > 0 |
896 | rigidBody = new RigidBody(Mass, _motionState, _collisionShape, _localInertia, _linearDamping, _angularDamping, _friction, _restitution); | 964 | rigidBody = |
965 | new RigidBody(Mass, _motionState, _collisionShape, _localInertia, _linearDamping, _angularDamping, | ||
966 | _friction, _restitution); | ||
897 | //rigidBody.ActivationState = ActivationState.DisableDeactivation; | 967 | //rigidBody.ActivationState = ActivationState.DisableDeactivation; |
898 | //It's seems that there are a bug with rigidBody constructor and its CenterOfMassPosition | 968 | //It's seems that there are a bug with rigidBody constructor and its CenterOfMassPosition |
899 | MonoXnaCompactMaths.Vector3 _vDebugTranslation; | 969 | Vector3 _vDebugTranslation; |
900 | _vDebugTranslation = _startTransform.Translation - rigidBody.CenterOfMassPosition; | 970 | _vDebugTranslation = _startTransform.Translation - rigidBody.CenterOfMassPosition; |
901 | rigidBody.Translate(_vDebugTranslation); | 971 | rigidBody.Translate(_vDebugTranslation); |
902 | //--- | 972 | //--- |
903 | parent_scene.ddWorld.AddRigidBody(rigidBody); | 973 | parent_scene.ddWorld.AddRigidBody(rigidBody); |
904 | } | 974 | } |
905 | } | 975 | } |
976 | |||
906 | public override PhysicsVector Position | 977 | public override PhysicsVector Position |
907 | { | 978 | { |
908 | get | 979 | get { return _position; } |
909 | { | ||
910 | return _position; | ||
911 | } | ||
912 | set | 980 | set |
913 | { | 981 | { |
914 | lock (BulletXScene.BulletXLock) | 982 | lock (BulletXScene.BulletXLock) |
@@ -918,12 +986,10 @@ namespace OpenSim.Region.Physics.BulletXPlugin | |||
918 | } | 986 | } |
919 | } | 987 | } |
920 | } | 988 | } |
989 | |||
921 | public override PhysicsVector Velocity | 990 | public override PhysicsVector Velocity |
922 | { | 991 | { |
923 | get | 992 | get { return _velocity; } |
924 | { | ||
925 | return _velocity; | ||
926 | } | ||
927 | set | 993 | set |
928 | { | 994 | { |
929 | lock (BulletXScene.BulletXLock) | 995 | lock (BulletXScene.BulletXLock) |
@@ -941,12 +1007,10 @@ namespace OpenSim.Region.Physics.BulletXPlugin | |||
941 | } | 1007 | } |
942 | } | 1008 | } |
943 | } | 1009 | } |
1010 | |||
944 | public override PhysicsVector Size | 1011 | public override PhysicsVector Size |
945 | { | 1012 | { |
946 | get | 1013 | get { return _size; } |
947 | { | ||
948 | return _size; | ||
949 | } | ||
950 | set | 1014 | set |
951 | { | 1015 | { |
952 | lock (BulletXScene.BulletXLock) | 1016 | lock (BulletXScene.BulletXLock) |
@@ -956,19 +1020,15 @@ namespace OpenSim.Region.Physics.BulletXPlugin | |||
956 | } | 1020 | } |
957 | } | 1021 | } |
958 | } | 1022 | } |
1023 | |||
959 | public override PhysicsVector Acceleration | 1024 | public override PhysicsVector Acceleration |
960 | { | 1025 | { |
961 | get | 1026 | get { return _acceleration; } |
962 | { | ||
963 | return _acceleration; | ||
964 | } | ||
965 | } | 1027 | } |
1028 | |||
966 | public override AxiomQuaternion Orientation | 1029 | public override AxiomQuaternion Orientation |
967 | { | 1030 | { |
968 | get | 1031 | get { return _orientation; } |
969 | { | ||
970 | return _orientation; | ||
971 | } | ||
972 | set | 1032 | set |
973 | { | 1033 | { |
974 | lock (BulletXScene.BulletXLock) | 1034 | lock (BulletXScene.BulletXLock) |
@@ -978,43 +1038,34 @@ namespace OpenSim.Region.Physics.BulletXPlugin | |||
978 | } | 1038 | } |
979 | } | 1039 | } |
980 | } | 1040 | } |
1041 | |||
981 | public float Mass | 1042 | public float Mass |
982 | { | 1043 | { |
983 | get | 1044 | get |
984 | { | 1045 | { |
985 | //For now all prims are boxes | 1046 | //For now all prims are boxes |
986 | return (_physical ? 1 : 0) * _density * _size.X * _size.Y * _size.Z; | 1047 | return (_physical ? 1 : 0)*_density*_size.X*_size.Y*_size.Z; |
987 | } | 1048 | } |
988 | } | 1049 | } |
1050 | |||
989 | public RigidBody RigidBody | 1051 | public RigidBody RigidBody |
990 | { | 1052 | { |
991 | get | 1053 | get { return rigidBody; } |
992 | { | ||
993 | return rigidBody; | ||
994 | } | ||
995 | } | 1054 | } |
1055 | |||
996 | public override bool Flying | 1056 | public override bool Flying |
997 | { | 1057 | { |
998 | get | 1058 | get { return false; //no flying prims for you |
999 | { | ||
1000 | return false; //no flying prims for you | ||
1001 | } | ||
1002 | set | ||
1003 | { | ||
1004 | |||
1005 | } | 1059 | } |
1060 | set { } | ||
1006 | } | 1061 | } |
1062 | |||
1007 | public Boolean Physical | 1063 | public Boolean Physical |
1008 | { | 1064 | { |
1009 | get | 1065 | get { return _physical; } |
1010 | { | 1066 | set { _physical = value; } |
1011 | return _physical; | ||
1012 | } | ||
1013 | set | ||
1014 | { | ||
1015 | _physical = value; | ||
1016 | } | ||
1017 | } | 1067 | } |
1068 | |||
1018 | public void SetAcceleration(PhysicsVector accel) | 1069 | public void SetAcceleration(PhysicsVector accel) |
1019 | { | 1070 | { |
1020 | lock (BulletXScene.BulletXLock) | 1071 | lock (BulletXScene.BulletXLock) |
@@ -1022,6 +1073,7 @@ namespace OpenSim.Region.Physics.BulletXPlugin | |||
1022 | _acceleration = accel; | 1073 | _acceleration = accel; |
1023 | } | 1074 | } |
1024 | } | 1075 | } |
1076 | |||
1025 | public override bool Kinematic | 1077 | public override bool Kinematic |
1026 | { | 1078 | { |
1027 | get | 1079 | get |
@@ -1034,36 +1086,38 @@ namespace OpenSim.Region.Physics.BulletXPlugin | |||
1034 | //this._prim.Kinematic = value; | 1086 | //this._prim.Kinematic = value; |
1035 | } | 1087 | } |
1036 | } | 1088 | } |
1089 | |||
1037 | public override void AddForce(PhysicsVector force) | 1090 | public override void AddForce(PhysicsVector force) |
1038 | { | 1091 | { |
1039 | |||
1040 | } | 1092 | } |
1093 | |||
1041 | public override void SetMomentum(PhysicsVector momentum) | 1094 | public override void SetMomentum(PhysicsVector momentum) |
1042 | { | 1095 | { |
1043 | |||
1044 | } | 1096 | } |
1097 | |||
1045 | internal void ValidateHeight(float heighmapPositionValue) | 1098 | internal void ValidateHeight(float heighmapPositionValue) |
1046 | { | 1099 | { |
1047 | if (rigidBody.CenterOfMassPosition.Z < heighmapPositionValue + _size.Z / 2.0f) | 1100 | if (rigidBody.CenterOfMassPosition.Z < heighmapPositionValue + _size.Z/2.0f) |
1048 | { | 1101 | { |
1049 | Matrix m = rigidBody.WorldTransform; | 1102 | Matrix m = rigidBody.WorldTransform; |
1050 | MonoXnaCompactMaths.Vector3 v3 = m.Translation; | 1103 | Vector3 v3 = m.Translation; |
1051 | v3.Z = heighmapPositionValue + _size.Z / 2.0f; | 1104 | v3.Z = heighmapPositionValue + _size.Z/2.0f; |
1052 | m.Translation = v3; | 1105 | m.Translation = v3; |
1053 | rigidBody.WorldTransform = m; | 1106 | rigidBody.WorldTransform = m; |
1054 | //When a Prim touch the ground it's vertical velocity it's reduced to ZERO | 1107 | //When a Prim touch the ground it's vertical velocity it's reduced to ZERO |
1055 | //Static objects don't have linear velocity | 1108 | //Static objects don't have linear velocity |
1056 | if(_physical) | 1109 | if (_physical) |
1057 | Speed(new PhysicsVector(this.rigidBody.LinearVelocity.X, this.rigidBody.LinearVelocity.Y, 0.0f)); | 1110 | Speed(new PhysicsVector(rigidBody.LinearVelocity.X, rigidBody.LinearVelocity.Y, 0.0f)); |
1058 | } | 1111 | } |
1059 | } | 1112 | } |
1113 | |||
1060 | internal void UpdateKinetics() | 1114 | internal void UpdateKinetics() |
1061 | { | 1115 | { |
1062 | if (_physical) //Updates properties. Prim updates its properties physically | 1116 | if (_physical) //Updates properties. Prim updates its properties physically |
1063 | { | 1117 | { |
1064 | this._position = BulletXMaths.XnaVector3ToPhysicsVector(rigidBody.CenterOfMassPosition); | 1118 | _position = BulletXMaths.XnaVector3ToPhysicsVector(rigidBody.CenterOfMassPosition); |
1065 | this._velocity = BulletXMaths.XnaVector3ToPhysicsVector(rigidBody.LinearVelocity); | 1119 | _velocity = BulletXMaths.XnaVector3ToPhysicsVector(rigidBody.LinearVelocity); |
1066 | this._orientation = BulletXMaths.XnaQuaternionToAxiomQuaternion(rigidBody.Orientation); | 1120 | _orientation = BulletXMaths.XnaQuaternionToAxiomQuaternion(rigidBody.Orientation); |
1067 | } | 1121 | } |
1068 | else //Doesn't updates properties. That's a cancel | 1122 | else //Doesn't updates properties. That's a cancel |
1069 | { | 1123 | { |
@@ -1074,35 +1128,41 @@ namespace OpenSim.Region.Physics.BulletXPlugin | |||
1074 | } | 1128 | } |
1075 | 1129 | ||
1076 | #region Methods for updating values of RigidBody | 1130 | #region Methods for updating values of RigidBody |
1131 | |||
1077 | private void Translate() | 1132 | private void Translate() |
1078 | { | 1133 | { |
1079 | Translate(this._position); | 1134 | Translate(_position); |
1080 | } | 1135 | } |
1136 | |||
1081 | private void Translate(PhysicsVector _newPos) | 1137 | private void Translate(PhysicsVector _newPos) |
1082 | { | 1138 | { |
1083 | MonoXnaCompactMaths.Vector3 _translation; | 1139 | Vector3 _translation; |
1084 | _translation = BulletXMaths.PhysicsVectorToXnaVector3(_newPos) - rigidBody.CenterOfMassPosition; | 1140 | _translation = BulletXMaths.PhysicsVectorToXnaVector3(_newPos) - rigidBody.CenterOfMassPosition; |
1085 | rigidBody.Translate(_translation); | 1141 | rigidBody.Translate(_translation); |
1086 | } | 1142 | } |
1143 | |||
1087 | private void Speed() | 1144 | private void Speed() |
1088 | { | 1145 | { |
1089 | Speed(this._velocity); | 1146 | Speed(_velocity); |
1090 | } | 1147 | } |
1148 | |||
1091 | private void Speed(PhysicsVector _newSpeed) | 1149 | private void Speed(PhysicsVector _newSpeed) |
1092 | { | 1150 | { |
1093 | MonoXnaCompactMaths.Vector3 _speed; | 1151 | Vector3 _speed; |
1094 | _speed = BulletXMaths.PhysicsVectorToXnaVector3(_newSpeed); | 1152 | _speed = BulletXMaths.PhysicsVectorToXnaVector3(_newSpeed); |
1095 | rigidBody.LinearVelocity = _speed; | 1153 | rigidBody.LinearVelocity = _speed; |
1096 | } | 1154 | } |
1155 | |||
1097 | private void ReSize() | 1156 | private void ReSize() |
1098 | { | 1157 | { |
1099 | ReSize(this._size); | 1158 | ReSize(_size); |
1100 | } | 1159 | } |
1160 | |||
1101 | private void ReSize(PhysicsVector _newSize) | 1161 | private void ReSize(PhysicsVector _newSize) |
1102 | { | 1162 | { |
1103 | //I wonder to know how to resize with a simple instruction in BulletX. It seems that for now there isn't | 1163 | //I wonder to know how to resize with a simple instruction in BulletX. It seems that for now there isn't |
1104 | //so i have to do it manually. That's recreating rigidbody | 1164 | //so i have to do it manually. That's recreating rigidbody |
1105 | MonoXnaCompactMaths.Vector3 _newsize; | 1165 | Vector3 _newsize; |
1106 | _newsize = BulletXMaths.PhysicsVectorToXnaVector3(_newSize); | 1166 | _newsize = BulletXMaths.PhysicsVectorToXnaVector3(_newSize); |
1107 | if ((_newsize.X == 0) || (_newsize.Y == 0) || (_newsize.Z == 0)) throw new Exception("Size 0"); | 1167 | if ((_newsize.X == 0) || (_newsize.Y == 0) || (_newsize.Z == 0)) throw new Exception("Size 0"); |
1108 | 1168 | ||
@@ -1114,67 +1174,77 @@ namespace OpenSim.Region.Physics.BulletXPlugin | |||
1114 | Matrix _startTransform = Matrix.Identity; | 1174 | Matrix _startTransform = Matrix.Identity; |
1115 | Matrix _centerOfMassOffset = Matrix.Identity; | 1175 | Matrix _centerOfMassOffset = Matrix.Identity; |
1116 | RigidBody _tmpRigidBody; | 1176 | RigidBody _tmpRigidBody; |
1117 | _startTransform.Translation = BulletXMaths.PhysicsVectorToXnaVector3(this._position); | 1177 | _startTransform.Translation = BulletXMaths.PhysicsVectorToXnaVector3(_position); |
1118 | //For now all prims are boxes | 1178 | //For now all prims are boxes |
1119 | CollisionShape _collisionShape = new XnaDevRu.BulletX.BoxShape(BulletXMaths.PhysicsVectorToXnaVector3(_newSize) / 2.0f); | 1179 | CollisionShape _collisionShape = new BoxShape(BulletXMaths.PhysicsVectorToXnaVector3(_newSize)/2.0f); |
1120 | DefaultMotionState _motionState = new DefaultMotionState(_startTransform, _centerOfMassOffset); | 1180 | DefaultMotionState _motionState = new DefaultMotionState(_startTransform, _centerOfMassOffset); |
1121 | MonoXnaCompactMaths.Vector3 _localInertia = new MonoXnaCompactMaths.Vector3(); | 1181 | Vector3 _localInertia = new Vector3(); |
1122 | if (_physical) _collisionShape.CalculateLocalInertia(Mass, out _localInertia); //Always when mass > 0 | 1182 | if (_physical) _collisionShape.CalculateLocalInertia(Mass, out _localInertia); //Always when mass > 0 |
1123 | _tmpRigidBody = new RigidBody(Mass, _motionState, _collisionShape, _localInertia, _linearDamping, _angularDamping, _friction, _restitution); | 1183 | _tmpRigidBody = |
1184 | new RigidBody(Mass, _motionState, _collisionShape, _localInertia, _linearDamping, _angularDamping, | ||
1185 | _friction, _restitution); | ||
1124 | //rigidBody.ActivationState = ActivationState.DisableDeactivation; | 1186 | //rigidBody.ActivationState = ActivationState.DisableDeactivation; |
1125 | //It's seems that there are a bug with rigidBody constructor and its CenterOfMassPosition | 1187 | //It's seems that there are a bug with rigidBody constructor and its CenterOfMassPosition |
1126 | MonoXnaCompactMaths.Vector3 _vDebugTranslation; | 1188 | Vector3 _vDebugTranslation; |
1127 | _vDebugTranslation = _startTransform.Translation - rigidBody.CenterOfMassPosition; | 1189 | _vDebugTranslation = _startTransform.Translation - rigidBody.CenterOfMassPosition; |
1128 | _tmpRigidBody.Translate(_vDebugTranslation); | 1190 | _tmpRigidBody.Translate(_vDebugTranslation); |
1129 | //--- | 1191 | //--- |
1130 | //There is a bug when trying to remove a rigidBody that is colliding with something.. | 1192 | //There is a bug when trying to remove a rigidBody that is colliding with something.. |
1131 | try | 1193 | try |
1132 | { | 1194 | { |
1133 | this._parent_scene.ddWorld.RemoveRigidBody(rigidBody); | 1195 | _parent_scene.ddWorld.RemoveRigidBody(rigidBody); |
1134 | } | 1196 | } |
1135 | catch(Exception ex) | 1197 | catch (Exception ex) |
1136 | { | 1198 | { |
1137 | this._parent_scene.BulletXMessage(this._parent_scene.is_ex_message + ex.Message, true); | 1199 | _parent_scene.BulletXMessage(_parent_scene.is_ex_message + ex.Message, true); |
1138 | rigidBody.ActivationState = ActivationState.DisableSimulation; | 1200 | rigidBody.ActivationState = ActivationState.DisableSimulation; |
1139 | this._parent_scene.AddForgottenRigidBody(rigidBody); | 1201 | _parent_scene.AddForgottenRigidBody(rigidBody); |
1140 | } | 1202 | } |
1141 | rigidBody = _tmpRigidBody; | 1203 | rigidBody = _tmpRigidBody; |
1142 | this._parent_scene.ddWorld.AddRigidBody(rigidBody); | 1204 | _parent_scene.ddWorld.AddRigidBody(rigidBody); |
1143 | if (_physical) Speed();//Static objects don't have linear velocity | 1205 | if (_physical) Speed(); //Static objects don't have linear velocity |
1144 | ReOrient(); | 1206 | ReOrient(); |
1145 | GC.Collect(); | 1207 | GC.Collect(); |
1146 | } | 1208 | } |
1209 | |||
1147 | private void ReOrient() | 1210 | private void ReOrient() |
1148 | { | 1211 | { |
1149 | ReOrient(this._orientation); | 1212 | ReOrient(_orientation); |
1150 | } | 1213 | } |
1214 | |||
1151 | private void ReOrient(AxiomQuaternion _newOrient) | 1215 | private void ReOrient(AxiomQuaternion _newOrient) |
1152 | { | 1216 | { |
1153 | MonoXnaCompactMaths.Quaternion _newOrientation; | 1217 | Quaternion _newOrientation; |
1154 | _newOrientation = BulletXMaths.AxiomQuaternionToXnaQuaternion(_newOrient); | 1218 | _newOrientation = BulletXMaths.AxiomQuaternionToXnaQuaternion(_newOrient); |
1155 | Matrix _comTransform = rigidBody.CenterOfMassTransform; | 1219 | Matrix _comTransform = rigidBody.CenterOfMassTransform; |
1156 | BulletXMaths.SetRotation(ref _comTransform, _newOrientation); | 1220 | BulletXMaths.SetRotation(ref _comTransform, _newOrientation); |
1157 | rigidBody.CenterOfMassTransform = _comTransform; | 1221 | rigidBody.CenterOfMassTransform = _comTransform; |
1158 | } | 1222 | } |
1159 | #endregion | ||
1160 | 1223 | ||
1224 | #endregion | ||
1161 | } | 1225 | } |
1226 | |||
1162 | /// <summary> | 1227 | /// <summary> |
1163 | /// This Class manage a HeighField as a RigidBody. This is for to be added in the BulletXScene | 1228 | /// This Class manage a HeighField as a RigidBody. This is for to be added in the BulletXScene |
1164 | /// </summary> | 1229 | /// </summary> |
1165 | internal class BulletXPlanet | 1230 | internal class BulletXPlanet |
1166 | { | 1231 | { |
1167 | private PhysicsVector _staticPosition; | 1232 | private PhysicsVector _staticPosition; |
1168 | private PhysicsVector _staticVelocity; | 1233 | private PhysicsVector _staticVelocity; |
1169 | private AxiomQuaternion _staticOrientation; | 1234 | private AxiomQuaternion _staticOrientation; |
1170 | private float _mass; | 1235 | private float _mass; |
1171 | private BulletXScene _parentscene; | 1236 | private BulletXScene _parentscene; |
1172 | internal float[] _heightField; | 1237 | internal float[] _heightField; |
1173 | private RigidBody _flatPlanet; | 1238 | private RigidBody _flatPlanet; |
1174 | internal RigidBody RigidBody { get { return _flatPlanet; } } | 1239 | |
1240 | internal RigidBody RigidBody | ||
1241 | { | ||
1242 | get { return _flatPlanet; } | ||
1243 | } | ||
1244 | |||
1175 | internal BulletXPlanet(BulletXScene parent_scene, float[] heightField) | 1245 | internal BulletXPlanet(BulletXScene parent_scene, float[] heightField) |
1176 | { | 1246 | { |
1177 | _staticPosition = new PhysicsVector(BulletXScene.MaxXY / 2, BulletXScene.MaxXY/2, 0); | 1247 | _staticPosition = new PhysicsVector(BulletXScene.MaxXY/2, BulletXScene.MaxXY/2, 0); |
1178 | _staticVelocity = new PhysicsVector(); | 1248 | _staticVelocity = new PhysicsVector(); |
1179 | _staticOrientation = AxiomQuaternion.Identity; | 1249 | _staticOrientation = AxiomQuaternion.Identity; |
1180 | _mass = 0; //No active | 1250 | _mass = 0; //No active |
@@ -1193,40 +1263,45 @@ namespace OpenSim.Region.Physics.BulletXPlugin | |||
1193 | try | 1263 | try |
1194 | { | 1264 | { |
1195 | _startTransform.Translation = BulletXMaths.PhysicsVectorToXnaVector3(_staticPosition); | 1265 | _startTransform.Translation = BulletXMaths.PhysicsVectorToXnaVector3(_staticPosition); |
1196 | CollisionShape _collisionShape = new HeightfieldTerrainShape(BulletXScene.MaxXY, BulletXScene.MaxXY, _heightField, (float)BulletXScene.MaxZ, 2, true, false); | 1266 | CollisionShape _collisionShape = |
1267 | new HeightfieldTerrainShape(BulletXScene.MaxXY, BulletXScene.MaxXY, _heightField, | ||
1268 | (float) BulletXScene.MaxZ, 2, true, false); | ||
1197 | DefaultMotionState _motionState = new DefaultMotionState(_startTransform, _centerOfMassOffset); | 1269 | DefaultMotionState _motionState = new DefaultMotionState(_startTransform, _centerOfMassOffset); |
1198 | MonoXnaCompactMaths.Vector3 _localInertia = new MonoXnaCompactMaths.Vector3(); | 1270 | Vector3 _localInertia = new Vector3(); |
1199 | //_collisionShape.CalculateLocalInertia(_mass, out _localInertia); //Always when mass > 0 | 1271 | //_collisionShape.CalculateLocalInertia(_mass, out _localInertia); //Always when mass > 0 |
1200 | _flatPlanet = new RigidBody(_mass, _motionState, _collisionShape, _localInertia, _linearDamping, _angularDamping, _friction, _restitution); | 1272 | _flatPlanet = |
1273 | new RigidBody(_mass, _motionState, _collisionShape, _localInertia, _linearDamping, | ||
1274 | _angularDamping, _friction, _restitution); | ||
1201 | //It's seems that there are a bug with rigidBody constructor and its CenterOfMassPosition | 1275 | //It's seems that there are a bug with rigidBody constructor and its CenterOfMassPosition |
1202 | MonoXnaCompactMaths.Vector3 _vDebugTranslation; | 1276 | Vector3 _vDebugTranslation; |
1203 | _vDebugTranslation = _startTransform.Translation - _flatPlanet.CenterOfMassPosition; | 1277 | _vDebugTranslation = _startTransform.Translation - _flatPlanet.CenterOfMassPosition; |
1204 | _flatPlanet.Translate(_vDebugTranslation); | 1278 | _flatPlanet.Translate(_vDebugTranslation); |
1205 | parent_scene.ddWorld.AddRigidBody(_flatPlanet); | 1279 | parent_scene.ddWorld.AddRigidBody(_flatPlanet); |
1206 | } | 1280 | } |
1207 | catch (Exception ex) | 1281 | catch (Exception ex) |
1208 | { | 1282 | { |
1209 | this._parentscene.BulletXMessage(ex.Message, true); | 1283 | _parentscene.BulletXMessage(ex.Message, true); |
1210 | } | 1284 | } |
1211 | } | 1285 | } |
1212 | this._parentscene.BulletXMessage("BulletXPlanet created.", false); | 1286 | _parentscene.BulletXMessage("BulletXPlanet created.", false); |
1213 | } | 1287 | } |
1214 | internal float HeightValue(MonoXnaCompactMaths.Vector3 position) | 1288 | |
1289 | internal float HeightValue(Vector3 position) | ||
1215 | { | 1290 | { |
1216 | int li_x, li_y; | 1291 | int li_x, li_y; |
1217 | float height; | 1292 | float height; |
1218 | li_x = (int)Math.Round(position.X); | 1293 | li_x = (int) Math.Round(position.X); |
1219 | if (li_x < 0) li_x = 0; | 1294 | if (li_x < 0) li_x = 0; |
1220 | if (li_x >= BulletXScene.MaxXY) li_x = BulletXScene.MaxXY - 1; | 1295 | if (li_x >= BulletXScene.MaxXY) li_x = BulletXScene.MaxXY - 1; |
1221 | li_y = (int)Math.Round(position.Y); | 1296 | li_y = (int) Math.Round(position.Y); |
1222 | if (li_y < 0) li_y = 0; | 1297 | if (li_y < 0) li_y = 0; |
1223 | if (li_y >= BulletXScene.MaxXY) li_y = BulletXScene.MaxXY - 1; | 1298 | if (li_y >= BulletXScene.MaxXY) li_y = BulletXScene.MaxXY - 1; |
1224 | 1299 | ||
1225 | height = ((HeightfieldTerrainShape)this._flatPlanet.CollisionShape).getHeightFieldValue(li_x, li_y); | 1300 | height = ((HeightfieldTerrainShape) _flatPlanet.CollisionShape).getHeightFieldValue(li_x, li_y); |
1226 | if (height < 0) height = 0; | 1301 | if (height < 0) height = 0; |
1227 | else if (height > BulletXScene.MaxZ) height = BulletXScene.MaxZ; | 1302 | else if (height > BulletXScene.MaxZ) height = BulletXScene.MaxZ; |
1228 | 1303 | ||
1229 | return height; | 1304 | return height; |
1230 | } | 1305 | } |
1231 | } | 1306 | } |
1232 | } | 1307 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Physics/Manager/AssemblyInfo.cs b/OpenSim/Region/Physics/Manager/AssemblyInfo.cs index 2355e91..c213b64 100644 --- a/OpenSim/Region/Physics/Manager/AssemblyInfo.cs +++ b/OpenSim/Region/Physics/Manager/AssemblyInfo.cs | |||
@@ -27,24 +27,26 @@ | |||
27 | */ | 27 | */ |
28 | using System.Reflection; | 28 | using System.Reflection; |
29 | using System.Runtime.InteropServices; | 29 | using System.Runtime.InteropServices; |
30 | |||
30 | // Information about this assembly is defined by the following | 31 | // Information about this assembly is defined by the following |
31 | // attributes. | 32 | // attributes. |
32 | // | 33 | // |
33 | // change them to the information which is associated with the assembly | 34 | // change them to the information which is associated with the assembly |
34 | // you compile. | 35 | // you compile. |
35 | 36 | ||
36 | [assembly: AssemblyTitle("PhysicsManager")] | 37 | [assembly : AssemblyTitle("PhysicsManager")] |
37 | [assembly: AssemblyDescription("")] | 38 | [assembly : AssemblyDescription("")] |
38 | [assembly: AssemblyConfiguration("")] | 39 | [assembly : AssemblyConfiguration("")] |
39 | [assembly: AssemblyCompany("")] | 40 | [assembly : AssemblyCompany("")] |
40 | [assembly: AssemblyProduct("PhysicsManager")] | 41 | [assembly : AssemblyProduct("PhysicsManager")] |
41 | [assembly: AssemblyCopyright("")] | 42 | [assembly : AssemblyCopyright("")] |
42 | [assembly: AssemblyTrademark("")] | 43 | [assembly : AssemblyTrademark("")] |
43 | [assembly: AssemblyCulture("")] | 44 | [assembly : AssemblyCulture("")] |
44 | 45 | ||
45 | // This sets the default COM visibility of types in the assembly to invisible. | 46 | // This sets the default COM visibility of types in the assembly to invisible. |
46 | // If you need to expose a type to COM, use [ComVisible(true)] on that type. | 47 | // If you need to expose a type to COM, use [ComVisible(true)] on that type. |
47 | [assembly: ComVisible(false)] | 48 | |
49 | [assembly : ComVisible(false)] | ||
48 | 50 | ||
49 | // The assembly version has following format : | 51 | // The assembly version has following format : |
50 | // | 52 | // |
@@ -53,4 +55,4 @@ using System.Runtime.InteropServices; | |||
53 | // You can specify all values by your own or you can build default build and revision | 55 | // You can specify all values by your own or you can build default build and revision |
54 | // numbers with the '*' character (the default): | 56 | // numbers with the '*' character (the default): |
55 | 57 | ||
56 | [assembly: AssemblyVersion("1.0.*")] | 58 | [assembly : AssemblyVersion("1.0.*")] \ No newline at end of file |
diff --git a/OpenSim/Region/Physics/Manager/PhysicsActor.cs b/OpenSim/Region/Physics/Manager/PhysicsActor.cs index 0fa7455..b59c13a 100644 --- a/OpenSim/Region/Physics/Manager/PhysicsActor.cs +++ b/OpenSim/Region/Physics/Manager/PhysicsActor.cs | |||
@@ -30,7 +30,9 @@ using Axiom.Math; | |||
30 | namespace OpenSim.Region.Physics.Manager | 30 | namespace OpenSim.Region.Physics.Manager |
31 | { | 31 | { |
32 | public delegate void PositionUpdate(PhysicsVector position); | 32 | public delegate void PositionUpdate(PhysicsVector position); |
33 | |||
33 | public delegate void VelocityUpdate(PhysicsVector velocity); | 34 | public delegate void VelocityUpdate(PhysicsVector velocity); |
35 | |||
34 | public delegate void OrientationUpdate(Quaternion orientation); | 36 | public delegate void OrientationUpdate(Quaternion orientation); |
35 | 37 | ||
36 | public abstract class PhysicsActor | 38 | public abstract class PhysicsActor |
@@ -43,52 +45,22 @@ namespace OpenSim.Region.Physics.Manager | |||
43 | 45 | ||
44 | public static PhysicsActor Null | 46 | public static PhysicsActor Null |
45 | { | 47 | { |
46 | get | 48 | get { return new NullPhysicsActor(); } |
47 | { | ||
48 | return new NullPhysicsActor(); | ||
49 | } | ||
50 | } | 49 | } |
51 | 50 | ||
52 | public abstract PhysicsVector Size | 51 | public abstract PhysicsVector Size { get; set; } |
53 | { | ||
54 | get; | ||
55 | set; | ||
56 | } | ||
57 | 52 | ||
58 | public abstract PhysicsVector Position | 53 | public abstract PhysicsVector Position { get; set; } |
59 | { | ||
60 | get; | ||
61 | set; | ||
62 | } | ||
63 | 54 | ||
64 | public abstract PhysicsVector Velocity | 55 | public abstract PhysicsVector Velocity { get; set; } |
65 | { | ||
66 | get; | ||
67 | set; | ||
68 | } | ||
69 | 56 | ||
70 | public abstract PhysicsVector Acceleration | 57 | public abstract PhysicsVector Acceleration { get; } |
71 | { | ||
72 | get; | ||
73 | } | ||
74 | 58 | ||
75 | public abstract Quaternion Orientation | 59 | public abstract Quaternion Orientation { get; set; } |
76 | { | ||
77 | get; | ||
78 | set; | ||
79 | } | ||
80 | 60 | ||
81 | public abstract bool Flying | 61 | public abstract bool Flying { get; set; } |
82 | { | ||
83 | get; | ||
84 | set; | ||
85 | } | ||
86 | 62 | ||
87 | public abstract bool Kinematic | 63 | public abstract bool Kinematic { get; set; } |
88 | { | ||
89 | get; | ||
90 | set; | ||
91 | } | ||
92 | 64 | ||
93 | public abstract void AddForce(PhysicsVector force); | 65 | public abstract void AddForce(PhysicsVector force); |
94 | 66 | ||
@@ -99,50 +71,26 @@ namespace OpenSim.Region.Physics.Manager | |||
99 | { | 71 | { |
100 | public override PhysicsVector Position | 72 | public override PhysicsVector Position |
101 | { | 73 | { |
102 | get | 74 | get { return PhysicsVector.Zero; } |
103 | { | 75 | set { return; } |
104 | return PhysicsVector.Zero; | ||
105 | } | ||
106 | set | ||
107 | { | ||
108 | return; | ||
109 | } | ||
110 | } | 76 | } |
111 | 77 | ||
112 | public override PhysicsVector Size | 78 | public override PhysicsVector Size |
113 | { | 79 | { |
114 | get | 80 | get { return PhysicsVector.Zero; } |
115 | { | 81 | set { return; } |
116 | return PhysicsVector.Zero; | ||
117 | } | ||
118 | set | ||
119 | { | ||
120 | return; | ||
121 | } | ||
122 | } | 82 | } |
123 | 83 | ||
124 | public override PhysicsVector Velocity | 84 | public override PhysicsVector Velocity |
125 | { | 85 | { |
126 | get | 86 | get { return PhysicsVector.Zero; } |
127 | { | 87 | set { return; } |
128 | return PhysicsVector.Zero; | ||
129 | } | ||
130 | set | ||
131 | { | ||
132 | return; | ||
133 | } | ||
134 | } | 88 | } |
135 | 89 | ||
136 | public override Quaternion Orientation | 90 | public override Quaternion Orientation |
137 | { | 91 | { |
138 | get | 92 | get { return Quaternion.Identity; } |
139 | { | 93 | set { } |
140 | return Quaternion.Identity; | ||
141 | } | ||
142 | set | ||
143 | { | ||
144 | |||
145 | } | ||
146 | } | 94 | } |
147 | 95 | ||
148 | public override PhysicsVector Acceleration | 96 | public override PhysicsVector Acceleration |
@@ -152,26 +100,14 @@ namespace OpenSim.Region.Physics.Manager | |||
152 | 100 | ||
153 | public override bool Flying | 101 | public override bool Flying |
154 | { | 102 | { |
155 | get | 103 | get { return false; } |
156 | { | 104 | set { return; } |
157 | return false; | ||
158 | } | ||
159 | set | ||
160 | { | ||
161 | return; | ||
162 | } | ||
163 | } | 105 | } |
164 | 106 | ||
165 | public override bool Kinematic | 107 | public override bool Kinematic |
166 | { | 108 | { |
167 | get | 109 | get { return true; } |
168 | { | 110 | set { return; } |
169 | return true; | ||
170 | } | ||
171 | set | ||
172 | { | ||
173 | return; | ||
174 | } | ||
175 | } | 111 | } |
176 | 112 | ||
177 | public override void AddForce(PhysicsVector force) | 113 | public override void AddForce(PhysicsVector force) |
@@ -184,4 +120,4 @@ namespace OpenSim.Region.Physics.Manager | |||
184 | return; | 120 | return; |
185 | } | 121 | } |
186 | } | 122 | } |
187 | } | 123 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Physics/Manager/PhysicsPluginManager.cs b/OpenSim/Region/Physics/Manager/PhysicsPluginManager.cs index 81bc938..09ebf29 100644 --- a/OpenSim/Region/Physics/Manager/PhysicsPluginManager.cs +++ b/OpenSim/Region/Physics/Manager/PhysicsPluginManager.cs | |||
@@ -33,77 +33,77 @@ using OpenSim.Framework.Console; | |||
33 | 33 | ||
34 | namespace OpenSim.Region.Physics.Manager | 34 | namespace OpenSim.Region.Physics.Manager |
35 | { | 35 | { |
36 | /// <summary> | 36 | /// <summary> |
37 | /// Description of MyClass. | 37 | /// Description of MyClass. |
38 | /// </summary> | 38 | /// </summary> |
39 | public class PhysicsPluginManager | 39 | public class PhysicsPluginManager |
40 | { | 40 | { |
41 | private Dictionary<string, IPhysicsPlugin> _plugins=new Dictionary<string, IPhysicsPlugin>(); | 41 | private Dictionary<string, IPhysicsPlugin> _plugins = new Dictionary<string, IPhysicsPlugin>(); |
42 | 42 | ||
43 | public PhysicsPluginManager() | 43 | public PhysicsPluginManager() |
44 | { | 44 | { |
45 | 45 | } | |
46 | } | 46 | |
47 | 47 | public PhysicsScene GetPhysicsScene(string engineName) | |
48 | public PhysicsScene GetPhysicsScene(string engineName) | 48 | { |
49 | { | ||
50 | if (String.IsNullOrEmpty(engineName)) | 49 | if (String.IsNullOrEmpty(engineName)) |
51 | { | 50 | { |
52 | return PhysicsScene.Null; | 51 | return PhysicsScene.Null; |
53 | } | 52 | } |
54 | 53 | ||
55 | if(_plugins.ContainsKey(engineName)) | 54 | if (_plugins.ContainsKey(engineName)) |
56 | { | 55 | { |
57 | MainLog.Instance.Verbose("PHYSICS","creating "+engineName); | 56 | MainLog.Instance.Verbose("PHYSICS", "creating " + engineName); |
58 | return _plugins[engineName].GetScene(); | 57 | return _plugins[engineName].GetScene(); |
59 | } | 58 | } |
60 | else | 59 | else |
61 | { | 60 | { |
62 | MainLog.Instance.Warn("PHYSICS", "couldn't find physicsEngine: {0}", engineName); | 61 | MainLog.Instance.Warn("PHYSICS", "couldn't find physicsEngine: {0}", engineName); |
63 | throw new ArgumentException(String.Format("couldn't find physicsEngine: {0}",engineName)); | 62 | throw new ArgumentException(String.Format("couldn't find physicsEngine: {0}", engineName)); |
64 | } | 63 | } |
65 | } | 64 | } |
66 | 65 | ||
67 | public void LoadPlugins() | 66 | public void LoadPlugins() |
68 | { | 67 | { |
69 | string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory ,"Physics"); | 68 | string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Physics"); |
70 | string[] pluginFiles = Directory.GetFiles(path, "*.dll"); | 69 | string[] pluginFiles = Directory.GetFiles(path, "*.dll"); |
71 | 70 | ||
72 | 71 | ||
73 | for(int i= 0; i<pluginFiles.Length; i++) | 72 | for (int i = 0; i < pluginFiles.Length; i++) |
74 | { | 73 | { |
75 | this.AddPlugin(pluginFiles[i]); | 74 | AddPlugin(pluginFiles[i]); |
76 | } | 75 | } |
77 | } | 76 | } |
78 | 77 | ||
79 | private void AddPlugin(string FileName) | 78 | private void AddPlugin(string FileName) |
80 | { | 79 | { |
81 | Assembly pluginAssembly = Assembly.LoadFrom(FileName); | 80 | Assembly pluginAssembly = Assembly.LoadFrom(FileName); |
82 | 81 | ||
83 | foreach (Type pluginType in pluginAssembly.GetTypes()) | 82 | foreach (Type pluginType in pluginAssembly.GetTypes()) |
84 | { | 83 | { |
85 | if (pluginType.IsPublic) | 84 | if (pluginType.IsPublic) |
86 | { | 85 | { |
87 | if (!pluginType.IsAbstract) | 86 | if (!pluginType.IsAbstract) |
88 | { | 87 | { |
89 | Type typeInterface = pluginType.GetInterface("IPhysicsPlugin", true); | 88 | Type typeInterface = pluginType.GetInterface("IPhysicsPlugin", true); |
90 | 89 | ||
91 | if (typeInterface != null) | 90 | if (typeInterface != null) |
92 | { | 91 | { |
93 | IPhysicsPlugin plug = (IPhysicsPlugin)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString())); | 92 | IPhysicsPlugin plug = |
94 | plug.Init(); | 93 | (IPhysicsPlugin) Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString())); |
95 | this._plugins.Add(plug.GetName(),plug); | 94 | plug.Init(); |
96 | OpenSim.Framework.Console.MainLog.Instance.Verbose("PHYSICS","Added physics engine: " + plug.GetName()); | 95 | _plugins.Add(plug.GetName(), plug); |
97 | 96 | MainLog.Instance.Verbose("PHYSICS", "Added physics engine: " + plug.GetName()); | |
98 | } | 97 | } |
99 | 98 | ||
100 | typeInterface = null; | 99 | typeInterface = null; |
101 | } | 100 | } |
102 | } | 101 | } |
103 | } | 102 | } |
104 | 103 | ||
105 | pluginAssembly = null; | 104 | pluginAssembly = null; |
106 | } | 105 | } |
106 | |||
107 | //--- | 107 | //--- |
108 | public static void PhysicsPluginMessage(string message, bool isWarning) | 108 | public static void PhysicsPluginMessage(string message, bool isWarning) |
109 | { | 109 | { |
@@ -116,14 +116,15 @@ namespace OpenSim.Region.Physics.Manager | |||
116 | MainLog.Instance.Verbose("PHYSICS", message); | 116 | MainLog.Instance.Verbose("PHYSICS", message); |
117 | } | 117 | } |
118 | } | 118 | } |
119 | |||
119 | //--- | 120 | //--- |
120 | } | 121 | } |
121 | 122 | ||
122 | public interface IPhysicsPlugin | 123 | public interface IPhysicsPlugin |
123 | { | 124 | { |
124 | bool Init(); | 125 | bool Init(); |
125 | PhysicsScene GetScene(); | 126 | PhysicsScene GetScene(); |
126 | string GetName(); | 127 | string GetName(); |
127 | void Dispose(); | 128 | void Dispose(); |
128 | } | 129 | } |
129 | } | 130 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Physics/Manager/PhysicsScene.cs b/OpenSim/Region/Physics/Manager/PhysicsScene.cs index 9ab2997..3f08234 100644 --- a/OpenSim/Region/Physics/Manager/PhysicsScene.cs +++ b/OpenSim/Region/Physics/Manager/PhysicsScene.cs | |||
@@ -25,9 +25,9 @@ | |||
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 | using Axiom.Math; | ||
28 | using OpenSim.Framework; | 29 | using OpenSim.Framework; |
29 | using OpenSim.Framework.Console; | 30 | using OpenSim.Framework.Console; |
30 | using Axiom.Math; | ||
31 | 31 | ||
32 | namespace OpenSim.Region.Physics.Manager | 32 | namespace OpenSim.Region.Physics.Manager |
33 | { | 33 | { |
@@ -35,10 +35,7 @@ namespace OpenSim.Region.Physics.Manager | |||
35 | { | 35 | { |
36 | public static PhysicsScene Null | 36 | public static PhysicsScene Null |
37 | { | 37 | { |
38 | get | 38 | get { return new NullPhysicsScene(); } |
39 | { | ||
40 | return new NullPhysicsScene(); | ||
41 | } | ||
42 | } | 39 | } |
43 | 40 | ||
44 | public abstract PhysicsActor AddAvatar(string avName, PhysicsVector position); | 41 | public abstract PhysicsActor AddAvatar(string avName, PhysicsVector position); |
@@ -47,7 +44,8 @@ namespace OpenSim.Region.Physics.Manager | |||
47 | 44 | ||
48 | public abstract void RemovePrim(PhysicsActor prim); | 45 | public abstract void RemovePrim(PhysicsActor prim); |
49 | 46 | ||
50 | public abstract PhysicsActor AddPrimShape(string primName, PrimitiveBaseShape pbs, PhysicsVector position, PhysicsVector size, Quaternion rotation); | 47 | public abstract PhysicsActor AddPrimShape(string primName, PrimitiveBaseShape pbs, PhysicsVector position, |
48 | PhysicsVector size, Quaternion rotation); | ||
51 | 49 | ||
52 | public abstract void Simulate(float timeStep); | 50 | public abstract void Simulate(float timeStep); |
53 | 51 | ||
@@ -57,10 +55,7 @@ namespace OpenSim.Region.Physics.Manager | |||
57 | 55 | ||
58 | public abstract void DeleteTerrain(); | 56 | public abstract void DeleteTerrain(); |
59 | 57 | ||
60 | public abstract bool IsThreaded | 58 | public abstract bool IsThreaded { get; } |
61 | { | ||
62 | get; | ||
63 | } | ||
64 | 59 | ||
65 | private class NullPhysicsScene : PhysicsScene | 60 | private class NullPhysicsScene : PhysicsScene |
66 | { | 61 | { |
@@ -74,12 +69,10 @@ namespace OpenSim.Region.Physics.Manager | |||
74 | 69 | ||
75 | public override void RemoveAvatar(PhysicsActor actor) | 70 | public override void RemoveAvatar(PhysicsActor actor) |
76 | { | 71 | { |
77 | |||
78 | } | 72 | } |
79 | 73 | ||
80 | public override void RemovePrim(PhysicsActor prim) | 74 | public override void RemovePrim(PhysicsActor prim) |
81 | { | 75 | { |
82 | |||
83 | } | 76 | } |
84 | 77 | ||
85 | /* | 78 | /* |
@@ -89,7 +82,9 @@ namespace OpenSim.Region.Physics.Manager | |||
89 | return PhysicsActor.Null; | 82 | return PhysicsActor.Null; |
90 | } | 83 | } |
91 | */ | 84 | */ |
92 | public override PhysicsActor AddPrimShape(string primName, PrimitiveBaseShape pbs, PhysicsVector position, PhysicsVector size, Quaternion rotation) | 85 | |
86 | public override PhysicsActor AddPrimShape(string primName, PrimitiveBaseShape pbs, PhysicsVector position, | ||
87 | PhysicsVector size, Quaternion rotation) | ||
93 | { | 88 | { |
94 | MainLog.Instance.Verbose("NullPhysicsScene : AddPrim({0},{1})", position, size); | 89 | MainLog.Instance.Verbose("NullPhysicsScene : AddPrim({0},{1})", position, size); |
95 | return PhysicsActor.Null; | 90 | return PhysicsActor.Null; |
@@ -97,7 +92,7 @@ namespace OpenSim.Region.Physics.Manager | |||
97 | 92 | ||
98 | public override void Simulate(float timeStep) | 93 | public override void Simulate(float timeStep) |
99 | { | 94 | { |
100 | m_workIndicator = (m_workIndicator + 1) % 10; | 95 | m_workIndicator = (m_workIndicator + 1)%10; |
101 | 96 | ||
102 | //OpenSim.Framework.Console.MainLog.Instance.SetStatus(m_workIndicator.ToString()); | 97 | //OpenSim.Framework.Console.MainLog.Instance.SetStatus(m_workIndicator.ToString()); |
103 | } | 98 | } |
@@ -114,7 +109,6 @@ namespace OpenSim.Region.Physics.Manager | |||
114 | 109 | ||
115 | public override void DeleteTerrain() | 110 | public override void DeleteTerrain() |
116 | { | 111 | { |
117 | |||
118 | } | 112 | } |
119 | 113 | ||
120 | public override bool IsThreaded | 114 | public override bool IsThreaded |
@@ -123,4 +117,4 @@ namespace OpenSim.Region.Physics.Manager | |||
123 | } | 117 | } |
124 | } | 118 | } |
125 | } | 119 | } |
126 | } | 120 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Physics/Manager/PhysicsVector.cs b/OpenSim/Region/Physics/Manager/PhysicsVector.cs index 722c5dd..7de37e4 100644 --- a/OpenSim/Region/Physics/Manager/PhysicsVector.cs +++ b/OpenSim/Region/Physics/Manager/PhysicsVector.cs | |||
@@ -35,7 +35,6 @@ namespace OpenSim.Region.Physics.Manager | |||
35 | 35 | ||
36 | public PhysicsVector() | 36 | public PhysicsVector() |
37 | { | 37 | { |
38 | |||
39 | } | 38 | } |
40 | 39 | ||
41 | public PhysicsVector(float x, float y, float z) | 40 | public PhysicsVector(float x, float y, float z) |
@@ -49,7 +48,7 @@ namespace OpenSim.Region.Physics.Manager | |||
49 | 48 | ||
50 | public override string ToString() | 49 | public override string ToString() |
51 | { | 50 | { |
52 | return "<" + this.X + "," + this.Y + "," + this.Z + ">"; | 51 | return "<" + X + "," + Y + "," + Z + ">"; |
53 | } | 52 | } |
54 | } | 53 | } |
55 | } | 54 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Physics/OdePlugin/AssemblyInfo.cs b/OpenSim/Region/Physics/OdePlugin/AssemblyInfo.cs index 3f840cc..d110a17 100644 --- a/OpenSim/Region/Physics/OdePlugin/AssemblyInfo.cs +++ b/OpenSim/Region/Physics/OdePlugin/AssemblyInfo.cs | |||
@@ -27,24 +27,26 @@ | |||
27 | */ | 27 | */ |
28 | using System.Reflection; | 28 | using System.Reflection; |
29 | using System.Runtime.InteropServices; | 29 | using System.Runtime.InteropServices; |
30 | |||
30 | // Information about this assembly is defined by the following | 31 | // Information about this assembly is defined by the following |
31 | // attributes. | 32 | // attributes. |
32 | // | 33 | // |
33 | // change them to the information which is associated with the assembly | 34 | // change them to the information which is associated with the assembly |
34 | // you compile. | 35 | // you compile. |
35 | 36 | ||
36 | [assembly: AssemblyTitle("RealPhysXplugin")] | 37 | [assembly : AssemblyTitle("RealPhysXplugin")] |
37 | [assembly: AssemblyDescription("")] | 38 | [assembly : AssemblyDescription("")] |
38 | [assembly: AssemblyConfiguration("")] | 39 | [assembly : AssemblyConfiguration("")] |
39 | [assembly: AssemblyCompany("")] | 40 | [assembly : AssemblyCompany("")] |
40 | [assembly: AssemblyProduct("RealPhysXplugin")] | 41 | [assembly : AssemblyProduct("RealPhysXplugin")] |
41 | [assembly: AssemblyCopyright("")] | 42 | [assembly : AssemblyCopyright("")] |
42 | [assembly: AssemblyTrademark("")] | 43 | [assembly : AssemblyTrademark("")] |
43 | [assembly: AssemblyCulture("")] | 44 | [assembly : AssemblyCulture("")] |
44 | 45 | ||
45 | // This sets the default COM visibility of types in the assembly to invisible. | 46 | // This sets the default COM visibility of types in the assembly to invisible. |
46 | // If you need to expose a type to COM, use [ComVisible(true)] on that type. | 47 | // If you need to expose a type to COM, use [ComVisible(true)] on that type. |
47 | [assembly: ComVisible(false)] | 48 | |
49 | [assembly : ComVisible(false)] | ||
48 | 50 | ||
49 | // The assembly version has following format : | 51 | // The assembly version has following format : |
50 | // | 52 | // |
@@ -53,4 +55,4 @@ using System.Runtime.InteropServices; | |||
53 | // You can specify all values by your own or you can build default build and revision | 55 | // You can specify all values by your own or you can build default build and revision |
54 | // numbers with the '*' character (the default): | 56 | // numbers with the '*' character (the default): |
55 | 57 | ||
56 | [assembly: AssemblyVersion("1.0.*")] | 58 | [assembly : AssemblyVersion("1.0.*")] \ No newline at end of file |
diff --git a/OpenSim/Region/Physics/OdePlugin/Meshing/HelperTypes.cs b/OpenSim/Region/Physics/OdePlugin/Meshing/HelperTypes.cs index 2ace097..13184e2 100644 --- a/OpenSim/Region/Physics/OdePlugin/Meshing/HelperTypes.cs +++ b/OpenSim/Region/Physics/OdePlugin/Meshing/HelperTypes.cs | |||
@@ -27,10 +27,9 @@ | |||
27 | */ | 27 | */ |
28 | 28 | ||
29 | using System; | 29 | using System; |
30 | using System.Globalization; | ||
31 | using System.Diagnostics; | ||
32 | using System.Collections.Generic; | 30 | using System.Collections.Generic; |
33 | 31 | using System.Diagnostics; | |
32 | using System.Globalization; | ||
34 | using OpenSim.Region.Physics.Manager; | 33 | using OpenSim.Region.Physics.Manager; |
35 | 34 | ||
36 | public class Vertex : IComparable<Vertex> | 35 | public class Vertex : IComparable<Vertex> |
@@ -76,8 +75,6 @@ public class Vertex : IComparable<Vertex> | |||
76 | { | 75 | { |
77 | return me.CompareTo(other) < 0; | 76 | return me.CompareTo(other) < 0; |
78 | } | 77 | } |
79 | |||
80 | |||
81 | } | 78 | } |
82 | 79 | ||
83 | public class Simplex : IComparable<Simplex> | 80 | public class Simplex : IComparable<Simplex> |
@@ -122,8 +119,7 @@ public class Simplex : IComparable<Simplex> | |||
122 | 119 | ||
123 | return 0; | 120 | return 0; |
124 | } | 121 | } |
125 | 122 | } ; | |
126 | }; | ||
127 | 123 | ||
128 | public class Triangle | 124 | public class Triangle |
129 | { | 125 | { |
@@ -131,9 +127,9 @@ public class Triangle | |||
131 | public Vertex v2; | 127 | public Vertex v2; |
132 | public Vertex v3; | 128 | public Vertex v3; |
133 | 129 | ||
134 | float radius_square; | 130 | private float radius_square; |
135 | float cx; | 131 | private float cx; |
136 | float cy; | 132 | private float cy; |
137 | 133 | ||
138 | public Triangle(Vertex _v1, Vertex _v2, Vertex _v3) | 134 | public Triangle(Vertex _v1, Vertex _v2, Vertex _v3) |
139 | { | 135 | { |
@@ -149,18 +145,18 @@ public class Triangle | |||
149 | float dx, dy; | 145 | float dx, dy; |
150 | float dd; | 146 | float dd; |
151 | 147 | ||
152 | dx = x - this.cx; | 148 | dx = x - cx; |
153 | dy = y - this.cy; | 149 | dy = y - cy; |
154 | 150 | ||
155 | dd = dx * dx + dy * dy; | 151 | dd = dx*dx + dy*dy; |
156 | if (dd < this.radius_square) | 152 | if (dd < radius_square) |
157 | return true; | 153 | return true; |
158 | else | 154 | else |
159 | return false; | 155 | return false; |
160 | } | 156 | } |
161 | 157 | ||
162 | 158 | ||
163 | void CalcCircle() | 159 | private void CalcCircle() |
164 | { | 160 | { |
165 | // Calculate the center and the radius of a circle given by three points p1, p2, p3 | 161 | // Calculate the center and the radius of a circle given by three points p1, p2, p3 |
166 | // It is assumed, that the triangles vertices are already set correctly | 162 | // It is assumed, that the triangles vertices are already set correctly |
@@ -198,8 +194,8 @@ public class Triangle | |||
198 | p3y = v3.point.Y; | 194 | p3y = v3.point.Y; |
199 | 195 | ||
200 | /* calc helping values first */ | 196 | /* calc helping values first */ |
201 | c1 = (p1x * p1x + p1y * p1y - p2x * p2x - p2y * p2y) / 2; | 197 | c1 = (p1x*p1x + p1y*p1y - p2x*p2x - p2y*p2y)/2; |
202 | c2 = (p1x * p1x + p1y * p1y - p3x * p3x - p3y * p3y) / 2; | 198 | c2 = (p1x*p1x + p1y*p1y - p3x*p3x - p3y*p3y)/2; |
203 | 199 | ||
204 | v1x = p1x - p2x; | 200 | v1x = p1x - p2x; |
205 | v1y = p1y - p2y; | 201 | v1y = p1y - p2y; |
@@ -207,35 +203,34 @@ public class Triangle | |||
207 | v2x = p1x - p3x; | 203 | v2x = p1x - p3x; |
208 | v2y = p1y - p3y; | 204 | v2y = p1y - p3y; |
209 | 205 | ||
210 | z = (c1 * v2x - c2 * v1x); | 206 | z = (c1*v2x - c2*v1x); |
211 | n = (v1y * v2x - v2y * v1x); | 207 | n = (v1y*v2x - v2y*v1x); |
212 | 208 | ||
213 | if (n == 0.0) // This is no triangle, i.e there are (at least) two points at the same location | 209 | if (n == 0.0) // This is no triangle, i.e there are (at least) two points at the same location |
214 | { | 210 | { |
215 | radius_square = 0.0f; | 211 | radius_square = 0.0f; |
216 | return; | 212 | return; |
217 | } | 213 | } |
218 | 214 | ||
219 | this.cy = (float)(z / n); | 215 | cy = (float) (z/n); |
220 | 216 | ||
221 | if (v2x != 0.0) | 217 | if (v2x != 0.0) |
222 | { | 218 | { |
223 | this.cx = (float)((c2 - v2y * this.cy) / v2x); | 219 | cx = (float) ((c2 - v2y*cy)/v2x); |
224 | } | 220 | } |
225 | else if (v1x != 0.0) | 221 | else if (v1x != 0.0) |
226 | { | 222 | { |
227 | this.cx = (float)((c1 - v1y * this.cy) / v1x); | 223 | cx = (float) ((c1 - v1y*cy)/v1x); |
228 | } | 224 | } |
229 | else | 225 | else |
230 | { | 226 | { |
231 | Debug.Assert(false, "Malformed triangle"); /* Both terms zero means nothing good */ | 227 | Debug.Assert(false, "Malformed triangle"); /* Both terms zero means nothing good */ |
232 | } | 228 | } |
233 | 229 | ||
234 | rx = (p1x - this.cx); | 230 | rx = (p1x - cx); |
235 | ry = (p1y - this.cy); | 231 | ry = (p1y - cy); |
236 | |||
237 | this.radius_square = (float)(rx * rx + ry * ry); | ||
238 | 232 | ||
233 | radius_square = (float) (rx*rx + ry*ry); | ||
239 | } | 234 | } |
240 | 235 | ||
241 | public List<Simplex> GetSimplices() | 236 | public List<Simplex> GetSimplices() |
@@ -254,17 +249,18 @@ public class Triangle | |||
254 | 249 | ||
255 | public override String ToString() | 250 | public override String ToString() |
256 | { | 251 | { |
257 | |||
258 | NumberFormatInfo nfi = new NumberFormatInfo(); | 252 | NumberFormatInfo nfi = new NumberFormatInfo(); |
259 | nfi.CurrencyDecimalDigits = 2; | 253 | nfi.CurrencyDecimalDigits = 2; |
260 | nfi.CurrencyDecimalSeparator = "."; | 254 | nfi.CurrencyDecimalSeparator = "."; |
261 | 255 | ||
262 | String s1 = "<" + v1.point.X.ToString(nfi) + "," + v1.point.Y.ToString(nfi) + "," + v1.point.Z.ToString(nfi) + ">"; | 256 | String s1 = "<" + v1.point.X.ToString(nfi) + "," + v1.point.Y.ToString(nfi) + "," + v1.point.Z.ToString(nfi) + |
263 | String s2 = "<" + v2.point.X.ToString(nfi) + "," + v2.point.Y.ToString(nfi) + "," + v2.point.Z.ToString(nfi) + ">"; | 257 | ">"; |
264 | String s3 = "<" + v3.point.X.ToString(nfi) + "," + v3.point.Y.ToString(nfi) + "," + v3.point.Z.ToString(nfi) + ">"; | 258 | String s2 = "<" + v2.point.X.ToString(nfi) + "," + v2.point.Y.ToString(nfi) + "," + v2.point.Z.ToString(nfi) + |
259 | ">"; | ||
260 | String s3 = "<" + v3.point.X.ToString(nfi) + "," + v3.point.Y.ToString(nfi) + "," + v3.point.Z.ToString(nfi) + | ||
261 | ">"; | ||
265 | 262 | ||
266 | return s1 + ";" + s2 + ";" + s3; | 263 | return s1 + ";" + s2 + ";" + s3; |
267 | |||
268 | } | 264 | } |
269 | 265 | ||
270 | public PhysicsVector getNormal() | 266 | public PhysicsVector getNormal() |
@@ -281,12 +277,12 @@ public class Triangle | |||
281 | // Cross product for normal | 277 | // Cross product for normal |
282 | PhysicsVector n = new PhysicsVector(); | 278 | PhysicsVector n = new PhysicsVector(); |
283 | float nx, ny, nz; | 279 | float nx, ny, nz; |
284 | n.X = e1.Y * e2.Z - e1.Z * e2.Y; | 280 | n.X = e1.Y*e2.Z - e1.Z*e2.Y; |
285 | n.Y = e1.Z * e2.X - e1.X * e2.Z; | 281 | n.Y = e1.Z*e2.X - e1.X*e2.Z; |
286 | n.Z = e1.X * e2.Y - e1.Y * e2.X; | 282 | n.Z = e1.X*e2.Y - e1.Y*e2.X; |
287 | 283 | ||
288 | // Length | 284 | // Length |
289 | float l = (float)Math.Sqrt(n.X * n.X + n.Y * n.Y + n.Z * n.Z); | 285 | float l = (float) Math.Sqrt(n.X*n.X + n.Y*n.Y + n.Z*n.Z); |
290 | 286 | ||
291 | // Normalized "normal" | 287 | // Normalized "normal" |
292 | n.X /= l; | 288 | n.X /= l; |
@@ -303,6 +299,4 @@ public class Triangle | |||
303 | v1 = v2; | 299 | v1 = v2; |
304 | v2 = vt; | 300 | v2 = vt; |
305 | } | 301 | } |
306 | } | 302 | } \ No newline at end of file |
307 | |||
308 | |||
diff --git a/OpenSim/Region/Physics/OdePlugin/Meshing/Meshmerizer.cs b/OpenSim/Region/Physics/OdePlugin/Meshing/Meshmerizer.cs index dd18e24..46de15e 100644 --- a/OpenSim/Region/Physics/OdePlugin/Meshing/Meshmerizer.cs +++ b/OpenSim/Region/Physics/OdePlugin/Meshing/Meshmerizer.cs | |||
@@ -27,12 +27,8 @@ | |||
27 | */ | 27 | */ |
28 | 28 | ||
29 | using System; | 29 | using System; |
30 | using System.Globalization; | ||
31 | using System.Diagnostics; | ||
32 | using System.Collections.Generic; | 30 | using System.Collections.Generic; |
33 | using System.Text; | ||
34 | using System.Runtime.InteropServices; | 31 | using System.Runtime.InteropServices; |
35 | |||
36 | using OpenSim.Framework; | 32 | using OpenSim.Framework; |
37 | using OpenSim.Region.Physics.Manager; | 33 | using OpenSim.Region.Physics.Manager; |
38 | 34 | ||
@@ -75,14 +71,14 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
75 | 71 | ||
76 | public float[] getVertexListAsFloat() | 72 | public float[] getVertexListAsFloat() |
77 | { | 73 | { |
78 | float[] result = new float[vertices.Count * 3]; | 74 | float[] result = new float[vertices.Count*3]; |
79 | for (int i = 0; i < vertices.Count; i++) | 75 | for (int i = 0; i < vertices.Count; i++) |
80 | { | 76 | { |
81 | Vertex v = vertices[i]; | 77 | Vertex v = vertices[i]; |
82 | PhysicsVector point = v.point; | 78 | PhysicsVector point = v.point; |
83 | result[3 * i + 0] = point.X; | 79 | result[3*i + 0] = point.X; |
84 | result[3 * i + 1] = point.Y; | 80 | result[3*i + 1] = point.Y; |
85 | result[3 * i + 2] = point.Z; | 81 | result[3*i + 2] = point.Z; |
86 | } | 82 | } |
87 | GCHandle.Alloc(result, GCHandleType.Pinned); | 83 | GCHandle.Alloc(result, GCHandleType.Pinned); |
88 | return result; | 84 | return result; |
@@ -90,13 +86,13 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
90 | 86 | ||
91 | public int[] getIndexListAsInt() | 87 | public int[] getIndexListAsInt() |
92 | { | 88 | { |
93 | int[] result = new int[triangles.Count * 3]; | 89 | int[] result = new int[triangles.Count*3]; |
94 | for (int i = 0; i < triangles.Count; i++) | 90 | for (int i = 0; i < triangles.Count; i++) |
95 | { | 91 | { |
96 | Triangle t = triangles[i]; | 92 | Triangle t = triangles[i]; |
97 | result[3 * i + 0] = vertices.IndexOf(t.v1); | 93 | result[3*i + 0] = vertices.IndexOf(t.v1); |
98 | result[3 * i + 1] = vertices.IndexOf(t.v2); | 94 | result[3*i + 1] = vertices.IndexOf(t.v2); |
99 | result[3 * i + 2] = vertices.IndexOf(t.v3); | 95 | result[3*i + 2] = vertices.IndexOf(t.v3); |
100 | } | 96 | } |
101 | GCHandle.Alloc(result, GCHandleType.Pinned); | 97 | GCHandle.Alloc(result, GCHandleType.Pinned); |
102 | return result; | 98 | return result; |
@@ -110,16 +106,13 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
110 | 106 | ||
111 | foreach (Triangle t in newMesh.triangles) | 107 | foreach (Triangle t in newMesh.triangles) |
112 | Add(t); | 108 | Add(t); |
113 | |||
114 | } | 109 | } |
115 | } | 110 | } |
116 | 111 | ||
117 | 112 | ||
118 | |||
119 | public class Meshmerizer | 113 | public class Meshmerizer |
120 | { | 114 | { |
121 | 115 | private static List<Triangle> FindInfluencedTriangles(List<Triangle> triangles, Vertex v) | |
122 | static List<Triangle> FindInfluencedTriangles(List<Triangle> triangles, Vertex v) | ||
123 | { | 116 | { |
124 | List<Triangle> influenced = new List<Triangle>(); | 117 | List<Triangle> influenced = new List<Triangle>(); |
125 | foreach (Triangle t in triangles) | 118 | foreach (Triangle t in triangles) |
@@ -133,9 +126,10 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
133 | } | 126 | } |
134 | return influenced; | 127 | return influenced; |
135 | } | 128 | } |
136 | 129 | ||
137 | 130 | ||
138 | static void InsertVertices(List<Vertex> vertices, int usedForSeed, List<Triangle> triangles, List<int> innerBorders) | 131 | private static void InsertVertices(List<Vertex> vertices, int usedForSeed, List<Triangle> triangles, |
132 | List<int> innerBorders) | ||
139 | { | 133 | { |
140 | // This is a variant of the delaunay algorithm | 134 | // This is a variant of the delaunay algorithm |
141 | // each time a new vertex is inserted, all triangles that are influenced by it are deleted | 135 | // each time a new vertex is inserted, all triangles that are influenced by it are deleted |
@@ -143,7 +137,7 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
143 | // It is not very time efficient but easy to implement. | 137 | // It is not very time efficient but easy to implement. |
144 | 138 | ||
145 | int iCurrentVertex; | 139 | int iCurrentVertex; |
146 | int iMaxVertex=vertices.Count; | 140 | int iMaxVertex = vertices.Count; |
147 | for (iCurrentVertex = usedForSeed; iCurrentVertex < iMaxVertex; iCurrentVertex++) | 141 | for (iCurrentVertex = usedForSeed; iCurrentVertex < iMaxVertex; iCurrentVertex++) |
148 | { | 142 | { |
149 | // Background: A triangle mesh fulfills the delaunay condition if (iff!) | 143 | // Background: A triangle mesh fulfills the delaunay condition if (iff!) |
@@ -154,8 +148,8 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
154 | // do not fulfill this condition with respect to the new triangle | 148 | // do not fulfill this condition with respect to the new triangle |
155 | 149 | ||
156 | // Find the triangles that are influenced by the new vertex | 150 | // Find the triangles that are influenced by the new vertex |
157 | Vertex v=vertices[iCurrentVertex]; | 151 | Vertex v = vertices[iCurrentVertex]; |
158 | List<Triangle> influencedTriangles=FindInfluencedTriangles(triangles, v); | 152 | List<Triangle> influencedTriangles = FindInfluencedTriangles(triangles, v); |
159 | 153 | ||
160 | List<Simplex> simplices = new List<Simplex>(); | 154 | List<Simplex> simplices = new List<Simplex>(); |
161 | 155 | ||
@@ -175,10 +169,10 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
175 | // Look for duplicate simplices here. | 169 | // Look for duplicate simplices here. |
176 | // Remember, they are directly side by side in the list right now | 170 | // Remember, they are directly side by side in the list right now |
177 | int iSimplex; | 171 | int iSimplex; |
178 | List<Simplex> innerSimplices=new List<Simplex>(); | 172 | List<Simplex> innerSimplices = new List<Simplex>(); |
179 | for (iSimplex = 1; iSimplex < simplices.Count; iSimplex++) // Startindex=1, so we can refer backwards | 173 | for (iSimplex = 1; iSimplex < simplices.Count; iSimplex++) // Startindex=1, so we can refer backwards |
180 | { | 174 | { |
181 | if (simplices[iSimplex - 1].CompareTo(simplices[iSimplex])==0) | 175 | if (simplices[iSimplex - 1].CompareTo(simplices[iSimplex]) == 0) |
182 | { | 176 | { |
183 | innerSimplices.Add(simplices[iSimplex - 1]); | 177 | innerSimplices.Add(simplices[iSimplex - 1]); |
184 | innerSimplices.Add(simplices[iSimplex]); | 178 | innerSimplices.Add(simplices[iSimplex]); |
@@ -187,7 +181,7 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
187 | 181 | ||
188 | foreach (Simplex s in innerSimplices) | 182 | foreach (Simplex s in innerSimplices) |
189 | { | 183 | { |
190 | simplices.Remove(s); | 184 | simplices.Remove(s); |
191 | } | 185 | } |
192 | 186 | ||
193 | // each simplex still in the list belongs to the hull of the region in question | 187 | // each simplex still in the list belongs to the hull of the region in question |
@@ -210,7 +204,7 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
210 | foreach (Triangle t in triangles) | 204 | foreach (Triangle t in triangles) |
211 | { | 205 | { |
212 | if ( | 206 | if ( |
213 | innerBorders.Contains(vertices.IndexOf(t.v1)) | 207 | innerBorders.Contains(vertices.IndexOf(t.v1)) |
214 | && innerBorders.Contains(vertices.IndexOf(t.v2)) | 208 | && innerBorders.Contains(vertices.IndexOf(t.v2)) |
215 | && innerBorders.Contains(vertices.IndexOf(t.v3)) | 209 | && innerBorders.Contains(vertices.IndexOf(t.v3)) |
216 | ) | 210 | ) |
@@ -223,18 +217,18 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
223 | } | 217 | } |
224 | 218 | ||
225 | 219 | ||
226 | static Mesh CreateBoxMeshX(PrimitiveBaseShape primShape, PhysicsVector size) | 220 | private static Mesh CreateBoxMeshX(PrimitiveBaseShape primShape, PhysicsVector size) |
227 | // Builds the x (+ and -) surfaces of a box shaped prim | 221 | // Builds the x (+ and -) surfaces of a box shaped prim |
228 | { | 222 | { |
229 | UInt16 hollowFactor = primShape.ProfileHollow; | 223 | UInt16 hollowFactor = primShape.ProfileHollow; |
230 | Mesh meshMX = new Mesh(); | 224 | Mesh meshMX = new Mesh(); |
231 | 225 | ||
232 | 226 | ||
233 | // Surface 0, -X | 227 | // Surface 0, -X |
234 | meshMX.Add(new Vertex("-X-Y-Z", -size.X / 2.0f, -size.Y / 2.0f, -size.Z / 2.0f)); | 228 | meshMX.Add(new Vertex("-X-Y-Z", -size.X/2.0f, -size.Y/2.0f, -size.Z/2.0f)); |
235 | meshMX.Add(new Vertex("-X+Y-Z", -size.X / 2.0f, +size.Y / 2.0f, -size.Z / 2.0f)); | 229 | meshMX.Add(new Vertex("-X+Y-Z", -size.X/2.0f, +size.Y/2.0f, -size.Z/2.0f)); |
236 | meshMX.Add(new Vertex("-X-Y+Z", -size.X / 2.0f, -size.Y / 2.0f, +size.Z / 2.0f)); | 230 | meshMX.Add(new Vertex("-X-Y+Z", -size.X/2.0f, -size.Y/2.0f, +size.Z/2.0f)); |
237 | meshMX.Add(new Vertex("-X+Y+Z", -size.X / 2.0f, +size.Y / 2.0f, +size.Z / 2.0f)); | 231 | meshMX.Add(new Vertex("-X+Y+Z", -size.X/2.0f, +size.Y/2.0f, +size.Z/2.0f)); |
238 | 232 | ||
239 | meshMX.Add(new Triangle(meshMX.vertices[0], meshMX.vertices[2], meshMX.vertices[1])); | 233 | meshMX.Add(new Triangle(meshMX.vertices[0], meshMX.vertices[2], meshMX.vertices[1])); |
240 | meshMX.Add(new Triangle(meshMX.vertices[1], meshMX.vertices[2], meshMX.vertices[3])); | 234 | meshMX.Add(new Triangle(meshMX.vertices[1], meshMX.vertices[2], meshMX.vertices[3])); |
@@ -242,10 +236,10 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
242 | 236 | ||
243 | Mesh meshPX = new Mesh(); | 237 | Mesh meshPX = new Mesh(); |
244 | // Surface 1, +X | 238 | // Surface 1, +X |
245 | meshPX.Add(new Vertex("+X-Y-Z", +size.X / 2.0f, -size.Y / 2.0f, -size.Z / 2.0f)); | 239 | meshPX.Add(new Vertex("+X-Y-Z", +size.X/2.0f, -size.Y/2.0f, -size.Z/2.0f)); |
246 | meshPX.Add(new Vertex("+X+Y-Z", +size.X / 2.0f, +size.Y / 2.0f, -size.Z / 2.0f)); | 240 | meshPX.Add(new Vertex("+X+Y-Z", +size.X/2.0f, +size.Y/2.0f, -size.Z/2.0f)); |
247 | meshPX.Add(new Vertex("+X-Y+Z", +size.X / 2.0f, -size.Y / 2.0f, +size.Z / 2.0f)); | 241 | meshPX.Add(new Vertex("+X-Y+Z", +size.X/2.0f, -size.Y/2.0f, +size.Z/2.0f)); |
248 | meshPX.Add(new Vertex("+X+Y+Z", +size.X / 2.0f, +size.Y / 2.0f, +size.Z / 2.0f)); | 242 | meshPX.Add(new Vertex("+X+Y+Z", +size.X/2.0f, +size.Y/2.0f, +size.Z/2.0f)); |
249 | 243 | ||
250 | 244 | ||
251 | meshPX.Add(new Triangle(meshPX.vertices[0], meshPX.vertices[1], meshPX.vertices[2])); | 245 | meshPX.Add(new Triangle(meshPX.vertices[0], meshPX.vertices[1], meshPX.vertices[2])); |
@@ -254,17 +248,17 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
254 | 248 | ||
255 | if (hollowFactor > 0) | 249 | if (hollowFactor > 0) |
256 | { | 250 | { |
257 | float hollowFactorF = (float)hollowFactor / (float)50000; | 251 | float hollowFactorF = (float) hollowFactor/(float) 50000; |
258 | 252 | ||
259 | Vertex IPP; | 253 | Vertex IPP; |
260 | Vertex IPM; | 254 | Vertex IPM; |
261 | Vertex IMP; | 255 | Vertex IMP; |
262 | Vertex IMM; | 256 | Vertex IMM; |
263 | 257 | ||
264 | IPP = new Vertex("Inner-X+Y+Z", -size.X * hollowFactorF / 2.0f, +size.Y * hollowFactorF / 2.0f, +size.Z / 2.0f); | 258 | IPP = new Vertex("Inner-X+Y+Z", -size.X*hollowFactorF/2.0f, +size.Y*hollowFactorF/2.0f, +size.Z/2.0f); |
265 | IPM = new Vertex("Inner-X+Y-Z", -size.X * hollowFactorF / 2.0f, +size.Y * hollowFactorF / 2.0f, -size.Z / 2.0f); | 259 | IPM = new Vertex("Inner-X+Y-Z", -size.X*hollowFactorF/2.0f, +size.Y*hollowFactorF/2.0f, -size.Z/2.0f); |
266 | IMP = new Vertex("Inner-X-Y+Z", -size.X * hollowFactorF / 2.0f, -size.Y * hollowFactorF / 2.0f, +size.Z / 2.0f); | 260 | IMP = new Vertex("Inner-X-Y+Z", -size.X*hollowFactorF/2.0f, -size.Y*hollowFactorF/2.0f, +size.Z/2.0f); |
267 | IMM = new Vertex("Inner-X-Y-Z", -size.X * hollowFactorF / 2.0f, -size.Y * hollowFactorF / 2.0f, -size.Z / 2.0f); | 261 | IMM = new Vertex("Inner-X-Y-Z", -size.X*hollowFactorF/2.0f, -size.Y*hollowFactorF/2.0f, -size.Z/2.0f); |
268 | 262 | ||
269 | meshMX.Add(IPP); | 263 | meshMX.Add(IPP); |
270 | meshMX.Add(IPM); | 264 | meshMX.Add(IPM); |
@@ -280,11 +274,10 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
280 | } | 274 | } |
281 | 275 | ||
282 | 276 | ||
283 | 277 | IPP = new Vertex("Inner+X+Y+Z", +size.X*hollowFactorF/2.0f, +size.Y*hollowFactorF/2.0f, +size.Z/2.0f); | |
284 | IPP = new Vertex("Inner+X+Y+Z", +size.X * hollowFactorF / 2.0f, +size.Y * hollowFactorF / 2.0f, +size.Z / 2.0f); | 278 | IPM = new Vertex("Inner+X+Y-Z", +size.X*hollowFactorF/2.0f, +size.Y*hollowFactorF/2.0f, -size.Z/2.0f); |
285 | IPM = new Vertex("Inner+X+Y-Z", +size.X * hollowFactorF / 2.0f, +size.Y * hollowFactorF / 2.0f, -size.Z / 2.0f); | 279 | IMP = new Vertex("Inner+X-Y+Z", +size.X*hollowFactorF/2.0f, -size.Y*hollowFactorF/2.0f, +size.Z/2.0f); |
286 | IMP = new Vertex("Inner+X-Y+Z", +size.X * hollowFactorF / 2.0f, -size.Y * hollowFactorF / 2.0f, +size.Z / 2.0f); | 280 | IMM = new Vertex("Inner+X-Y-Z", +size.X*hollowFactorF/2.0f, -size.Y*hollowFactorF/2.0f, -size.Z/2.0f); |
287 | IMM = new Vertex("Inner+X-Y-Z", +size.X * hollowFactorF / 2.0f, -size.Y * hollowFactorF / 2.0f, -size.Z / 2.0f); | ||
288 | 281 | ||
289 | meshPX.Add(IPP); | 282 | meshPX.Add(IPP); |
290 | meshPX.Add(IPM); | 283 | meshPX.Add(IPM); |
@@ -308,18 +301,17 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
308 | } | 301 | } |
309 | 302 | ||
310 | 303 | ||
311 | 304 | private static Mesh CreateBoxMeshY(PrimitiveBaseShape primShape, PhysicsVector size) | |
312 | static Mesh CreateBoxMeshY(PrimitiveBaseShape primShape, PhysicsVector size) | 305 | // Builds the y (+ and -) surfaces of a box shaped prim |
313 | // Builds the y (+ and -) surfaces of a box shaped prim | ||
314 | { | 306 | { |
315 | UInt16 hollowFactor = primShape.ProfileHollow; | 307 | UInt16 hollowFactor = primShape.ProfileHollow; |
316 | 308 | ||
317 | // (M)inus Y | 309 | // (M)inus Y |
318 | Mesh MeshMY = new Mesh(); | 310 | Mesh MeshMY = new Mesh(); |
319 | MeshMY.Add(new Vertex("-X-Y-Z", -size.X / 2.0f, -size.Y / 2.0f, -size.Z / 2.0f)); | 311 | MeshMY.Add(new Vertex("-X-Y-Z", -size.X/2.0f, -size.Y/2.0f, -size.Z/2.0f)); |
320 | MeshMY.Add(new Vertex("+X-Y-Z", +size.X / 2.0f, -size.Y / 2.0f, -size.Z / 2.0f)); | 312 | MeshMY.Add(new Vertex("+X-Y-Z", +size.X/2.0f, -size.Y/2.0f, -size.Z/2.0f)); |
321 | MeshMY.Add(new Vertex("-X-Y+Z", -size.X / 2.0f, -size.Y / 2.0f, +size.Z / 2.0f)); | 313 | MeshMY.Add(new Vertex("-X-Y+Z", -size.X/2.0f, -size.Y/2.0f, +size.Z/2.0f)); |
322 | MeshMY.Add(new Vertex("+X-Y+Z", +size.X / 2.0f, -size.Y / 2.0f, +size.Z / 2.0f)); | 314 | MeshMY.Add(new Vertex("+X-Y+Z", +size.X/2.0f, -size.Y/2.0f, +size.Z/2.0f)); |
323 | 315 | ||
324 | MeshMY.Add(new Triangle(MeshMY.vertices[0], MeshMY.vertices[1], MeshMY.vertices[2])); | 316 | MeshMY.Add(new Triangle(MeshMY.vertices[0], MeshMY.vertices[1], MeshMY.vertices[2])); |
325 | MeshMY.Add(new Triangle(MeshMY.vertices[2], MeshMY.vertices[1], MeshMY.vertices[3])); | 317 | MeshMY.Add(new Triangle(MeshMY.vertices[2], MeshMY.vertices[1], MeshMY.vertices[3])); |
@@ -327,27 +319,27 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
327 | // (P)lus Y | 319 | // (P)lus Y |
328 | Mesh MeshPY = new Mesh(); | 320 | Mesh MeshPY = new Mesh(); |
329 | 321 | ||
330 | MeshPY.Add(new Vertex("-X+Y-Z", -size.X / 2.0f, +size.Y / 2.0f, -size.Z / 2.0f)); | 322 | MeshPY.Add(new Vertex("-X+Y-Z", -size.X/2.0f, +size.Y/2.0f, -size.Z/2.0f)); |
331 | MeshPY.Add(new Vertex("+X+Y-Z", +size.X / 2.0f, +size.Y / 2.0f, -size.Z / 2.0f)); | 323 | MeshPY.Add(new Vertex("+X+Y-Z", +size.X/2.0f, +size.Y/2.0f, -size.Z/2.0f)); |
332 | MeshPY.Add(new Vertex("-X+Y+Z", -size.X / 2.0f, +size.Y / 2.0f, +size.Z / 2.0f)); | 324 | MeshPY.Add(new Vertex("-X+Y+Z", -size.X/2.0f, +size.Y/2.0f, +size.Z/2.0f)); |
333 | MeshPY.Add(new Vertex("+X+Y+Z", +size.X / 2.0f, +size.Y / 2.0f, +size.Z / 2.0f)); | 325 | MeshPY.Add(new Vertex("+X+Y+Z", +size.X/2.0f, +size.Y/2.0f, +size.Z/2.0f)); |
334 | 326 | ||
335 | MeshPY.Add(new Triangle(MeshPY.vertices[1], MeshPY.vertices[0], MeshPY.vertices[2])); | 327 | MeshPY.Add(new Triangle(MeshPY.vertices[1], MeshPY.vertices[0], MeshPY.vertices[2])); |
336 | MeshPY.Add(new Triangle(MeshPY.vertices[1], MeshPY.vertices[2], MeshPY.vertices[3])); | 328 | MeshPY.Add(new Triangle(MeshPY.vertices[1], MeshPY.vertices[2], MeshPY.vertices[3])); |
337 | 329 | ||
338 | if (hollowFactor > 0) | 330 | if (hollowFactor > 0) |
339 | { | 331 | { |
340 | float hollowFactorF = (float)hollowFactor / (float)50000; | 332 | float hollowFactorF = (float) hollowFactor/(float) 50000; |
341 | 333 | ||
342 | Vertex IPP; | 334 | Vertex IPP; |
343 | Vertex IPM; | 335 | Vertex IPM; |
344 | Vertex IMP; | 336 | Vertex IMP; |
345 | Vertex IMM; | 337 | Vertex IMM; |
346 | 338 | ||
347 | IPP = new Vertex("Inner+X-Y+Z", +size.X * hollowFactorF / 2.0f, -size.Y * hollowFactorF / 2.0f, +size.Z / 2.0f); | 339 | IPP = new Vertex("Inner+X-Y+Z", +size.X*hollowFactorF/2.0f, -size.Y*hollowFactorF/2.0f, +size.Z/2.0f); |
348 | IPM = new Vertex("Inner+X-Y-Z", +size.X * hollowFactorF / 2.0f, -size.Y * hollowFactorF / 2.0f, -size.Z / 2.0f); | 340 | IPM = new Vertex("Inner+X-Y-Z", +size.X*hollowFactorF/2.0f, -size.Y*hollowFactorF/2.0f, -size.Z/2.0f); |
349 | IMP = new Vertex("Inner-X-Y+Z", -size.X * hollowFactorF / 2.0f, -size.Y * hollowFactorF / 2.0f, +size.Z / 2.0f); | 341 | IMP = new Vertex("Inner-X-Y+Z", -size.X*hollowFactorF/2.0f, -size.Y*hollowFactorF/2.0f, +size.Z/2.0f); |
350 | IMM = new Vertex("Inner-X-Y-Z", -size.X * hollowFactorF / 2.0f, -size.Y * hollowFactorF / 2.0f, -size.Z / 2.0f); | 342 | IMM = new Vertex("Inner-X-Y-Z", -size.X*hollowFactorF/2.0f, -size.Y*hollowFactorF/2.0f, -size.Z/2.0f); |
351 | 343 | ||
352 | MeshMY.Add(IPP); | 344 | MeshMY.Add(IPP); |
353 | MeshMY.Add(IPM); | 345 | MeshMY.Add(IPM); |
@@ -363,11 +355,10 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
363 | } | 355 | } |
364 | 356 | ||
365 | 357 | ||
366 | 358 | IPP = new Vertex("Inner+X+Y+Z", +size.X*hollowFactorF/2.0f, +size.Y*hollowFactorF/2.0f, +size.Z/2.0f); | |
367 | IPP = new Vertex("Inner+X+Y+Z", +size.X * hollowFactorF / 2.0f, +size.Y * hollowFactorF / 2.0f, +size.Z / 2.0f); | 359 | IPM = new Vertex("Inner+X+Y-Z", +size.X*hollowFactorF/2.0f, +size.Y*hollowFactorF/2.0f, -size.Z/2.0f); |
368 | IPM=new Vertex("Inner+X+Y-Z", +size.X * hollowFactorF / 2.0f, +size.Y * hollowFactorF / 2.0f, -size.Z / 2.0f); | 360 | IMP = new Vertex("Inner-X+Y+Z", -size.X*hollowFactorF/2.0f, +size.Y*hollowFactorF/2.0f, +size.Z/2.0f); |
369 | IMP=new Vertex("Inner-X+Y+Z", -size.X * hollowFactorF / 2.0f, +size.Y * hollowFactorF / 2.0f, +size.Z / 2.0f); | 361 | IMM = new Vertex("Inner-X+Y-Z", -size.X*hollowFactorF/2.0f, +size.Y*hollowFactorF/2.0f, -size.Z/2.0f); |
370 | IMM=new Vertex("Inner-X+Y-Z", -size.X * hollowFactorF / 2.0f, +size.Y * hollowFactorF / 2.0f, -size.Z / 2.0f); | ||
371 | 362 | ||
372 | MeshPY.Add(IPP); | 363 | MeshPY.Add(IPP); |
373 | MeshPY.Add(IPM); | 364 | MeshPY.Add(IPM); |
@@ -381,9 +372,6 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
381 | { | 372 | { |
382 | PhysicsVector n = t.getNormal(); | 373 | PhysicsVector n = t.getNormal(); |
383 | } | 374 | } |
384 | |||
385 | |||
386 | |||
387 | } | 375 | } |
388 | 376 | ||
389 | 377 | ||
@@ -393,9 +381,9 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
393 | 381 | ||
394 | return result; | 382 | return result; |
395 | } | 383 | } |
396 | 384 | ||
397 | static Mesh CreateBoxMeshZ(PrimitiveBaseShape primShape, PhysicsVector size) | 385 | private static Mesh CreateBoxMeshZ(PrimitiveBaseShape primShape, PhysicsVector size) |
398 | // Builds the z (+ and -) surfaces of a box shaped prim | 386 | // Builds the z (+ and -) surfaces of a box shaped prim |
399 | { | 387 | { |
400 | UInt16 hollowFactor = primShape.ProfileHollow; | 388 | UInt16 hollowFactor = primShape.ProfileHollow; |
401 | 389 | ||
@@ -403,10 +391,10 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
403 | // (M)inus Z | 391 | // (M)inus Z |
404 | Mesh MZ = new Mesh(); | 392 | Mesh MZ = new Mesh(); |
405 | 393 | ||
406 | MZ.Add(new Vertex("-X-Y-Z", -size.X / 2.0f, -size.Y / 2.0f, -size.Z / 2.0f)); | 394 | MZ.Add(new Vertex("-X-Y-Z", -size.X/2.0f, -size.Y/2.0f, -size.Z/2.0f)); |
407 | MZ.Add(new Vertex("+X-Y-Z", +size.X / 2.0f, -size.Y / 2.0f, -size.Z / 2.0f)); | 395 | MZ.Add(new Vertex("+X-Y-Z", +size.X/2.0f, -size.Y/2.0f, -size.Z/2.0f)); |
408 | MZ.Add(new Vertex("-X+Y-Z", -size.X / 2.0f, +size.Y / 2.0f, -size.Z / 2.0f)); | 396 | MZ.Add(new Vertex("-X+Y-Z", -size.X/2.0f, +size.Y/2.0f, -size.Z/2.0f)); |
409 | MZ.Add(new Vertex("+X+Y-Z", +size.X / 2.0f, +size.Y / 2.0f, -size.Z / 2.0f)); | 397 | MZ.Add(new Vertex("+X+Y-Z", +size.X/2.0f, +size.Y/2.0f, -size.Z/2.0f)); |
410 | 398 | ||
411 | 399 | ||
412 | MZ.Add(new Triangle(MZ.vertices[1], MZ.vertices[0], MZ.vertices[2])); | 400 | MZ.Add(new Triangle(MZ.vertices[1], MZ.vertices[0], MZ.vertices[2])); |
@@ -415,10 +403,10 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
415 | // (P)lus Z | 403 | // (P)lus Z |
416 | Mesh PZ = new Mesh(); | 404 | Mesh PZ = new Mesh(); |
417 | 405 | ||
418 | PZ.Add(new Vertex("-X-Y+Z", -size.X / 2.0f, -size.Y / 2.0f, 0.0f)); | 406 | PZ.Add(new Vertex("-X-Y+Z", -size.X/2.0f, -size.Y/2.0f, 0.0f)); |
419 | PZ.Add(new Vertex("+X-Y+Z", +size.X / 2.0f, -size.Y / 2.0f, 0.0f)); | 407 | PZ.Add(new Vertex("+X-Y+Z", +size.X/2.0f, -size.Y/2.0f, 0.0f)); |
420 | PZ.Add(new Vertex("-X+Y+Z", -size.X / 2.0f, +size.Y / 2.0f, 0.0f)); | 408 | PZ.Add(new Vertex("-X+Y+Z", -size.X/2.0f, +size.Y/2.0f, 0.0f)); |
421 | PZ.Add(new Vertex("+X+Y+Z", +size.X / 2.0f, +size.Y / 2.0f, 0.0f)); | 409 | PZ.Add(new Vertex("+X+Y+Z", +size.X/2.0f, +size.Y/2.0f, 0.0f)); |
422 | 410 | ||
423 | // Surface 5, +Z | 411 | // Surface 5, +Z |
424 | PZ.Add(new Triangle(PZ.vertices[0], PZ.vertices[1], PZ.vertices[2])); | 412 | PZ.Add(new Triangle(PZ.vertices[0], PZ.vertices[1], PZ.vertices[2])); |
@@ -426,12 +414,12 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
426 | 414 | ||
427 | if (hollowFactor > 0) | 415 | if (hollowFactor > 0) |
428 | { | 416 | { |
429 | float hollowFactorF = (float)hollowFactor / (float)50000; | 417 | float hollowFactorF = (float) hollowFactor/(float) 50000; |
430 | 418 | ||
431 | MZ.Add(new Vertex("-X-Y-Z", -size.X * hollowFactorF / 2.0f, -size.Y * hollowFactorF / 2.0f, 0.0f)); | 419 | MZ.Add(new Vertex("-X-Y-Z", -size.X*hollowFactorF/2.0f, -size.Y*hollowFactorF/2.0f, 0.0f)); |
432 | MZ.Add(new Vertex("-X+Y-Z", +size.X * hollowFactorF / 2.0f, -size.Y * hollowFactorF / 2.0f, 0.0f)); | 420 | MZ.Add(new Vertex("-X+Y-Z", +size.X*hollowFactorF/2.0f, -size.Y*hollowFactorF/2.0f, 0.0f)); |
433 | MZ.Add(new Vertex("-X-Y+Z", -size.X * hollowFactorF / 2.0f, +size.Y * hollowFactorF / 2.0f, 0.0f)); | 421 | MZ.Add(new Vertex("-X-Y+Z", -size.X*hollowFactorF/2.0f, +size.Y*hollowFactorF/2.0f, 0.0f)); |
434 | MZ.Add(new Vertex("-X+Y+Z", +size.X * hollowFactorF / 2.0f, +size.Y * hollowFactorF / 2.0f, 0.0f)); | 422 | MZ.Add(new Vertex("-X+Y+Z", +size.X*hollowFactorF/2.0f, +size.Y*hollowFactorF/2.0f, 0.0f)); |
435 | 423 | ||
436 | List<int> innerBorders = new List<int>(); | 424 | List<int> innerBorders = new List<int>(); |
437 | innerBorders.Add(4); | 425 | innerBorders.Add(4); |
@@ -441,10 +429,10 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
441 | 429 | ||
442 | InsertVertices(MZ.vertices, 4, MZ.triangles, innerBorders); | 430 | InsertVertices(MZ.vertices, 4, MZ.triangles, innerBorders); |
443 | 431 | ||
444 | PZ.Add(new Vertex("-X-Y-Z", -size.X * hollowFactorF / 2.0f, -size.Y * hollowFactorF / 2.0f, 0.0f)); | 432 | PZ.Add(new Vertex("-X-Y-Z", -size.X*hollowFactorF/2.0f, -size.Y*hollowFactorF/2.0f, 0.0f)); |
445 | PZ.Add(new Vertex("-X+Y-Z", +size.X * hollowFactorF / 2.0f, -size.Y * hollowFactorF / 2.0f, 0.0f)); | 433 | PZ.Add(new Vertex("-X+Y-Z", +size.X*hollowFactorF/2.0f, -size.Y*hollowFactorF/2.0f, 0.0f)); |
446 | PZ.Add(new Vertex("-X-Y+Z", -size.X * hollowFactorF / 2.0f, +size.Y * hollowFactorF / 2.0f, 0.0f)); | 434 | PZ.Add(new Vertex("-X-Y+Z", -size.X*hollowFactorF/2.0f, +size.Y*hollowFactorF/2.0f, 0.0f)); |
447 | PZ.Add(new Vertex("-X+Y+Z", +size.X * hollowFactorF / 2.0f, +size.Y * hollowFactorF / 2.0f, 0.0f)); | 435 | PZ.Add(new Vertex("-X+Y+Z", +size.X*hollowFactorF/2.0f, +size.Y*hollowFactorF/2.0f, 0.0f)); |
448 | 436 | ||
449 | innerBorders = new List<int>(); | 437 | innerBorders = new List<int>(); |
450 | innerBorders.Add(4); | 438 | innerBorders.Add(4); |
@@ -453,16 +441,15 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
453 | innerBorders.Add(7); | 441 | innerBorders.Add(7); |
454 | 442 | ||
455 | InsertVertices(PZ.vertices, 4, PZ.triangles, innerBorders); | 443 | InsertVertices(PZ.vertices, 4, PZ.triangles, innerBorders); |
456 | |||
457 | } | 444 | } |
458 | 445 | ||
459 | foreach (Vertex v in PZ.vertices) | 446 | foreach (Vertex v in PZ.vertices) |
460 | { | 447 | { |
461 | v.point.Z = size.Z / 2.0f; | 448 | v.point.Z = size.Z/2.0f; |
462 | } | 449 | } |
463 | foreach (Vertex v in MZ.vertices) | 450 | foreach (Vertex v in MZ.vertices) |
464 | { | 451 | { |
465 | v.point.Z = -size.Z / 2.0f; | 452 | v.point.Z = -size.Z/2.0f; |
466 | } | 453 | } |
467 | 454 | ||
468 | foreach (Triangle t in MZ.triangles) | 455 | foreach (Triangle t in MZ.triangles) |
@@ -486,15 +473,14 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
486 | return result; | 473 | return result; |
487 | } | 474 | } |
488 | 475 | ||
489 | static Mesh CreateBoxMesh(PrimitiveBaseShape primShape, PhysicsVector size) | 476 | private static Mesh CreateBoxMesh(PrimitiveBaseShape primShape, PhysicsVector size) |
490 | { | 477 | { |
491 | Mesh result = new Mesh(); | 478 | Mesh result = new Mesh(); |
492 | 479 | ||
493 | 480 | ||
494 | 481 | Mesh MeshX = CreateBoxMeshX(primShape, size); | |
495 | Mesh MeshX = Meshmerizer.CreateBoxMeshX(primShape, size); | 482 | Mesh MeshY = CreateBoxMeshY(primShape, size); |
496 | Mesh MeshY = Meshmerizer.CreateBoxMeshY(primShape, size); | 483 | Mesh MeshZ = CreateBoxMeshZ(primShape, size); |
497 | Mesh MeshZ = Meshmerizer.CreateBoxMeshZ(primShape, size); | ||
498 | 484 | ||
499 | result.Append(MeshX); | 485 | result.Append(MeshX); |
500 | result.Append(MeshY); | 486 | result.Append(MeshY); |
@@ -504,64 +490,63 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
504 | } | 490 | } |
505 | 491 | ||
506 | 492 | ||
507 | public static void CalcNormals(Mesh mesh) | 493 | public static void CalcNormals(Mesh mesh) |
508 | { | 494 | { |
509 | int iTriangles = mesh.triangles.Count; | 495 | int iTriangles = mesh.triangles.Count; |
510 | 496 | ||
511 | mesh.normals = new float[iTriangles*3]; | 497 | mesh.normals = new float[iTriangles*3]; |
512 | 498 | ||
513 | int i=0; | 499 | int i = 0; |
514 | foreach (Triangle t in mesh.triangles) | 500 | foreach (Triangle t in mesh.triangles) |
515 | { | 501 | { |
516 | |||
517 | float ux, uy, uz; | 502 | float ux, uy, uz; |
518 | float vx, vy, vz; | 503 | float vx, vy, vz; |
519 | float wx, wy, wz; | 504 | float wx, wy, wz; |
520 | 505 | ||
521 | ux = t.v1.point.X; | 506 | ux = t.v1.point.X; |
522 | uy = t.v1.point.Y; | 507 | uy = t.v1.point.Y; |
523 | uz = t.v1.point.Z; | 508 | uz = t.v1.point.Z; |
524 | 509 | ||
525 | vx = t.v2.point.X; | 510 | vx = t.v2.point.X; |
526 | vy = t.v2.point.Y; | 511 | vy = t.v2.point.Y; |
527 | vz = t.v2.point.Z; | 512 | vz = t.v2.point.Z; |
528 | 513 | ||
529 | wx = t.v3.point.X; | 514 | wx = t.v3.point.X; |
530 | wy = t.v3.point.Y; | 515 | wy = t.v3.point.Y; |
531 | wz = t.v3.point.Z; | 516 | wz = t.v3.point.Z; |
532 | 517 | ||
533 | // Vectors for edges | 518 | // Vectors for edges |
534 | float e1x, e1y, e1z; | 519 | float e1x, e1y, e1z; |
535 | float e2x, e2y, e2z; | 520 | float e2x, e2y, e2z; |
536 | 521 | ||
537 | e1x = ux - vx; | 522 | e1x = ux - vx; |
538 | e1y = uy - vy; | 523 | e1y = uy - vy; |
539 | e1z = uz - vz; | 524 | e1z = uz - vz; |
540 | 525 | ||
541 | e2x = ux - wx; | 526 | e2x = ux - wx; |
542 | e2y = uy - wy; | 527 | e2y = uy - wy; |
543 | e2z = uz - wz; | 528 | e2z = uz - wz; |
544 | 529 | ||
545 | 530 | ||
546 | // Cross product for normal | 531 | // Cross product for normal |
547 | float nx, ny, nz; | 532 | float nx, ny, nz; |
548 | nx = e1y * e2z - e1z * e2y; | 533 | nx = e1y*e2z - e1z*e2y; |
549 | ny = e1z * e2x - e1x * e2z; | 534 | ny = e1z*e2x - e1x*e2z; |
550 | nz = e1x * e2y - e1y * e2x; | 535 | nz = e1x*e2y - e1y*e2x; |
551 | 536 | ||
552 | // Length | 537 | // Length |
553 | float l = (float)Math.Sqrt(nx * nx + ny * ny + nz * nz); | 538 | float l = (float) Math.Sqrt(nx*nx + ny*ny + nz*nz); |
554 | 539 | ||
555 | // Normalized "normal" | 540 | // Normalized "normal" |
556 | nx /= l; | 541 | nx /= l; |
557 | ny /= l; | 542 | ny /= l; |
558 | nz /= l; | 543 | nz /= l; |
559 | 544 | ||
560 | mesh.normals[i] = nx; | 545 | mesh.normals[i] = nx; |
561 | mesh.normals[i + 1] = ny; | 546 | mesh.normals[i + 1] = ny; |
562 | mesh.normals[i + 2] = nz; | 547 | mesh.normals[i + 2] = nz; |
563 | 548 | ||
564 | i+=3; | 549 | i += 3; |
565 | } | 550 | } |
566 | } | 551 | } |
567 | 552 | ||
@@ -572,18 +557,15 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
572 | switch (primShape.ProfileShape) | 557 | switch (primShape.ProfileShape) |
573 | { | 558 | { |
574 | case ProfileShape.Square: | 559 | case ProfileShape.Square: |
575 | mesh=CreateBoxMesh(primShape, size); | 560 | mesh = CreateBoxMesh(primShape, size); |
576 | CalcNormals(mesh); | 561 | CalcNormals(mesh); |
577 | break; | 562 | break; |
578 | default: | 563 | default: |
579 | mesh=null; | 564 | mesh = null; |
580 | break; | 565 | break; |
581 | } | 566 | } |
582 | 567 | ||
583 | return mesh; | 568 | return mesh; |
584 | |||
585 | } | 569 | } |
586 | } | 570 | } |
587 | } | 571 | } \ No newline at end of file |
588 | |||
589 | |||
diff --git a/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs b/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs index a20452f..c9af6dd 100644 --- a/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs +++ b/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs | |||
@@ -25,19 +25,14 @@ | |||
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 | |||
28 | using System; | 29 | using System; |
29 | using System.Threading; | ||
30 | using System.Collections.Generic; | 30 | using System.Collections.Generic; |
31 | |||
32 | using libsecondlife; | ||
33 | |||
34 | using Axiom.Math; | 31 | using Axiom.Math; |
35 | using Ode.NET; | 32 | using Ode.NET; |
36 | using OpenSim.Framework; | 33 | using OpenSim.Framework; |
37 | using OpenSim.Framework.Console; | ||
38 | using OpenSim.Region.Physics.Manager; | 34 | using OpenSim.Region.Physics.Manager; |
39 | 35 | ||
40 | |||
41 | namespace OpenSim.Region.Physics.OdePlugin | 36 | namespace OpenSim.Region.Physics.OdePlugin |
42 | { | 37 | { |
43 | /// <summary> | 38 | /// <summary> |
@@ -49,7 +44,6 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
49 | 44 | ||
50 | public OdePlugin() | 45 | public OdePlugin() |
51 | { | 46 | { |
52 | |||
53 | } | 47 | } |
54 | 48 | ||
55 | public bool Init() | 49 | public bool Init() |
@@ -73,7 +67,6 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
73 | 67 | ||
74 | public void Dispose() | 68 | public void Dispose() |
75 | { | 69 | { |
76 | |||
77 | } | 70 | } |
78 | } | 71 | } |
79 | 72 | ||
@@ -82,17 +75,17 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
82 | private static float ODE_STEPSIZE = 0.004f; | 75 | private static float ODE_STEPSIZE = 0.004f; |
83 | private static bool RENDER_FLAG = false; | 76 | private static bool RENDER_FLAG = false; |
84 | private IntPtr contactgroup; | 77 | private IntPtr contactgroup; |
85 | private IntPtr LandGeom=(IntPtr)0; | 78 | private IntPtr LandGeom = (IntPtr) 0; |
86 | private double[] _heightmap; | 79 | private double[] _heightmap; |
87 | private d.NearCallback nearCallback; | 80 | private d.NearCallback nearCallback; |
88 | public d.TriCallback triCallback; | 81 | public d.TriCallback triCallback; |
89 | public d.TriArrayCallback triArrayCallback; | 82 | public d.TriArrayCallback triArrayCallback; |
90 | private List<OdeCharacter> _characters = new List<OdeCharacter>(); | 83 | private List<OdeCharacter> _characters = new List<OdeCharacter>(); |
91 | private List<OdePrim> _prims = new List<OdePrim>(); | 84 | private List<OdePrim> _prims = new List<OdePrim>(); |
92 | public Dictionary<IntPtr, String> geom_name_map=new Dictionary<IntPtr, String>(); | 85 | public Dictionary<IntPtr, String> geom_name_map = new Dictionary<IntPtr, String>(); |
93 | private d.ContactGeom[] contacts = new d.ContactGeom[30]; | 86 | private d.ContactGeom[] contacts = new d.ContactGeom[30]; |
94 | private d.Contact contact; | 87 | private d.Contact contact; |
95 | private float step_time=0.0f; | 88 | private float step_time = 0.0f; |
96 | public IntPtr world; | 89 | public IntPtr world; |
97 | public IntPtr space; | 90 | public IntPtr space; |
98 | public static Object OdeLock = new Object(); | 91 | public static Object OdeLock = new Object(); |
@@ -140,7 +133,7 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
140 | return; | 133 | return; |
141 | 134 | ||
142 | d.GeomClassID id = d.GeomGetClass(g1); | 135 | d.GeomClassID id = d.GeomGetClass(g1); |
143 | if (id==d.GeomClassID.TriMeshClass) | 136 | if (id == d.GeomClassID.TriMeshClass) |
144 | { | 137 | { |
145 | String name1 = null; | 138 | String name1 = null; |
146 | String name2 = null; | 139 | String name2 = null; |
@@ -163,7 +156,6 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
163 | IntPtr joint = d.JointCreateContact(world, contactgroup, ref contact); | 156 | IntPtr joint = d.JointCreateContact(world, contactgroup, ref contact); |
164 | d.JointAttach(joint, b1, b2); | 157 | d.JointAttach(joint, b1, b2); |
165 | } | 158 | } |
166 | |||
167 | } | 159 | } |
168 | 160 | ||
169 | private void collision_optimized() | 161 | private void collision_optimized() |
@@ -171,7 +163,8 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
171 | foreach (OdeCharacter chr in _characters) | 163 | foreach (OdeCharacter chr in _characters) |
172 | { | 164 | { |
173 | d.SpaceCollide2(space, chr.Shell, IntPtr.Zero, nearCallback); | 165 | d.SpaceCollide2(space, chr.Shell, IntPtr.Zero, nearCallback); |
174 | foreach (OdeCharacter ch2 in _characters) /// should be a separate space -- lots of avatars will be N**2 slow | 166 | foreach (OdeCharacter ch2 in _characters) |
167 | /// should be a separate space -- lots of avatars will be N**2 slow | ||
175 | { | 168 | { |
176 | d.SpaceCollide2(chr.Shell, ch2.Shell, IntPtr.Zero, nearCallback); | 169 | d.SpaceCollide2(chr.Shell, ch2.Shell, IntPtr.Zero, nearCallback); |
177 | } | 170 | } |
@@ -193,8 +186,8 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
193 | { | 186 | { |
194 | lock (OdeLock) | 187 | lock (OdeLock) |
195 | { | 188 | { |
196 | ((OdeCharacter)actor).Destroy(); | 189 | ((OdeCharacter) actor).Destroy(); |
197 | _characters.Remove((OdeCharacter)actor); | 190 | _characters.Remove((OdeCharacter) actor); |
198 | } | 191 | } |
199 | } | 192 | } |
200 | 193 | ||
@@ -204,13 +197,14 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
204 | { | 197 | { |
205 | lock (OdeLock) | 198 | lock (OdeLock) |
206 | { | 199 | { |
207 | d.GeomDestroy(((OdePrim)prim).prim_geom); | 200 | d.GeomDestroy(((OdePrim) prim).prim_geom); |
208 | _prims.Remove((OdePrim)prim); | 201 | _prims.Remove((OdePrim) prim); |
209 | } | 202 | } |
210 | } | 203 | } |
211 | } | 204 | } |
212 | 205 | ||
213 | PhysicsActor AddPrim(String name, PhysicsVector position, PhysicsVector size, Quaternion rotation, Mesh mesh, PrimitiveBaseShape pbs) | 206 | private PhysicsActor AddPrim(String name, PhysicsVector position, PhysicsVector size, Quaternion rotation, |
207 | Mesh mesh, PrimitiveBaseShape pbs) | ||
214 | { | 208 | { |
215 | PhysicsVector pos = new PhysicsVector(); | 209 | PhysicsVector pos = new PhysicsVector(); |
216 | pos.X = position.X; | 210 | pos.X = position.X; |
@@ -235,7 +229,7 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
235 | } | 229 | } |
236 | 230 | ||
237 | 231 | ||
238 | public int TriArrayCallback(System.IntPtr trimesh, System.IntPtr refObject, int[] triangleIndex, int triCount) | 232 | public int TriArrayCallback(IntPtr trimesh, IntPtr refObject, int[] triangleIndex, int triCount) |
239 | { | 233 | { |
240 | /* String name1 = null; | 234 | /* String name1 = null; |
241 | String name2 = null; | 235 | String name2 = null; |
@@ -254,15 +248,14 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
254 | return 1; | 248 | return 1; |
255 | } | 249 | } |
256 | 250 | ||
257 | public int TriCallback(System.IntPtr trimesh, System.IntPtr refObject, int triangleIndex) | 251 | public int TriCallback(IntPtr trimesh, IntPtr refObject, int triangleIndex) |
258 | { | 252 | { |
259 | |||
260 | String name1 = null; | 253 | String name1 = null; |
261 | String name2 = null; | 254 | String name2 = null; |
262 | 255 | ||
263 | if (!geom_name_map.TryGetValue(trimesh, out name1)) | 256 | if (!geom_name_map.TryGetValue(trimesh, out name1)) |
264 | { | 257 | { |
265 | name1 = "null"; | 258 | name1 = "null"; |
266 | } | 259 | } |
267 | if (!geom_name_map.TryGetValue(refObject, out name2)) | 260 | if (!geom_name_map.TryGetValue(refObject, out name2)) |
268 | { | 261 | { |
@@ -282,11 +275,12 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
282 | } | 275 | } |
283 | 276 | ||
284 | 277 | ||
285 | public override PhysicsActor AddPrimShape(string primName, PrimitiveBaseShape pbs, PhysicsVector position, PhysicsVector size, Quaternion rotation) | 278 | public override PhysicsActor AddPrimShape(string primName, PrimitiveBaseShape pbs, PhysicsVector position, |
279 | PhysicsVector size, Quaternion rotation) | ||
286 | { | 280 | { |
287 | PhysicsActor result; | 281 | PhysicsActor result; |
288 | 282 | ||
289 | switch(pbs.ProfileShape) | 283 | switch (pbs.ProfileShape) |
290 | { | 284 | { |
291 | case ProfileShape.Square: | 285 | case ProfileShape.Square: |
292 | /// support simple box & hollow box now; later, more shapes | 286 | /// support simple box & hollow box now; later, more shapes |
@@ -310,7 +304,6 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
310 | } | 304 | } |
311 | 305 | ||
312 | 306 | ||
313 | |||
314 | public override void Simulate(float timeStep) | 307 | public override void Simulate(float timeStep) |
315 | { | 308 | { |
316 | step_time += timeStep; | 309 | step_time += timeStep; |
@@ -327,11 +320,12 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
327 | Vector3 rx, ry, rz; | 320 | Vector3 rx, ry, rz; |
328 | p.Orientation.ToAxes(out rx, out ry, out rz); | 321 | p.Orientation.ToAxes(out rx, out ry, out rz); |
329 | Console.WriteLine("RENDER: block; " + p.Size.X + ", " + p.Size.Y + ", " + p.Size.Z + "; " + | 322 | Console.WriteLine("RENDER: block; " + p.Size.X + ", " + p.Size.Y + ", " + p.Size.Z + "; " + |
330 | " 0, 0, 1; " + //shape, size, color | 323 | " 0, 0, 1; " + //shape, size, color |
331 | (p.Position.X - 128.0f) + ", " + (p.Position.Y - 128.0f) + ", " + (p.Position.Z - 33.0f) + "; " + // position | 324 | (p.Position.X - 128.0f) + ", " + (p.Position.Y - 128.0f) + ", " + |
332 | rx.x + "," + ry.x + "," + rz.x + ", " + // rotation | 325 | (p.Position.Z - 33.0f) + "; " + // position |
333 | rx.y + "," + ry.y + "," + rz.y + ", " + | 326 | rx.x + "," + ry.x + "," + rz.x + ", " + // rotation |
334 | rx.z + "," + ry.z + "," + rz.z); | 327 | rx.y + "," + ry.y + "," + rz.y + ", " + |
328 | rx.z + "," + ry.z + "," + rz.z); | ||
335 | } | 329 | } |
336 | } | 330 | } |
337 | int i = 0; | 331 | int i = 0; |
@@ -357,22 +351,27 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
357 | float Zoff = -33.0f; | 351 | float Zoff = -33.0f; |
358 | d.Matrix3 temp = d.BodyGetRotation(actor.Body); | 352 | d.Matrix3 temp = d.BodyGetRotation(actor.Body); |
359 | Console.WriteLine("RENDER: cylinder; " + // shape | 353 | Console.WriteLine("RENDER: cylinder; " + // shape |
360 | OdeCharacter.CAPSULE_RADIUS + ", " + OdeCharacter.CAPSULE_LENGTH + //size | 354 | OdeCharacter.CAPSULE_RADIUS + ", " + OdeCharacter.CAPSULE_LENGTH + //size |
361 | "; 0, 1, 0; " + // color | 355 | "; 0, 1, 0; " + // color |
362 | (actor.Position.X - 128.0f) + ", " + (actor.Position.Y - 128.0f) + ", " + (actor.Position.Z + Zoff) + "; " + // position | 356 | (actor.Position.X - 128.0f) + ", " + (actor.Position.Y - 128.0f) + ", " + |
363 | temp.M00 + "," + temp.M10 + "," + temp.M20 + ", " + // rotation | 357 | (actor.Position.Z + Zoff) + "; " + // position |
364 | temp.M01 + "," + temp.M11 + "," + temp.M21 + ", " + | 358 | temp.M00 + "," + temp.M10 + "," + temp.M20 + ", " + // rotation |
365 | temp.M02 + "," + temp.M12 + "," + temp.M22); | 359 | temp.M01 + "," + temp.M11 + "," + temp.M21 + ", " + |
366 | d.Vector3 caphead; d.BodyGetRelPointPos(actor.Body, 0, 0, OdeCharacter.CAPSULE_LENGTH * .5f, out caphead); | 360 | temp.M02 + "," + temp.M12 + "," + temp.M22); |
367 | d.Vector3 capfoot; d.BodyGetRelPointPos(actor.Body, 0, 0, -OdeCharacter.CAPSULE_LENGTH * .5f, out capfoot); | 361 | d.Vector3 caphead; |
362 | d.BodyGetRelPointPos(actor.Body, 0, 0, OdeCharacter.CAPSULE_LENGTH*.5f, out caphead); | ||
363 | d.Vector3 capfoot; | ||
364 | d.BodyGetRelPointPos(actor.Body, 0, 0, -OdeCharacter.CAPSULE_LENGTH*.5f, out capfoot); | ||
368 | Console.WriteLine("RENDER: sphere; " + OdeCharacter.CAPSULE_RADIUS + // shape, size | 365 | Console.WriteLine("RENDER: sphere; " + OdeCharacter.CAPSULE_RADIUS + // shape, size |
369 | "; 1, 0, 1; " + //color | 366 | "; 1, 0, 1; " + //color |
370 | (caphead.X - 128.0f) + ", " + (caphead.Y - 128.0f) + ", " + (caphead.Z + Zoff) + "; " + // position | 367 | (caphead.X - 128.0f) + ", " + (caphead.Y - 128.0f) + ", " + (caphead.Z + Zoff) + |
371 | "1,0,0, 0,1,0, 0,0,1"); // rotation | 368 | "; " + // position |
369 | "1,0,0, 0,1,0, 0,0,1"); // rotation | ||
372 | Console.WriteLine("RENDER: sphere; " + OdeCharacter.CAPSULE_RADIUS + // shape, size | 370 | Console.WriteLine("RENDER: sphere; " + OdeCharacter.CAPSULE_RADIUS + // shape, size |
373 | "; 1, 0, 0; " + //color | 371 | "; 1, 0, 0; " + //color |
374 | (capfoot.X - 128.0f) + ", " + (capfoot.Y - 128.0f) + ", " + (capfoot.Z + Zoff) + "; " + // position | 372 | (capfoot.X - 128.0f) + ", " + (capfoot.Y - 128.0f) + ", " + (capfoot.Z + Zoff) + |
375 | "1,0,0, 0,1,0, 0,0,1"); // rotation | 373 | "; " + // position |
374 | "1,0,0, 0,1,0, 0,0,1"); // rotation | ||
376 | } | 375 | } |
377 | } | 376 | } |
378 | } | 377 | } |
@@ -380,14 +379,11 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
380 | 379 | ||
381 | public override void GetResults() | 380 | public override void GetResults() |
382 | { | 381 | { |
383 | |||
384 | } | 382 | } |
385 | 383 | ||
386 | public override bool IsThreaded | 384 | public override bool IsThreaded |
387 | { | 385 | { |
388 | get | 386 | get { return (false); // for now we won't be multithreaded |
389 | { | ||
390 | return (false); // for now we won't be multithreaded | ||
391 | } | 387 | } |
392 | } | 388 | } |
393 | 389 | ||
@@ -400,21 +396,21 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
400 | { | 396 | { |
401 | for (int y = 0; y < 258; y++) | 397 | for (int y = 0; y < 258; y++) |
402 | { | 398 | { |
403 | int xx = x-1; | 399 | int xx = x - 1; |
404 | if (xx < 0) xx = 0; | 400 | if (xx < 0) xx = 0; |
405 | if (xx > 255) xx = 255; | 401 | if (xx > 255) xx = 255; |
406 | int yy = y-1; | 402 | int yy = y - 1; |
407 | if (yy < 0) yy = 0; | 403 | if (yy < 0) yy = 0; |
408 | if (yy > 255) yy = 255; | 404 | if (yy > 255) yy = 255; |
409 | 405 | ||
410 | double val = (double)heightMap[yy * 256 + xx]; | 406 | double val = (double) heightMap[yy*256 + xx]; |
411 | _heightmap[x * 258 + y] = val; | 407 | _heightmap[x*258 + y] = val; |
412 | } | 408 | } |
413 | } | 409 | } |
414 | 410 | ||
415 | lock (OdeLock) | 411 | lock (OdeLock) |
416 | { | 412 | { |
417 | if (!(LandGeom == (IntPtr)0)) | 413 | if (!(LandGeom == (IntPtr) 0)) |
418 | { | 414 | { |
419 | d.SpaceRemove(space, LandGeom); | 415 | d.SpaceRemove(space, LandGeom); |
420 | } | 416 | } |
@@ -422,7 +418,7 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
422 | d.GeomHeightfieldDataBuildDouble(HeightmapData, _heightmap, 0, 258, 258, 258, 258, 1.0f, 0.0f, 2.0f, 0); | 418 | d.GeomHeightfieldDataBuildDouble(HeightmapData, _heightmap, 0, 258, 258, 258, 258, 1.0f, 0.0f, 2.0f, 0); |
423 | d.GeomHeightfieldDataSetBounds(HeightmapData, 256, 256); | 419 | d.GeomHeightfieldDataSetBounds(HeightmapData, 256, 256); |
424 | LandGeom = d.CreateHeightfield(space, HeightmapData, 1); | 420 | LandGeom = d.CreateHeightfield(space, HeightmapData, 1); |
425 | this.geom_name_map[LandGeom]="Terrain"; | 421 | geom_name_map[LandGeom] = "Terrain"; |
426 | 422 | ||
427 | d.Matrix3 R = new d.Matrix3(); | 423 | d.Matrix3 R = new d.Matrix3(); |
428 | 424 | ||
@@ -430,7 +426,7 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
430 | Quaternion q2 = Quaternion.FromAngleAxis(1.5707f, new Vector3(0, 1, 0)); | 426 | Quaternion q2 = Quaternion.FromAngleAxis(1.5707f, new Vector3(0, 1, 0)); |
431 | //Axiom.Math.Quaternion q3 = Axiom.Math.Quaternion.FromAngleAxis(3.14f, new Axiom.Math.Vector3(0, 0, 1)); | 427 | //Axiom.Math.Quaternion q3 = Axiom.Math.Quaternion.FromAngleAxis(3.14f, new Axiom.Math.Vector3(0, 0, 1)); |
432 | 428 | ||
433 | q1 = q1 * q2; | 429 | q1 = q1*q2; |
434 | //q1 = q1 * q3; | 430 | //q1 = q1 * q3; |
435 | Vector3 v3 = new Vector3(); | 431 | Vector3 v3 = new Vector3(); |
436 | float angle = 0; | 432 | float angle = 0; |
@@ -444,7 +440,6 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
444 | 440 | ||
445 | public override void DeleteTerrain() | 441 | public override void DeleteTerrain() |
446 | { | 442 | { |
447 | |||
448 | } | 443 | } |
449 | } | 444 | } |
450 | 445 | ||
@@ -452,12 +447,12 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
452 | { | 447 | { |
453 | private PhysicsVector _position; | 448 | private PhysicsVector _position; |
454 | private d.Vector3 _zeroPosition; | 449 | private d.Vector3 _zeroPosition; |
455 | private bool _zeroFlag=false; | 450 | private bool _zeroFlag = false; |
456 | private PhysicsVector _velocity; | 451 | private PhysicsVector _velocity; |
457 | private PhysicsVector _target_velocity; | 452 | private PhysicsVector _target_velocity; |
458 | private PhysicsVector _acceleration; | 453 | private PhysicsVector _acceleration; |
459 | private static float PID_D=4000.0f; | 454 | private static float PID_D = 4000.0f; |
460 | private static float PID_P=7000.0f; | 455 | private static float PID_P = 7000.0f; |
461 | private static float POSTURE_SERVO = 10000.0f; | 456 | private static float POSTURE_SERVO = 10000.0f; |
462 | public static float CAPSULE_RADIUS = 0.5f; | 457 | public static float CAPSULE_RADIUS = 0.5f; |
463 | public static float CAPSULE_LENGTH = 0.9f; | 458 | public static float CAPSULE_LENGTH = 0.9f; |
@@ -484,28 +479,18 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
484 | d.BodySetPosition(Body, pos.X, pos.Y, pos.Z); | 479 | d.BodySetPosition(Body, pos.X, pos.Y, pos.Z); |
485 | d.GeomSetBody(Shell, Body); | 480 | d.GeomSetBody(Shell, Body); |
486 | } | 481 | } |
487 | parent_scene.geom_name_map[Shell]=avName; | 482 | parent_scene.geom_name_map[Shell] = avName; |
488 | |||
489 | } | 483 | } |
490 | 484 | ||
491 | public override bool Flying | 485 | public override bool Flying |
492 | { | 486 | { |
493 | get | 487 | get { return flying; } |
494 | { | 488 | set { flying = value; } |
495 | return flying; | ||
496 | } | ||
497 | set | ||
498 | { | ||
499 | flying = value; | ||
500 | } | ||
501 | } | 489 | } |
502 | 490 | ||
503 | public override PhysicsVector Position | 491 | public override PhysicsVector Position |
504 | { | 492 | { |
505 | get | 493 | get { return _position; } |
506 | { | ||
507 | return _position; | ||
508 | } | ||
509 | set | 494 | set |
510 | { | 495 | { |
511 | lock (OdeScene.OdeLock) | 496 | lock (OdeScene.OdeLock) |
@@ -518,60 +503,34 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
518 | 503 | ||
519 | public override PhysicsVector Size | 504 | public override PhysicsVector Size |
520 | { | 505 | { |
521 | get | 506 | get { return new PhysicsVector(0, 0, 0); } |
522 | { | 507 | set { } |
523 | return new PhysicsVector(0,0,0); | ||
524 | } | ||
525 | set | ||
526 | { | ||
527 | } | ||
528 | } | 508 | } |
529 | 509 | ||
530 | 510 | ||
531 | public override PhysicsVector Velocity | 511 | public override PhysicsVector Velocity |
532 | { | 512 | { |
533 | get | 513 | get { return _velocity; } |
534 | { | 514 | set { _target_velocity = value; } |
535 | return _velocity; | ||
536 | } | ||
537 | set | ||
538 | { | ||
539 | _target_velocity = value; | ||
540 | } | ||
541 | } | 515 | } |
542 | 516 | ||
543 | public override bool Kinematic | 517 | public override bool Kinematic |
544 | { | 518 | { |
545 | get | 519 | get { return false; } |
546 | { | 520 | set { } |
547 | return false; | ||
548 | } | ||
549 | set | ||
550 | { | ||
551 | |||
552 | } | ||
553 | } | 521 | } |
554 | 522 | ||
555 | public override Quaternion Orientation | 523 | public override Quaternion Orientation |
556 | { | 524 | { |
557 | get | 525 | get { return Quaternion.Identity; } |
558 | { | 526 | set { } |
559 | return Quaternion.Identity; | ||
560 | } | ||
561 | set | ||
562 | { | ||
563 | |||
564 | } | ||
565 | } | 527 | } |
566 | 528 | ||
567 | public override PhysicsVector Acceleration | 529 | public override PhysicsVector Acceleration |
568 | { | 530 | { |
569 | get | 531 | get { return _acceleration; } |
570 | { | ||
571 | return _acceleration; | ||
572 | } | ||
573 | |||
574 | } | 532 | } |
533 | |||
575 | public void SetAcceleration(PhysicsVector accel) | 534 | public void SetAcceleration(PhysicsVector accel) |
576 | { | 535 | { |
577 | _acceleration = accel; | 536 | _acceleration = accel; |
@@ -579,12 +538,10 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
579 | 538 | ||
580 | public override void AddForce(PhysicsVector force) | 539 | public override void AddForce(PhysicsVector force) |
581 | { | 540 | { |
582 | |||
583 | } | 541 | } |
584 | 542 | ||
585 | public override void SetMomentum(PhysicsVector momentum) | 543 | public override void SetMomentum(PhysicsVector momentum) |
586 | { | 544 | { |
587 | |||
588 | } | 545 | } |
589 | 546 | ||
590 | public void Move(float timeStep) | 547 | public void Move(float timeStep) |
@@ -603,28 +560,28 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
603 | _zeroPosition = d.BodyGetPosition(Body); | 560 | _zeroPosition = d.BodyGetPosition(Body); |
604 | } | 561 | } |
605 | d.Vector3 pos = d.BodyGetPosition(Body); | 562 | d.Vector3 pos = d.BodyGetPosition(Body); |
606 | vec.X = (_target_velocity.X - vel.X) * PID_D + (_zeroPosition.X - pos.X) * PID_P; | 563 | vec.X = (_target_velocity.X - vel.X)*PID_D + (_zeroPosition.X - pos.X)*PID_P; |
607 | vec.Y = (_target_velocity.Y - vel.Y) * PID_D + (_zeroPosition.Y - pos.Y) * PID_P; | 564 | vec.Y = (_target_velocity.Y - vel.Y)*PID_D + (_zeroPosition.Y - pos.Y)*PID_P; |
608 | if (flying) | 565 | if (flying) |
609 | { | 566 | { |
610 | vec.Z = (_target_velocity.Z - vel.Z) * PID_D + (_zeroPosition.Z - pos.Z) * PID_P; | 567 | vec.Z = (_target_velocity.Z - vel.Z)*PID_D + (_zeroPosition.Z - pos.Z)*PID_P; |
611 | } | 568 | } |
612 | } | 569 | } |
613 | else | 570 | else |
614 | { | 571 | { |
615 | _zeroFlag = false; | 572 | _zeroFlag = false; |
616 | vec.X = (_target_velocity.X - vel.X) * PID_D; | 573 | vec.X = (_target_velocity.X - vel.X)*PID_D; |
617 | vec.Y = (_target_velocity.Y - vel.Y) * PID_D; | 574 | vec.Y = (_target_velocity.Y - vel.Y)*PID_D; |
618 | if (flying) | 575 | if (flying) |
619 | { | 576 | { |
620 | vec.Z = (_target_velocity.Z - vel.Z) * PID_D; | 577 | vec.Z = (_target_velocity.Z - vel.Z)*PID_D; |
621 | } | 578 | } |
622 | } | 579 | } |
623 | if (flying) | 580 | if (flying) |
624 | { | 581 | { |
625 | vec.Z += 10.0f; | 582 | vec.Z += 10.0f; |
626 | } | 583 | } |
627 | d.BodyAddForce(this.Body, vec.X, vec.Y, vec.Z); | 584 | d.BodyAddForce(Body, vec.X, vec.Y, vec.Z); |
628 | 585 | ||
629 | // ok -- let's stand up straight! | 586 | // ok -- let's stand up straight! |
630 | d.Vector3 feet; | 587 | d.Vector3 feet; |
@@ -634,7 +591,7 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
634 | float posture = head.Z - feet.Z; | 591 | float posture = head.Z - feet.Z; |
635 | 592 | ||
636 | // restoring force proportional to lack of posture: | 593 | // restoring force proportional to lack of posture: |
637 | float servo = (2.5f-posture) * POSTURE_SERVO; | 594 | float servo = (2.5f - posture)*POSTURE_SERVO; |
638 | d.BodyAddForceAtRelPos(Body, 0.0f, 0.0f, servo, 0.0f, 0.0f, 1.0f); | 595 | d.BodyAddForceAtRelPos(Body, 0.0f, 0.0f, servo, 0.0f, 0.0f, 1.0f); |
639 | d.BodyAddForceAtRelPos(Body, 0.0f, 0.0f, -servo, 0.0f, 0.0f, -1.0f); | 596 | d.BodyAddForceAtRelPos(Body, 0.0f, 0.0f, -servo, 0.0f, 0.0f, -1.0f); |
640 | } | 597 | } |
@@ -650,9 +607,9 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
650 | if (vec.X > 255.95f) vec.X = 255.95f; | 607 | if (vec.X > 255.95f) vec.X = 255.95f; |
651 | if (vec.Y > 255.95f) vec.Y = 255.95f; | 608 | if (vec.Y > 255.95f) vec.Y = 255.95f; |
652 | 609 | ||
653 | this._position.X = vec.X; | 610 | _position.X = vec.X; |
654 | this._position.Y = vec.Y; | 611 | _position.Y = vec.Y; |
655 | this._position.Z = vec.Z; | 612 | _position.Z = vec.Z; |
656 | 613 | ||
657 | if (_zeroFlag) | 614 | if (_zeroFlag) |
658 | { | 615 | { |
@@ -673,9 +630,9 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
673 | { | 630 | { |
674 | lock (OdeScene.OdeLock) | 631 | lock (OdeScene.OdeLock) |
675 | { | 632 | { |
676 | d.GeomDestroy(this.Shell); | 633 | d.GeomDestroy(Shell); |
677 | this._parent_scene.geom_name_map.Remove(this.Shell); | 634 | _parent_scene.geom_name_map.Remove(Shell); |
678 | d.BodyDestroy(this.Body); | 635 | d.BodyDestroy(Body); |
679 | } | 636 | } |
680 | } | 637 | } |
681 | } | 638 | } |
@@ -693,7 +650,7 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
693 | public IntPtr prim_geom; | 650 | public IntPtr prim_geom; |
694 | public IntPtr _triMeshData; | 651 | public IntPtr _triMeshData; |
695 | 652 | ||
696 | public OdePrim(String primName, OdeScene parent_scene, PhysicsVector pos, PhysicsVector size, | 653 | public OdePrim(String primName, OdeScene parent_scene, PhysicsVector pos, PhysicsVector size, |
697 | Quaternion rotation, Mesh mesh, PrimitiveBaseShape pbs) | 654 | Quaternion rotation, Mesh mesh, PrimitiveBaseShape pbs) |
698 | { | 655 | { |
699 | _velocity = new PhysicsVector(); | 656 | _velocity = new PhysicsVector(); |
@@ -707,7 +664,7 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
707 | 664 | ||
708 | lock (OdeScene.OdeLock) | 665 | lock (OdeScene.OdeLock) |
709 | { | 666 | { |
710 | if (mesh!=null) | 667 | if (mesh != null) |
711 | { | 668 | { |
712 | setMesh(parent_scene, mesh); | 669 | setMesh(parent_scene, mesh); |
713 | } | 670 | } |
@@ -723,20 +680,22 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
723 | myrot.Y = rotation.y; | 680 | myrot.Y = rotation.y; |
724 | myrot.Z = rotation.z; | 681 | myrot.Z = rotation.z; |
725 | d.GeomSetQuaternion(prim_geom, ref myrot); | 682 | d.GeomSetQuaternion(prim_geom, ref myrot); |
726 | parent_scene.geom_name_map[prim_geom] = primName; // don't do .add() here; old geoms get recycled with the same hash | 683 | parent_scene.geom_name_map[prim_geom] = primName; |
684 | // don't do .add() here; old geoms get recycled with the same hash | ||
727 | } | 685 | } |
728 | } | 686 | } |
729 | 687 | ||
730 | public void setMesh(OdeScene parent_scene, Mesh mesh) | 688 | public void setMesh(OdeScene parent_scene, Mesh mesh) |
731 | { | 689 | { |
732 | float[] vertexList = mesh.getVertexListAsFloat(); // Note, that vertextList is pinned in memory | 690 | float[] vertexList = mesh.getVertexListAsFloat(); // Note, that vertextList is pinned in memory |
733 | int[] indexList = mesh.getIndexListAsInt(); // Also pinned, needs release after usage | 691 | int[] indexList = mesh.getIndexListAsInt(); // Also pinned, needs release after usage |
734 | int VertexCount = vertexList.GetLength(0) / 3; | 692 | int VertexCount = vertexList.GetLength(0)/3; |
735 | int IndexCount = indexList.GetLength(0); | 693 | int IndexCount = indexList.GetLength(0); |
736 | 694 | ||
737 | _triMeshData = d.GeomTriMeshDataCreate(); | 695 | _triMeshData = d.GeomTriMeshDataCreate(); |
738 | 696 | ||
739 | d.GeomTriMeshDataBuildSimple(_triMeshData, vertexList, 3 * sizeof(float), VertexCount, indexList, IndexCount, 3 * sizeof(int)); | 697 | d.GeomTriMeshDataBuildSimple(_triMeshData, vertexList, 3*sizeof (float), VertexCount, indexList, IndexCount, |
698 | 3*sizeof (int)); | ||
740 | d.GeomTriMeshDataPreprocess(_triMeshData); | 699 | d.GeomTriMeshDataPreprocess(_triMeshData); |
741 | 700 | ||
742 | prim_geom = d.CreateTriMesh(parent_scene.space, _triMeshData, parent_scene.triCallback, null, null); | 701 | prim_geom = d.CreateTriMesh(parent_scene.space, _triMeshData, parent_scene.triCallback, null, null); |
@@ -744,21 +703,14 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
744 | 703 | ||
745 | public override bool Flying | 704 | public override bool Flying |
746 | { | 705 | { |
747 | get | 706 | get { return false; //no flying prims for you |
748 | { | ||
749 | return false; //no flying prims for you | ||
750 | } | ||
751 | set | ||
752 | { | ||
753 | } | 707 | } |
708 | set { } | ||
754 | } | 709 | } |
755 | 710 | ||
756 | public override PhysicsVector Position | 711 | public override PhysicsVector Position |
757 | { | 712 | { |
758 | get | 713 | get { return _position; } |
759 | { | ||
760 | return _position; | ||
761 | } | ||
762 | set | 714 | set |
763 | { | 715 | { |
764 | _position = value; | 716 | _position = value; |
@@ -771,10 +723,7 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
771 | 723 | ||
772 | public override PhysicsVector Size | 724 | public override PhysicsVector Size |
773 | { | 725 | { |
774 | get | 726 | get { return _size; } |
775 | { | ||
776 | return _size; | ||
777 | } | ||
778 | set | 727 | set |
779 | { | 728 | { |
780 | _size = value; | 729 | _size = value; |
@@ -798,33 +747,19 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
798 | 747 | ||
799 | public override PhysicsVector Velocity | 748 | public override PhysicsVector Velocity |
800 | { | 749 | { |
801 | get | 750 | get { return _velocity; } |
802 | { | 751 | set { _velocity = value; } |
803 | return _velocity; | ||
804 | } | ||
805 | set | ||
806 | { | ||
807 | _velocity = value; | ||
808 | } | ||
809 | } | 752 | } |
810 | 753 | ||
811 | public override bool Kinematic | 754 | public override bool Kinematic |
812 | { | 755 | { |
813 | get | 756 | get { return false; } |
814 | { | 757 | set { } |
815 | return false; | ||
816 | } | ||
817 | set | ||
818 | { | ||
819 | } | ||
820 | } | 758 | } |
821 | 759 | ||
822 | public override Quaternion Orientation | 760 | public override Quaternion Orientation |
823 | { | 761 | { |
824 | get | 762 | get { return _orientation; } |
825 | { | ||
826 | return _orientation; | ||
827 | } | ||
828 | set | 763 | set |
829 | { | 764 | { |
830 | _orientation = value; | 765 | _orientation = value; |
@@ -842,15 +777,12 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
842 | 777 | ||
843 | public override PhysicsVector Acceleration | 778 | public override PhysicsVector Acceleration |
844 | { | 779 | { |
845 | get | 780 | get { return _acceleration; } |
846 | { | ||
847 | return _acceleration; | ||
848 | } | ||
849 | } | 781 | } |
850 | 782 | ||
851 | public void SetAcceleration(PhysicsVector accel) | 783 | public void SetAcceleration(PhysicsVector accel) |
852 | { | 784 | { |
853 | this._acceleration = accel; | 785 | _acceleration = accel; |
854 | } | 786 | } |
855 | 787 | ||
856 | public override void AddForce(PhysicsVector force) | 788 | public override void AddForce(PhysicsVector force) |
@@ -861,4 +793,4 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
861 | { | 793 | { |
862 | } | 794 | } |
863 | } | 795 | } |
864 | } | 796 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Physics/PhysXPlugin/AssemblyInfo.cs b/OpenSim/Region/Physics/PhysXPlugin/AssemblyInfo.cs index 3f840cc..d110a17 100644 --- a/OpenSim/Region/Physics/PhysXPlugin/AssemblyInfo.cs +++ b/OpenSim/Region/Physics/PhysXPlugin/AssemblyInfo.cs | |||
@@ -27,24 +27,26 @@ | |||
27 | */ | 27 | */ |
28 | using System.Reflection; | 28 | using System.Reflection; |
29 | using System.Runtime.InteropServices; | 29 | using System.Runtime.InteropServices; |
30 | |||
30 | // Information about this assembly is defined by the following | 31 | // Information about this assembly is defined by the following |
31 | // attributes. | 32 | // attributes. |
32 | // | 33 | // |
33 | // change them to the information which is associated with the assembly | 34 | // change them to the information which is associated with the assembly |
34 | // you compile. | 35 | // you compile. |
35 | 36 | ||
36 | [assembly: AssemblyTitle("RealPhysXplugin")] | 37 | [assembly : AssemblyTitle("RealPhysXplugin")] |
37 | [assembly: AssemblyDescription("")] | 38 | [assembly : AssemblyDescription("")] |
38 | [assembly: AssemblyConfiguration("")] | 39 | [assembly : AssemblyConfiguration("")] |
39 | [assembly: AssemblyCompany("")] | 40 | [assembly : AssemblyCompany("")] |
40 | [assembly: AssemblyProduct("RealPhysXplugin")] | 41 | [assembly : AssemblyProduct("RealPhysXplugin")] |
41 | [assembly: AssemblyCopyright("")] | 42 | [assembly : AssemblyCopyright("")] |
42 | [assembly: AssemblyTrademark("")] | 43 | [assembly : AssemblyTrademark("")] |
43 | [assembly: AssemblyCulture("")] | 44 | [assembly : AssemblyCulture("")] |
44 | 45 | ||
45 | // This sets the default COM visibility of types in the assembly to invisible. | 46 | // This sets the default COM visibility of types in the assembly to invisible. |
46 | // If you need to expose a type to COM, use [ComVisible(true)] on that type. | 47 | // If you need to expose a type to COM, use [ComVisible(true)] on that type. |
47 | [assembly: ComVisible(false)] | 48 | |
49 | [assembly : ComVisible(false)] | ||
48 | 50 | ||
49 | // The assembly version has following format : | 51 | // The assembly version has following format : |
50 | // | 52 | // |
@@ -53,4 +55,4 @@ using System.Runtime.InteropServices; | |||
53 | // You can specify all values by your own or you can build default build and revision | 55 | // You can specify all values by your own or you can build default build and revision |
54 | // numbers with the '*' character (the default): | 56 | // numbers with the '*' character (the default): |
55 | 57 | ||
56 | [assembly: AssemblyVersion("1.0.*")] | 58 | [assembly : AssemblyVersion("1.0.*")] \ No newline at end of file |
diff --git a/OpenSim/Region/Physics/PhysXPlugin/PhysXPlugin.cs b/OpenSim/Region/Physics/PhysXPlugin/PhysXPlugin.cs index a7cef88..4896359 100644 --- a/OpenSim/Region/Physics/PhysXPlugin/PhysXPlugin.cs +++ b/OpenSim/Region/Physics/PhysXPlugin/PhysXPlugin.cs | |||
@@ -34,102 +34,99 @@ using Quaternion=Axiom.Math.Quaternion; | |||
34 | 34 | ||
35 | namespace OpenSim.Region.Physics.PhysXPlugin | 35 | namespace OpenSim.Region.Physics.PhysXPlugin |
36 | { | 36 | { |
37 | /// <summary> | 37 | /// <summary> |
38 | /// Will be the PhysX plugin but for now will be a very basic physics engine | 38 | /// Will be the PhysX plugin but for now will be a very basic physics engine |
39 | /// </summary> | 39 | /// </summary> |
40 | public class PhysXPlugin : IPhysicsPlugin | 40 | public class PhysXPlugin : IPhysicsPlugin |
41 | { | 41 | { |
42 | private PhysXScene _mScene; | 42 | private PhysXScene _mScene; |
43 | 43 | ||
44 | public PhysXPlugin() | 44 | public PhysXPlugin() |
45 | { | 45 | { |
46 | 46 | } | |
47 | } | 47 | |
48 | 48 | public bool Init() | |
49 | public bool Init() | 49 | { |
50 | { | 50 | return true; |
51 | return true; | 51 | } |
52 | } | 52 | |
53 | 53 | public PhysicsScene GetScene() | |
54 | public PhysicsScene GetScene() | 54 | { |
55 | { | 55 | if (_mScene == null) |
56 | if(_mScene == null) | 56 | { |
57 | { | 57 | _mScene = new PhysXScene(); |
58 | _mScene = new PhysXScene(); | 58 | } |
59 | } | 59 | return (_mScene); |
60 | return(_mScene); | 60 | } |
61 | } | 61 | |
62 | 62 | public string GetName() | |
63 | public string GetName() | 63 | { |
64 | { | 64 | return ("RealPhysX"); |
65 | return("RealPhysX"); | 65 | } |
66 | } | 66 | |
67 | 67 | public void Dispose() | |
68 | public void Dispose() | 68 | { |
69 | { | 69 | } |
70 | 70 | } | |
71 | } | 71 | |
72 | } | 72 | public class PhysXScene : PhysicsScene |
73 | 73 | { | |
74 | public class PhysXScene :PhysicsScene | 74 | private List<PhysXCharacter> _characters = new List<PhysXCharacter>(); |
75 | { | 75 | private List<PhysXPrim> _prims = new List<PhysXPrim>(); |
76 | private List<PhysXCharacter> _characters = new List<PhysXCharacter>(); | 76 | private float[] _heightMap = null; |
77 | private List<PhysXPrim> _prims = new List<PhysXPrim>(); | 77 | private NxPhysicsSDK mySdk; |
78 | private float[] _heightMap = null; | 78 | private NxScene scene; |
79 | private NxPhysicsSDK mySdk; | 79 | |
80 | private NxScene scene; | 80 | public PhysXScene() |
81 | 81 | { | |
82 | public PhysXScene() | 82 | mySdk = NxPhysicsSDK.CreateSDK(); |
83 | { | 83 | Console.WriteLine("Sdk created - now creating scene"); |
84 | mySdk = NxPhysicsSDK.CreateSDK(); | 84 | scene = mySdk.CreateScene(); |
85 | Console.WriteLine("Sdk created - now creating scene"); | 85 | } |
86 | scene = mySdk.CreateScene(); | 86 | |
87 | 87 | public override PhysicsActor AddAvatar(string avName, PhysicsVector position) | |
88 | } | 88 | { |
89 | 89 | Vec3 pos = new Vec3(); | |
90 | public override PhysicsActor AddAvatar(string avName, PhysicsVector position) | 90 | pos.X = position.X; |
91 | { | 91 | pos.Y = position.Y; |
92 | Vec3 pos = new Vec3(); | 92 | pos.Z = position.Z; |
93 | pos.X = position.X; | 93 | PhysXCharacter act = new PhysXCharacter(scene.AddCharacter(pos)); |
94 | pos.Y = position.Y; | ||
95 | pos.Z = position.Z; | ||
96 | PhysXCharacter act = new PhysXCharacter( scene.AddCharacter(pos)); | ||
97 | act.Position = position; | 94 | act.Position = position; |
98 | _characters.Add(act); | 95 | _characters.Add(act); |
99 | return act; | 96 | return act; |
100 | } | 97 | } |
101 | 98 | ||
102 | public override void RemovePrim(PhysicsActor prim) | 99 | public override void RemovePrim(PhysicsActor prim) |
103 | { | 100 | { |
104 | |||
105 | } | 101 | } |
106 | 102 | ||
107 | public override void RemoveAvatar(PhysicsActor actor) | 103 | public override void RemoveAvatar(PhysicsActor actor) |
108 | { | 104 | { |
105 | } | ||
109 | 106 | ||
107 | private PhysicsActor AddPrim(PhysicsVector position, PhysicsVector size, Quaternion rotation) | ||
108 | { | ||
109 | Vec3 pos = new Vec3(); | ||
110 | pos.X = position.X; | ||
111 | pos.Y = position.Y; | ||
112 | pos.Z = position.Z; | ||
113 | Vec3 siz = new Vec3(); | ||
114 | siz.X = size.X; | ||
115 | siz.Y = size.Y; | ||
116 | siz.Z = size.Z; | ||
117 | PhysXPrim act = new PhysXPrim(scene.AddNewBox(pos, siz)); | ||
118 | _prims.Add(act); | ||
119 | return act; | ||
110 | } | 120 | } |
111 | 121 | ||
112 | PhysicsActor AddPrim(PhysicsVector position, PhysicsVector size, Quaternion rotation) | 122 | public override PhysicsActor AddPrimShape(string primName, PrimitiveBaseShape pbs, PhysicsVector position, |
113 | { | 123 | PhysicsVector size, Quaternion rotation) |
114 | Vec3 pos = new Vec3(); | ||
115 | pos.X = position.X; | ||
116 | pos.Y = position.Y; | ||
117 | pos.Z = position.Z; | ||
118 | Vec3 siz = new Vec3(); | ||
119 | siz.X = size.X; | ||
120 | siz.Y = size.Y; | ||
121 | siz.Z = size.Z; | ||
122 | PhysXPrim act = new PhysXPrim( scene.AddNewBox(pos, siz)); | ||
123 | _prims.Add(act); | ||
124 | return act; | ||
125 | } | ||
126 | public override PhysicsActor AddPrimShape(string primName, PrimitiveBaseShape pbs, PhysicsVector position, PhysicsVector size, Quaternion rotation) | ||
127 | { | 124 | { |
128 | return AddPrim(position, size, rotation); | 125 | return AddPrim(position, size, rotation); |
129 | } | 126 | } |
130 | 127 | ||
131 | public override void Simulate(float timeStep) | 128 | public override void Simulate(float timeStep) |
132 | { | 129 | { |
133 | try | 130 | try |
134 | { | 131 | { |
135 | foreach (PhysXCharacter actor in _characters) | 132 | foreach (PhysXCharacter actor in _characters) |
@@ -149,309 +146,237 @@ namespace OpenSim.Region.Physics.PhysXPlugin | |||
149 | { | 146 | { |
150 | Console.WriteLine(e.Message); | 147 | Console.WriteLine(e.Message); |
151 | } | 148 | } |
152 | 149 | } | |
153 | } | 150 | |
154 | 151 | public override void GetResults() | |
155 | public override void GetResults() | 152 | { |
156 | { | 153 | } |
157 | 154 | ||
158 | } | 155 | public override bool IsThreaded |
159 | 156 | { | |
160 | public override bool IsThreaded | 157 | get { return (false); // for now we won't be multithreaded |
161 | { | 158 | } |
162 | get | 159 | } |
163 | { | 160 | |
164 | return(false); // for now we won't be multithreaded | 161 | public override void SetTerrain(float[] heightMap) |
165 | } | 162 | { |
166 | } | 163 | if (_heightMap != null) |
167 | |||
168 | public override void SetTerrain(float[] heightMap) | ||
169 | { | ||
170 | if (this._heightMap != null) | ||
171 | { | 164 | { |
172 | Console.WriteLine("PhysX - deleting old terrain"); | 165 | Console.WriteLine("PhysX - deleting old terrain"); |
173 | this.scene.DeleteTerrain(); | 166 | scene.DeleteTerrain(); |
174 | } | 167 | } |
175 | this._heightMap = heightMap; | 168 | _heightMap = heightMap; |
176 | this.scene.AddTerrain(heightMap); | 169 | scene.AddTerrain(heightMap); |
177 | } | 170 | } |
178 | 171 | ||
179 | public override void DeleteTerrain() | 172 | public override void DeleteTerrain() |
180 | { | 173 | { |
181 | this.scene.DeleteTerrain(); | 174 | scene.DeleteTerrain(); |
182 | } | 175 | } |
183 | } | 176 | } |
184 | 177 | ||
185 | public class PhysXCharacter : PhysicsActor | 178 | public class PhysXCharacter : PhysicsActor |
186 | { | 179 | { |
187 | private PhysicsVector _position; | 180 | private PhysicsVector _position; |
188 | private PhysicsVector _velocity; | 181 | private PhysicsVector _velocity; |
189 | private PhysicsVector _acceleration; | 182 | private PhysicsVector _acceleration; |
190 | private NxCharacter _character; | 183 | private NxCharacter _character; |
191 | private bool flying; | 184 | private bool flying; |
192 | private float gravityAccel; | 185 | private float gravityAccel; |
193 | 186 | ||
194 | public PhysXCharacter(NxCharacter character) | 187 | public PhysXCharacter(NxCharacter character) |
195 | { | 188 | { |
196 | _velocity = new PhysicsVector(); | 189 | _velocity = new PhysicsVector(); |
197 | _position = new PhysicsVector(); | 190 | _position = new PhysicsVector(); |
198 | _acceleration = new PhysicsVector(); | 191 | _acceleration = new PhysicsVector(); |
199 | _character = character; | 192 | _character = character; |
200 | } | 193 | } |
201 | 194 | ||
202 | public override bool Flying | 195 | public override bool Flying |
203 | { | 196 | { |
204 | get | 197 | get { return flying; } |
205 | { | 198 | set { flying = value; } |
206 | return flying; | 199 | } |
207 | } | 200 | |
208 | set | 201 | public override PhysicsVector Position |
209 | { | 202 | { |
210 | flying = value; | 203 | get { return _position; } |
211 | } | 204 | set |
212 | } | 205 | { |
213 | 206 | _position = value; | |
214 | public override PhysicsVector Position | ||
215 | { | ||
216 | get | ||
217 | { | ||
218 | return _position; | ||
219 | } | ||
220 | set | ||
221 | { | ||
222 | _position = value; | ||
223 | Vec3 ps = new Vec3(); | 207 | Vec3 ps = new Vec3(); |
224 | ps.X = value.X; | 208 | ps.X = value.X; |
225 | ps.Y = value.Y; | 209 | ps.Y = value.Y; |
226 | ps.Z = value.Z; | 210 | ps.Z = value.Z; |
227 | this._character.Position = ps; | 211 | _character.Position = ps; |
228 | } | 212 | } |
229 | } | 213 | } |
230 | 214 | ||
231 | public override PhysicsVector Size | 215 | public override PhysicsVector Size |
232 | { | 216 | { |
233 | get | 217 | get { return new PhysicsVector(0, 0, 0); } |
218 | set { } | ||
219 | } | ||
220 | |||
221 | public override PhysicsVector Velocity | ||
222 | { | ||
223 | get { return _velocity; } | ||
224 | set { _velocity = value; } | ||
225 | } | ||
226 | |||
227 | public override bool Kinematic | ||
228 | { | ||
229 | get { return false; } | ||
230 | set { } | ||
231 | } | ||
232 | |||
233 | public override Quaternion Orientation | ||
234 | { | ||
235 | get { return Quaternion.Identity; } | ||
236 | set { } | ||
237 | } | ||
238 | |||
239 | public override PhysicsVector Acceleration | ||
240 | { | ||
241 | get { return _acceleration; } | ||
242 | } | ||
243 | |||
244 | public void SetAcceleration(PhysicsVector accel) | ||
245 | { | ||
246 | _acceleration = accel; | ||
247 | } | ||
248 | |||
249 | public override void AddForce(PhysicsVector force) | ||
250 | { | ||
251 | } | ||
252 | |||
253 | public override void SetMomentum(PhysicsVector momentum) | ||
254 | { | ||
255 | } | ||
256 | |||
257 | public void Move(float timeStep) | ||
258 | { | ||
259 | Vec3 vec = new Vec3(); | ||
260 | vec.X = _velocity.X*timeStep; | ||
261 | vec.Y = _velocity.Y*timeStep; | ||
262 | if (flying) | ||
234 | { | 263 | { |
235 | return new PhysicsVector(0,0,0); | 264 | vec.Z = (_velocity.Z)*timeStep; |
236 | } | 265 | } |
237 | set | 266 | else |
267 | { | ||
268 | gravityAccel += -9.8f; | ||
269 | vec.Z = (gravityAccel + _velocity.Z)*timeStep; | ||
270 | } | ||
271 | int res = _character.Move(vec); | ||
272 | if (res == 1) | ||
238 | { | 273 | { |
274 | gravityAccel = 0; | ||
239 | } | 275 | } |
240 | } | 276 | } |
241 | public override PhysicsVector Velocity | ||
242 | { | ||
243 | get | ||
244 | { | ||
245 | return _velocity; | ||
246 | } | ||
247 | set | ||
248 | { | ||
249 | _velocity = value; | ||
250 | } | ||
251 | } | ||
252 | |||
253 | public override bool Kinematic | ||
254 | { | ||
255 | get | ||
256 | { | ||
257 | return false; | ||
258 | } | ||
259 | set | ||
260 | { | ||
261 | |||
262 | } | ||
263 | } | ||
264 | |||
265 | public override Quaternion Orientation | ||
266 | { | ||
267 | get | ||
268 | { | ||
269 | return Quaternion.Identity; | ||
270 | } | ||
271 | set | ||
272 | { | ||
273 | |||
274 | } | ||
275 | } | ||
276 | |||
277 | public override PhysicsVector Acceleration | ||
278 | { | ||
279 | get | ||
280 | { | ||
281 | return _acceleration; | ||
282 | } | ||
283 | |||
284 | } | ||
285 | public void SetAcceleration (PhysicsVector accel) | ||
286 | { | ||
287 | this._acceleration = accel; | ||
288 | } | ||
289 | |||
290 | public override void AddForce(PhysicsVector force) | ||
291 | { | ||
292 | |||
293 | } | ||
294 | |||
295 | public override void SetMomentum(PhysicsVector momentum) | ||
296 | { | ||
297 | |||
298 | } | ||
299 | |||
300 | public void Move(float timeStep) | ||
301 | { | ||
302 | Vec3 vec = new Vec3(); | ||
303 | vec.X = this._velocity.X * timeStep; | ||
304 | vec.Y = this._velocity.Y * timeStep; | ||
305 | if(flying) | ||
306 | { | ||
307 | vec.Z = ( this._velocity.Z) * timeStep; | ||
308 | } | ||
309 | else | ||
310 | { | ||
311 | gravityAccel+= -9.8f; | ||
312 | vec.Z = (gravityAccel + this._velocity.Z) * timeStep; | ||
313 | } | ||
314 | int res = this._character.Move(vec); | ||
315 | if(res == 1) | ||
316 | { | ||
317 | gravityAccel = 0; | ||
318 | } | ||
319 | } | ||
320 | |||
321 | public void UpdatePosition() | ||
322 | { | ||
323 | Vec3 vec = this._character.Position; | ||
324 | this._position.X = vec.X; | ||
325 | this._position.Y = vec.Y; | ||
326 | this._position.Z = vec.Z; | ||
327 | } | ||
328 | } | ||
329 | |||
330 | public class PhysXPrim : PhysicsActor | ||
331 | { | ||
332 | private PhysicsVector _position; | ||
333 | private PhysicsVector _velocity; | ||
334 | private PhysicsVector _acceleration; | ||
335 | private NxActor _prim; | ||
336 | |||
337 | public PhysXPrim(NxActor prim) | ||
338 | { | ||
339 | _velocity = new PhysicsVector(); | ||
340 | _position = new PhysicsVector(); | ||
341 | _acceleration = new PhysicsVector(); | ||
342 | _prim = prim; | ||
343 | } | ||
344 | public override bool Flying | ||
345 | { | ||
346 | get | ||
347 | { | ||
348 | return false; //no flying prims for you | ||
349 | } | ||
350 | set | ||
351 | { | ||
352 | |||
353 | } | ||
354 | } | ||
355 | public override PhysicsVector Position | ||
356 | { | ||
357 | get | ||
358 | { | ||
359 | PhysicsVector pos = new PhysicsVector(); | ||
360 | Vec3 vec = this._prim.Position; | ||
361 | pos.X = vec.X; | ||
362 | pos.Y = vec.Y; | ||
363 | pos.Z = vec.Z; | ||
364 | return pos; | ||
365 | |||
366 | } | ||
367 | set | ||
368 | { | ||
369 | PhysicsVector vec = value; | ||
370 | Vec3 pos = new Vec3(); | ||
371 | pos.X = vec.X; | ||
372 | pos.Y = vec.Y; | ||
373 | pos.Z = vec.Z; | ||
374 | this._prim.Position = pos; | ||
375 | } | ||
376 | } | ||
377 | 277 | ||
378 | public override PhysicsVector Size | 278 | public void UpdatePosition() |
279 | { | ||
280 | Vec3 vec = _character.Position; | ||
281 | _position.X = vec.X; | ||
282 | _position.Y = vec.Y; | ||
283 | _position.Z = vec.Z; | ||
284 | } | ||
285 | } | ||
286 | |||
287 | public class PhysXPrim : PhysicsActor | ||
288 | { | ||
289 | private PhysicsVector _position; | ||
290 | private PhysicsVector _velocity; | ||
291 | private PhysicsVector _acceleration; | ||
292 | private NxActor _prim; | ||
293 | |||
294 | public PhysXPrim(NxActor prim) | ||
295 | { | ||
296 | _velocity = new PhysicsVector(); | ||
297 | _position = new PhysicsVector(); | ||
298 | _acceleration = new PhysicsVector(); | ||
299 | _prim = prim; | ||
300 | } | ||
301 | |||
302 | public override bool Flying | ||
303 | { | ||
304 | get { return false; //no flying prims for you | ||
305 | } | ||
306 | set { } | ||
307 | } | ||
308 | |||
309 | public override PhysicsVector Position | ||
379 | { | 310 | { |
380 | get | 311 | get |
381 | { | 312 | { |
382 | return new PhysicsVector(0, 0, 0); | 313 | PhysicsVector pos = new PhysicsVector(); |
314 | Vec3 vec = _prim.Position; | ||
315 | pos.X = vec.X; | ||
316 | pos.Y = vec.Y; | ||
317 | pos.Z = vec.Z; | ||
318 | return pos; | ||
383 | } | 319 | } |
384 | set | 320 | set |
385 | { | 321 | { |
322 | PhysicsVector vec = value; | ||
323 | Vec3 pos = new Vec3(); | ||
324 | pos.X = vec.X; | ||
325 | pos.Y = vec.Y; | ||
326 | pos.Z = vec.Z; | ||
327 | _prim.Position = pos; | ||
386 | } | 328 | } |
387 | } | 329 | } |
388 | 330 | ||
389 | public override PhysicsVector Velocity | 331 | public override PhysicsVector Size |
390 | { | 332 | { |
391 | get | 333 | get { return new PhysicsVector(0, 0, 0); } |
392 | { | 334 | set { } |
393 | return _velocity; | 335 | } |
394 | } | 336 | |
395 | set | 337 | public override PhysicsVector Velocity |
396 | { | 338 | { |
397 | _velocity = value; | 339 | get { return _velocity; } |
398 | } | 340 | set { _velocity = value; } |
399 | } | 341 | } |
400 | 342 | ||
401 | public override bool Kinematic | 343 | public override bool Kinematic |
402 | { | 344 | { |
403 | get | 345 | get { return _prim.Kinematic; } |
404 | { | 346 | set { _prim.Kinematic = value; } |
405 | return this._prim.Kinematic; | 347 | } |
406 | } | 348 | |
407 | set | 349 | public override Quaternion Orientation |
408 | { | 350 | { |
409 | this._prim.Kinematic = value; | 351 | get |
410 | } | 352 | { |
411 | } | 353 | Quaternion res = new Quaternion(); |
412 | 354 | PhysXWrapper.Quaternion quat = _prim.GetOrientation(); | |
413 | public override Quaternion Orientation | 355 | res.w = quat.W; |
414 | { | 356 | res.x = quat.X; |
415 | get | 357 | res.y = quat.Y; |
416 | { | 358 | res.z = quat.Z; |
417 | Quaternion res = new Quaternion(); | 359 | return res; |
418 | PhysXWrapper.Quaternion quat = this._prim.GetOrientation(); | 360 | } |
419 | res.w = quat.W; | 361 | set { } |
420 | res.x = quat.X; | 362 | } |
421 | res.y = quat.Y; | 363 | |
422 | res.z = quat.Z; | 364 | public override PhysicsVector Acceleration |
423 | return res; | 365 | { |
424 | } | 366 | get { return _acceleration; } |
425 | set | 367 | } |
426 | { | 368 | |
427 | 369 | public void SetAcceleration(PhysicsVector accel) | |
428 | } | 370 | { |
429 | } | 371 | _acceleration = accel; |
430 | 372 | } | |
431 | public override PhysicsVector Acceleration | 373 | |
432 | { | 374 | public override void AddForce(PhysicsVector force) |
433 | get | 375 | { |
434 | { | 376 | } |
435 | return _acceleration; | 377 | |
436 | } | 378 | public override void SetMomentum(PhysicsVector momentum) |
437 | 379 | { | |
438 | } | 380 | } |
439 | public void SetAcceleration (PhysicsVector accel) | 381 | } |
440 | { | 382 | } \ No newline at end of file |
441 | this._acceleration = accel; | ||
442 | } | ||
443 | |||
444 | public override void AddForce(PhysicsVector force) | ||
445 | { | ||
446 | |||
447 | } | ||
448 | |||
449 | public override void SetMomentum(PhysicsVector momentum) | ||
450 | { | ||
451 | |||
452 | } | ||
453 | |||
454 | |||
455 | } | ||
456 | |||
457 | } | ||
diff --git a/OpenSim/Region/ScriptEngine/Common/Executor.cs b/OpenSim/Region/ScriptEngine/Common/Executor.cs index a2148ea..c656e01 100644 --- a/OpenSim/Region/ScriptEngine/Common/Executor.cs +++ b/OpenSim/Region/ScriptEngine/Common/Executor.cs | |||
@@ -28,7 +28,6 @@ | |||
28 | 28 | ||
29 | using System; | 29 | using System; |
30 | using System.Collections.Generic; | 30 | using System.Collections.Generic; |
31 | using System.Text; | ||
32 | using System.Reflection; | 31 | using System.Reflection; |
33 | using System.Runtime.Remoting.Lifetime; | 32 | using System.Runtime.Remoting.Lifetime; |
34 | 33 | ||
@@ -53,7 +52,7 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
53 | { | 52 | { |
54 | //Console.WriteLine("Executor: InitializeLifetimeService()"); | 53 | //Console.WriteLine("Executor: InitializeLifetimeService()"); |
55 | // return null; | 54 | // return null; |
56 | ILease lease = (ILease)base.InitializeLifetimeService(); | 55 | ILease lease = (ILease) base.InitializeLifetimeService(); |
57 | 56 | ||
58 | if (lease.CurrentState == LeaseState.Initial) | 57 | if (lease.CurrentState == LeaseState.Initial) |
59 | { | 58 | { |
@@ -75,56 +74,56 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
75 | // Instead use RuntimeTypeHandle, RuntimeFieldHandle and RunTimeHandle (IntPtr) instead! | 74 | // Instead use RuntimeTypeHandle, RuntimeFieldHandle and RunTimeHandle (IntPtr) instead! |
76 | //try | 75 | //try |
77 | //{ | 76 | //{ |
78 | if (m_Running == false) | 77 | if (m_Running == false) |
79 | { | 78 | { |
80 | // Script is inactive, do not execute! | 79 | // Script is inactive, do not execute! |
81 | return; | 80 | return; |
82 | } | 81 | } |
83 | 82 | ||
84 | string EventName = m_Script.State() + "_event_" + FunctionName; | 83 | string EventName = m_Script.State() + "_event_" + FunctionName; |
85 | 84 | ||
86 | //type.InvokeMember(EventName, BindingFlags.InvokeMethod, null, m_Script, args); | 85 | //type.InvokeMember(EventName, BindingFlags.InvokeMethod, null, m_Script, args); |
87 | 86 | ||
88 | //Console.WriteLine("ScriptEngine Executor.ExecuteEvent: \"" + EventName + "\""); | 87 | //Console.WriteLine("ScriptEngine Executor.ExecuteEvent: \"" + EventName + "\""); |
89 | 88 | ||
90 | if (Events.ContainsKey(EventName) == false) | 89 | if (Events.ContainsKey(EventName) == false) |
90 | { | ||
91 | // Not found, create | ||
92 | Type type = m_Script.GetType(); | ||
93 | try | ||
91 | { | 94 | { |
92 | // Not found, create | 95 | MethodInfo mi = type.GetMethod(EventName); |
93 | Type type = m_Script.GetType(); | 96 | Events.Add(EventName, mi); |
94 | try | ||
95 | { | ||
96 | MethodInfo mi = type.GetMethod(EventName); | ||
97 | Events.Add(EventName, mi); | ||
98 | } | ||
99 | catch | ||
100 | { | ||
101 | // Event name not found, cache it as not found | ||
102 | Events.Add(EventName, null); | ||
103 | } | ||
104 | } | 97 | } |
105 | 98 | catch | |
106 | // Get event | ||
107 | MethodInfo ev = null; | ||
108 | Events.TryGetValue(EventName, out ev); | ||
109 | |||
110 | if (ev == null) // No event by that name! | ||
111 | { | 99 | { |
112 | //Console.WriteLine("ScriptEngine Can not find any event named: \"" + EventName + "\""); | 100 | // Event name not found, cache it as not found |
113 | return; | 101 | Events.Add(EventName, null); |
114 | } | 102 | } |
103 | } | ||
104 | |||
105 | // Get event | ||
106 | MethodInfo ev = null; | ||
107 | Events.TryGetValue(EventName, out ev); | ||
108 | |||
109 | if (ev == null) // No event by that name! | ||
110 | { | ||
111 | //Console.WriteLine("ScriptEngine Can not find any event named: \"" + EventName + "\""); | ||
112 | return; | ||
113 | } | ||
115 | 114 | ||
116 | // Found | 115 | // Found |
117 | //try | 116 | //try |
118 | //{ | 117 | //{ |
119 | // Invoke it | 118 | // Invoke it |
120 | ev.Invoke(m_Script, args); | 119 | ev.Invoke(m_Script, args); |
121 | 120 | ||
122 | //} | 121 | //} |
123 | //catch (Exception e) | 122 | //catch (Exception e) |
124 | //{ | 123 | //{ |
125 | // // TODO: Send to correct place | 124 | // // TODO: Send to correct place |
126 | // Console.WriteLine("ScriptEngine Exception attempting to executing script function: " + e.ToString()); | 125 | // Console.WriteLine("ScriptEngine Exception attempting to executing script function: " + e.ToString()); |
127 | //} | 126 | //} |
128 | 127 | ||
129 | 128 | ||
130 | //} | 129 | //} |
@@ -136,8 +135,5 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
136 | { | 135 | { |
137 | m_Running = false; | 136 | m_Running = false; |
138 | } | 137 | } |
139 | |||
140 | |||
141 | } | 138 | } |
142 | 139 | } \ No newline at end of file | |
143 | } | ||
diff --git a/OpenSim/Region/ScriptEngine/Common/IScript.cs b/OpenSim/Region/ScriptEngine/Common/IScript.cs index df0e824..08c0e9c 100644 --- a/OpenSim/Region/ScriptEngine/Common/IScript.cs +++ b/OpenSim/Region/ScriptEngine/Common/IScript.cs | |||
@@ -26,10 +26,6 @@ | |||
26 | * | 26 | * |
27 | */ | 27 | */ |
28 | 28 | ||
29 | using System; | ||
30 | using System.Collections.Generic; | ||
31 | using System.Text; | ||
32 | |||
33 | namespace OpenSim.Region.ScriptEngine.Common | 29 | namespace OpenSim.Region.ScriptEngine.Common |
34 | { | 30 | { |
35 | public interface IScript | 31 | public interface IScript |
@@ -37,4 +33,4 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
37 | string State(); | 33 | string State(); |
38 | Executor Exec { get; } | 34 | Executor Exec { get; } |
39 | } | 35 | } |
40 | } | 36 | } \ No newline at end of file |
diff --git a/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands_Interface.cs b/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands_Interface.cs index ff5c6bf..9cba882 100644 --- a/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands_Interface.cs +++ b/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands_Interface.cs | |||
@@ -26,15 +26,12 @@ | |||
26 | * | 26 | * |
27 | */ | 27 | */ |
28 | /* Original code: Tedd Hansen */ | 28 | /* Original code: Tedd Hansen */ |
29 | using System; | ||
30 | using System.Collections.Generic; | 29 | using System.Collections.Generic; |
31 | using System.Text; | ||
32 | 30 | ||
33 | namespace OpenSim.Region.ScriptEngine.Common | 31 | namespace OpenSim.Region.ScriptEngine.Common |
34 | { | 32 | { |
35 | public interface LSL_BuiltIn_Commands_Interface | 33 | public interface LSL_BuiltIn_Commands_Interface |
36 | { | 34 | { |
37 | |||
38 | string State(); | 35 | string State(); |
39 | 36 | ||
40 | double llSin(double f); | 37 | double llSin(double f); |
@@ -404,7 +401,9 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
404 | //wiki: llSetTextureAnim(integer mode, integer face, integer sizex, integer sizey, double start, double length, double rate) | 401 | //wiki: llSetTextureAnim(integer mode, integer face, integer sizex, integer sizey, double start, double length, double rate) |
405 | void llSetTextureAnim(int mode, int face, int sizex, int sizey, double start, double length, double rate); | 402 | void llSetTextureAnim(int mode, int face, int sizex, int sizey, double start, double length, double rate); |
406 | //wiki: llTriggerSoundLimited(string sound, double volume, vector top_north_east, vector bottom_south_west) | 403 | //wiki: llTriggerSoundLimited(string sound, double volume, vector top_north_east, vector bottom_south_west) |
407 | void llTriggerSoundLimited(string sound, double volume, LSL_Types.Vector3 top_north_east, LSL_Types.Vector3 bottom_south_west); | 404 | void llTriggerSoundLimited(string sound, double volume, LSL_Types.Vector3 top_north_east, |
405 | LSL_Types.Vector3 bottom_south_west); | ||
406 | |||
408 | //wiki: llEjectFromLand(key pest) | 407 | //wiki: llEjectFromLand(key pest) |
409 | void llEjectFromLand(string pest); | 408 | void llEjectFromLand(string pest); |
410 | void llParseString2List(); | 409 | void llParseString2List(); |
@@ -437,7 +436,7 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
437 | //wiki: double llGetRegionFPS() | 436 | //wiki: double llGetRegionFPS() |
438 | double llGetRegionFPS(); | 437 | double llGetRegionFPS(); |
439 | //wiki: llParticleSystem(List<Object> rules | 438 | //wiki: llParticleSystem(List<Object> rules |
440 | void llParticleSystem(List<Object> rules); | 439 | void llParticleSystem(List<object> rules); |
441 | //wiki: llGroundRepel(double height, integer water, double tau) | 440 | //wiki: llGroundRepel(double height, integer water, double tau) |
442 | void llGroundRepel(double height, int water, double tau); | 441 | void llGroundRepel(double height, int water, double tau); |
443 | void llGiveInventoryList(); | 442 | void llGiveInventoryList(); |
@@ -548,7 +547,9 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
548 | //wiki: list llParseStringKeepNulls( string src, list separators, list spacers ) | 547 | //wiki: list llParseStringKeepNulls( string src, list separators, list spacers ) |
549 | List<string> llParseStringKeepNulls(string src, List<string> seperators, List<string> spacers); | 548 | List<string> llParseStringKeepNulls(string src, List<string> seperators, List<string> spacers); |
550 | //wiki: llRezAtRoot(string inventory, vector position, vector velocity, rotation rot, integer param) | 549 | //wiki: llRezAtRoot(string inventory, vector position, vector velocity, rotation rot, integer param) |
551 | void llRezAtRoot(string inventory, LSL_Types.Vector3 position, LSL_Types.Vector3 velocity, LSL_Types.Quaternion rot, int param); | 550 | void llRezAtRoot(string inventory, LSL_Types.Vector3 position, LSL_Types.Vector3 velocity, |
551 | LSL_Types.Quaternion rot, int param); | ||
552 | |||
552 | //wiki: integer llGetObjectPermMask(integer mask) | 553 | //wiki: integer llGetObjectPermMask(integer mask) |
553 | int llGetObjectPermMask(int mask); | 554 | int llGetObjectPermMask(int mask); |
554 | //wiki: llSetObjectPermMask(integer mask, integer value) | 555 | //wiki: llSetObjectPermMask(integer mask, integer value) |
@@ -632,4 +633,4 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
632 | //OpenSim functions | 633 | //OpenSim functions |
633 | string osSetDynamicTextureURL(string dynamicID, string contentType, string url, string extraParams, int timer); | 634 | string osSetDynamicTextureURL(string dynamicID, string contentType, string url, string extraParams, int timer); |
634 | } | 635 | } |
635 | } | 636 | } \ No newline at end of file |
diff --git a/OpenSim/Region/ScriptEngine/Common/LSL_Types.cs b/OpenSim/Region/ScriptEngine/Common/LSL_Types.cs index 7d69379..df3d752 100644 --- a/OpenSim/Region/ScriptEngine/Common/LSL_Types.cs +++ b/OpenSim/Region/ScriptEngine/Common/LSL_Types.cs | |||
@@ -41,11 +41,12 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
41 | public double Z; | 41 | public double Z; |
42 | 42 | ||
43 | public Vector3(Vector3 vector) | 43 | public Vector3(Vector3 vector) |
44 | { | 44 | { |
45 | X = (float)vector.X; | 45 | X = (float) vector.X; |
46 | Y = (float)vector.Y; | 46 | Y = (float) vector.Y; |
47 | Z = (float)vector.Z; | 47 | Z = (float) vector.Z; |
48 | } | 48 | } |
49 | |||
49 | public Vector3(double x, double y, double z) | 50 | public Vector3(double x, double y, double z) |
50 | { | 51 | { |
51 | X = x; | 52 | X = x; |
@@ -53,6 +54,7 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
53 | Z = z; | 54 | Z = z; |
54 | } | 55 | } |
55 | } | 56 | } |
57 | |||
56 | [Serializable] | 58 | [Serializable] |
57 | public struct Quaternion | 59 | public struct Quaternion |
58 | { | 60 | { |
@@ -62,12 +64,13 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
62 | public double R; | 64 | public double R; |
63 | 65 | ||
64 | public Quaternion(Quaternion Quat) | 66 | public Quaternion(Quaternion Quat) |
65 | { | 67 | { |
66 | X = (float)Quat.X; | 68 | X = (float) Quat.X; |
67 | Y = (float)Quat.Y; | 69 | Y = (float) Quat.Y; |
68 | Z = (float)Quat.Z; | 70 | Z = (float) Quat.Z; |
69 | R = (float)Quat.R; | 71 | R = (float) Quat.R; |
70 | } | 72 | } |
73 | |||
71 | public Quaternion(double x, double y, double z, double r) | 74 | public Quaternion(double x, double y, double z, double r) |
72 | { | 75 | { |
73 | X = x; | 76 | X = x; |
@@ -75,7 +78,6 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
75 | Z = z; | 78 | Z = z; |
76 | R = r; | 79 | R = r; |
77 | } | 80 | } |
78 | |||
79 | } | 81 | } |
80 | } | 82 | } |
81 | } | 83 | } \ No newline at end of file |
diff --git a/OpenSim/Region/ScriptEngine/Common/Properties/AssemblyInfo.cs b/OpenSim/Region/ScriptEngine/Common/Properties/AssemblyInfo.cs index 98704d5..48cf45a 100644 --- a/OpenSim/Region/ScriptEngine/Common/Properties/AssemblyInfo.cs +++ b/OpenSim/Region/ScriptEngine/Common/Properties/AssemblyInfo.cs | |||
@@ -1,26 +1,28 @@ | |||
1 | using System.Reflection; | 1 | using System.Reflection; |
2 | using System.Runtime.CompilerServices; | ||
3 | using System.Runtime.InteropServices; | 2 | using System.Runtime.InteropServices; |
4 | 3 | ||
5 | // General Information about an assembly is controlled through the following | 4 | // General Information about an assembly is controlled through the following |
6 | // set of attributes. Change these attribute values to modify the information | 5 | // set of attributes. Change these attribute values to modify the information |
7 | // associated with an assembly. | 6 | // associated with an assembly. |
8 | [assembly: AssemblyTitle("OpenSim.Region.ScriptEngine.Common")] | 7 | |
9 | [assembly: AssemblyDescription("")] | 8 | [assembly : AssemblyTitle("OpenSim.Region.ScriptEngine.Common")] |
10 | [assembly: AssemblyConfiguration("")] | 9 | [assembly : AssemblyDescription("")] |
11 | [assembly: AssemblyCompany("")] | 10 | [assembly : AssemblyConfiguration("")] |
12 | [assembly: AssemblyProduct("OpenSim.Region.ScriptEngine.Common")] | 11 | [assembly : AssemblyCompany("")] |
13 | [assembly: AssemblyCopyright("Copyright © 2007")] | 12 | [assembly : AssemblyProduct("OpenSim.Region.ScriptEngine.Common")] |
14 | [assembly: AssemblyTrademark("")] | 13 | [assembly : AssemblyCopyright("Copyright © 2007")] |
15 | [assembly: AssemblyCulture("")] | 14 | [assembly : AssemblyTrademark("")] |
15 | [assembly : AssemblyCulture("")] | ||
16 | 16 | ||
17 | // Setting ComVisible to false makes the types in this assembly not visible | 17 | // Setting ComVisible to false makes the types in this assembly not visible |
18 | // to COM components. If you need to access a type in this assembly from | 18 | // to COM components. If you need to access a type in this assembly from |
19 | // COM, set the ComVisible attribute to true on that type. | 19 | // COM, set the ComVisible attribute to true on that type. |
20 | [assembly: ComVisible(false)] | 20 | |
21 | [assembly : ComVisible(false)] | ||
21 | 22 | ||
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM | 23 | // The following GUID is for the ID of the typelib if this project is exposed to COM |
23 | [assembly: Guid("0bf07c53-ae51-487f-a907-e9b30c251602")] | 24 | |
25 | [assembly : Guid("0bf07c53-ae51-487f-a907-e9b30c251602")] | ||
24 | 26 | ||
25 | // Version information for an assembly consists of the following four values: | 27 | // Version information for an assembly consists of the following four values: |
26 | // | 28 | // |
@@ -29,5 +31,6 @@ using System.Runtime.InteropServices; | |||
29 | // Build Number | 31 | // Build Number |
30 | // Revision | 32 | // Revision |
31 | // | 33 | // |
32 | [assembly: AssemblyVersion("1.0.0.0")] | 34 | |
33 | [assembly: AssemblyFileVersion("1.0.0.0")] | 35 | [assembly : AssemblyVersion("1.0.0.0")] |
36 | [assembly : AssemblyFileVersion("1.0.0.0")] \ No newline at end of file | ||
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/AppDomainManager.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/AppDomainManager.cs index 391e3aa..bc241ce 100644 --- a/OpenSim/Region/ScriptEngine/DotNetEngine/AppDomainManager.cs +++ b/OpenSim/Region/ScriptEngine/DotNetEngine/AppDomainManager.cs | |||
@@ -27,27 +27,22 @@ | |||
27 | */ | 27 | */ |
28 | 28 | ||
29 | using System; | 29 | using System; |
30 | using System.Collections; | ||
30 | using System.Collections.Generic; | 31 | using System.Collections.Generic; |
31 | using System.Text; | ||
32 | using System.Reflection; | 32 | using System.Reflection; |
33 | using System.Threading; | ||
34 | using System.Runtime.Remoting; | ||
35 | using System.IO; | ||
36 | using OpenSim.Region.Environment.Scenes; | ||
37 | using OpenSim.Region.Environment.Scenes.Scripting; | ||
38 | using OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL; | 33 | using OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL; |
39 | using OpenSim.Region.ScriptEngine.Common; | ||
40 | using libsecondlife; | ||
41 | 34 | ||
42 | namespace OpenSim.Region.ScriptEngine.DotNetEngine | 35 | namespace OpenSim.Region.ScriptEngine.DotNetEngine |
43 | { | 36 | { |
44 | public class AppDomainManager | 37 | public class AppDomainManager |
45 | { | 38 | { |
46 | private int maxScriptsPerAppDomain = 1; | 39 | private int maxScriptsPerAppDomain = 1; |
40 | |||
47 | /// <summary> | 41 | /// <summary> |
48 | /// Internal list of all AppDomains | 42 | /// Internal list of all AppDomains |
49 | /// </summary> | 43 | /// </summary> |
50 | private List<AppDomainStructure> appDomains = new List<AppDomainStructure>(); | 44 | private List<AppDomainStructure> appDomains = new List<AppDomainStructure>(); |
45 | |||
51 | /// <summary> | 46 | /// <summary> |
52 | /// Structure to keep track of data around AppDomain | 47 | /// Structure to keep track of data around AppDomain |
53 | /// </summary> | 48 | /// </summary> |
@@ -57,19 +52,23 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
57 | /// The AppDomain itself | 52 | /// The AppDomain itself |
58 | /// </summary> | 53 | /// </summary> |
59 | public AppDomain CurrentAppDomain; | 54 | public AppDomain CurrentAppDomain; |
55 | |||
60 | /// <summary> | 56 | /// <summary> |
61 | /// Number of scripts loaded into AppDomain | 57 | /// Number of scripts loaded into AppDomain |
62 | /// </summary> | 58 | /// </summary> |
63 | public int ScriptsLoaded; | 59 | public int ScriptsLoaded; |
60 | |||
64 | /// <summary> | 61 | /// <summary> |
65 | /// Number of dead scripts | 62 | /// Number of dead scripts |
66 | /// </summary> | 63 | /// </summary> |
67 | public int ScriptsWaitingUnload; | 64 | public int ScriptsWaitingUnload; |
68 | } | 65 | } |
66 | |||
69 | /// <summary> | 67 | /// <summary> |
70 | /// Current AppDomain | 68 | /// Current AppDomain |
71 | /// </summary> | 69 | /// </summary> |
72 | private AppDomainStructure currentAD; | 70 | private AppDomainStructure currentAD; |
71 | |||
73 | private object getLock = new object(); // Mutex | 72 | private object getLock = new object(); // Mutex |
74 | private object freeLock = new object(); // Mutex | 73 | private object freeLock = new object(); // Mutex |
75 | 74 | ||
@@ -94,22 +93,23 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
94 | { | 93 | { |
95 | // Add it to AppDomains list and empty current | 94 | // Add it to AppDomains list and empty current |
96 | appDomains.Add(currentAD); | 95 | appDomains.Add(currentAD); |
97 | currentAD = null; | 96 | currentAD = null; |
98 | } | 97 | } |
99 | // No current | 98 | // No current |
100 | if (currentAD == null) | 99 | if (currentAD == null) |
101 | { | 100 | { |
102 | // Create a new current AppDomain | 101 | // Create a new current AppDomain |
103 | currentAD = new AppDomainStructure(); | 102 | currentAD = new AppDomainStructure(); |
104 | currentAD.CurrentAppDomain = PrepareNewAppDomain(); | 103 | currentAD.CurrentAppDomain = PrepareNewAppDomain(); |
105 | } | 104 | } |
106 | 105 | ||
107 | Console.WriteLine("Scripts loaded in this Appdomain: " + currentAD.ScriptsLoaded); | 106 | Console.WriteLine("Scripts loaded in this Appdomain: " + currentAD.ScriptsLoaded); |
108 | return currentAD; | 107 | return currentAD; |
109 | } // lock | 108 | } // lock |
110 | } | 109 | } |
111 | 110 | ||
112 | private int AppDomainNameCount; | 111 | private int AppDomainNameCount; |
112 | |||
113 | /// <summary> | 113 | /// <summary> |
114 | /// Create and prepare a new AppDomain for scripts | 114 | /// Create and prepare a new AppDomain for scripts |
115 | /// </summary> | 115 | /// </summary> |
@@ -130,12 +130,12 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
130 | ads.ConfigurationFile = AppDomain.CurrentDomain.SetupInformation.ConfigurationFile; | 130 | ads.ConfigurationFile = AppDomain.CurrentDomain.SetupInformation.ConfigurationFile; |
131 | 131 | ||
132 | AppDomain AD = AppDomain.CreateDomain("ScriptAppDomain_" + AppDomainNameCount, null, ads); | 132 | AppDomain AD = AppDomain.CreateDomain("ScriptAppDomain_" + AppDomainNameCount, null, ads); |
133 | Console.WriteLine("Loading: " + AssemblyName.GetAssemblyName("OpenSim.Region.ScriptEngine.Common.dll").ToString()); | 133 | Console.WriteLine("Loading: " + |
134 | AssemblyName.GetAssemblyName("OpenSim.Region.ScriptEngine.Common.dll").ToString()); | ||
134 | AD.Load(AssemblyName.GetAssemblyName("OpenSim.Region.ScriptEngine.Common.dll")); | 135 | AD.Load(AssemblyName.GetAssemblyName("OpenSim.Region.ScriptEngine.Common.dll")); |
135 | 136 | ||
136 | // Return the new AppDomain | 137 | // Return the new AppDomain |
137 | return AD; | 138 | return AD; |
138 | |||
139 | } | 139 | } |
140 | 140 | ||
141 | /// <summary> | 141 | /// <summary> |
@@ -146,7 +146,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
146 | lock (freeLock) | 146 | lock (freeLock) |
147 | { | 147 | { |
148 | // Go through all | 148 | // Go through all |
149 | foreach (AppDomainStructure ads in new System.Collections.ArrayList(appDomains)) | 149 | foreach (AppDomainStructure ads in new ArrayList(appDomains)) |
150 | { | 150 | { |
151 | // Don't process current AppDomain | 151 | // Don't process current AppDomain |
152 | if (ads.CurrentAppDomain != currentAD.CurrentAppDomain) | 152 | if (ads.CurrentAppDomain != currentAD.CurrentAppDomain) |
@@ -164,23 +164,25 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
164 | // Unload | 164 | // Unload |
165 | AppDomain.Unload(ads.CurrentAppDomain); | 165 | AppDomain.Unload(ads.CurrentAppDomain); |
166 | #if DEBUG | 166 | #if DEBUG |
167 | Console.WriteLine("AppDomain unload freed " + (m - GC.GetTotalMemory(true)) + " bytes of memory"); | 167 | Console.WriteLine("AppDomain unload freed " + (m - GC.GetTotalMemory(true)) + |
168 | " bytes of memory"); | ||
168 | #endif | 169 | #endif |
169 | } | 170 | } |
170 | } | 171 | } |
171 | } // foreach | 172 | } // foreach |
172 | } // lock | 173 | } // lock |
173 | } | 174 | } |
174 | |||
175 | 175 | ||
176 | 176 | ||
177 | public OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL.LSL_BaseClass LoadScript(string FileName) | 177 | public LSL_BaseClass LoadScript(string FileName) |
178 | { | 178 | { |
179 | // Find next available AppDomain to put it in | 179 | // Find next available AppDomain to put it in |
180 | AppDomainStructure FreeAppDomain = GetFreeAppDomain(); | 180 | AppDomainStructure FreeAppDomain = GetFreeAppDomain(); |
181 | 181 | ||
182 | Console.WriteLine("Loading into AppDomain: " + FileName); | 182 | Console.WriteLine("Loading into AppDomain: " + FileName); |
183 | LSL_BaseClass mbrt = (LSL_BaseClass)FreeAppDomain.CurrentAppDomain.CreateInstanceFromAndUnwrap(FileName, "SecondLife.Script"); | 183 | LSL_BaseClass mbrt = |
184 | (LSL_BaseClass) | ||
185 | FreeAppDomain.CurrentAppDomain.CreateInstanceFromAndUnwrap(FileName, "SecondLife.Script"); | ||
184 | //Console.WriteLine("ScriptEngine AppDomainManager: is proxy={0}", RemotingServices.IsTransparentProxy(mbrt)); | 186 | //Console.WriteLine("ScriptEngine AppDomainManager: is proxy={0}", RemotingServices.IsTransparentProxy(mbrt)); |
185 | FreeAppDomain.ScriptsLoaded++; | 187 | FreeAppDomain.ScriptsLoaded++; |
186 | 188 | ||
@@ -207,7 +209,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
207 | } | 209 | } |
208 | 210 | ||
209 | // Lopp through all AppDomains | 211 | // Lopp through all AppDomains |
210 | foreach (AppDomainStructure ads in new System.Collections.ArrayList(appDomains)) | 212 | foreach (AppDomainStructure ads in new ArrayList(appDomains)) |
211 | { | 213 | { |
212 | if (ads.CurrentAppDomain == ad) | 214 | if (ads.CurrentAppDomain == ad) |
213 | { | 215 | { |
@@ -219,10 +221,6 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
219 | } // lock | 221 | } // lock |
220 | 222 | ||
221 | UnloadAppDomains(); // Outsite lock, has its own GetLock | 223 | UnloadAppDomains(); // Outsite lock, has its own GetLock |
222 | |||
223 | |||
224 | } | 224 | } |
225 | |||
226 | |||
227 | } | 225 | } |
228 | } | 226 | } \ No newline at end of file |
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/Common.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/Common.cs index 49ce8b8..e04a9ed 100644 --- a/OpenSim/Region/ScriptEngine/DotNetEngine/Common.cs +++ b/OpenSim/Region/ScriptEngine/DotNetEngine/Common.cs | |||
@@ -26,34 +26,30 @@ | |||
26 | * | 26 | * |
27 | */ | 27 | */ |
28 | /* Original code: Tedd Hansen */ | 28 | /* Original code: Tedd Hansen */ |
29 | using System; | ||
30 | using System.Collections.Generic; | ||
31 | using System.Text; | ||
32 | |||
33 | namespace OpenSim.Region.ScriptEngine.DotNetEngine | 29 | namespace OpenSim.Region.ScriptEngine.DotNetEngine |
34 | { | 30 | { |
35 | public static class Common | 31 | public static class Common |
36 | { | 32 | { |
37 | static public bool debug = true; | 33 | public static bool debug = true; |
38 | static public ScriptEngine mySE; | 34 | public static ScriptEngine mySE; |
39 | 35 | ||
40 | //public delegate void SendToDebugEventDelegate(string Message); | 36 | //public delegate void SendToDebugEventDelegate(string Message); |
41 | //public delegate void SendToLogEventDelegate(string Message); | 37 | //public delegate void SendToLogEventDelegate(string Message); |
42 | //static public event SendToDebugEventDelegate SendToDebugEvent; | 38 | //static public event SendToDebugEventDelegate SendToDebugEvent; |
43 | //static public event SendToLogEventDelegate SendToLogEvent; | 39 | //static public event SendToLogEventDelegate SendToLogEvent; |
44 | 40 | ||
45 | static public void SendToDebug(string Message) | 41 | public static void SendToDebug(string Message) |
46 | { | 42 | { |
47 | //if (Debug == true) | 43 | //if (Debug == true) |
48 | mySE.Log.Verbose("ScriptEngine", "Debug: " + Message); | 44 | mySE.Log.Verbose("ScriptEngine", "Debug: " + Message); |
49 | //SendToDebugEvent("\r\n" + DateTime.Now.ToString("[HH:mm:ss] ") + Message); | 45 | //SendToDebugEvent("\r\n" + DateTime.Now.ToString("[HH:mm:ss] ") + Message); |
50 | } | 46 | } |
51 | static public void SendToLog(string Message) | 47 | |
48 | public static void SendToLog(string Message) | ||
52 | { | 49 | { |
53 | //if (Debug == true) | 50 | //if (Debug == true) |
54 | mySE.Log.Verbose("ScriptEngine", "LOG: " + Message); | 51 | mySE.Log.Verbose("ScriptEngine", "LOG: " + Message); |
55 | //SendToLogEvent("\r\n" + DateTime.Now.ToString("[HH:mm:ss] ") + Message); | 52 | //SendToLogEvent("\r\n" + DateTime.Now.ToString("[HH:mm:ss] ") + Message); |
56 | } | 53 | } |
57 | } | 54 | } |
58 | 55 | } \ No newline at end of file | |
59 | } | ||
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/Compiler.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/Compiler.cs index a2eee66..7f452e0 100644 --- a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/Compiler.cs +++ b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/Compiler.cs | |||
@@ -27,16 +27,13 @@ | |||
27 | */ | 27 | */ |
28 | 28 | ||
29 | using System; | 29 | using System; |
30 | using System.Collections.Generic; | ||
31 | using System.Text; | ||
32 | using System.IO; | ||
33 | using Microsoft.CSharp; | ||
34 | using System.CodeDom.Compiler; | 30 | using System.CodeDom.Compiler; |
31 | using System.IO; | ||
35 | using System.Reflection; | 32 | using System.Reflection; |
33 | using Microsoft.CSharp; | ||
36 | 34 | ||
37 | namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL | 35 | namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL |
38 | { | 36 | { |
39 | |||
40 | public class Compiler | 37 | public class Compiler |
41 | { | 38 | { |
42 | private LSL2CSConverter LSL_Converter = new LSL2CSConverter(); | 39 | private LSL2CSConverter LSL_Converter = new LSL2CSConverter(); |
@@ -45,7 +42,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL | |||
45 | //private ICodeCompiler icc = codeProvider.CreateCompiler(); | 42 | //private ICodeCompiler icc = codeProvider.CreateCompiler(); |
46 | public string CompileFromFile(string LSOFileName) | 43 | public string CompileFromFile(string LSOFileName) |
47 | { | 44 | { |
48 | switch (System.IO.Path.GetExtension(LSOFileName).ToLower()) | 45 | switch (Path.GetExtension(LSOFileName).ToLower()) |
49 | { | 46 | { |
50 | case ".txt": | 47 | case ".txt": |
51 | case ".lsl": | 48 | case ".lsl": |
@@ -58,6 +55,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL | |||
58 | throw new Exception("Unknown script type."); | 55 | throw new Exception("Unknown script type."); |
59 | } | 56 | } |
60 | } | 57 | } |
58 | |||
61 | /// <summary> | 59 | /// <summary> |
62 | /// Converts script from LSL to CS and calls CompileFromCSText | 60 | /// Converts script from LSL to CS and calls CompileFromCSText |
63 | /// </summary> | 61 | /// </summary> |
@@ -67,13 +65,14 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL | |||
67 | { | 65 | { |
68 | if (Script.Substring(0, 4).ToLower() == "//c#") | 66 | if (Script.Substring(0, 4).ToLower() == "//c#") |
69 | { | 67 | { |
70 | return CompileFromCSText( Script ); | 68 | return CompileFromCSText(Script); |
71 | } | 69 | } |
72 | else | 70 | else |
73 | { | 71 | { |
74 | return CompileFromCSText(LSL_Converter.Convert(Script)); | 72 | return CompileFromCSText(LSL_Converter.Convert(Script)); |
75 | } | 73 | } |
76 | } | 74 | } |
75 | |||
77 | /// <summary> | 76 | /// <summary> |
78 | /// Compile CS script to .Net assembly (.dll) | 77 | /// Compile CS script to .Net assembly (.dll) |
79 | /// </summary> | 78 | /// </summary> |
@@ -81,14 +80,12 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL | |||
81 | /// <returns>Filename to .dll assembly</returns> | 80 | /// <returns>Filename to .dll assembly</returns> |
82 | public string CompileFromCSText(string Script) | 81 | public string CompileFromCSText(string Script) |
83 | { | 82 | { |
84 | |||
85 | |||
86 | // Output assembly name | 83 | // Output assembly name |
87 | scriptCompileCounter++; | 84 | scriptCompileCounter++; |
88 | string OutFile = Path.Combine("ScriptEngines", "Script_" + scriptCompileCounter + ".dll"); | 85 | string OutFile = Path.Combine("ScriptEngines", "Script_" + scriptCompileCounter + ".dll"); |
89 | try | 86 | try |
90 | { | 87 | { |
91 | System.IO.File.Delete(OutFile); | 88 | File.Delete(OutFile); |
92 | } | 89 | } |
93 | catch (Exception e) | 90 | catch (Exception e) |
94 | { | 91 | { |
@@ -99,12 +96,15 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL | |||
99 | // DEBUG - write source to disk | 96 | // DEBUG - write source to disk |
100 | try | 97 | try |
101 | { | 98 | { |
102 | File.WriteAllText(Path.Combine("ScriptEngines", "debug_" + Path.GetFileNameWithoutExtension(OutFile) + ".cs"), Script); | 99 | File.WriteAllText( |
100 | Path.Combine("ScriptEngines", "debug_" + Path.GetFileNameWithoutExtension(OutFile) + ".cs"), Script); | ||
101 | } | ||
102 | catch | ||
103 | { | ||
103 | } | 104 | } |
104 | catch { } | ||
105 | 105 | ||
106 | // Do actual compile | 106 | // Do actual compile |
107 | System.CodeDom.Compiler.CompilerParameters parameters = new CompilerParameters(); | 107 | CompilerParameters parameters = new CompilerParameters(); |
108 | parameters.IncludeDebugInformation = true; | 108 | parameters.IncludeDebugInformation = true; |
109 | // Add all available assemblies | 109 | // Add all available assemblies |
110 | foreach (Assembly asm in AppDomain.CurrentDomain.GetAssemblies()) | 110 | foreach (Assembly asm in AppDomain.CurrentDomain.GetAssemblies()) |
@@ -114,11 +114,11 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL | |||
114 | } | 114 | } |
115 | 115 | ||
116 | string rootPath = Path.GetDirectoryName(AppDomain.CurrentDomain.BaseDirectory); | 116 | string rootPath = Path.GetDirectoryName(AppDomain.CurrentDomain.BaseDirectory); |
117 | string rootPathSE = Path.GetDirectoryName(this.GetType().Assembly.Location); | 117 | string rootPathSE = Path.GetDirectoryName(GetType().Assembly.Location); |
118 | //Console.WriteLine("Assembly location: " + rootPath); | 118 | //Console.WriteLine("Assembly location: " + rootPath); |
119 | parameters.ReferencedAssemblies.Add(Path.Combine(rootPath, "OpenSim.Region.ScriptEngine.Common.dll")); | 119 | parameters.ReferencedAssemblies.Add(Path.Combine(rootPath, "OpenSim.Region.ScriptEngine.Common.dll")); |
120 | parameters.ReferencedAssemblies.Add(Path.Combine(rootPathSE, "OpenSim.Region.ScriptEngine.DotNetEngine.dll")); | 120 | parameters.ReferencedAssemblies.Add(Path.Combine(rootPathSE, "OpenSim.Region.ScriptEngine.DotNetEngine.dll")); |
121 | 121 | ||
122 | //parameters.ReferencedAssemblies.Add("OpenSim.Region.Environment"); | 122 | //parameters.ReferencedAssemblies.Add("OpenSim.Region.Environment"); |
123 | parameters.GenerateExecutable = false; | 123 | parameters.GenerateExecutable = false; |
124 | parameters.OutputAssembly = OutFile; | 124 | parameters.OutputAssembly = OutFile; |
@@ -129,13 +129,12 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL | |||
129 | // TODO: Return errors to user somehow | 129 | // TODO: Return errors to user somehow |
130 | if (results.Errors.Count > 0) | 130 | if (results.Errors.Count > 0) |
131 | { | 131 | { |
132 | |||
133 | string errtext = ""; | 132 | string errtext = ""; |
134 | foreach (CompilerError CompErr in results.Errors) | 133 | foreach (CompilerError CompErr in results.Errors) |
135 | { | 134 | { |
136 | errtext += "Line number " + (CompErr.Line - 1) + | 135 | errtext += "Line number " + (CompErr.Line - 1) + |
137 | ", Error Number: " + CompErr.ErrorNumber + | 136 | ", Error Number: " + CompErr.ErrorNumber + |
138 | ", '" + CompErr.ErrorText + "'\r\n"; | 137 | ", '" + CompErr.ErrorText + "'\r\n"; |
139 | } | 138 | } |
140 | throw new Exception(errtext); | 139 | throw new Exception(errtext); |
141 | } | 140 | } |
@@ -143,6 +142,5 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL | |||
143 | 142 | ||
144 | return OutFile; | 143 | return OutFile; |
145 | } | 144 | } |
146 | |||
147 | } | 145 | } |
148 | } | 146 | } \ No newline at end of file |
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/LSL2CSConverter.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/LSL2CSConverter.cs index 18eeaa3..0c28617 100644 --- a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/LSL2CSConverter.cs +++ b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/LSL2CSConverter.cs | |||
@@ -26,9 +26,7 @@ | |||
26 | * | 26 | * |
27 | */ | 27 | */ |
28 | 28 | ||
29 | using System; | ||
30 | using System.Collections.Generic; | 29 | using System.Collections.Generic; |
31 | using System.Text; | ||
32 | using System.Text.RegularExpressions; | 30 | using System.Text.RegularExpressions; |
33 | 31 | ||
34 | namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL | 32 | namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL |
@@ -51,9 +49,8 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL | |||
51 | dataTypes.Add("rotation", "LSL_Types.Quaternion"); | 49 | dataTypes.Add("rotation", "LSL_Types.Quaternion"); |
52 | dataTypes.Add("list", "list"); | 50 | dataTypes.Add("list", "list"); |
53 | dataTypes.Add("null", "null"); | 51 | dataTypes.Add("null", "null"); |
54 | |||
55 | } | 52 | } |
56 | 53 | ||
57 | public string Convert(string Script) | 54 | public string Convert(string Script) |
58 | { | 55 | { |
59 | string Return = ""; | 56 | string Return = ""; |
@@ -81,7 +78,6 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL | |||
81 | int quote_replaced_count = 0; | 78 | int quote_replaced_count = 0; |
82 | for (int p = 0; p < Script.Length; p++) | 79 | for (int p = 0; p < Script.Length; p++) |
83 | { | 80 | { |
84 | |||
85 | C = Script.Substring(p, 1); | 81 | C = Script.Substring(p, 1); |
86 | while (true) | 82 | while (true) |
87 | { | 83 | { |
@@ -99,10 +95,13 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL | |||
99 | if (quote == "") | 95 | if (quote == "") |
100 | { | 96 | { |
101 | // We didn't replace quote, probably because of empty string? | 97 | // We didn't replace quote, probably because of empty string? |
102 | _Script += quote_replacement_string + quote_replaced_count.ToString().PadLeft(5, "0".ToCharArray()[0]); | 98 | _Script += quote_replacement_string + |
99 | quote_replaced_count.ToString().PadLeft(5, "0".ToCharArray()[0]); | ||
103 | } | 100 | } |
104 | // We just left a quote | 101 | // We just left a quote |
105 | quotes.Add(quote_replacement_string + quote_replaced_count.ToString().PadLeft(5, "0".ToCharArray()[0]), quote); | 102 | quotes.Add( |
103 | quote_replacement_string + | ||
104 | quote_replaced_count.ToString().PadLeft(5, "0".ToCharArray()[0]), quote); | ||
106 | quote = ""; | 105 | quote = ""; |
107 | } | 106 | } |
108 | break; | 107 | break; |
@@ -112,7 +111,6 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL | |||
112 | { | 111 | { |
113 | // We are not inside a quote | 112 | // We are not inside a quote |
114 | quote_replaced = false; | 113 | quote_replaced = false; |
115 | |||
116 | } | 114 | } |
117 | else | 115 | else |
118 | { | 116 | { |
@@ -120,7 +118,8 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL | |||
120 | if (!quote_replaced) | 118 | if (!quote_replaced) |
121 | { | 119 | { |
122 | // Replace quote | 120 | // Replace quote |
123 | _Script += quote_replacement_string + quote_replaced_count.ToString().PadLeft(5, "0".ToCharArray()[0]); | 121 | _Script += quote_replacement_string + |
122 | quote_replaced_count.ToString().PadLeft(5, "0".ToCharArray()[0]); | ||
124 | quote_replaced = true; | 123 | quote_replaced = true; |
125 | } | 124 | } |
126 | quote += C; | 125 | quote += C; |
@@ -141,7 +140,6 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL | |||
141 | // | 140 | // |
142 | 141 | ||
143 | 142 | ||
144 | |||
145 | // | 143 | // |
146 | // PROCESS STATES | 144 | // PROCESS STATES |
147 | // Remove state definitions and add state names to start of each event within state | 145 | // Remove state definitions and add state names to start of each event within state |
@@ -170,7 +168,9 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL | |||
170 | if (ilevel == 1 && lastlevel == 0) | 168 | if (ilevel == 1 && lastlevel == 0) |
171 | { | 169 | { |
172 | // 0 => 1: Get last | 170 | // 0 => 1: Get last |
173 | Match m = Regex.Match(cache, @"(?![a-zA-Z_]+)\s*([a-zA-Z_]+)[^a-zA-Z_\(\)]*{", RegexOptions.Compiled | RegexOptions.Multiline | RegexOptions.Singleline); | 171 | Match m = |
172 | Regex.Match(cache, @"(?![a-zA-Z_]+)\s*([a-zA-Z_]+)[^a-zA-Z_\(\)]*{", | ||
173 | RegexOptions.Compiled | RegexOptions.Multiline | RegexOptions.Singleline); | ||
174 | 174 | ||
175 | in_state = false; | 175 | in_state = false; |
176 | if (m.Success) | 176 | if (m.Success) |
@@ -179,7 +179,11 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL | |||
179 | in_state = true; | 179 | in_state = true; |
180 | current_statename = m.Groups[1].Captures[0].Value; | 180 | current_statename = m.Groups[1].Captures[0].Value; |
181 | //Console.WriteLine("Current statename: " + current_statename); | 181 | //Console.WriteLine("Current statename: " + current_statename); |
182 | cache = Regex.Replace(cache, @"(?<s1>(?![a-zA-Z_]+)\s*)" + @"([a-zA-Z_]+)(?<s2>[^a-zA-Z_\(\)]*){", "${s1}${s2}", RegexOptions.Compiled | RegexOptions.Multiline | RegexOptions.Singleline); | 182 | cache = |
183 | Regex.Replace(cache, | ||
184 | @"(?<s1>(?![a-zA-Z_]+)\s*)" + @"([a-zA-Z_]+)(?<s2>[^a-zA-Z_\(\)]*){", | ||
185 | "${s1}${s2}", | ||
186 | RegexOptions.Compiled | RegexOptions.Multiline | RegexOptions.Singleline); | ||
183 | } | 187 | } |
184 | ret += cache; | 188 | ret += cache; |
185 | cache = ""; | 189 | cache = ""; |
@@ -196,7 +200,11 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL | |||
196 | // void dataserver(key query_id, string data) { | 200 | // void dataserver(key query_id, string data) { |
197 | //cache = Regex.Replace(cache, @"([^a-zA-Z_]\s*)((?!if|switch|for)[a-zA-Z_]+\s*\([^\)]*\)[^{]*{)", "$1" + "<STATE>" + "$2", RegexOptions.Compiled | RegexOptions.Multiline | RegexOptions.Singleline); | 201 | //cache = Regex.Replace(cache, @"([^a-zA-Z_]\s*)((?!if|switch|for)[a-zA-Z_]+\s*\([^\)]*\)[^{]*{)", "$1" + "<STATE>" + "$2", RegexOptions.Compiled | RegexOptions.Multiline | RegexOptions.Singleline); |
198 | //Console.WriteLine("Replacing using statename: " + current_statename); | 202 | //Console.WriteLine("Replacing using statename: " + current_statename); |
199 | cache = Regex.Replace(cache, @"^(\s*)((?!(if|switch|for)[^a-zA-Z0-9_])[a-zA-Z0-9_]*\s*\([^\)]*\)[^;]*\{)", @"$1public " + current_statename + "_event_$2", RegexOptions.Compiled | RegexOptions.Multiline | RegexOptions.Singleline); | 203 | cache = |
204 | Regex.Replace(cache, | ||
205 | @"^(\s*)((?!(if|switch|for)[^a-zA-Z0-9_])[a-zA-Z0-9_]*\s*\([^\)]*\)[^;]*\{)", | ||
206 | @"$1public " + current_statename + "_event_$2", | ||
207 | RegexOptions.Compiled | RegexOptions.Multiline | RegexOptions.Singleline); | ||
200 | } | 208 | } |
201 | 209 | ||
202 | ret += cache; | 210 | ret += cache; |
@@ -216,32 +224,48 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL | |||
216 | ret = ""; | 224 | ret = ""; |
217 | 225 | ||
218 | 226 | ||
219 | |||
220 | foreach (string key in dataTypes.Keys) | 227 | foreach (string key in dataTypes.Keys) |
221 | { | 228 | { |
222 | string val; | 229 | string val; |
223 | dataTypes.TryGetValue(key, out val); | 230 | dataTypes.TryGetValue(key, out val); |
224 | 231 | ||
225 | // Replace CAST - (integer) with (int) | 232 | // Replace CAST - (integer) with (int) |
226 | Script = Regex.Replace(Script, @"\(" + key + @"\)", @"(" + val + ")", RegexOptions.Compiled | RegexOptions.Multiline); | 233 | Script = |
234 | Regex.Replace(Script, @"\(" + key + @"\)", @"(" + val + ")", | ||
235 | RegexOptions.Compiled | RegexOptions.Multiline); | ||
227 | // Replace return types and function variables - integer a() and f(integer a, integer a) | 236 | // Replace return types and function variables - integer a() and f(integer a, integer a) |
228 | Script = Regex.Replace(Script, @"(^|;|}|[\(,])(\s*)" + key + @"(\s*)", @"$1$2" + val + "$3", RegexOptions.Compiled | RegexOptions.Multiline); | 237 | Script = |
238 | Regex.Replace(Script, @"(^|;|}|[\(,])(\s*)" + key + @"(\s*)", @"$1$2" + val + "$3", | ||
239 | RegexOptions.Compiled | RegexOptions.Multiline); | ||
229 | } | 240 | } |
230 | 241 | ||
231 | // Add "void" in front of functions that needs it | 242 | // Add "void" in front of functions that needs it |
232 | Script = Regex.Replace(Script, @"^(\s*public\s+)((?!(if|switch|for)[^a-zA-Z0-9_])[a-zA-Z0-9_]*\s*\([^\)]*\)[^;]*\{)", @"$1void $2", RegexOptions.Compiled | RegexOptions.Multiline | RegexOptions.Singleline); | 243 | Script = |
244 | Regex.Replace(Script, | ||
245 | @"^(\s*public\s+)((?!(if|switch|for)[^a-zA-Z0-9_])[a-zA-Z0-9_]*\s*\([^\)]*\)[^;]*\{)", | ||
246 | @"$1void $2", RegexOptions.Compiled | RegexOptions.Multiline | RegexOptions.Singleline); | ||
233 | 247 | ||
234 | // Replace <x,y,z> and <x,y,z,r> | 248 | // Replace <x,y,z> and <x,y,z,r> |
235 | Script = Regex.Replace(Script, @"<([^,>]*,[^,>]*,[^,>]*,[^,>]*)>", @"new LSL_Types.Quaternion($1)", RegexOptions.Compiled | RegexOptions.Multiline | RegexOptions.Singleline); | 249 | Script = |
236 | Script = Regex.Replace(Script, @"<([^,>]*,[^,>]*,[^,>]*)>", @"new LSL_Types.Vector3($1)", RegexOptions.Compiled | RegexOptions.Multiline | RegexOptions.Singleline); | 250 | Regex.Replace(Script, @"<([^,>]*,[^,>]*,[^,>]*,[^,>]*)>", @"new LSL_Types.Quaternion($1)", |
251 | RegexOptions.Compiled | RegexOptions.Multiline | RegexOptions.Singleline); | ||
252 | Script = | ||
253 | Regex.Replace(Script, @"<([^,>]*,[^,>]*,[^,>]*)>", @"new LSL_Types.Vector3($1)", | ||
254 | RegexOptions.Compiled | RegexOptions.Multiline | RegexOptions.Singleline); | ||
237 | 255 | ||
238 | // Replace List []'s | 256 | // Replace List []'s |
239 | Script = Regex.Replace(Script, @"\[([^\]]*)\]", @"List.Parse($1)", RegexOptions.Compiled | RegexOptions.Multiline | RegexOptions.Singleline); | 257 | Script = |
258 | Regex.Replace(Script, @"\[([^\]]*)\]", @"List.Parse($1)", | ||
259 | RegexOptions.Compiled | RegexOptions.Multiline | RegexOptions.Singleline); | ||
240 | 260 | ||
241 | 261 | ||
242 | // Replace (string) to .ToString() // | 262 | // Replace (string) to .ToString() // |
243 | Script = Regex.Replace(Script, @"\(string\)\s*([a-zA-Z0-9_]+(\s*\([^\)]*\))?)", @"$1.ToString()", RegexOptions.Compiled | RegexOptions.Multiline | RegexOptions.Singleline); | 263 | Script = |
244 | Script = Regex.Replace(Script, @"\((float|int)\)\s*([a-zA-Z0-9_]+(\s*\([^\)]*\))?)", @"$1.Parse($2)", RegexOptions.Compiled | RegexOptions.Multiline | RegexOptions.Singleline); | 264 | Regex.Replace(Script, @"\(string\)\s*([a-zA-Z0-9_]+(\s*\([^\)]*\))?)", @"$1.ToString()", |
265 | RegexOptions.Compiled | RegexOptions.Multiline | RegexOptions.Singleline); | ||
266 | Script = | ||
267 | Regex.Replace(Script, @"\((float|int)\)\s*([a-zA-Z0-9_]+(\s*\([^\)]*\))?)", @"$1.Parse($2)", | ||
268 | RegexOptions.Compiled | RegexOptions.Multiline | RegexOptions.Singleline); | ||
245 | 269 | ||
246 | 270 | ||
247 | // REPLACE BACK QUOTES | 271 | // REPLACE BACK QUOTES |
@@ -256,7 +280,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL | |||
256 | // Add namespace, class name and inheritance | 280 | // Add namespace, class name and inheritance |
257 | 281 | ||
258 | Return = "" + | 282 | Return = "" + |
259 | "using OpenSim.Region.ScriptEngine.Common;"; | 283 | "using OpenSim.Region.ScriptEngine.Common;"; |
260 | //"using System; " + | 284 | //"using System; " + |
261 | //"using System.Collections.Generic; " + | 285 | //"using System.Collections.Generic; " + |
262 | //"using System.Text; " + | 286 | //"using System.Text; " + |
@@ -278,17 +302,15 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL | |||
278 | 302 | ||
279 | 303 | ||
280 | Return += "" + | 304 | Return += "" + |
281 | "namespace SecondLife { "; | 305 | "namespace SecondLife { "; |
282 | Return += "" + | 306 | Return += "" + |
283 | //"[Serializable] " + | 307 | //"[Serializable] " + |
284 | "public class Script : OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL.LSL_BaseClass { "; | 308 | "public class Script : OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL.LSL_BaseClass { "; |
285 | Return += @"public Script() { } "; | 309 | Return += @"public Script() { } "; |
286 | Return += Script; | 310 | Return += Script; |
287 | Return += "} }\r\n"; | 311 | Return += "} }\r\n"; |
288 | 312 | ||
289 | return Return; | 313 | return Return; |
290 | } | 314 | } |
291 | |||
292 | |||
293 | } | 315 | } |
294 | } | 316 | } \ No newline at end of file |
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/LSL_BaseClass.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/LSL_BaseClass.cs index ea05efc..f2774d6 100644 --- a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/LSL_BaseClass.cs +++ b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/LSL_BaseClass.cs | |||
@@ -28,12 +28,9 @@ | |||
28 | 28 | ||
29 | using System; | 29 | using System; |
30 | using System.Collections.Generic; | 30 | using System.Collections.Generic; |
31 | using System.Text; | ||
32 | using OpenSim.Region.ScriptEngine.DotNetEngine.Compiler; | ||
33 | using OpenSim.Region.ScriptEngine.Common; | ||
34 | using System.Threading; | ||
35 | using System.Reflection; | ||
36 | using System.Runtime.Remoting.Lifetime; | 31 | using System.Runtime.Remoting.Lifetime; |
32 | using System.Threading; | ||
33 | using OpenSim.Region.ScriptEngine.Common; | ||
37 | using integer = System.Int32; | 34 | using integer = System.Int32; |
38 | using key = System.String; | 35 | using key = System.String; |
39 | using vector = OpenSim.Region.ScriptEngine.Common.LSL_Types.Vector3; | 36 | using vector = OpenSim.Region.ScriptEngine.Common.LSL_Types.Vector3; |
@@ -44,13 +41,12 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL | |||
44 | //[Serializable] | 41 | //[Serializable] |
45 | public class LSL_BaseClass : MarshalByRefObject, LSL_BuiltIn_Commands_Interface, IScript | 42 | public class LSL_BaseClass : MarshalByRefObject, LSL_BuiltIn_Commands_Interface, IScript |
46 | { | 43 | { |
47 | |||
48 | // Object never expires | 44 | // Object never expires |
49 | public override Object InitializeLifetimeService() | 45 | public override Object InitializeLifetimeService() |
50 | { | 46 | { |
51 | //Console.WriteLine("LSL_BaseClass: InitializeLifetimeService()"); | 47 | //Console.WriteLine("LSL_BaseClass: InitializeLifetimeService()"); |
52 | // return null; | 48 | // return null; |
53 | ILease lease = (ILease)base.InitializeLifetimeService(); | 49 | ILease lease = (ILease) base.InitializeLifetimeService(); |
54 | 50 | ||
55 | if (lease.CurrentState == LeaseState.Initial) | 51 | if (lease.CurrentState == LeaseState.Initial) |
56 | { | 52 | { |
@@ -63,6 +59,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL | |||
63 | 59 | ||
64 | 60 | ||
65 | private Executor m_Exec; | 61 | private Executor m_Exec; |
62 | |||
66 | public Executor Exec | 63 | public Executor Exec |
67 | { | 64 | { |
68 | get | 65 | get |
@@ -79,6 +76,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL | |||
79 | public LSL_BaseClass() | 76 | public LSL_BaseClass() |
80 | { | 77 | { |
81 | } | 78 | } |
79 | |||
82 | public string State() | 80 | public string State() |
83 | { | 81 | { |
84 | return m_LSL_Functions.State(); | 82 | return m_LSL_Functions.State(); |
@@ -94,410 +92,1724 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL | |||
94 | // Get this AppDomain's settings and display some of them. | 92 | // Get this AppDomain's settings and display some of them. |
95 | AppDomainSetup ads = AppDomain.CurrentDomain.SetupInformation; | 93 | AppDomainSetup ads = AppDomain.CurrentDomain.SetupInformation; |
96 | Console.WriteLine("AppName={0}, AppBase={1}, ConfigFile={2}", | 94 | Console.WriteLine("AppName={0}, AppBase={1}, ConfigFile={2}", |
97 | ads.ApplicationName, | 95 | ads.ApplicationName, |
98 | ads.ApplicationBase, | 96 | ads.ApplicationBase, |
99 | ads.ConfigurationFile | 97 | ads.ConfigurationFile |
100 | ); | 98 | ); |
101 | 99 | ||
102 | // Display the name of the calling AppDomain and the name | 100 | // Display the name of the calling AppDomain and the name |
103 | // of the second domain. | 101 | // of the second domain. |
104 | // NOTE: The application's thread has transitioned between | 102 | // NOTE: The application's thread has transitioned between |
105 | // AppDomains. | 103 | // AppDomains. |
106 | Console.WriteLine("Calling to '{0}'.", | 104 | Console.WriteLine("Calling to '{0}'.", |
107 | Thread.GetDomain().FriendlyName | 105 | Thread.GetDomain().FriendlyName |
108 | ); | 106 | ); |
109 | 107 | ||
110 | return; | 108 | return; |
111 | } | 109 | } |
112 | 110 | ||
113 | 111 | ||
114 | |||
115 | // | 112 | // |
116 | // DO NOT MODIFY HERE: MODIFY IN LSL_BuiltIn_Commands.cs | 113 | // DO NOT MODIFY HERE: MODIFY IN LSL_BuiltIn_Commands.cs |
117 | // | 114 | // |
118 | // They are only forwarders to LSL_BuiltIn_Commands.cs | 115 | // They are only forwarders to LSL_BuiltIn_Commands.cs |
119 | // | 116 | // |
120 | public double llSin(double f) { return m_LSL_Functions.llSin(f); } | 117 | public double llSin(double f) |
121 | public double llCos(double f) { return m_LSL_Functions.llCos(f); } | 118 | { |
122 | public double llTan(double f) { return m_LSL_Functions.llTan(f); } | 119 | return m_LSL_Functions.llSin(f); |
123 | public double llAtan2(double x, double y) { return m_LSL_Functions.llAtan2(x, y); } | 120 | } |
124 | public double llSqrt(double f) { return m_LSL_Functions.llSqrt(f); } | 121 | |
125 | public double llPow(double fbase, double fexponent) { return m_LSL_Functions.llPow(fbase, fexponent); } | 122 | public double llCos(double f) |
126 | public int llAbs(int i) { return m_LSL_Functions.llAbs(i); } | 123 | { |
127 | public double llFabs(double f) { return m_LSL_Functions.llFabs(f); } | 124 | return m_LSL_Functions.llCos(f); |
128 | public double llFrand(double mag) { return m_LSL_Functions.llFrand(mag); } | 125 | } |
129 | public int llFloor(double f) { return m_LSL_Functions.llFloor(f); } | 126 | |
130 | public int llCeil(double f) { return m_LSL_Functions.llCeil(f); } | 127 | public double llTan(double f) |
131 | public int llRound(double f) { return m_LSL_Functions.llRound(f); } | 128 | { |
132 | public double llVecMag(LSL_Types.Vector3 v) { return m_LSL_Functions.llVecMag(v); } | 129 | return m_LSL_Functions.llTan(f); |
133 | public LSL_Types.Vector3 llVecNorm(LSL_Types.Vector3 v) { return m_LSL_Functions.llVecNorm(v); } | 130 | } |
134 | public double llVecDist(LSL_Types.Vector3 a, LSL_Types.Vector3 b) { return m_LSL_Functions.llVecDist(a, b); } | 131 | |
135 | public LSL_Types.Vector3 llRot2Euler(LSL_Types.Quaternion r) { return m_LSL_Functions.llRot2Euler(r); } | 132 | public double llAtan2(double x, double y) |
136 | public LSL_Types.Quaternion llEuler2Rot(LSL_Types.Vector3 v) { return m_LSL_Functions.llEuler2Rot(v); } | 133 | { |
137 | public LSL_Types.Quaternion llAxes2Rot(LSL_Types.Vector3 fwd, LSL_Types.Vector3 left, LSL_Types.Vector3 up) { return m_LSL_Functions.llAxes2Rot(fwd, left, up); } | 134 | return m_LSL_Functions.llAtan2(x, y); |
138 | public LSL_Types.Vector3 llRot2Fwd(LSL_Types.Quaternion r) { return m_LSL_Functions.llRot2Fwd(r); } | 135 | } |
139 | public LSL_Types.Vector3 llRot2Left(LSL_Types.Quaternion r) { return m_LSL_Functions.llRot2Left(r); } | 136 | |
140 | public LSL_Types.Vector3 llRot2Up(LSL_Types.Quaternion r) { return m_LSL_Functions.llRot2Up(r); } | 137 | public double llSqrt(double f) |
141 | public LSL_Types.Quaternion llRotBetween(LSL_Types.Vector3 start, LSL_Types.Vector3 end) { return m_LSL_Functions.llRotBetween(start, end); } | 138 | { |
142 | public void llWhisper(int channelID, string text) { m_LSL_Functions.llWhisper(channelID, text); } | 139 | return m_LSL_Functions.llSqrt(f); |
143 | public void llSay(int channelID, string text) { m_LSL_Functions.llSay(channelID, text); } | 140 | } |
141 | |||
142 | public double llPow(double fbase, double fexponent) | ||
143 | { | ||
144 | return m_LSL_Functions.llPow(fbase, fexponent); | ||
145 | } | ||
146 | |||
147 | public int llAbs(int i) | ||
148 | { | ||
149 | return m_LSL_Functions.llAbs(i); | ||
150 | } | ||
151 | |||
152 | public double llFabs(double f) | ||
153 | { | ||
154 | return m_LSL_Functions.llFabs(f); | ||
155 | } | ||
156 | |||
157 | public double llFrand(double mag) | ||
158 | { | ||
159 | return m_LSL_Functions.llFrand(mag); | ||
160 | } | ||
161 | |||
162 | public int llFloor(double f) | ||
163 | { | ||
164 | return m_LSL_Functions.llFloor(f); | ||
165 | } | ||
166 | |||
167 | public int llCeil(double f) | ||
168 | { | ||
169 | return m_LSL_Functions.llCeil(f); | ||
170 | } | ||
171 | |||
172 | public int llRound(double f) | ||
173 | { | ||
174 | return m_LSL_Functions.llRound(f); | ||
175 | } | ||
176 | |||
177 | public double llVecMag(vector v) | ||
178 | { | ||
179 | return m_LSL_Functions.llVecMag(v); | ||
180 | } | ||
181 | |||
182 | public vector llVecNorm(vector v) | ||
183 | { | ||
184 | return m_LSL_Functions.llVecNorm(v); | ||
185 | } | ||
186 | |||
187 | public double llVecDist(vector a, vector b) | ||
188 | { | ||
189 | return m_LSL_Functions.llVecDist(a, b); | ||
190 | } | ||
191 | |||
192 | public vector llRot2Euler(rotation r) | ||
193 | { | ||
194 | return m_LSL_Functions.llRot2Euler(r); | ||
195 | } | ||
196 | |||
197 | public rotation llEuler2Rot(vector v) | ||
198 | { | ||
199 | return m_LSL_Functions.llEuler2Rot(v); | ||
200 | } | ||
201 | |||
202 | public rotation llAxes2Rot(vector fwd, vector left, vector up) | ||
203 | { | ||
204 | return m_LSL_Functions.llAxes2Rot(fwd, left, up); | ||
205 | } | ||
206 | |||
207 | public vector llRot2Fwd(rotation r) | ||
208 | { | ||
209 | return m_LSL_Functions.llRot2Fwd(r); | ||
210 | } | ||
211 | |||
212 | public vector llRot2Left(rotation r) | ||
213 | { | ||
214 | return m_LSL_Functions.llRot2Left(r); | ||
215 | } | ||
216 | |||
217 | public vector llRot2Up(rotation r) | ||
218 | { | ||
219 | return m_LSL_Functions.llRot2Up(r); | ||
220 | } | ||
221 | |||
222 | public rotation llRotBetween(vector start, vector end) | ||
223 | { | ||
224 | return m_LSL_Functions.llRotBetween(start, end); | ||
225 | } | ||
226 | |||
227 | public void llWhisper(int channelID, string text) | ||
228 | { | ||
229 | m_LSL_Functions.llWhisper(channelID, text); | ||
230 | } | ||
231 | |||
232 | public void llSay(int channelID, string text) | ||
233 | { | ||
234 | m_LSL_Functions.llSay(channelID, text); | ||
235 | } | ||
236 | |||
144 | // | 237 | // |
145 | // DO NOT MODIFY HERE: MODIFY IN LSL_BuiltIn_Commands.cs | 238 | // DO NOT MODIFY HERE: MODIFY IN LSL_BuiltIn_Commands.cs |
146 | // | 239 | // |
147 | public void llShout(int channelID, string text) { m_LSL_Functions.llShout(channelID, text); } | 240 | public void llShout(int channelID, string text) |
148 | public int llListen(int channelID, string name, string ID, string msg) { return m_LSL_Functions.llListen(channelID, name, ID, msg); } | 241 | { |
149 | public void llListenControl(int number, int active) { m_LSL_Functions.llListenControl(number, active); } | 242 | m_LSL_Functions.llShout(channelID, text); |
150 | public void llListenRemove(int number) { m_LSL_Functions.llListenRemove(number); } | 243 | } |
151 | public void llSensor(string name, string id, int type, double range, double arc) { m_LSL_Functions.llSensor(name, id, type, range, arc); } | 244 | |
152 | public void llSensorRepeat(string name, string id, int type, double range, double arc, double rate) { m_LSL_Functions.llSensorRepeat(name, id, type, range, arc, rate); } | 245 | public int llListen(int channelID, string name, string ID, string msg) |
153 | public void llSensorRemove() { m_LSL_Functions.llSensorRemove(); } | 246 | { |
154 | public string llDetectedName(int number) { return m_LSL_Functions.llDetectedName(number); } | 247 | return m_LSL_Functions.llListen(channelID, name, ID, msg); |
155 | public string llDetectedKey(int number) { return m_LSL_Functions.llDetectedKey(number); } | 248 | } |
156 | public string llDetectedOwner(int number) { return m_LSL_Functions.llDetectedOwner(number); } | 249 | |
157 | public int llDetectedType(int number) { return m_LSL_Functions.llDetectedType(number); } | 250 | public void llListenControl(int number, int active) |
158 | public LSL_Types.Vector3 llDetectedPos(int number) { return m_LSL_Functions.llDetectedPos(number); } | 251 | { |
159 | public LSL_Types.Vector3 llDetectedVel(int number) { return m_LSL_Functions.llDetectedVel(number); } | 252 | m_LSL_Functions.llListenControl(number, active); |
160 | public LSL_Types.Vector3 llDetectedGrab(int number) { return m_LSL_Functions.llDetectedGrab(number); } | 253 | } |
161 | public LSL_Types.Quaternion llDetectedRot(int number) { return m_LSL_Functions.llDetectedRot(number); } | 254 | |
162 | public int llDetectedGroup(int number) { return m_LSL_Functions.llDetectedGroup(number); } | 255 | public void llListenRemove(int number) |
163 | public int llDetectedLinkNumber(int number) { return m_LSL_Functions.llDetectedLinkNumber(number); } | 256 | { |
257 | m_LSL_Functions.llListenRemove(number); | ||
258 | } | ||
259 | |||
260 | public void llSensor(string name, string id, int type, double range, double arc) | ||
261 | { | ||
262 | m_LSL_Functions.llSensor(name, id, type, range, arc); | ||
263 | } | ||
264 | |||
265 | public void llSensorRepeat(string name, string id, int type, double range, double arc, double rate) | ||
266 | { | ||
267 | m_LSL_Functions.llSensorRepeat(name, id, type, range, arc, rate); | ||
268 | } | ||
269 | |||
270 | public void llSensorRemove() | ||
271 | { | ||
272 | m_LSL_Functions.llSensorRemove(); | ||
273 | } | ||
274 | |||
275 | public string llDetectedName(int number) | ||
276 | { | ||
277 | return m_LSL_Functions.llDetectedName(number); | ||
278 | } | ||
279 | |||
280 | public string llDetectedKey(int number) | ||
281 | { | ||
282 | return m_LSL_Functions.llDetectedKey(number); | ||
283 | } | ||
284 | |||
285 | public string llDetectedOwner(int number) | ||
286 | { | ||
287 | return m_LSL_Functions.llDetectedOwner(number); | ||
288 | } | ||
289 | |||
290 | public int llDetectedType(int number) | ||
291 | { | ||
292 | return m_LSL_Functions.llDetectedType(number); | ||
293 | } | ||
294 | |||
295 | public vector llDetectedPos(int number) | ||
296 | { | ||
297 | return m_LSL_Functions.llDetectedPos(number); | ||
298 | } | ||
299 | |||
300 | public vector llDetectedVel(int number) | ||
301 | { | ||
302 | return m_LSL_Functions.llDetectedVel(number); | ||
303 | } | ||
304 | |||
305 | public vector llDetectedGrab(int number) | ||
306 | { | ||
307 | return m_LSL_Functions.llDetectedGrab(number); | ||
308 | } | ||
309 | |||
310 | public rotation llDetectedRot(int number) | ||
311 | { | ||
312 | return m_LSL_Functions.llDetectedRot(number); | ||
313 | } | ||
314 | |||
315 | public int llDetectedGroup(int number) | ||
316 | { | ||
317 | return m_LSL_Functions.llDetectedGroup(number); | ||
318 | } | ||
319 | |||
320 | public int llDetectedLinkNumber(int number) | ||
321 | { | ||
322 | return m_LSL_Functions.llDetectedLinkNumber(number); | ||
323 | } | ||
324 | |||
164 | // | 325 | // |
165 | // DO NOT MODIFY HERE: MODIFY IN LSL_BuiltIn_Commands.cs | 326 | // DO NOT MODIFY HERE: MODIFY IN LSL_BuiltIn_Commands.cs |
166 | // | 327 | // |
167 | public void llDie() { m_LSL_Functions.llDie(); } | 328 | public void llDie() |
168 | public double llGround(LSL_Types.Vector3 offset) { return m_LSL_Functions.llGround(offset); } | 329 | { |
169 | public double llCloud(LSL_Types.Vector3 offset) { return m_LSL_Functions.llCloud(offset); } | 330 | m_LSL_Functions.llDie(); |
170 | public LSL_Types.Vector3 llWind(LSL_Types.Vector3 offset) { return m_LSL_Functions.llWind(offset); } | 331 | } |
171 | public void llSetStatus(int status, int value) { m_LSL_Functions.llSetStatus(status, value); } | 332 | |
172 | public int llGetStatus(int status) { return m_LSL_Functions.llGetStatus(status); } | 333 | public double llGround(vector offset) |
173 | public void llSetScale(LSL_Types.Vector3 scale) { m_LSL_Functions.llSetScale(scale); } | 334 | { |
174 | public LSL_Types.Vector3 llGetScale() { return m_LSL_Functions.llGetScale(); } | 335 | return m_LSL_Functions.llGround(offset); |
175 | public void llSetColor(LSL_Types.Vector3 color, int face) { m_LSL_Functions.llSetColor(color, face); } | 336 | } |
176 | public double llGetAlpha(int face) { return m_LSL_Functions.llGetAlpha(face); } | 337 | |
177 | public void llSetAlpha(double alpha, int face) { m_LSL_Functions.llSetAlpha(alpha, face); } | 338 | public double llCloud(vector offset) |
178 | public LSL_Types.Vector3 llGetColor(int face) { return m_LSL_Functions.llGetColor(face); } | 339 | { |
179 | public void llSetTexture(string texture, int face) { m_LSL_Functions.llSetTexture(texture, face); } | 340 | return m_LSL_Functions.llCloud(offset); |
180 | public void llScaleTexture(double u, double v, int face) { m_LSL_Functions.llScaleTexture(u, v, face); } | 341 | } |
181 | public void llOffsetTexture(double u, double v, int face) { m_LSL_Functions.llOffsetTexture(u, v, face); } | 342 | |
182 | public void llRotateTexture(double rotation, int face) { m_LSL_Functions.llRotateTexture(rotation, face); } | 343 | public vector llWind(vector offset) |
183 | public string llGetTexture(int face) { return m_LSL_Functions.llGetTexture(face); } | 344 | { |
345 | return m_LSL_Functions.llWind(offset); | ||
346 | } | ||
347 | |||
348 | public void llSetStatus(int status, int value) | ||
349 | { | ||
350 | m_LSL_Functions.llSetStatus(status, value); | ||
351 | } | ||
352 | |||
353 | public int llGetStatus(int status) | ||
354 | { | ||
355 | return m_LSL_Functions.llGetStatus(status); | ||
356 | } | ||
357 | |||
358 | public void llSetScale(vector scale) | ||
359 | { | ||
360 | m_LSL_Functions.llSetScale(scale); | ||
361 | } | ||
362 | |||
363 | public vector llGetScale() | ||
364 | { | ||
365 | return m_LSL_Functions.llGetScale(); | ||
366 | } | ||
367 | |||
368 | public void llSetColor(vector color, int face) | ||
369 | { | ||
370 | m_LSL_Functions.llSetColor(color, face); | ||
371 | } | ||
372 | |||
373 | public double llGetAlpha(int face) | ||
374 | { | ||
375 | return m_LSL_Functions.llGetAlpha(face); | ||
376 | } | ||
377 | |||
378 | public void llSetAlpha(double alpha, int face) | ||
379 | { | ||
380 | m_LSL_Functions.llSetAlpha(alpha, face); | ||
381 | } | ||
382 | |||
383 | public vector llGetColor(int face) | ||
384 | { | ||
385 | return m_LSL_Functions.llGetColor(face); | ||
386 | } | ||
387 | |||
388 | public void llSetTexture(string texture, int face) | ||
389 | { | ||
390 | m_LSL_Functions.llSetTexture(texture, face); | ||
391 | } | ||
392 | |||
393 | public void llScaleTexture(double u, double v, int face) | ||
394 | { | ||
395 | m_LSL_Functions.llScaleTexture(u, v, face); | ||
396 | } | ||
397 | |||
398 | public void llOffsetTexture(double u, double v, int face) | ||
399 | { | ||
400 | m_LSL_Functions.llOffsetTexture(u, v, face); | ||
401 | } | ||
402 | |||
403 | public void llRotateTexture(double rotation, int face) | ||
404 | { | ||
405 | m_LSL_Functions.llRotateTexture(rotation, face); | ||
406 | } | ||
407 | |||
408 | public string llGetTexture(int face) | ||
409 | { | ||
410 | return m_LSL_Functions.llGetTexture(face); | ||
411 | } | ||
412 | |||
184 | // | 413 | // |
185 | // DO NOT MODIFY HERE: MODIFY IN LSL_BuiltIn_Commands.cs | 414 | // DO NOT MODIFY HERE: MODIFY IN LSL_BuiltIn_Commands.cs |
186 | // | 415 | // |
187 | public void llSetPos(LSL_Types.Vector3 pos) { m_LSL_Functions.llSetPos(pos); } | 416 | public void llSetPos(vector pos) |
188 | public LSL_Types.Vector3 llGetPos() { return m_LSL_Functions.llGetPos(); } | 417 | { |
189 | public LSL_Types.Vector3 llGetLocalPos() { return m_LSL_Functions.llGetLocalPos(); } | 418 | m_LSL_Functions.llSetPos(pos); |
190 | public void llSetRot(LSL_Types.Quaternion rot) { m_LSL_Functions.llSetRot(rot); } | 419 | } |
191 | public LSL_Types.Quaternion llGetRot() { return m_LSL_Functions.llGetRot(); } | 420 | |
192 | public LSL_Types.Quaternion llGetLocalRot() { return m_LSL_Functions.llGetLocalRot(); } | 421 | public vector llGetPos() |
193 | public void llSetForce(LSL_Types.Vector3 force, int local) { m_LSL_Functions.llSetForce(force, local); } | 422 | { |
194 | public LSL_Types.Vector3 llGetForce() { return m_LSL_Functions.llGetForce(); } | 423 | return m_LSL_Functions.llGetPos(); |
195 | public int llTarget(LSL_Types.Vector3 position, double range) { return m_LSL_Functions.llTarget(position, range); } | 424 | } |
196 | public void llTargetRemove(int number) { m_LSL_Functions.llTargetRemove(number); } | 425 | |
197 | public int llRotTarget(LSL_Types.Quaternion rot, double error) { return m_LSL_Functions.llRotTarget(rot, error); } | 426 | public vector llGetLocalPos() |
198 | public void llRotTargetRemove(int number) { m_LSL_Functions.llRotTargetRemove(number); } | 427 | { |
199 | public void llMoveToTarget(LSL_Types.Vector3 target, double tau) { m_LSL_Functions.llMoveToTarget(target, tau); } | 428 | return m_LSL_Functions.llGetLocalPos(); |
200 | public void llStopMoveToTarget() { m_LSL_Functions.llStopMoveToTarget(); } | 429 | } |
201 | public void llApplyImpulse(LSL_Types.Vector3 force, int local) { m_LSL_Functions.llApplyImpulse(force, local); } | 430 | |
431 | public void llSetRot(rotation rot) | ||
432 | { | ||
433 | m_LSL_Functions.llSetRot(rot); | ||
434 | } | ||
435 | |||
436 | public rotation llGetRot() | ||
437 | { | ||
438 | return m_LSL_Functions.llGetRot(); | ||
439 | } | ||
440 | |||
441 | public rotation llGetLocalRot() | ||
442 | { | ||
443 | return m_LSL_Functions.llGetLocalRot(); | ||
444 | } | ||
445 | |||
446 | public void llSetForce(vector force, int local) | ||
447 | { | ||
448 | m_LSL_Functions.llSetForce(force, local); | ||
449 | } | ||
450 | |||
451 | public vector llGetForce() | ||
452 | { | ||
453 | return m_LSL_Functions.llGetForce(); | ||
454 | } | ||
455 | |||
456 | public int llTarget(vector position, double range) | ||
457 | { | ||
458 | return m_LSL_Functions.llTarget(position, range); | ||
459 | } | ||
460 | |||
461 | public void llTargetRemove(int number) | ||
462 | { | ||
463 | m_LSL_Functions.llTargetRemove(number); | ||
464 | } | ||
465 | |||
466 | public int llRotTarget(rotation rot, double error) | ||
467 | { | ||
468 | return m_LSL_Functions.llRotTarget(rot, error); | ||
469 | } | ||
470 | |||
471 | public void llRotTargetRemove(int number) | ||
472 | { | ||
473 | m_LSL_Functions.llRotTargetRemove(number); | ||
474 | } | ||
475 | |||
476 | public void llMoveToTarget(vector target, double tau) | ||
477 | { | ||
478 | m_LSL_Functions.llMoveToTarget(target, tau); | ||
479 | } | ||
480 | |||
481 | public void llStopMoveToTarget() | ||
482 | { | ||
483 | m_LSL_Functions.llStopMoveToTarget(); | ||
484 | } | ||
485 | |||
486 | public void llApplyImpulse(vector force, int local) | ||
487 | { | ||
488 | m_LSL_Functions.llApplyImpulse(force, local); | ||
489 | } | ||
490 | |||
202 | // | 491 | // |
203 | // DO NOT MODIFY HERE: MODIFY IN LSL_BuiltIn_Commands.cs | 492 | // DO NOT MODIFY HERE: MODIFY IN LSL_BuiltIn_Commands.cs |
204 | // | 493 | // |
205 | public void llApplyRotationalImpulse(LSL_Types.Vector3 force, int local) { m_LSL_Functions.llApplyRotationalImpulse(force, local); } | 494 | public void llApplyRotationalImpulse(vector force, int local) |
206 | public void llSetTorque(LSL_Types.Vector3 torque, int local) { m_LSL_Functions.llSetTorque(torque, local); } | 495 | { |
207 | public LSL_Types.Vector3 llGetTorque() { return m_LSL_Functions.llGetTorque(); } | 496 | m_LSL_Functions.llApplyRotationalImpulse(force, local); |
208 | public void llSetForceAndTorque(LSL_Types.Vector3 force, LSL_Types.Vector3 torque, int local) { m_LSL_Functions.llSetForceAndTorque(force, torque, local); } | 497 | } |
209 | public LSL_Types.Vector3 llGetVel() { return m_LSL_Functions.llGetVel(); } | 498 | |
210 | public LSL_Types.Vector3 llGetAccel() { return m_LSL_Functions.llGetAccel(); } | 499 | public void llSetTorque(vector torque, int local) |
211 | public LSL_Types.Vector3 llGetOmega() { return m_LSL_Functions.llGetOmega(); } | 500 | { |
212 | public double llGetTimeOfDay() { return m_LSL_Functions.llGetTimeOfDay(); } | 501 | m_LSL_Functions.llSetTorque(torque, local); |
213 | public double llGetWallclock() { return m_LSL_Functions.llGetWallclock(); } | 502 | } |
214 | public double llGetTime() { return m_LSL_Functions.llGetTime(); } | 503 | |
215 | public void llResetTime() { m_LSL_Functions.llResetTime(); } | 504 | public vector llGetTorque() |
216 | public double llGetAndResetTime() { return m_LSL_Functions.llGetAndResetTime(); } | 505 | { |
217 | public void llSound() { m_LSL_Functions.llSound(); } | 506 | return m_LSL_Functions.llGetTorque(); |
218 | public void llPlaySound(string sound, double volume) { m_LSL_Functions.llPlaySound(sound, volume); } | 507 | } |
219 | public void llLoopSound(string sound, double volume) { m_LSL_Functions.llLoopSound(sound, volume); } | 508 | |
220 | public void llLoopSoundMaster(string sound, double volume) { m_LSL_Functions.llLoopSoundMaster(sound, volume); } | 509 | public void llSetForceAndTorque(vector force, vector torque, int local) |
221 | public void llLoopSoundSlave(string sound, double volume) { m_LSL_Functions.llLoopSoundSlave(sound, volume); } | 510 | { |
222 | public void llPlaySoundSlave(string sound, double volume) { m_LSL_Functions.llPlaySoundSlave(sound, volume); } | 511 | m_LSL_Functions.llSetForceAndTorque(force, torque, local); |
512 | } | ||
513 | |||
514 | public vector llGetVel() | ||
515 | { | ||
516 | return m_LSL_Functions.llGetVel(); | ||
517 | } | ||
518 | |||
519 | public vector llGetAccel() | ||
520 | { | ||
521 | return m_LSL_Functions.llGetAccel(); | ||
522 | } | ||
523 | |||
524 | public vector llGetOmega() | ||
525 | { | ||
526 | return m_LSL_Functions.llGetOmega(); | ||
527 | } | ||
528 | |||
529 | public double llGetTimeOfDay() | ||
530 | { | ||
531 | return m_LSL_Functions.llGetTimeOfDay(); | ||
532 | } | ||
533 | |||
534 | public double llGetWallclock() | ||
535 | { | ||
536 | return m_LSL_Functions.llGetWallclock(); | ||
537 | } | ||
538 | |||
539 | public double llGetTime() | ||
540 | { | ||
541 | return m_LSL_Functions.llGetTime(); | ||
542 | } | ||
543 | |||
544 | public void llResetTime() | ||
545 | { | ||
546 | m_LSL_Functions.llResetTime(); | ||
547 | } | ||
548 | |||
549 | public double llGetAndResetTime() | ||
550 | { | ||
551 | return m_LSL_Functions.llGetAndResetTime(); | ||
552 | } | ||
553 | |||
554 | public void llSound() | ||
555 | { | ||
556 | m_LSL_Functions.llSound(); | ||
557 | } | ||
558 | |||
559 | public void llPlaySound(string sound, double volume) | ||
560 | { | ||
561 | m_LSL_Functions.llPlaySound(sound, volume); | ||
562 | } | ||
563 | |||
564 | public void llLoopSound(string sound, double volume) | ||
565 | { | ||
566 | m_LSL_Functions.llLoopSound(sound, volume); | ||
567 | } | ||
568 | |||
569 | public void llLoopSoundMaster(string sound, double volume) | ||
570 | { | ||
571 | m_LSL_Functions.llLoopSoundMaster(sound, volume); | ||
572 | } | ||
573 | |||
574 | public void llLoopSoundSlave(string sound, double volume) | ||
575 | { | ||
576 | m_LSL_Functions.llLoopSoundSlave(sound, volume); | ||
577 | } | ||
578 | |||
579 | public void llPlaySoundSlave(string sound, double volume) | ||
580 | { | ||
581 | m_LSL_Functions.llPlaySoundSlave(sound, volume); | ||
582 | } | ||
583 | |||
223 | // | 584 | // |
224 | // DO NOT MODIFY HERE: MODIFY IN LSL_BuiltIn_Commands.cs | 585 | // DO NOT MODIFY HERE: MODIFY IN LSL_BuiltIn_Commands.cs |
225 | // | 586 | // |
226 | public void llTriggerSound(string sound, double volume) { m_LSL_Functions.llTriggerSound(sound, volume); } | 587 | public void llTriggerSound(string sound, double volume) |
227 | public void llStopSound() { m_LSL_Functions.llStopSound(); } | 588 | { |
228 | public void llPreloadSound(string sound) { m_LSL_Functions.llPreloadSound(sound); } | 589 | m_LSL_Functions.llTriggerSound(sound, volume); |
229 | public string llGetSubString(string src, int start, int end) { return m_LSL_Functions.llGetSubString(src, start, end); } | 590 | } |
230 | public string llDeleteSubString(string src, int start, int end) { return m_LSL_Functions.llDeleteSubString(src, start, end); } | 591 | |
231 | public string llInsertString(string dst, int position, string src) { return m_LSL_Functions.llInsertString(dst, position, src); } | 592 | public void llStopSound() |
232 | public string llToUpper(string source) { return m_LSL_Functions.llToUpper(source); } | 593 | { |
233 | public string llToLower(string source) { return m_LSL_Functions.llToLower(source); } | 594 | m_LSL_Functions.llStopSound(); |
234 | public int llGiveMoney(string destination, int amount) { return m_LSL_Functions.llGiveMoney(destination, amount); } | 595 | } |
235 | public void llMakeExplosion() { m_LSL_Functions.llMakeExplosion(); } | 596 | |
236 | public void llMakeFountain() { m_LSL_Functions.llMakeFountain(); } | 597 | public void llPreloadSound(string sound) |
237 | public void llMakeSmoke() { m_LSL_Functions.llMakeSmoke(); } | 598 | { |
238 | public void llMakeFire() { m_LSL_Functions.llMakeFire(); } | 599 | m_LSL_Functions.llPreloadSound(sound); |
239 | public void llRezObject(string inventory, LSL_Types.Vector3 pos, LSL_Types.Quaternion rot, int param) { m_LSL_Functions.llRezObject(inventory, pos, rot, param); } | 600 | } |
240 | public void llLookAt(LSL_Types.Vector3 target, double strength, double damping) { m_LSL_Functions.llLookAt(target, strength, damping); } | 601 | |
241 | public void llStopLookAt() { m_LSL_Functions.llStopLookAt(); } | 602 | public string llGetSubString(string src, int start, int end) |
242 | public void llSetTimerEvent(double sec) { m_LSL_Functions.llSetTimerEvent(sec); } | 603 | { |
243 | public void llSleep(double sec) { m_LSL_Functions.llSleep(sec); } | 604 | return m_LSL_Functions.llGetSubString(src, start, end); |
605 | } | ||
606 | |||
607 | public string llDeleteSubString(string src, int start, int end) | ||
608 | { | ||
609 | return m_LSL_Functions.llDeleteSubString(src, start, end); | ||
610 | } | ||
611 | |||
612 | public string llInsertString(string dst, int position, string src) | ||
613 | { | ||
614 | return m_LSL_Functions.llInsertString(dst, position, src); | ||
615 | } | ||
616 | |||
617 | public string llToUpper(string source) | ||
618 | { | ||
619 | return m_LSL_Functions.llToUpper(source); | ||
620 | } | ||
621 | |||
622 | public string llToLower(string source) | ||
623 | { | ||
624 | return m_LSL_Functions.llToLower(source); | ||
625 | } | ||
626 | |||
627 | public int llGiveMoney(string destination, int amount) | ||
628 | { | ||
629 | return m_LSL_Functions.llGiveMoney(destination, amount); | ||
630 | } | ||
631 | |||
632 | public void llMakeExplosion() | ||
633 | { | ||
634 | m_LSL_Functions.llMakeExplosion(); | ||
635 | } | ||
636 | |||
637 | public void llMakeFountain() | ||
638 | { | ||
639 | m_LSL_Functions.llMakeFountain(); | ||
640 | } | ||
641 | |||
642 | public void llMakeSmoke() | ||
643 | { | ||
644 | m_LSL_Functions.llMakeSmoke(); | ||
645 | } | ||
646 | |||
647 | public void llMakeFire() | ||
648 | { | ||
649 | m_LSL_Functions.llMakeFire(); | ||
650 | } | ||
651 | |||
652 | public void llRezObject(string inventory, vector pos, rotation rot, int param) | ||
653 | { | ||
654 | m_LSL_Functions.llRezObject(inventory, pos, rot, param); | ||
655 | } | ||
656 | |||
657 | public void llLookAt(vector target, double strength, double damping) | ||
658 | { | ||
659 | m_LSL_Functions.llLookAt(target, strength, damping); | ||
660 | } | ||
661 | |||
662 | public void llStopLookAt() | ||
663 | { | ||
664 | m_LSL_Functions.llStopLookAt(); | ||
665 | } | ||
666 | |||
667 | public void llSetTimerEvent(double sec) | ||
668 | { | ||
669 | m_LSL_Functions.llSetTimerEvent(sec); | ||
670 | } | ||
671 | |||
672 | public void llSleep(double sec) | ||
673 | { | ||
674 | m_LSL_Functions.llSleep(sec); | ||
675 | } | ||
676 | |||
244 | // | 677 | // |
245 | // DO NOT MODIFY HERE: MODIFY IN LSL_BuiltIn_Commands.cs | 678 | // DO NOT MODIFY HERE: MODIFY IN LSL_BuiltIn_Commands.cs |
246 | // | 679 | // |
247 | public double llGetMass() { return m_LSL_Functions.llGetMass(); } | 680 | public double llGetMass() |
248 | public void llCollisionFilter(string name, string id, int accept) { m_LSL_Functions.llCollisionFilter(name, id, accept); } | 681 | { |
249 | public void llTakeControls(int controls, int accept, int pass_on) { m_LSL_Functions.llTakeControls(controls, accept, pass_on); } | 682 | return m_LSL_Functions.llGetMass(); |
250 | public void llReleaseControls() { m_LSL_Functions.llReleaseControls(); } | 683 | } |
251 | public void llAttachToAvatar(int attachment) { m_LSL_Functions.llAttachToAvatar(attachment); } | 684 | |
252 | public void llDetachFromAvatar() { m_LSL_Functions.llDetachFromAvatar(); } | 685 | public void llCollisionFilter(string name, string id, int accept) |
253 | public void llTakeCamera() { m_LSL_Functions.llTakeCamera(); } | 686 | { |
254 | public void llReleaseCamera() { m_LSL_Functions.llReleaseCamera(); } | 687 | m_LSL_Functions.llCollisionFilter(name, id, accept); |
255 | public string llGetOwner() { return m_LSL_Functions.llGetOwner(); } | 688 | } |
256 | public void llInstantMessage(string user, string message) { m_LSL_Functions.llInstantMessage(user, message); } | 689 | |
257 | public void llEmail(string address, string subject, string message) { m_LSL_Functions.llEmail(address, subject, message); } | 690 | public void llTakeControls(int controls, int accept, int pass_on) |
258 | public void llGetNextEmail(string address, string subject) { m_LSL_Functions.llGetNextEmail(address, subject); } | 691 | { |
259 | public string llGetKey() { return m_LSL_Functions.llGetKey(); } | 692 | m_LSL_Functions.llTakeControls(controls, accept, pass_on); |
260 | public void llSetBuoyancy(double buoyancy) { m_LSL_Functions.llSetBuoyancy(buoyancy); } | 693 | } |
261 | public void llSetHoverHeight(double height, int water, double tau) { m_LSL_Functions.llSetHoverHeight(height, water, tau); } | 694 | |
262 | public void llStopHover() { m_LSL_Functions.llStopHover(); } | 695 | public void llReleaseControls() |
263 | public void llMinEventDelay(double delay) { m_LSL_Functions.llMinEventDelay(delay); } | 696 | { |
264 | public void llSoundPreload() { m_LSL_Functions.llSoundPreload(); } | 697 | m_LSL_Functions.llReleaseControls(); |
265 | public void llRotLookAt(LSL_Types.Quaternion target, double strength, double damping) { m_LSL_Functions.llRotLookAt(target, strength, damping); } | 698 | } |
699 | |||
700 | public void llAttachToAvatar(int attachment) | ||
701 | { | ||
702 | m_LSL_Functions.llAttachToAvatar(attachment); | ||
703 | } | ||
704 | |||
705 | public void llDetachFromAvatar() | ||
706 | { | ||
707 | m_LSL_Functions.llDetachFromAvatar(); | ||
708 | } | ||
709 | |||
710 | public void llTakeCamera() | ||
711 | { | ||
712 | m_LSL_Functions.llTakeCamera(); | ||
713 | } | ||
714 | |||
715 | public void llReleaseCamera() | ||
716 | { | ||
717 | m_LSL_Functions.llReleaseCamera(); | ||
718 | } | ||
719 | |||
720 | public string llGetOwner() | ||
721 | { | ||
722 | return m_LSL_Functions.llGetOwner(); | ||
723 | } | ||
724 | |||
725 | public void llInstantMessage(string user, string message) | ||
726 | { | ||
727 | m_LSL_Functions.llInstantMessage(user, message); | ||
728 | } | ||
729 | |||
730 | public void llEmail(string address, string subject, string message) | ||
731 | { | ||
732 | m_LSL_Functions.llEmail(address, subject, message); | ||
733 | } | ||
734 | |||
735 | public void llGetNextEmail(string address, string subject) | ||
736 | { | ||
737 | m_LSL_Functions.llGetNextEmail(address, subject); | ||
738 | } | ||
739 | |||
740 | public string llGetKey() | ||
741 | { | ||
742 | return m_LSL_Functions.llGetKey(); | ||
743 | } | ||
744 | |||
745 | public void llSetBuoyancy(double buoyancy) | ||
746 | { | ||
747 | m_LSL_Functions.llSetBuoyancy(buoyancy); | ||
748 | } | ||
749 | |||
750 | public void llSetHoverHeight(double height, int water, double tau) | ||
751 | { | ||
752 | m_LSL_Functions.llSetHoverHeight(height, water, tau); | ||
753 | } | ||
754 | |||
755 | public void llStopHover() | ||
756 | { | ||
757 | m_LSL_Functions.llStopHover(); | ||
758 | } | ||
759 | |||
760 | public void llMinEventDelay(double delay) | ||
761 | { | ||
762 | m_LSL_Functions.llMinEventDelay(delay); | ||
763 | } | ||
764 | |||
765 | public void llSoundPreload() | ||
766 | { | ||
767 | m_LSL_Functions.llSoundPreload(); | ||
768 | } | ||
769 | |||
770 | public void llRotLookAt(rotation target, double strength, double damping) | ||
771 | { | ||
772 | m_LSL_Functions.llRotLookAt(target, strength, damping); | ||
773 | } | ||
774 | |||
266 | // | 775 | // |
267 | // DO NOT MODIFY HERE: MODIFY IN LSL_BuiltIn_Commands.cs | 776 | // DO NOT MODIFY HERE: MODIFY IN LSL_BuiltIn_Commands.cs |
268 | // | 777 | // |
269 | public int llStringLength(string str) { return m_LSL_Functions.llStringLength(str); } | 778 | public int llStringLength(string str) |
270 | public void llStartAnimation(string anim) { m_LSL_Functions.llStartAnimation(anim); } | 779 | { |
271 | public void llStopAnimation(string anim) { m_LSL_Functions.llStopAnimation(anim); } | 780 | return m_LSL_Functions.llStringLength(str); |
272 | public void llPointAt() { m_LSL_Functions.llPointAt(); } | 781 | } |
273 | public void llStopPointAt() { m_LSL_Functions.llStopPointAt(); } | 782 | |
274 | public void llTargetOmega(LSL_Types.Vector3 axis, double spinrate, double gain) { m_LSL_Functions.llTargetOmega(axis, spinrate, gain); } | 783 | public void llStartAnimation(string anim) |
275 | public int llGetStartParameter() { return m_LSL_Functions.llGetStartParameter(); } | 784 | { |
276 | public void llGodLikeRezObject(string inventory, LSL_Types.Vector3 pos) { m_LSL_Functions.llGodLikeRezObject(inventory, pos); } | 785 | m_LSL_Functions.llStartAnimation(anim); |
277 | public void llRequestPermissions(string agent, int perm) { m_LSL_Functions.llRequestPermissions(agent, perm); } | 786 | } |
278 | public string llGetPermissionsKey() { return m_LSL_Functions.llGetPermissionsKey(); } | 787 | |
279 | public int llGetPermissions() { return m_LSL_Functions.llGetPermissions(); } | 788 | public void llStopAnimation(string anim) |
280 | public int llGetLinkNumber() { return m_LSL_Functions.llGetLinkNumber(); } | 789 | { |
281 | public void llSetLinkColor(int linknumber, LSL_Types.Vector3 color, int face) { m_LSL_Functions.llSetLinkColor(linknumber, color, face); } | 790 | m_LSL_Functions.llStopAnimation(anim); |
282 | public void llCreateLink(string target, int parent) { m_LSL_Functions.llCreateLink(target, parent); } | 791 | } |
283 | public void llBreakLink(int linknum) { m_LSL_Functions.llBreakLink(linknum); } | 792 | |
284 | public void llBreakAllLinks() { m_LSL_Functions.llBreakAllLinks(); } | 793 | public void llPointAt() |
285 | public string llGetLinkKey(int linknum) { return m_LSL_Functions.llGetLinkKey(linknum); } | 794 | { |
286 | public void llGetLinkName(int linknum) { m_LSL_Functions.llGetLinkName(linknum); } | 795 | m_LSL_Functions.llPointAt(); |
287 | public int llGetInventoryNumber(int type) { return m_LSL_Functions.llGetInventoryNumber(type); } | 796 | } |
288 | public string llGetInventoryName(int type, int number) { return m_LSL_Functions.llGetInventoryName(type, number); } | 797 | |
798 | public void llStopPointAt() | ||
799 | { | ||
800 | m_LSL_Functions.llStopPointAt(); | ||
801 | } | ||
802 | |||
803 | public void llTargetOmega(vector axis, double spinrate, double gain) | ||
804 | { | ||
805 | m_LSL_Functions.llTargetOmega(axis, spinrate, gain); | ||
806 | } | ||
807 | |||
808 | public int llGetStartParameter() | ||
809 | { | ||
810 | return m_LSL_Functions.llGetStartParameter(); | ||
811 | } | ||
812 | |||
813 | public void llGodLikeRezObject(string inventory, vector pos) | ||
814 | { | ||
815 | m_LSL_Functions.llGodLikeRezObject(inventory, pos); | ||
816 | } | ||
817 | |||
818 | public void llRequestPermissions(string agent, int perm) | ||
819 | { | ||
820 | m_LSL_Functions.llRequestPermissions(agent, perm); | ||
821 | } | ||
822 | |||
823 | public string llGetPermissionsKey() | ||
824 | { | ||
825 | return m_LSL_Functions.llGetPermissionsKey(); | ||
826 | } | ||
827 | |||
828 | public int llGetPermissions() | ||
829 | { | ||
830 | return m_LSL_Functions.llGetPermissions(); | ||
831 | } | ||
832 | |||
833 | public int llGetLinkNumber() | ||
834 | { | ||
835 | return m_LSL_Functions.llGetLinkNumber(); | ||
836 | } | ||
837 | |||
838 | public void llSetLinkColor(int linknumber, vector color, int face) | ||
839 | { | ||
840 | m_LSL_Functions.llSetLinkColor(linknumber, color, face); | ||
841 | } | ||
842 | |||
843 | public void llCreateLink(string target, int parent) | ||
844 | { | ||
845 | m_LSL_Functions.llCreateLink(target, parent); | ||
846 | } | ||
847 | |||
848 | public void llBreakLink(int linknum) | ||
849 | { | ||
850 | m_LSL_Functions.llBreakLink(linknum); | ||
851 | } | ||
852 | |||
853 | public void llBreakAllLinks() | ||
854 | { | ||
855 | m_LSL_Functions.llBreakAllLinks(); | ||
856 | } | ||
857 | |||
858 | public string llGetLinkKey(int linknum) | ||
859 | { | ||
860 | return m_LSL_Functions.llGetLinkKey(linknum); | ||
861 | } | ||
862 | |||
863 | public void llGetLinkName(int linknum) | ||
864 | { | ||
865 | m_LSL_Functions.llGetLinkName(linknum); | ||
866 | } | ||
867 | |||
868 | public int llGetInventoryNumber(int type) | ||
869 | { | ||
870 | return m_LSL_Functions.llGetInventoryNumber(type); | ||
871 | } | ||
872 | |||
873 | public string llGetInventoryName(int type, int number) | ||
874 | { | ||
875 | return m_LSL_Functions.llGetInventoryName(type, number); | ||
876 | } | ||
877 | |||
289 | // | 878 | // |
290 | // DO NOT MODIFY HERE: MODIFY IN LSL_BuiltIn_Commands.cs | 879 | // DO NOT MODIFY HERE: MODIFY IN LSL_BuiltIn_Commands.cs |
291 | // | 880 | // |
292 | public void llSetScriptState(string name, int run) { m_LSL_Functions.llSetScriptState(name, run); } | 881 | public void llSetScriptState(string name, int run) |
293 | public double llGetEnergy() { return m_LSL_Functions.llGetEnergy(); } | 882 | { |
294 | public void llGiveInventory(string destination, string inventory) { m_LSL_Functions.llGiveInventory(destination, inventory); } | 883 | m_LSL_Functions.llSetScriptState(name, run); |
295 | public void llRemoveInventory(string item) { m_LSL_Functions.llRemoveInventory(item); } | 884 | } |
296 | public void llSetText(string text, LSL_Types.Vector3 color, double alpha) { m_LSL_Functions.llSetText(text, color, alpha); } | 885 | |
297 | public double llWater(LSL_Types.Vector3 offset) { return m_LSL_Functions.llWater(offset); } | 886 | public double llGetEnergy() |
298 | public void llPassTouches(int pass) { m_LSL_Functions.llPassTouches(pass); } | 887 | { |
299 | public string llRequestAgentData(string id, int data) { return m_LSL_Functions.llRequestAgentData(id, data); } | 888 | return m_LSL_Functions.llGetEnergy(); |
300 | public string llRequestInventoryData(string name) { return m_LSL_Functions.llRequestInventoryData(name); } | 889 | } |
301 | public void llSetDamage(double damage) { m_LSL_Functions.llSetDamage(damage); } | 890 | |
302 | public void llTeleportAgentHome(string agent) { m_LSL_Functions.llTeleportAgentHome(agent); } | 891 | public void llGiveInventory(string destination, string inventory) |
303 | public void llModifyLand(int action, int brush) { m_LSL_Functions.llModifyLand(action, brush); } | 892 | { |
304 | public void llCollisionSound(string impact_sound, double impact_volume) { m_LSL_Functions.llCollisionSound(impact_sound, impact_volume); } | 893 | m_LSL_Functions.llGiveInventory(destination, inventory); |
305 | public void llCollisionSprite(string impact_sprite) { m_LSL_Functions.llCollisionSprite(impact_sprite); } | 894 | } |
306 | public string llGetAnimation(string id) { return m_LSL_Functions.llGetAnimation(id); } | 895 | |
307 | public void llResetScript() { m_LSL_Functions.llResetScript(); } | 896 | public void llRemoveInventory(string item) |
308 | public void llMessageLinked(int linknum, int num, string str, string id) { m_LSL_Functions.llMessageLinked(linknum, num, str, id); } | 897 | { |
309 | public void llPushObject(string target, LSL_Types.Vector3 impulse, LSL_Types.Vector3 ang_impulse, int local) { m_LSL_Functions.llPushObject(target, impulse, ang_impulse, local); } | 898 | m_LSL_Functions.llRemoveInventory(item); |
310 | public void llPassCollisions(int pass) { m_LSL_Functions.llPassCollisions(pass); } | 899 | } |
311 | public string llGetScriptName() { return m_LSL_Functions.llGetScriptName(); } | 900 | |
312 | public int llGetNumberOfSides() { return m_LSL_Functions.llGetNumberOfSides(); } | 901 | public void llSetText(string text, vector color, double alpha) |
902 | { | ||
903 | m_LSL_Functions.llSetText(text, color, alpha); | ||
904 | } | ||
905 | |||
906 | public double llWater(vector offset) | ||
907 | { | ||
908 | return m_LSL_Functions.llWater(offset); | ||
909 | } | ||
910 | |||
911 | public void llPassTouches(int pass) | ||
912 | { | ||
913 | m_LSL_Functions.llPassTouches(pass); | ||
914 | } | ||
915 | |||
916 | public string llRequestAgentData(string id, int data) | ||
917 | { | ||
918 | return m_LSL_Functions.llRequestAgentData(id, data); | ||
919 | } | ||
920 | |||
921 | public string llRequestInventoryData(string name) | ||
922 | { | ||
923 | return m_LSL_Functions.llRequestInventoryData(name); | ||
924 | } | ||
925 | |||
926 | public void llSetDamage(double damage) | ||
927 | { | ||
928 | m_LSL_Functions.llSetDamage(damage); | ||
929 | } | ||
930 | |||
931 | public void llTeleportAgentHome(string agent) | ||
932 | { | ||
933 | m_LSL_Functions.llTeleportAgentHome(agent); | ||
934 | } | ||
935 | |||
936 | public void llModifyLand(int action, int brush) | ||
937 | { | ||
938 | m_LSL_Functions.llModifyLand(action, brush); | ||
939 | } | ||
940 | |||
941 | public void llCollisionSound(string impact_sound, double impact_volume) | ||
942 | { | ||
943 | m_LSL_Functions.llCollisionSound(impact_sound, impact_volume); | ||
944 | } | ||
945 | |||
946 | public void llCollisionSprite(string impact_sprite) | ||
947 | { | ||
948 | m_LSL_Functions.llCollisionSprite(impact_sprite); | ||
949 | } | ||
950 | |||
951 | public string llGetAnimation(string id) | ||
952 | { | ||
953 | return m_LSL_Functions.llGetAnimation(id); | ||
954 | } | ||
955 | |||
956 | public void llResetScript() | ||
957 | { | ||
958 | m_LSL_Functions.llResetScript(); | ||
959 | } | ||
960 | |||
961 | public void llMessageLinked(int linknum, int num, string str, string id) | ||
962 | { | ||
963 | m_LSL_Functions.llMessageLinked(linknum, num, str, id); | ||
964 | } | ||
965 | |||
966 | public void llPushObject(string target, vector impulse, vector ang_impulse, int local) | ||
967 | { | ||
968 | m_LSL_Functions.llPushObject(target, impulse, ang_impulse, local); | ||
969 | } | ||
970 | |||
971 | public void llPassCollisions(int pass) | ||
972 | { | ||
973 | m_LSL_Functions.llPassCollisions(pass); | ||
974 | } | ||
975 | |||
976 | public string llGetScriptName() | ||
977 | { | ||
978 | return m_LSL_Functions.llGetScriptName(); | ||
979 | } | ||
980 | |||
981 | public int llGetNumberOfSides() | ||
982 | { | ||
983 | return m_LSL_Functions.llGetNumberOfSides(); | ||
984 | } | ||
985 | |||
313 | // | 986 | // |
314 | // DO NOT MODIFY HERE: MODIFY IN LSL_BuiltIn_Commands.cs | 987 | // DO NOT MODIFY HERE: MODIFY IN LSL_BuiltIn_Commands.cs |
315 | // | 988 | // |
316 | public LSL_Types.Quaternion llAxisAngle2Rot(LSL_Types.Vector3 axis, double angle) { return m_LSL_Functions.llAxisAngle2Rot(axis, angle); } | 989 | public rotation llAxisAngle2Rot(vector axis, double angle) |
317 | public LSL_Types.Vector3 llRot2Axis(LSL_Types.Quaternion rot) { return m_LSL_Functions.llRot2Axis(rot); } | 990 | { |
318 | public void llRot2Angle() { m_LSL_Functions.llRot2Angle(); } | 991 | return m_LSL_Functions.llAxisAngle2Rot(axis, angle); |
319 | public double llAcos(double val) { return m_LSL_Functions.llAcos(val); } | 992 | } |
320 | public double llAsin(double val) { return m_LSL_Functions.llAsin(val); } | 993 | |
321 | public double llAngleBetween(LSL_Types.Quaternion a, LSL_Types.Quaternion b) { return m_LSL_Functions.llAngleBetween(a, b); } | 994 | public vector llRot2Axis(rotation rot) |
322 | public string llGetInventoryKey(string name) { return m_LSL_Functions.llGetInventoryKey(name); } | 995 | { |
323 | public void llAllowInventoryDrop(int add) { m_LSL_Functions.llAllowInventoryDrop(add); } | 996 | return m_LSL_Functions.llRot2Axis(rot); |
324 | public LSL_Types.Vector3 llGetSunDirection() { return m_LSL_Functions.llGetSunDirection(); } | 997 | } |
325 | public LSL_Types.Vector3 llGetTextureOffset(int face) { return m_LSL_Functions.llGetTextureOffset(face); } | 998 | |
326 | public LSL_Types.Vector3 llGetTextureScale(int side) { return m_LSL_Functions.llGetTextureScale(side); } | 999 | public void llRot2Angle() |
327 | public double llGetTextureRot(int side) { return m_LSL_Functions.llGetTextureRot(side); } | 1000 | { |
328 | public int llSubStringIndex(string source, string pattern) { return m_LSL_Functions.llSubStringIndex(source, pattern); } | 1001 | m_LSL_Functions.llRot2Angle(); |
329 | public string llGetOwnerKey(string id) { return m_LSL_Functions.llGetOwnerKey(id); } | 1002 | } |
330 | public LSL_Types.Vector3 llGetCenterOfMass() { return m_LSL_Functions.llGetCenterOfMass(); } | 1003 | |
331 | public List<string> llListSort(List<string> src, int stride, int ascending) { return m_LSL_Functions.llListSort(src, stride, ascending); } | 1004 | public double llAcos(double val) |
332 | public int llGetListLength(List<string> src) { return m_LSL_Functions.llGetListLength(src); } | 1005 | { |
1006 | return m_LSL_Functions.llAcos(val); | ||
1007 | } | ||
1008 | |||
1009 | public double llAsin(double val) | ||
1010 | { | ||
1011 | return m_LSL_Functions.llAsin(val); | ||
1012 | } | ||
1013 | |||
1014 | public double llAngleBetween(rotation a, rotation b) | ||
1015 | { | ||
1016 | return m_LSL_Functions.llAngleBetween(a, b); | ||
1017 | } | ||
1018 | |||
1019 | public string llGetInventoryKey(string name) | ||
1020 | { | ||
1021 | return m_LSL_Functions.llGetInventoryKey(name); | ||
1022 | } | ||
1023 | |||
1024 | public void llAllowInventoryDrop(int add) | ||
1025 | { | ||
1026 | m_LSL_Functions.llAllowInventoryDrop(add); | ||
1027 | } | ||
1028 | |||
1029 | public vector llGetSunDirection() | ||
1030 | { | ||
1031 | return m_LSL_Functions.llGetSunDirection(); | ||
1032 | } | ||
1033 | |||
1034 | public vector llGetTextureOffset(int face) | ||
1035 | { | ||
1036 | return m_LSL_Functions.llGetTextureOffset(face); | ||
1037 | } | ||
1038 | |||
1039 | public vector llGetTextureScale(int side) | ||
1040 | { | ||
1041 | return m_LSL_Functions.llGetTextureScale(side); | ||
1042 | } | ||
1043 | |||
1044 | public double llGetTextureRot(int side) | ||
1045 | { | ||
1046 | return m_LSL_Functions.llGetTextureRot(side); | ||
1047 | } | ||
1048 | |||
1049 | public int llSubStringIndex(string source, string pattern) | ||
1050 | { | ||
1051 | return m_LSL_Functions.llSubStringIndex(source, pattern); | ||
1052 | } | ||
1053 | |||
1054 | public string llGetOwnerKey(string id) | ||
1055 | { | ||
1056 | return m_LSL_Functions.llGetOwnerKey(id); | ||
1057 | } | ||
1058 | |||
1059 | public vector llGetCenterOfMass() | ||
1060 | { | ||
1061 | return m_LSL_Functions.llGetCenterOfMass(); | ||
1062 | } | ||
1063 | |||
1064 | public List<string> llListSort(List<string> src, int stride, int ascending) | ||
1065 | { | ||
1066 | return m_LSL_Functions.llListSort(src, stride, ascending); | ||
1067 | } | ||
1068 | |||
1069 | public int llGetListLength(List<string> src) | ||
1070 | { | ||
1071 | return m_LSL_Functions.llGetListLength(src); | ||
1072 | } | ||
1073 | |||
333 | // | 1074 | // |
334 | // DO NOT MODIFY HERE: MODIFY IN LSL_BuiltIn_Commands.cs | 1075 | // DO NOT MODIFY HERE: MODIFY IN LSL_BuiltIn_Commands.cs |
335 | // | 1076 | // |
336 | public int llList2Integer(List<string> src, int index) { return m_LSL_Functions.llList2Integer(src, index); } | 1077 | public int llList2Integer(List<string> src, int index) |
337 | public double llList2double(List<string> src, int index) { return m_LSL_Functions.llList2double(src, index); } | 1078 | { |
338 | public string llList2String(List<string> src, int index) { return m_LSL_Functions.llList2String(src, index); } | 1079 | return m_LSL_Functions.llList2Integer(src, index); |
339 | public string llList2Key(List<string> src, int index) { return m_LSL_Functions.llList2Key(src, index); } | 1080 | } |
340 | public LSL_Types.Vector3 llList2Vector(List<string> src, int index) { return m_LSL_Functions.llList2Vector(src, index); } | 1081 | |
341 | public LSL_Types.Quaternion llList2Rot(List<string> src, int index) { return m_LSL_Functions.llList2Rot(src, index); } | 1082 | public double llList2double(List<string> src, int index) |
342 | public List<string> llList2List(List<string> src, int start, int end) { return m_LSL_Functions.llList2List(src, start, end); } | 1083 | { |
343 | public List<string> llDeleteSubList(List<string> src, int start, int end) { return m_LSL_Functions.llDeleteSubList(src, start, end); } | 1084 | return m_LSL_Functions.llList2double(src, index); |
344 | public int llGetListEntryType(List<string> src, int index) { return m_LSL_Functions.llGetListEntryType(src, index); } | 1085 | } |
345 | public string llList2CSV(List<string> src) { return m_LSL_Functions.llList2CSV(src); } | 1086 | |
346 | public List<string> llCSV2List(string src) { return m_LSL_Functions.llCSV2List(src); } | 1087 | public string llList2String(List<string> src, int index) |
347 | public List<string> llListRandomize(List<string> src, int stride) { return m_LSL_Functions.llListRandomize(src, stride); } | 1088 | { |
348 | public List<string> llList2ListStrided(List<string> src, int start, int end, int stride) { return m_LSL_Functions.llList2ListStrided(src, start, end, stride); } | 1089 | return m_LSL_Functions.llList2String(src, index); |
349 | public LSL_Types.Vector3 llGetRegionCorner() { return m_LSL_Functions.llGetRegionCorner(); } | 1090 | } |
350 | public List<string> llListInsertList(List<string> dest, List<string> src, int start) { return m_LSL_Functions.llListInsertList(dest, src, start); } | 1091 | |
351 | public int llListFindList(List<string> src, List<string> test) { return m_LSL_Functions.llListFindList(src, test); } | 1092 | public string llList2Key(List<string> src, int index) |
352 | public string llGetObjectName() { return m_LSL_Functions.llGetObjectName(); } | 1093 | { |
353 | public void llSetObjectName(string name) { m_LSL_Functions.llSetObjectName(name); } | 1094 | return m_LSL_Functions.llList2Key(src, index); |
354 | public string llGetDate() { return m_LSL_Functions.llGetDate(); } | 1095 | } |
355 | public int llEdgeOfWorld(LSL_Types.Vector3 pos, LSL_Types.Vector3 dir) { return m_LSL_Functions.llEdgeOfWorld(pos, dir); } | 1096 | |
356 | public int llGetAgentInfo(string id) { return m_LSL_Functions.llGetAgentInfo(id); } | 1097 | public vector llList2Vector(List<string> src, int index) |
1098 | { | ||
1099 | return m_LSL_Functions.llList2Vector(src, index); | ||
1100 | } | ||
1101 | |||
1102 | public rotation llList2Rot(List<string> src, int index) | ||
1103 | { | ||
1104 | return m_LSL_Functions.llList2Rot(src, index); | ||
1105 | } | ||
1106 | |||
1107 | public List<string> llList2List(List<string> src, int start, int end) | ||
1108 | { | ||
1109 | return m_LSL_Functions.llList2List(src, start, end); | ||
1110 | } | ||
1111 | |||
1112 | public List<string> llDeleteSubList(List<string> src, int start, int end) | ||
1113 | { | ||
1114 | return m_LSL_Functions.llDeleteSubList(src, start, end); | ||
1115 | } | ||
1116 | |||
1117 | public int llGetListEntryType(List<string> src, int index) | ||
1118 | { | ||
1119 | return m_LSL_Functions.llGetListEntryType(src, index); | ||
1120 | } | ||
1121 | |||
1122 | public string llList2CSV(List<string> src) | ||
1123 | { | ||
1124 | return m_LSL_Functions.llList2CSV(src); | ||
1125 | } | ||
1126 | |||
1127 | public List<string> llCSV2List(string src) | ||
1128 | { | ||
1129 | return m_LSL_Functions.llCSV2List(src); | ||
1130 | } | ||
1131 | |||
1132 | public List<string> llListRandomize(List<string> src, int stride) | ||
1133 | { | ||
1134 | return m_LSL_Functions.llListRandomize(src, stride); | ||
1135 | } | ||
1136 | |||
1137 | public List<string> llList2ListStrided(List<string> src, int start, int end, int stride) | ||
1138 | { | ||
1139 | return m_LSL_Functions.llList2ListStrided(src, start, end, stride); | ||
1140 | } | ||
1141 | |||
1142 | public vector llGetRegionCorner() | ||
1143 | { | ||
1144 | return m_LSL_Functions.llGetRegionCorner(); | ||
1145 | } | ||
1146 | |||
1147 | public List<string> llListInsertList(List<string> dest, List<string> src, int start) | ||
1148 | { | ||
1149 | return m_LSL_Functions.llListInsertList(dest, src, start); | ||
1150 | } | ||
1151 | |||
1152 | public int llListFindList(List<string> src, List<string> test) | ||
1153 | { | ||
1154 | return m_LSL_Functions.llListFindList(src, test); | ||
1155 | } | ||
1156 | |||
1157 | public string llGetObjectName() | ||
1158 | { | ||
1159 | return m_LSL_Functions.llGetObjectName(); | ||
1160 | } | ||
1161 | |||
1162 | public void llSetObjectName(string name) | ||
1163 | { | ||
1164 | m_LSL_Functions.llSetObjectName(name); | ||
1165 | } | ||
1166 | |||
1167 | public string llGetDate() | ||
1168 | { | ||
1169 | return m_LSL_Functions.llGetDate(); | ||
1170 | } | ||
1171 | |||
1172 | public int llEdgeOfWorld(vector pos, vector dir) | ||
1173 | { | ||
1174 | return m_LSL_Functions.llEdgeOfWorld(pos, dir); | ||
1175 | } | ||
1176 | |||
1177 | public int llGetAgentInfo(string id) | ||
1178 | { | ||
1179 | return m_LSL_Functions.llGetAgentInfo(id); | ||
1180 | } | ||
1181 | |||
357 | // | 1182 | // |
358 | // DO NOT MODIFY HERE: MODIFY IN LSL_BuiltIn_Commands.cs | 1183 | // DO NOT MODIFY HERE: MODIFY IN LSL_BuiltIn_Commands.cs |
359 | // | 1184 | // |
360 | public void llAdjustSoundVolume(double volume) { m_LSL_Functions.llAdjustSoundVolume(volume); } | 1185 | public void llAdjustSoundVolume(double volume) |
361 | public void llSetSoundQueueing(int queue) { m_LSL_Functions.llSetSoundQueueing(queue); } | 1186 | { |
362 | public void llSetSoundRadius(double radius) { m_LSL_Functions.llSetSoundRadius(radius); } | 1187 | m_LSL_Functions.llAdjustSoundVolume(volume); |
363 | public string llKey2Name(string id) { return m_LSL_Functions.llKey2Name(id); } | 1188 | } |
364 | public void llSetTextureAnim(int mode, int face, int sizex, int sizey, double start, double length, double rate) { m_LSL_Functions.llSetTextureAnim(mode, face, sizex, sizey, start, length, rate); } | 1189 | |
365 | public void llTriggerSoundLimited(string sound, double volume, LSL_Types.Vector3 top_north_east, LSL_Types.Vector3 bottom_south_west) { m_LSL_Functions.llTriggerSoundLimited(sound, volume, top_north_east, bottom_south_west); } | 1190 | public void llSetSoundQueueing(int queue) |
366 | public void llEjectFromLand(string pest) { m_LSL_Functions.llEjectFromLand(pest); } | 1191 | { |
367 | public void llParseString2List() { m_LSL_Functions.llParseString2List(); } | 1192 | m_LSL_Functions.llSetSoundQueueing(queue); |
368 | public int llOverMyLand(string id) { return m_LSL_Functions.llOverMyLand(id); } | 1193 | } |
369 | public string llGetLandOwnerAt(LSL_Types.Vector3 pos) { return m_LSL_Functions.llGetLandOwnerAt(pos); } | 1194 | |
370 | public string llGetNotecardLine(string name, int line) { return m_LSL_Functions.llGetNotecardLine(name, line); } | 1195 | public void llSetSoundRadius(double radius) |
371 | public LSL_Types.Vector3 llGetAgentSize(string id) { return m_LSL_Functions.llGetAgentSize(id); } | 1196 | { |
372 | public int llSameGroup(string agent) { return m_LSL_Functions.llSameGroup(agent); } | 1197 | m_LSL_Functions.llSetSoundRadius(radius); |
373 | public void llUnSit(string id) { m_LSL_Functions.llUnSit(id); } | 1198 | } |
374 | public LSL_Types.Vector3 llGroundSlope(LSL_Types.Vector3 offset) { return m_LSL_Functions.llGroundSlope(offset); } | 1199 | |
375 | public LSL_Types.Vector3 llGroundNormal(LSL_Types.Vector3 offset) { return m_LSL_Functions.llGroundNormal(offset); } | 1200 | public string llKey2Name(string id) |
376 | public LSL_Types.Vector3 llGroundContour(LSL_Types.Vector3 offset) { return m_LSL_Functions.llGroundContour(offset); } | 1201 | { |
377 | public int llGetAttached() { return m_LSL_Functions.llGetAttached(); } | 1202 | return m_LSL_Functions.llKey2Name(id); |
378 | public int llGetFreeMemory() { return m_LSL_Functions.llGetFreeMemory(); } | 1203 | } |
379 | public string llGetRegionName() { return m_LSL_Functions.llGetRegionName(); } | 1204 | |
380 | public double llGetRegionTimeDilation() { return m_LSL_Functions.llGetRegionTimeDilation(); } | 1205 | public void llSetTextureAnim(int mode, int face, int sizex, int sizey, double start, double length, double rate) |
381 | public double llGetRegionFPS() { return m_LSL_Functions.llGetRegionFPS(); } | 1206 | { |
1207 | m_LSL_Functions.llSetTextureAnim(mode, face, sizex, sizey, start, length, rate); | ||
1208 | } | ||
1209 | |||
1210 | public void llTriggerSoundLimited(string sound, double volume, vector top_north_east, vector bottom_south_west) | ||
1211 | { | ||
1212 | m_LSL_Functions.llTriggerSoundLimited(sound, volume, top_north_east, bottom_south_west); | ||
1213 | } | ||
1214 | |||
1215 | public void llEjectFromLand(string pest) | ||
1216 | { | ||
1217 | m_LSL_Functions.llEjectFromLand(pest); | ||
1218 | } | ||
1219 | |||
1220 | public void llParseString2List() | ||
1221 | { | ||
1222 | m_LSL_Functions.llParseString2List(); | ||
1223 | } | ||
1224 | |||
1225 | public int llOverMyLand(string id) | ||
1226 | { | ||
1227 | return m_LSL_Functions.llOverMyLand(id); | ||
1228 | } | ||
1229 | |||
1230 | public string llGetLandOwnerAt(vector pos) | ||
1231 | { | ||
1232 | return m_LSL_Functions.llGetLandOwnerAt(pos); | ||
1233 | } | ||
1234 | |||
1235 | public string llGetNotecardLine(string name, int line) | ||
1236 | { | ||
1237 | return m_LSL_Functions.llGetNotecardLine(name, line); | ||
1238 | } | ||
1239 | |||
1240 | public vector llGetAgentSize(string id) | ||
1241 | { | ||
1242 | return m_LSL_Functions.llGetAgentSize(id); | ||
1243 | } | ||
1244 | |||
1245 | public int llSameGroup(string agent) | ||
1246 | { | ||
1247 | return m_LSL_Functions.llSameGroup(agent); | ||
1248 | } | ||
1249 | |||
1250 | public void llUnSit(string id) | ||
1251 | { | ||
1252 | m_LSL_Functions.llUnSit(id); | ||
1253 | } | ||
1254 | |||
1255 | public vector llGroundSlope(vector offset) | ||
1256 | { | ||
1257 | return m_LSL_Functions.llGroundSlope(offset); | ||
1258 | } | ||
1259 | |||
1260 | public vector llGroundNormal(vector offset) | ||
1261 | { | ||
1262 | return m_LSL_Functions.llGroundNormal(offset); | ||
1263 | } | ||
1264 | |||
1265 | public vector llGroundContour(vector offset) | ||
1266 | { | ||
1267 | return m_LSL_Functions.llGroundContour(offset); | ||
1268 | } | ||
1269 | |||
1270 | public int llGetAttached() | ||
1271 | { | ||
1272 | return m_LSL_Functions.llGetAttached(); | ||
1273 | } | ||
1274 | |||
1275 | public int llGetFreeMemory() | ||
1276 | { | ||
1277 | return m_LSL_Functions.llGetFreeMemory(); | ||
1278 | } | ||
1279 | |||
1280 | public string llGetRegionName() | ||
1281 | { | ||
1282 | return m_LSL_Functions.llGetRegionName(); | ||
1283 | } | ||
1284 | |||
1285 | public double llGetRegionTimeDilation() | ||
1286 | { | ||
1287 | return m_LSL_Functions.llGetRegionTimeDilation(); | ||
1288 | } | ||
1289 | |||
1290 | public double llGetRegionFPS() | ||
1291 | { | ||
1292 | return m_LSL_Functions.llGetRegionFPS(); | ||
1293 | } | ||
1294 | |||
382 | // | 1295 | // |
383 | // DO NOT MODIFY HERE: MODIFY IN LSL_BuiltIn_Commands.cs | 1296 | // DO NOT MODIFY HERE: MODIFY IN LSL_BuiltIn_Commands.cs |
384 | // | 1297 | // |
385 | public void llParticleSystem(List<Object> rules) { m_LSL_Functions.llParticleSystem(rules); } | 1298 | public void llParticleSystem(List<Object> rules) |
386 | public void llGroundRepel(double height, int water, double tau) { m_LSL_Functions.llGroundRepel(height, water, tau); } | 1299 | { |
387 | public void llGiveInventoryList() { m_LSL_Functions.llGiveInventoryList(); } | 1300 | m_LSL_Functions.llParticleSystem(rules); |
388 | public void llSetVehicleType(int type) { m_LSL_Functions.llSetVehicleType(type); } | 1301 | } |
389 | public void llSetVehicledoubleParam(int param, double value) { m_LSL_Functions.llSetVehicledoubleParam(param, value); } | 1302 | |
390 | public void llSetVehicleVectorParam(int param, LSL_Types.Vector3 vec) { m_LSL_Functions.llSetVehicleVectorParam(param, vec); } | 1303 | public void llGroundRepel(double height, int water, double tau) |
391 | public void llSetVehicleRotationParam(int param, LSL_Types.Quaternion rot) { m_LSL_Functions.llSetVehicleRotationParam(param, rot); } | 1304 | { |
392 | public void llSetVehicleFlags(int flags) { m_LSL_Functions.llSetVehicleFlags(flags); } | 1305 | m_LSL_Functions.llGroundRepel(height, water, tau); |
393 | public void llRemoveVehicleFlags(int flags) { m_LSL_Functions.llRemoveVehicleFlags(flags); } | 1306 | } |
394 | public void llSitTarget(LSL_Types.Vector3 offset, LSL_Types.Quaternion rot) { m_LSL_Functions.llSitTarget(offset, rot); } | 1307 | |
395 | public string llAvatarOnSitTarget() { return m_LSL_Functions.llAvatarOnSitTarget(); } | 1308 | public void llGiveInventoryList() |
396 | public void llAddToLandPassList(string avatar, double hours) { m_LSL_Functions.llAddToLandPassList(avatar, hours); } | 1309 | { |
397 | public void llSetTouchText(string text) { m_LSL_Functions.llSetTouchText(text); } | 1310 | m_LSL_Functions.llGiveInventoryList(); |
398 | public void llSetSitText(string text) { m_LSL_Functions.llSetSitText(text); } | 1311 | } |
399 | public void llSetCameraEyeOffset(LSL_Types.Vector3 offset) { m_LSL_Functions.llSetCameraEyeOffset(offset); } | 1312 | |
400 | public void llSetCameraAtOffset(LSL_Types.Vector3 offset) { m_LSL_Functions.llSetCameraAtOffset(offset); } | 1313 | public void llSetVehicleType(int type) |
401 | public void llDumpList2String() { m_LSL_Functions.llDumpList2String(); } | 1314 | { |
402 | public void llScriptDanger(LSL_Types.Vector3 pos) { m_LSL_Functions.llScriptDanger(pos); } | 1315 | m_LSL_Functions.llSetVehicleType(type); |
403 | public void llDialog(string avatar, string message, List<string> buttons, int chat_channel) { m_LSL_Functions.llDialog(avatar, message, buttons, chat_channel); } | 1316 | } |
404 | public void llVolumeDetect(int detect) { m_LSL_Functions.llVolumeDetect(detect); } | 1317 | |
405 | public void llResetOtherScript(string name) { m_LSL_Functions.llResetOtherScript(name); } | 1318 | public void llSetVehicledoubleParam(int param, double value) |
406 | public int llGetScriptState(string name) { return m_LSL_Functions.llGetScriptState(name); } | 1319 | { |
407 | public void llRemoteLoadScript() { m_LSL_Functions.llRemoteLoadScript(); } | 1320 | m_LSL_Functions.llSetVehicledoubleParam(param, value); |
408 | public void llSetRemoteScriptAccessPin(int pin) { m_LSL_Functions.llSetRemoteScriptAccessPin(pin); } | 1321 | } |
409 | public void llRemoteLoadScriptPin(string target, string name, int pin, int running, int start_param) { m_LSL_Functions.llRemoteLoadScriptPin(target, name, pin, running, start_param); } | 1322 | |
1323 | public void llSetVehicleVectorParam(int param, vector vec) | ||
1324 | { | ||
1325 | m_LSL_Functions.llSetVehicleVectorParam(param, vec); | ||
1326 | } | ||
1327 | |||
1328 | public void llSetVehicleRotationParam(int param, rotation rot) | ||
1329 | { | ||
1330 | m_LSL_Functions.llSetVehicleRotationParam(param, rot); | ||
1331 | } | ||
1332 | |||
1333 | public void llSetVehicleFlags(int flags) | ||
1334 | { | ||
1335 | m_LSL_Functions.llSetVehicleFlags(flags); | ||
1336 | } | ||
1337 | |||
1338 | public void llRemoveVehicleFlags(int flags) | ||
1339 | { | ||
1340 | m_LSL_Functions.llRemoveVehicleFlags(flags); | ||
1341 | } | ||
1342 | |||
1343 | public void llSitTarget(vector offset, rotation rot) | ||
1344 | { | ||
1345 | m_LSL_Functions.llSitTarget(offset, rot); | ||
1346 | } | ||
1347 | |||
1348 | public string llAvatarOnSitTarget() | ||
1349 | { | ||
1350 | return m_LSL_Functions.llAvatarOnSitTarget(); | ||
1351 | } | ||
1352 | |||
1353 | public void llAddToLandPassList(string avatar, double hours) | ||
1354 | { | ||
1355 | m_LSL_Functions.llAddToLandPassList(avatar, hours); | ||
1356 | } | ||
1357 | |||
1358 | public void llSetTouchText(string text) | ||
1359 | { | ||
1360 | m_LSL_Functions.llSetTouchText(text); | ||
1361 | } | ||
1362 | |||
1363 | public void llSetSitText(string text) | ||
1364 | { | ||
1365 | m_LSL_Functions.llSetSitText(text); | ||
1366 | } | ||
1367 | |||
1368 | public void llSetCameraEyeOffset(vector offset) | ||
1369 | { | ||
1370 | m_LSL_Functions.llSetCameraEyeOffset(offset); | ||
1371 | } | ||
1372 | |||
1373 | public void llSetCameraAtOffset(vector offset) | ||
1374 | { | ||
1375 | m_LSL_Functions.llSetCameraAtOffset(offset); | ||
1376 | } | ||
1377 | |||
1378 | public void llDumpList2String() | ||
1379 | { | ||
1380 | m_LSL_Functions.llDumpList2String(); | ||
1381 | } | ||
1382 | |||
1383 | public void llScriptDanger(vector pos) | ||
1384 | { | ||
1385 | m_LSL_Functions.llScriptDanger(pos); | ||
1386 | } | ||
1387 | |||
1388 | public void llDialog(string avatar, string message, List<string> buttons, int chat_channel) | ||
1389 | { | ||
1390 | m_LSL_Functions.llDialog(avatar, message, buttons, chat_channel); | ||
1391 | } | ||
1392 | |||
1393 | public void llVolumeDetect(int detect) | ||
1394 | { | ||
1395 | m_LSL_Functions.llVolumeDetect(detect); | ||
1396 | } | ||
1397 | |||
1398 | public void llResetOtherScript(string name) | ||
1399 | { | ||
1400 | m_LSL_Functions.llResetOtherScript(name); | ||
1401 | } | ||
1402 | |||
1403 | public int llGetScriptState(string name) | ||
1404 | { | ||
1405 | return m_LSL_Functions.llGetScriptState(name); | ||
1406 | } | ||
1407 | |||
1408 | public void llRemoteLoadScript() | ||
1409 | { | ||
1410 | m_LSL_Functions.llRemoteLoadScript(); | ||
1411 | } | ||
1412 | |||
1413 | public void llSetRemoteScriptAccessPin(int pin) | ||
1414 | { | ||
1415 | m_LSL_Functions.llSetRemoteScriptAccessPin(pin); | ||
1416 | } | ||
1417 | |||
1418 | public void llRemoteLoadScriptPin(string target, string name, int pin, int running, int start_param) | ||
1419 | { | ||
1420 | m_LSL_Functions.llRemoteLoadScriptPin(target, name, pin, running, start_param); | ||
1421 | } | ||
1422 | |||
410 | // | 1423 | // |
411 | // DO NOT MODIFY HERE: MODIFY IN LSL_BuiltIn_Commands.cs | 1424 | // DO NOT MODIFY HERE: MODIFY IN LSL_BuiltIn_Commands.cs |
412 | // | 1425 | // |
413 | public void llOpenRemoteDataChannel() { m_LSL_Functions.llOpenRemoteDataChannel(); } | 1426 | public void llOpenRemoteDataChannel() |
414 | public string llSendRemoteData(string channel, string dest, int idata, string sdata) { return m_LSL_Functions.llSendRemoteData(channel, dest, idata, sdata); } | 1427 | { |
415 | public void llRemoteDataReply(string channel, string message_id, string sdata, int idata) { m_LSL_Functions.llRemoteDataReply(channel, message_id, sdata, idata); } | 1428 | m_LSL_Functions.llOpenRemoteDataChannel(); |
416 | public void llCloseRemoteDataChannel(string channel) { m_LSL_Functions.llCloseRemoteDataChannel(channel); } | 1429 | } |
417 | public string llMD5String(string src, int nonce) { return m_LSL_Functions.llMD5String(src, nonce); } | 1430 | |
418 | public void llSetPrimitiveParams(List<string> rules) { m_LSL_Functions.llSetPrimitiveParams(rules); } | 1431 | public string llSendRemoteData(string channel, string dest, int idata, string sdata) |
419 | public string llStringToBase64(string str) { return m_LSL_Functions.llStringToBase64(str); } | 1432 | { |
420 | public string llBase64ToString(string str) { return m_LSL_Functions.llBase64ToString(str); } | 1433 | return m_LSL_Functions.llSendRemoteData(channel, dest, idata, sdata); |
421 | public void llXorBase64Strings() { m_LSL_Functions.llXorBase64Strings(); } | 1434 | } |
422 | public void llRemoteDataSetRegion() { m_LSL_Functions.llRemoteDataSetRegion(); } | 1435 | |
423 | public double llLog10(double val) { return m_LSL_Functions.llLog10(val); } | 1436 | public void llRemoteDataReply(string channel, string message_id, string sdata, int idata) |
424 | public double llLog(double val) { return m_LSL_Functions.llLog(val); } | 1437 | { |
425 | public List<string> llGetAnimationList(string id) { return m_LSL_Functions.llGetAnimationList(id); } | 1438 | m_LSL_Functions.llRemoteDataReply(channel, message_id, sdata, idata); |
426 | public void llSetParcelMusicURL(string url) { m_LSL_Functions.llSetParcelMusicURL(url); } | 1439 | } |
427 | public LSL_Types.Vector3 llGetRootPosition() { return m_LSL_Functions.llGetRootPosition(); } | 1440 | |
428 | public LSL_Types.Quaternion llGetRootRotation() { return m_LSL_Functions.llGetRootRotation(); } | 1441 | public void llCloseRemoteDataChannel(string channel) |
429 | public string llGetObjectDesc() { return m_LSL_Functions.llGetObjectDesc(); } | 1442 | { |
430 | public void llSetObjectDesc(string desc) { m_LSL_Functions.llSetObjectDesc(desc); } | 1443 | m_LSL_Functions.llCloseRemoteDataChannel(channel); |
431 | public string llGetCreator() { return m_LSL_Functions.llGetCreator(); } | 1444 | } |
432 | public string llGetTimestamp() { return m_LSL_Functions.llGetTimestamp(); } | 1445 | |
433 | public void llSetLinkAlpha(int linknumber, double alpha, int face) { m_LSL_Functions.llSetLinkAlpha(linknumber, alpha, face); } | 1446 | public string llMD5String(string src, int nonce) |
434 | public int llGetNumberOfPrims() { return m_LSL_Functions.llGetNumberOfPrims(); } | 1447 | { |
435 | public string llGetNumberOfNotecardLines(string name) { return m_LSL_Functions.llGetNumberOfNotecardLines(name); } | 1448 | return m_LSL_Functions.llMD5String(src, nonce); |
436 | public List<string> llGetBoundingBox(string obj) { return m_LSL_Functions.llGetBoundingBox(obj); } | 1449 | } |
437 | public LSL_Types.Vector3 llGetGeometricCenter() { return m_LSL_Functions.llGetGeometricCenter(); } | 1450 | |
438 | public void llGetPrimitiveParams() { m_LSL_Functions.llGetPrimitiveParams(); } | 1451 | public void llSetPrimitiveParams(List<string> rules) |
1452 | { | ||
1453 | m_LSL_Functions.llSetPrimitiveParams(rules); | ||
1454 | } | ||
1455 | |||
1456 | public string llStringToBase64(string str) | ||
1457 | { | ||
1458 | return m_LSL_Functions.llStringToBase64(str); | ||
1459 | } | ||
1460 | |||
1461 | public string llBase64ToString(string str) | ||
1462 | { | ||
1463 | return m_LSL_Functions.llBase64ToString(str); | ||
1464 | } | ||
1465 | |||
1466 | public void llXorBase64Strings() | ||
1467 | { | ||
1468 | m_LSL_Functions.llXorBase64Strings(); | ||
1469 | } | ||
1470 | |||
1471 | public void llRemoteDataSetRegion() | ||
1472 | { | ||
1473 | m_LSL_Functions.llRemoteDataSetRegion(); | ||
1474 | } | ||
1475 | |||
1476 | public double llLog10(double val) | ||
1477 | { | ||
1478 | return m_LSL_Functions.llLog10(val); | ||
1479 | } | ||
1480 | |||
1481 | public double llLog(double val) | ||
1482 | { | ||
1483 | return m_LSL_Functions.llLog(val); | ||
1484 | } | ||
1485 | |||
1486 | public List<string> llGetAnimationList(string id) | ||
1487 | { | ||
1488 | return m_LSL_Functions.llGetAnimationList(id); | ||
1489 | } | ||
1490 | |||
1491 | public void llSetParcelMusicURL(string url) | ||
1492 | { | ||
1493 | m_LSL_Functions.llSetParcelMusicURL(url); | ||
1494 | } | ||
1495 | |||
1496 | public vector llGetRootPosition() | ||
1497 | { | ||
1498 | return m_LSL_Functions.llGetRootPosition(); | ||
1499 | } | ||
1500 | |||
1501 | public rotation llGetRootRotation() | ||
1502 | { | ||
1503 | return m_LSL_Functions.llGetRootRotation(); | ||
1504 | } | ||
1505 | |||
1506 | public string llGetObjectDesc() | ||
1507 | { | ||
1508 | return m_LSL_Functions.llGetObjectDesc(); | ||
1509 | } | ||
1510 | |||
1511 | public void llSetObjectDesc(string desc) | ||
1512 | { | ||
1513 | m_LSL_Functions.llSetObjectDesc(desc); | ||
1514 | } | ||
1515 | |||
1516 | public string llGetCreator() | ||
1517 | { | ||
1518 | return m_LSL_Functions.llGetCreator(); | ||
1519 | } | ||
1520 | |||
1521 | public string llGetTimestamp() | ||
1522 | { | ||
1523 | return m_LSL_Functions.llGetTimestamp(); | ||
1524 | } | ||
1525 | |||
1526 | public void llSetLinkAlpha(int linknumber, double alpha, int face) | ||
1527 | { | ||
1528 | m_LSL_Functions.llSetLinkAlpha(linknumber, alpha, face); | ||
1529 | } | ||
1530 | |||
1531 | public int llGetNumberOfPrims() | ||
1532 | { | ||
1533 | return m_LSL_Functions.llGetNumberOfPrims(); | ||
1534 | } | ||
1535 | |||
1536 | public string llGetNumberOfNotecardLines(string name) | ||
1537 | { | ||
1538 | return m_LSL_Functions.llGetNumberOfNotecardLines(name); | ||
1539 | } | ||
1540 | |||
1541 | public List<string> llGetBoundingBox(string obj) | ||
1542 | { | ||
1543 | return m_LSL_Functions.llGetBoundingBox(obj); | ||
1544 | } | ||
1545 | |||
1546 | public vector llGetGeometricCenter() | ||
1547 | { | ||
1548 | return m_LSL_Functions.llGetGeometricCenter(); | ||
1549 | } | ||
1550 | |||
1551 | public void llGetPrimitiveParams() | ||
1552 | { | ||
1553 | m_LSL_Functions.llGetPrimitiveParams(); | ||
1554 | } | ||
1555 | |||
439 | // | 1556 | // |
440 | // DO NOT MODIFY HERE: MODIFY IN LSL_BuiltIn_Commands.cs | 1557 | // DO NOT MODIFY HERE: MODIFY IN LSL_BuiltIn_Commands.cs |
441 | // | 1558 | // |
442 | public string llIntegerToBase64(int number) { return m_LSL_Functions.llIntegerToBase64(number); } | 1559 | public string llIntegerToBase64(int number) |
443 | public int llBase64ToInteger(string str) { return m_LSL_Functions.llBase64ToInteger(str); } | 1560 | { |
444 | public double llGetGMTclock() { return m_LSL_Functions.llGetGMTclock(); } | 1561 | return m_LSL_Functions.llIntegerToBase64(number); |
445 | public string llGetSimulatorHostname() { return m_LSL_Functions.llGetSimulatorHostname(); } | 1562 | } |
446 | public void llSetLocalRot(LSL_Types.Quaternion rot) { m_LSL_Functions.llSetLocalRot(rot); } | 1563 | |
447 | public List<string> llParseStringKeepNulls(string src, List<string> seperators, List<string> spacers) { return m_LSL_Functions.llParseStringKeepNulls(src, seperators, spacers); } | 1564 | public int llBase64ToInteger(string str) |
448 | public void llRezAtRoot(string inventory, LSL_Types.Vector3 position, LSL_Types.Vector3 velocity, LSL_Types.Quaternion rot, int param) { m_LSL_Functions.llRezAtRoot(inventory, position, velocity, rot, param); } | 1565 | { |
449 | public int llGetObjectPermMask(int mask) { return m_LSL_Functions.llGetObjectPermMask(mask); } | 1566 | return m_LSL_Functions.llBase64ToInteger(str); |
450 | public void llSetObjectPermMask(int mask, int value) { m_LSL_Functions.llSetObjectPermMask(mask, value); } | 1567 | } |
451 | public void llGetInventoryPermMask(string item, int mask) { m_LSL_Functions.llGetInventoryPermMask(item, mask); } | 1568 | |
452 | public void llSetInventoryPermMask(string item, int mask, int value) { m_LSL_Functions.llSetInventoryPermMask(item, mask, value); } | 1569 | public double llGetGMTclock() |
453 | public string llGetInventoryCreator(string item) { return m_LSL_Functions.llGetInventoryCreator(item); } | 1570 | { |
454 | public void llOwnerSay(string msg) { m_LSL_Functions.llOwnerSay(msg); } | 1571 | return m_LSL_Functions.llGetGMTclock(); |
455 | public void llRequestSimulatorData(string simulator, int data) { m_LSL_Functions.llRequestSimulatorData(simulator, data); } | 1572 | } |
456 | public void llForceMouselook(int mouselook) { m_LSL_Functions.llForceMouselook(mouselook); } | 1573 | |
457 | public double llGetObjectMass(string id) { return m_LSL_Functions.llGetObjectMass(id); } | 1574 | public string llGetSimulatorHostname() |
458 | public void llListReplaceList() { m_LSL_Functions.llListReplaceList(); } | 1575 | { |
459 | public void llLoadURL(string avatar_id, string message, string url) { m_LSL_Functions.llLoadURL(avatar_id, message, url); } | 1576 | return m_LSL_Functions.llGetSimulatorHostname(); |
460 | public void llParcelMediaCommandList(List<string> commandList) { m_LSL_Functions.llParcelMediaCommandList(commandList); } | 1577 | } |
461 | public void llParcelMediaQuery() { m_LSL_Functions.llParcelMediaQuery(); } | 1578 | |
462 | public int llModPow(int a, int b, int c) { return m_LSL_Functions.llModPow(a, b, c); } | 1579 | public void llSetLocalRot(rotation rot) |
1580 | { | ||
1581 | m_LSL_Functions.llSetLocalRot(rot); | ||
1582 | } | ||
1583 | |||
1584 | public List<string> llParseStringKeepNulls(string src, List<string> seperators, List<string> spacers) | ||
1585 | { | ||
1586 | return m_LSL_Functions.llParseStringKeepNulls(src, seperators, spacers); | ||
1587 | } | ||
1588 | |||
1589 | public void llRezAtRoot(string inventory, vector position, vector velocity, rotation rot, int param) | ||
1590 | { | ||
1591 | m_LSL_Functions.llRezAtRoot(inventory, position, velocity, rot, param); | ||
1592 | } | ||
1593 | |||
1594 | public int llGetObjectPermMask(int mask) | ||
1595 | { | ||
1596 | return m_LSL_Functions.llGetObjectPermMask(mask); | ||
1597 | } | ||
1598 | |||
1599 | public void llSetObjectPermMask(int mask, int value) | ||
1600 | { | ||
1601 | m_LSL_Functions.llSetObjectPermMask(mask, value); | ||
1602 | } | ||
1603 | |||
1604 | public void llGetInventoryPermMask(string item, int mask) | ||
1605 | { | ||
1606 | m_LSL_Functions.llGetInventoryPermMask(item, mask); | ||
1607 | } | ||
1608 | |||
1609 | public void llSetInventoryPermMask(string item, int mask, int value) | ||
1610 | { | ||
1611 | m_LSL_Functions.llSetInventoryPermMask(item, mask, value); | ||
1612 | } | ||
1613 | |||
1614 | public string llGetInventoryCreator(string item) | ||
1615 | { | ||
1616 | return m_LSL_Functions.llGetInventoryCreator(item); | ||
1617 | } | ||
1618 | |||
1619 | public void llOwnerSay(string msg) | ||
1620 | { | ||
1621 | m_LSL_Functions.llOwnerSay(msg); | ||
1622 | } | ||
1623 | |||
1624 | public void llRequestSimulatorData(string simulator, int data) | ||
1625 | { | ||
1626 | m_LSL_Functions.llRequestSimulatorData(simulator, data); | ||
1627 | } | ||
1628 | |||
1629 | public void llForceMouselook(int mouselook) | ||
1630 | { | ||
1631 | m_LSL_Functions.llForceMouselook(mouselook); | ||
1632 | } | ||
1633 | |||
1634 | public double llGetObjectMass(string id) | ||
1635 | { | ||
1636 | return m_LSL_Functions.llGetObjectMass(id); | ||
1637 | } | ||
1638 | |||
1639 | public void llListReplaceList() | ||
1640 | { | ||
1641 | m_LSL_Functions.llListReplaceList(); | ||
1642 | } | ||
1643 | |||
1644 | public void llLoadURL(string avatar_id, string message, string url) | ||
1645 | { | ||
1646 | m_LSL_Functions.llLoadURL(avatar_id, message, url); | ||
1647 | } | ||
1648 | |||
1649 | public void llParcelMediaCommandList(List<string> commandList) | ||
1650 | { | ||
1651 | m_LSL_Functions.llParcelMediaCommandList(commandList); | ||
1652 | } | ||
1653 | |||
1654 | public void llParcelMediaQuery() | ||
1655 | { | ||
1656 | m_LSL_Functions.llParcelMediaQuery(); | ||
1657 | } | ||
1658 | |||
1659 | public int llModPow(int a, int b, int c) | ||
1660 | { | ||
1661 | return m_LSL_Functions.llModPow(a, b, c); | ||
1662 | } | ||
1663 | |||
463 | // | 1664 | // |
464 | // DO NOT MODIFY HERE: MODIFY IN LSL_BuiltIn_Commands.cs | 1665 | // DO NOT MODIFY HERE: MODIFY IN LSL_BuiltIn_Commands.cs |
465 | // | 1666 | // |
466 | public int llGetInventoryType(string name) { return m_LSL_Functions.llGetInventoryType(name); } | 1667 | public int llGetInventoryType(string name) |
467 | public void llSetPayPrice(int price, List<string> quick_pay_buttons) { m_LSL_Functions.llSetPayPrice(price, quick_pay_buttons); } | 1668 | { |
468 | public LSL_Types.Vector3 llGetCameraPos() { return m_LSL_Functions.llGetCameraPos(); } | 1669 | return m_LSL_Functions.llGetInventoryType(name); |
469 | public LSL_Types.Quaternion llGetCameraRot() { return m_LSL_Functions.llGetCameraRot(); } | 1670 | } |
470 | public void llSetPrimURL() { m_LSL_Functions.llSetPrimURL(); } | 1671 | |
471 | public void llRefreshPrimURL() { m_LSL_Functions.llRefreshPrimURL(); } | 1672 | public void llSetPayPrice(int price, List<string> quick_pay_buttons) |
472 | public string llEscapeURL(string url) { return m_LSL_Functions.llEscapeURL(url); } | 1673 | { |
473 | public string llUnescapeURL(string url) { return m_LSL_Functions.llUnescapeURL(url); } | 1674 | m_LSL_Functions.llSetPayPrice(price, quick_pay_buttons); |
474 | public void llMapDestination(string simname, LSL_Types.Vector3 pos, LSL_Types.Vector3 look_at) { m_LSL_Functions.llMapDestination(simname, pos, look_at); } | 1675 | } |
475 | public void llAddToLandBanList(string avatar, double hours) { m_LSL_Functions.llAddToLandBanList(avatar, hours); } | 1676 | |
476 | public void llRemoveFromLandPassList(string avatar) { m_LSL_Functions.llRemoveFromLandPassList(avatar); } | 1677 | public vector llGetCameraPos() |
477 | public void llRemoveFromLandBanList(string avatar) { m_LSL_Functions.llRemoveFromLandBanList(avatar); } | 1678 | { |
478 | public void llSetCameraParams(List<string> rules) { m_LSL_Functions.llSetCameraParams(rules); } | 1679 | return m_LSL_Functions.llGetCameraPos(); |
479 | public void llClearCameraParams() { m_LSL_Functions.llClearCameraParams(); } | 1680 | } |
480 | public double llListStatistics(int operation, List<string> src) { return m_LSL_Functions.llListStatistics(operation, src); } | 1681 | |
481 | public int llGetUnixTime() { return m_LSL_Functions.llGetUnixTime(); } | 1682 | public rotation llGetCameraRot() |
482 | public int llGetParcelFlags(LSL_Types.Vector3 pos) { return m_LSL_Functions.llGetParcelFlags(pos); } | 1683 | { |
483 | public int llGetRegionFlags() { return m_LSL_Functions.llGetRegionFlags(); } | 1684 | return m_LSL_Functions.llGetCameraRot(); |
484 | public string llXorBase64StringsCorrect(string str1, string str2) { return m_LSL_Functions.llXorBase64StringsCorrect(str1, str2); } | 1685 | } |
485 | public void llHTTPRequest(string url, List<string> parameters, string body) { m_LSL_Functions.llHTTPRequest(url, parameters, body); } | 1686 | |
486 | public void llResetLandBanList() { m_LSL_Functions.llResetLandBanList(); } | 1687 | public void llSetPrimURL() |
487 | public void llResetLandPassList() { m_LSL_Functions.llResetLandPassList(); } | 1688 | { |
488 | public int llGetParcelPrimCount(LSL_Types.Vector3 pos, int category, int sim_wide) { return m_LSL_Functions.llGetParcelPrimCount(pos, category, sim_wide); } | 1689 | m_LSL_Functions.llSetPrimURL(); |
489 | public List<string> llGetParcelPrimOwners(LSL_Types.Vector3 pos) { return m_LSL_Functions.llGetParcelPrimOwners(pos); } | 1690 | } |
490 | public int llGetObjectPrimCount(string object_id) { return m_LSL_Functions.llGetObjectPrimCount(object_id); } | 1691 | |
1692 | public void llRefreshPrimURL() | ||
1693 | { | ||
1694 | m_LSL_Functions.llRefreshPrimURL(); | ||
1695 | } | ||
1696 | |||
1697 | public string llEscapeURL(string url) | ||
1698 | { | ||
1699 | return m_LSL_Functions.llEscapeURL(url); | ||
1700 | } | ||
1701 | |||
1702 | public string llUnescapeURL(string url) | ||
1703 | { | ||
1704 | return m_LSL_Functions.llUnescapeURL(url); | ||
1705 | } | ||
1706 | |||
1707 | public void llMapDestination(string simname, vector pos, vector look_at) | ||
1708 | { | ||
1709 | m_LSL_Functions.llMapDestination(simname, pos, look_at); | ||
1710 | } | ||
1711 | |||
1712 | public void llAddToLandBanList(string avatar, double hours) | ||
1713 | { | ||
1714 | m_LSL_Functions.llAddToLandBanList(avatar, hours); | ||
1715 | } | ||
1716 | |||
1717 | public void llRemoveFromLandPassList(string avatar) | ||
1718 | { | ||
1719 | m_LSL_Functions.llRemoveFromLandPassList(avatar); | ||
1720 | } | ||
1721 | |||
1722 | public void llRemoveFromLandBanList(string avatar) | ||
1723 | { | ||
1724 | m_LSL_Functions.llRemoveFromLandBanList(avatar); | ||
1725 | } | ||
1726 | |||
1727 | public void llSetCameraParams(List<string> rules) | ||
1728 | { | ||
1729 | m_LSL_Functions.llSetCameraParams(rules); | ||
1730 | } | ||
1731 | |||
1732 | public void llClearCameraParams() | ||
1733 | { | ||
1734 | m_LSL_Functions.llClearCameraParams(); | ||
1735 | } | ||
1736 | |||
1737 | public double llListStatistics(int operation, List<string> src) | ||
1738 | { | ||
1739 | return m_LSL_Functions.llListStatistics(operation, src); | ||
1740 | } | ||
1741 | |||
1742 | public int llGetUnixTime() | ||
1743 | { | ||
1744 | return m_LSL_Functions.llGetUnixTime(); | ||
1745 | } | ||
1746 | |||
1747 | public int llGetParcelFlags(vector pos) | ||
1748 | { | ||
1749 | return m_LSL_Functions.llGetParcelFlags(pos); | ||
1750 | } | ||
1751 | |||
1752 | public int llGetRegionFlags() | ||
1753 | { | ||
1754 | return m_LSL_Functions.llGetRegionFlags(); | ||
1755 | } | ||
1756 | |||
1757 | public string llXorBase64StringsCorrect(string str1, string str2) | ||
1758 | { | ||
1759 | return m_LSL_Functions.llXorBase64StringsCorrect(str1, str2); | ||
1760 | } | ||
1761 | |||
1762 | public void llHTTPRequest(string url, List<string> parameters, string body) | ||
1763 | { | ||
1764 | m_LSL_Functions.llHTTPRequest(url, parameters, body); | ||
1765 | } | ||
1766 | |||
1767 | public void llResetLandBanList() | ||
1768 | { | ||
1769 | m_LSL_Functions.llResetLandBanList(); | ||
1770 | } | ||
1771 | |||
1772 | public void llResetLandPassList() | ||
1773 | { | ||
1774 | m_LSL_Functions.llResetLandPassList(); | ||
1775 | } | ||
1776 | |||
1777 | public int llGetParcelPrimCount(vector pos, int category, int sim_wide) | ||
1778 | { | ||
1779 | return m_LSL_Functions.llGetParcelPrimCount(pos, category, sim_wide); | ||
1780 | } | ||
1781 | |||
1782 | public List<string> llGetParcelPrimOwners(vector pos) | ||
1783 | { | ||
1784 | return m_LSL_Functions.llGetParcelPrimOwners(pos); | ||
1785 | } | ||
1786 | |||
1787 | public int llGetObjectPrimCount(string object_id) | ||
1788 | { | ||
1789 | return m_LSL_Functions.llGetObjectPrimCount(object_id); | ||
1790 | } | ||
1791 | |||
491 | // | 1792 | // |
492 | // DO NOT MODIFY HERE: MODIFY IN LSL_BuiltIn_Commands.cs | 1793 | // DO NOT MODIFY HERE: MODIFY IN LSL_BuiltIn_Commands.cs |
493 | // | 1794 | // |
494 | public int llGetParcelMaxPrims(LSL_Types.Vector3 pos, int sim_wide) { return m_LSL_Functions.llGetParcelMaxPrims(pos, sim_wide); } | 1795 | public int llGetParcelMaxPrims(vector pos, int sim_wide) |
495 | public List<string> llGetParcelDetails(LSL_Types.Vector3 pos, List<string> param) { return m_LSL_Functions.llGetParcelDetails(pos, param); } | 1796 | { |
1797 | return m_LSL_Functions.llGetParcelMaxPrims(pos, sim_wide); | ||
1798 | } | ||
1799 | |||
1800 | public List<string> llGetParcelDetails(vector pos, List<string> param) | ||
1801 | { | ||
1802 | return m_LSL_Functions.llGetParcelDetails(pos, param); | ||
1803 | } | ||
496 | 1804 | ||
497 | // | 1805 | // |
498 | // OpenSim Functions | 1806 | // OpenSim Functions |
499 | // | 1807 | // |
500 | public string osSetDynamicTextureURL(string dynamicID, string contentType, string url, string extraParams, int timer) { return m_LSL_Functions.osSetDynamicTextureURL(dynamicID, contentType, url, extraParams, timer); } | 1808 | public string osSetDynamicTextureURL(string dynamicID, string contentType, string url, string extraParams, |
1809 | int timer) | ||
1810 | { | ||
1811 | return m_LSL_Functions.osSetDynamicTextureURL(dynamicID, contentType, url, extraParams, timer); | ||
1812 | } | ||
501 | 1813 | ||
502 | // LSL CONSTANTS | 1814 | // LSL CONSTANTS |
503 | public const int TRUE = 1; | 1815 | public const int TRUE = 1; |
@@ -803,10 +2115,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL | |||
803 | public const double SQRT2 = 1.414213538f; | 2115 | public const double SQRT2 = 1.414213538f; |
804 | 2116 | ||
805 | // Can not be public const? | 2117 | // Can not be public const? |
806 | public LSL_Types.Vector3 ZERO_VECTOR = new LSL_Types.Vector3(0, 0, 0); | 2118 | public vector ZERO_VECTOR = new vector(0, 0, 0); |
807 | public LSL_Types.Quaternion ZERO_ROTATION = new LSL_Types.Quaternion(0, 0, 0, 0); | 2119 | public rotation ZERO_ROTATION = new rotation(0, 0, 0, 0); |
808 | |||
809 | |||
810 | |||
811 | } | 2120 | } |
812 | } | 2121 | } \ No newline at end of file |
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/Common.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/Common.cs index 00eb899..190e6d7 100644 --- a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/Common.cs +++ b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/Common.cs | |||
@@ -27,31 +27,32 @@ | |||
27 | */ | 27 | */ |
28 | /* Original code: Tedd Hansen */ | 28 | /* Original code: Tedd Hansen */ |
29 | using System; | 29 | using System; |
30 | using System.Collections.Generic; | ||
31 | using System.Text; | ||
32 | 30 | ||
33 | namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | 31 | namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO |
34 | { | 32 | { |
35 | public static class Common | 33 | public static class Common |
36 | { | 34 | { |
37 | static public bool Debug = true; | 35 | public static bool Debug = true; |
38 | static public bool IL_UseTryCatch = true; | 36 | public static bool IL_UseTryCatch = true; |
39 | static public bool IL_CreateConstructor = true; | 37 | public static bool IL_CreateConstructor = true; |
40 | static public bool IL_CreateFunctionList = true; | 38 | public static bool IL_CreateFunctionList = true; |
41 | static public bool IL_ProcessCodeChunks = true; | 39 | public static bool IL_ProcessCodeChunks = true; |
42 | 40 | ||
43 | public delegate void SendToDebugEventDelegate(string Message); | 41 | public delegate void SendToDebugEventDelegate(string Message); |
42 | |||
44 | public delegate void SendToLogEventDelegate(string Message); | 43 | public delegate void SendToLogEventDelegate(string Message); |
45 | static public event SendToDebugEventDelegate SendToDebugEvent; | ||
46 | static public event SendToLogEventDelegate SendToLogEvent; | ||
47 | 44 | ||
48 | static public void SendToDebug(string Message) | 45 | public static event SendToDebugEventDelegate SendToDebugEvent; |
46 | public static event SendToLogEventDelegate SendToLogEvent; | ||
47 | |||
48 | public static void SendToDebug(string Message) | ||
49 | { | 49 | { |
50 | //if (Debug == true) | 50 | //if (Debug == true) |
51 | Console.WriteLine("COMPILER:Debug: " + Message); | 51 | Console.WriteLine("COMPILER:Debug: " + Message); |
52 | SendToDebugEvent("\r\n" + DateTime.Now.ToString("[HH:mm:ss] ") + Message); | 52 | SendToDebugEvent("\r\n" + DateTime.Now.ToString("[HH:mm:ss] ") + Message); |
53 | } | 53 | } |
54 | static public void SendToLog(string Message) | 54 | |
55 | public static void SendToLog(string Message) | ||
55 | { | 56 | { |
56 | //if (Debug == true) | 57 | //if (Debug == true) |
57 | Console.WriteLine("COMPILER:LOG: " + Message); | 58 | Console.WriteLine("COMPILER:LOG: " + Message); |
@@ -68,6 +69,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
68 | Common.SendToDebug("ReverseFormatString format: " + format); | 69 | Common.SendToDebug("ReverseFormatString format: " + format); |
69 | return string.Format(format, text1); | 70 | return string.Format(format, text1); |
70 | } | 71 | } |
72 | |||
71 | public static string ReverseFormatString(string text1, UInt32 text2, string format) | 73 | public static string ReverseFormatString(string text1, UInt32 text2, string format) |
72 | { | 74 | { |
73 | Common.SendToDebug("ReverseFormatString text1: " + text1); | 75 | Common.SendToDebug("ReverseFormatString text1: " + text1); |
@@ -75,10 +77,11 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
75 | Common.SendToDebug("ReverseFormatString format: " + format); | 77 | Common.SendToDebug("ReverseFormatString format: " + format); |
76 | return string.Format(format, text1, text2.ToString()); | 78 | return string.Format(format, text1, text2.ToString()); |
77 | } | 79 | } |
80 | |||
78 | public static string Cast_ToString(object obj) | 81 | public static string Cast_ToString(object obj) |
79 | { | 82 | { |
80 | Common.SendToDebug("OBJECT TO BE CASTED: " + obj.GetType().ToString()); | 83 | Common.SendToDebug("OBJECT TO BE CASTED: " + obj.GetType().ToString()); |
81 | return "ABCDEFGIHJKLMNOPQ123"; | 84 | return "ABCDEFGIHJKLMNOPQ123"; |
82 | } | 85 | } |
83 | } | 86 | } |
84 | } | 87 | } \ No newline at end of file |
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/Engine.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/Engine.cs index f060f06..97981cc 100644 --- a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/Engine.cs +++ b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/Engine.cs | |||
@@ -27,20 +27,19 @@ | |||
27 | */ | 27 | */ |
28 | /* Original code: Tedd Hansen */ | 28 | /* Original code: Tedd Hansen */ |
29 | using System; | 29 | using System; |
30 | using System.IO; | ||
30 | using System.Reflection; | 31 | using System.Reflection; |
31 | using System.Reflection.Emit; | 32 | using System.Reflection.Emit; |
33 | using System.Text; | ||
32 | using System.Threading; | 34 | using System.Threading; |
33 | 35 | ||
34 | |||
35 | namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | 36 | namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO |
36 | { | 37 | { |
37 | |||
38 | |||
39 | public class Engine | 38 | public class Engine |
40 | { | 39 | { |
41 | //private string LSO_FileName = @"LSO\AdditionTest.lso"; | 40 | //private string LSO_FileName = @"LSO\AdditionTest.lso"; |
42 | private string LSO_FileName;// = @"LSO\CloseToDefault.lso"; | 41 | private string LSO_FileName; // = @"LSO\CloseToDefault.lso"; |
43 | AppDomain appDomain; | 42 | private AppDomain appDomain; |
44 | 43 | ||
45 | public string Compile(string LSOFileName) | 44 | public string Compile(string LSOFileName) |
46 | { | 45 | { |
@@ -52,20 +51,19 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
52 | 51 | ||
53 | // Create Assembly Name | 52 | // Create Assembly Name |
54 | AssemblyName asmName = new AssemblyName(); | 53 | AssemblyName asmName = new AssemblyName(); |
55 | asmName.Name = System.IO.Path.GetFileNameWithoutExtension(LSO_FileName); | 54 | asmName.Name = Path.GetFileNameWithoutExtension(LSO_FileName); |
56 | //asmName.Name = "TestAssembly"; | 55 | //asmName.Name = "TestAssembly"; |
57 | 56 | ||
58 | string DLL_FileName = asmName.Name + ".dll"; | 57 | string DLL_FileName = asmName.Name + ".dll"; |
59 | string DLL_FileName_WithPath = System.IO.Path.GetDirectoryName(LSO_FileName) + @"\" + DLL_FileName; | 58 | string DLL_FileName_WithPath = Path.GetDirectoryName(LSO_FileName) + @"\" + DLL_FileName; |
60 | 59 | ||
61 | Common.SendToLog("LSO File Name: " + System.IO.Path.GetFileName(LSO_FileName)); | 60 | Common.SendToLog("LSO File Name: " + Path.GetFileName(LSO_FileName)); |
62 | Common.SendToLog("Assembly name: " + asmName.Name); | 61 | Common.SendToLog("Assembly name: " + asmName.Name); |
63 | Common.SendToLog("Assembly File Name: " + asmName.Name + ".dll"); | 62 | Common.SendToLog("Assembly File Name: " + asmName.Name + ".dll"); |
64 | Common.SendToLog("Starting processing of LSL ByteCode..."); | 63 | Common.SendToLog("Starting processing of LSL ByteCode..."); |
65 | Common.SendToLog(""); | 64 | Common.SendToLog(""); |
66 | 65 | ||
67 | 66 | ||
68 | |||
69 | // Create Assembly | 67 | // Create Assembly |
70 | AssemblyBuilder asmBuilder = appDomain.DefineDynamicAssembly( | 68 | AssemblyBuilder asmBuilder = appDomain.DefineDynamicAssembly( |
71 | asmName, | 69 | asmName, |
@@ -78,15 +76,15 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
78 | 76 | ||
79 | // Create a module (and save to disk) | 77 | // Create a module (and save to disk) |
80 | ModuleBuilder modBuilder = asmBuilder.DefineDynamicModule | 78 | ModuleBuilder modBuilder = asmBuilder.DefineDynamicModule |
81 | (asmName.Name, | 79 | (asmName.Name, |
82 | DLL_FileName); | 80 | DLL_FileName); |
83 | 81 | ||
84 | //Common.SendToDebug("asmName.Name is still \"" + asmName.Name + "\""); | 82 | //Common.SendToDebug("asmName.Name is still \"" + asmName.Name + "\""); |
85 | // Create a Class (/Type) | 83 | // Create a Class (/Type) |
86 | TypeBuilder typeBuilder = modBuilder.DefineType( | 84 | TypeBuilder typeBuilder = modBuilder.DefineType( |
87 | "LSL_ScriptObject", | 85 | "LSL_ScriptObject", |
88 | TypeAttributes.Public | TypeAttributes.BeforeFieldInit, | 86 | TypeAttributes.Public | TypeAttributes.BeforeFieldInit, |
89 | typeof(OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO.LSL_BaseClass)); | 87 | typeof (LSL_BaseClass)); |
90 | //, | 88 | //, |
91 | // typeof()); | 89 | // typeof()); |
92 | //, typeof(LSL_BuiltIn_Commands_Interface)); | 90 | //, typeof(LSL_BuiltIn_Commands_Interface)); |
@@ -95,7 +93,6 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
95 | // new Type[] { typeof(LSL_CLRInterface.LSLScript) }); | 93 | // new Type[] { typeof(LSL_CLRInterface.LSLScript) }); |
96 | 94 | ||
97 | 95 | ||
98 | |||
99 | /* | 96 | /* |
100 | * Generate the IL itself | 97 | * Generate the IL itself |
101 | */ | 98 | */ |
@@ -123,7 +120,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
123 | asmBuilder.Save(DLL_FileName); | 120 | asmBuilder.Save(DLL_FileName); |
124 | 121 | ||
125 | Common.SendToLog("Returning assembly filename: " + DLL_FileName); | 122 | Common.SendToLog("Returning assembly filename: " + DLL_FileName); |
126 | 123 | ||
127 | 124 | ||
128 | return DLL_FileName; | 125 | return DLL_FileName; |
129 | 126 | ||
@@ -135,9 +132,6 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
135 | //object MyScript = (object)Activator.CreateInstance(type); | 132 | //object MyScript = (object)Activator.CreateInstance(type); |
136 | 133 | ||
137 | 134 | ||
138 | |||
139 | |||
140 | |||
141 | //System.Reflection.MemberInfo[] Members = type.GetMembers(); | 135 | //System.Reflection.MemberInfo[] Members = type.GetMembers(); |
142 | 136 | ||
143 | //Common.SendToLog("Members of assembly " + type.ToString() + ":"); | 137 | //Common.SendToLog("Members of assembly " + type.ToString() + ":"); |
@@ -165,29 +159,25 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
165 | // type.InvokeMember(s, BindingFlags.InvokeMethod, null, MyScript, new object[] { "Test" }); | 159 | // type.InvokeMember(s, BindingFlags.InvokeMethod, null, MyScript, new object[] { "Test" }); |
166 | 160 | ||
167 | //} | 161 | //} |
168 | |||
169 | |||
170 | } | 162 | } |
171 | 163 | ||
172 | 164 | ||
173 | private static void IL_CREATE_CONSTRUCTOR(TypeBuilder typeBuilder, LSO_Parser LSOP) | 165 | private static void IL_CREATE_CONSTRUCTOR(TypeBuilder typeBuilder, LSO_Parser LSOP) |
174 | { | 166 | { |
175 | |||
176 | |||
177 | Common.SendToDebug("IL_CREATE_CONSTRUCTOR()"); | 167 | Common.SendToDebug("IL_CREATE_CONSTRUCTOR()"); |
178 | //ConstructorBuilder constructor = typeBuilder.DefineConstructor( | 168 | //ConstructorBuilder constructor = typeBuilder.DefineConstructor( |
179 | // MethodAttributes.Public, | 169 | // MethodAttributes.Public, |
180 | // CallingConventions.Standard, | 170 | // CallingConventions.Standard, |
181 | // new Type[0]); | 171 | // new Type[0]); |
182 | ConstructorBuilder constructor = typeBuilder.DefineConstructor( | 172 | ConstructorBuilder constructor = typeBuilder.DefineConstructor( |
183 | MethodAttributes.Public | | 173 | MethodAttributes.Public | |
184 | MethodAttributes.SpecialName | | 174 | MethodAttributes.SpecialName | |
185 | MethodAttributes.RTSpecialName, | 175 | MethodAttributes.RTSpecialName, |
186 | CallingConventions.Standard, | 176 | CallingConventions.Standard, |
187 | new Type[0]); | 177 | new Type[0]); |
188 | 178 | ||
189 | //Define the reflection ConstructorInfor for System.Object | 179 | //Define the reflection ConstructorInfor for System.Object |
190 | ConstructorInfo conObj = typeof(LSL_BaseClass).GetConstructor(new Type[0]); | 180 | ConstructorInfo conObj = typeof (LSL_BaseClass).GetConstructor(new Type[0]); |
191 | 181 | ||
192 | //call constructor of base object | 182 | //call constructor of base object |
193 | ILGenerator il = constructor.GetILGenerator(); | 183 | ILGenerator il = constructor.GetILGenerator(); |
@@ -230,58 +220,61 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
230 | LSO_Struct.StaticBlock sb; | 220 | LSO_Struct.StaticBlock sb; |
231 | LSOP.StaticBlocks.TryGetValue(pos, out sb); | 221 | LSOP.StaticBlocks.TryGetValue(pos, out sb); |
232 | 222 | ||
233 | if (sb.ObjectType > 0 && sb.ObjectType < 8) { // We don't want void or null's | 223 | if (sb.ObjectType > 0 && sb.ObjectType < 8) |
234 | |||
235 | il.Emit(OpCodes.Ldarg_0); | ||
236 | // Push position to stack | ||
237 | il.Emit(OpCodes.Ldc_I4, pos); | ||
238 | //il.Emit(OpCodes.Box, typeof(UInt32)); | ||
239 | |||
240 | |||
241 | Type datatype = null; | ||
242 | |||
243 | // Push data to stack | ||
244 | Common.SendToDebug("Adding to static (" + pos + ") type: " + ((LSO_Enums.Variable_Type_Codes)sb.ObjectType).ToString() + " (" + sb.ObjectType + ")"); | ||
245 | switch ((LSO_Enums.Variable_Type_Codes)sb.ObjectType) | ||
246 | { | 224 | { |
247 | case LSO_Enums.Variable_Type_Codes.Float: | 225 | // We don't want void or null's |
248 | case LSO_Enums.Variable_Type_Codes.Integer: | 226 | |
249 | //UInt32 | 227 | il.Emit(OpCodes.Ldarg_0); |
250 | il.Emit(OpCodes.Ldc_I4, BitConverter.ToUInt32(sb.BlockVariable, 0)); | 228 | // Push position to stack |
251 | datatype = typeof(UInt32); | 229 | il.Emit(OpCodes.Ldc_I4, pos); |
252 | il.Emit(OpCodes.Box, datatype); | 230 | //il.Emit(OpCodes.Box, typeof(UInt32)); |
253 | break; | 231 | |
254 | case LSO_Enums.Variable_Type_Codes.String: | 232 | |
255 | case LSO_Enums.Variable_Type_Codes.Key: | 233 | Type datatype = null; |
256 | //String | 234 | |
257 | LSO_Struct.HeapBlock hb = LSOP.GetHeap(LSOP.myHeader.HR + BitConverter.ToUInt32(sb.BlockVariable, 0) - 1); | 235 | // Push data to stack |
258 | il.Emit(OpCodes.Ldstr, System.Text.Encoding.UTF8.GetString(hb.Data)); | 236 | Common.SendToDebug("Adding to static (" + pos + ") type: " + |
259 | datatype = typeof(string); | 237 | ((LSO_Enums.Variable_Type_Codes) sb.ObjectType).ToString() + " (" + sb.ObjectType + |
260 | break; | 238 | ")"); |
261 | case LSO_Enums.Variable_Type_Codes.Vector: | 239 | switch ((LSO_Enums.Variable_Type_Codes) sb.ObjectType) |
262 | datatype = typeof(LSO_Enums.Vector); | 240 | { |
263 | //TODO: Not implemented | 241 | case LSO_Enums.Variable_Type_Codes.Float: |
264 | break; | 242 | case LSO_Enums.Variable_Type_Codes.Integer: |
265 | case LSO_Enums.Variable_Type_Codes.Rotation: | 243 | //UInt32 |
266 | //Object | 244 | il.Emit(OpCodes.Ldc_I4, BitConverter.ToUInt32(sb.BlockVariable, 0)); |
267 | //TODO: Not implemented | 245 | datatype = typeof (UInt32); |
268 | datatype = typeof(LSO_Enums.Rotation); | 246 | il.Emit(OpCodes.Box, datatype); |
269 | break; | 247 | break; |
270 | default: | 248 | case LSO_Enums.Variable_Type_Codes.String: |
271 | datatype = typeof(object); | 249 | case LSO_Enums.Variable_Type_Codes.Key: |
272 | break; | 250 | //String |
273 | } | 251 | LSO_Struct.HeapBlock hb = |
274 | 252 | LSOP.GetHeap(LSOP.myHeader.HR + BitConverter.ToUInt32(sb.BlockVariable, 0) - 1); | |
275 | 253 | il.Emit(OpCodes.Ldstr, Encoding.UTF8.GetString(hb.Data)); | |
276 | // Make call | 254 | datatype = typeof (string); |
277 | il.Emit(OpCodes.Call, typeof(LSL_BaseClass).GetMethod("AddToStatic", new Type[] { typeof(UInt32), datatype })); | 255 | break; |
256 | case LSO_Enums.Variable_Type_Codes.Vector: | ||
257 | datatype = typeof (LSO_Enums.Vector); | ||
258 | //TODO: Not implemented | ||
259 | break; | ||
260 | case LSO_Enums.Variable_Type_Codes.Rotation: | ||
261 | //Object | ||
262 | //TODO: Not implemented | ||
263 | datatype = typeof (LSO_Enums.Rotation); | ||
264 | break; | ||
265 | default: | ||
266 | datatype = typeof (object); | ||
267 | break; | ||
268 | } | ||
269 | |||
270 | |||
271 | // Make call | ||
272 | il.Emit(OpCodes.Call, | ||
273 | typeof (LSL_BaseClass).GetMethod("AddToStatic", new Type[] {typeof (UInt32), datatype})); | ||
278 | } | 274 | } |
279 | |||
280 | } | 275 | } |
281 | 276 | ||
282 | 277 | ||
283 | |||
284 | |||
285 | ////il.Emit(OpCodes.Newobj, typeof(UInt32)); | 278 | ////il.Emit(OpCodes.Newobj, typeof(UInt32)); |
286 | //il.Emit(OpCodes.Starg_0); | 279 | //il.Emit(OpCodes.Starg_0); |
287 | //// Create LSL function library | 280 | //// Create LSL function library |
@@ -293,8 +286,6 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
293 | } | 286 | } |
294 | 287 | ||
295 | 288 | ||
296 | |||
297 | |||
298 | // End of class | 289 | // End of class |
299 | } | 290 | } |
300 | } | 291 | } \ No newline at end of file |
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/IL_common_functions.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/IL_common_functions.cs index 65be5e3..2dc8055 100644 --- a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/IL_common_functions.cs +++ b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/IL_common_functions.cs | |||
@@ -27,30 +27,25 @@ | |||
27 | */ | 27 | */ |
28 | /* Original code: Tedd Hansen */ | 28 | /* Original code: Tedd Hansen */ |
29 | using System; | 29 | using System; |
30 | using System.Collections.Generic; | ||
31 | using System.Text; | ||
32 | using System.Reflection; | 30 | using System.Reflection; |
33 | using System.Reflection.Emit; | 31 | using System.Reflection.Emit; |
34 | 32 | ||
35 | namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | 33 | namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO |
36 | { | 34 | { |
37 | partial class LSO_Parser | 35 | internal partial class LSO_Parser |
38 | { | 36 | { |
39 | private static TypeBuilder CreateType(ModuleBuilder modBuilder, string typeName) | 37 | private static TypeBuilder CreateType(ModuleBuilder modBuilder, string typeName) |
40 | { | 38 | { |
41 | TypeBuilder typeBuilder = modBuilder.DefineType(typeName, | 39 | TypeBuilder typeBuilder = modBuilder.DefineType(typeName, |
42 | TypeAttributes.Public | | 40 | TypeAttributes.Public | |
43 | TypeAttributes.Class | | 41 | TypeAttributes.Class | |
44 | TypeAttributes.AutoClass | | 42 | TypeAttributes.AutoClass | |
45 | TypeAttributes.AnsiClass | | 43 | TypeAttributes.AnsiClass | |
46 | TypeAttributes.BeforeFieldInit | | 44 | TypeAttributes.BeforeFieldInit | |
47 | TypeAttributes.AutoLayout, | 45 | TypeAttributes.AutoLayout, |
48 | typeof(object), | 46 | typeof (object), |
49 | new Type[] { typeof(object) }); | 47 | new Type[] {typeof (object)}); |
50 | return typeBuilder; | 48 | return typeBuilder; |
51 | |||
52 | } | 49 | } |
53 | |||
54 | |||
55 | } | 50 | } |
56 | } | 51 | } \ No newline at end of file |
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSL_BaseClass.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSL_BaseClass.cs index 2fb8e45..b84400c 100644 --- a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSL_BaseClass.cs +++ b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSL_BaseClass.cs | |||
@@ -28,9 +28,6 @@ | |||
28 | 28 | ||
29 | using System; | 29 | using System; |
30 | using System.Collections.Generic; | 30 | using System.Collections.Generic; |
31 | using System.Text; | ||
32 | using System.IO; | ||
33 | using OpenSim.Region.ScriptEngine.DotNetEngine.Compiler; | ||
34 | using OpenSim.Region.ScriptEngine.Common; | 31 | using OpenSim.Region.ScriptEngine.Common; |
35 | 32 | ||
36 | namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | 33 | namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO |
@@ -39,9 +36,9 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
39 | { | 36 | { |
40 | //public MemoryStream LSLStack = new MemoryStream(); | 37 | //public MemoryStream LSLStack = new MemoryStream(); |
41 | public Stack<object> LSLStack = new Stack<object>(); | 38 | public Stack<object> LSLStack = new Stack<object>(); |
42 | public Dictionary<UInt32, object> StaticVariables = new Dictionary<UInt32, object>(); | 39 | public Dictionary<uint, object> StaticVariables = new Dictionary<uint, object>(); |
43 | public Dictionary<UInt32, object> GlobalVariables = new Dictionary<UInt32, object>(); | 40 | public Dictionary<uint, object> GlobalVariables = new Dictionary<uint, object>(); |
44 | public Dictionary<UInt32, object> LocalVariables = new Dictionary<UInt32, object>(); | 41 | public Dictionary<uint, object> LocalVariables = new Dictionary<uint, object>(); |
45 | //public System.Collections.Generic.List<string> FunctionList = new System.Collections.Generic.List<string>(); | 42 | //public System.Collections.Generic.List<string> FunctionList = new System.Collections.Generic.List<string>(); |
46 | //public void AddFunction(String x) { | 43 | //public void AddFunction(String x) { |
47 | // FunctionList.Add(x); | 44 | // FunctionList.Add(x); |
@@ -54,19 +51,23 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
54 | //} | 51 | //} |
55 | public UInt32 State = 0; | 52 | public UInt32 State = 0; |
56 | public LSL_BuiltIn_Commands_Interface LSL_Builtins; | 53 | public LSL_BuiltIn_Commands_Interface LSL_Builtins; |
54 | |||
57 | public LSL_BuiltIn_Commands_Interface GetLSL_BuiltIn() | 55 | public LSL_BuiltIn_Commands_Interface GetLSL_BuiltIn() |
58 | { | 56 | { |
59 | return LSL_Builtins; | 57 | return LSL_Builtins; |
60 | } | 58 | } |
61 | 59 | ||
62 | 60 | ||
63 | public LSL_BaseClass() { } | 61 | public LSL_BaseClass() |
62 | { | ||
63 | } | ||
64 | 64 | ||
65 | 65 | ||
66 | public virtual int OverrideMe() | 66 | public virtual int OverrideMe() |
67 | { | 67 | { |
68 | return 0; | 68 | return 0; |
69 | } | 69 | } |
70 | |||
70 | public void Start(LSL_BuiltIn_Commands_Interface LSLBuiltins) | 71 | public void Start(LSL_BuiltIn_Commands_Interface LSLBuiltins) |
71 | { | 72 | { |
72 | LSL_Builtins = LSLBuiltins; | 73 | LSL_Builtins = LSLBuiltins; |
@@ -81,8 +82,5 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
81 | Common.SendToDebug("AddToStatic: " + index + " type: " + obj.GetType()); | 82 | Common.SendToDebug("AddToStatic: " + index + " type: " + obj.GetType()); |
82 | StaticVariables.Add(index, obj); | 83 | StaticVariables.Add(index, obj); |
83 | } | 84 | } |
84 | |||
85 | |||
86 | |||
87 | } | 85 | } |
88 | } | 86 | } \ No newline at end of file |
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSL_BaseClass_OPCODES.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSL_BaseClass_OPCODES.cs index a75b4c8..c805a01 100644 --- a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSL_BaseClass_OPCODES.cs +++ b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSL_BaseClass_OPCODES.cs | |||
@@ -27,8 +27,6 @@ | |||
27 | */ | 27 | */ |
28 | 28 | ||
29 | using System; | 29 | using System; |
30 | using System.Collections.Generic; | ||
31 | using System.Text; | ||
32 | 30 | ||
33 | namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | 31 | namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO |
34 | { | 32 | { |
@@ -53,6 +51,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
53 | LocalVariables.Remove(index); | 51 | LocalVariables.Remove(index); |
54 | LocalVariables.Add(index, LSLStack.Peek()); | 52 | LocalVariables.Add(index, LSLStack.Peek()); |
55 | } | 53 | } |
54 | |||
56 | public void StoreToGlobal(UInt32 index) | 55 | public void StoreToGlobal(UInt32 index) |
57 | { | 56 | { |
58 | Common.SendToDebug("::StoreToGlobal " + index); | 57 | Common.SendToDebug("::StoreToGlobal " + index); |
@@ -60,6 +59,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
60 | GlobalVariables.Remove(index); | 59 | GlobalVariables.Remove(index); |
61 | GlobalVariables.Add(index, LSLStack.Peek()); | 60 | GlobalVariables.Add(index, LSLStack.Peek()); |
62 | } | 61 | } |
62 | |||
63 | public void StoreToStatic(UInt32 index) | 63 | public void StoreToStatic(UInt32 index) |
64 | { | 64 | { |
65 | Common.SendToDebug("::StoreToStatic " + index); | 65 | Common.SendToDebug("::StoreToStatic " + index); |
@@ -67,6 +67,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
67 | // StaticVariables.Remove(index); | 67 | // StaticVariables.Remove(index); |
68 | StaticVariables.Add(index, LSLStack.Peek()); | 68 | StaticVariables.Add(index, LSLStack.Peek()); |
69 | } | 69 | } |
70 | |||
70 | public void GetFromLocal(UInt32 index) | 71 | public void GetFromLocal(UInt32 index) |
71 | { | 72 | { |
72 | // TODO: How to determine local? | 73 | // TODO: How to determine local? |
@@ -76,6 +77,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
76 | LSLStack.Push(ret); | 77 | LSLStack.Push(ret); |
77 | //return ret; | 78 | //return ret; |
78 | } | 79 | } |
80 | |||
79 | public void GetFromGlobal(UInt32 index) | 81 | public void GetFromGlobal(UInt32 index) |
80 | { | 82 | { |
81 | Common.SendToDebug("::GetFromGlobal " + index); | 83 | Common.SendToDebug("::GetFromGlobal " + index); |
@@ -84,6 +86,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
84 | LSLStack.Push(ret); | 86 | LSLStack.Push(ret); |
85 | //return ret; | 87 | //return ret; |
86 | } | 88 | } |
89 | |||
87 | public void GetFromStatic(UInt32 index) | 90 | public void GetFromStatic(UInt32 index) |
88 | { | 91 | { |
89 | Common.SendToDebug("::GetFromStatic " + index); | 92 | Common.SendToDebug("::GetFromStatic " + index); |
@@ -99,22 +102,22 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
99 | Common.SendToDebug("::POPToStack"); | 102 | Common.SendToDebug("::POPToStack"); |
100 | //return LSLStack.Pop(); | 103 | //return LSLStack.Pop(); |
101 | object p = LSLStack.Pop(); | 104 | object p = LSLStack.Pop(); |
102 | if (p.GetType() == typeof(UInt32)) | 105 | if (p.GetType() == typeof (UInt32)) |
103 | return (UInt32)p; | 106 | return (UInt32) p; |
104 | if (p.GetType() == typeof(string)) | 107 | if (p.GetType() == typeof (string)) |
105 | return (string)p; | 108 | return (string) p; |
106 | if (p.GetType() == typeof(Int32)) | 109 | if (p.GetType() == typeof (Int32)) |
107 | return (Int32)p; | 110 | return (Int32) p; |
108 | if (p.GetType() == typeof(UInt16)) | 111 | if (p.GetType() == typeof (UInt16)) |
109 | return (UInt16)p; | 112 | return (UInt16) p; |
110 | if (p.GetType() == typeof(float)) | 113 | if (p.GetType() == typeof (float)) |
111 | return (float)p; | 114 | return (float) p; |
112 | if (p.GetType() == typeof(LSO_Enums.Vector)) | 115 | if (p.GetType() == typeof (LSO_Enums.Vector)) |
113 | return (LSO_Enums.Vector)p; | 116 | return (LSO_Enums.Vector) p; |
114 | if (p.GetType() == typeof(LSO_Enums.Rotation)) | 117 | if (p.GetType() == typeof (LSO_Enums.Rotation)) |
115 | return (LSO_Enums.Rotation)p; | 118 | return (LSO_Enums.Rotation) p; |
116 | if (p.GetType() == typeof(LSO_Enums.Key)) | 119 | if (p.GetType() == typeof (LSO_Enums.Key)) |
117 | return (LSO_Enums.Key)p; | 120 | return (LSO_Enums.Key) p; |
118 | 121 | ||
119 | return p; | 122 | return p; |
120 | } | 123 | } |
@@ -151,6 +154,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
151 | LSLStack.Pop(); | 154 | LSLStack.Pop(); |
152 | } | 155 | } |
153 | } | 156 | } |
157 | |||
154 | public void PUSH(object Param) | 158 | public void PUSH(object Param) |
155 | { | 159 | { |
156 | if (Param == null) | 160 | if (Param == null) |
@@ -159,205 +163,218 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
159 | } | 163 | } |
160 | else | 164 | else |
161 | { | 165 | { |
162 | |||
163 | //Common.SendToDebug("::PUSH: " + Param.GetType()); | 166 | //Common.SendToDebug("::PUSH: " + Param.GetType()); |
164 | } | 167 | } |
165 | 168 | ||
166 | LSLStack.Push(Param); | 169 | LSLStack.Push(Param); |
167 | } | 170 | } |
171 | |||
168 | public void ADD(UInt32 Param) | 172 | public void ADD(UInt32 Param) |
169 | { | 173 | { |
170 | Common.SendToDebug("::ADD: " + Param); | 174 | Common.SendToDebug("::ADD: " + Param); |
171 | object o2 = LSLStack.Pop(); | 175 | object o2 = LSLStack.Pop(); |
172 | object o1 = LSLStack.Pop(); | 176 | object o1 = LSLStack.Pop(); |
173 | Common.SendToDebug("::ADD: Debug: o1: " + o1.GetType() + " (" + o1.ToString() + "), o2: " + o2.GetType() + " (" + o2.ToString() + ")"); | 177 | Common.SendToDebug("::ADD: Debug: o1: " + o1.GetType() + " (" + o1.ToString() + "), o2: " + o2.GetType() + |
174 | if (o2.GetType() == typeof(string)) | 178 | " (" + o2.ToString() + ")"); |
179 | if (o2.GetType() == typeof (string)) | ||
175 | { | 180 | { |
176 | LSLStack.Push((string)o1 + (string)o2); | 181 | LSLStack.Push((string) o1 + (string) o2); |
177 | return; | 182 | return; |
178 | } | 183 | } |
179 | if (o2.GetType() == typeof(UInt32)) | 184 | if (o2.GetType() == typeof (UInt32)) |
180 | { | 185 | { |
181 | LSLStack.Push((UInt32)o1 + (UInt32)o2); | 186 | LSLStack.Push((UInt32) o1 + (UInt32) o2); |
182 | return; | 187 | return; |
183 | } | 188 | } |
184 | |||
185 | } | 189 | } |
190 | |||
186 | public void SUB(UInt32 Param) | 191 | public void SUB(UInt32 Param) |
187 | { | 192 | { |
188 | Common.SendToDebug("::SUB: " + Param); | 193 | Common.SendToDebug("::SUB: " + Param); |
189 | UInt32 i2 = (UInt32)LSLStack.Pop(); | 194 | UInt32 i2 = (UInt32) LSLStack.Pop(); |
190 | UInt32 i1 = (UInt32)LSLStack.Pop(); | 195 | UInt32 i1 = (UInt32) LSLStack.Pop(); |
191 | LSLStack.Push((UInt32)(i1 - i2)); | 196 | LSLStack.Push((UInt32) (i1 - i2)); |
192 | } | 197 | } |
198 | |||
193 | public void MUL(UInt32 Param) | 199 | public void MUL(UInt32 Param) |
194 | { | 200 | { |
195 | Common.SendToDebug("::SUB: " + Param); | 201 | Common.SendToDebug("::SUB: " + Param); |
196 | UInt32 i2 = (UInt32)LSLStack.Pop(); | 202 | UInt32 i2 = (UInt32) LSLStack.Pop(); |
197 | UInt32 i1 = (UInt32)LSLStack.Pop(); | 203 | UInt32 i1 = (UInt32) LSLStack.Pop(); |
198 | LSLStack.Push((UInt32)(i1 * i2)); | 204 | LSLStack.Push((UInt32) (i1*i2)); |
199 | } | 205 | } |
206 | |||
200 | public void DIV(UInt32 Param) | 207 | public void DIV(UInt32 Param) |
201 | { | 208 | { |
202 | Common.SendToDebug("::DIV: " + Param); | 209 | Common.SendToDebug("::DIV: " + Param); |
203 | UInt32 i2 = (UInt32)LSLStack.Pop(); | 210 | UInt32 i2 = (UInt32) LSLStack.Pop(); |
204 | UInt32 i1 = (UInt32)LSLStack.Pop(); | 211 | UInt32 i1 = (UInt32) LSLStack.Pop(); |
205 | LSLStack.Push((UInt32)(i1 / i2)); | 212 | LSLStack.Push((UInt32) (i1/i2)); |
206 | } | 213 | } |
207 | 214 | ||
208 | 215 | ||
209 | public void MOD(UInt32 Param) | 216 | public void MOD(UInt32 Param) |
210 | { | 217 | { |
211 | Common.SendToDebug("::MOD: " + Param); | 218 | Common.SendToDebug("::MOD: " + Param); |
212 | UInt32 i2 = (UInt32)LSLStack.Pop(); | 219 | UInt32 i2 = (UInt32) LSLStack.Pop(); |
213 | UInt32 i1 = (UInt32)LSLStack.Pop(); | 220 | UInt32 i1 = (UInt32) LSLStack.Pop(); |
214 | LSLStack.Push((UInt32)(i1 % i2)); | 221 | LSLStack.Push((UInt32) (i1%i2)); |
215 | } | 222 | } |
223 | |||
216 | public void EQ(UInt32 Param) | 224 | public void EQ(UInt32 Param) |
217 | { | 225 | { |
218 | Common.SendToDebug("::EQ: " + Param); | 226 | Common.SendToDebug("::EQ: " + Param); |
219 | UInt32 i2 = (UInt32)LSLStack.Pop(); | 227 | UInt32 i2 = (UInt32) LSLStack.Pop(); |
220 | UInt32 i1 = (UInt32)LSLStack.Pop(); | 228 | UInt32 i1 = (UInt32) LSLStack.Pop(); |
221 | if (i1 == i2) | 229 | if (i1 == i2) |
222 | { | 230 | { |
223 | LSLStack.Push((UInt32)1); | 231 | LSLStack.Push((UInt32) 1); |
224 | } | 232 | } |
225 | else | 233 | else |
226 | { | 234 | { |
227 | LSLStack.Push((UInt32)0); | 235 | LSLStack.Push((UInt32) 0); |
228 | } | 236 | } |
229 | } | 237 | } |
238 | |||
230 | public void NEQ(UInt32 Param) | 239 | public void NEQ(UInt32 Param) |
231 | { | 240 | { |
232 | Common.SendToDebug("::NEQ: " + Param); | 241 | Common.SendToDebug("::NEQ: " + Param); |
233 | UInt32 i2 = (UInt32)LSLStack.Pop(); | 242 | UInt32 i2 = (UInt32) LSLStack.Pop(); |
234 | UInt32 i1 = (UInt32)LSLStack.Pop(); | 243 | UInt32 i1 = (UInt32) LSLStack.Pop(); |
235 | if (i1 != i2) | 244 | if (i1 != i2) |
236 | { | 245 | { |
237 | LSLStack.Push((UInt32)1); | 246 | LSLStack.Push((UInt32) 1); |
238 | } | 247 | } |
239 | else | 248 | else |
240 | { | 249 | { |
241 | LSLStack.Push((UInt32)0); | 250 | LSLStack.Push((UInt32) 0); |
242 | } | 251 | } |
243 | } | 252 | } |
253 | |||
244 | public void LEQ(UInt32 Param) | 254 | public void LEQ(UInt32 Param) |
245 | { | 255 | { |
246 | Common.SendToDebug("::LEQ: " + Param); | 256 | Common.SendToDebug("::LEQ: " + Param); |
247 | UInt32 i2 = (UInt32)LSLStack.Pop(); | 257 | UInt32 i2 = (UInt32) LSLStack.Pop(); |
248 | UInt32 i1 = (UInt32)LSLStack.Pop(); | 258 | UInt32 i1 = (UInt32) LSLStack.Pop(); |
249 | if (i1 <= i2) | 259 | if (i1 <= i2) |
250 | { | 260 | { |
251 | LSLStack.Push((UInt32)1); | 261 | LSLStack.Push((UInt32) 1); |
252 | } | 262 | } |
253 | else | 263 | else |
254 | { | 264 | { |
255 | LSLStack.Push((UInt32)0); | 265 | LSLStack.Push((UInt32) 0); |
256 | } | 266 | } |
257 | } | 267 | } |
268 | |||
258 | public void GEQ(UInt32 Param) | 269 | public void GEQ(UInt32 Param) |
259 | { | 270 | { |
260 | Common.SendToDebug("::GEQ: " + Param); | 271 | Common.SendToDebug("::GEQ: " + Param); |
261 | UInt32 i2 = (UInt32)LSLStack.Pop(); | 272 | UInt32 i2 = (UInt32) LSLStack.Pop(); |
262 | UInt32 i1 = (UInt32)LSLStack.Pop(); | 273 | UInt32 i1 = (UInt32) LSLStack.Pop(); |
263 | if (i1 >= i2) | 274 | if (i1 >= i2) |
264 | { | 275 | { |
265 | LSLStack.Push((UInt32)1); | 276 | LSLStack.Push((UInt32) 1); |
266 | } | 277 | } |
267 | else | 278 | else |
268 | { | 279 | { |
269 | LSLStack.Push((UInt32)0); | 280 | LSLStack.Push((UInt32) 0); |
270 | } | 281 | } |
271 | } | 282 | } |
283 | |||
272 | public void LESS(UInt32 Param) | 284 | public void LESS(UInt32 Param) |
273 | { | 285 | { |
274 | Common.SendToDebug("::LESS: " + Param); | 286 | Common.SendToDebug("::LESS: " + Param); |
275 | UInt32 i2 = (UInt32)LSLStack.Pop(); | 287 | UInt32 i2 = (UInt32) LSLStack.Pop(); |
276 | UInt32 i1 = (UInt32)LSLStack.Pop(); | 288 | UInt32 i1 = (UInt32) LSLStack.Pop(); |
277 | if (i1 < i2) | 289 | if (i1 < i2) |
278 | { | 290 | { |
279 | LSLStack.Push((UInt32)1); | 291 | LSLStack.Push((UInt32) 1); |
280 | } | 292 | } |
281 | else | 293 | else |
282 | { | 294 | { |
283 | LSLStack.Push((UInt32)0); | 295 | LSLStack.Push((UInt32) 0); |
284 | } | 296 | } |
285 | } | 297 | } |
298 | |||
286 | public void GREATER(UInt32 Param) | 299 | public void GREATER(UInt32 Param) |
287 | { | 300 | { |
288 | Common.SendToDebug("::GREATER: " + Param); | 301 | Common.SendToDebug("::GREATER: " + Param); |
289 | UInt32 i2 = (UInt32)LSLStack.Pop(); | 302 | UInt32 i2 = (UInt32) LSLStack.Pop(); |
290 | UInt32 i1 = (UInt32)LSLStack.Pop(); | 303 | UInt32 i1 = (UInt32) LSLStack.Pop(); |
291 | if (i1 > i2) | 304 | if (i1 > i2) |
292 | { | 305 | { |
293 | LSLStack.Push((UInt32)1); | 306 | LSLStack.Push((UInt32) 1); |
294 | } | 307 | } |
295 | else | 308 | else |
296 | { | 309 | { |
297 | LSLStack.Push((UInt32)0); | 310 | LSLStack.Push((UInt32) 0); |
298 | } | 311 | } |
299 | } | 312 | } |
300 | 313 | ||
301 | 314 | ||
302 | |||
303 | public void BITAND() | 315 | public void BITAND() |
304 | { | 316 | { |
305 | Common.SendToDebug("::BITAND"); | 317 | Common.SendToDebug("::BITAND"); |
306 | UInt32 i2 = (UInt32)LSLStack.Pop(); | 318 | UInt32 i2 = (UInt32) LSLStack.Pop(); |
307 | UInt32 i1 = (UInt32)LSLStack.Pop(); | 319 | UInt32 i1 = (UInt32) LSLStack.Pop(); |
308 | LSLStack.Push((UInt32)(i1 & i2)); | 320 | LSLStack.Push((UInt32) (i1 & i2)); |
309 | } | 321 | } |
322 | |||
310 | public void BITOR() | 323 | public void BITOR() |
311 | { | 324 | { |
312 | Common.SendToDebug("::BITOR"); | 325 | Common.SendToDebug("::BITOR"); |
313 | UInt32 i2 = (UInt32)LSLStack.Pop(); | 326 | UInt32 i2 = (UInt32) LSLStack.Pop(); |
314 | UInt32 i1 = (UInt32)LSLStack.Pop(); | 327 | UInt32 i1 = (UInt32) LSLStack.Pop(); |
315 | LSLStack.Push((UInt32)(i1 | i2)); | 328 | LSLStack.Push((UInt32) (i1 | i2)); |
316 | } | 329 | } |
330 | |||
317 | public void BITXOR() | 331 | public void BITXOR() |
318 | { | 332 | { |
319 | Common.SendToDebug("::BITXOR"); | 333 | Common.SendToDebug("::BITXOR"); |
320 | UInt32 i2 = (UInt32)LSLStack.Pop(); | 334 | UInt32 i2 = (UInt32) LSLStack.Pop(); |
321 | UInt32 i1 = (UInt32)LSLStack.Pop(); | 335 | UInt32 i1 = (UInt32) LSLStack.Pop(); |
322 | LSLStack.Push((UInt32)(i1 ^ i2)); | 336 | LSLStack.Push((UInt32) (i1 ^ i2)); |
323 | } | 337 | } |
338 | |||
324 | public void BOOLAND() | 339 | public void BOOLAND() |
325 | { | 340 | { |
326 | Common.SendToDebug("::BOOLAND"); | 341 | Common.SendToDebug("::BOOLAND"); |
327 | bool b2 = bool.Parse((string)LSLStack.Pop()); | 342 | bool b2 = bool.Parse((string) LSLStack.Pop()); |
328 | bool b1 = bool.Parse((string)LSLStack.Pop()); | 343 | bool b1 = bool.Parse((string) LSLStack.Pop()); |
329 | if (b1 && b2) | 344 | if (b1 && b2) |
330 | { | 345 | { |
331 | LSLStack.Push((UInt32)1); | 346 | LSLStack.Push((UInt32) 1); |
332 | } | 347 | } |
333 | else | 348 | else |
334 | { | 349 | { |
335 | LSLStack.Push((UInt32)0); | 350 | LSLStack.Push((UInt32) 0); |
336 | } | 351 | } |
337 | } | 352 | } |
353 | |||
338 | public void BOOLOR() | 354 | public void BOOLOR() |
339 | { | 355 | { |
340 | Common.SendToDebug("::BOOLOR"); | 356 | Common.SendToDebug("::BOOLOR"); |
341 | bool b2 = bool.Parse((string)LSLStack.Pop()); | 357 | bool b2 = bool.Parse((string) LSLStack.Pop()); |
342 | bool b1 = bool.Parse((string)LSLStack.Pop()); | 358 | bool b1 = bool.Parse((string) LSLStack.Pop()); |
343 | 359 | ||
344 | if (b1 || b2) | 360 | if (b1 || b2) |
345 | { | 361 | { |
346 | LSLStack.Push((UInt32)1); | 362 | LSLStack.Push((UInt32) 1); |
347 | } | 363 | } |
348 | else | 364 | else |
349 | { | 365 | { |
350 | LSLStack.Push((UInt32)0); | 366 | LSLStack.Push((UInt32) 0); |
351 | } | 367 | } |
352 | |||
353 | } | 368 | } |
369 | |||
354 | public void NEG(UInt32 Param) | 370 | public void NEG(UInt32 Param) |
355 | { | 371 | { |
356 | Common.SendToDebug("::NEG: " + Param); | 372 | Common.SendToDebug("::NEG: " + Param); |
357 | //UInt32 i2 = (UInt32)LSLStack.Pop(); | 373 | //UInt32 i2 = (UInt32)LSLStack.Pop(); |
358 | UInt32 i1 = (UInt32)LSLStack.Pop(); | 374 | UInt32 i1 = (UInt32) LSLStack.Pop(); |
359 | LSLStack.Push((UInt32)(i1 * -1)); | 375 | LSLStack.Push((UInt32) (i1*-1)); |
360 | } | 376 | } |
377 | |||
361 | public void BITNOT() | 378 | public void BITNOT() |
362 | { | 379 | { |
363 | //Common.SendToDebug("::BITNOT"); | 380 | //Common.SendToDebug("::BITNOT"); |
@@ -365,6 +382,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
365 | //UInt32 i1 = (UInt32)LSLStack.Pop(); | 382 | //UInt32 i1 = (UInt32)LSLStack.Pop(); |
366 | //LSLStack.Push((UInt32)(i1 / i2)); | 383 | //LSLStack.Push((UInt32)(i1 / i2)); |
367 | } | 384 | } |
385 | |||
368 | public void BOOLNOT() | 386 | public void BOOLNOT() |
369 | { | 387 | { |
370 | //Common.SendToDebug("::BOOLNOT"); | 388 | //Common.SendToDebug("::BOOLNOT"); |
@@ -372,7 +390,5 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
372 | //UInt32 i1 = (UInt32)LSLStack.Pop(); | 390 | //UInt32 i1 = (UInt32)LSLStack.Pop(); |
373 | //LSLStack.Push((UInt32)(i1)); | 391 | //LSLStack.Push((UInt32)(i1)); |
374 | } | 392 | } |
375 | |||
376 | |||
377 | } | 393 | } |
378 | } | 394 | } \ No newline at end of file |
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSL_CLRInterface.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSL_CLRInterface.cs index 5f01bf5..8b233ba 100644 --- a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSL_CLRInterface.cs +++ b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSL_CLRInterface.cs | |||
@@ -26,10 +26,6 @@ | |||
26 | * | 26 | * |
27 | */ | 27 | */ |
28 | /* Original code: Tedd Hansen */ | 28 | /* Original code: Tedd Hansen */ |
29 | using System; | ||
30 | using System.Collections.Generic; | ||
31 | using System.Text; | ||
32 | |||
33 | namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | 29 | namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO |
34 | { | 30 | { |
35 | public class LSL_CLRInterface | 31 | public class LSL_CLRInterface |
@@ -76,4 +72,4 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
76 | //void event_http_response(); | 72 | //void event_http_response(); |
77 | } | 73 | } |
78 | } | 74 | } |
79 | } | 75 | } \ No newline at end of file |
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSL_OPCODE_IL_processor.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSL_OPCODE_IL_processor.cs index ee166a6..e1d7768 100644 --- a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSL_OPCODE_IL_processor.cs +++ b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSL_OPCODE_IL_processor.cs | |||
@@ -27,32 +27,28 @@ | |||
27 | */ | 27 | */ |
28 | /* Original code: Tedd Hansen */ | 28 | /* Original code: Tedd Hansen */ |
29 | using System; | 29 | using System; |
30 | using System.Collections.Generic; | ||
31 | using System.Text; | ||
32 | using System.Reflection; | 30 | using System.Reflection; |
33 | using System.Reflection.Emit; | 31 | using System.Reflection.Emit; |
34 | using OpenSim.Region.ScriptEngine.Common; | 32 | using OpenSim.Region.ScriptEngine.Common; |
35 | 33 | ||
36 | namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | 34 | namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO |
37 | { | 35 | { |
38 | partial class LSO_Parser | 36 | internal partial class LSO_Parser |
39 | { | 37 | { |
40 | //internal Stack<Type> ILStack = new Stack<Type>(); | 38 | //internal Stack<Type> ILStack = new Stack<Type>(); |
41 | //LSO_Enums MyLSO_Enums = new LSO_Enums(); | 39 | //LSO_Enums MyLSO_Enums = new LSO_Enums(); |
42 | 40 | ||
43 | internal bool LSL_PROCESS_OPCODE(ILGenerator il) | 41 | internal bool LSL_PROCESS_OPCODE(ILGenerator il) |
44 | { | 42 | { |
45 | |||
46 | byte bp1; | 43 | byte bp1; |
47 | UInt32 u32p1; | 44 | UInt32 u32p1; |
48 | float fp1; | 45 | float fp1; |
49 | UInt16 opcode = br_read(1)[0]; | 46 | UInt16 opcode = br_read(1)[0]; |
50 | Common.SendToDebug("OPCODE: " + ((LSO_Enums.Operation_Table)opcode).ToString()); | 47 | Common.SendToDebug("OPCODE: " + ((LSO_Enums.Operation_Table) opcode).ToString()); |
51 | string idesc = ((LSO_Enums.Operation_Table)opcode).ToString(); | 48 | string idesc = ((LSO_Enums.Operation_Table) opcode).ToString(); |
52 | switch ((LSO_Enums.Operation_Table)opcode) | 49 | switch ((LSO_Enums.Operation_Table) opcode) |
53 | { | 50 | { |
54 | 51 | /*************** | |
55 | /*************** | ||
56 | * IMPLEMENTED * | 52 | * IMPLEMENTED * |
57 | ***************/ | 53 | ***************/ |
58 | case LSO_Enums.Operation_Table.NOOP: | 54 | case LSO_Enums.Operation_Table.NOOP: |
@@ -60,33 +56,34 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
60 | case LSO_Enums.Operation_Table.PUSHSP: | 56 | case LSO_Enums.Operation_Table.PUSHSP: |
61 | // Push Stack Top (Memory Address) to stack | 57 | // Push Stack Top (Memory Address) to stack |
62 | Common.SendToDebug("Instruction " + idesc); | 58 | Common.SendToDebug("Instruction " + idesc); |
63 | Common.SendToDebug("Instruction " + idesc + ": Description: Pushing Stack Top (Memory Address from header) to stack"); | 59 | Common.SendToDebug("Instruction " + idesc + |
64 | IL_Push(il, (UInt32)myHeader.SP); | 60 | ": Description: Pushing Stack Top (Memory Address from header) to stack"); |
61 | IL_Push(il, (UInt32) myHeader.SP); | ||
65 | break; | 62 | break; |
66 | // BYTE | 63 | // BYTE |
67 | case LSO_Enums.Operation_Table.PUSHARGB: | 64 | case LSO_Enums.Operation_Table.PUSHARGB: |
68 | Common.SendToDebug("Param1: " + br_read(1)[0]); | 65 | Common.SendToDebug("Param1: " + br_read(1)[0]); |
69 | break; | 66 | break; |
70 | // INTEGER | 67 | // INTEGER |
71 | case LSO_Enums.Operation_Table.PUSHARGI: | 68 | case LSO_Enums.Operation_Table.PUSHARGI: |
72 | u32p1 = BitConverter.ToUInt32(br_read(4), 0); | 69 | u32p1 = BitConverter.ToUInt32(br_read(4), 0); |
73 | Common.SendToDebug("Instruction " + idesc + ", Param1: " + u32p1); | 70 | Common.SendToDebug("Instruction " + idesc + ", Param1: " + u32p1); |
74 | IL_Push(il, u32p1); | 71 | IL_Push(il, u32p1); |
75 | break; | 72 | break; |
76 | // FLOAT | 73 | // FLOAT |
77 | case LSO_Enums.Operation_Table.PUSHARGF: | 74 | case LSO_Enums.Operation_Table.PUSHARGF: |
78 | fp1 = BitConverter.ToUInt32(br_read(4), 0); | 75 | fp1 = BitConverter.ToUInt32(br_read(4), 0); |
79 | Common.SendToDebug("Instruction " + idesc + ", Param1: " + fp1); | 76 | Common.SendToDebug("Instruction " + idesc + ", Param1: " + fp1); |
80 | IL_Push(il, fp1); | 77 | IL_Push(il, fp1); |
81 | break; | 78 | break; |
82 | // STRING | 79 | // STRING |
83 | case LSO_Enums.Operation_Table.PUSHARGS: | 80 | case LSO_Enums.Operation_Table.PUSHARGS: |
84 | string s = Read_String(); | 81 | string s = Read_String(); |
85 | Common.SendToDebug("Instruction " + idesc + ", Param1: " + s); | 82 | Common.SendToDebug("Instruction " + idesc + ", Param1: " + s); |
86 | IL_Debug(il, "OPCODE: " + idesc + ":" + s); | 83 | IL_Debug(il, "OPCODE: " + idesc + ":" + s); |
87 | IL_Push(il, s); | 84 | IL_Push(il, s); |
88 | break; | 85 | break; |
89 | // VECTOR z,y,x | 86 | // VECTOR z,y,x |
90 | case LSO_Enums.Operation_Table.PUSHARGV: | 87 | case LSO_Enums.Operation_Table.PUSHARGV: |
91 | LSO_Enums.Vector v = new LSO_Enums.Vector(); | 88 | LSO_Enums.Vector v = new LSO_Enums.Vector(); |
92 | v.Z = BitConverter.ToUInt32(br_read(4), 0); | 89 | v.Z = BitConverter.ToUInt32(br_read(4), 0); |
@@ -97,7 +94,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
97 | Common.SendToDebug("Param1 X: " + v.X); | 94 | Common.SendToDebug("Param1 X: " + v.X); |
98 | IL_Push(il, v); | 95 | IL_Push(il, v); |
99 | break; | 96 | break; |
100 | // ROTATION s,z,y,x | 97 | // ROTATION s,z,y,x |
101 | case LSO_Enums.Operation_Table.PUSHARGQ: | 98 | case LSO_Enums.Operation_Table.PUSHARGQ: |
102 | LSO_Enums.Rotation r = new LSO_Enums.Rotation(); | 99 | LSO_Enums.Rotation r = new LSO_Enums.Rotation(); |
103 | r.S = BitConverter.ToUInt32(br_read(4), 0); | 100 | r.S = BitConverter.ToUInt32(br_read(4), 0); |
@@ -112,7 +109,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
112 | break; | 109 | break; |
113 | 110 | ||
114 | case LSO_Enums.Operation_Table.PUSHE: | 111 | case LSO_Enums.Operation_Table.PUSHE: |
115 | IL_Push(il, (UInt32)0); | 112 | IL_Push(il, (UInt32) 0); |
116 | break; | 113 | break; |
117 | 114 | ||
118 | case LSO_Enums.Operation_Table.PUSHARGE: | 115 | case LSO_Enums.Operation_Table.PUSHARGE: |
@@ -121,7 +118,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
121 | //IL_Push(il, new string(" ".ToCharArray()[0], Convert.ToInt32(u32p1))); | 118 | //IL_Push(il, new string(" ".ToCharArray()[0], Convert.ToInt32(u32p1))); |
122 | IL_Push(il, u32p1); | 119 | IL_Push(il, u32p1); |
123 | break; | 120 | break; |
124 | // BYTE | 121 | // BYTE |
125 | case LSO_Enums.Operation_Table.ADD: | 122 | case LSO_Enums.Operation_Table.ADD: |
126 | case LSO_Enums.Operation_Table.SUB: | 123 | case LSO_Enums.Operation_Table.SUB: |
127 | case LSO_Enums.Operation_Table.MUL: | 124 | case LSO_Enums.Operation_Table.MUL: |
@@ -136,10 +133,10 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
136 | case LSO_Enums.Operation_Table.MOD: | 133 | case LSO_Enums.Operation_Table.MOD: |
137 | bp1 = br_read(1)[0]; | 134 | bp1 = br_read(1)[0]; |
138 | Common.SendToDebug("Param1: " + bp1); | 135 | Common.SendToDebug("Param1: " + bp1); |
139 | IL_CallBaseFunction(il, idesc, (UInt32)bp1); | 136 | IL_CallBaseFunction(il, idesc, (UInt32) bp1); |
140 | break; | 137 | break; |
141 | 138 | ||
142 | // NO ARGUMENTS | 139 | // NO ARGUMENTS |
143 | case LSO_Enums.Operation_Table.BITAND: | 140 | case LSO_Enums.Operation_Table.BITAND: |
144 | case LSO_Enums.Operation_Table.BITOR: | 141 | case LSO_Enums.Operation_Table.BITOR: |
145 | case LSO_Enums.Operation_Table.BITXOR: | 142 | case LSO_Enums.Operation_Table.BITXOR: |
@@ -149,22 +146,23 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
149 | case LSO_Enums.Operation_Table.BOOLNOT: | 146 | case LSO_Enums.Operation_Table.BOOLNOT: |
150 | IL_CallBaseFunction(il, idesc); | 147 | IL_CallBaseFunction(il, idesc); |
151 | break; | 148 | break; |
152 | // SHORT | 149 | // SHORT |
153 | case LSO_Enums.Operation_Table.CALLLIB_TWO_BYTE: | 150 | case LSO_Enums.Operation_Table.CALLLIB_TWO_BYTE: |
154 | // TODO: What is size of short? | 151 | // TODO: What is size of short? |
155 | UInt16 U16p1 = BitConverter.ToUInt16(br_read(2), 0); | 152 | UInt16 U16p1 = BitConverter.ToUInt16(br_read(2), 0); |
156 | Common.SendToDebug("Instruction " + idesc + ": Builtin Command: " + ((LSO_Enums.BuiltIn_Functions)U16p1).ToString()); | 153 | Common.SendToDebug("Instruction " + idesc + ": Builtin Command: " + |
154 | ((LSO_Enums.BuiltIn_Functions) U16p1).ToString()); | ||
157 | //Common.SendToDebug("Param1: " + U16p1); | 155 | //Common.SendToDebug("Param1: " + U16p1); |
158 | string fname = ((LSO_Enums.BuiltIn_Functions)U16p1).ToString(); | 156 | string fname = ((LSO_Enums.BuiltIn_Functions) U16p1).ToString(); |
159 | 157 | ||
160 | bool cmdFound = false; | 158 | bool cmdFound = false; |
161 | foreach (MethodInfo mi in typeof(LSL_BuiltIn_Commands_Interface).GetMethods()) | 159 | foreach (MethodInfo mi in typeof (LSL_BuiltIn_Commands_Interface).GetMethods()) |
162 | { | 160 | { |
163 | // Found command | 161 | // Found command |
164 | if (mi.Name == fname) | 162 | if (mi.Name == fname) |
165 | { | 163 | { |
166 | il.Emit(OpCodes.Ldarg_0); | 164 | il.Emit(OpCodes.Ldarg_0); |
167 | il.Emit(OpCodes.Call, typeof(LSL_BaseClass).GetMethod("GetLSL_BuiltIn", new Type[] { })); | 165 | il.Emit(OpCodes.Call, typeof (LSL_BaseClass).GetMethod("GetLSL_BuiltIn", new Type[] {})); |
168 | // Pop required number of items from my stack to .Net stack | 166 | // Pop required number of items from my stack to .Net stack |
169 | IL_PopToStack(il, mi.GetParameters().Length); | 167 | IL_PopToStack(il, mi.GetParameters().Length); |
170 | il.Emit(OpCodes.Callvirt, mi); | 168 | il.Emit(OpCodes.Callvirt, mi); |
@@ -179,7 +177,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
179 | 177 | ||
180 | break; | 178 | break; |
181 | 179 | ||
182 | // RETURN | 180 | // RETURN |
183 | case LSO_Enums.Operation_Table.RETURN: | 181 | case LSO_Enums.Operation_Table.RETURN: |
184 | 182 | ||
185 | Common.SendToDebug("OPCODE: RETURN"); | 183 | Common.SendToDebug("OPCODE: RETURN"); |
@@ -195,7 +193,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
195 | IL_Pop(il); | 193 | IL_Pop(il); |
196 | break; | 194 | break; |
197 | 195 | ||
198 | // LONG | 196 | // LONG |
199 | case LSO_Enums.Operation_Table.STORE: | 197 | case LSO_Enums.Operation_Table.STORE: |
200 | case LSO_Enums.Operation_Table.STORES: | 198 | case LSO_Enums.Operation_Table.STORES: |
201 | case LSO_Enums.Operation_Table.STOREL: | 199 | case LSO_Enums.Operation_Table.STOREL: |
@@ -238,7 +236,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
238 | IL_Pop(il); | 236 | IL_Pop(il); |
239 | break; | 237 | break; |
240 | 238 | ||
241 | // PUSH FROM LOCAL FRAME | 239 | // PUSH FROM LOCAL FRAME |
242 | case LSO_Enums.Operation_Table.PUSH: | 240 | case LSO_Enums.Operation_Table.PUSH: |
243 | case LSO_Enums.Operation_Table.PUSHS: | 241 | case LSO_Enums.Operation_Table.PUSHS: |
244 | case LSO_Enums.Operation_Table.PUSHL: | 242 | case LSO_Enums.Operation_Table.PUSHL: |
@@ -250,7 +248,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
250 | 248 | ||
251 | break; | 249 | break; |
252 | 250 | ||
253 | // PUSH FROM STATIC FRAME | 251 | // PUSH FROM STATIC FRAME |
254 | case LSO_Enums.Operation_Table.PUSHG: | 252 | case LSO_Enums.Operation_Table.PUSHG: |
255 | case LSO_Enums.Operation_Table.PUSHGS: | 253 | case LSO_Enums.Operation_Table.PUSHGS: |
256 | case LSO_Enums.Operation_Table.PUSHGL: | 254 | case LSO_Enums.Operation_Table.PUSHGL: |
@@ -262,26 +260,25 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
262 | break; | 260 | break; |
263 | 261 | ||
264 | 262 | ||
265 | /*********************** | 263 | /*********************** |
266 | * NOT IMPLEMENTED YET * | 264 | * NOT IMPLEMENTED YET * |
267 | ***********************/ | 265 | ***********************/ |
268 | 266 | ||
269 | 267 | ||
270 | |||
271 | case LSO_Enums.Operation_Table.POPIP: | 268 | case LSO_Enums.Operation_Table.POPIP: |
272 | case LSO_Enums.Operation_Table.POPSP: | 269 | case LSO_Enums.Operation_Table.POPSP: |
273 | case LSO_Enums.Operation_Table.POPSLR: | 270 | case LSO_Enums.Operation_Table.POPSLR: |
274 | case LSO_Enums.Operation_Table.POPARG: | 271 | case LSO_Enums.Operation_Table.POPARG: |
275 | case LSO_Enums.Operation_Table.POPBP: | 272 | case LSO_Enums.Operation_Table.POPBP: |
276 | //Common.SendToDebug("Instruction " + idesc + ": Ignored"); | 273 | //Common.SendToDebug("Instruction " + idesc + ": Ignored"); |
277 | Common.SendToDebug("Instruction " + idesc + ": Description: Drop x bytes from the stack (TODO: Only popping 1)"); | 274 | Common.SendToDebug("Instruction " + idesc + |
275 | ": Description: Drop x bytes from the stack (TODO: Only popping 1)"); | ||
278 | //Common.SendToDebug("Param1: " + BitConverter.ToUInt32(br_read(4), 0)); | 276 | //Common.SendToDebug("Param1: " + BitConverter.ToUInt32(br_read(4), 0)); |
279 | IL_Pop(il); | 277 | IL_Pop(il); |
280 | break; | 278 | break; |
281 | 279 | ||
282 | 280 | ||
283 | 281 | // None | |
284 | // None | ||
285 | case LSO_Enums.Operation_Table.PUSHIP: | 282 | case LSO_Enums.Operation_Table.PUSHIP: |
286 | // PUSH INSTRUCTION POINTER | 283 | // PUSH INSTRUCTION POINTER |
287 | break; | 284 | break; |
@@ -293,17 +290,17 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
293 | break; | 290 | break; |
294 | 291 | ||
295 | 292 | ||
296 | // LONG | 293 | // LONG |
297 | case LSO_Enums.Operation_Table.JUMP: | 294 | case LSO_Enums.Operation_Table.JUMP: |
298 | Common.SendToDebug("Param1: " + BitConverter.ToUInt32(br_read(4), 0)); | 295 | Common.SendToDebug("Param1: " + BitConverter.ToUInt32(br_read(4), 0)); |
299 | break; | 296 | break; |
300 | // BYTE, LONG | 297 | // BYTE, LONG |
301 | case LSO_Enums.Operation_Table.JUMPIF: | 298 | case LSO_Enums.Operation_Table.JUMPIF: |
302 | case LSO_Enums.Operation_Table.JUMPNIF: | 299 | case LSO_Enums.Operation_Table.JUMPNIF: |
303 | Common.SendToDebug("Param1: " + br_read(1)[0]); | 300 | Common.SendToDebug("Param1: " + br_read(1)[0]); |
304 | Common.SendToDebug("Param2: " + BitConverter.ToUInt32(br_read(4), 0)); | 301 | Common.SendToDebug("Param2: " + BitConverter.ToUInt32(br_read(4), 0)); |
305 | break; | 302 | break; |
306 | // LONG | 303 | // LONG |
307 | case LSO_Enums.Operation_Table.STATE: | 304 | case LSO_Enums.Operation_Table.STATE: |
308 | bp1 = br_read(1)[0]; | 305 | bp1 = br_read(1)[0]; |
309 | //il.Emit(OpCodes.Ld); // Load local variable 0 onto stack | 306 | //il.Emit(OpCodes.Ld); // Load local variable 0 onto stack |
@@ -315,12 +312,13 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
315 | Common.SendToDebug("Param1: " + BitConverter.ToUInt32(br_read(4), 0)); | 312 | Common.SendToDebug("Param1: " + BitConverter.ToUInt32(br_read(4), 0)); |
316 | Common.SendToDebug("ERROR: Function CALL not implemented yet."); | 313 | Common.SendToDebug("ERROR: Function CALL not implemented yet."); |
317 | break; | 314 | break; |
318 | // BYTE | 315 | // BYTE |
319 | case LSO_Enums.Operation_Table.CAST: | 316 | case LSO_Enums.Operation_Table.CAST: |
320 | bp1 = br_read(1)[0]; | 317 | bp1 = br_read(1)[0]; |
321 | Common.SendToDebug("Instruction " + idesc + ": Cast to type: " + ((LSO_Enums.OpCode_Cast_TypeDefs)bp1)); | 318 | Common.SendToDebug("Instruction " + idesc + ": Cast to type: " + |
319 | ((LSO_Enums.OpCode_Cast_TypeDefs) bp1)); | ||
322 | Common.SendToDebug("Param1: " + bp1); | 320 | Common.SendToDebug("Param1: " + bp1); |
323 | switch ((LSO_Enums.OpCode_Cast_TypeDefs)bp1) | 321 | switch ((LSO_Enums.OpCode_Cast_TypeDefs) bp1) |
324 | { | 322 | { |
325 | case LSO_Enums.OpCode_Cast_TypeDefs.String: | 323 | case LSO_Enums.OpCode_Cast_TypeDefs.String: |
326 | Common.SendToDebug("Instruction " + idesc + ": il.Emit(OpCodes.Box, ILStack.Pop());"); | 324 | Common.SendToDebug("Instruction " + idesc + ": il.Emit(OpCodes.Box, ILStack.Pop());"); |
@@ -330,12 +328,12 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
330 | break; | 328 | break; |
331 | } | 329 | } |
332 | break; | 330 | break; |
333 | // LONG | 331 | // LONG |
334 | case LSO_Enums.Operation_Table.STACKTOS: | 332 | case LSO_Enums.Operation_Table.STACKTOS: |
335 | case LSO_Enums.Operation_Table.STACKTOL: | 333 | case LSO_Enums.Operation_Table.STACKTOL: |
336 | Common.SendToDebug("Param1: " + BitConverter.ToUInt32(br_read(4), 0)); | 334 | Common.SendToDebug("Param1: " + BitConverter.ToUInt32(br_read(4), 0)); |
337 | break; | 335 | break; |
338 | // BYTE | 336 | // BYTE |
339 | case LSO_Enums.Operation_Table.PRINT: | 337 | case LSO_Enums.Operation_Table.PRINT: |
340 | case LSO_Enums.Operation_Table.CALLLIB: | 338 | case LSO_Enums.Operation_Table.CALLLIB: |
341 | Common.SendToDebug("Param1: " + br_read(1)[0]); | 339 | Common.SendToDebug("Param1: " + br_read(1)[0]); |
@@ -348,6 +346,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
348 | { | 346 | { |
349 | IL_PopToStack(il, 1); | 347 | IL_PopToStack(il, 1); |
350 | } | 348 | } |
349 | |||
351 | private void IL_PopToStack(ILGenerator il, int count) | 350 | private void IL_PopToStack(ILGenerator il, int count) |
352 | { | 351 | { |
353 | Common.SendToDebug("IL_PopToStack();"); | 352 | Common.SendToDebug("IL_PopToStack();"); |
@@ -360,31 +359,35 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
360 | // new Type[] { })); | 359 | // new Type[] { })); |
361 | } | 360 | } |
362 | } | 361 | } |
362 | |||
363 | private void IL_Pop(ILGenerator il) | 363 | private void IL_Pop(ILGenerator il) |
364 | { | 364 | { |
365 | Common.SendToDebug("IL_Pop();"); | 365 | Common.SendToDebug("IL_Pop();"); |
366 | IL_CallBaseFunction(il, "POP"); | 366 | IL_CallBaseFunction(il, "POP"); |
367 | } | 367 | } |
368 | |||
368 | private void IL_Debug(ILGenerator il, string text) | 369 | private void IL_Debug(ILGenerator il, string text) |
369 | { | 370 | { |
370 | il.Emit(OpCodes.Ldstr, text); | 371 | il.Emit(OpCodes.Ldstr, text); |
371 | il.Emit(OpCodes.Call, typeof(Common).GetMethod("SendToDebug", | 372 | il.Emit(OpCodes.Call, typeof (Common).GetMethod("SendToDebug", |
372 | new Type[] { typeof(string) } | 373 | new Type[] {typeof (string)} |
373 | )); | 374 | )); |
374 | } | 375 | } |
376 | |||
375 | private void IL_CallBaseFunction(ILGenerator il, string methodname) | 377 | private void IL_CallBaseFunction(ILGenerator il, string methodname) |
376 | { | 378 | { |
377 | il.Emit(OpCodes.Ldarg_0); | 379 | il.Emit(OpCodes.Ldarg_0); |
378 | il.Emit(OpCodes.Call, typeof(LSL_BaseClass).GetMethod(methodname, new Type[] { })); | 380 | il.Emit(OpCodes.Call, typeof (LSL_BaseClass).GetMethod(methodname, new Type[] {})); |
379 | } | 381 | } |
382 | |||
380 | private void IL_CallBaseFunction(ILGenerator il, string methodname, object data) | 383 | private void IL_CallBaseFunction(ILGenerator il, string methodname, object data) |
381 | { | 384 | { |
382 | il.Emit(OpCodes.Ldarg_0); | 385 | il.Emit(OpCodes.Ldarg_0); |
383 | if (data.GetType() == typeof(string)) | 386 | if (data.GetType() == typeof (string)) |
384 | il.Emit(OpCodes.Ldstr, (string)data); | 387 | il.Emit(OpCodes.Ldstr, (string) data); |
385 | if (data.GetType() == typeof(UInt32)) | 388 | if (data.GetType() == typeof (UInt32)) |
386 | il.Emit(OpCodes.Ldc_I4, (UInt32)data); | 389 | il.Emit(OpCodes.Ldc_I4, (UInt32) data); |
387 | il.Emit(OpCodes.Call, typeof(LSL_BaseClass).GetMethod(methodname, new Type[] { data.GetType() })); | 390 | il.Emit(OpCodes.Call, typeof (LSL_BaseClass).GetMethod(methodname, new Type[] {data.GetType()})); |
388 | } | 391 | } |
389 | 392 | ||
390 | private void IL_Push(ILGenerator il, object data) | 393 | private void IL_Push(ILGenerator il, object data) |
@@ -394,43 +397,39 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
394 | 397 | ||
395 | IL_PushDataTypeToILStack(il, data); | 398 | IL_PushDataTypeToILStack(il, data); |
396 | 399 | ||
397 | il.Emit(OpCodes.Call, typeof(LSL_BaseClass).GetMethod("PUSH", new Type[] { data.GetType() })); | 400 | il.Emit(OpCodes.Call, typeof (LSL_BaseClass).GetMethod("PUSH", new Type[] {data.GetType()})); |
398 | |||
399 | } | 401 | } |
400 | 402 | ||
401 | private void IL_PushDataTypeToILStack(ILGenerator il, object data) | 403 | private void IL_PushDataTypeToILStack(ILGenerator il, object data) |
402 | { | 404 | { |
403 | if (data.GetType() == typeof(UInt16)) | 405 | if (data.GetType() == typeof (UInt16)) |
404 | { | 406 | { |
405 | il.Emit(OpCodes.Ldc_I4, (UInt16)data); | 407 | il.Emit(OpCodes.Ldc_I4, (UInt16) data); |
406 | il.Emit(OpCodes.Box, data.GetType()); | 408 | il.Emit(OpCodes.Box, data.GetType()); |
407 | } | 409 | } |
408 | if (data.GetType() == typeof(UInt32)) | 410 | if (data.GetType() == typeof (UInt32)) |
409 | { | 411 | { |
410 | il.Emit(OpCodes.Ldc_I4, (UInt32)data); | 412 | il.Emit(OpCodes.Ldc_I4, (UInt32) data); |
411 | il.Emit(OpCodes.Box, data.GetType()); | 413 | il.Emit(OpCodes.Box, data.GetType()); |
412 | } | 414 | } |
413 | if (data.GetType() == typeof(Int32)) | 415 | if (data.GetType() == typeof (Int32)) |
414 | { | 416 | { |
415 | il.Emit(OpCodes.Ldc_I4, (Int32)data); | 417 | il.Emit(OpCodes.Ldc_I4, (Int32) data); |
416 | il.Emit(OpCodes.Box, data.GetType()); | 418 | il.Emit(OpCodes.Box, data.GetType()); |
417 | } | 419 | } |
418 | if (data.GetType() == typeof(float)) | 420 | if (data.GetType() == typeof (float)) |
419 | { | 421 | { |
420 | il.Emit(OpCodes.Ldc_I4, (float)data); | 422 | il.Emit(OpCodes.Ldc_I4, (float) data); |
421 | il.Emit(OpCodes.Box, data.GetType()); | 423 | il.Emit(OpCodes.Box, data.GetType()); |
422 | } | 424 | } |
423 | if (data.GetType() == typeof(string)) | 425 | if (data.GetType() == typeof (string)) |
424 | il.Emit(OpCodes.Ldstr, (string)data); | 426 | il.Emit(OpCodes.Ldstr, (string) data); |
425 | //if (data.GetType() == typeof(LSO_Enums.Rotation)) | 427 | //if (data.GetType() == typeof(LSO_Enums.Rotation)) |
426 | // il.Emit(OpCodes.Ldobj, (LSO_Enums.Rotation)data); | 428 | // il.Emit(OpCodes.Ldobj, (LSO_Enums.Rotation)data); |
427 | //if (data.GetType() == typeof(LSO_Enums.Vector)) | 429 | //if (data.GetType() == typeof(LSO_Enums.Vector)) |
428 | // il.Emit(OpCodes.Ldobj, (LSO_Enums.Vector)data); | 430 | // il.Emit(OpCodes.Ldobj, (LSO_Enums.Vector)data); |
429 | //if (data.GetType() == typeof(LSO_Enums.Key)) | 431 | //if (data.GetType() == typeof(LSO_Enums.Key)) |
430 | // il.Emit(OpCodes.Ldobj, (LSO_Enums.Key)data); | 432 | // il.Emit(OpCodes.Ldobj, (LSO_Enums.Key)data); |
431 | |||
432 | } | 433 | } |
433 | |||
434 | |||
435 | } | 434 | } |
436 | } | 435 | } \ No newline at end of file |
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSO_Enums.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSO_Enums.cs index 30ce314..a7e3018 100644 --- a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSO_Enums.cs +++ b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSO_Enums.cs | |||
@@ -27,8 +27,6 @@ | |||
27 | */ | 27 | */ |
28 | /* Original code: Tedd Hansen */ | 28 | /* Original code: Tedd Hansen */ |
29 | using System; | 29 | using System; |
30 | using System.Collections.Generic; | ||
31 | using System.Text; | ||
32 | 30 | ||
33 | namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | 31 | namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO |
34 | { | 32 | { |
@@ -47,6 +45,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
47 | String = 51, | 45 | String = 51, |
48 | UInt32 = 17 | 46 | UInt32 = 17 |
49 | } | 47 | } |
48 | |||
50 | [Serializable] | 49 | [Serializable] |
51 | public enum OpCode_Cast_TypeDefs | 50 | public enum OpCode_Cast_TypeDefs |
52 | { | 51 | { |
@@ -66,6 +65,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
66 | public UInt32 Y; | 65 | public UInt32 Y; |
67 | public UInt32 X; | 66 | public UInt32 X; |
68 | } | 67 | } |
68 | |||
69 | [Serializable] | 69 | [Serializable] |
70 | public struct Rotation | 70 | public struct Rotation |
71 | { | 71 | { |
@@ -74,6 +74,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
74 | public UInt32 Y; | 74 | public UInt32 Y; |
75 | public UInt32 X; | 75 | public UInt32 X; |
76 | } | 76 | } |
77 | |||
77 | [Serializable] | 78 | [Serializable] |
78 | public enum Variable_Type_Codes | 79 | public enum Variable_Type_Codes |
79 | { | 80 | { |
@@ -87,6 +88,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
87 | List = 7, | 88 | List = 7, |
88 | Null = 8 | 89 | Null = 8 |
89 | } | 90 | } |
91 | |||
90 | [Serializable] | 92 | [Serializable] |
91 | public enum Event_Mask_Values | 93 | public enum Event_Mask_Values |
92 | { | 94 | { |
@@ -124,6 +126,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
124 | remote_data = 31, | 126 | remote_data = 31, |
125 | http_response = 32 | 127 | http_response = 32 |
126 | } | 128 | } |
129 | |||
127 | [Serializable] | 130 | [Serializable] |
128 | public enum Operation_Table | 131 | public enum Operation_Table |
129 | { | 132 | { |
@@ -220,6 +223,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
220 | SHL = 0xe0, | 223 | SHL = 0xe0, |
221 | SHR = 0xe1 | 224 | SHR = 0xe1 |
222 | } | 225 | } |
226 | |||
223 | [Serializable] | 227 | [Serializable] |
224 | public enum BuiltIn_Functions | 228 | public enum BuiltIn_Functions |
225 | { | 229 | { |
@@ -552,6 +556,5 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
552 | llGetParcelMaxPrims = 326, | 556 | llGetParcelMaxPrims = 326, |
553 | llGetParcelDetails = 327 | 557 | llGetParcelDetails = 327 |
554 | } | 558 | } |
555 | |||
556 | } | 559 | } |
557 | } | 560 | } \ No newline at end of file |
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSO_Parser.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSO_Parser.cs index ba97375..a0b4977f 100644 --- a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSO_Parser.cs +++ b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSO_Parser.cs | |||
@@ -27,15 +27,16 @@ | |||
27 | */ | 27 | */ |
28 | /* Original code: Tedd Hansen */ | 28 | /* Original code: Tedd Hansen */ |
29 | using System; | 29 | using System; |
30 | using System.Collections; | ||
30 | using System.Collections.Generic; | 31 | using System.Collections.Generic; |
31 | using System.Text; | ||
32 | using System.IO; | 32 | using System.IO; |
33 | using System.Reflection; | 33 | using System.Reflection; |
34 | using System.Reflection.Emit; | 34 | using System.Reflection.Emit; |
35 | using System.Text; | ||
35 | 36 | ||
36 | namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | 37 | namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO |
37 | { | 38 | { |
38 | partial class LSO_Parser | 39 | internal partial class LSO_Parser |
39 | { | 40 | { |
40 | private string FileName; | 41 | private string FileName; |
41 | private FileStream fs; | 42 | private FileStream fs; |
@@ -45,7 +46,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
45 | //private System.Collections.Hashtable StaticBlocks = new System.Collections.Hashtable(); | 46 | //private System.Collections.Hashtable StaticBlocks = new System.Collections.Hashtable(); |
46 | 47 | ||
47 | private TypeBuilder typeBuilder; | 48 | private TypeBuilder typeBuilder; |
48 | private System.Collections.Generic.List<string> EventList = new System.Collections.Generic.List<string>(); | 49 | private List<string> EventList = new List<string>(); |
49 | 50 | ||
50 | public LSO_Parser(string _FileName, TypeBuilder _typeBuilder) | 51 | public LSO_Parser(string _FileName, TypeBuilder _typeBuilder) |
51 | { | 52 | { |
@@ -59,11 +60,10 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
59 | Common.SendToDebug("Opening filename: " + FileName); | 60 | Common.SendToDebug("Opening filename: " + FileName); |
60 | fs = File.Open(FileName, FileMode.Open, FileAccess.Read, FileShare.Read); | 61 | fs = File.Open(FileName, FileMode.Open, FileAccess.Read, FileShare.Read); |
61 | br = new BinaryReader(fs, Encoding.BigEndianUnicode); | 62 | br = new BinaryReader(fs, Encoding.BigEndianUnicode); |
62 | |||
63 | } | 63 | } |
64 | |||
64 | internal void CloseFile() | 65 | internal void CloseFile() |
65 | { | 66 | { |
66 | |||
67 | // Close | 67 | // Close |
68 | br.Close(); | 68 | br.Close(); |
69 | fs.Close(); | 69 | fs.Close(); |
@@ -75,9 +75,6 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
75 | /// </summary> | 75 | /// </summary> |
76 | public void Parse() | 76 | public void Parse() |
77 | { | 77 | { |
78 | |||
79 | |||
80 | |||
81 | // The LSO Format consist of 6 major blocks: header, statics, functions, states, heap, and stack. | 78 | // The LSO Format consist of 6 major blocks: header, statics, functions, states, heap, and stack. |
82 | 79 | ||
83 | 80 | ||
@@ -148,14 +145,14 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
148 | LSO_Struct.StaticBlock myStaticBlock = new LSO_Struct.StaticBlock(); | 145 | LSO_Struct.StaticBlock myStaticBlock = new LSO_Struct.StaticBlock(); |
149 | myStaticBlock.Static_Chunk_Header_Size = BitConverter.ToUInt32(br_read(4), 0); | 146 | myStaticBlock.Static_Chunk_Header_Size = BitConverter.ToUInt32(br_read(4), 0); |
150 | myStaticBlock.ObjectType = br_read(1)[0]; | 147 | myStaticBlock.ObjectType = br_read(1)[0]; |
151 | Common.SendToDebug("Static Block ObjectType: " + ((LSO_Enums.Variable_Type_Codes)myStaticBlock.ObjectType).ToString()); | 148 | Common.SendToDebug("Static Block ObjectType: " + |
149 | ((LSO_Enums.Variable_Type_Codes) myStaticBlock.ObjectType).ToString()); | ||
152 | myStaticBlock.Unknown = br_read(1)[0]; | 150 | myStaticBlock.Unknown = br_read(1)[0]; |
153 | // Size of datatype varies -- what about strings? | 151 | // Size of datatype varies -- what about strings? |
154 | if (myStaticBlock.ObjectType != 0) | 152 | if (myStaticBlock.ObjectType != 0) |
155 | myStaticBlock.BlockVariable = br_read(getObjectSize(myStaticBlock.ObjectType)); | 153 | myStaticBlock.BlockVariable = br_read(getObjectSize(myStaticBlock.ObjectType)); |
156 | 154 | ||
157 | StaticBlocks.Add((UInt32)startReadPos, myStaticBlock); | 155 | StaticBlocks.Add((UInt32) startReadPos, myStaticBlock); |
158 | |||
159 | } | 156 | } |
160 | Common.SendToDebug("Number of Static Blocks read: " + StaticBlockCount); | 157 | Common.SendToDebug("Number of Static Blocks read: " + StaticBlockCount); |
161 | 158 | ||
@@ -183,7 +180,8 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
183 | // TODO: ADD TO FUNCTION LIST (How do we identify it later?) | 180 | // TODO: ADD TO FUNCTION LIST (How do we identify it later?) |
184 | // Note! Absolute position | 181 | // Note! Absolute position |
185 | myFunctionBlock.CodeChunkPointer[i] = BitConverter.ToUInt32(br_read(4), 0) + myHeader.GFR; | 182 | myFunctionBlock.CodeChunkPointer[i] = BitConverter.ToUInt32(br_read(4), 0) + myHeader.GFR; |
186 | Common.SendToDebug("Fuction " + i + " code chunk position: " + myFunctionBlock.CodeChunkPointer[i]); | 183 | Common.SendToDebug("Fuction " + i + " code chunk position: " + |
184 | myFunctionBlock.CodeChunkPointer[i]); | ||
187 | } | 185 | } |
188 | } | 186 | } |
189 | } | 187 | } |
@@ -204,14 +202,14 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
204 | Common.SendToDebug("Reading STATE POINTER BLOCK " + (i + 1) + " at: " + fs.Position); | 202 | Common.SendToDebug("Reading STATE POINTER BLOCK " + (i + 1) + " at: " + fs.Position); |
205 | // Position is relative to state frame | 203 | // Position is relative to state frame |
206 | myStateFrameBlock.StatePointer[i].Location = myHeader.SR + BitConverter.ToUInt32(br_read(4), 0); | 204 | myStateFrameBlock.StatePointer[i].Location = myHeader.SR + BitConverter.ToUInt32(br_read(4), 0); |
207 | myStateFrameBlock.StatePointer[i].EventMask = new System.Collections.BitArray(br_read(8)); | 205 | myStateFrameBlock.StatePointer[i].EventMask = new BitArray(br_read(8)); |
208 | Common.SendToDebug("Pointer: " + myStateFrameBlock.StatePointer[i].Location); | 206 | Common.SendToDebug("Pointer: " + myStateFrameBlock.StatePointer[i].Location); |
209 | Common.SendToDebug("Total potential EventMask bits: " + myStateFrameBlock.StatePointer[i].EventMask.Count); | 207 | Common.SendToDebug("Total potential EventMask bits: " + |
208 | myStateFrameBlock.StatePointer[i].EventMask.Count); | ||
210 | 209 | ||
211 | //// Read STATE BLOCK | 210 | //// Read STATE BLOCK |
212 | //long CurPos = fs.Position; | 211 | //long CurPos = fs.Position; |
213 | //fs.Seek(CurPos, SeekOrigin.Begin); | 212 | //fs.Seek(CurPos, SeekOrigin.Begin); |
214 | |||
215 | } | 213 | } |
216 | } | 214 | } |
217 | 215 | ||
@@ -224,19 +222,20 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
224 | // Go through all State Frame Pointers found | 222 | // Go through all State Frame Pointers found |
225 | for (int i = 0; i < myStateFrameBlock.StateCount; i++) | 223 | for (int i = 0; i < myStateFrameBlock.StateCount; i++) |
226 | { | 224 | { |
227 | |||
228 | fs.Seek(myStateFrameBlock.StatePointer[i].Location, SeekOrigin.Begin); | 225 | fs.Seek(myStateFrameBlock.StatePointer[i].Location, SeekOrigin.Begin); |
229 | Common.SendToDebug("Reading STATE BLOCK " + (i + 1) + " at: " + fs.Position); | 226 | Common.SendToDebug("Reading STATE BLOCK " + (i + 1) + " at: " + fs.Position); |
230 | 227 | ||
231 | // READ: STATE BLOCK HEADER | 228 | // READ: STATE BLOCK HEADER |
232 | myStateFrameBlock.StatePointer[i].StateBlock = new LSO_Struct.StateBlock(); | 229 | myStateFrameBlock.StatePointer[i].StateBlock = new LSO_Struct.StateBlock(); |
233 | myStateFrameBlock.StatePointer[i].StateBlock.StartPos = (UInt32)fs.Position; // Note | 230 | myStateFrameBlock.StatePointer[i].StateBlock.StartPos = (UInt32) fs.Position; // Note |
234 | myStateFrameBlock.StatePointer[i].StateBlock.HeaderSize = BitConverter.ToUInt32(br_read(4), 0); | 231 | myStateFrameBlock.StatePointer[i].StateBlock.HeaderSize = BitConverter.ToUInt32(br_read(4), 0); |
235 | myStateFrameBlock.StatePointer[i].StateBlock.Unknown = br_read(1)[0]; | 232 | myStateFrameBlock.StatePointer[i].StateBlock.Unknown = br_read(1)[0]; |
236 | myStateFrameBlock.StatePointer[i].StateBlock.EndPos = (UInt32)fs.Position; // Note | 233 | myStateFrameBlock.StatePointer[i].StateBlock.EndPos = (UInt32) fs.Position; // Note |
237 | Common.SendToDebug("State block Start Pos: " + myStateFrameBlock.StatePointer[i].StateBlock.StartPos); | 234 | Common.SendToDebug("State block Start Pos: " + myStateFrameBlock.StatePointer[i].StateBlock.StartPos); |
238 | Common.SendToDebug("State block Header Size: " + myStateFrameBlock.StatePointer[i].StateBlock.HeaderSize); | 235 | Common.SendToDebug("State block Header Size: " + |
239 | Common.SendToDebug("State block Header End Pos: " + myStateFrameBlock.StatePointer[i].StateBlock.EndPos); | 236 | myStateFrameBlock.StatePointer[i].StateBlock.HeaderSize); |
237 | Common.SendToDebug("State block Header End Pos: " + | ||
238 | myStateFrameBlock.StatePointer[i].StateBlock.EndPos); | ||
240 | 239 | ||
241 | // We need to count number of bits flagged in EventMask? | 240 | // We need to count number of bits flagged in EventMask? |
242 | 241 | ||
@@ -245,27 +244,36 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
245 | 244 | ||
246 | // ADDING TO ALL RIGHT NOW, SHOULD LIMIT TO ONLY THE ONES IN USE | 245 | // ADDING TO ALL RIGHT NOW, SHOULD LIMIT TO ONLY THE ONES IN USE |
247 | //TODO: Create event hooks | 246 | //TODO: Create event hooks |
248 | myStateFrameBlock.StatePointer[i].StateBlock.StateBlockHandlers = new LSO_Struct.StateBlockHandler[myStateFrameBlock.StatePointer[i].EventMask.Count - 1]; | 247 | myStateFrameBlock.StatePointer[i].StateBlock.StateBlockHandlers = |
248 | new LSO_Struct.StateBlockHandler[myStateFrameBlock.StatePointer[i].EventMask.Count - 1]; | ||
249 | for (int ii = 0; ii < myStateFrameBlock.StatePointer[i].EventMask.Count - 1; ii++) | 249 | for (int ii = 0; ii < myStateFrameBlock.StatePointer[i].EventMask.Count - 1; ii++) |
250 | { | 250 | { |
251 | |||
252 | if (myStateFrameBlock.StatePointer[i].EventMask.Get(ii) == true) | 251 | if (myStateFrameBlock.StatePointer[i].EventMask.Get(ii) == true) |
253 | { | 252 | { |
254 | // We got an event | 253 | // We got an event |
255 | // READ: STATE BLOCK HANDLER | 254 | // READ: STATE BLOCK HANDLER |
256 | Common.SendToDebug("Reading STATE BLOCK " + (i + 1) + " HANDLER matching EVENT MASK " + ii + " (" + ((LSO_Enums.Event_Mask_Values)ii).ToString() + ") at: " + fs.Position); | 255 | Common.SendToDebug("Reading STATE BLOCK " + (i + 1) + " HANDLER matching EVENT MASK " + ii + |
257 | myStateFrameBlock.StatePointer[i].StateBlock.StateBlockHandlers[ii].CodeChunkPointer = myStateFrameBlock.StatePointer[i].StateBlock.EndPos + BitConverter.ToUInt32(br_read(4), 0); | 256 | " (" + ((LSO_Enums.Event_Mask_Values) ii).ToString() + ") at: " + |
258 | myStateFrameBlock.StatePointer[i].StateBlock.StateBlockHandlers[ii].CallFrameSize = BitConverter.ToUInt32(br_read(4), 0); | 257 | fs.Position); |
259 | Common.SendToDebug("Reading STATE BLOCK " + (i + 1) + " HANDLER EVENT MASK " + ii + " (" + ((LSO_Enums.Event_Mask_Values)ii).ToString() + ") Code Chunk Pointer: " + myStateFrameBlock.StatePointer[i].StateBlock.StateBlockHandlers[ii].CodeChunkPointer); | 258 | myStateFrameBlock.StatePointer[i].StateBlock.StateBlockHandlers[ii].CodeChunkPointer = |
260 | Common.SendToDebug("Reading STATE BLOCK " + (i + 1) + " HANDLER EVENT MASK " + ii + " (" + ((LSO_Enums.Event_Mask_Values)ii).ToString() + ") Call Frame Size: " + myStateFrameBlock.StatePointer[i].StateBlock.StateBlockHandlers[ii].CallFrameSize); | 259 | myStateFrameBlock.StatePointer[i].StateBlock.EndPos + |
260 | BitConverter.ToUInt32(br_read(4), 0); | ||
261 | myStateFrameBlock.StatePointer[i].StateBlock.StateBlockHandlers[ii].CallFrameSize = | ||
262 | BitConverter.ToUInt32(br_read(4), 0); | ||
263 | Common.SendToDebug("Reading STATE BLOCK " + (i + 1) + " HANDLER EVENT MASK " + ii + " (" + | ||
264 | ((LSO_Enums.Event_Mask_Values) ii).ToString() + ") Code Chunk Pointer: " + | ||
265 | myStateFrameBlock.StatePointer[i].StateBlock.StateBlockHandlers[ii]. | ||
266 | CodeChunkPointer); | ||
267 | Common.SendToDebug("Reading STATE BLOCK " + (i + 1) + " HANDLER EVENT MASK " + ii + " (" + | ||
268 | ((LSO_Enums.Event_Mask_Values) ii).ToString() + ") Call Frame Size: " + | ||
269 | myStateFrameBlock.StatePointer[i].StateBlock.StateBlockHandlers[ii]. | ||
270 | CallFrameSize); | ||
261 | } | 271 | } |
262 | } | 272 | } |
263 | } | 273 | } |
264 | } | 274 | } |
265 | 275 | ||
266 | 276 | ||
267 | |||
268 | |||
269 | //// READ FUNCTION CODE CHUNKS | 277 | //// READ FUNCTION CODE CHUNKS |
270 | //// Functions + Function start pos (GFR) | 278 | //// Functions + Function start pos (GFR) |
271 | //// TODO: Somehow be able to identify and reference this | 279 | //// TODO: Somehow be able to identify and reference this |
@@ -291,37 +299,32 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
291 | // two level search ain't no good | 299 | // two level search ain't no good |
292 | for (int ii = 0; ii < myStateFrameBlock.StatePointer[i].EventMask.Count - 1; ii++) | 300 | for (int ii = 0; ii < myStateFrameBlock.StatePointer[i].EventMask.Count - 1; ii++) |
293 | { | 301 | { |
294 | |||
295 | |||
296 | if (myStateFrameBlock.StatePointer[i].StateBlock.StateBlockHandlers[ii].CodeChunkPointer > 0) | 302 | if (myStateFrameBlock.StatePointer[i].StateBlock.StateBlockHandlers[ii].CodeChunkPointer > 0) |
297 | { | 303 | { |
298 | Common.SendToDebug("Reading Event Code Chunk state " + i + ", event " + (LSO_Enums.Event_Mask_Values)ii); | 304 | Common.SendToDebug("Reading Event Code Chunk state " + i + ", event " + |
305 | (LSO_Enums.Event_Mask_Values) ii); | ||
299 | 306 | ||
300 | 307 | ||
301 | // Override a Method / Function | 308 | // Override a Method / Function |
302 | string eventname = i + "_event_" + (LSO_Enums.Event_Mask_Values)ii; | 309 | string eventname = i + "_event_" + (LSO_Enums.Event_Mask_Values) ii; |
303 | Common.SendToDebug("Event Name: " + eventname); | 310 | Common.SendToDebug("Event Name: " + eventname); |
304 | if (Common.IL_ProcessCodeChunks) | 311 | if (Common.IL_ProcessCodeChunks) |
305 | { | 312 | { |
306 | EventList.Add(eventname); | 313 | EventList.Add(eventname); |
307 | 314 | ||
308 | // JUMP TO CODE PROCESSOR | 315 | // JUMP TO CODE PROCESSOR |
309 | ProcessCodeChunk(myStateFrameBlock.StatePointer[i].StateBlock.StateBlockHandlers[ii].CodeChunkPointer, typeBuilder, eventname); | 316 | ProcessCodeChunk( |
317 | myStateFrameBlock.StatePointer[i].StateBlock.StateBlockHandlers[ii].CodeChunkPointer, | ||
318 | typeBuilder, eventname); | ||
310 | } | 319 | } |
311 | } | 320 | } |
312 | |||
313 | } | 321 | } |
314 | |||
315 | } | 322 | } |
316 | |||
317 | } | 323 | } |
318 | 324 | ||
319 | 325 | ||
320 | |||
321 | |||
322 | if (Common.IL_CreateFunctionList) | 326 | if (Common.IL_CreateFunctionList) |
323 | IL_INSERT_FUNCTIONLIST(); | 327 | IL_INSERT_FUNCTIONLIST(); |
324 | |||
325 | } | 328 | } |
326 | 329 | ||
327 | internal LSO_Struct.HeapBlock GetHeap(UInt32 pos) | 330 | internal LSO_Struct.HeapBlock GetHeap(UInt32 pos) |
@@ -342,11 +345,13 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
342 | 345 | ||
343 | 346 | ||
344 | Common.SendToDebug("Heap Block Data Block Size: " + myHeapBlock.DataBlockSize); | 347 | Common.SendToDebug("Heap Block Data Block Size: " + myHeapBlock.DataBlockSize); |
345 | Common.SendToDebug("Heap Block ObjectType: " + ((LSO_Enums.Variable_Type_Codes)myHeapBlock.ObjectType).ToString()); | 348 | Common.SendToDebug("Heap Block ObjectType: " + |
349 | ((LSO_Enums.Variable_Type_Codes) myHeapBlock.ObjectType).ToString()); | ||
346 | Common.SendToDebug("Heap Block Reference Count: " + myHeapBlock.ReferenceCount); | 350 | Common.SendToDebug("Heap Block Reference Count: " + myHeapBlock.ReferenceCount); |
347 | 351 | ||
348 | return myHeapBlock; | 352 | return myHeapBlock; |
349 | } | 353 | } |
354 | |||
350 | private byte[] br_read(int len) | 355 | private byte[] br_read(int len) |
351 | { | 356 | { |
352 | if (len <= 0) | 357 | if (len <= 0) |
@@ -365,6 +370,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
365 | throw (e); | 370 | throw (e); |
366 | } | 371 | } |
367 | } | 372 | } |
373 | |||
368 | //private byte[] br_read_smallendian(int len) | 374 | //private byte[] br_read_smallendian(int len) |
369 | //{ | 375 | //{ |
370 | // byte[] bytes = new byte[len]; | 376 | // byte[] bytes = new byte[len]; |
@@ -373,29 +379,38 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
373 | //} | 379 | //} |
374 | private Type getLLObjectType(byte objectCode) | 380 | private Type getLLObjectType(byte objectCode) |
375 | { | 381 | { |
376 | switch ((LSO_Enums.Variable_Type_Codes)objectCode) | 382 | switch ((LSO_Enums.Variable_Type_Codes) objectCode) |
377 | { | 383 | { |
378 | case LSO_Enums.Variable_Type_Codes.Void: return typeof(void); | 384 | case LSO_Enums.Variable_Type_Codes.Void: |
379 | case LSO_Enums.Variable_Type_Codes.Integer: return typeof(UInt32); | 385 | return typeof (void); |
380 | case LSO_Enums.Variable_Type_Codes.Float: return typeof(float); | 386 | case LSO_Enums.Variable_Type_Codes.Integer: |
381 | case LSO_Enums.Variable_Type_Codes.String: return typeof(string); | 387 | return typeof (UInt32); |
382 | case LSO_Enums.Variable_Type_Codes.Key: return typeof(string); | 388 | case LSO_Enums.Variable_Type_Codes.Float: |
383 | case LSO_Enums.Variable_Type_Codes.Vector: return typeof(LSO_Enums.Vector); | 389 | return typeof (float); |
384 | case LSO_Enums.Variable_Type_Codes.Rotation: return typeof(LSO_Enums.Rotation); | 390 | case LSO_Enums.Variable_Type_Codes.String: |
391 | return typeof (string); | ||
392 | case LSO_Enums.Variable_Type_Codes.Key: | ||
393 | return typeof (string); | ||
394 | case LSO_Enums.Variable_Type_Codes.Vector: | ||
395 | return typeof (LSO_Enums.Vector); | ||
396 | case LSO_Enums.Variable_Type_Codes.Rotation: | ||
397 | return typeof (LSO_Enums.Rotation); | ||
385 | case LSO_Enums.Variable_Type_Codes.List: | 398 | case LSO_Enums.Variable_Type_Codes.List: |
386 | Common.SendToDebug("TODO: List datatype not implemented yet!"); | 399 | Common.SendToDebug("TODO: List datatype not implemented yet!"); |
387 | return typeof(System.Collections.ArrayList); | 400 | return typeof (ArrayList); |
388 | case LSO_Enums.Variable_Type_Codes.Null: | 401 | case LSO_Enums.Variable_Type_Codes.Null: |
389 | Common.SendToDebug("TODO: Datatype null is not implemented, using string instead.!"); | 402 | Common.SendToDebug("TODO: Datatype null is not implemented, using string instead.!"); |
390 | return typeof(string); | 403 | return typeof (string); |
391 | default: | 404 | default: |
392 | Common.SendToDebug("Lookup of LSL datatype " + objectCode + " to .Net datatype failed: Unknown LSL datatype. Defaulting to object."); | 405 | Common.SendToDebug("Lookup of LSL datatype " + objectCode + |
393 | return typeof(object); | 406 | " to .Net datatype failed: Unknown LSL datatype. Defaulting to object."); |
407 | return typeof (object); | ||
394 | } | 408 | } |
395 | } | 409 | } |
410 | |||
396 | private int getObjectSize(byte ObjectType) | 411 | private int getObjectSize(byte ObjectType) |
397 | { | 412 | { |
398 | switch ((LSO_Enums.Variable_Type_Codes)ObjectType) | 413 | switch ((LSO_Enums.Variable_Type_Codes) ObjectType) |
399 | { | 414 | { |
400 | case LSO_Enums.Variable_Type_Codes.Integer: | 415 | case LSO_Enums.Variable_Type_Codes.Integer: |
401 | case LSO_Enums.Variable_Type_Codes.Float: | 416 | case LSO_Enums.Variable_Type_Codes.Float: |
@@ -411,13 +426,14 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
411 | return 0; | 426 | return 0; |
412 | } | 427 | } |
413 | } | 428 | } |
429 | |||
414 | private string Read_String() | 430 | private string Read_String() |
415 | { | 431 | { |
416 | string ret = ""; | 432 | string ret = ""; |
417 | byte reader = br_read(1)[0]; | 433 | byte reader = br_read(1)[0]; |
418 | while (reader != 0x000) | 434 | while (reader != 0x000) |
419 | { | 435 | { |
420 | ret += (char)reader; | 436 | ret += (char) reader; |
421 | reader = br_read(1)[0]; | 437 | reader = br_read(1)[0]; |
422 | } | 438 | } |
423 | return ret; | 439 | return ret; |
@@ -431,7 +447,6 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
431 | /// <param name="eventname">Name of event (function) to generate</param> | 447 | /// <param name="eventname">Name of event (function) to generate</param> |
432 | private void ProcessCodeChunk(UInt32 pos, TypeBuilder typeBuilder, string eventname) | 448 | private void ProcessCodeChunk(UInt32 pos, TypeBuilder typeBuilder, string eventname) |
433 | { | 449 | { |
434 | |||
435 | LSO_Struct.CodeChunk myCodeChunk = new LSO_Struct.CodeChunk(); | 450 | LSO_Struct.CodeChunk myCodeChunk = new LSO_Struct.CodeChunk(); |
436 | 451 | ||
437 | Common.SendToDebug("Reading Function Code Chunk at: " + pos); | 452 | Common.SendToDebug("Reading Function Code Chunk at: " + pos); |
@@ -442,12 +457,13 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
442 | myCodeChunk.Comment = Read_String(); | 457 | myCodeChunk.Comment = Read_String(); |
443 | Common.SendToDebug("Function comment: " + myCodeChunk.Comment); | 458 | Common.SendToDebug("Function comment: " + myCodeChunk.Comment); |
444 | myCodeChunk.ReturnTypePos = br_read(1)[0]; | 459 | myCodeChunk.ReturnTypePos = br_read(1)[0]; |
445 | myCodeChunk.ReturnType = GetStaticBlock((long)myCodeChunk.ReturnTypePos + (long)myHeader.GVR); | 460 | myCodeChunk.ReturnType = GetStaticBlock((long) myCodeChunk.ReturnTypePos + (long) myHeader.GVR); |
446 | Common.SendToDebug("Return type #" + myCodeChunk.ReturnType.ObjectType + ": " + ((LSO_Enums.Variable_Type_Codes)myCodeChunk.ReturnType.ObjectType).ToString()); | 461 | Common.SendToDebug("Return type #" + myCodeChunk.ReturnType.ObjectType + ": " + |
462 | ((LSO_Enums.Variable_Type_Codes) myCodeChunk.ReturnType.ObjectType).ToString()); | ||
447 | 463 | ||
448 | 464 | ||
449 | // TODO: How to determine number of codechunks -- does this method work? | 465 | // TODO: How to determine number of codechunks -- does this method work? |
450 | myCodeChunk.CodeChunkArguments = new System.Collections.Generic.List<LSO_Struct.CodeChunkArgument>(); | 466 | myCodeChunk.CodeChunkArguments = new List<LSO_Struct.CodeChunkArgument>(); |
451 | byte reader = br_read(1)[0]; | 467 | byte reader = br_read(1)[0]; |
452 | reader = br_read(1)[0]; | 468 | reader = br_read(1)[0]; |
453 | 469 | ||
@@ -464,14 +480,17 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
464 | CCA.NullString = reader; | 480 | CCA.NullString = reader; |
465 | CCA.FunctionReturnType = GetStaticBlock(CCA.FunctionReturnTypePos + myHeader.GVR); | 481 | CCA.FunctionReturnType = GetStaticBlock(CCA.FunctionReturnTypePos + myHeader.GVR); |
466 | myCodeChunk.CodeChunkArguments.Add(CCA); | 482 | myCodeChunk.CodeChunkArguments.Add(CCA); |
467 | Common.SendToDebug("Code Chunk Argument " + ccount + " type #" + CCA.FunctionReturnType.ObjectType + ": " + (LSO_Enums.Variable_Type_Codes)CCA.FunctionReturnType.ObjectType); | 483 | Common.SendToDebug("Code Chunk Argument " + ccount + " type #" + CCA.FunctionReturnType.ObjectType + |
484 | ": " + (LSO_Enums.Variable_Type_Codes) CCA.FunctionReturnType.ObjectType); | ||
468 | } | 485 | } |
469 | // Create string array | 486 | // Create string array |
470 | Type[] MethodArgs = new Type[myCodeChunk.CodeChunkArguments.Count]; | 487 | Type[] MethodArgs = new Type[myCodeChunk.CodeChunkArguments.Count]; |
471 | for (int _ic = 0; _ic < myCodeChunk.CodeChunkArguments.Count; _ic++) | 488 | for (int _ic = 0; _ic < myCodeChunk.CodeChunkArguments.Count; _ic++) |
472 | { | 489 | { |
473 | MethodArgs[_ic] = getLLObjectType(myCodeChunk.CodeChunkArguments[_ic].FunctionReturnType.ObjectType); | 490 | MethodArgs[_ic] = getLLObjectType(myCodeChunk.CodeChunkArguments[_ic].FunctionReturnType.ObjectType); |
474 | Common.SendToDebug("Method argument " + _ic + ": " + getLLObjectType(myCodeChunk.CodeChunkArguments[_ic].FunctionReturnType.ObjectType).ToString()); | 491 | Common.SendToDebug("Method argument " + _ic + ": " + |
492 | getLLObjectType(myCodeChunk.CodeChunkArguments[_ic].FunctionReturnType.ObjectType). | ||
493 | ToString()); | ||
475 | } | 494 | } |
476 | // End marker is 0x000 | 495 | // End marker is 0x000 |
477 | myCodeChunk.EndMarker = reader; | 496 | myCodeChunk.EndMarker = reader; |
@@ -483,9 +502,9 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
483 | 502 | ||
484 | Common.SendToDebug("CLR:" + eventname + ":MethodBuilder methodBuilder = typeBuilder.DefineMethod..."); | 503 | Common.SendToDebug("CLR:" + eventname + ":MethodBuilder methodBuilder = typeBuilder.DefineMethod..."); |
485 | MethodBuilder methodBuilder = typeBuilder.DefineMethod(eventname, | 504 | MethodBuilder methodBuilder = typeBuilder.DefineMethod(eventname, |
486 | MethodAttributes.Public, | 505 | MethodAttributes.Public, |
487 | typeof(void), | 506 | typeof (void), |
488 | new Type[] { typeof(object) }); | 507 | new Type[] {typeof (object)}); |
489 | //MethodArgs); | 508 | //MethodArgs); |
490 | //typeof(void), //getLLObjectType(myCodeChunk.ReturnType), | 509 | //typeof(void), //getLLObjectType(myCodeChunk.ReturnType), |
491 | // new Type[] { typeof(object) }, //); | 510 | // new Type[] { typeof(object) }, //); |
@@ -504,7 +523,6 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
504 | IL_INSERT_TRY(il, eventname); | 523 | IL_INSERT_TRY(il, eventname); |
505 | 524 | ||
506 | 525 | ||
507 | |||
508 | // Push Console.WriteLine command to stack ... Console.WriteLine("Hello World!"); | 526 | // Push Console.WriteLine command to stack ... Console.WriteLine("Hello World!"); |
509 | //Common.SendToDebug("CLR:" + eventname + ":il.Emit(OpCodes.Call..."); | 527 | //Common.SendToDebug("CLR:" + eventname + ":il.Emit(OpCodes.Call..."); |
510 | //il.Emit(OpCodes.Call, typeof(Console).GetMethod | 528 | //il.Emit(OpCodes.Call, typeof(Console).GetMethod |
@@ -520,7 +538,6 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
520 | } | 538 | } |
521 | 539 | ||
522 | 540 | ||
523 | |||
524 | // | 541 | // |
525 | // CALLING OPCODE PROCESSOR, one command at the time TO GENERATE IL | 542 | // CALLING OPCODE PROCESSOR, one command at the time TO GENERATE IL |
526 | // | 543 | // |
@@ -538,12 +555,10 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
538 | il.Emit(OpCodes.Ret); | 555 | il.Emit(OpCodes.Ret); |
539 | 556 | ||
540 | return; | 557 | return; |
541 | |||
542 | } | 558 | } |
543 | 559 | ||
544 | private void IL_INSERT_FUNCTIONLIST() | 560 | private void IL_INSERT_FUNCTIONLIST() |
545 | { | 561 | { |
546 | |||
547 | Common.SendToDebug("Creating function list"); | 562 | Common.SendToDebug("Creating function list"); |
548 | 563 | ||
549 | 564 | ||
@@ -557,11 +572,10 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
557 | //FieldBuilder mem = typeBuilder.DefineField("mem", typeof(Array), FieldAttributes.Private); | 572 | //FieldBuilder mem = typeBuilder.DefineField("mem", typeof(Array), FieldAttributes.Private); |
558 | 573 | ||
559 | 574 | ||
560 | |||
561 | MethodBuilder methodBuilder = typeBuilder.DefineMethod(eventname, | 575 | MethodBuilder methodBuilder = typeBuilder.DefineMethod(eventname, |
562 | MethodAttributes.Public, | 576 | MethodAttributes.Public, |
563 | typeof(string[]), | 577 | typeof (string[]), |
564 | null); | 578 | null); |
565 | 579 | ||
566 | //typeBuilder.DefineMethodOverride(methodBuilder, | 580 | //typeBuilder.DefineMethodOverride(methodBuilder, |
567 | // typeof(LSL_CLRInterface.LSLScript).GetMethod(eventname)); | 581 | // typeof(LSL_CLRInterface.LSLScript).GetMethod(eventname)); |
@@ -569,8 +583,6 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
569 | ILGenerator il = methodBuilder.GetILGenerator(); | 583 | ILGenerator il = methodBuilder.GetILGenerator(); |
570 | 584 | ||
571 | 585 | ||
572 | |||
573 | |||
574 | // IL_INSERT_TRY(il, eventname); | 586 | // IL_INSERT_TRY(il, eventname); |
575 | 587 | ||
576 | // // Push string to stack | 588 | // // Push string to stack |
@@ -586,37 +598,34 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
586 | 598 | ||
587 | ////il.Emit(OpCodes.Ldarg_0); | 599 | ////il.Emit(OpCodes.Ldarg_0); |
588 | 600 | ||
589 | il.DeclareLocal(typeof(string[])); | 601 | il.DeclareLocal(typeof (string[])); |
590 | 602 | ||
591 | ////il.Emit(OpCodes.Ldarg_0); | 603 | ////il.Emit(OpCodes.Ldarg_0); |
592 | il.Emit(OpCodes.Ldc_I4, EventList.Count); // Specify array length | 604 | il.Emit(OpCodes.Ldc_I4, EventList.Count); // Specify array length |
593 | il.Emit(OpCodes.Newarr, typeof(String)); // create new string array | 605 | il.Emit(OpCodes.Newarr, typeof (String)); // create new string array |
594 | il.Emit(OpCodes.Stloc_0); // Store array as local variable 0 in stack | 606 | il.Emit(OpCodes.Stloc_0); // Store array as local variable 0 in stack |
595 | ////SetFunctionList | 607 | ////SetFunctionList |
596 | 608 | ||
597 | for (int lv = 0; lv < EventList.Count; lv++) | 609 | for (int lv = 0; lv < EventList.Count; lv++) |
598 | { | 610 | { |
599 | il.Emit(OpCodes.Ldloc_0); // Load local variable 0 onto stack | 611 | il.Emit(OpCodes.Ldloc_0); // Load local variable 0 onto stack |
600 | il.Emit(OpCodes.Ldc_I4, lv); // Push index position | 612 | il.Emit(OpCodes.Ldc_I4, lv); // Push index position |
601 | il.Emit(OpCodes.Ldstr, EventList[lv]); // Push value | 613 | il.Emit(OpCodes.Ldstr, EventList[lv]); // Push value |
602 | il.Emit(OpCodes.Stelem_Ref); // Perform array[index] = value | 614 | il.Emit(OpCodes.Stelem_Ref); // Perform array[index] = value |
603 | 615 | ||
604 | //il.Emit(OpCodes.Ldarg_0); | 616 | //il.Emit(OpCodes.Ldarg_0); |
605 | //il.Emit(OpCodes.Ldstr, EventList[lv]); // Push value | 617 | //il.Emit(OpCodes.Ldstr, EventList[lv]); // Push value |
606 | //il.Emit(OpCodes.Call, typeof(LSL_BaseClass).GetMethod("AddFunction", new Type[] { typeof(string) })); | 618 | //il.Emit(OpCodes.Call, typeof(LSL_BaseClass).GetMethod("AddFunction", new Type[] { typeof(string) })); |
607 | |||
608 | } | 619 | } |
609 | 620 | ||
610 | 621 | ||
611 | |||
612 | // IL_INSERT_END_TRY(il, eventname); | 622 | // IL_INSERT_END_TRY(il, eventname); |
613 | 623 | ||
614 | 624 | ||
615 | il.Emit(OpCodes.Ldloc_0); // Load local variable 0 onto stack | 625 | il.Emit(OpCodes.Ldloc_0); // Load local variable 0 onto stack |
616 | // il.Emit(OpCodes.Call, typeof(LSL_BaseClass).GetMethod("SetFunctionList", new Type[] { typeof(Array) })); | 626 | // il.Emit(OpCodes.Call, typeof(LSL_BaseClass).GetMethod("SetFunctionList", new Type[] { typeof(Array) })); |
617 | 627 | ||
618 | il.Emit(OpCodes.Ret); // Return | 628 | il.Emit(OpCodes.Ret); // Return |
619 | |||
620 | } | 629 | } |
621 | 630 | ||
622 | 631 | ||
@@ -631,7 +640,6 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
631 | // Push "Hello World!" string to stack | 640 | // Push "Hello World!" string to stack |
632 | //Common.SendToDebug("CLR:" + eventname + ":il.Emit(OpCodes.Ldstr..."); | 641 | //Common.SendToDebug("CLR:" + eventname + ":il.Emit(OpCodes.Ldstr..."); |
633 | //il.Emit(OpCodes.Ldstr, "Starting CLR dynamic execution of: " + eventname); | 642 | //il.Emit(OpCodes.Ldstr, "Starting CLR dynamic execution of: " + eventname); |
634 | |||
635 | } | 643 | } |
636 | 644 | ||
637 | private void IL_INSERT_END_TRY(ILGenerator il, string eventname) | 645 | private void IL_INSERT_END_TRY(ILGenerator il, string eventname) |
@@ -640,7 +648,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
640 | * CATCH | 648 | * CATCH |
641 | */ | 649 | */ |
642 | Common.SendToDebug("CLR:" + eventname + ":il.BeginCatchBlock(typeof(Exception));"); | 650 | Common.SendToDebug("CLR:" + eventname + ":il.BeginCatchBlock(typeof(Exception));"); |
643 | il.BeginCatchBlock(typeof(Exception)); | 651 | il.BeginCatchBlock(typeof (Exception)); |
644 | 652 | ||
645 | // Push "Hello World!" string to stack | 653 | // Push "Hello World!" string to stack |
646 | Common.SendToDebug("CLR:" + eventname + ":il.Emit(OpCodes.Ldstr..."); | 654 | Common.SendToDebug("CLR:" + eventname + ":il.Emit(OpCodes.Ldstr..."); |
@@ -648,18 +656,18 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
648 | 656 | ||
649 | //call void [mscorlib]System.Console::WriteLine(string) | 657 | //call void [mscorlib]System.Console::WriteLine(string) |
650 | Common.SendToDebug("CLR:" + eventname + ":il.Emit(OpCodes.Call..."); | 658 | Common.SendToDebug("CLR:" + eventname + ":il.Emit(OpCodes.Call..."); |
651 | il.Emit(OpCodes.Call, typeof(Console).GetMethod | 659 | il.Emit(OpCodes.Call, typeof (Console).GetMethod |
652 | ("Write", new Type[] { typeof(string) })); | 660 | ("Write", new Type[] {typeof (string)})); |
653 | 661 | ||
654 | //callvirt instance string [mscorlib]System.Exception::get_Message() | 662 | //callvirt instance string [mscorlib]System.Exception::get_Message() |
655 | Common.SendToDebug("CLR:" + eventname + ":il.Emit(OpCodes.Callvirt..."); | 663 | Common.SendToDebug("CLR:" + eventname + ":il.Emit(OpCodes.Callvirt..."); |
656 | il.Emit(OpCodes.Callvirt, typeof(Exception).GetMethod | 664 | il.Emit(OpCodes.Callvirt, typeof (Exception).GetMethod |
657 | ("get_Message")); | 665 | ("get_Message")); |
658 | 666 | ||
659 | //call void [mscorlib]System.Console::WriteLine(string) | 667 | //call void [mscorlib]System.Console::WriteLine(string) |
660 | Common.SendToDebug("CLR:" + eventname + ":il.Emit(OpCodes.Call..."); | 668 | Common.SendToDebug("CLR:" + eventname + ":il.Emit(OpCodes.Call..."); |
661 | il.Emit(OpCodes.Call, typeof(Console).GetMethod | 669 | il.Emit(OpCodes.Call, typeof (Console).GetMethod |
662 | ("WriteLine", new Type[] { typeof(string) })); | 670 | ("WriteLine", new Type[] {typeof (string)})); |
663 | 671 | ||
664 | /* | 672 | /* |
665 | * CLR END TRY | 673 | * CLR END TRY |
@@ -673,7 +681,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
673 | long FirstPos = fs.Position; | 681 | long FirstPos = fs.Position; |
674 | try | 682 | try |
675 | { | 683 | { |
676 | UInt32 position = (UInt32)pos; | 684 | UInt32 position = (UInt32) pos; |
677 | // STATIC BLOCK | 685 | // STATIC BLOCK |
678 | Common.SendToDebug("Reading STATIC BLOCK at: " + position); | 686 | Common.SendToDebug("Reading STATIC BLOCK at: " + position); |
679 | fs.Seek(position, SeekOrigin.Begin); | 687 | fs.Seek(position, SeekOrigin.Begin); |
@@ -683,7 +691,6 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
683 | Common.SendToDebug("Found cached STATIC BLOCK"); | 691 | Common.SendToDebug("Found cached STATIC BLOCK"); |
684 | 692 | ||
685 | 693 | ||
686 | |||
687 | return StaticBlocks[pos]; | 694 | return StaticBlocks[pos]; |
688 | } | 695 | } |
689 | 696 | ||
@@ -699,7 +706,8 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
699 | LSO_Struct.StaticBlock myStaticBlock = new LSO_Struct.StaticBlock(); | 706 | LSO_Struct.StaticBlock myStaticBlock = new LSO_Struct.StaticBlock(); |
700 | myStaticBlock.Static_Chunk_Header_Size = BitConverter.ToUInt32(br_read(4), 0); | 707 | myStaticBlock.Static_Chunk_Header_Size = BitConverter.ToUInt32(br_read(4), 0); |
701 | myStaticBlock.ObjectType = br_read(1)[0]; | 708 | myStaticBlock.ObjectType = br_read(1)[0]; |
702 | Common.SendToDebug("Static Block ObjectType: " + ((LSO_Enums.Variable_Type_Codes)myStaticBlock.ObjectType).ToString()); | 709 | Common.SendToDebug("Static Block ObjectType: " + |
710 | ((LSO_Enums.Variable_Type_Codes) myStaticBlock.ObjectType).ToString()); | ||
703 | myStaticBlock.Unknown = br_read(1)[0]; | 711 | myStaticBlock.Unknown = br_read(1)[0]; |
704 | // Size of datatype varies | 712 | // Size of datatype varies |
705 | if (myStaticBlock.ObjectType != 0) | 713 | if (myStaticBlock.ObjectType != 0) |
@@ -715,8 +723,6 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
715 | // Go back to original read pos | 723 | // Go back to original read pos |
716 | fs.Seek(FirstPos, SeekOrigin.Begin); | 724 | fs.Seek(FirstPos, SeekOrigin.Begin); |
717 | } | 725 | } |
718 | |||
719 | } | 726 | } |
720 | |||
721 | } | 727 | } |
722 | } | 728 | } \ No newline at end of file |
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSO_Struct.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSO_Struct.cs index baeda38..cf64638 100644 --- a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSO_Struct.cs +++ b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSO/LSO_Struct.cs | |||
@@ -28,14 +28,13 @@ | |||
28 | /* Original code: Tedd Hansen */ | 28 | /* Original code: Tedd Hansen */ |
29 | 29 | ||
30 | using System; | 30 | using System; |
31 | using System.Collections; | ||
31 | using System.Collections.Generic; | 32 | using System.Collections.Generic; |
32 | using System.Text; | ||
33 | 33 | ||
34 | namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | 34 | namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO |
35 | { | 35 | { |
36 | static class LSO_Struct | 36 | internal static class LSO_Struct |
37 | { | 37 | { |
38 | |||
39 | public struct Header | 38 | public struct Header |
40 | { | 39 | { |
41 | public UInt32 TM; | 40 | public UInt32 TM; |
@@ -69,6 +68,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
69 | public byte Unknown; | 68 | public byte Unknown; |
70 | public byte[] BlockVariable; | 69 | public byte[] BlockVariable; |
71 | } | 70 | } |
71 | |||
72 | /* Not actually a structure | 72 | /* Not actually a structure |
73 | public struct StaticBlockVariable | 73 | public struct StaticBlockVariable |
74 | { | 74 | { |
@@ -80,6 +80,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
80 | public byte[] Rotation_16; | 80 | public byte[] Rotation_16; |
81 | public UInt32 Pointer_List_Structure; | 81 | public UInt32 Pointer_List_Structure; |
82 | } */ | 82 | } */ |
83 | |||
83 | public struct HeapBlock | 84 | public struct HeapBlock |
84 | { | 85 | { |
85 | public Int32 DataBlockSize; | 86 | public Int32 DataBlockSize; |
@@ -87,17 +88,20 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
87 | public UInt16 ReferenceCount; | 88 | public UInt16 ReferenceCount; |
88 | public byte[] Data; | 89 | public byte[] Data; |
89 | } | 90 | } |
91 | |||
90 | public struct StateFrameBlock | 92 | public struct StateFrameBlock |
91 | { | 93 | { |
92 | public UInt32 StateCount; | 94 | public UInt32 StateCount; |
93 | public StatePointerBlock[] StatePointer; | 95 | public StatePointerBlock[] StatePointer; |
94 | } | 96 | } |
97 | |||
95 | public struct StatePointerBlock | 98 | public struct StatePointerBlock |
96 | { | 99 | { |
97 | public UInt32 Location; | 100 | public UInt32 Location; |
98 | public System.Collections.BitArray EventMask; | 101 | public BitArray EventMask; |
99 | public StateBlock StateBlock; | 102 | public StateBlock StateBlock; |
100 | } | 103 | } |
104 | |||
101 | public struct StateBlock | 105 | public struct StateBlock |
102 | { | 106 | { |
103 | public UInt32 StartPos; | 107 | public UInt32 StartPos; |
@@ -106,25 +110,29 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
106 | public byte Unknown; | 110 | public byte Unknown; |
107 | public StateBlockHandler[] StateBlockHandlers; | 111 | public StateBlockHandler[] StateBlockHandlers; |
108 | } | 112 | } |
113 | |||
109 | public struct StateBlockHandler | 114 | public struct StateBlockHandler |
110 | { | 115 | { |
111 | public UInt32 CodeChunkPointer; | 116 | public UInt32 CodeChunkPointer; |
112 | public UInt32 CallFrameSize; | 117 | public UInt32 CallFrameSize; |
113 | } | 118 | } |
119 | |||
114 | public struct FunctionBlock | 120 | public struct FunctionBlock |
115 | { | 121 | { |
116 | public UInt32 FunctionCount; | 122 | public UInt32 FunctionCount; |
117 | public UInt32[] CodeChunkPointer; | 123 | public UInt32[] CodeChunkPointer; |
118 | } | 124 | } |
125 | |||
119 | public struct CodeChunk | 126 | public struct CodeChunk |
120 | { | 127 | { |
121 | public UInt32 CodeChunkHeaderSize; | 128 | public UInt32 CodeChunkHeaderSize; |
122 | public string Comment; | 129 | public string Comment; |
123 | public System.Collections.Generic.List<CodeChunkArgument> CodeChunkArguments; | 130 | public List<CodeChunkArgument> CodeChunkArguments; |
124 | public byte EndMarker; | 131 | public byte EndMarker; |
125 | public byte ReturnTypePos; | 132 | public byte ReturnTypePos; |
126 | public StaticBlock ReturnType; | 133 | public StaticBlock ReturnType; |
127 | } | 134 | } |
135 | |||
128 | public struct CodeChunkArgument | 136 | public struct CodeChunkArgument |
129 | { | 137 | { |
130 | public byte FunctionReturnTypePos; | 138 | public byte FunctionReturnTypePos; |
@@ -132,4 +140,4 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSO | |||
132 | public StaticBlock FunctionReturnType; | 140 | public StaticBlock FunctionReturnType; |
133 | } | 141 | } |
134 | } | 142 | } |
135 | } | 143 | } \ No newline at end of file |
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/Server_API/LSL_BuiltIn_Commands.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/Server_API/LSL_BuiltIn_Commands.cs index b94cf90..737dee6 100644 --- a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/Server_API/LSL_BuiltIn_Commands.cs +++ b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/Server_API/LSL_BuiltIn_Commands.cs | |||
@@ -26,19 +26,18 @@ | |||
26 | * | 26 | * |
27 | */ | 27 | */ |
28 | 28 | ||
29 | using Axiom.Math; | ||
30 | using System; | 29 | using System; |
31 | using System.Collections.Generic; | 30 | using System.Collections.Generic; |
31 | using System.Runtime.Remoting.Lifetime; | ||
32 | using System.Text; | 32 | using System.Text; |
33 | using System.Threading; | ||
34 | using Axiom.Math; | ||
33 | using libsecondlife; | 35 | using libsecondlife; |
34 | using OpenSim.Region.Environment.Scenes; | 36 | using OpenSim.Framework; |
35 | using OpenSim.Region.Environment.Scenes.Scripting; | ||
36 | using OpenSim.Region.Environment.Interfaces; | 37 | using OpenSim.Region.Environment.Interfaces; |
37 | using OpenSim.Region.ScriptEngine.DotNetEngine.Compiler; | 38 | using OpenSim.Region.Environment.Scenes; |
38 | using OpenSim.Region.ScriptEngine.Common; | 39 | using OpenSim.Region.ScriptEngine.Common; |
39 | using OpenSim.Framework.Console; | 40 | using OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL; |
40 | using OpenSim.Framework; | ||
41 | using System.Runtime.Remoting.Lifetime; | ||
42 | 41 | ||
43 | namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler | 42 | namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler |
44 | { | 43 | { |
@@ -53,8 +52,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler | |||
53 | /// </summary> | 52 | /// </summary> |
54 | public class LSL_BuiltIn_Commands : MarshalByRefObject, LSL_BuiltIn_Commands_Interface | 53 | public class LSL_BuiltIn_Commands : MarshalByRefObject, LSL_BuiltIn_Commands_Interface |
55 | { | 54 | { |
56 | 55 | private ASCIIEncoding enc = new ASCIIEncoding(); | |
57 | private System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding(); | ||
58 | private ScriptEngine m_ScriptEngine; | 56 | private ScriptEngine m_ScriptEngine; |
59 | private SceneObjectPart m_host; | 57 | private SceneObjectPart m_host; |
60 | private uint m_localID; | 58 | private uint m_localID; |
@@ -86,7 +84,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler | |||
86 | { | 84 | { |
87 | //Console.WriteLine("LSL_BuiltIn_Commands: InitializeLifetimeService()"); | 85 | //Console.WriteLine("LSL_BuiltIn_Commands: InitializeLifetimeService()"); |
88 | // return null; | 86 | // return null; |
89 | ILease lease = (ILease)base.InitializeLifetimeService(); | 87 | ILease lease = (ILease) base.InitializeLifetimeService(); |
90 | 88 | ||
91 | if (lease.CurrentState == LeaseState.Initial) | 89 | if (lease.CurrentState == LeaseState.Initial) |
92 | { | 90 | { |
@@ -105,79 +103,130 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler | |||
105 | 103 | ||
106 | //These are the implementations of the various ll-functions used by the LSL scripts. | 104 | //These are the implementations of the various ll-functions used by the LSL scripts. |
107 | //starting out, we use the System.Math library for trig functions. - ckrinke 8-14-07 | 105 | //starting out, we use the System.Math library for trig functions. - ckrinke 8-14-07 |
108 | public double llSin(double f) { return (double)Math.Sin(f); } | 106 | public double llSin(double f) |
109 | public double llCos(double f) { return (double)Math.Cos(f); } | 107 | { |
110 | public double llTan(double f) { return (double)Math.Tan(f); } | 108 | return (double) Math.Sin(f); |
111 | public double llAtan2(double x, double y) { return (double)Math.Atan2(y, x); } | 109 | } |
112 | public double llSqrt(double f) { return (double)Math.Sqrt(f); } | 110 | |
113 | public double llPow(double fbase, double fexponent) { return (double)Math.Pow(fbase, fexponent); } | 111 | public double llCos(double f) |
114 | public int llAbs(int i) { return (int)Math.Abs(i); } | 112 | { |
115 | public double llFabs(double f) { return (double)Math.Abs(f); } | 113 | return (double) Math.Cos(f); |
114 | } | ||
115 | |||
116 | public double llTan(double f) | ||
117 | { | ||
118 | return (double) Math.Tan(f); | ||
119 | } | ||
120 | |||
121 | public double llAtan2(double x, double y) | ||
122 | { | ||
123 | return (double) Math.Atan2(y, x); | ||
124 | } | ||
125 | |||
126 | public double llSqrt(double f) | ||
127 | { | ||
128 | return (double) Math.Sqrt(f); | ||
129 | } | ||
130 | |||
131 | public double llPow(double fbase, double fexponent) | ||
132 | { | ||
133 | return (double) Math.Pow(fbase, fexponent); | ||
134 | } | ||
135 | |||
136 | public int llAbs(int i) | ||
137 | { | ||
138 | return (int) Math.Abs(i); | ||
139 | } | ||
140 | |||
141 | public double llFabs(double f) | ||
142 | { | ||
143 | return (double) Math.Abs(f); | ||
144 | } | ||
116 | 145 | ||
117 | public double llFrand(double mag) | 146 | public double llFrand(double mag) |
118 | { | 147 | { |
119 | lock (Util.RandomClass) | 148 | lock (Util.RandomClass) |
120 | { | 149 | { |
121 | return Util.RandomClass.Next((int)mag); | 150 | return Util.RandomClass.Next((int) mag); |
122 | } | 151 | } |
123 | } | 152 | } |
124 | 153 | ||
125 | public int llFloor(double f) { return (int)Math.Floor(f); } | 154 | public int llFloor(double f) |
126 | public int llCeil(double f) { return (int)Math.Ceiling(f); } | 155 | { |
127 | public int llRound(double f) { return (int)Math.Round(f, 3); } | 156 | return (int) Math.Floor(f); |
157 | } | ||
158 | |||
159 | public int llCeil(double f) | ||
160 | { | ||
161 | return (int) Math.Ceiling(f); | ||
162 | } | ||
163 | |||
164 | public int llRound(double f) | ||
165 | { | ||
166 | return (int) Math.Round(f, 3); | ||
167 | } | ||
128 | 168 | ||
129 | //This next group are vector operations involving squaring and square root. ckrinke | 169 | //This next group are vector operations involving squaring and square root. ckrinke |
130 | public double llVecMag(LSL_Types.Vector3 v) | 170 | public double llVecMag(LSL_Types.Vector3 v) |
131 | { | 171 | { |
132 | return (v.X * v.X + v.Y * v.Y + v.Z * v.Z); | 172 | return (v.X*v.X + v.Y*v.Y + v.Z*v.Z); |
133 | } | 173 | } |
134 | 174 | ||
135 | public LSL_Types.Vector3 llVecNorm(LSL_Types.Vector3 v) | 175 | public LSL_Types.Vector3 llVecNorm(LSL_Types.Vector3 v) |
136 | { | 176 | { |
137 | double mag = v.X * v.X + v.Y * v.Y + v.Z * v.Z; | 177 | double mag = v.X*v.X + v.Y*v.Y + v.Z*v.Z; |
138 | LSL_Types.Vector3 nor = new LSL_Types.Vector3(); | 178 | LSL_Types.Vector3 nor = new LSL_Types.Vector3(); |
139 | nor.X = v.X / mag; nor.Y = v.Y / mag; nor.Z = v.Z / mag; | 179 | nor.X = v.X/mag; |
180 | nor.Y = v.Y/mag; | ||
181 | nor.Z = v.Z/mag; | ||
140 | return nor; | 182 | return nor; |
141 | } | 183 | } |
142 | 184 | ||
143 | public double llVecDist(LSL_Types.Vector3 a, LSL_Types.Vector3 b) | 185 | public double llVecDist(LSL_Types.Vector3 a, LSL_Types.Vector3 b) |
144 | { | 186 | { |
145 | double dx = a.X - b.X; double dy = a.Y - b.Y; double dz = a.Z - b.Z; | 187 | double dx = a.X - b.X; |
146 | return Math.Sqrt(dx * dx + dy * dy + dz * dz); | 188 | double dy = a.Y - b.Y; |
189 | double dz = a.Z - b.Z; | ||
190 | return Math.Sqrt(dx*dx + dy*dy + dz*dz); | ||
147 | } | 191 | } |
148 | 192 | ||
149 | //Now we start getting into quaternions which means sin/cos, matrices and vectors. ckrinke | 193 | //Now we start getting into quaternions which means sin/cos, matrices and vectors. ckrinke |
150 | public LSL_Types.Vector3 llRot2Euler(LSL_Types.Quaternion r) | 194 | public LSL_Types.Vector3 llRot2Euler(LSL_Types.Quaternion r) |
151 | { | 195 | { |
152 | //This implementation is from http://lslwiki.net/lslwiki/wakka.php?wakka=LibraryRotationFunctions. ckrinke | 196 | //This implementation is from http://lslwiki.net/lslwiki/wakka.php?wakka=LibraryRotationFunctions. ckrinke |
153 | LSL_Types.Quaternion t = new LSL_Types.Quaternion(r.X * r.X, r.Y * r.Y, r.Z * r.Z, r.R * r.R); | 197 | LSL_Types.Quaternion t = new LSL_Types.Quaternion(r.X*r.X, r.Y*r.Y, r.Z*r.Z, r.R*r.R); |
154 | double m = (t.X + t.Y + t.Z + t.R); | 198 | double m = (t.X + t.Y + t.Z + t.R); |
155 | if (m == 0) return new LSL_Types.Vector3(); | 199 | if (m == 0) return new LSL_Types.Vector3(); |
156 | double n = 2 * (r.Y * r.R + r.X * r.Z); | 200 | double n = 2*(r.Y*r.R + r.X*r.Z); |
157 | double p = m * m - n * n; | 201 | double p = m*m - n*n; |
158 | if (p > 0) | 202 | if (p > 0) |
159 | return new LSL_Types.Vector3(Math.Atan2(2.0 * (r.X * r.R - r.Y * r.Z), (-t.X - t.Y + t.Z + t.R)), | 203 | return new LSL_Types.Vector3(Math.Atan2(2.0*(r.X*r.R - r.Y*r.Z), (-t.X - t.Y + t.Z + t.R)), |
160 | Math.Atan2(n, Math.Sqrt(p)), Math.Atan2(2.0 * (r.Z * r.R - r.X * r.Y), (t.X - t.Y - t.Z + t.R))); | 204 | Math.Atan2(n, Math.Sqrt(p)), |
205 | Math.Atan2(2.0*(r.Z*r.R - r.X*r.Y), (t.X - t.Y - t.Z + t.R))); | ||
161 | else if (n > 0) | 206 | else if (n > 0) |
162 | return new LSL_Types.Vector3(0.0, Math.PI / 2, Math.Atan2((r.Z * r.R + r.X * r.Y), 0.5 - t.X - t.Z)); | 207 | return new LSL_Types.Vector3(0.0, Math.PI/2, Math.Atan2((r.Z*r.R + r.X*r.Y), 0.5 - t.X - t.Z)); |
163 | else | 208 | else |
164 | return new LSL_Types.Vector3(0.0, -Math.PI / 2, Math.Atan2((r.Z * r.R + r.X * r.Y), 0.5 - t.X - t.Z)); | 209 | return new LSL_Types.Vector3(0.0, -Math.PI/2, Math.Atan2((r.Z*r.R + r.X*r.Y), 0.5 - t.X - t.Z)); |
165 | } | 210 | } |
166 | 211 | ||
167 | public LSL_Types.Quaternion llEuler2Rot(LSL_Types.Vector3 v) | 212 | public LSL_Types.Quaternion llEuler2Rot(LSL_Types.Vector3 v) |
168 | { | 213 | { |
169 | //this comes from from http://lslwiki.net/lslwiki/wakka.php?wakka=LibraryRotationFunctions but is incomplete as of 8/19/07 | 214 | //this comes from from http://lslwiki.net/lslwiki/wakka.php?wakka=LibraryRotationFunctions but is incomplete as of 8/19/07 |
170 | float err = 0.00001f; | 215 | float err = 0.00001f; |
171 | double ax = Math.Sin(v.X / 2); double aw = Math.Cos(v.X / 2); | 216 | double ax = Math.Sin(v.X/2); |
172 | double by = Math.Sin(v.Y / 2); double bw = Math.Cos(v.Y / 2); | 217 | double aw = Math.Cos(v.X/2); |
173 | double cz = Math.Sin(v.Z / 2); double cw = Math.Cos(v.Z / 2); | 218 | double by = Math.Sin(v.Y/2); |
219 | double bw = Math.Cos(v.Y/2); | ||
220 | double cz = Math.Sin(v.Z/2); | ||
221 | double cw = Math.Cos(v.Z/2); | ||
174 | LSL_Types.Quaternion a1 = new LSL_Types.Quaternion(0.0, 0.0, cz, cw); | 222 | LSL_Types.Quaternion a1 = new LSL_Types.Quaternion(0.0, 0.0, cz, cw); |
175 | LSL_Types.Quaternion a2 = new LSL_Types.Quaternion(0.0, by, 0.0, bw); | 223 | LSL_Types.Quaternion a2 = new LSL_Types.Quaternion(0.0, by, 0.0, bw); |
176 | LSL_Types.Quaternion a3 = new LSL_Types.Quaternion(ax, 0.0, 0.0, aw); | 224 | LSL_Types.Quaternion a3 = new LSL_Types.Quaternion(ax, 0.0, 0.0, aw); |
177 | LSL_Types.Quaternion a = new LSL_Types.Quaternion(); | 225 | LSL_Types.Quaternion a = new LSL_Types.Quaternion(); |
178 | //This multiplication doesnt compile, yet. a = a1 * a2 * a3; | 226 | //This multiplication doesnt compile, yet. a = a1 * a2 * a3; |
179 | LSL_Types.Quaternion b = new LSL_Types.Quaternion(ax * bw * cw + aw * by * cz, | 227 | LSL_Types.Quaternion b = new LSL_Types.Quaternion(ax*bw*cw + aw*by*cz, |
180 | aw * by * cw - ax * bw * cz, aw * bw * cz + ax * by * cw, aw * bw * cw - ax * by * cz); | 228 | aw*by*cw - ax*bw*cz, aw*bw*cz + ax*by*cw, |
229 | aw*bw*cw - ax*by*cz); | ||
181 | LSL_Types.Quaternion c = new LSL_Types.Quaternion(); | 230 | LSL_Types.Quaternion c = new LSL_Types.Quaternion(); |
182 | //This addition doesnt compile yet c = a + b; | 231 | //This addition doesnt compile yet c = a + b; |
183 | LSL_Types.Quaternion d = new LSL_Types.Quaternion(); | 232 | LSL_Types.Quaternion d = new LSL_Types.Quaternion(); |
@@ -194,11 +243,30 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler | |||
194 | return new LSL_Types.Quaternion(); | 243 | return new LSL_Types.Quaternion(); |
195 | } | 244 | } |
196 | 245 | ||
197 | public LSL_Types.Quaternion llAxes2Rot(LSL_Types.Vector3 fwd, LSL_Types.Vector3 left, LSL_Types.Vector3 up) { return new LSL_Types.Quaternion(); } | 246 | public LSL_Types.Quaternion llAxes2Rot(LSL_Types.Vector3 fwd, LSL_Types.Vector3 left, LSL_Types.Vector3 up) |
198 | public LSL_Types.Vector3 llRot2Fwd(LSL_Types.Quaternion r) { return new LSL_Types.Vector3(); } | 247 | { |
199 | public LSL_Types.Vector3 llRot2Left(LSL_Types.Quaternion r) { return new LSL_Types.Vector3(); } | 248 | return new LSL_Types.Quaternion(); |
200 | public LSL_Types.Vector3 llRot2Up(LSL_Types.Quaternion r) { return new LSL_Types.Vector3(); } | 249 | } |
201 | public LSL_Types.Quaternion llRotBetween(LSL_Types.Vector3 start, LSL_Types.Vector3 end) { return new LSL_Types.Quaternion(); } | 250 | |
251 | public LSL_Types.Vector3 llRot2Fwd(LSL_Types.Quaternion r) | ||
252 | { | ||
253 | return new LSL_Types.Vector3(); | ||
254 | } | ||
255 | |||
256 | public LSL_Types.Vector3 llRot2Left(LSL_Types.Quaternion r) | ||
257 | { | ||
258 | return new LSL_Types.Vector3(); | ||
259 | } | ||
260 | |||
261 | public LSL_Types.Vector3 llRot2Up(LSL_Types.Quaternion r) | ||
262 | { | ||
263 | return new LSL_Types.Vector3(); | ||
264 | } | ||
265 | |||
266 | public LSL_Types.Quaternion llRotBetween(LSL_Types.Vector3 start, LSL_Types.Vector3 end) | ||
267 | { | ||
268 | return new LSL_Types.Quaternion(); | ||
269 | } | ||
202 | 270 | ||
203 | public void llWhisper(int channelID, string text) | 271 | public void llWhisper(int channelID, string text) |
204 | { | 272 | { |
@@ -214,7 +282,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler | |||
214 | { | 282 | { |
215 | //type for say is 1 | 283 | //type for say is 1 |
216 | World.SimChat(Helpers.StringToField(text), | 284 | World.SimChat(Helpers.StringToField(text), |
217 | 1, channelID, m_host.AbsolutePosition, m_host.Name, m_host.UUID); | 285 | 1, channelID, m_host.AbsolutePosition, m_host.Name, m_host.UUID); |
218 | 286 | ||
219 | IWorldComm wComm = m_ScriptEngine.World.RequestModuleInterface<IWorldComm>(); | 287 | IWorldComm wComm = m_ScriptEngine.World.RequestModuleInterface<IWorldComm>(); |
220 | wComm.DeliverMessage(m_host.UUID.ToString(), 1, channelID, m_host.Name, text); | 288 | wComm.DeliverMessage(m_host.UUID.ToString(), 1, channelID, m_host.Name, text); |
@@ -230,82 +298,217 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler | |||
230 | wComm.DeliverMessage(m_host.UUID.ToString(), 2, channelID, m_host.Name, text); | 298 | wComm.DeliverMessage(m_host.UUID.ToString(), 2, channelID, m_host.Name, text); |
231 | } | 299 | } |
232 | 300 | ||
233 | public int llListen(int channelID, string name, string ID, string msg) { | 301 | public int llListen(int channelID, string name, string ID, string msg) |
234 | 302 | { | |
235 | IWorldComm wComm = m_ScriptEngine.World.RequestModuleInterface<IWorldComm>(); | 303 | IWorldComm wComm = m_ScriptEngine.World.RequestModuleInterface<IWorldComm>(); |
236 | return wComm.Listen(m_localID, m_itemID, m_host.UUID, channelID, name, ID, msg); | 304 | return wComm.Listen(m_localID, m_itemID, m_host.UUID, channelID, name, ID, msg); |
237 | |||
238 | } | 305 | } |
239 | 306 | ||
240 | public void llListenControl(int number, int active) { | 307 | public void llListenControl(int number, int active) |
241 | 308 | { | |
242 | IWorldComm wComm = m_ScriptEngine.World.RequestModuleInterface<IWorldComm>(); | 309 | IWorldComm wComm = m_ScriptEngine.World.RequestModuleInterface<IWorldComm>(); |
243 | wComm.ListenControl(number, active); | 310 | wComm.ListenControl(number, active); |
244 | |||
245 | } | 311 | } |
246 | 312 | ||
247 | public void llListenRemove(int number) { | 313 | public void llListenRemove(int number) |
248 | 314 | { | |
249 | IWorldComm wComm = m_ScriptEngine.World.RequestModuleInterface<IWorldComm>(); | 315 | IWorldComm wComm = m_ScriptEngine.World.RequestModuleInterface<IWorldComm>(); |
250 | wComm.ListenRemove(number); | 316 | wComm.ListenRemove(number); |
251 | 317 | } | |
252 | } | 318 | |
253 | 319 | public void llSensor(string name, string id, int type, double range, double arc) | |
254 | public void llSensor(string name, string id, int type, double range, double arc) { NotImplemented("llSensor"); return; } | 320 | { |
255 | public void llSensorRepeat(string name, string id, int type, double range, double arc, double rate) { NotImplemented("llSensorRepeat"); return; } | 321 | NotImplemented("llSensor"); |
256 | public void llSensorRemove() { NotImplemented("llSensorRemove"); return; } | 322 | return; |
257 | public string llDetectedName(int number) { NotImplemented("llDetectedName"); return ""; } | 323 | } |
258 | public string llDetectedKey(int number) { NotImplemented("llDetectedKey"); return ""; } | 324 | |
259 | public string llDetectedOwner(int number) { NotImplemented("llDetectedOwner"); return ""; } | 325 | public void llSensorRepeat(string name, string id, int type, double range, double arc, double rate) |
260 | public int llDetectedType(int number) { NotImplemented("llDetectedType"); return 0; } | 326 | { |
261 | public LSL_Types.Vector3 llDetectedPos(int number) { NotImplemented("llDetectedPos"); return new LSL_Types.Vector3(); } | 327 | NotImplemented("llSensorRepeat"); |
262 | public LSL_Types.Vector3 llDetectedVel(int number) { NotImplemented("llDetectedVel"); return new LSL_Types.Vector3(); } | 328 | return; |
263 | public LSL_Types.Vector3 llDetectedGrab(int number) { NotImplemented("llDetectedGrab"); return new LSL_Types.Vector3(); } | 329 | } |
264 | public LSL_Types.Quaternion llDetectedRot(int number) { NotImplemented("llDetectedRot"); return new LSL_Types.Quaternion(); } | 330 | |
265 | public int llDetectedGroup(int number) { NotImplemented("llDetectedGroup"); return 0; } | 331 | public void llSensorRemove() |
266 | public int llDetectedLinkNumber(int number) { NotImplemented("llDetectedLinkNumber"); return 0; } | 332 | { |
267 | public void llDie() { NotImplemented("llDie"); return; } | 333 | NotImplemented("llSensorRemove"); |
268 | public double llGround(LSL_Types.Vector3 offset) { NotImplemented("llGround"); return 0; } | 334 | return; |
269 | public double llCloud(LSL_Types.Vector3 offset) { NotImplemented("llCloud"); return 0; } | 335 | } |
270 | public LSL_Types.Vector3 llWind(LSL_Types.Vector3 offset) { NotImplemented("llWind"); return new LSL_Types.Vector3(); } | 336 | |
271 | public void llSetStatus(int status, int value) { NotImplemented("llSetStatus"); return; } | 337 | public string llDetectedName(int number) |
272 | public int llGetStatus(int status) { NotImplemented("llGetStatus"); return 0; } | 338 | { |
339 | NotImplemented("llDetectedName"); | ||
340 | return ""; | ||
341 | } | ||
342 | |||
343 | public string llDetectedKey(int number) | ||
344 | { | ||
345 | NotImplemented("llDetectedKey"); | ||
346 | return ""; | ||
347 | } | ||
348 | |||
349 | public string llDetectedOwner(int number) | ||
350 | { | ||
351 | NotImplemented("llDetectedOwner"); | ||
352 | return ""; | ||
353 | } | ||
354 | |||
355 | public int llDetectedType(int number) | ||
356 | { | ||
357 | NotImplemented("llDetectedType"); | ||
358 | return 0; | ||
359 | } | ||
360 | |||
361 | public LSL_Types.Vector3 llDetectedPos(int number) | ||
362 | { | ||
363 | NotImplemented("llDetectedPos"); | ||
364 | return new LSL_Types.Vector3(); | ||
365 | } | ||
366 | |||
367 | public LSL_Types.Vector3 llDetectedVel(int number) | ||
368 | { | ||
369 | NotImplemented("llDetectedVel"); | ||
370 | return new LSL_Types.Vector3(); | ||
371 | } | ||
372 | |||
373 | public LSL_Types.Vector3 llDetectedGrab(int number) | ||
374 | { | ||
375 | NotImplemented("llDetectedGrab"); | ||
376 | return new LSL_Types.Vector3(); | ||
377 | } | ||
378 | |||
379 | public LSL_Types.Quaternion llDetectedRot(int number) | ||
380 | { | ||
381 | NotImplemented("llDetectedRot"); | ||
382 | return new LSL_Types.Quaternion(); | ||
383 | } | ||
384 | |||
385 | public int llDetectedGroup(int number) | ||
386 | { | ||
387 | NotImplemented("llDetectedGroup"); | ||
388 | return 0; | ||
389 | } | ||
390 | |||
391 | public int llDetectedLinkNumber(int number) | ||
392 | { | ||
393 | NotImplemented("llDetectedLinkNumber"); | ||
394 | return 0; | ||
395 | } | ||
396 | |||
397 | public void llDie() | ||
398 | { | ||
399 | NotImplemented("llDie"); | ||
400 | return; | ||
401 | } | ||
402 | |||
403 | public double llGround(LSL_Types.Vector3 offset) | ||
404 | { | ||
405 | NotImplemented("llGround"); | ||
406 | return 0; | ||
407 | } | ||
408 | |||
409 | public double llCloud(LSL_Types.Vector3 offset) | ||
410 | { | ||
411 | NotImplemented("llCloud"); | ||
412 | return 0; | ||
413 | } | ||
414 | |||
415 | public LSL_Types.Vector3 llWind(LSL_Types.Vector3 offset) | ||
416 | { | ||
417 | NotImplemented("llWind"); | ||
418 | return new LSL_Types.Vector3(); | ||
419 | } | ||
420 | |||
421 | public void llSetStatus(int status, int value) | ||
422 | { | ||
423 | NotImplemented("llSetStatus"); | ||
424 | return; | ||
425 | } | ||
426 | |||
427 | public int llGetStatus(int status) | ||
428 | { | ||
429 | NotImplemented("llGetStatus"); | ||
430 | return 0; | ||
431 | } | ||
273 | 432 | ||
274 | public void llSetScale(LSL_Types.Vector3 scale) | 433 | public void llSetScale(LSL_Types.Vector3 scale) |
275 | { | 434 | { |
276 | // TODO: this needs to trigger a persistance save as well | 435 | // TODO: this needs to trigger a persistance save as well |
277 | LLVector3 tmp = m_host.Scale; | 436 | LLVector3 tmp = m_host.Scale; |
278 | tmp.X = (float)scale.X; | 437 | tmp.X = (float) scale.X; |
279 | tmp.Y = (float)scale.Y; | 438 | tmp.Y = (float) scale.Y; |
280 | tmp.Z = (float)scale.Z; | 439 | tmp.Z = (float) scale.Z; |
281 | m_host.Scale = tmp; | 440 | m_host.Scale = tmp; |
282 | return; | 441 | return; |
283 | } | 442 | } |
443 | |||
284 | public LSL_Types.Vector3 llGetScale() | 444 | public LSL_Types.Vector3 llGetScale() |
285 | { | 445 | { |
286 | return new LSL_Types.Vector3(m_host.Scale.X, m_host.Scale.Y, m_host.Scale.Z); | 446 | return new LSL_Types.Vector3(m_host.Scale.X, m_host.Scale.Y, m_host.Scale.Z); |
287 | } | 447 | } |
288 | 448 | ||
289 | public void llSetColor(LSL_Types.Vector3 color, int face) { NotImplemented("llSetColor"); return; } | 449 | public void llSetColor(LSL_Types.Vector3 color, int face) |
290 | public double llGetAlpha(int face) { NotImplemented("llGetAlpha"); return 0; } | 450 | { |
291 | public void llSetAlpha(double alpha, int face) { NotImplemented("llSetAlpha"); return; } | 451 | NotImplemented("llSetColor"); |
292 | public LSL_Types.Vector3 llGetColor(int face) { NotImplemented("llGetColor"); return new LSL_Types.Vector3(); } | 452 | return; |
293 | public void llSetTexture(string texture, int face) { NotImplemented("llSetTexture"); return; } | 453 | } |
294 | public void llScaleTexture(double u, double v, int face) { NotImplemented("llScaleTexture"); return; } | 454 | |
295 | public void llOffsetTexture(double u, double v, int face) { NotImplemented("llOffsetTexture"); return; } | 455 | public double llGetAlpha(int face) |
296 | public void llRotateTexture(double rotation, int face) { NotImplemented("llRotateTexture"); return; } | 456 | { |
457 | NotImplemented("llGetAlpha"); | ||
458 | return 0; | ||
459 | } | ||
460 | |||
461 | public void llSetAlpha(double alpha, int face) | ||
462 | { | ||
463 | NotImplemented("llSetAlpha"); | ||
464 | return; | ||
465 | } | ||
466 | |||
467 | public LSL_Types.Vector3 llGetColor(int face) | ||
468 | { | ||
469 | NotImplemented("llGetColor"); | ||
470 | return new LSL_Types.Vector3(); | ||
471 | } | ||
472 | |||
473 | public void llSetTexture(string texture, int face) | ||
474 | { | ||
475 | NotImplemented("llSetTexture"); | ||
476 | return; | ||
477 | } | ||
478 | |||
479 | public void llScaleTexture(double u, double v, int face) | ||
480 | { | ||
481 | NotImplemented("llScaleTexture"); | ||
482 | return; | ||
483 | } | ||
484 | |||
485 | public void llOffsetTexture(double u, double v, int face) | ||
486 | { | ||
487 | NotImplemented("llOffsetTexture"); | ||
488 | return; | ||
489 | } | ||
297 | 490 | ||
298 | public string llGetTexture(int face) { NotImplemented("llGetTexture"); return ""; } | 491 | public void llRotateTexture(double rotation, int face) |
492 | { | ||
493 | NotImplemented("llRotateTexture"); | ||
494 | return; | ||
495 | } | ||
496 | |||
497 | public string llGetTexture(int face) | ||
498 | { | ||
499 | NotImplemented("llGetTexture"); | ||
500 | return ""; | ||
501 | } | ||
299 | 502 | ||
300 | public void llSetPos(LSL_Types.Vector3 pos) | 503 | public void llSetPos(LSL_Types.Vector3 pos) |
301 | { | 504 | { |
302 | if (m_host.ParentID != 0) | 505 | if (m_host.ParentID != 0) |
303 | { | 506 | { |
304 | m_host.UpdateOffSet(new LLVector3((float)pos.X, (float)pos.Y, (float)pos.Z)); | 507 | m_host.UpdateOffSet(new LLVector3((float) pos.X, (float) pos.Y, (float) pos.Z)); |
305 | } | 508 | } |
306 | else | 509 | else |
307 | { | 510 | { |
308 | m_host.UpdateGroupPosition(new LLVector3((float)pos.X, (float)pos.Y, (float)pos.Z)); | 511 | m_host.UpdateGroupPosition(new LLVector3((float) pos.X, (float) pos.Y, (float) pos.Z)); |
309 | } | 512 | } |
310 | } | 513 | } |
311 | 514 | ||
@@ -331,51 +534,183 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler | |||
331 | m_host.AbsolutePosition.Z); | 534 | m_host.AbsolutePosition.Z); |
332 | } | 535 | } |
333 | } | 536 | } |
537 | |||
334 | public void llSetRot(LSL_Types.Quaternion rot) | 538 | public void llSetRot(LSL_Types.Quaternion rot) |
335 | { | 539 | { |
336 | m_host.UpdateRotation(new LLQuaternion((float)rot.X, (float)rot.Y, (float)rot.Z, (float)rot.R)); | 540 | m_host.UpdateRotation(new LLQuaternion((float) rot.X, (float) rot.Y, (float) rot.Z, (float) rot.R)); |
337 | } | 541 | } |
542 | |||
338 | public LSL_Types.Quaternion llGetRot() | 543 | public LSL_Types.Quaternion llGetRot() |
339 | { | 544 | { |
340 | LLQuaternion q = m_host.RotationOffset; | 545 | LLQuaternion q = m_host.RotationOffset; |
341 | return new LSL_Types.Quaternion(q.X, q.Y, q.Z, q.W); | 546 | return new LSL_Types.Quaternion(q.X, q.Y, q.Z, q.W); |
342 | } | 547 | } |
343 | public LSL_Types.Quaternion llGetLocalRot() { NotImplemented("llGetLocalRot"); return new LSL_Types.Quaternion(); } | 548 | |
344 | public void llSetForce(LSL_Types.Vector3 force, int local) { NotImplemented("llSetForce"); } | 549 | public LSL_Types.Quaternion llGetLocalRot() |
345 | public LSL_Types.Vector3 llGetForce() { NotImplemented("llGetForce"); return new LSL_Types.Vector3(); } | 550 | { |
346 | public int llTarget(LSL_Types.Vector3 position, double range) { NotImplemented("llTarget"); return 0; } | 551 | NotImplemented("llGetLocalRot"); |
347 | public void llTargetRemove(int number) { NotImplemented("llTargetRemove"); } | 552 | return new LSL_Types.Quaternion(); |
348 | public int llRotTarget(LSL_Types.Quaternion rot, double error) { NotImplemented("llRotTarget"); return 0; } | 553 | } |
349 | public void llRotTargetRemove(int number) { NotImplemented("llRotTargetRemove"); } | 554 | |
350 | public void llMoveToTarget(LSL_Types.Vector3 target, double tau) { NotImplemented("llMoveToTarget"); } | 555 | public void llSetForce(LSL_Types.Vector3 force, int local) |
351 | public void llStopMoveToTarget() { NotImplemented("llStopMoveToTarget"); } | 556 | { |
352 | public void llApplyImpulse(LSL_Types.Vector3 force, int local) { NotImplemented("llApplyImpulse"); } | 557 | NotImplemented("llSetForce"); |
353 | public void llApplyRotationalImpulse(LSL_Types.Vector3 force, int local) { NotImplemented("llApplyRotationalImpulse"); } | 558 | } |
354 | public void llSetTorque(LSL_Types.Vector3 torque, int local) { NotImplemented("llSetTorque"); } | 559 | |
355 | public LSL_Types.Vector3 llGetTorque() { NotImplemented("llGetTorque"); return new LSL_Types.Vector3(); } | 560 | public LSL_Types.Vector3 llGetForce() |
356 | public void llSetForceAndTorque(LSL_Types.Vector3 force, LSL_Types.Vector3 torque, int local) { NotImplemented("llSetForceAndTorque"); } | 561 | { |
357 | public LSL_Types.Vector3 llGetVel() { NotImplemented("llGetVel"); return new LSL_Types.Vector3(); } | 562 | NotImplemented("llGetForce"); |
358 | public LSL_Types.Vector3 llGetAccel() { NotImplemented("llGetAccel"); return new LSL_Types.Vector3(); } | 563 | return new LSL_Types.Vector3(); |
359 | public LSL_Types.Vector3 llGetOmega() { NotImplemented("llGetOmega"); return new LSL_Types.Vector3(); } | 564 | } |
360 | public double llGetTimeOfDay() { NotImplemented("llGetTimeOfDay"); return 0; } | 565 | |
566 | public int llTarget(LSL_Types.Vector3 position, double range) | ||
567 | { | ||
568 | NotImplemented("llTarget"); | ||
569 | return 0; | ||
570 | } | ||
571 | |||
572 | public void llTargetRemove(int number) | ||
573 | { | ||
574 | NotImplemented("llTargetRemove"); | ||
575 | } | ||
576 | |||
577 | public int llRotTarget(LSL_Types.Quaternion rot, double error) | ||
578 | { | ||
579 | NotImplemented("llRotTarget"); | ||
580 | return 0; | ||
581 | } | ||
582 | |||
583 | public void llRotTargetRemove(int number) | ||
584 | { | ||
585 | NotImplemented("llRotTargetRemove"); | ||
586 | } | ||
587 | |||
588 | public void llMoveToTarget(LSL_Types.Vector3 target, double tau) | ||
589 | { | ||
590 | NotImplemented("llMoveToTarget"); | ||
591 | } | ||
592 | |||
593 | public void llStopMoveToTarget() | ||
594 | { | ||
595 | NotImplemented("llStopMoveToTarget"); | ||
596 | } | ||
597 | |||
598 | public void llApplyImpulse(LSL_Types.Vector3 force, int local) | ||
599 | { | ||
600 | NotImplemented("llApplyImpulse"); | ||
601 | } | ||
602 | |||
603 | public void llApplyRotationalImpulse(LSL_Types.Vector3 force, int local) | ||
604 | { | ||
605 | NotImplemented("llApplyRotationalImpulse"); | ||
606 | } | ||
607 | |||
608 | public void llSetTorque(LSL_Types.Vector3 torque, int local) | ||
609 | { | ||
610 | NotImplemented("llSetTorque"); | ||
611 | } | ||
612 | |||
613 | public LSL_Types.Vector3 llGetTorque() | ||
614 | { | ||
615 | NotImplemented("llGetTorque"); | ||
616 | return new LSL_Types.Vector3(); | ||
617 | } | ||
618 | |||
619 | public void llSetForceAndTorque(LSL_Types.Vector3 force, LSL_Types.Vector3 torque, int local) | ||
620 | { | ||
621 | NotImplemented("llSetForceAndTorque"); | ||
622 | } | ||
623 | |||
624 | public LSL_Types.Vector3 llGetVel() | ||
625 | { | ||
626 | NotImplemented("llGetVel"); | ||
627 | return new LSL_Types.Vector3(); | ||
628 | } | ||
629 | |||
630 | public LSL_Types.Vector3 llGetAccel() | ||
631 | { | ||
632 | NotImplemented("llGetAccel"); | ||
633 | return new LSL_Types.Vector3(); | ||
634 | } | ||
635 | |||
636 | public LSL_Types.Vector3 llGetOmega() | ||
637 | { | ||
638 | NotImplemented("llGetOmega"); | ||
639 | return new LSL_Types.Vector3(); | ||
640 | } | ||
641 | |||
642 | public double llGetTimeOfDay() | ||
643 | { | ||
644 | NotImplemented("llGetTimeOfDay"); | ||
645 | return 0; | ||
646 | } | ||
361 | 647 | ||
362 | public double llGetWallclock() | 648 | public double llGetWallclock() |
363 | { | 649 | { |
364 | return DateTime.Now.TimeOfDay.TotalSeconds; | 650 | return DateTime.Now.TimeOfDay.TotalSeconds; |
365 | } | 651 | } |
366 | 652 | ||
367 | public double llGetTime() { NotImplemented("llGetTime"); return 0; } | 653 | public double llGetTime() |
368 | public void llResetTime() { NotImplemented("llResetTime"); } | 654 | { |
369 | public double llGetAndResetTime() { NotImplemented("llGetAndResetTime"); return 0; } | 655 | NotImplemented("llGetTime"); |
370 | public void llSound() { NotImplemented("llSound"); } | 656 | return 0; |
371 | public void llPlaySound(string sound, double volume) { NotImplemented("llPlaySound"); } | 657 | } |
372 | public void llLoopSound(string sound, double volume) { NotImplemented("llLoopSound"); } | 658 | |
373 | public void llLoopSoundMaster(string sound, double volume) { NotImplemented("llLoopSoundMaster"); } | 659 | public void llResetTime() |
374 | public void llLoopSoundSlave(string sound, double volume) { NotImplemented("llLoopSoundSlave"); } | 660 | { |
375 | public void llPlaySoundSlave(string sound, double volume) { NotImplemented("llPlaySoundSlave"); } | 661 | NotImplemented("llResetTime"); |
376 | public void llTriggerSound(string sound, double volume) { NotImplemented("llTriggerSound"); } | 662 | } |
377 | public void llStopSound() { NotImplemented("llStopSound"); } | 663 | |
378 | public void llPreloadSound(string sound) { NotImplemented("llPreloadSound"); } | 664 | public double llGetAndResetTime() |
665 | { | ||
666 | NotImplemented("llGetAndResetTime"); | ||
667 | return 0; | ||
668 | } | ||
669 | |||
670 | public void llSound() | ||
671 | { | ||
672 | NotImplemented("llSound"); | ||
673 | } | ||
674 | |||
675 | public void llPlaySound(string sound, double volume) | ||
676 | { | ||
677 | NotImplemented("llPlaySound"); | ||
678 | } | ||
679 | |||
680 | public void llLoopSound(string sound, double volume) | ||
681 | { | ||
682 | NotImplemented("llLoopSound"); | ||
683 | } | ||
684 | |||
685 | public void llLoopSoundMaster(string sound, double volume) | ||
686 | { | ||
687 | NotImplemented("llLoopSoundMaster"); | ||
688 | } | ||
689 | |||
690 | public void llLoopSoundSlave(string sound, double volume) | ||
691 | { | ||
692 | NotImplemented("llLoopSoundSlave"); | ||
693 | } | ||
694 | |||
695 | public void llPlaySoundSlave(string sound, double volume) | ||
696 | { | ||
697 | NotImplemented("llPlaySoundSlave"); | ||
698 | } | ||
699 | |||
700 | public void llTriggerSound(string sound, double volume) | ||
701 | { | ||
702 | NotImplemented("llTriggerSound"); | ||
703 | } | ||
704 | |||
705 | public void llStopSound() | ||
706 | { | ||
707 | NotImplemented("llStopSound"); | ||
708 | } | ||
709 | |||
710 | public void llPreloadSound(string sound) | ||
711 | { | ||
712 | NotImplemented("llPreloadSound"); | ||
713 | } | ||
379 | 714 | ||
380 | public string llGetSubString(string src, int start, int end) | 715 | public string llGetSubString(string src, int start, int end) |
381 | { | 716 | { |
@@ -386,10 +721,12 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler | |||
386 | { | 721 | { |
387 | return src.Remove(start, end - start); | 722 | return src.Remove(start, end - start); |
388 | } | 723 | } |
724 | |||
389 | public string llInsertString(string dst, int position, string src) | 725 | public string llInsertString(string dst, int position, string src) |
390 | { | 726 | { |
391 | return dst.Insert(position, src); | 727 | return dst.Insert(position, src); |
392 | } | 728 | } |
729 | |||
393 | public string llToUpper(string src) | 730 | public string llToUpper(string src) |
394 | { | 731 | { |
395 | return src.ToUpper(); | 732 | return src.ToUpper(); |
@@ -400,14 +737,46 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler | |||
400 | return src.ToLower(); | 737 | return src.ToLower(); |
401 | } | 738 | } |
402 | 739 | ||
403 | public int llGiveMoney(string destination, int amount) { NotImplemented("llGiveMoney"); return 0; } | 740 | public int llGiveMoney(string destination, int amount) |
404 | public void llMakeExplosion() { NotImplemented("llMakeExplosion"); } | 741 | { |
405 | public void llMakeFountain() { NotImplemented("llMakeFountain"); } | 742 | NotImplemented("llGiveMoney"); |
406 | public void llMakeSmoke() { NotImplemented("llMakeSmoke"); } | 743 | return 0; |
407 | public void llMakeFire() { NotImplemented("llMakeFire"); } | 744 | } |
408 | public void llRezObject(string inventory, LSL_Types.Vector3 pos, LSL_Types.Quaternion rot, int param) { NotImplemented("llRezObject"); } | 745 | |
409 | public void llLookAt(LSL_Types.Vector3 target, double strength, double damping) { NotImplemented("llLookAt"); } | 746 | public void llMakeExplosion() |
410 | public void llStopLookAt() { NotImplemented("llStopLookAt"); } | 747 | { |
748 | NotImplemented("llMakeExplosion"); | ||
749 | } | ||
750 | |||
751 | public void llMakeFountain() | ||
752 | { | ||
753 | NotImplemented("llMakeFountain"); | ||
754 | } | ||
755 | |||
756 | public void llMakeSmoke() | ||
757 | { | ||
758 | NotImplemented("llMakeSmoke"); | ||
759 | } | ||
760 | |||
761 | public void llMakeFire() | ||
762 | { | ||
763 | NotImplemented("llMakeFire"); | ||
764 | } | ||
765 | |||
766 | public void llRezObject(string inventory, LSL_Types.Vector3 pos, LSL_Types.Quaternion rot, int param) | ||
767 | { | ||
768 | NotImplemented("llRezObject"); | ||
769 | } | ||
770 | |||
771 | public void llLookAt(LSL_Types.Vector3 target, double strength, double damping) | ||
772 | { | ||
773 | NotImplemented("llLookAt"); | ||
774 | } | ||
775 | |||
776 | public void llStopLookAt() | ||
777 | { | ||
778 | NotImplemented("llStopLookAt"); | ||
779 | } | ||
411 | 780 | ||
412 | public void llSetTimerEvent(double sec) | 781 | public void llSetTimerEvent(double sec) |
413 | { | 782 | { |
@@ -417,38 +786,104 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler | |||
417 | 786 | ||
418 | public void llSleep(double sec) | 787 | public void llSleep(double sec) |
419 | { | 788 | { |
420 | System.Threading.Thread.Sleep((int)(sec * 1000)); | 789 | Thread.Sleep((int) (sec*1000)); |
790 | } | ||
791 | |||
792 | public double llGetMass() | ||
793 | { | ||
794 | NotImplemented("llGetMass"); | ||
795 | return 0; | ||
796 | } | ||
797 | |||
798 | public void llCollisionFilter(string name, string id, int accept) | ||
799 | { | ||
800 | NotImplemented("llCollisionFilter"); | ||
801 | } | ||
802 | |||
803 | public void llTakeControls(int controls, int accept, int pass_on) | ||
804 | { | ||
805 | NotImplemented("llTakeControls"); | ||
806 | } | ||
807 | |||
808 | public void llReleaseControls() | ||
809 | { | ||
810 | NotImplemented("llReleaseControls"); | ||
811 | } | ||
812 | |||
813 | public void llAttachToAvatar(int attachment) | ||
814 | { | ||
815 | NotImplemented("llAttachToAvatar"); | ||
816 | } | ||
817 | |||
818 | public void llDetachFromAvatar() | ||
819 | { | ||
820 | NotImplemented("llDetachFromAvatar"); | ||
821 | } | ||
822 | |||
823 | public void llTakeCamera() | ||
824 | { | ||
825 | NotImplemented("llTakeCamera"); | ||
421 | } | 826 | } |
422 | 827 | ||
423 | public double llGetMass() { NotImplemented("llGetMass"); return 0; } | 828 | public void llReleaseCamera() |
424 | public void llCollisionFilter(string name, string id, int accept) { NotImplemented("llCollisionFilter"); } | 829 | { |
425 | public void llTakeControls(int controls, int accept, int pass_on) { NotImplemented("llTakeControls"); } | 830 | NotImplemented("llReleaseCamera"); |
426 | public void llReleaseControls() { NotImplemented("llReleaseControls"); } | 831 | } |
427 | public void llAttachToAvatar(int attachment) { NotImplemented("llAttachToAvatar"); } | ||
428 | public void llDetachFromAvatar() { NotImplemented("llDetachFromAvatar"); } | ||
429 | public void llTakeCamera() { NotImplemented("llTakeCamera"); } | ||
430 | public void llReleaseCamera() { NotImplemented("llReleaseCamera"); } | ||
431 | 832 | ||
432 | public string llGetOwner() | 833 | public string llGetOwner() |
433 | { | 834 | { |
434 | return m_host.ObjectOwner.ToStringHyphenated(); | 835 | return m_host.ObjectOwner.ToStringHyphenated(); |
435 | } | 836 | } |
436 | 837 | ||
437 | public void llInstantMessage(string user, string message) { NotImplemented("llInstantMessage"); } | 838 | public void llInstantMessage(string user, string message) |
438 | public void llEmail(string address, string subject, string message) { NotImplemented("llEmail"); } | 839 | { |
439 | public void llGetNextEmail(string address, string subject) { NotImplemented("llGetNextEmail"); } | 840 | NotImplemented("llInstantMessage"); |
841 | } | ||
842 | |||
843 | public void llEmail(string address, string subject, string message) | ||
844 | { | ||
845 | NotImplemented("llEmail"); | ||
846 | } | ||
847 | |||
848 | public void llGetNextEmail(string address, string subject) | ||
849 | { | ||
850 | NotImplemented("llGetNextEmail"); | ||
851 | } | ||
440 | 852 | ||
441 | public string llGetKey() | 853 | public string llGetKey() |
442 | { | 854 | { |
443 | return m_host.UUID.ToStringHyphenated(); | 855 | return m_host.UUID.ToStringHyphenated(); |
444 | } | 856 | } |
445 | 857 | ||
446 | public void llSetBuoyancy(double buoyancy) { NotImplemented("llSetBuoyancy"); } | 858 | public void llSetBuoyancy(double buoyancy) |
447 | public void llSetHoverHeight(double height, int water, double tau) { NotImplemented("llSetHoverHeight"); } | 859 | { |
448 | public void llStopHover() { NotImplemented("llStopHover"); } | 860 | NotImplemented("llSetBuoyancy"); |
449 | public void llMinEventDelay(double delay) { NotImplemented("llMinEventDelay"); } | 861 | } |
450 | public void llSoundPreload() { NotImplemented("llSoundPreload"); } | 862 | |
451 | public void llRotLookAt(LSL_Types.Quaternion target, double strength, double damping) { NotImplemented("llRotLookAt"); } | 863 | public void llSetHoverHeight(double height, int water, double tau) |
864 | { | ||
865 | NotImplemented("llSetHoverHeight"); | ||
866 | } | ||
867 | |||
868 | public void llStopHover() | ||
869 | { | ||
870 | NotImplemented("llStopHover"); | ||
871 | } | ||
872 | |||
873 | public void llMinEventDelay(double delay) | ||
874 | { | ||
875 | NotImplemented("llMinEventDelay"); | ||
876 | } | ||
877 | |||
878 | public void llSoundPreload() | ||
879 | { | ||
880 | NotImplemented("llSoundPreload"); | ||
881 | } | ||
882 | |||
883 | public void llRotLookAt(LSL_Types.Quaternion target, double strength, double damping) | ||
884 | { | ||
885 | NotImplemented("llRotLookAt"); | ||
886 | } | ||
452 | 887 | ||
453 | public int llStringLength(string str) | 888 | public int llStringLength(string str) |
454 | { | 889 | { |
@@ -462,88 +897,289 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler | |||
462 | } | 897 | } |
463 | } | 898 | } |
464 | 899 | ||
465 | public void llStartAnimation(string anim) { NotImplemented("llStartAnimation"); } | 900 | public void llStartAnimation(string anim) |
466 | public void llStopAnimation(string anim) { NotImplemented("llStopAnimation"); } | 901 | { |
467 | public void llPointAt() { NotImplemented("llPointAt"); } | 902 | NotImplemented("llStartAnimation"); |
468 | public void llStopPointAt() { NotImplemented("llStopPointAt"); } | 903 | } |
469 | public void llTargetOmega(LSL_Types.Vector3 axis, double spinrate, double gain) { NotImplemented("llTargetOmega"); } | 904 | |
470 | public int llGetStartParameter() { NotImplemented("llGetStartParameter"); return 0; } | 905 | public void llStopAnimation(string anim) |
471 | public void llGodLikeRezObject(string inventory, LSL_Types.Vector3 pos) { NotImplemented("llGodLikeRezObject"); } | 906 | { |
472 | public void llRequestPermissions(string agent, int perm) { NotImplemented("llRequestPermissions"); } | 907 | NotImplemented("llStopAnimation"); |
473 | public string llGetPermissionsKey() { NotImplemented("llGetPermissionsKey"); return ""; } | 908 | } |
474 | public int llGetPermissions() { NotImplemented("llGetPermissions"); return 0; } | 909 | |
475 | public int llGetLinkNumber() { NotImplemented("llGetLinkNumber"); return 0; } | 910 | public void llPointAt() |
476 | public void llSetLinkColor(int linknumber, LSL_Types.Vector3 color, int face) { NotImplemented("llSetLinkColor"); } | 911 | { |
477 | public void llCreateLink(string target, int parent) { NotImplemented("llCreateLink"); } | 912 | NotImplemented("llPointAt"); |
478 | public void llBreakLink(int linknum) { NotImplemented("llBreakLink"); } | 913 | } |
479 | public void llBreakAllLinks() { NotImplemented("llBreakAllLinks"); } | 914 | |
480 | public string llGetLinkKey(int linknum) { NotImplemented("llGetLinkKey"); return ""; } | 915 | public void llStopPointAt() |
481 | public void llGetLinkName(int linknum) { NotImplemented("llGetLinkName"); } | 916 | { |
482 | public int llGetInventoryNumber(int type) { NotImplemented("llGetInventoryNumber"); return 0; } | 917 | NotImplemented("llStopPointAt"); |
483 | public string llGetInventoryName(int type, int number) { NotImplemented("llGetInventoryName"); return ""; } | 918 | } |
484 | public void llSetScriptState(string name, int run) { NotImplemented("llSetScriptState"); } | 919 | |
485 | public double llGetEnergy() { return 1.0f; } | 920 | public void llTargetOmega(LSL_Types.Vector3 axis, double spinrate, double gain) |
486 | public void llGiveInventory(string destination, string inventory) { NotImplemented("llGiveInventory"); } | 921 | { |
487 | public void llRemoveInventory(string item) { NotImplemented("llRemoveInventory"); } | 922 | NotImplemented("llTargetOmega"); |
923 | } | ||
924 | |||
925 | public int llGetStartParameter() | ||
926 | { | ||
927 | NotImplemented("llGetStartParameter"); | ||
928 | return 0; | ||
929 | } | ||
930 | |||
931 | public void llGodLikeRezObject(string inventory, LSL_Types.Vector3 pos) | ||
932 | { | ||
933 | NotImplemented("llGodLikeRezObject"); | ||
934 | } | ||
935 | |||
936 | public void llRequestPermissions(string agent, int perm) | ||
937 | { | ||
938 | NotImplemented("llRequestPermissions"); | ||
939 | } | ||
940 | |||
941 | public string llGetPermissionsKey() | ||
942 | { | ||
943 | NotImplemented("llGetPermissionsKey"); | ||
944 | return ""; | ||
945 | } | ||
946 | |||
947 | public int llGetPermissions() | ||
948 | { | ||
949 | NotImplemented("llGetPermissions"); | ||
950 | return 0; | ||
951 | } | ||
952 | |||
953 | public int llGetLinkNumber() | ||
954 | { | ||
955 | NotImplemented("llGetLinkNumber"); | ||
956 | return 0; | ||
957 | } | ||
958 | |||
959 | public void llSetLinkColor(int linknumber, LSL_Types.Vector3 color, int face) | ||
960 | { | ||
961 | NotImplemented("llSetLinkColor"); | ||
962 | } | ||
963 | |||
964 | public void llCreateLink(string target, int parent) | ||
965 | { | ||
966 | NotImplemented("llCreateLink"); | ||
967 | } | ||
968 | |||
969 | public void llBreakLink(int linknum) | ||
970 | { | ||
971 | NotImplemented("llBreakLink"); | ||
972 | } | ||
973 | |||
974 | public void llBreakAllLinks() | ||
975 | { | ||
976 | NotImplemented("llBreakAllLinks"); | ||
977 | } | ||
978 | |||
979 | public string llGetLinkKey(int linknum) | ||
980 | { | ||
981 | NotImplemented("llGetLinkKey"); | ||
982 | return ""; | ||
983 | } | ||
984 | |||
985 | public void llGetLinkName(int linknum) | ||
986 | { | ||
987 | NotImplemented("llGetLinkName"); | ||
988 | } | ||
989 | |||
990 | public int llGetInventoryNumber(int type) | ||
991 | { | ||
992 | NotImplemented("llGetInventoryNumber"); | ||
993 | return 0; | ||
994 | } | ||
995 | |||
996 | public string llGetInventoryName(int type, int number) | ||
997 | { | ||
998 | NotImplemented("llGetInventoryName"); | ||
999 | return ""; | ||
1000 | } | ||
1001 | |||
1002 | public void llSetScriptState(string name, int run) | ||
1003 | { | ||
1004 | NotImplemented("llSetScriptState"); | ||
1005 | } | ||
1006 | |||
1007 | public double llGetEnergy() | ||
1008 | { | ||
1009 | return 1.0f; | ||
1010 | } | ||
1011 | |||
1012 | public void llGiveInventory(string destination, string inventory) | ||
1013 | { | ||
1014 | NotImplemented("llGiveInventory"); | ||
1015 | } | ||
1016 | |||
1017 | public void llRemoveInventory(string item) | ||
1018 | { | ||
1019 | NotImplemented("llRemoveInventory"); | ||
1020 | } | ||
488 | 1021 | ||
489 | public void llSetText(string text, LSL_Types.Vector3 color, double alpha) | 1022 | public void llSetText(string text, LSL_Types.Vector3 color, double alpha) |
490 | { | 1023 | { |
491 | Axiom.Math.Vector3 av3 = new Axiom.Math.Vector3((float)color.X, (float)color.Y, (float)color.Z); | 1024 | Vector3 av3 = new Vector3((float) color.X, (float) color.Y, (float) color.Z); |
492 | m_host.SetText(text, av3, alpha); | 1025 | m_host.SetText(text, av3, alpha); |
493 | } | 1026 | } |
494 | 1027 | ||
495 | 1028 | ||
496 | public double llWater(LSL_Types.Vector3 offset) { NotImplemented("llWater"); return 0; } | 1029 | public double llWater(LSL_Types.Vector3 offset) |
497 | public void llPassTouches(int pass) { NotImplemented("llPassTouches"); } | 1030 | { |
498 | public string llRequestAgentData(string id, int data) { NotImplemented("llRequestAgentData"); return ""; } | 1031 | NotImplemented("llWater"); |
499 | public string llRequestInventoryData(string name) { NotImplemented("llRequestInventoryData"); return ""; } | 1032 | return 0; |
500 | public void llSetDamage(double damage) { NotImplemented("llSetDamage"); } | 1033 | } |
501 | public void llTeleportAgentHome(string agent) { NotImplemented("llTeleportAgentHome"); } | 1034 | |
502 | public void llModifyLand(int action, int brush) { } | 1035 | public void llPassTouches(int pass) |
503 | public void llCollisionSound(string impact_sound, double impact_volume) { NotImplemented("llCollisionSound"); } | 1036 | { |
504 | public void llCollisionSprite(string impact_sprite) { NotImplemented("llCollisionSprite"); } | 1037 | NotImplemented("llPassTouches"); |
505 | public string llGetAnimation(string id) { NotImplemented("llGetAnimation"); return ""; } | 1038 | } |
506 | public void llResetScript() | 1039 | |
1040 | public string llRequestAgentData(string id, int data) | ||
1041 | { | ||
1042 | NotImplemented("llRequestAgentData"); | ||
1043 | return ""; | ||
1044 | } | ||
1045 | |||
1046 | public string llRequestInventoryData(string name) | ||
1047 | { | ||
1048 | NotImplemented("llRequestInventoryData"); | ||
1049 | return ""; | ||
1050 | } | ||
1051 | |||
1052 | public void llSetDamage(double damage) | ||
1053 | { | ||
1054 | NotImplemented("llSetDamage"); | ||
1055 | } | ||
1056 | |||
1057 | public void llTeleportAgentHome(string agent) | ||
1058 | { | ||
1059 | NotImplemented("llTeleportAgentHome"); | ||
1060 | } | ||
1061 | |||
1062 | public void llModifyLand(int action, int brush) | ||
1063 | { | ||
1064 | } | ||
1065 | |||
1066 | public void llCollisionSound(string impact_sound, double impact_volume) | ||
1067 | { | ||
1068 | NotImplemented("llCollisionSound"); | ||
1069 | } | ||
1070 | |||
1071 | public void llCollisionSprite(string impact_sprite) | ||
1072 | { | ||
1073 | NotImplemented("llCollisionSprite"); | ||
1074 | } | ||
1075 | |||
1076 | public string llGetAnimation(string id) | ||
1077 | { | ||
1078 | NotImplemented("llGetAnimation"); | ||
1079 | return ""; | ||
1080 | } | ||
1081 | |||
1082 | public void llResetScript() | ||
507 | { | 1083 | { |
508 | m_ScriptEngine.m_ScriptManager.ResetScript(m_localID, m_itemID); | 1084 | m_ScriptEngine.m_ScriptManager.ResetScript(m_localID, m_itemID); |
509 | } | 1085 | } |
510 | public void llMessageLinked(int linknum, int num, string str, string id) { } | ||
511 | public void llPushObject(string target, LSL_Types.Vector3 impulse, LSL_Types.Vector3 ang_impulse, int local) { } | ||
512 | public void llPassCollisions(int pass) { } | ||
513 | public string llGetScriptName() { return ""; } | ||
514 | 1086 | ||
515 | public int llGetNumberOfSides() { return 0; } | 1087 | public void llMessageLinked(int linknum, int num, string str, string id) |
1088 | { | ||
1089 | } | ||
1090 | |||
1091 | public void llPushObject(string target, LSL_Types.Vector3 impulse, LSL_Types.Vector3 ang_impulse, int local) | ||
1092 | { | ||
1093 | } | ||
1094 | |||
1095 | public void llPassCollisions(int pass) | ||
1096 | { | ||
1097 | } | ||
1098 | |||
1099 | public string llGetScriptName() | ||
1100 | { | ||
1101 | return ""; | ||
1102 | } | ||
1103 | |||
1104 | public int llGetNumberOfSides() | ||
1105 | { | ||
1106 | return 0; | ||
1107 | } | ||
1108 | |||
1109 | public LSL_Types.Quaternion llAxisAngle2Rot(LSL_Types.Vector3 axis, double angle) | ||
1110 | { | ||
1111 | return new LSL_Types.Quaternion(); | ||
1112 | } | ||
1113 | |||
1114 | public LSL_Types.Vector3 llRot2Axis(LSL_Types.Quaternion rot) | ||
1115 | { | ||
1116 | return new LSL_Types.Vector3(); | ||
1117 | } | ||
516 | 1118 | ||
517 | public LSL_Types.Quaternion llAxisAngle2Rot(LSL_Types.Vector3 axis, double angle) { return new LSL_Types.Quaternion(); } | 1119 | public void llRot2Angle() |
518 | public LSL_Types.Vector3 llRot2Axis(LSL_Types.Quaternion rot) { return new LSL_Types.Vector3(); } | 1120 | { |
519 | public void llRot2Angle() { } | 1121 | } |
520 | 1122 | ||
521 | public double llAcos(double val) | 1123 | public double llAcos(double val) |
522 | { | 1124 | { |
523 | return (double)Math.Acos(val); | 1125 | return (double) Math.Acos(val); |
524 | } | 1126 | } |
525 | 1127 | ||
526 | public double llAsin(double val) | 1128 | public double llAsin(double val) |
527 | { | 1129 | { |
528 | return (double)Math.Asin(val); | 1130 | return (double) Math.Asin(val); |
529 | } | 1131 | } |
530 | 1132 | ||
531 | public double llAngleBetween(LSL_Types.Quaternion a, LSL_Types.Quaternion b) { return 0; } | 1133 | public double llAngleBetween(LSL_Types.Quaternion a, LSL_Types.Quaternion b) |
532 | public string llGetInventoryKey(string name) { return ""; } | 1134 | { |
533 | public void llAllowInventoryDrop(int add) { } | 1135 | return 0; |
534 | public LSL_Types.Vector3 llGetSunDirection() { return new LSL_Types.Vector3(); } | 1136 | } |
535 | public LSL_Types.Vector3 llGetTextureOffset(int face) { return new LSL_Types.Vector3(); } | 1137 | |
536 | public LSL_Types.Vector3 llGetTextureScale(int side) { return new LSL_Types.Vector3(); } | 1138 | public string llGetInventoryKey(string name) |
537 | public double llGetTextureRot(int side) { return 0; } | 1139 | { |
1140 | return ""; | ||
1141 | } | ||
1142 | |||
1143 | public void llAllowInventoryDrop(int add) | ||
1144 | { | ||
1145 | } | ||
1146 | |||
1147 | public LSL_Types.Vector3 llGetSunDirection() | ||
1148 | { | ||
1149 | return new LSL_Types.Vector3(); | ||
1150 | } | ||
1151 | |||
1152 | public LSL_Types.Vector3 llGetTextureOffset(int face) | ||
1153 | { | ||
1154 | return new LSL_Types.Vector3(); | ||
1155 | } | ||
1156 | |||
1157 | public LSL_Types.Vector3 llGetTextureScale(int side) | ||
1158 | { | ||
1159 | return new LSL_Types.Vector3(); | ||
1160 | } | ||
1161 | |||
1162 | public double llGetTextureRot(int side) | ||
1163 | { | ||
1164 | return 0; | ||
1165 | } | ||
538 | 1166 | ||
539 | public int llSubStringIndex(string source, string pattern) | 1167 | public int llSubStringIndex(string source, string pattern) |
540 | { | 1168 | { |
541 | return source.IndexOf(pattern); | 1169 | return source.IndexOf(pattern); |
542 | } | 1170 | } |
543 | 1171 | ||
544 | public string llGetOwnerKey(string id) { NotImplemented("llGetOwnerKey"); return ""; } | 1172 | public string llGetOwnerKey(string id) |
1173 | { | ||
1174 | NotImplemented("llGetOwnerKey"); | ||
1175 | return ""; | ||
1176 | } | ||
545 | 1177 | ||
546 | public LSL_Types.Vector3 llGetCenterOfMass() { NotImplemented("llGetCenterOfMass"); return new LSL_Types.Vector3(); } | 1178 | public LSL_Types.Vector3 llGetCenterOfMass() |
1179 | { | ||
1180 | NotImplemented("llGetCenterOfMass"); | ||
1181 | return new LSL_Types.Vector3(); | ||
1182 | } | ||
547 | 1183 | ||
548 | public List<string> llListSort(List<string> src, int stride, int ascending) | 1184 | public List<string> llListSort(List<string> src, int stride, int ascending) |
549 | { | 1185 | { |
@@ -577,7 +1213,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler | |||
577 | ret.AddRange(ls); | 1213 | ret.AddRange(ls); |
578 | } | 1214 | } |
579 | 1215 | ||
580 | if (ascending == LSL.LSL_BaseClass.TRUE) | 1216 | if (ascending == LSL_BaseClass.TRUE) |
581 | return ret; | 1217 | return ret; |
582 | ret.Reverse(); | 1218 | ret.Reverse(); |
583 | return ret; | 1219 | return ret; |
@@ -616,12 +1252,18 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler | |||
616 | 1252 | ||
617 | public LSL_Types.Vector3 llList2Vector(List<string> src, int index) | 1253 | public LSL_Types.Vector3 llList2Vector(List<string> src, int index) |
618 | { | 1254 | { |
619 | return new LSL_Types.Vector3(double.Parse(src[index]), double.Parse(src[index + 1]), double.Parse(src[index + 2])); | 1255 | return |
1256 | new LSL_Types.Vector3(double.Parse(src[index]), double.Parse(src[index + 1]), | ||
1257 | double.Parse(src[index + 2])); | ||
620 | } | 1258 | } |
1259 | |||
621 | public LSL_Types.Quaternion llList2Rot(List<string> src, int index) | 1260 | public LSL_Types.Quaternion llList2Rot(List<string> src, int index) |
622 | { | 1261 | { |
623 | return new LSL_Types.Quaternion(double.Parse(src[index]), double.Parse(src[index + 1]), double.Parse(src[index + 2]), double.Parse(src[index + 3])); | 1262 | return |
1263 | new LSL_Types.Quaternion(double.Parse(src[index]), double.Parse(src[index + 1]), | ||
1264 | double.Parse(src[index + 2]), double.Parse(src[index + 3])); | ||
624 | } | 1265 | } |
1266 | |||
625 | public List<string> llList2List(List<string> src, int start, int end) | 1267 | public List<string> llList2List(List<string> src, int start, int end) |
626 | { | 1268 | { |
627 | if (end > start) | 1269 | if (end > start) |
@@ -638,18 +1280,21 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler | |||
638 | ret.AddRange(src.GetRange(0, end)); | 1280 | ret.AddRange(src.GetRange(0, end)); |
639 | return ret; | 1281 | return ret; |
640 | } | 1282 | } |
641 | |||
642 | |||
643 | |||
644 | |||
645 | } | 1283 | } |
1284 | |||
646 | public List<string> llDeleteSubList(List<string> src, int start, int end) | 1285 | public List<string> llDeleteSubList(List<string> src, int start, int end) |
647 | { | 1286 | { |
648 | List<string> ret = new List<string>(src); | 1287 | List<string> ret = new List<string>(src); |
649 | ret.RemoveRange(start, end - start); | 1288 | ret.RemoveRange(start, end - start); |
650 | return ret; | 1289 | return ret; |
651 | } | 1290 | } |
652 | public int llGetListEntryType(List<string> src, int index) { NotImplemented("llGetListEntryType"); return 0; } | 1291 | |
1292 | public int llGetListEntryType(List<string> src, int index) | ||
1293 | { | ||
1294 | NotImplemented("llGetListEntryType"); | ||
1295 | return 0; | ||
1296 | } | ||
1297 | |||
653 | public string llList2CSV(List<string> src) | 1298 | public string llList2CSV(List<string> src) |
654 | { | 1299 | { |
655 | string ret = ""; | 1300 | string ret = ""; |
@@ -661,6 +1306,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler | |||
661 | } | 1306 | } |
662 | return ret; | 1307 | return ret; |
663 | } | 1308 | } |
1309 | |||
664 | public List<string> llCSV2List(string src) | 1310 | public List<string> llCSV2List(string src) |
665 | { | 1311 | { |
666 | List<string> ret = new List<string>(); | 1312 | List<string> ret = new List<string>(); |
@@ -670,6 +1316,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler | |||
670 | } | 1316 | } |
671 | return ret; | 1317 | return ret; |
672 | } | 1318 | } |
1319 | |||
673 | public List<string> llListRandomize(List<string> src, int stride) | 1320 | public List<string> llListRandomize(List<string> src, int stride) |
674 | { | 1321 | { |
675 | int s = stride; | 1322 | int s = stride; |
@@ -711,9 +1358,8 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler | |||
711 | } | 1358 | } |
712 | 1359 | ||
713 | return ret; | 1360 | return ret; |
714 | |||
715 | |||
716 | } | 1361 | } |
1362 | |||
717 | public List<string> llList2ListStrided(List<string> src, int start, int end, int stride) | 1363 | public List<string> llList2ListStrided(List<string> src, int start, int end, int stride) |
718 | { | 1364 | { |
719 | List<string> ret = new List<string>(); | 1365 | List<string> ret = new List<string>(); |
@@ -739,12 +1385,11 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler | |||
739 | 1385 | ||
740 | public LSL_Types.Vector3 llGetRegionCorner() | 1386 | public LSL_Types.Vector3 llGetRegionCorner() |
741 | { | 1387 | { |
742 | return new LSL_Types.Vector3(World.RegionInfo.RegionLocX * 256, World.RegionInfo.RegionLocY * 256, 0); | 1388 | return new LSL_Types.Vector3(World.RegionInfo.RegionLocX*256, World.RegionInfo.RegionLocY*256, 0); |
743 | } | 1389 | } |
744 | 1390 | ||
745 | public List<string> llListInsertList(List<string> dest, List<string> src, int start) | 1391 | public List<string> llListInsertList(List<string> dest, List<string> src, int start) |
746 | { | 1392 | { |
747 | |||
748 | List<string> ret = new List<string>(dest); | 1393 | List<string> ret = new List<string>(dest); |
749 | //foreach (string s in src.Reverse()) | 1394 | //foreach (string s in src.Reverse()) |
750 | for (int ci = src.Count - 1; ci > -1; ci--) | 1395 | for (int ci = src.Count - 1; ci > -1; ci--) |
@@ -753,13 +1398,13 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler | |||
753 | } | 1398 | } |
754 | return ret; | 1399 | return ret; |
755 | } | 1400 | } |
1401 | |||
756 | public int llListFindList(List<string> src, List<string> test) | 1402 | public int llListFindList(List<string> src, List<string> test) |
757 | { | 1403 | { |
758 | foreach (string s in test) | 1404 | foreach (string s in test) |
759 | { | 1405 | { |
760 | for (int ci = 0; ci < src.Count; ci++) | 1406 | for (int ci = 0; ci < src.Count; ci++) |
761 | { | 1407 | { |
762 | |||
763 | if (s == src[ci]) | 1408 | if (s == src[ci]) |
764 | return ci; | 1409 | return ci; |
765 | } | 1410 | } |
@@ -784,37 +1429,139 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler | |||
784 | return result; | 1429 | return result; |
785 | } | 1430 | } |
786 | 1431 | ||
787 | public int llEdgeOfWorld(LSL_Types.Vector3 pos, LSL_Types.Vector3 dir) { NotImplemented("llEdgeOfWorld"); return 0; } | 1432 | public int llEdgeOfWorld(LSL_Types.Vector3 pos, LSL_Types.Vector3 dir) |
788 | public int llGetAgentInfo(string id) { NotImplemented("llGetAgentInfo"); return 0; } | 1433 | { |
789 | public void llAdjustSoundVolume(double volume) { NotImplemented("llAdjustSoundVolume"); } | 1434 | NotImplemented("llEdgeOfWorld"); |
790 | public void llSetSoundQueueing(int queue) { NotImplemented("llSetSoundQueueing"); } | 1435 | return 0; |
791 | public void llSetSoundRadius(double radius) { NotImplemented("llSetSoundRadius"); } | 1436 | } |
792 | public string llKey2Name(string id) { NotImplemented("llKey2Name"); return ""; } | 1437 | |
793 | public void llSetTextureAnim(int mode, int face, int sizex, int sizey, double start, double length, double rate) { NotImplemented("llSetTextureAnim"); } | 1438 | public int llGetAgentInfo(string id) |
794 | public void llTriggerSoundLimited(string sound, double volume, LSL_Types.Vector3 top_north_east, LSL_Types.Vector3 bottom_south_west) { NotImplemented("llTriggerSoundLimited"); } | 1439 | { |
795 | public void llEjectFromLand(string pest) { NotImplemented("llEjectFromLand"); } | 1440 | NotImplemented("llGetAgentInfo"); |
796 | 1441 | return 0; | |
797 | public void llParseString2List() { NotImplemented("llParseString2List"); } | 1442 | } |
798 | 1443 | ||
799 | public int llOverMyLand(string id) { NotImplemented("llOverMyLand"); return 0; } | 1444 | public void llAdjustSoundVolume(double volume) |
800 | public string llGetLandOwnerAt(LSL_Types.Vector3 pos) { NotImplemented("llGetLandOwnerAt"); return ""; } | 1445 | { |
801 | public string llGetNotecardLine(string name, int line) { NotImplemented("llGetNotecardLine"); return ""; } | 1446 | NotImplemented("llAdjustSoundVolume"); |
802 | public LSL_Types.Vector3 llGetAgentSize(string id) { NotImplemented("llGetAgentSize"); return new LSL_Types.Vector3(); } | 1447 | } |
803 | public int llSameGroup(string agent) { NotImplemented("llSameGroup"); return 0; } | 1448 | |
804 | public void llUnSit(string id) { NotImplemented("llUnSit"); } | 1449 | public void llSetSoundQueueing(int queue) |
805 | public LSL_Types.Vector3 llGroundSlope(LSL_Types.Vector3 offset) { NotImplemented("llGroundSlope"); return new LSL_Types.Vector3(); } | 1450 | { |
806 | public LSL_Types.Vector3 llGroundNormal(LSL_Types.Vector3 offset) { NotImplemented("llGroundNormal"); return new LSL_Types.Vector3(); } | 1451 | NotImplemented("llSetSoundQueueing"); |
807 | public LSL_Types.Vector3 llGroundContour(LSL_Types.Vector3 offset) { NotImplemented("llGroundContour"); return new LSL_Types.Vector3(); } | 1452 | } |
808 | public int llGetAttached() { NotImplemented("llGetAttached"); return 0; } | 1453 | |
809 | public int llGetFreeMemory() { NotImplemented("llGetFreeMemory"); return 0; } | 1454 | public void llSetSoundRadius(double radius) |
1455 | { | ||
1456 | NotImplemented("llSetSoundRadius"); | ||
1457 | } | ||
1458 | |||
1459 | public string llKey2Name(string id) | ||
1460 | { | ||
1461 | NotImplemented("llKey2Name"); | ||
1462 | return ""; | ||
1463 | } | ||
1464 | |||
1465 | public void llSetTextureAnim(int mode, int face, int sizex, int sizey, double start, double length, double rate) | ||
1466 | { | ||
1467 | NotImplemented("llSetTextureAnim"); | ||
1468 | } | ||
1469 | |||
1470 | public void llTriggerSoundLimited(string sound, double volume, LSL_Types.Vector3 top_north_east, | ||
1471 | LSL_Types.Vector3 bottom_south_west) | ||
1472 | { | ||
1473 | NotImplemented("llTriggerSoundLimited"); | ||
1474 | } | ||
1475 | |||
1476 | public void llEjectFromLand(string pest) | ||
1477 | { | ||
1478 | NotImplemented("llEjectFromLand"); | ||
1479 | } | ||
1480 | |||
1481 | public void llParseString2List() | ||
1482 | { | ||
1483 | NotImplemented("llParseString2List"); | ||
1484 | } | ||
1485 | |||
1486 | public int llOverMyLand(string id) | ||
1487 | { | ||
1488 | NotImplemented("llOverMyLand"); | ||
1489 | return 0; | ||
1490 | } | ||
1491 | |||
1492 | public string llGetLandOwnerAt(LSL_Types.Vector3 pos) | ||
1493 | { | ||
1494 | NotImplemented("llGetLandOwnerAt"); | ||
1495 | return ""; | ||
1496 | } | ||
1497 | |||
1498 | public string llGetNotecardLine(string name, int line) | ||
1499 | { | ||
1500 | NotImplemented("llGetNotecardLine"); | ||
1501 | return ""; | ||
1502 | } | ||
1503 | |||
1504 | public LSL_Types.Vector3 llGetAgentSize(string id) | ||
1505 | { | ||
1506 | NotImplemented("llGetAgentSize"); | ||
1507 | return new LSL_Types.Vector3(); | ||
1508 | } | ||
1509 | |||
1510 | public int llSameGroup(string agent) | ||
1511 | { | ||
1512 | NotImplemented("llSameGroup"); | ||
1513 | return 0; | ||
1514 | } | ||
1515 | |||
1516 | public void llUnSit(string id) | ||
1517 | { | ||
1518 | NotImplemented("llUnSit"); | ||
1519 | } | ||
1520 | |||
1521 | public LSL_Types.Vector3 llGroundSlope(LSL_Types.Vector3 offset) | ||
1522 | { | ||
1523 | NotImplemented("llGroundSlope"); | ||
1524 | return new LSL_Types.Vector3(); | ||
1525 | } | ||
1526 | |||
1527 | public LSL_Types.Vector3 llGroundNormal(LSL_Types.Vector3 offset) | ||
1528 | { | ||
1529 | NotImplemented("llGroundNormal"); | ||
1530 | return new LSL_Types.Vector3(); | ||
1531 | } | ||
1532 | |||
1533 | public LSL_Types.Vector3 llGroundContour(LSL_Types.Vector3 offset) | ||
1534 | { | ||
1535 | NotImplemented("llGroundContour"); | ||
1536 | return new LSL_Types.Vector3(); | ||
1537 | } | ||
1538 | |||
1539 | public int llGetAttached() | ||
1540 | { | ||
1541 | NotImplemented("llGetAttached"); | ||
1542 | return 0; | ||
1543 | } | ||
1544 | |||
1545 | public int llGetFreeMemory() | ||
1546 | { | ||
1547 | NotImplemented("llGetFreeMemory"); | ||
1548 | return 0; | ||
1549 | } | ||
810 | 1550 | ||
811 | public string llGetRegionName() | 1551 | public string llGetRegionName() |
812 | { | 1552 | { |
813 | return World.RegionInfo.RegionName; | 1553 | return World.RegionInfo.RegionName; |
814 | } | 1554 | } |
815 | 1555 | ||
816 | public double llGetRegionTimeDilation() { return 1.0f; } | 1556 | public double llGetRegionTimeDilation() |
817 | public double llGetRegionFPS() { return 10.0f; } | 1557 | { |
1558 | return 1.0f; | ||
1559 | } | ||
1560 | |||
1561 | public double llGetRegionFPS() | ||
1562 | { | ||
1563 | return 10.0f; | ||
1564 | } | ||
818 | 1565 | ||
819 | /* particle system rules should be coming into this routine as doubles, that is | 1566 | /* particle system rules should be coming into this routine as doubles, that is |
820 | rule[0] should be an integer from this list and rule[1] should be the arg | 1567 | rule[0] should be an integer from this list and rule[1] should be the arg |
@@ -824,6 +1571,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler | |||
824 | We iterate through the list for 'Count' elements, incrementing by two for each | 1571 | We iterate through the list for 'Count' elements, incrementing by two for each |
825 | iteration and set the members of Primitive.ParticleSystem, one at a time. | 1572 | iteration and set the members of Primitive.ParticleSystem, one at a time. |
826 | */ | 1573 | */ |
1574 | |||
827 | public enum PrimitiveRule : int | 1575 | public enum PrimitiveRule : int |
828 | { | 1576 | { |
829 | PSYS_PART_FLAGS = 0, | 1577 | PSYS_PART_FLAGS = 0, |
@@ -854,109 +1602,152 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler | |||
854 | Primitive.ParticleSystem prules = new Primitive.ParticleSystem(); | 1602 | Primitive.ParticleSystem prules = new Primitive.ParticleSystem(); |
855 | for (int i = 0; i < rules.Count; i += 2) | 1603 | for (int i = 0; i < rules.Count; i += 2) |
856 | { | 1604 | { |
857 | switch ((int)rules[i]) | 1605 | switch ((int) rules[i]) |
858 | { | 1606 | { |
859 | case (int)PrimitiveRule.PSYS_PART_FLAGS: | 1607 | case (int) PrimitiveRule.PSYS_PART_FLAGS: |
860 | prules.PartFlags = (uint)rules[i + 1]; | 1608 | prules.PartFlags = (uint) rules[i + 1]; |
861 | break; | 1609 | break; |
862 | 1610 | ||
863 | case (int)PrimitiveRule.PSYS_PART_START_COLOR: | 1611 | case (int) PrimitiveRule.PSYS_PART_START_COLOR: |
864 | prules.PartStartColor = (LLColor)rules[i + 1]; | 1612 | prules.PartStartColor = (LLColor) rules[i + 1]; |
865 | break; | 1613 | break; |
866 | 1614 | ||
867 | case (int)PrimitiveRule.PSYS_PART_START_ALPHA: | 1615 | case (int) PrimitiveRule.PSYS_PART_START_ALPHA: |
868 | //what is the cast? prules.PartStartColor = (LLColor)rules[i + 1]; | 1616 | //what is the cast? prules.PartStartColor = (LLColor)rules[i + 1]; |
869 | break; | 1617 | break; |
870 | 1618 | ||
871 | case (int)PrimitiveRule.PSYS_PART_END_COLOR: | 1619 | case (int) PrimitiveRule.PSYS_PART_END_COLOR: |
872 | prules.PartEndColor = (LLColor)rules[i + 1]; | 1620 | prules.PartEndColor = (LLColor) rules[i + 1]; |
873 | break; | 1621 | break; |
874 | 1622 | ||
875 | case (int)PrimitiveRule.PSYS_PART_END_ALPHA: | 1623 | case (int) PrimitiveRule.PSYS_PART_END_ALPHA: |
876 | //what is the cast? prules.PartStartColor = (LLColor)rules[i + 1]; | 1624 | //what is the cast? prules.PartStartColor = (LLColor)rules[i + 1]; |
877 | break; | 1625 | break; |
878 | 1626 | ||
879 | case (int)PrimitiveRule.PSYS_PART_START_SCALE: | 1627 | case (int) PrimitiveRule.PSYS_PART_START_SCALE: |
880 | //what is the cast? prules.PartStartColor = (LLColor)rules[i + 1]; | 1628 | //what is the cast? prules.PartStartColor = (LLColor)rules[i + 1]; |
881 | break; | 1629 | break; |
882 | 1630 | ||
883 | case (int)PrimitiveRule.PSYS_PART_END_SCALE: | 1631 | case (int) PrimitiveRule.PSYS_PART_END_SCALE: |
884 | //what is the cast? prules.PartStartColor = (LLColor)rules[i + 1]; | 1632 | //what is the cast? prules.PartStartColor = (LLColor)rules[i + 1]; |
885 | break; | 1633 | break; |
886 | 1634 | ||
887 | case (int)PrimitiveRule.PSYS_PART_MAX_AGE: | 1635 | case (int) PrimitiveRule.PSYS_PART_MAX_AGE: |
888 | prules.MaxAge = (float)rules[i + 1]; | 1636 | prules.MaxAge = (float) rules[i + 1]; |
889 | break; | 1637 | break; |
890 | 1638 | ||
891 | case (int)PrimitiveRule.PSYS_SRC_ACCEL: | 1639 | case (int) PrimitiveRule.PSYS_SRC_ACCEL: |
892 | //what is the cast? prules.PartStartColor = (LLColor)rules[i + 1]; | 1640 | //what is the cast? prules.PartStartColor = (LLColor)rules[i + 1]; |
893 | break; | 1641 | break; |
894 | 1642 | ||
895 | case (int)PrimitiveRule.PSYS_SRC_PATTERN: | 1643 | case (int) PrimitiveRule.PSYS_SRC_PATTERN: |
896 | //what is the cast? prules.PartStartColor = (LLColor)rules[i + 1]; | 1644 | //what is the cast? prules.PartStartColor = (LLColor)rules[i + 1]; |
897 | break; | 1645 | break; |
898 | 1646 | ||
899 | case (int)PrimitiveRule.PSYS_SRC_TEXTURE: | 1647 | case (int) PrimitiveRule.PSYS_SRC_TEXTURE: |
900 | prules.Texture = (LLUUID)rules[i + 1]; | 1648 | prules.Texture = (LLUUID) rules[i + 1]; |
901 | break; | 1649 | break; |
902 | 1650 | ||
903 | case (int)PrimitiveRule.PSYS_SRC_BURST_RATE: | 1651 | case (int) PrimitiveRule.PSYS_SRC_BURST_RATE: |
904 | prules.BurstRate = (float)rules[i + 1]; | 1652 | prules.BurstRate = (float) rules[i + 1]; |
905 | break; | 1653 | break; |
906 | 1654 | ||
907 | case (int)PrimitiveRule.PSYS_SRC_BURST_PART_COUNT: | 1655 | case (int) PrimitiveRule.PSYS_SRC_BURST_PART_COUNT: |
908 | prules.BurstPartCount = (byte)rules[i + 1]; | 1656 | prules.BurstPartCount = (byte) rules[i + 1]; |
909 | break; | 1657 | break; |
910 | 1658 | ||
911 | case (int)PrimitiveRule.PSYS_SRC_BURST_RADIUS: | 1659 | case (int) PrimitiveRule.PSYS_SRC_BURST_RADIUS: |
912 | prules.BurstRadius = (float)rules[i + 1]; | 1660 | prules.BurstRadius = (float) rules[i + 1]; |
913 | break; | 1661 | break; |
914 | 1662 | ||
915 | case (int)PrimitiveRule.PSYS_SRC_BURST_SPEED_MIN: | 1663 | case (int) PrimitiveRule.PSYS_SRC_BURST_SPEED_MIN: |
916 | prules.BurstSpeedMin = (float)rules[i + 1]; | 1664 | prules.BurstSpeedMin = (float) rules[i + 1]; |
917 | break; | 1665 | break; |
918 | 1666 | ||
919 | case (int)PrimitiveRule.PSYS_SRC_BURST_SPEED_MAX: | 1667 | case (int) PrimitiveRule.PSYS_SRC_BURST_SPEED_MAX: |
920 | prules.BurstSpeedMax = (float)rules[i + 1]; | 1668 | prules.BurstSpeedMax = (float) rules[i + 1]; |
921 | break; | 1669 | break; |
922 | 1670 | ||
923 | case (int)PrimitiveRule.PSYS_SRC_MAX_AGE: | 1671 | case (int) PrimitiveRule.PSYS_SRC_MAX_AGE: |
924 | prules.MaxAge = (float)rules[i + 1]; | 1672 | prules.MaxAge = (float) rules[i + 1]; |
925 | break; | 1673 | break; |
926 | 1674 | ||
927 | case (int)PrimitiveRule.PSYS_SRC_TARGET_KEY: | 1675 | case (int) PrimitiveRule.PSYS_SRC_TARGET_KEY: |
928 | prules.Target = (LLUUID)rules[i + 1]; | 1676 | prules.Target = (LLUUID) rules[i + 1]; |
929 | break; | 1677 | break; |
930 | 1678 | ||
931 | case (int)PrimitiveRule.PSYS_SRC_OMEGA: | 1679 | case (int) PrimitiveRule.PSYS_SRC_OMEGA: |
932 | //cast?? prules.MaxAge = (float)rules[i + 1]; | 1680 | //cast?? prules.MaxAge = (float)rules[i + 1]; |
933 | break; | 1681 | break; |
934 | 1682 | ||
935 | case (int)PrimitiveRule.PSYS_SRC_ANGLE_BEGIN: | 1683 | case (int) PrimitiveRule.PSYS_SRC_ANGLE_BEGIN: |
936 | prules.InnerAngle = (float)rules[i + 1]; | 1684 | prules.InnerAngle = (float) rules[i + 1]; |
937 | break; | 1685 | break; |
938 | 1686 | ||
939 | case (int)PrimitiveRule.PSYS_SRC_ANGLE_END: | 1687 | case (int) PrimitiveRule.PSYS_SRC_ANGLE_END: |
940 | prules.OuterAngle = (float)rules[i + 1]; | 1688 | prules.OuterAngle = (float) rules[i + 1]; |
941 | break; | 1689 | break; |
942 | |||
943 | } | 1690 | } |
944 | } | 1691 | } |
945 | 1692 | ||
946 | m_host.AddNewParticleSystem(prules); | 1693 | m_host.AddNewParticleSystem(prules); |
947 | } | 1694 | } |
948 | 1695 | ||
949 | public void llGroundRepel(double height, int water, double tau) { NotImplemented("llGroundRepel"); } | 1696 | public void llGroundRepel(double height, int water, double tau) |
950 | public void llGiveInventoryList() { NotImplemented("llGiveInventoryList"); } | 1697 | { |
951 | public void llSetVehicleType(int type) { NotImplemented("llSetVehicleType"); } | 1698 | NotImplemented("llGroundRepel"); |
952 | public void llSetVehicledoubleParam(int param, double value) { NotImplemented("llSetVehicledoubleParam"); } | 1699 | } |
953 | public void llSetVehicleVectorParam(int param, LSL_Types.Vector3 vec) { NotImplemented("llSetVehicleVectorParam"); } | 1700 | |
954 | public void llSetVehicleRotationParam(int param, LSL_Types.Quaternion rot) { NotImplemented("llSetVehicleRotationParam"); } | 1701 | public void llGiveInventoryList() |
955 | public void llSetVehicleFlags(int flags) { NotImplemented("llSetVehicleFlags"); } | 1702 | { |
956 | public void llRemoveVehicleFlags(int flags) { NotImplemented("llRemoveVehicleFlags"); } | 1703 | NotImplemented("llGiveInventoryList"); |
957 | public void llSitTarget(LSL_Types.Vector3 offset, LSL_Types.Quaternion rot) { NotImplemented("llSitTarget"); } | 1704 | } |
958 | public string llAvatarOnSitTarget() { NotImplemented("llAvatarOnSitTarget"); return ""; } | 1705 | |
959 | public void llAddToLandPassList(string avatar, double hours) { NotImplemented("llAddToLandPassList"); } | 1706 | public void llSetVehicleType(int type) |
1707 | { | ||
1708 | NotImplemented("llSetVehicleType"); | ||
1709 | } | ||
1710 | |||
1711 | public void llSetVehicledoubleParam(int param, double value) | ||
1712 | { | ||
1713 | NotImplemented("llSetVehicledoubleParam"); | ||
1714 | } | ||
1715 | |||
1716 | public void llSetVehicleVectorParam(int param, LSL_Types.Vector3 vec) | ||
1717 | { | ||
1718 | NotImplemented("llSetVehicleVectorParam"); | ||
1719 | } | ||
1720 | |||
1721 | public void llSetVehicleRotationParam(int param, LSL_Types.Quaternion rot) | ||
1722 | { | ||
1723 | NotImplemented("llSetVehicleRotationParam"); | ||
1724 | } | ||
1725 | |||
1726 | public void llSetVehicleFlags(int flags) | ||
1727 | { | ||
1728 | NotImplemented("llSetVehicleFlags"); | ||
1729 | } | ||
1730 | |||
1731 | public void llRemoveVehicleFlags(int flags) | ||
1732 | { | ||
1733 | NotImplemented("llRemoveVehicleFlags"); | ||
1734 | } | ||
1735 | |||
1736 | public void llSitTarget(LSL_Types.Vector3 offset, LSL_Types.Quaternion rot) | ||
1737 | { | ||
1738 | NotImplemented("llSitTarget"); | ||
1739 | } | ||
1740 | |||
1741 | public string llAvatarOnSitTarget() | ||
1742 | { | ||
1743 | NotImplemented("llAvatarOnSitTarget"); | ||
1744 | return ""; | ||
1745 | } | ||
1746 | |||
1747 | public void llAddToLandPassList(string avatar, double hours) | ||
1748 | { | ||
1749 | NotImplemented("llAddToLandPassList"); | ||
1750 | } | ||
960 | 1751 | ||
961 | public void llSetTouchText(string text) | 1752 | public void llSetTouchText(string text) |
962 | { | 1753 | { |
@@ -968,49 +1759,91 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler | |||
968 | m_host.SitName = text; | 1759 | m_host.SitName = text; |
969 | } | 1760 | } |
970 | 1761 | ||
971 | public void llSetCameraEyeOffset(LSL_Types.Vector3 offset) { NotImplemented("llSetCameraEyeOffset"); } | 1762 | public void llSetCameraEyeOffset(LSL_Types.Vector3 offset) |
972 | public void llSetCameraAtOffset(LSL_Types.Vector3 offset) { NotImplemented("llSetCameraAtOffset"); } | 1763 | { |
973 | public void llDumpList2String() { NotImplemented("llDumpList2String"); } | 1764 | NotImplemented("llSetCameraEyeOffset"); |
974 | public void llScriptDanger(LSL_Types.Vector3 pos) { NotImplemented("llScriptDanger"); } | 1765 | } |
975 | public void llDialog(string avatar, string message, List<string> buttons, int chat_channel) { NotImplemented("llDialog"); } | ||
976 | public void llVolumeDetect(int detect) { NotImplemented("llVolumeDetect"); } | ||
977 | public void llResetOtherScript(string name) { NotImplemented("llResetOtherScript"); } | ||
978 | 1766 | ||
979 | public int llGetScriptState(string name) { NotImplemented("llGetScriptState"); return 0; } | 1767 | public void llSetCameraAtOffset(LSL_Types.Vector3 offset) |
1768 | { | ||
1769 | NotImplemented("llSetCameraAtOffset"); | ||
1770 | } | ||
980 | 1771 | ||
981 | public void llRemoteLoadScript() { NotImplemented("llRemoteLoadScript"); } | 1772 | public void llDumpList2String() |
982 | public void llSetRemoteScriptAccessPin(int pin) { NotImplemented("llSetRemoteScriptAccessPin"); } | 1773 | { |
983 | public void llRemoteLoadScriptPin(string target, string name, int pin, int running, int start_param) { NotImplemented("llRemoteLoadScriptPin"); } | 1774 | NotImplemented("llDumpList2String"); |
1775 | } | ||
1776 | |||
1777 | public void llScriptDanger(LSL_Types.Vector3 pos) | ||
1778 | { | ||
1779 | NotImplemented("llScriptDanger"); | ||
1780 | } | ||
1781 | |||
1782 | public void llDialog(string avatar, string message, List<string> buttons, int chat_channel) | ||
1783 | { | ||
1784 | NotImplemented("llDialog"); | ||
1785 | } | ||
1786 | |||
1787 | public void llVolumeDetect(int detect) | ||
1788 | { | ||
1789 | NotImplemented("llVolumeDetect"); | ||
1790 | } | ||
1791 | |||
1792 | public void llResetOtherScript(string name) | ||
1793 | { | ||
1794 | NotImplemented("llResetOtherScript"); | ||
1795 | } | ||
1796 | |||
1797 | public int llGetScriptState(string name) | ||
1798 | { | ||
1799 | NotImplemented("llGetScriptState"); | ||
1800 | return 0; | ||
1801 | } | ||
1802 | |||
1803 | public void llRemoteLoadScript() | ||
1804 | { | ||
1805 | NotImplemented("llRemoteLoadScript"); | ||
1806 | } | ||
1807 | |||
1808 | public void llSetRemoteScriptAccessPin(int pin) | ||
1809 | { | ||
1810 | NotImplemented("llSetRemoteScriptAccessPin"); | ||
1811 | } | ||
1812 | |||
1813 | public void llRemoteLoadScriptPin(string target, string name, int pin, int running, int start_param) | ||
1814 | { | ||
1815 | NotImplemented("llRemoteLoadScriptPin"); | ||
1816 | } | ||
984 | 1817 | ||
985 | // remote_data(integer type, key channel, key message_id, string sender, integer ival, string sval) | 1818 | // remote_data(integer type, key channel, key message_id, string sender, integer ival, string sval) |
986 | // Not sure where these constants should live: | 1819 | // Not sure where these constants should live: |
987 | // REMOTE_DATA_CHANNEL = 1 | 1820 | // REMOTE_DATA_CHANNEL = 1 |
988 | // REMOTE_DATA_REQUEST = 2 | 1821 | // REMOTE_DATA_REQUEST = 2 |
989 | // REMOTE_DATA_REPLY = 3 | 1822 | // REMOTE_DATA_REPLY = 3 |
990 | public void llOpenRemoteDataChannel() { | 1823 | public void llOpenRemoteDataChannel() |
991 | 1824 | { | |
992 | IXMLRPC xmlrpcMod = m_ScriptEngine.World.RequestModuleInterface<IXMLRPC>(); | 1825 | IXMLRPC xmlrpcMod = m_ScriptEngine.World.RequestModuleInterface<IXMLRPC>(); |
993 | LLUUID channelID = xmlrpcMod.OpenXMLRPCChannel(m_localID, m_itemID); | 1826 | LLUUID channelID = xmlrpcMod.OpenXMLRPCChannel(m_localID, m_itemID); |
994 | object[] resobj = new object[] { 1, channelID.ToString(), LLUUID.Zero.ToString(), "", 0, "" }; | 1827 | object[] resobj = new object[] {1, channelID.ToString(), LLUUID.Zero.ToString(), "", 0, ""}; |
995 | m_ScriptEngine.m_EventQueueManager.AddToScriptQueue(m_localID, m_itemID, "remote_data", resobj); | 1828 | m_ScriptEngine.m_EventQueueManager.AddToScriptQueue(m_localID, m_itemID, "remote_data", resobj); |
996 | |||
997 | } | 1829 | } |
998 | 1830 | ||
999 | public string llSendRemoteData(string channel, string dest, int idata, string sdata) { NotImplemented("llSendRemoteData"); return ""; } | 1831 | public string llSendRemoteData(string channel, string dest, int idata, string sdata) |
1832 | { | ||
1833 | NotImplemented("llSendRemoteData"); | ||
1834 | return ""; | ||
1835 | } | ||
1000 | 1836 | ||
1001 | public void llRemoteDataReply(string channel, string message_id, string sdata, int idata) | 1837 | public void llRemoteDataReply(string channel, string message_id, string sdata, int idata) |
1002 | { | 1838 | { |
1003 | |||
1004 | IXMLRPC xmlrpcMod = m_ScriptEngine.World.RequestModuleInterface<IXMLRPC>(); | 1839 | IXMLRPC xmlrpcMod = m_ScriptEngine.World.RequestModuleInterface<IXMLRPC>(); |
1005 | xmlrpcMod.RemoteDataReply(channel, message_id, sdata, idata); | 1840 | xmlrpcMod.RemoteDataReply(channel, message_id, sdata, idata); |
1006 | |||
1007 | } | 1841 | } |
1008 | |||
1009 | public void llCloseRemoteDataChannel(string channel) { | ||
1010 | 1842 | ||
1843 | public void llCloseRemoteDataChannel(string channel) | ||
1844 | { | ||
1011 | IXMLRPC xmlrpcMod = m_ScriptEngine.World.RequestModuleInterface<IXMLRPC>(); | 1845 | IXMLRPC xmlrpcMod = m_ScriptEngine.World.RequestModuleInterface<IXMLRPC>(); |
1012 | xmlrpcMod.CloseXMLRPCChannel(channel); | 1846 | xmlrpcMod.CloseXMLRPCChannel(channel); |
1013 | |||
1014 | } | 1847 | } |
1015 | 1848 | ||
1016 | public string llMD5String(string src, int nonce) | 1849 | public string llMD5String(string src, int nonce) |
@@ -1018,14 +1851,17 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler | |||
1018 | return Util.Md5Hash(src + ":" + nonce.ToString()); | 1851 | return Util.Md5Hash(src + ":" + nonce.ToString()); |
1019 | } | 1852 | } |
1020 | 1853 | ||
1021 | public void llSetPrimitiveParams(List<string> rules) { NotImplemented("llSetPrimitiveParams"); } | 1854 | public void llSetPrimitiveParams(List<string> rules) |
1022 | public string llStringToBase64(string str) | ||
1023 | { | 1855 | { |
1856 | NotImplemented("llSetPrimitiveParams"); | ||
1857 | } | ||
1024 | 1858 | ||
1859 | public string llStringToBase64(string str) | ||
1860 | { | ||
1025 | try | 1861 | try |
1026 | { | 1862 | { |
1027 | byte[] encData_byte = new byte[str.Length]; | 1863 | byte[] encData_byte = new byte[str.Length]; |
1028 | encData_byte = System.Text.Encoding.UTF8.GetBytes(str); | 1864 | encData_byte = Encoding.UTF8.GetBytes(str); |
1029 | string encodedData = Convert.ToBase64String(encData_byte); | 1865 | string encodedData = Convert.ToBase64String(encData_byte); |
1030 | return encodedData; | 1866 | return encodedData; |
1031 | } | 1867 | } |
@@ -1037,11 +1873,10 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler | |||
1037 | 1873 | ||
1038 | public string llBase64ToString(string str) | 1874 | public string llBase64ToString(string str) |
1039 | { | 1875 | { |
1040 | System.Text.UTF8Encoding encoder = new System.Text.UTF8Encoding(); | 1876 | UTF8Encoding encoder = new UTF8Encoding(); |
1041 | System.Text.Decoder utf8Decode = encoder.GetDecoder(); | 1877 | Decoder utf8Decode = encoder.GetDecoder(); |
1042 | try | 1878 | try |
1043 | { | 1879 | { |
1044 | |||
1045 | byte[] todecode_byte = Convert.FromBase64String(str); | 1880 | byte[] todecode_byte = Convert.FromBase64String(str); |
1046 | int charCount = utf8Decode.GetCharCount(todecode_byte, 0, todecode_byte.Length); | 1881 | int charCount = utf8Decode.GetCharCount(todecode_byte, 0, todecode_byte.Length); |
1047 | char[] decoded_char = new char[charCount]; | 1882 | char[] decoded_char = new char[charCount]; |
@@ -1054,16 +1889,49 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler | |||
1054 | throw new Exception("Error in base64Decode" + e.Message); | 1889 | throw new Exception("Error in base64Decode" + e.Message); |
1055 | } | 1890 | } |
1056 | } | 1891 | } |
1057 | public void llXorBase64Strings() { throw new Exception("Command deprecated! Use llXorBase64StringsCorrect instead."); } | ||
1058 | public void llRemoteDataSetRegion() { NotImplemented("llRemoteDataSetRegion"); } | ||
1059 | public double llLog10(double val) { return (double)Math.Log10(val); } | ||
1060 | public double llLog(double val) { return (double)Math.Log(val); } | ||
1061 | public List<string> llGetAnimationList(string id) { NotImplemented("llGetAnimationList"); return new List<string>(); } | ||
1062 | public void llSetParcelMusicURL(string url) { NotImplemented("llSetParcelMusicURL"); } | ||
1063 | 1892 | ||
1064 | public LSL_Types.Vector3 llGetRootPosition() { NotImplemented("llGetRootPosition"); return new LSL_Types.Vector3(); } | 1893 | public void llXorBase64Strings() |
1894 | { | ||
1895 | throw new Exception("Command deprecated! Use llXorBase64StringsCorrect instead."); | ||
1896 | } | ||
1897 | |||
1898 | public void llRemoteDataSetRegion() | ||
1899 | { | ||
1900 | NotImplemented("llRemoteDataSetRegion"); | ||
1901 | } | ||
1902 | |||
1903 | public double llLog10(double val) | ||
1904 | { | ||
1905 | return (double) Math.Log10(val); | ||
1906 | } | ||
1065 | 1907 | ||
1066 | public LSL_Types.Quaternion llGetRootRotation() { NotImplemented("llGetRootRotation"); return new LSL_Types.Quaternion(); } | 1908 | public double llLog(double val) |
1909 | { | ||
1910 | return (double) Math.Log(val); | ||
1911 | } | ||
1912 | |||
1913 | public List<string> llGetAnimationList(string id) | ||
1914 | { | ||
1915 | NotImplemented("llGetAnimationList"); | ||
1916 | return new List<string>(); | ||
1917 | } | ||
1918 | |||
1919 | public void llSetParcelMusicURL(string url) | ||
1920 | { | ||
1921 | NotImplemented("llSetParcelMusicURL"); | ||
1922 | } | ||
1923 | |||
1924 | public LSL_Types.Vector3 llGetRootPosition() | ||
1925 | { | ||
1926 | NotImplemented("llGetRootPosition"); | ||
1927 | return new LSL_Types.Vector3(); | ||
1928 | } | ||
1929 | |||
1930 | public LSL_Types.Quaternion llGetRootRotation() | ||
1931 | { | ||
1932 | NotImplemented("llGetRootRotation"); | ||
1933 | return new LSL_Types.Quaternion(); | ||
1934 | } | ||
1067 | 1935 | ||
1068 | public string llGetObjectDesc() | 1936 | public string llGetObjectDesc() |
1069 | { | 1937 | { |
@@ -1080,20 +1948,55 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler | |||
1080 | return m_host.ObjectCreator.ToStringHyphenated(); | 1948 | return m_host.ObjectCreator.ToStringHyphenated(); |
1081 | } | 1949 | } |
1082 | 1950 | ||
1083 | public string llGetTimestamp() { return DateTime.Now.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ss.fffffffZ"); } | 1951 | public string llGetTimestamp() |
1084 | public void llSetLinkAlpha(int linknumber, double alpha, int face) { NotImplemented("llSetLinkAlpha"); } | 1952 | { |
1085 | public int llGetNumberOfPrims() { NotImplemented("llGetNumberOfPrims"); return 0; } | 1953 | return DateTime.Now.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ss.fffffffZ"); |
1086 | public string llGetNumberOfNotecardLines(string name) { NotImplemented("llGetNumberOfNotecardLines"); return ""; } | 1954 | } |
1087 | public List<string> llGetBoundingBox(string obj) { NotImplemented("llGetBoundingBox"); return new List<string>(); } | 1955 | |
1088 | public LSL_Types.Vector3 llGetGeometricCenter() { NotImplemented("llGetGeometricCenter"); return new LSL_Types.Vector3(); } | 1956 | public void llSetLinkAlpha(int linknumber, double alpha, int face) |
1089 | public void llGetPrimitiveParams() { NotImplemented("llGetPrimitiveParams"); } | 1957 | { |
1958 | NotImplemented("llSetLinkAlpha"); | ||
1959 | } | ||
1960 | |||
1961 | public int llGetNumberOfPrims() | ||
1962 | { | ||
1963 | NotImplemented("llGetNumberOfPrims"); | ||
1964 | return 0; | ||
1965 | } | ||
1966 | |||
1967 | public string llGetNumberOfNotecardLines(string name) | ||
1968 | { | ||
1969 | NotImplemented("llGetNumberOfNotecardLines"); | ||
1970 | return ""; | ||
1971 | } | ||
1972 | |||
1973 | public List<string> llGetBoundingBox(string obj) | ||
1974 | { | ||
1975 | NotImplemented("llGetBoundingBox"); | ||
1976 | return new List<string>(); | ||
1977 | } | ||
1978 | |||
1979 | public LSL_Types.Vector3 llGetGeometricCenter() | ||
1980 | { | ||
1981 | NotImplemented("llGetGeometricCenter"); | ||
1982 | return new LSL_Types.Vector3(); | ||
1983 | } | ||
1984 | |||
1985 | public void llGetPrimitiveParams() | ||
1986 | { | ||
1987 | NotImplemented("llGetPrimitiveParams"); | ||
1988 | } | ||
1989 | |||
1090 | public string llIntegerToBase64(int number) | 1990 | public string llIntegerToBase64(int number) |
1091 | { | 1991 | { |
1092 | NotImplemented("llIntegerToBase64"); return ""; | 1992 | NotImplemented("llIntegerToBase64"); |
1993 | return ""; | ||
1093 | } | 1994 | } |
1995 | |||
1094 | public int llBase64ToInteger(string str) | 1996 | public int llBase64ToInteger(string str) |
1095 | { | 1997 | { |
1096 | NotImplemented("llBase64ToInteger"); return 0; | 1998 | NotImplemented("llBase64ToInteger"); |
1999 | return 0; | ||
1097 | } | 2000 | } |
1098 | 2001 | ||
1099 | public double llGetGMTclock() | 2002 | public double llGetGMTclock() |
@@ -1106,31 +2009,92 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler | |||
1106 | return System.Environment.MachineName; | 2009 | return System.Environment.MachineName; |
1107 | } | 2010 | } |
1108 | 2011 | ||
1109 | public void llSetLocalRot(LSL_Types.Quaternion rot) { NotImplemented("llSetLocalRot"); } | 2012 | public void llSetLocalRot(LSL_Types.Quaternion rot) |
1110 | public List<string> llParseStringKeepNulls(string src, List<string> seperators, List<string> spacers) { NotImplemented("llParseStringKeepNulls"); return new List<string>(); } | 2013 | { |
1111 | public void llRezAtRoot(string inventory, LSL_Types.Vector3 position, LSL_Types.Vector3 velocity, LSL_Types.Quaternion rot, int param) { NotImplemented("llRezAtRoot"); } | 2014 | NotImplemented("llSetLocalRot"); |
2015 | } | ||
1112 | 2016 | ||
1113 | public int llGetObjectPermMask(int mask) { NotImplemented("llGetObjectPermMask"); return 0; } | 2017 | public List<string> llParseStringKeepNulls(string src, List<string> seperators, List<string> spacers) |
2018 | { | ||
2019 | NotImplemented("llParseStringKeepNulls"); | ||
2020 | return new List<string>(); | ||
2021 | } | ||
1114 | 2022 | ||
1115 | public void llSetObjectPermMask(int mask, int value) { NotImplemented("llSetObjectPermMask"); } | 2023 | public void llRezAtRoot(string inventory, LSL_Types.Vector3 position, LSL_Types.Vector3 velocity, |
2024 | LSL_Types.Quaternion rot, int param) | ||
2025 | { | ||
2026 | NotImplemented("llRezAtRoot"); | ||
2027 | } | ||
1116 | 2028 | ||
1117 | public void llGetInventoryPermMask(string item, int mask) { NotImplemented("llGetInventoryPermMask"); } | 2029 | public int llGetObjectPermMask(int mask) |
1118 | public void llSetInventoryPermMask(string item, int mask, int value) { NotImplemented("llSetInventoryPermMask"); } | 2030 | { |
1119 | public string llGetInventoryCreator(string item) { NotImplemented("llGetInventoryCreator"); return ""; } | 2031 | NotImplemented("llGetObjectPermMask"); |
1120 | public void llOwnerSay(string msg) { NotImplemented("llOwnerSay"); } | 2032 | return 0; |
1121 | public void llRequestSimulatorData(string simulator, int data) { NotImplemented("llRequestSimulatorData"); } | 2033 | } |
1122 | public void llForceMouselook(int mouselook) { NotImplemented("llForceMouselook"); } | 2034 | |
1123 | public double llGetObjectMass(string id) { NotImplemented("llGetObjectMass"); return 0; } | 2035 | public void llSetObjectPermMask(int mask, int value) |
1124 | public void llListReplaceList() { NotImplemented("llListReplaceList"); } | 2036 | { |
2037 | NotImplemented("llSetObjectPermMask"); | ||
2038 | } | ||
2039 | |||
2040 | public void llGetInventoryPermMask(string item, int mask) | ||
2041 | { | ||
2042 | NotImplemented("llGetInventoryPermMask"); | ||
2043 | } | ||
2044 | |||
2045 | public void llSetInventoryPermMask(string item, int mask, int value) | ||
2046 | { | ||
2047 | NotImplemented("llSetInventoryPermMask"); | ||
2048 | } | ||
2049 | |||
2050 | public string llGetInventoryCreator(string item) | ||
2051 | { | ||
2052 | NotImplemented("llGetInventoryCreator"); | ||
2053 | return ""; | ||
2054 | } | ||
2055 | |||
2056 | public void llOwnerSay(string msg) | ||
2057 | { | ||
2058 | NotImplemented("llOwnerSay"); | ||
2059 | } | ||
2060 | |||
2061 | public void llRequestSimulatorData(string simulator, int data) | ||
2062 | { | ||
2063 | NotImplemented("llRequestSimulatorData"); | ||
2064 | } | ||
2065 | |||
2066 | public void llForceMouselook(int mouselook) | ||
2067 | { | ||
2068 | NotImplemented("llForceMouselook"); | ||
2069 | } | ||
2070 | |||
2071 | public double llGetObjectMass(string id) | ||
2072 | { | ||
2073 | NotImplemented("llGetObjectMass"); | ||
2074 | return 0; | ||
2075 | } | ||
2076 | |||
2077 | public void llListReplaceList() | ||
2078 | { | ||
2079 | NotImplemented("llListReplaceList"); | ||
2080 | } | ||
1125 | 2081 | ||
1126 | public void llLoadURL(string avatar_id, string message, string url) | 2082 | public void llLoadURL(string avatar_id, string message, string url) |
1127 | { | 2083 | { |
1128 | LLUUID avatarId = new LLUUID(avatar_id); | 2084 | LLUUID avatarId = new LLUUID(avatar_id); |
1129 | m_ScriptEngine.World.SendUrlToUser(avatarId, m_host.Name, m_host.UUID, m_host.ObjectOwner, false, message, url); | 2085 | m_ScriptEngine.World.SendUrlToUser(avatarId, m_host.Name, m_host.UUID, m_host.ObjectOwner, false, message, |
2086 | url); | ||
1130 | } | 2087 | } |
1131 | 2088 | ||
1132 | public void llParcelMediaCommandList(List<string> commandList) { NotImplemented("llParcelMediaCommandList"); } | 2089 | public void llParcelMediaCommandList(List<string> commandList) |
1133 | public void llParcelMediaQuery() { NotImplemented("llParcelMediaQuery"); } | 2090 | { |
2091 | NotImplemented("llParcelMediaCommandList"); | ||
2092 | } | ||
2093 | |||
2094 | public void llParcelMediaQuery() | ||
2095 | { | ||
2096 | NotImplemented("llParcelMediaQuery"); | ||
2097 | } | ||
1134 | 2098 | ||
1135 | public int llModPow(int a, int b, int c) | 2099 | public int llModPow(int a, int b, int c) |
1136 | { | 2100 | { |
@@ -1139,13 +2103,38 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler | |||
1139 | return Convert.ToInt32(tmp); | 2103 | return Convert.ToInt32(tmp); |
1140 | } | 2104 | } |
1141 | 2105 | ||
1142 | public int llGetInventoryType(string name) { NotImplemented("llGetInventoryType"); return 0; } | 2106 | public int llGetInventoryType(string name) |
2107 | { | ||
2108 | NotImplemented("llGetInventoryType"); | ||
2109 | return 0; | ||
2110 | } | ||
2111 | |||
2112 | public void llSetPayPrice(int price, List<string> quick_pay_buttons) | ||
2113 | { | ||
2114 | NotImplemented("llSetPayPrice"); | ||
2115 | } | ||
2116 | |||
2117 | public LSL_Types.Vector3 llGetCameraPos() | ||
2118 | { | ||
2119 | NotImplemented("llGetCameraPos"); | ||
2120 | return new LSL_Types.Vector3(); | ||
2121 | } | ||
2122 | |||
2123 | public LSL_Types.Quaternion llGetCameraRot() | ||
2124 | { | ||
2125 | NotImplemented("llGetCameraRot"); | ||
2126 | return new LSL_Types.Quaternion(); | ||
2127 | } | ||
2128 | |||
2129 | public void llSetPrimURL() | ||
2130 | { | ||
2131 | NotImplemented("llSetPrimURL"); | ||
2132 | } | ||
1143 | 2133 | ||
1144 | public void llSetPayPrice(int price, List<string> quick_pay_buttons) { NotImplemented("llSetPayPrice"); } | 2134 | public void llRefreshPrimURL() |
1145 | public LSL_Types.Vector3 llGetCameraPos() { NotImplemented("llGetCameraPos"); return new LSL_Types.Vector3(); } | 2135 | { |
1146 | public LSL_Types.Quaternion llGetCameraRot() { NotImplemented("llGetCameraRot"); return new LSL_Types.Quaternion(); } | 2136 | NotImplemented("llRefreshPrimURL"); |
1147 | public void llSetPrimURL() { NotImplemented("llSetPrimURL"); } | 2137 | } |
1148 | public void llRefreshPrimURL() { NotImplemented("llRefreshPrimURL"); } | ||
1149 | 2138 | ||
1150 | public string llEscapeURL(string url) | 2139 | public string llEscapeURL(string url) |
1151 | { | 2140 | { |
@@ -1170,21 +2159,60 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler | |||
1170 | return "llUnescapeURL: " + ex.ToString(); | 2159 | return "llUnescapeURL: " + ex.ToString(); |
1171 | } | 2160 | } |
1172 | } | 2161 | } |
1173 | public void llMapDestination(string simname, LSL_Types.Vector3 pos, LSL_Types.Vector3 look_at) { NotImplemented("llMapDestination"); } | 2162 | |
1174 | public void llAddToLandBanList(string avatar, double hours) { NotImplemented("llAddToLandBanList"); } | 2163 | public void llMapDestination(string simname, LSL_Types.Vector3 pos, LSL_Types.Vector3 look_at) |
1175 | public void llRemoveFromLandPassList(string avatar) { NotImplemented("llRemoveFromLandPassList"); } | 2164 | { |
1176 | public void llRemoveFromLandBanList(string avatar) { NotImplemented("llRemoveFromLandBanList"); } | 2165 | NotImplemented("llMapDestination"); |
1177 | public void llSetCameraParams(List<string> rules) { NotImplemented("llSetCameraParams"); } | 2166 | } |
1178 | public void llClearCameraParams() { NotImplemented("llClearCameraParams"); } | 2167 | |
1179 | public double llListStatistics(int operation, List<string> src) { NotImplemented("llListStatistics"); return 0; } | 2168 | public void llAddToLandBanList(string avatar, double hours) |
2169 | { | ||
2170 | NotImplemented("llAddToLandBanList"); | ||
2171 | } | ||
2172 | |||
2173 | public void llRemoveFromLandPassList(string avatar) | ||
2174 | { | ||
2175 | NotImplemented("llRemoveFromLandPassList"); | ||
2176 | } | ||
2177 | |||
2178 | public void llRemoveFromLandBanList(string avatar) | ||
2179 | { | ||
2180 | NotImplemented("llRemoveFromLandBanList"); | ||
2181 | } | ||
2182 | |||
2183 | public void llSetCameraParams(List<string> rules) | ||
2184 | { | ||
2185 | NotImplemented("llSetCameraParams"); | ||
2186 | } | ||
2187 | |||
2188 | public void llClearCameraParams() | ||
2189 | { | ||
2190 | NotImplemented("llClearCameraParams"); | ||
2191 | } | ||
2192 | |||
2193 | public double llListStatistics(int operation, List<string> src) | ||
2194 | { | ||
2195 | NotImplemented("llListStatistics"); | ||
2196 | return 0; | ||
2197 | } | ||
1180 | 2198 | ||
1181 | public int llGetUnixTime() | 2199 | public int llGetUnixTime() |
1182 | { | 2200 | { |
1183 | return Util.UnixTimeSinceEpoch(); | 2201 | return Util.UnixTimeSinceEpoch(); |
1184 | } | 2202 | } |
1185 | 2203 | ||
1186 | public int llGetParcelFlags(LSL_Types.Vector3 pos) { NotImplemented("llGetParcelFlags"); return 0; } | 2204 | public int llGetParcelFlags(LSL_Types.Vector3 pos) |
1187 | public int llGetRegionFlags() { NotImplemented("llGetRegionFlags"); return 0; } | 2205 | { |
2206 | NotImplemented("llGetParcelFlags"); | ||
2207 | return 0; | ||
2208 | } | ||
2209 | |||
2210 | public int llGetRegionFlags() | ||
2211 | { | ||
2212 | NotImplemented("llGetRegionFlags"); | ||
2213 | return 0; | ||
2214 | } | ||
2215 | |||
1188 | public string llXorBase64StringsCorrect(string str1, string str2) | 2216 | public string llXorBase64StringsCorrect(string str1, string str2) |
1189 | { | 2217 | { |
1190 | string ret = ""; | 2218 | string ret = ""; |
@@ -1201,27 +2229,64 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler | |||
1201 | } | 2229 | } |
1202 | return llStringToBase64(ret); | 2230 | return llStringToBase64(ret); |
1203 | } | 2231 | } |
2232 | |||
1204 | public void llHTTPRequest(string url, List<string> parameters, string body) | 2233 | public void llHTTPRequest(string url, List<string> parameters, string body) |
1205 | { | 2234 | { |
1206 | m_ScriptEngine.m_LSLLongCmdHandler.StartHttpRequest(m_localID, m_itemID, url, parameters, body); | 2235 | m_ScriptEngine.m_LSLLongCmdHandler.StartHttpRequest(m_localID, m_itemID, url, parameters, body); |
1207 | } | 2236 | } |
1208 | public void llResetLandBanList() { NotImplemented("llResetLandBanList"); } | 2237 | |
1209 | public void llResetLandPassList() { NotImplemented("llResetLandPassList"); } | 2238 | public void llResetLandBanList() |
1210 | public int llGetParcelPrimCount(LSL_Types.Vector3 pos, int category, int sim_wide) { NotImplemented("llGetParcelPrimCount"); return 0; } | 2239 | { |
1211 | public List<string> llGetParcelPrimOwners(LSL_Types.Vector3 pos) { NotImplemented("llGetParcelPrimOwners"); return new List<string>(); } | 2240 | NotImplemented("llResetLandBanList"); |
1212 | public int llGetObjectPrimCount(string object_id) { NotImplemented("llGetObjectPrimCount"); return 0; } | 2241 | } |
1213 | public int llGetParcelMaxPrims(LSL_Types.Vector3 pos, int sim_wide) { NotImplemented("llGetParcelMaxPrims"); return 0; } | 2242 | |
1214 | public List<string> llGetParcelDetails(LSL_Types.Vector3 pos, List<string> param) { NotImplemented("llGetParcelDetails"); return new List<string>(); } | 2243 | public void llResetLandPassList() |
2244 | { | ||
2245 | NotImplemented("llResetLandPassList"); | ||
2246 | } | ||
2247 | |||
2248 | public int llGetParcelPrimCount(LSL_Types.Vector3 pos, int category, int sim_wide) | ||
2249 | { | ||
2250 | NotImplemented("llGetParcelPrimCount"); | ||
2251 | return 0; | ||
2252 | } | ||
2253 | |||
2254 | public List<string> llGetParcelPrimOwners(LSL_Types.Vector3 pos) | ||
2255 | { | ||
2256 | NotImplemented("llGetParcelPrimOwners"); | ||
2257 | return new List<string>(); | ||
2258 | } | ||
2259 | |||
2260 | public int llGetObjectPrimCount(string object_id) | ||
2261 | { | ||
2262 | NotImplemented("llGetObjectPrimCount"); | ||
2263 | return 0; | ||
2264 | } | ||
2265 | |||
2266 | public int llGetParcelMaxPrims(LSL_Types.Vector3 pos, int sim_wide) | ||
2267 | { | ||
2268 | NotImplemented("llGetParcelMaxPrims"); | ||
2269 | return 0; | ||
2270 | } | ||
2271 | |||
2272 | public List<string> llGetParcelDetails(LSL_Types.Vector3 pos, List<string> param) | ||
2273 | { | ||
2274 | NotImplemented("llGetParcelDetails"); | ||
2275 | return new List<string>(); | ||
2276 | } | ||
1215 | 2277 | ||
1216 | // | 2278 | // |
1217 | // OpenSim functions | 2279 | // OpenSim functions |
1218 | // | 2280 | // |
1219 | public string osSetDynamicTextureURL(string dynamicID, string contentType, string url, string extraParams, int timer) | 2281 | public string osSetDynamicTextureURL(string dynamicID, string contentType, string url, string extraParams, |
2282 | int timer) | ||
1220 | { | 2283 | { |
1221 | if (dynamicID == "") | 2284 | if (dynamicID == "") |
1222 | { | 2285 | { |
1223 | IDynamicTextureManager textureManager = this.World.RequestModuleInterface<IDynamicTextureManager>(); | 2286 | IDynamicTextureManager textureManager = World.RequestModuleInterface<IDynamicTextureManager>(); |
1224 | LLUUID createdTexture = textureManager.AddDynamicTextureURL(World.RegionInfo.RegionID, this.m_host.UUID, contentType, url, extraParams, timer); | 2287 | LLUUID createdTexture = |
2288 | textureManager.AddDynamicTextureURL(World.RegionInfo.RegionID, m_host.UUID, contentType, url, | ||
2289 | extraParams, timer); | ||
1225 | return createdTexture.ToStringHyphenated(); | 2290 | return createdTexture.ToStringHyphenated(); |
1226 | } | 2291 | } |
1227 | else | 2292 | else |
@@ -1237,6 +2302,5 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler | |||
1237 | if (throwErrorOnNotImplemented) | 2302 | if (throwErrorOnNotImplemented) |
1238 | throw new NotImplementedException("Command not implemented: " + Command); | 2303 | throw new NotImplementedException("Command not implemented: " + Command); |
1239 | } | 2304 | } |
1240 | |||
1241 | } | 2305 | } |
1242 | } | 2306 | } \ No newline at end of file |
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/EventManager.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/EventManager.cs index 8f0a591..85ac597 100644 --- a/OpenSim/Region/ScriptEngine/DotNetEngine/EventManager.cs +++ b/OpenSim/Region/ScriptEngine/DotNetEngine/EventManager.cs | |||
@@ -27,11 +27,8 @@ | |||
27 | */ | 27 | */ |
28 | /* Original code: Tedd Hansen */ | 28 | /* Original code: Tedd Hansen */ |
29 | using System; | 29 | using System; |
30 | using System.Collections.Generic; | ||
31 | using System.Text; | ||
32 | using libsecondlife; | 30 | using libsecondlife; |
33 | using OpenSim.Framework; | 31 | using OpenSim.Framework; |
34 | using OpenSim.Region.Environment.Scenes.Scripting; | ||
35 | 32 | ||
36 | namespace OpenSim.Region.ScriptEngine.DotNetEngine | 33 | namespace OpenSim.Region.ScriptEngine.DotNetEngine |
37 | { | 34 | { |
@@ -39,7 +36,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
39 | /// Prepares events so they can be directly executed upon a script by EventQueueManager, then queues it. | 36 | /// Prepares events so they can be directly executed upon a script by EventQueueManager, then queues it. |
40 | /// </summary> | 37 | /// </summary> |
41 | [Serializable] | 38 | [Serializable] |
42 | class EventManager | 39 | internal class EventManager |
43 | { | 40 | { |
44 | private ScriptEngine myScriptEngine; | 41 | private ScriptEngine myScriptEngine; |
45 | //public IScriptHost TEMP_OBJECT_ID; | 42 | //public IScriptHost TEMP_OBJECT_ID; |
@@ -55,7 +52,6 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
55 | myScriptEngine.World.EventManager.OnObjectGrab += touch_start; | 52 | myScriptEngine.World.EventManager.OnObjectGrab += touch_start; |
56 | myScriptEngine.World.EventManager.OnRezScript += OnRezScript; | 53 | myScriptEngine.World.EventManager.OnRezScript += OnRezScript; |
57 | myScriptEngine.World.EventManager.OnRemoveScript += OnRemoveScript; | 54 | myScriptEngine.World.EventManager.OnRemoveScript += OnRemoveScript; |
58 | |||
59 | } | 55 | } |
60 | 56 | ||
61 | public void touch_start(uint localID, LLVector3 offsetPos, IClientAPI remoteClient) | 57 | public void touch_start(uint localID, LLVector3 offsetPos, IClientAPI remoteClient) |
@@ -63,17 +59,20 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
63 | // Add to queue for all scripts in ObjectID object | 59 | // Add to queue for all scripts in ObjectID object |
64 | //myScriptEngine.m_logger.Verbose("ScriptEngine", "EventManager Event: touch_start"); | 60 | //myScriptEngine.m_logger.Verbose("ScriptEngine", "EventManager Event: touch_start"); |
65 | //Console.WriteLine("touch_start localID: " + localID); | 61 | //Console.WriteLine("touch_start localID: " + localID); |
66 | myScriptEngine.m_EventQueueManager.AddToObjectQueue(localID, "touch_start", new object[] { (int)1 }); | 62 | myScriptEngine.m_EventQueueManager.AddToObjectQueue(localID, "touch_start", new object[] {(int) 1}); |
67 | } | 63 | } |
64 | |||
68 | public void OnRezScript(uint localID, LLUUID itemID, string script) | 65 | public void OnRezScript(uint localID, LLUUID itemID, string script) |
69 | { | 66 | { |
70 | //myScriptEngine.myScriptManager.StartScript( | 67 | //myScriptEngine.myScriptManager.StartScript( |
71 | // Path.Combine("ScriptEngines", "Default.lsl"), | 68 | // Path.Combine("ScriptEngines", "Default.lsl"), |
72 | // new OpenSim.Region.Environment.Scenes.Scripting.NullScriptHost() | 69 | // new OpenSim.Region.Environment.Scenes.Scripting.NullScriptHost() |
73 | //); | 70 | //); |
74 | Console.WriteLine("OnRezScript localID: " + localID + " LLUID: " + itemID.ToString() + " Size: " + script.Length); | 71 | Console.WriteLine("OnRezScript localID: " + localID + " LLUID: " + itemID.ToString() + " Size: " + |
72 | script.Length); | ||
75 | myScriptEngine.m_ScriptManager.StartScript(localID, itemID, script); | 73 | myScriptEngine.m_ScriptManager.StartScript(localID, itemID, script); |
76 | } | 74 | } |
75 | |||
77 | public void OnRemoveScript(uint localID, LLUUID itemID) | 76 | public void OnRemoveScript(uint localID, LLUUID itemID) |
78 | { | 77 | { |
79 | //myScriptEngine.myScriptManager.StartScript( | 78 | //myScriptEngine.myScriptManager.StartScript( |
@@ -84,48 +83,138 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
84 | myScriptEngine.m_ScriptManager.StopScript( | 83 | myScriptEngine.m_ScriptManager.StopScript( |
85 | localID, | 84 | localID, |
86 | itemID | 85 | itemID |
87 | ); | 86 | ); |
88 | |||
89 | } | 87 | } |
90 | 88 | ||
91 | // TODO: Replace placeholders below | 89 | // TODO: Replace placeholders below |
92 | // These needs to be hooked up to OpenSim during init of this class | 90 | // These needs to be hooked up to OpenSim during init of this class |
93 | // then queued in EventQueueManager. | 91 | // then queued in EventQueueManager. |
94 | // When queued in EventQueueManager they need to be LSL compatible (name and params) | 92 | // When queued in EventQueueManager they need to be LSL compatible (name and params) |
95 | 93 | ||
96 | //public void state_entry() { } // | 94 | //public void state_entry() { } // |
97 | public void state_exit() { } | 95 | public void state_exit() |
96 | { | ||
97 | } | ||
98 | |||
98 | //public void touch_start() { } | 99 | //public void touch_start() { } |
99 | public void touch() { } | 100 | public void touch() |
100 | public void touch_end() { } | 101 | { |
101 | public void collision_start() { } | 102 | } |
102 | public void collision() { } | 103 | |
103 | public void collision_end() { } | 104 | public void touch_end() |
104 | public void land_collision_start() { } | 105 | { |
105 | public void land_collision() { } | 106 | } |
106 | public void land_collision_end() { } | 107 | |
107 | public void timer() { } | 108 | public void collision_start() |
108 | public void listen() { } | 109 | { |
109 | public void on_rez() { } | 110 | } |
110 | public void sensor() { } | 111 | |
111 | public void no_sensor() { } | 112 | public void collision() |
112 | public void control() { } | 113 | { |
113 | public void money() { } | 114 | } |
114 | public void email() { } | 115 | |
115 | public void at_target() { } | 116 | public void collision_end() |
116 | public void not_at_target() { } | 117 | { |
117 | public void at_rot_target() { } | 118 | } |
118 | public void not_at_rot_target() { } | 119 | |
119 | public void run_time_permissions() { } | 120 | public void land_collision_start() |
120 | public void changed() { } | 121 | { |
121 | public void attach() { } | 122 | } |
122 | public void dataserver() { } | 123 | |
123 | public void link_message() { } | 124 | public void land_collision() |
124 | public void moving_start() { } | 125 | { |
125 | public void moving_end() { } | 126 | } |
126 | public void object_rez() { } | 127 | |
127 | public void remote_data() { } | 128 | public void land_collision_end() |
128 | public void http_response() { } | 129 | { |
130 | } | ||
131 | |||
132 | public void timer() | ||
133 | { | ||
134 | } | ||
135 | |||
136 | public void listen() | ||
137 | { | ||
138 | } | ||
139 | |||
140 | public void on_rez() | ||
141 | { | ||
142 | } | ||
143 | |||
144 | public void sensor() | ||
145 | { | ||
146 | } | ||
147 | |||
148 | public void no_sensor() | ||
149 | { | ||
150 | } | ||
151 | |||
152 | public void control() | ||
153 | { | ||
154 | } | ||
155 | |||
156 | public void money() | ||
157 | { | ||
158 | } | ||
159 | |||
160 | public void email() | ||
161 | { | ||
162 | } | ||
163 | |||
164 | public void at_target() | ||
165 | { | ||
166 | } | ||
167 | |||
168 | public void not_at_target() | ||
169 | { | ||
170 | } | ||
171 | |||
172 | public void at_rot_target() | ||
173 | { | ||
174 | } | ||
175 | |||
176 | public void not_at_rot_target() | ||
177 | { | ||
178 | } | ||
179 | |||
180 | public void run_time_permissions() | ||
181 | { | ||
182 | } | ||
183 | |||
184 | public void changed() | ||
185 | { | ||
186 | } | ||
187 | |||
188 | public void attach() | ||
189 | { | ||
190 | } | ||
191 | |||
192 | public void dataserver() | ||
193 | { | ||
194 | } | ||
195 | |||
196 | public void link_message() | ||
197 | { | ||
198 | } | ||
199 | |||
200 | public void moving_start() | ||
201 | { | ||
202 | } | ||
203 | |||
204 | public void moving_end() | ||
205 | { | ||
206 | } | ||
207 | |||
208 | public void object_rez() | ||
209 | { | ||
210 | } | ||
211 | |||
212 | public void remote_data() | ||
213 | { | ||
214 | } | ||
129 | 215 | ||
216 | public void http_response() | ||
217 | { | ||
218 | } | ||
130 | } | 219 | } |
131 | } | 220 | } \ No newline at end of file |
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/EventQueueManager.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/EventQueueManager.cs index aa36ea2..d7491d9 100644 --- a/OpenSim/Region/ScriptEngine/DotNetEngine/EventQueueManager.cs +++ b/OpenSim/Region/ScriptEngine/DotNetEngine/EventQueueManager.cs | |||
@@ -27,12 +27,11 @@ | |||
27 | */ | 27 | */ |
28 | /* Original code: Tedd Hansen */ | 28 | /* Original code: Tedd Hansen */ |
29 | using System; | 29 | using System; |
30 | using System.Collections; | ||
30 | using System.Collections.Generic; | 31 | using System.Collections.Generic; |
31 | using System.Text; | ||
32 | using System.Threading; | 32 | using System.Threading; |
33 | using System.Reflection; | ||
34 | using OpenSim.Region.Environment.Scenes.Scripting; | ||
35 | using libsecondlife; | 33 | using libsecondlife; |
34 | using OpenSim.Region.Environment.Scenes.Scripting; | ||
36 | using OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL; | 35 | using OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL; |
37 | 36 | ||
38 | namespace OpenSim.Region.ScriptEngine.DotNetEngine | 37 | namespace OpenSim.Region.ScriptEngine.DotNetEngine |
@@ -42,25 +41,30 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
42 | /// Events are queued and executed in separate thread | 41 | /// Events are queued and executed in separate thread |
43 | /// </summary> | 42 | /// </summary> |
44 | [Serializable] | 43 | [Serializable] |
45 | class EventQueueManager | 44 | internal class EventQueueManager |
46 | { | 45 | { |
47 | /// <summary> | 46 | /// <summary> |
48 | /// List of threads processing event queue | 47 | /// List of threads processing event queue |
49 | /// </summary> | 48 | /// </summary> |
50 | private List<Thread> eventQueueThreads = new List<Thread>(); | 49 | private List<Thread> eventQueueThreads = new List<Thread>(); |
50 | |||
51 | private object queueLock = new object(); // Mutex lock object | 51 | private object queueLock = new object(); // Mutex lock object |
52 | |||
52 | /// <summary> | 53 | /// <summary> |
53 | /// How many ms to sleep if queue is empty | 54 | /// How many ms to sleep if queue is empty |
54 | /// </summary> | 55 | /// </summary> |
55 | private int nothingToDoSleepms = 50; | 56 | private int nothingToDoSleepms = 50; |
57 | |||
56 | /// <summary> | 58 | /// <summary> |
57 | /// How many threads to process queue with | 59 | /// How many threads to process queue with |
58 | /// </summary> | 60 | /// </summary> |
59 | private int numberOfThreads = 2; | 61 | private int numberOfThreads = 2; |
62 | |||
60 | /// <summary> | 63 | /// <summary> |
61 | /// Queue containing events waiting to be executed | 64 | /// Queue containing events waiting to be executed |
62 | /// </summary> | 65 | /// </summary> |
63 | private Queue<QueueItemStruct> eventQueue = new Queue<QueueItemStruct>(); | 66 | private Queue<QueueItemStruct> eventQueue = new Queue<QueueItemStruct>(); |
67 | |||
64 | /// <summary> | 68 | /// <summary> |
65 | /// Queue item structure | 69 | /// Queue item structure |
66 | /// </summary> | 70 | /// </summary> |
@@ -76,9 +80,11 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
76 | /// List of localID locks for mutex processing of script events | 80 | /// List of localID locks for mutex processing of script events |
77 | /// </summary> | 81 | /// </summary> |
78 | private List<uint> objectLocks = new List<uint>(); | 82 | private List<uint> objectLocks = new List<uint>(); |
83 | |||
79 | private object tryLockLock = new object(); // Mutex lock object | 84 | private object tryLockLock = new object(); // Mutex lock object |
80 | 85 | ||
81 | private ScriptEngine m_ScriptEngine; | 86 | private ScriptEngine m_ScriptEngine; |
87 | |||
82 | public EventQueueManager(ScriptEngine _ScriptEngine) | 88 | public EventQueueManager(ScriptEngine _ScriptEngine) |
83 | { | 89 | { |
84 | m_ScriptEngine = _ScriptEngine; | 90 | m_ScriptEngine = _ScriptEngine; |
@@ -96,11 +102,11 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
96 | EventQueueThread.Start(); | 102 | EventQueueThread.Start(); |
97 | } | 103 | } |
98 | } | 104 | } |
105 | |||
99 | ~EventQueueManager() | 106 | ~EventQueueManager() |
100 | { | 107 | { |
101 | |||
102 | // Kill worker threads | 108 | // Kill worker threads |
103 | foreach (Thread EventQueueThread in new System.Collections.ArrayList(eventQueueThreads)) | 109 | foreach (Thread EventQueueThread in new ArrayList(eventQueueThreads)) |
104 | { | 110 | { |
105 | if (EventQueueThread != null && EventQueueThread.IsAlive == true) | 111 | if (EventQueueThread != null && EventQueueThread.IsAlive == true) |
106 | { | 112 | { |
@@ -118,7 +124,6 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
118 | eventQueueThreads.Clear(); | 124 | eventQueueThreads.Clear(); |
119 | // Todo: Clean up our queues | 125 | // Todo: Clean up our queues |
120 | eventQueue.Clear(); | 126 | eventQueue.Clear(); |
121 | |||
122 | } | 127 | } |
123 | 128 | ||
124 | /// <summary> | 129 | /// <summary> |
@@ -176,18 +181,21 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
176 | // Execute function | 181 | // Execute function |
177 | try | 182 | try |
178 | { | 183 | { |
179 | m_ScriptEngine.m_ScriptManager.ExecuteEvent(QIS.localID, QIS.itemID, QIS.functionName, QIS.param); | 184 | m_ScriptEngine.m_ScriptManager.ExecuteEvent(QIS.localID, QIS.itemID, |
185 | QIS.functionName, QIS.param); | ||
180 | } | 186 | } |
181 | catch (Exception e) | 187 | catch (Exception e) |
182 | { | 188 | { |
183 | // DISPLAY ERROR INWORLD | 189 | // DISPLAY ERROR INWORLD |
184 | string text = "Error executing script function \"" + QIS.functionName + "\":\r\n"; | 190 | string text = "Error executing script function \"" + QIS.functionName + "\":\r\n"; |
185 | if (e.InnerException != null) | 191 | if (e.InnerException != null) |
186 | { // Send inner exception | 192 | { |
193 | // Send inner exception | ||
187 | text += e.InnerException.Message.ToString(); | 194 | text += e.InnerException.Message.ToString(); |
188 | } | 195 | } |
189 | else | 196 | else |
190 | { // Send normal | 197 | { |
198 | // Send normal | ||
191 | text += e.Message.ToString(); | 199 | text += e.Message.ToString(); |
192 | } | 200 | } |
193 | try | 201 | try |
@@ -195,28 +203,33 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
195 | if (text.Length > 1500) | 203 | if (text.Length > 1500) |
196 | text = text.Substring(0, 1500); | 204 | text = text.Substring(0, 1500); |
197 | IScriptHost m_host = m_ScriptEngine.World.GetSceneObjectPart(QIS.localID); | 205 | IScriptHost m_host = m_ScriptEngine.World.GetSceneObjectPart(QIS.localID); |
198 | //if (m_host != null) | 206 | //if (m_host != null) |
199 | //{ | 207 | //{ |
200 | m_ScriptEngine.World.SimChat(Helpers.StringToField(text), 1, 0, m_host.AbsolutePosition, m_host.Name, m_host.UUID); | 208 | m_ScriptEngine.World.SimChat(Helpers.StringToField(text), 1, 0, |
201 | } catch { | 209 | m_host.AbsolutePosition, m_host.Name, m_host.UUID); |
202 | //} | 210 | } |
203 | //else | 211 | catch |
204 | //{ | 212 | { |
213 | //} | ||
214 | //else | ||
215 | //{ | ||
205 | // T oconsole | 216 | // T oconsole |
206 | Console.WriteLine("Unable to send text in-world:\r\n" + text); | 217 | Console.WriteLine("Unable to send text in-world:\r\n" + text); |
207 | } | 218 | } |
208 | |||
209 | } | 219 | } |
210 | finally | 220 | finally |
211 | { | 221 | { |
212 | ReleaseLock(QIS.localID); | 222 | ReleaseLock(QIS.localID); |
213 | } | 223 | } |
214 | } | 224 | } |
215 | |||
216 | } // Something in queue | 225 | } // Something in queue |
217 | } catch (ThreadAbortException tae) { | 226 | } |
227 | catch (ThreadAbortException tae) | ||
228 | { | ||
218 | throw tae; | 229 | throw tae; |
219 | } catch (Exception e) { | 230 | } |
231 | catch (Exception e) | ||
232 | { | ||
220 | Console.WriteLine("Exception in EventQueueThreadLoop: " + e.ToString()); | 233 | Console.WriteLine("Exception in EventQueueThreadLoop: " + e.ToString()); |
221 | } | 234 | } |
222 | } // while | 235 | } // while |
@@ -283,15 +296,15 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
283 | return; | 296 | return; |
284 | } | 297 | } |
285 | 298 | ||
286 | Dictionary<LLUUID, LSL_BaseClass>.KeyCollection scriptKeys = m_ScriptEngine.m_ScriptManager.GetScriptKeys(localID); | 299 | Dictionary<LLUUID, LSL_BaseClass>.KeyCollection scriptKeys = |
300 | m_ScriptEngine.m_ScriptManager.GetScriptKeys(localID); | ||
287 | 301 | ||
288 | foreach ( LLUUID itemID in scriptKeys ) | 302 | foreach (LLUUID itemID in scriptKeys) |
289 | { | 303 | { |
290 | // Add to each script in that object | 304 | // Add to each script in that object |
291 | // TODO: Some scripts may not subscribe to this event. Should we NOT add it? Does it matter? | 305 | // TODO: Some scripts may not subscribe to this event. Should we NOT add it? Does it matter? |
292 | AddToScriptQueue(localID, itemID, FunctionName, param); | 306 | AddToScriptQueue(localID, itemID, FunctionName, param); |
293 | } | 307 | } |
294 | |||
295 | } | 308 | } |
296 | 309 | ||
297 | /// <summary> | 310 | /// <summary> |
@@ -316,6 +329,5 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
316 | eventQueue.Enqueue(QIS); | 329 | eventQueue.Enqueue(QIS); |
317 | } | 330 | } |
318 | } | 331 | } |
319 | |||
320 | } | 332 | } |
321 | } | 333 | } \ No newline at end of file |
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/LSLLongCmdHandler.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/LSLLongCmdHandler.cs index e6c2c47..5061629 100644 --- a/OpenSim/Region/ScriptEngine/DotNetEngine/LSLLongCmdHandler.cs +++ b/OpenSim/Region/ScriptEngine/DotNetEngine/LSLLongCmdHandler.cs | |||
@@ -28,24 +28,23 @@ | |||
28 | 28 | ||
29 | using System; | 29 | using System; |
30 | using System.Collections.Generic; | 30 | using System.Collections.Generic; |
31 | using System.Text; | ||
32 | using System.Threading; | 31 | using System.Threading; |
33 | using libsecondlife; | 32 | using libsecondlife; |
34 | using OpenSim.Region.ScriptEngine.Common; | ||
35 | using OpenSim.Region.Environment.Modules; | ||
36 | using OpenSim.Region.Environment.Interfaces; | 33 | using OpenSim.Region.Environment.Interfaces; |
34 | using OpenSim.Region.Environment.Modules; | ||
37 | 35 | ||
38 | namespace OpenSim.Region.ScriptEngine.DotNetEngine | 36 | namespace OpenSim.Region.ScriptEngine.DotNetEngine |
39 | { | 37 | { |
40 | /// <summary> | 38 | /// <summary> |
41 | /// Handles LSL commands that takes long time and returns an event, for example timers, HTTP requests, etc. | 39 | /// Handles LSL commands that takes long time and returns an event, for example timers, HTTP requests, etc. |
42 | /// </summary> | 40 | /// </summary> |
43 | class LSLLongCmdHandler | 41 | internal class LSLLongCmdHandler |
44 | { | 42 | { |
45 | private Thread cmdHandlerThread; | 43 | private Thread cmdHandlerThread; |
46 | private int cmdHandlerThreadCycleSleepms = 100; | 44 | private int cmdHandlerThreadCycleSleepms = 100; |
47 | 45 | ||
48 | private ScriptEngine m_ScriptEngine; | 46 | private ScriptEngine m_ScriptEngine; |
47 | |||
49 | public LSLLongCmdHandler(ScriptEngine _ScriptEngine) | 48 | public LSLLongCmdHandler(ScriptEngine _ScriptEngine) |
50 | { | 49 | { |
51 | m_ScriptEngine = _ScriptEngine; | 50 | m_ScriptEngine = _ScriptEngine; |
@@ -56,8 +55,8 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
56 | cmdHandlerThread.Priority = ThreadPriority.BelowNormal; | 55 | cmdHandlerThread.Priority = ThreadPriority.BelowNormal; |
57 | cmdHandlerThread.IsBackground = true; | 56 | cmdHandlerThread.IsBackground = true; |
58 | cmdHandlerThread.Start(); | 57 | cmdHandlerThread.Start(); |
59 | |||
60 | } | 58 | } |
59 | |||
61 | ~LSLLongCmdHandler() | 60 | ~LSLLongCmdHandler() |
62 | { | 61 | { |
63 | // Shut down thread | 62 | // Shut down thread |
@@ -72,7 +71,9 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
72 | } | 71 | } |
73 | } | 72 | } |
74 | } | 73 | } |
75 | catch { } | 74 | catch |
75 | { | ||
76 | } | ||
76 | } | 77 | } |
77 | 78 | ||
78 | private void CmdHandlerThreadLoop() | 79 | private void CmdHandlerThreadLoop() |
@@ -124,8 +125,10 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
124 | public double interval; | 125 | public double interval; |
125 | public DateTime next; | 126 | public DateTime next; |
126 | } | 127 | } |
128 | |||
127 | private List<TimerClass> Timers = new List<TimerClass>(); | 129 | private List<TimerClass> Timers = new List<TimerClass>(); |
128 | private object TimerListLock = new object(); | 130 | private object TimerListLock = new object(); |
131 | |||
129 | public void SetTimerEvent(uint m_localID, LLUUID m_itemID, double sec) | 132 | public void SetTimerEvent(uint m_localID, LLUUID m_itemID, double sec) |
130 | { | 133 | { |
131 | Console.WriteLine("SetTimerEvent"); | 134 | Console.WriteLine("SetTimerEvent"); |
@@ -146,6 +149,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
146 | Timers.Add(ts); | 149 | Timers.Add(ts); |
147 | } | 150 | } |
148 | } | 151 | } |
152 | |||
149 | public void UnSetTimerEvents(uint m_localID, LLUUID m_itemID) | 153 | public void UnSetTimerEvents(uint m_localID, LLUUID m_itemID) |
150 | { | 154 | { |
151 | // Remove from timer | 155 | // Remove from timer |
@@ -163,6 +167,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
163 | Timers = NewTimers; | 167 | Timers = NewTimers; |
164 | } | 168 | } |
165 | } | 169 | } |
170 | |||
166 | public void CheckTimerEvents() | 171 | public void CheckTimerEvents() |
167 | { | 172 | { |
168 | // Nothing to do here? | 173 | // Nothing to do here? |
@@ -171,7 +176,6 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
171 | 176 | ||
172 | lock (TimerListLock) | 177 | lock (TimerListLock) |
173 | { | 178 | { |
174 | |||
175 | // Go through all timers | 179 | // Go through all timers |
176 | foreach (TimerClass ts in Timers) | 180 | foreach (TimerClass ts in Timers) |
177 | { | 181 | { |
@@ -179,7 +183,8 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
179 | if (ts.next.ToUniversalTime() < DateTime.Now.ToUniversalTime()) | 183 | if (ts.next.ToUniversalTime() < DateTime.Now.ToUniversalTime()) |
180 | { | 184 | { |
181 | // Add it to queue | 185 | // Add it to queue |
182 | m_ScriptEngine.m_EventQueueManager.AddToScriptQueue(ts.localID, ts.itemID, "timer", new object[] { }); | 186 | m_ScriptEngine.m_EventQueueManager.AddToScriptQueue(ts.localID, ts.itemID, "timer", |
187 | new object[] {}); | ||
183 | // set next interval | 188 | // set next interval |
184 | 189 | ||
185 | 190 | ||
@@ -188,6 +193,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
188 | } | 193 | } |
189 | } // lock | 194 | } // lock |
190 | } | 195 | } |
196 | |||
191 | #endregion | 197 | #endregion |
192 | 198 | ||
193 | #region HTTP REQUEST | 199 | #region HTTP REQUEST |
@@ -213,10 +219,12 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
213 | { | 219 | { |
214 | // TODO: SEND REQUEST!!! | 220 | // TODO: SEND REQUEST!!! |
215 | } | 221 | } |
222 | |||
216 | public void Stop() | 223 | public void Stop() |
217 | { | 224 | { |
218 | // TODO: Cancel any ongoing request | 225 | // TODO: Cancel any ongoing request |
219 | } | 226 | } |
227 | |||
220 | public bool CheckResponse() | 228 | public bool CheckResponse() |
221 | { | 229 | { |
222 | // TODO: Check if we got a response yet, return true if so -- false if not | 230 | // TODO: Check if we got a response yet, return true if so -- false if not |
@@ -227,11 +235,12 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
227 | //response_status | 235 | //response_status |
228 | //response_metadata | 236 | //response_metadata |
229 | //response_body | 237 | //response_body |
230 | |||
231 | } | 238 | } |
232 | } | 239 | } |
240 | |||
233 | private List<HttpClass> HttpRequests = new List<HttpClass>(); | 241 | private List<HttpClass> HttpRequests = new List<HttpClass>(); |
234 | private object HttpListLock = new object(); | 242 | private object HttpListLock = new object(); |
243 | |||
235 | public void StartHttpRequest(uint localID, LLUUID itemID, string url, List<string> parameters, string body) | 244 | public void StartHttpRequest(uint localID, LLUUID itemID, string url, List<string> parameters, string body) |
236 | { | 245 | { |
237 | Console.WriteLine("StartHttpRequest"); | 246 | Console.WriteLine("StartHttpRequest"); |
@@ -244,11 +253,11 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
244 | htc.body = body; | 253 | htc.body = body; |
245 | lock (HttpListLock) | 254 | lock (HttpListLock) |
246 | { | 255 | { |
247 | |||
248 | //ADD REQUEST | 256 | //ADD REQUEST |
249 | HttpRequests.Add(htc); | 257 | HttpRequests.Add(htc); |
250 | } | 258 | } |
251 | } | 259 | } |
260 | |||
252 | public void StopHttpRequest(uint m_localID, LLUUID m_itemID) | 261 | public void StopHttpRequest(uint m_localID, LLUUID m_itemID) |
253 | { | 262 | { |
254 | // Remove from list | 263 | // Remove from list |
@@ -272,6 +281,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
272 | HttpRequests = NewHttpList; | 281 | HttpRequests = NewHttpList; |
273 | } | 282 | } |
274 | } | 283 | } |
284 | |||
275 | public void CheckHttpRequests() | 285 | public void CheckHttpRequests() |
276 | { | 286 | { |
277 | // Nothing to do here? | 287 | // Nothing to do here? |
@@ -282,68 +292,64 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
282 | { | 292 | { |
283 | foreach (HttpClass ts in HttpRequests) | 293 | foreach (HttpClass ts in HttpRequests) |
284 | { | 294 | { |
285 | |||
286 | if (ts.CheckResponse() == true) | 295 | if (ts.CheckResponse() == true) |
287 | { | 296 | { |
288 | // Add it to event queue | 297 | // Add it to event queue |
289 | //key request_id, integer status, list metadata, string body | 298 | //key request_id, integer status, list metadata, string body |
290 | object[] resobj = new object[] { ts.response_request_id, ts.response_status, ts.response_metadata, ts.response_body }; | 299 | object[] resobj = |
291 | m_ScriptEngine.m_EventQueueManager.AddToScriptQueue(ts.localID, ts.itemID, "http_response", resobj); | 300 | new object[] |
301 | {ts.response_request_id, ts.response_status, ts.response_metadata, ts.response_body}; | ||
302 | m_ScriptEngine.m_EventQueueManager.AddToScriptQueue(ts.localID, ts.itemID, "http_response", | ||
303 | resobj); | ||
292 | // Now stop it | 304 | // Now stop it |
293 | StopHttpRequest(ts.localID, ts.itemID); | 305 | StopHttpRequest(ts.localID, ts.itemID); |
294 | } | 306 | } |
295 | } | 307 | } |
296 | } // lock | 308 | } // lock |
297 | } | 309 | } |
310 | |||
298 | #endregion | 311 | #endregion |
299 | 312 | ||
300 | public void CheckXMLRPCRequests() | 313 | public void CheckXMLRPCRequests() |
301 | { | 314 | { |
302 | |||
303 | IXMLRPC xmlrpc = m_ScriptEngine.World.RequestModuleInterface<IXMLRPC>(); | 315 | IXMLRPC xmlrpc = m_ScriptEngine.World.RequestModuleInterface<IXMLRPC>(); |
304 | 316 | ||
305 | while (xmlrpc.hasRequests()) | 317 | while (xmlrpc.hasRequests()) |
306 | { | 318 | { |
307 | RPCRequestInfo rInfo = xmlrpc.GetNextRequest(); | 319 | RPCRequestInfo rInfo = xmlrpc.GetNextRequest(); |
308 | System.Console.WriteLine("PICKED REQUEST"); | 320 | Console.WriteLine("PICKED REQUEST"); |
309 | 321 | ||
310 | //Deliver data to prim's remote_data handler | 322 | //Deliver data to prim's remote_data handler |
311 | object[] resobj = new object[] { | 323 | object[] resobj = new object[] |
312 | 2, rInfo.GetChannelKey().ToString(), rInfo.GetMessageID().ToString(), "", rInfo.GetIntValue(), rInfo.GetStrVal() | 324 | { |
313 | }; | 325 | 2, rInfo.GetChannelKey().ToString(), rInfo.GetMessageID().ToString(), "", rInfo.GetIntValue(), |
326 | rInfo.GetStrVal() | ||
327 | }; | ||
314 | m_ScriptEngine.m_EventQueueManager.AddToScriptQueue( | 328 | m_ScriptEngine.m_EventQueueManager.AddToScriptQueue( |
315 | rInfo.GetLocalID(), rInfo.GetItemID(), "remote_data", resobj | 329 | rInfo.GetLocalID(), rInfo.GetItemID(), "remote_data", resobj |
316 | ); | 330 | ); |
317 | |||
318 | } | 331 | } |
319 | |||
320 | } | 332 | } |
321 | 333 | ||
322 | public void CheckListeners() | 334 | public void CheckListeners() |
323 | { | 335 | { |
324 | |||
325 | IWorldComm comms = m_ScriptEngine.World.RequestModuleInterface<IWorldComm>(); | 336 | IWorldComm comms = m_ScriptEngine.World.RequestModuleInterface<IWorldComm>(); |
326 | 337 | ||
327 | while (comms.HasMessages()) | 338 | while (comms.HasMessages()) |
328 | { | 339 | { |
329 | ListenerInfo lInfo = comms.GetNextMessage(); | 340 | ListenerInfo lInfo = comms.GetNextMessage(); |
330 | System.Console.WriteLine("PICKED LISTENER"); | 341 | Console.WriteLine("PICKED LISTENER"); |
331 | 342 | ||
332 | //Deliver data to prim's listen handler | 343 | //Deliver data to prim's listen handler |
333 | object[] resobj = new object[] { | 344 | object[] resobj = new object[] |
334 | lInfo.GetChannel(), lInfo.GetName(), lInfo.GetID().ToString(), lInfo.GetMessage() | 345 | { |
335 | }; | 346 | lInfo.GetChannel(), lInfo.GetName(), lInfo.GetID().ToString(), lInfo.GetMessage() |
347 | }; | ||
336 | 348 | ||
337 | m_ScriptEngine.m_EventQueueManager.AddToScriptQueue( | 349 | m_ScriptEngine.m_EventQueueManager.AddToScriptQueue( |
338 | lInfo.GetLocalID(), lInfo.GetItemID(), "listen", resobj | 350 | lInfo.GetLocalID(), lInfo.GetItemID(), "listen", resobj |
339 | ); | 351 | ); |
340 | |||
341 | } | 352 | } |
342 | |||
343 | } | 353 | } |
344 | |||
345 | |||
346 | |||
347 | |||
348 | } | 354 | } |
349 | } | 355 | } \ No newline at end of file |
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/Properties/AssemblyInfo.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/Properties/AssemblyInfo.cs index 0aa1a0b..00027ca 100644 --- a/OpenSim/Region/ScriptEngine/DotNetEngine/Properties/AssemblyInfo.cs +++ b/OpenSim/Region/ScriptEngine/DotNetEngine/Properties/AssemblyInfo.cs | |||
@@ -1,26 +1,28 @@ | |||
1 | using System.Reflection; | 1 | using System.Reflection; |
2 | using System.Runtime.CompilerServices; | ||
3 | using System.Runtime.InteropServices; | 2 | using System.Runtime.InteropServices; |
4 | 3 | ||
5 | // General Information about an assembly is controlled through the following | 4 | // General Information about an assembly is controlled through the following |
6 | // set of attributes. Change these attribute values to modify the information | 5 | // set of attributes. Change these attribute values to modify the information |
7 | // associated with an assembly. | 6 | // associated with an assembly. |
8 | [assembly: AssemblyTitle("OpenSim.Region.ScriptEngine.DotNetEngine")] | 7 | |
9 | [assembly: AssemblyDescription("")] | 8 | [assembly : AssemblyTitle("OpenSim.Region.ScriptEngine.DotNetEngine")] |
10 | [assembly: AssemblyConfiguration("")] | 9 | [assembly : AssemblyDescription("")] |
11 | [assembly: AssemblyCompany("")] | 10 | [assembly : AssemblyConfiguration("")] |
12 | [assembly: AssemblyProduct("OpenSim.Region.ScriptEngine.DotNetEngine")] | 11 | [assembly : AssemblyCompany("")] |
13 | [assembly: AssemblyCopyright("Copyright © 2007")] | 12 | [assembly : AssemblyProduct("OpenSim.Region.ScriptEngine.DotNetEngine")] |
14 | [assembly: AssemblyTrademark("")] | 13 | [assembly : AssemblyCopyright("Copyright © 2007")] |
15 | [assembly: AssemblyCulture("")] | 14 | [assembly : AssemblyTrademark("")] |
15 | [assembly : AssemblyCulture("")] | ||
16 | 16 | ||
17 | // Setting ComVisible to false makes the types in this assembly not visible | 17 | // Setting ComVisible to false makes the types in this assembly not visible |
18 | // to COM components. If you need to access a type in this assembly from | 18 | // to COM components. If you need to access a type in this assembly from |
19 | // COM, set the ComVisible attribute to true on that type. | 19 | // COM, set the ComVisible attribute to true on that type. |
20 | [assembly: ComVisible(false)] | 20 | |
21 | [assembly : ComVisible(false)] | ||
21 | 22 | ||
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM | 23 | // The following GUID is for the ID of the typelib if this project is exposed to COM |
23 | [assembly: Guid("2842257e-6fde-4460-9368-4cde57fa9cc4")] | 24 | |
25 | [assembly : Guid("2842257e-6fde-4460-9368-4cde57fa9cc4")] | ||
24 | 26 | ||
25 | // Version information for an assembly consists of the following four values: | 27 | // Version information for an assembly consists of the following four values: |
26 | // | 28 | // |
@@ -31,5 +33,6 @@ using System.Runtime.InteropServices; | |||
31 | // | 33 | // |
32 | // You can specify all the values or you can default the Revision and Build Numbers | 34 | // You can specify all the values or you can default the Revision and Build Numbers |
33 | // by using the '*' as shown below: | 35 | // by using the '*' as shown below: |
34 | [assembly: AssemblyVersion("1.0.0.0")] | 36 | |
35 | [assembly: AssemblyFileVersion("1.0.0.0")] | 37 | [assembly : AssemblyVersion("1.0.0.0")] |
38 | [assembly : AssemblyFileVersion("1.0.0.0")] \ No newline at end of file | ||
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptEngine.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptEngine.cs index 38bf746..eaa3a09 100644 --- a/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptEngine.cs +++ b/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptEngine.cs | |||
@@ -27,14 +27,10 @@ | |||
27 | */ | 27 | */ |
28 | /* Original code: Tedd Hansen */ | 28 | /* Original code: Tedd Hansen */ |
29 | using System; | 29 | using System; |
30 | using System.Collections.Generic; | 30 | using Nini.Config; |
31 | using System.Text; | ||
32 | using OpenSim.Framework.Console; | 31 | using OpenSim.Framework.Console; |
33 | using OpenSim.Region.Environment.Scenes; | ||
34 | using OpenSim.Region.Environment.Scenes.Scripting; | ||
35 | using OpenSim.Region.Environment.Interfaces; | 32 | using OpenSim.Region.Environment.Interfaces; |
36 | using libsecondlife; | 33 | using OpenSim.Region.Environment.Scenes; |
37 | using Nini.Config; | ||
38 | 34 | ||
39 | namespace OpenSim.Region.ScriptEngine.DotNetEngine | 35 | namespace OpenSim.Region.ScriptEngine.DotNetEngine |
40 | { | 36 | { |
@@ -42,17 +38,16 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
42 | /// This is the root object for ScriptEngine | 38 | /// This is the root object for ScriptEngine |
43 | /// </summary> | 39 | /// </summary> |
44 | [Serializable] | 40 | [Serializable] |
45 | public class ScriptEngine :IRegionModule | 41 | public class ScriptEngine : IRegionModule |
46 | { | 42 | { |
47 | 43 | internal Scene World; | |
48 | internal OpenSim.Region.Environment.Scenes.Scene World; | 44 | internal EventManager m_EventManager; // Handles and queues incoming events from OpenSim |
49 | internal EventManager m_EventManager; // Handles and queues incoming events from OpenSim | 45 | internal EventQueueManager m_EventQueueManager; // Executes events |
50 | internal EventQueueManager m_EventQueueManager; // Executes events | 46 | internal ScriptManager m_ScriptManager; // Load, unload and execute scripts |
51 | internal ScriptManager m_ScriptManager; // Load, unload and execute scripts | ||
52 | internal AppDomainManager m_AppDomainManager; | 47 | internal AppDomainManager m_AppDomainManager; |
53 | internal LSLLongCmdHandler m_LSLLongCmdHandler; | 48 | internal LSLLongCmdHandler m_LSLLongCmdHandler; |
54 | 49 | ||
55 | private OpenSim.Framework.Console.LogBase m_log; | 50 | private LogBase m_log; |
56 | 51 | ||
57 | public ScriptEngine() | 52 | public ScriptEngine() |
58 | { | 53 | { |
@@ -65,9 +60,8 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
65 | get { return m_log; } | 60 | get { return m_log; } |
66 | } | 61 | } |
67 | 62 | ||
68 | public void InitializeEngine(OpenSim.Region.Environment.Scenes.Scene Sceneworld, OpenSim.Framework.Console.LogBase logger) | 63 | public void InitializeEngine(Scene Sceneworld, LogBase logger) |
69 | { | 64 | { |
70 | |||
71 | World = Sceneworld; | 65 | World = Sceneworld; |
72 | m_log = logger; | 66 | m_log = logger; |
73 | 67 | ||
@@ -84,10 +78,8 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
84 | 78 | ||
85 | // Should we iterate the region for scripts that needs starting? | 79 | // Should we iterate the region for scripts that needs starting? |
86 | // Or can we assume we are loaded before anything else so we can use proper events? | 80 | // Or can we assume we are loaded before anything else so we can use proper events? |
87 | |||
88 | |||
89 | } | 81 | } |
90 | 82 | ||
91 | public void Shutdown() | 83 | public void Shutdown() |
92 | { | 84 | { |
93 | // We are shutting down | 85 | // We are shutting down |
@@ -106,12 +98,11 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
106 | 98 | ||
107 | public void Initialise(Scene scene, IConfigSource config) | 99 | public void Initialise(Scene scene, IConfigSource config) |
108 | { | 100 | { |
109 | this.InitializeEngine(scene, MainLog.Instance); | 101 | InitializeEngine(scene, MainLog.Instance); |
110 | } | 102 | } |
111 | 103 | ||
112 | public void PostInitialise() | 104 | public void PostInitialise() |
113 | { | 105 | { |
114 | |||
115 | } | 106 | } |
116 | 107 | ||
117 | public void Close() | 108 | public void Close() |
@@ -130,4 +121,4 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
130 | 121 | ||
131 | #endregion | 122 | #endregion |
132 | } | 123 | } |
133 | } | 124 | } \ No newline at end of file |
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptManager.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptManager.cs index 381fd8c..54a5ef5 100644 --- a/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptManager.cs +++ b/OpenSim/Region/ScriptEngine/DotNetEngine/ScriptManager.cs | |||
@@ -28,19 +28,14 @@ | |||
28 | /* Original code: Tedd Hansen */ | 28 | /* Original code: Tedd Hansen */ |
29 | using System; | 29 | using System; |
30 | using System.Collections.Generic; | 30 | using System.Collections.Generic; |
31 | using System.Text; | 31 | using System.IO; |
32 | using System.Threading; | ||
33 | using System.Reflection; | 32 | using System.Reflection; |
34 | using System.Runtime.Remoting; | ||
35 | using System.Runtime.Serialization; | ||
36 | using System.Runtime.Serialization.Formatters.Binary; | 33 | using System.Runtime.Serialization.Formatters.Binary; |
34 | using System.Threading; | ||
35 | using libsecondlife; | ||
37 | using OpenSim.Region.Environment.Scenes; | 36 | using OpenSim.Region.Environment.Scenes; |
38 | using OpenSim.Region.Environment.Scenes.Scripting; | ||
39 | using OpenSim.Region.ScriptEngine.DotNetEngine.Compiler; | 37 | using OpenSim.Region.ScriptEngine.DotNetEngine.Compiler; |
40 | using OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL; | 38 | using OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL; |
41 | using OpenSim.Region.ScriptEngine.Common; | ||
42 | using libsecondlife; | ||
43 | |||
44 | 39 | ||
45 | namespace OpenSim.Region.ScriptEngine.DotNetEngine | 40 | namespace OpenSim.Region.ScriptEngine.DotNetEngine |
46 | { | 41 | { |
@@ -53,16 +48,19 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
53 | public class ScriptManager | 48 | public class ScriptManager |
54 | { | 49 | { |
55 | #region Declares | 50 | #region Declares |
51 | |||
56 | private Thread scriptLoadUnloadThread; | 52 | private Thread scriptLoadUnloadThread; |
57 | private int scriptLoadUnloadThread_IdleSleepms = 100; | 53 | private int scriptLoadUnloadThread_IdleSleepms = 100; |
58 | private Queue<LoadStruct> loadQueue = new Queue<LoadStruct>(); | 54 | private Queue<LoadStruct> loadQueue = new Queue<LoadStruct>(); |
59 | private Queue<UnloadStruct> unloadQueue = new Queue<UnloadStruct>(); | 55 | private Queue<UnloadStruct> unloadQueue = new Queue<UnloadStruct>(); |
56 | |||
60 | private struct LoadStruct | 57 | private struct LoadStruct |
61 | { | 58 | { |
62 | public uint localID; | 59 | public uint localID; |
63 | public LLUUID itemID; | 60 | public LLUUID itemID; |
64 | public string script; | 61 | public string script; |
65 | } | 62 | } |
63 | |||
66 | private struct UnloadStruct | 64 | private struct UnloadStruct |
67 | { | 65 | { |
68 | public uint localID; | 66 | public uint localID; |
@@ -72,17 +70,20 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
72 | // Object<string, Script<string, script>> | 70 | // Object<string, Script<string, script>> |
73 | // IMPORTANT: Types and MemberInfo-derived objects require a LOT of memory. | 71 | // IMPORTANT: Types and MemberInfo-derived objects require a LOT of memory. |
74 | // Instead use RuntimeTypeHandle, RuntimeFieldHandle and RunTimeHandle (IntPtr) instead! | 72 | // Instead use RuntimeTypeHandle, RuntimeFieldHandle and RunTimeHandle (IntPtr) instead! |
75 | internal Dictionary<uint, Dictionary<LLUUID, LSL_BaseClass>> Scripts = new Dictionary<uint, Dictionary<LLUUID, LSL_BaseClass>>(); | 73 | internal Dictionary<uint, Dictionary<LLUUID, LSL_BaseClass>> Scripts = |
74 | new Dictionary<uint, Dictionary<LLUUID, LSL_BaseClass>>(); | ||
75 | |||
76 | public Scene World | 76 | public Scene World |
77 | { | 77 | { |
78 | get | 78 | get { return m_scriptEngine.World; } |
79 | { | ||
80 | return m_scriptEngine.World; | ||
81 | } | ||
82 | } | 79 | } |
83 | #endregion | 80 | |
81 | #endregion | ||
82 | |||
84 | #region Object init/shutdown | 83 | #region Object init/shutdown |
84 | |||
85 | private ScriptEngine m_scriptEngine; | 85 | private ScriptEngine m_scriptEngine; |
86 | |||
86 | public ScriptManager(ScriptEngine scriptEngine) | 87 | public ScriptManager(ScriptEngine scriptEngine) |
87 | { | 88 | { |
88 | m_scriptEngine = scriptEngine; | 89 | m_scriptEngine = scriptEngine; |
@@ -92,9 +93,9 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
92 | scriptLoadUnloadThread.IsBackground = true; | 93 | scriptLoadUnloadThread.IsBackground = true; |
93 | scriptLoadUnloadThread.Priority = ThreadPriority.BelowNormal; | 94 | scriptLoadUnloadThread.Priority = ThreadPriority.BelowNormal; |
94 | scriptLoadUnloadThread.Start(); | 95 | scriptLoadUnloadThread.Start(); |
95 | |||
96 | } | 96 | } |
97 | ~ScriptManager () | 97 | |
98 | ~ScriptManager() | ||
98 | { | 99 | { |
99 | // Abort load/unload thread | 100 | // Abort load/unload thread |
100 | try | 101 | try |
@@ -112,8 +113,11 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
112 | { | 113 | { |
113 | } | 114 | } |
114 | } | 115 | } |
116 | |||
115 | #endregion | 117 | #endregion |
118 | |||
116 | #region Load / Unload scripts (Thread loop) | 119 | #region Load / Unload scripts (Thread loop) |
120 | |||
117 | private void ScriptLoadUnloadThreadLoop() | 121 | private void ScriptLoadUnloadThreadLoop() |
118 | { | 122 | { |
119 | try | 123 | try |
@@ -134,9 +138,6 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
134 | UnloadStruct item = unloadQueue.Dequeue(); | 138 | UnloadStruct item = unloadQueue.Dequeue(); |
135 | _StopScript(item.localID, item.itemID); | 139 | _StopScript(item.localID, item.itemID); |
136 | } | 140 | } |
137 | |||
138 | |||
139 | |||
140 | } | 141 | } |
141 | } | 142 | } |
142 | catch (ThreadAbortException tae) | 143 | catch (ThreadAbortException tae) |
@@ -145,21 +146,22 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
145 | a = ""; | 146 | a = ""; |
146 | // Expected | 147 | // Expected |
147 | } | 148 | } |
148 | |||
149 | } | 149 | } |
150 | |||
150 | #endregion | 151 | #endregion |
152 | |||
151 | #region Helper functions | 153 | #region Helper functions |
154 | |||
152 | private static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args) | 155 | private static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args) |
153 | { | 156 | { |
154 | |||
155 | //Console.WriteLine("ScriptManager.CurrentDomain_AssemblyResolve: " + args.Name); | 157 | //Console.WriteLine("ScriptManager.CurrentDomain_AssemblyResolve: " + args.Name); |
156 | return Assembly.GetExecutingAssembly().FullName == args.Name ? Assembly.GetExecutingAssembly() : null; | 158 | return Assembly.GetExecutingAssembly().FullName == args.Name ? Assembly.GetExecutingAssembly() : null; |
157 | |||
158 | } | 159 | } |
159 | 160 | ||
160 | |||
161 | #endregion | 161 | #endregion |
162 | |||
162 | #region Internal functions to keep track of script | 163 | #region Internal functions to keep track of script |
164 | |||
163 | internal Dictionary<LLUUID, LSL_BaseClass>.KeyCollection GetScriptKeys(uint localID) | 165 | internal Dictionary<LLUUID, LSL_BaseClass>.KeyCollection GetScriptKeys(uint localID) |
164 | { | 166 | { |
165 | if (Scripts.ContainsKey(localID) == false) | 167 | if (Scripts.ContainsKey(localID) == false) |
@@ -169,7 +171,6 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
169 | Scripts.TryGetValue(localID, out Obj); | 171 | Scripts.TryGetValue(localID, out Obj); |
170 | 172 | ||
171 | return Obj.Keys; | 173 | return Obj.Keys; |
172 | |||
173 | } | 174 | } |
174 | 175 | ||
175 | internal LSL_BaseClass GetScript(uint localID, LLUUID itemID) | 176 | internal LSL_BaseClass GetScript(uint localID, LLUUID itemID) |
@@ -187,8 +188,8 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
187 | Obj.TryGetValue(itemID, out Script); | 188 | Obj.TryGetValue(itemID, out Script); |
188 | 189 | ||
189 | return Script; | 190 | return Script; |
190 | |||
191 | } | 191 | } |
192 | |||
192 | internal void SetScript(uint localID, LLUUID itemID, LSL_BaseClass Script) | 193 | internal void SetScript(uint localID, LLUUID itemID, LSL_BaseClass Script) |
193 | { | 194 | { |
194 | // Create object if it doesn't exist | 195 | // Create object if it doesn't exist |
@@ -205,8 +206,8 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
205 | 206 | ||
206 | // Add to object | 207 | // Add to object |
207 | Obj.Add(itemID, Script); | 208 | Obj.Add(itemID, Script); |
208 | |||
209 | } | 209 | } |
210 | |||
210 | internal void RemoveScript(uint localID, LLUUID itemID) | 211 | internal void RemoveScript(uint localID, LLUUID itemID) |
211 | { | 212 | { |
212 | // Don't have that object? | 213 | // Don't have that object? |
@@ -218,10 +219,12 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
218 | Scripts.TryGetValue(localID, out Obj); | 219 | Scripts.TryGetValue(localID, out Obj); |
219 | if (Obj.ContainsKey(itemID) == true) | 220 | if (Obj.ContainsKey(itemID) == true) |
220 | Obj.Remove(itemID); | 221 | Obj.Remove(itemID); |
221 | |||
222 | } | 222 | } |
223 | |||
223 | #endregion | 224 | #endregion |
225 | |||
224 | #region Start/Stop/Reset script | 226 | #region Start/Stop/Reset script |
227 | |||
225 | /// <summary> | 228 | /// <summary> |
226 | /// Fetches, loads and hooks up a script to an objects events | 229 | /// Fetches, loads and hooks up a script to an objects events |
227 | /// </summary> | 230 | /// </summary> |
@@ -235,6 +238,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
235 | ls.script = Script; | 238 | ls.script = Script; |
236 | loadQueue.Enqueue(ls); | 239 | loadQueue.Enqueue(ls); |
237 | } | 240 | } |
241 | |||
238 | /// <summary> | 242 | /// <summary> |
239 | /// Disables and unloads a script | 243 | /// Disables and unloads a script |
240 | /// </summary> | 244 | /// </summary> |
@@ -247,6 +251,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
247 | ls.itemID = itemID; | 251 | ls.itemID = itemID; |
248 | unloadQueue.Enqueue(ls); | 252 | unloadQueue.Enqueue(ls); |
249 | } | 253 | } |
254 | |||
250 | public void ResetScript(uint localID, LLUUID itemID) | 255 | public void ResetScript(uint localID, LLUUID itemID) |
251 | { | 256 | { |
252 | string script = GetScript(localID, itemID).SourceCode; | 257 | string script = GetScript(localID, itemID).SourceCode; |
@@ -267,12 +272,8 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
267 | 272 | ||
268 | try | 273 | try |
269 | { | 274 | { |
270 | |||
271 | |||
272 | |||
273 | |||
274 | // Create a new instance of the compiler (currently we don't want reuse) | 275 | // Create a new instance of the compiler (currently we don't want reuse) |
275 | OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL.Compiler LSLCompiler = new OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL.Compiler(); | 276 | Compiler.LSL.Compiler LSLCompiler = new Compiler.LSL.Compiler(); |
276 | // Compile (We assume LSL) | 277 | // Compile (We assume LSL) |
277 | ScriptSource = LSLCompiler.CompileFromLSLText(Script); | 278 | ScriptSource = LSLCompiler.CompileFromLSLText(Script); |
278 | //Console.WriteLine("Compilation of " + FileName + " done"); | 279 | //Console.WriteLine("Compilation of " + FileName + " done"); |
@@ -289,10 +290,10 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
289 | CompiledScript = m_scriptEngine.m_AppDomainManager.LoadScript(ScriptSource); | 290 | CompiledScript = m_scriptEngine.m_AppDomainManager.LoadScript(ScriptSource); |
290 | 291 | ||
291 | #if DEBUG | 292 | #if DEBUG |
292 | Console.WriteLine("Script " + itemID + " occupies {0} bytes", GC.GetTotalMemory(true) - before); | 293 | Console.WriteLine("Script " + itemID + " occupies {0} bytes", GC.GetTotalMemory(true) - before); |
293 | #endif | 294 | #endif |
294 | 295 | ||
295 | CompiledScript.SourceCode = ScriptSource; | 296 | CompiledScript.SourceCode = ScriptSource; |
296 | // Add it to our script memstruct | 297 | // Add it to our script memstruct |
297 | SetScript(localID, itemID, CompiledScript); | 298 | SetScript(localID, itemID, CompiledScript); |
298 | 299 | ||
@@ -306,9 +307,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
306 | CompiledScript.Start(LSLB); | 307 | CompiledScript.Start(LSLB); |
307 | 308 | ||
308 | // Fire the first start-event | 309 | // Fire the first start-event |
309 | m_scriptEngine.m_EventQueueManager.AddToScriptQueue(localID, itemID, "state_entry", new object[] { }); | 310 | m_scriptEngine.m_EventQueueManager.AddToScriptQueue(localID, itemID, "state_entry", new object[] {}); |
310 | |||
311 | |||
312 | } | 311 | } |
313 | catch (Exception e) | 312 | catch (Exception e) |
314 | { | 313 | { |
@@ -326,9 +325,6 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
326 | m_scriptEngine.Log.Error("ScriptEngine", "Error displaying error in-world: " + e2.ToString()); | 325 | m_scriptEngine.Log.Error("ScriptEngine", "Error displaying error in-world: " + e2.ToString()); |
327 | } | 326 | } |
328 | } | 327 | } |
329 | |||
330 | |||
331 | |||
332 | } | 328 | } |
333 | 329 | ||
334 | private void _StopScript(uint localID, LLUUID itemID) | 330 | private void _StopScript(uint localID, LLUUID itemID) |
@@ -359,19 +355,24 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
359 | // Tell AppDomain that we have stopped script | 355 | // Tell AppDomain that we have stopped script |
360 | m_scriptEngine.m_AppDomainManager.StopScript(ad); | 356 | m_scriptEngine.m_AppDomainManager.StopScript(ad); |
361 | } | 357 | } |
362 | catch(Exception e) | 358 | catch (Exception e) |
363 | { | 359 | { |
364 | Console.WriteLine("Exception stopping script localID: " + localID + " LLUID: " + itemID.ToString() + ": " + e.ToString()); | 360 | Console.WriteLine("Exception stopping script localID: " + localID + " LLUID: " + itemID.ToString() + |
361 | ": " + e.ToString()); | ||
365 | } | 362 | } |
366 | } | 363 | } |
367 | private string ProcessYield(string FileName) | 364 | |
365 | private string ProcessYield(string FileName) | ||
368 | { | 366 | { |
369 | // TODO: Create a new assembly and copy old but insert Yield Code | 367 | // TODO: Create a new assembly and copy old but insert Yield Code |
370 | //return TempDotNetMicroThreadingCodeInjector.TestFix(FileName); | 368 | //return TempDotNetMicroThreadingCodeInjector.TestFix(FileName); |
371 | return FileName; | 369 | return FileName; |
372 | } | 370 | } |
371 | |||
373 | #endregion | 372 | #endregion |
373 | |||
374 | #region Perform event execution in script | 374 | #region Perform event execution in script |
375 | |||
375 | /// <summary> | 376 | /// <summary> |
376 | /// Execute a LL-event-function in Script | 377 | /// Execute a LL-event-function in Script |
377 | /// </summary> | 378 | /// </summary> |
@@ -381,7 +382,6 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
381 | /// <param name="args">Arguments to pass to function</param> | 382 | /// <param name="args">Arguments to pass to function</param> |
382 | internal void ExecuteEvent(uint localID, LLUUID itemID, string FunctionName, object[] args) | 383 | internal void ExecuteEvent(uint localID, LLUUID itemID, string FunctionName, object[] args) |
383 | { | 384 | { |
384 | |||
385 | // Execute a function in the script | 385 | // Execute a function in the script |
386 | //m_scriptEngine.Log.Verbose("ScriptEngine", "Executing Function localID: " + localID + ", itemID: " + itemID + ", FunctionName: " + FunctionName); | 386 | //m_scriptEngine.Log.Verbose("ScriptEngine", "Executing Function localID: " + localID + ", itemID: " + itemID + ", FunctionName: " + FunctionName); |
387 | LSL_BaseClass Script = m_scriptEngine.m_ScriptManager.GetScript(localID, itemID); | 387 | LSL_BaseClass Script = m_scriptEngine.m_ScriptManager.GetScript(localID, itemID); |
@@ -390,28 +390,29 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
390 | 390 | ||
391 | // Must be done in correct AppDomain, so leaving it up to the script itself | 391 | // Must be done in correct AppDomain, so leaving it up to the script itself |
392 | Script.Exec.ExecuteEvent(FunctionName, args); | 392 | Script.Exec.ExecuteEvent(FunctionName, args); |
393 | |||
394 | } | 393 | } |
394 | |||
395 | #endregion | 395 | #endregion |
396 | 396 | ||
397 | #region Script serialization/deserialization | 397 | #region Script serialization/deserialization |
398 | |||
398 | public void GetSerializedScript(uint localID, LLUUID itemID) | 399 | public void GetSerializedScript(uint localID, LLUUID itemID) |
399 | { | 400 | { |
400 | // Serialize the script and return it | 401 | // Serialize the script and return it |
401 | // Should not be a problem | 402 | // Should not be a problem |
402 | System.IO.FileStream fs = System.IO.File.Create("SERIALIZED_SCRIPT_" + itemID); | 403 | FileStream fs = File.Create("SERIALIZED_SCRIPT_" + itemID); |
403 | BinaryFormatter b = new BinaryFormatter(); | 404 | BinaryFormatter b = new BinaryFormatter(); |
404 | b.Serialize(fs, GetScript(localID,itemID)); | 405 | b.Serialize(fs, GetScript(localID, itemID)); |
405 | fs.Close(); | 406 | fs.Close(); |
406 | |||
407 | |||
408 | } | 407 | } |
408 | |||
409 | public void PutSerializedScript(uint localID, LLUUID itemID) | 409 | public void PutSerializedScript(uint localID, LLUUID itemID) |
410 | { | 410 | { |
411 | // Deserialize the script and inject it into an AppDomain | 411 | // Deserialize the script and inject it into an AppDomain |
412 | 412 | ||
413 | // How to inject into an AppDomain? | 413 | // How to inject into an AppDomain? |
414 | } | 414 | } |
415 | |||
415 | #endregion | 416 | #endregion |
416 | } | 417 | } |
417 | } | 418 | } \ No newline at end of file |
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/TempDotNetMicroThreadingCodeInjector.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/TempDotNetMicroThreadingCodeInjector.cs index 8f935f1..072c249 100644 --- a/OpenSim/Region/ScriptEngine/DotNetEngine/TempDotNetMicroThreadingCodeInjector.cs +++ b/OpenSim/Region/ScriptEngine/DotNetEngine/TempDotNetMicroThreadingCodeInjector.cs | |||
@@ -27,12 +27,9 @@ | |||
27 | */ | 27 | */ |
28 | 28 | ||
29 | using System; | 29 | using System; |
30 | using System.Collections.Generic; | 30 | using System.IO; |
31 | using System.Text; | ||
32 | using Rail.Transformation; | ||
33 | using Rail.Reflect; | 31 | using Rail.Reflect; |
34 | using Rail.Exceptions; | 32 | using Rail.Transformation; |
35 | using Rail.MSIL; | ||
36 | 33 | ||
37 | namespace OpenSim.Region.ScriptEngine.DotNetEngine | 34 | namespace OpenSim.Region.ScriptEngine.DotNetEngine |
38 | { | 35 | { |
@@ -40,25 +37,25 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
40 | /// Tedds Sandbox for RAIL/microtrheading. This class is only for testing purposes! | 37 | /// Tedds Sandbox for RAIL/microtrheading. This class is only for testing purposes! |
41 | /// Its offspring will be the actual implementation. | 38 | /// Its offspring will be the actual implementation. |
42 | /// </summary> | 39 | /// </summary> |
43 | class TempDotNetMicroThreadingCodeInjector | 40 | internal class TempDotNetMicroThreadingCodeInjector |
44 | { | 41 | { |
45 | public static string TestFix(string FileName) | 42 | public static string TestFix(string FileName) |
46 | { | 43 | { |
47 | string ret = System.IO.Path.GetFileNameWithoutExtension(FileName + "_fixed.dll"); | 44 | string ret = Path.GetFileNameWithoutExtension(FileName + "_fixed.dll"); |
48 | 45 | ||
49 | Console.WriteLine("Loading: \"" + FileName + "\""); | 46 | Console.WriteLine("Loading: \"" + FileName + "\""); |
50 | RAssemblyDef rAssembly = RAssemblyDef.LoadAssembly(FileName); | 47 | RAssemblyDef rAssembly = RAssemblyDef.LoadAssembly(FileName); |
51 | 48 | ||
52 | 49 | ||
53 | //Get the type of the method to copy from assembly Teste2.exe to assembly Teste.exe | 50 | //Get the type of the method to copy from assembly Teste2.exe to assembly Teste.exe |
54 | RTypeDef type = (RTypeDef)rAssembly.RModuleDef.GetType("SecondLife.Script"); | 51 | RTypeDef type = (RTypeDef) rAssembly.RModuleDef.GetType("SecondLife.Script"); |
55 | 52 | ||
56 | //Get the methods in the type | 53 | //Get the methods in the type |
57 | RMethod[] m = type.GetMethods(); | 54 | RMethod[] m = type.GetMethods(); |
58 | 55 | ||
59 | //Create a MethodPrologueAdder visitor object with the method to add | 56 | //Create a MethodPrologueAdder visitor object with the method to add |
60 | //and with the flag that enables local variable creation set to true | 57 | //and with the flag that enables local variable creation set to true |
61 | MethodPrologueAdder mpa = new MethodPrologueAdder((RMethodDef)m[0], true); | 58 | MethodPrologueAdder mpa = new MethodPrologueAdder((RMethodDef) m[0], true); |
62 | 59 | ||
63 | //Apply the changes to the assembly | 60 | //Apply the changes to the assembly |
64 | rAssembly.Accept(mpa); | 61 | rAssembly.Accept(mpa); |
@@ -67,7 +64,6 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
67 | rAssembly.SaveAssembly(ret); | 64 | rAssembly.SaveAssembly(ret); |
68 | 65 | ||
69 | return ret; | 66 | return ret; |
70 | |||
71 | } | 67 | } |
72 | } | 68 | } |
73 | } | 69 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Storage/OpenSim.DataStore.MonoSqlite/MonoSqliteDataStore.cs b/OpenSim/Region/Storage/OpenSim.DataStore.MonoSqlite/MonoSqliteDataStore.cs index 729db7e..1b16a07 100644 --- a/OpenSim/Region/Storage/OpenSim.DataStore.MonoSqlite/MonoSqliteDataStore.cs +++ b/OpenSim/Region/Storage/OpenSim.DataStore.MonoSqlite/MonoSqliteDataStore.cs | |||
@@ -29,10 +29,11 @@ | |||
29 | using System; | 29 | using System; |
30 | using System.Collections.Generic; | 30 | using System.Collections.Generic; |
31 | using System.Data; | 31 | using System.Data; |
32 | using System.IO; | ||
32 | using libsecondlife; | 33 | using libsecondlife; |
33 | using Mono.Data.SqliteClient; | 34 | using Mono.Data.SqliteClient; |
34 | using OpenSim.Framework.Console; | ||
35 | using OpenSim.Framework; | 35 | using OpenSim.Framework; |
36 | using OpenSim.Framework.Console; | ||
36 | using OpenSim.Region.Environment.Interfaces; | 37 | using OpenSim.Region.Environment.Interfaces; |
37 | using OpenSim.Region.Environment.LandManagement; | 38 | using OpenSim.Region.Environment.LandManagement; |
38 | using OpenSim.Region.Environment.Scenes; | 39 | using OpenSim.Region.Environment.Scenes; |
@@ -55,6 +56,7 @@ namespace OpenSim.DataStore.MonoSqlite | |||
55 | * Public Interface Functions | 56 | * Public Interface Functions |
56 | * | 57 | * |
57 | **********************************************************************/ | 58 | **********************************************************************/ |
59 | |||
58 | public void Initialise(string dbfile, string dbname) | 60 | public void Initialise(string dbfile, string dbname) |
59 | { | 61 | { |
60 | string connectionString = "URI=file:" + dbfile + ",version=3"; | 62 | string connectionString = "URI=file:" + dbfile + ",version=3"; |
@@ -80,17 +82,18 @@ namespace OpenSim.DataStore.MonoSqlite | |||
80 | // primDa.FillSchema(ds, SchemaType.Source, "PrimSchema"); | 82 | // primDa.FillSchema(ds, SchemaType.Source, "PrimSchema"); |
81 | TestTables(conn); | 83 | TestTables(conn); |
82 | 84 | ||
83 | lock(ds) { | 85 | lock (ds) |
86 | { | ||
84 | ds.Tables.Add(createPrimTable()); | 87 | ds.Tables.Add(createPrimTable()); |
85 | setupPrimCommands(primDa, conn); | 88 | setupPrimCommands(primDa, conn); |
86 | primDa.Fill(ds.Tables["prims"]); | 89 | primDa.Fill(ds.Tables["prims"]); |
87 | 90 | ||
88 | ds.Tables.Add(createShapeTable()); | 91 | ds.Tables.Add(createShapeTable()); |
89 | setupShapeCommands(shapeDa, conn); | 92 | setupShapeCommands(shapeDa, conn); |
90 | 93 | ||
91 | ds.Tables.Add(createTerrainTable()); | 94 | ds.Tables.Add(createTerrainTable()); |
92 | setupTerrainCommands(terrainDa, conn); | 95 | setupTerrainCommands(terrainDa, conn); |
93 | 96 | ||
94 | // WORKAROUND: This is a work around for sqlite on | 97 | // WORKAROUND: This is a work around for sqlite on |
95 | // windows, which gets really unhappy with blob columns | 98 | // windows, which gets really unhappy with blob columns |
96 | // that have no sample data in them. At some point we | 99 | // that have no sample data in them. At some point we |
@@ -118,7 +121,8 @@ namespace OpenSim.DataStore.MonoSqlite | |||
118 | 121 | ||
119 | public void StoreObject(SceneObjectGroup obj, LLUUID regionUUID) | 122 | public void StoreObject(SceneObjectGroup obj, LLUUID regionUUID) |
120 | { | 123 | { |
121 | lock (ds) { | 124 | lock (ds) |
125 | { | ||
122 | foreach (SceneObjectPart prim in obj.Children.Values) | 126 | foreach (SceneObjectPart prim in obj.Children.Values) |
123 | { | 127 | { |
124 | MainLog.Instance.Verbose("DATASTORE", "Adding obj: " + obj.UUID + " to region: " + regionUUID); | 128 | MainLog.Instance.Verbose("DATASTORE", "Adding obj: " + obj.UUID + " to region: " + regionUUID); |
@@ -136,11 +140,12 @@ namespace OpenSim.DataStore.MonoSqlite | |||
136 | DataTable shapes = ds.Tables["primshapes"]; | 140 | DataTable shapes = ds.Tables["primshapes"]; |
137 | 141 | ||
138 | string selectExp = "SceneGroupID = '" + obj.ToString() + "'"; | 142 | string selectExp = "SceneGroupID = '" + obj.ToString() + "'"; |
139 | lock (ds) { | 143 | lock (ds) |
144 | { | ||
140 | DataRow[] primRows = prims.Select(selectExp); | 145 | DataRow[] primRows = prims.Select(selectExp); |
141 | foreach (DataRow row in primRows) | 146 | foreach (DataRow row in primRows) |
142 | { | 147 | { |
143 | LLUUID uuid = new LLUUID((string)row["UUID"]); | 148 | LLUUID uuid = new LLUUID((string) row["UUID"]); |
144 | DataRow shapeRow = shapes.Rows.Find(uuid); | 149 | DataRow shapeRow = shapes.Rows.Find(uuid); |
145 | if (shapeRow != null) | 150 | if (shapeRow != null) |
146 | { | 151 | { |
@@ -149,7 +154,7 @@ namespace OpenSim.DataStore.MonoSqlite | |||
149 | row.Delete(); | 154 | row.Delete(); |
150 | } | 155 | } |
151 | } | 156 | } |
152 | 157 | ||
153 | Commit(); | 158 | Commit(); |
154 | } | 159 | } |
155 | 160 | ||
@@ -165,16 +170,18 @@ namespace OpenSim.DataStore.MonoSqlite | |||
165 | string byRegion = "RegionUUID = '" + regionUUID.ToString() + "'"; | 170 | string byRegion = "RegionUUID = '" + regionUUID.ToString() + "'"; |
166 | string orderByParent = "ParentID ASC"; | 171 | string orderByParent = "ParentID ASC"; |
167 | 172 | ||
168 | lock (ds) { | 173 | lock (ds) |
174 | { | ||
169 | DataRow[] primsForRegion = prims.Select(byRegion, orderByParent); | 175 | DataRow[] primsForRegion = prims.Select(byRegion, orderByParent); |
170 | MainLog.Instance.Verbose("DATASTORE", "Loaded " + primsForRegion.Length + " prims for region: " + regionUUID); | 176 | MainLog.Instance.Verbose("DATASTORE", |
171 | 177 | "Loaded " + primsForRegion.Length + " prims for region: " + regionUUID); | |
178 | |||
172 | foreach (DataRow primRow in primsForRegion) | 179 | foreach (DataRow primRow in primsForRegion) |
173 | { | 180 | { |
174 | try | 181 | try |
175 | { | 182 | { |
176 | string uuid = (string)primRow["UUID"]; | 183 | string uuid = (string) primRow["UUID"]; |
177 | string objID = (string)primRow["SceneGroupID"]; | 184 | string objID = (string) primRow["SceneGroupID"]; |
178 | if (uuid == objID) //is new SceneObjectGroup ? | 185 | if (uuid == objID) //is new SceneObjectGroup ? |
179 | { | 186 | { |
180 | SceneObjectGroup group = new SceneObjectGroup(); | 187 | SceneObjectGroup group = new SceneObjectGroup(); |
@@ -186,12 +193,13 @@ namespace OpenSim.DataStore.MonoSqlite | |||
186 | } | 193 | } |
187 | else | 194 | else |
188 | { | 195 | { |
189 | MainLog.Instance.Notice("No shape found for prim in storage, so setting default box shape"); | 196 | MainLog.Instance.Notice( |
197 | "No shape found for prim in storage, so setting default box shape"); | ||
190 | prim.Shape = BoxShape.Default; | 198 | prim.Shape = BoxShape.Default; |
191 | } | 199 | } |
192 | group.AddPart(prim); | 200 | group.AddPart(prim); |
193 | group.RootPart = prim; | 201 | group.RootPart = prim; |
194 | 202 | ||
195 | createdObjects.Add(group.UUID, group); | 203 | createdObjects.Add(group.UUID, group); |
196 | retvals.Add(group); | 204 | retvals.Add(group); |
197 | } | 205 | } |
@@ -205,7 +213,8 @@ namespace OpenSim.DataStore.MonoSqlite | |||
205 | } | 213 | } |
206 | else | 214 | else |
207 | { | 215 | { |
208 | MainLog.Instance.Notice("No shape found for prim in storage, so setting default box shape"); | 216 | MainLog.Instance.Notice( |
217 | "No shape found for prim in storage, so setting default box shape"); | ||
209 | prim.Shape = BoxShape.Default; | 218 | prim.Shape = BoxShape.Default; |
210 | } | 219 | } |
211 | createdObjects[new LLUUID(objID)].AddPart(prim); | 220 | createdObjects[new LLUUID(objID)].AddPart(prim); |
@@ -228,46 +237,48 @@ namespace OpenSim.DataStore.MonoSqlite | |||
228 | 237 | ||
229 | public void StoreTerrain(double[,] ter, LLUUID regionID) | 238 | public void StoreTerrain(double[,] ter, LLUUID regionID) |
230 | { | 239 | { |
231 | int revision = OpenSim.Framework.Util.UnixTimeSinceEpoch(); | 240 | int revision = Util.UnixTimeSinceEpoch(); |
232 | 241 | ||
233 | MainLog.Instance.Verbose("DATASTORE", "Storing terrain revision r" + revision.ToString()); | 242 | MainLog.Instance.Verbose("DATASTORE", "Storing terrain revision r" + revision.ToString()); |
234 | 243 | ||
235 | DataTable terrain = ds.Tables["terrain"]; | 244 | DataTable terrain = ds.Tables["terrain"]; |
236 | lock (ds) { | 245 | lock (ds) |
246 | { | ||
237 | DataRow newrow = terrain.NewRow(); | 247 | DataRow newrow = terrain.NewRow(); |
238 | fillTerrainRow(newrow, regionID, revision, ter); | 248 | fillTerrainRow(newrow, regionID, revision, ter); |
239 | terrain.Rows.Add(newrow); | 249 | terrain.Rows.Add(newrow); |
240 | 250 | ||
241 | Commit(); | 251 | Commit(); |
242 | } | 252 | } |
243 | } | 253 | } |
244 | 254 | ||
245 | public double[,] LoadTerrain(LLUUID regionID) | 255 | public double[,] LoadTerrain(LLUUID regionID) |
246 | { | 256 | { |
247 | double[,] terret = new double[256, 256]; | 257 | double[,] terret = new double[256,256]; |
248 | terret.Initialize(); | 258 | terret.Initialize(); |
249 | 259 | ||
250 | DataTable terrain = ds.Tables["terrain"]; | 260 | DataTable terrain = ds.Tables["terrain"]; |
251 | 261 | ||
252 | lock (ds) { | 262 | lock (ds) |
253 | DataRow[] rows = terrain.Select("RegionUUID = '" + regionID.ToString() + "'","Revision DESC"); | 263 | { |
254 | 264 | DataRow[] rows = terrain.Select("RegionUUID = '" + regionID.ToString() + "'", "Revision DESC"); | |
265 | |||
255 | int rev = 0; | 266 | int rev = 0; |
256 | 267 | ||
257 | if (rows.Length > 0) | 268 | if (rows.Length > 0) |
258 | { | 269 | { |
259 | DataRow row = rows[0]; | 270 | DataRow row = rows[0]; |
260 | 271 | ||
261 | byte[] heightmap = (byte[])row["Heightfield"]; | 272 | byte[] heightmap = (byte[]) row["Heightfield"]; |
262 | for (int x = 0; x < 256; x++) | 273 | for (int x = 0; x < 256; x++) |
263 | { | 274 | { |
264 | for (int y = 0; y < 256; y++) | 275 | for (int y = 0; y < 256; y++) |
265 | { | 276 | { |
266 | terret[x, y] = BitConverter.ToDouble(heightmap, ((x * 256) + y) * 8); | 277 | terret[x, y] = BitConverter.ToDouble(heightmap, ((x*256) + y)*8); |
267 | } | 278 | } |
268 | } | 279 | } |
269 | 280 | ||
270 | rev = (int)row["Revision"]; | 281 | rev = (int) row["Revision"]; |
271 | } | 282 | } |
272 | else | 283 | else |
273 | { | 284 | { |
@@ -275,7 +286,7 @@ namespace OpenSim.DataStore.MonoSqlite | |||
275 | return null; | 286 | return null; |
276 | } | 287 | } |
277 | 288 | ||
278 | 289 | ||
279 | MainLog.Instance.Verbose("DATASTORE", "Loaded terrain revision r" + rev.ToString()); | 290 | MainLog.Instance.Verbose("DATASTORE", "Loaded terrain revision r" + rev.ToString()); |
280 | } | 291 | } |
281 | 292 | ||
@@ -284,12 +295,10 @@ namespace OpenSim.DataStore.MonoSqlite | |||
284 | 295 | ||
285 | public void RemoveLandObject(uint id) | 296 | public void RemoveLandObject(uint id) |
286 | { | 297 | { |
287 | |||
288 | } | 298 | } |
289 | 299 | ||
290 | public void StoreParcel(Land parcel) | 300 | public void StoreParcel(Land parcel) |
291 | { | 301 | { |
292 | |||
293 | } | 302 | } |
294 | 303 | ||
295 | public List<Land> LoadLandObjects() | 304 | public List<Land> LoadLandObjects() |
@@ -299,7 +308,8 @@ namespace OpenSim.DataStore.MonoSqlite | |||
299 | 308 | ||
300 | public void Commit() | 309 | public void Commit() |
301 | { | 310 | { |
302 | lock (ds) { | 311 | lock (ds) |
312 | { | ||
303 | primDa.Update(ds, "prims"); | 313 | primDa.Update(ds, "prims"); |
304 | shapeDa.Update(ds, "primshapes"); | 314 | shapeDa.Update(ds, "primshapes"); |
305 | terrainDa.Update(ds, "terrain"); | 315 | terrainDa.Update(ds, "terrain"); |
@@ -320,7 +330,7 @@ namespace OpenSim.DataStore.MonoSqlite | |||
320 | * | 330 | * |
321 | **********************************************************************/ | 331 | **********************************************************************/ |
322 | 332 | ||
323 | private void createCol(DataTable dt, string name, System.Type type) | 333 | private void createCol(DataTable dt, string name, Type type) |
324 | { | 334 | { |
325 | DataColumn col = new DataColumn(name, type); | 335 | DataColumn col = new DataColumn(name, type); |
326 | dt.Columns.Add(col); | 336 | dt.Columns.Add(col); |
@@ -330,9 +340,9 @@ namespace OpenSim.DataStore.MonoSqlite | |||
330 | { | 340 | { |
331 | DataTable terrain = new DataTable("terrain"); | 341 | DataTable terrain = new DataTable("terrain"); |
332 | 342 | ||
333 | createCol(terrain, "RegionUUID", typeof(System.String)); | 343 | createCol(terrain, "RegionUUID", typeof (String)); |
334 | createCol(terrain, "Revision", typeof(System.Int32)); | 344 | createCol(terrain, "Revision", typeof (Int32)); |
335 | createCol(terrain, "Heightfield", typeof(System.Byte[])); | 345 | createCol(terrain, "Heightfield", typeof (Byte[])); |
336 | 346 | ||
337 | return terrain; | 347 | return terrain; |
338 | } | 348 | } |
@@ -341,52 +351,52 @@ namespace OpenSim.DataStore.MonoSqlite | |||
341 | { | 351 | { |
342 | DataTable prims = new DataTable("prims"); | 352 | DataTable prims = new DataTable("prims"); |
343 | 353 | ||
344 | createCol(prims, "UUID", typeof(System.String)); | 354 | createCol(prims, "UUID", typeof (String)); |
345 | createCol(prims, "RegionUUID", typeof(System.String)); | 355 | createCol(prims, "RegionUUID", typeof (String)); |
346 | createCol(prims, "ParentID", typeof(System.Int32)); | 356 | createCol(prims, "ParentID", typeof (Int32)); |
347 | createCol(prims, "CreationDate", typeof(System.Int32)); | 357 | createCol(prims, "CreationDate", typeof (Int32)); |
348 | createCol(prims, "Name", typeof(System.String)); | 358 | createCol(prims, "Name", typeof (String)); |
349 | createCol(prims, "SceneGroupID", typeof(System.String)); | 359 | createCol(prims, "SceneGroupID", typeof (String)); |
350 | // various text fields | 360 | // various text fields |
351 | createCol(prims, "Text", typeof(System.String)); | 361 | createCol(prims, "Text", typeof (String)); |
352 | createCol(prims, "Description", typeof(System.String)); | 362 | createCol(prims, "Description", typeof (String)); |
353 | createCol(prims, "SitName", typeof(System.String)); | 363 | createCol(prims, "SitName", typeof (String)); |
354 | createCol(prims, "TouchName", typeof(System.String)); | 364 | createCol(prims, "TouchName", typeof (String)); |
355 | // permissions | 365 | // permissions |
356 | createCol(prims, "ObjectFlags", typeof(System.Int32)); | 366 | createCol(prims, "ObjectFlags", typeof (Int32)); |
357 | createCol(prims, "CreatorID", typeof(System.String)); | 367 | createCol(prims, "CreatorID", typeof (String)); |
358 | createCol(prims, "OwnerID", typeof(System.String)); | 368 | createCol(prims, "OwnerID", typeof (String)); |
359 | createCol(prims, "GroupID", typeof(System.String)); | 369 | createCol(prims, "GroupID", typeof (String)); |
360 | createCol(prims, "LastOwnerID", typeof(System.String)); | 370 | createCol(prims, "LastOwnerID", typeof (String)); |
361 | createCol(prims, "OwnerMask", typeof(System.Int32)); | 371 | createCol(prims, "OwnerMask", typeof (Int32)); |
362 | createCol(prims, "NextOwnerMask", typeof(System.Int32)); | 372 | createCol(prims, "NextOwnerMask", typeof (Int32)); |
363 | createCol(prims, "GroupMask", typeof(System.Int32)); | 373 | createCol(prims, "GroupMask", typeof (Int32)); |
364 | createCol(prims, "EveryoneMask", typeof(System.Int32)); | 374 | createCol(prims, "EveryoneMask", typeof (Int32)); |
365 | createCol(prims, "BaseMask", typeof(System.Int32)); | 375 | createCol(prims, "BaseMask", typeof (Int32)); |
366 | // vectors | 376 | // vectors |
367 | createCol(prims, "PositionX", typeof(System.Double)); | 377 | createCol(prims, "PositionX", typeof (Double)); |
368 | createCol(prims, "PositionY", typeof(System.Double)); | 378 | createCol(prims, "PositionY", typeof (Double)); |
369 | createCol(prims, "PositionZ", typeof(System.Double)); | 379 | createCol(prims, "PositionZ", typeof (Double)); |
370 | createCol(prims, "GroupPositionX", typeof(System.Double)); | 380 | createCol(prims, "GroupPositionX", typeof (Double)); |
371 | createCol(prims, "GroupPositionY", typeof(System.Double)); | 381 | createCol(prims, "GroupPositionY", typeof (Double)); |
372 | createCol(prims, "GroupPositionZ", typeof(System.Double)); | 382 | createCol(prims, "GroupPositionZ", typeof (Double)); |
373 | createCol(prims, "VelocityX", typeof(System.Double)); | 383 | createCol(prims, "VelocityX", typeof (Double)); |
374 | createCol(prims, "VelocityY", typeof(System.Double)); | 384 | createCol(prims, "VelocityY", typeof (Double)); |
375 | createCol(prims, "VelocityZ", typeof(System.Double)); | 385 | createCol(prims, "VelocityZ", typeof (Double)); |
376 | createCol(prims, "AngularVelocityX", typeof(System.Double)); | 386 | createCol(prims, "AngularVelocityX", typeof (Double)); |
377 | createCol(prims, "AngularVelocityY", typeof(System.Double)); | 387 | createCol(prims, "AngularVelocityY", typeof (Double)); |
378 | createCol(prims, "AngularVelocityZ", typeof(System.Double)); | 388 | createCol(prims, "AngularVelocityZ", typeof (Double)); |
379 | createCol(prims, "AccelerationX", typeof(System.Double)); | 389 | createCol(prims, "AccelerationX", typeof (Double)); |
380 | createCol(prims, "AccelerationY", typeof(System.Double)); | 390 | createCol(prims, "AccelerationY", typeof (Double)); |
381 | createCol(prims, "AccelerationZ", typeof(System.Double)); | 391 | createCol(prims, "AccelerationZ", typeof (Double)); |
382 | // quaternions | 392 | // quaternions |
383 | createCol(prims, "RotationX", typeof(System.Double)); | 393 | createCol(prims, "RotationX", typeof (Double)); |
384 | createCol(prims, "RotationY", typeof(System.Double)); | 394 | createCol(prims, "RotationY", typeof (Double)); |
385 | createCol(prims, "RotationZ", typeof(System.Double)); | 395 | createCol(prims, "RotationZ", typeof (Double)); |
386 | createCol(prims, "RotationW", typeof(System.Double)); | 396 | createCol(prims, "RotationW", typeof (Double)); |
387 | 397 | ||
388 | // Add in contraints | 398 | // Add in contraints |
389 | prims.PrimaryKey = new DataColumn[] { prims.Columns["UUID"] }; | 399 | prims.PrimaryKey = new DataColumn[] {prims.Columns["UUID"]}; |
390 | 400 | ||
391 | return prims; | 401 | return prims; |
392 | } | 402 | } |
@@ -394,40 +404,40 @@ namespace OpenSim.DataStore.MonoSqlite | |||
394 | private DataTable createShapeTable() | 404 | private DataTable createShapeTable() |
395 | { | 405 | { |
396 | DataTable shapes = new DataTable("primshapes"); | 406 | DataTable shapes = new DataTable("primshapes"); |
397 | createCol(shapes, "UUID", typeof(System.String)); | 407 | createCol(shapes, "UUID", typeof (String)); |
398 | // shape is an enum | 408 | // shape is an enum |
399 | createCol(shapes, "Shape", typeof(System.Int32)); | 409 | createCol(shapes, "Shape", typeof (Int32)); |
400 | // vectors | 410 | // vectors |
401 | createCol(shapes, "ScaleX", typeof(System.Double)); | 411 | createCol(shapes, "ScaleX", typeof (Double)); |
402 | createCol(shapes, "ScaleY", typeof(System.Double)); | 412 | createCol(shapes, "ScaleY", typeof (Double)); |
403 | createCol(shapes, "ScaleZ", typeof(System.Double)); | 413 | createCol(shapes, "ScaleZ", typeof (Double)); |
404 | // paths | 414 | // paths |
405 | createCol(shapes, "PCode", typeof(System.Int32)); | 415 | createCol(shapes, "PCode", typeof (Int32)); |
406 | createCol(shapes, "PathBegin", typeof(System.Int32)); | 416 | createCol(shapes, "PathBegin", typeof (Int32)); |
407 | createCol(shapes, "PathEnd", typeof(System.Int32)); | 417 | createCol(shapes, "PathEnd", typeof (Int32)); |
408 | createCol(shapes, "PathScaleX", typeof(System.Int32)); | 418 | createCol(shapes, "PathScaleX", typeof (Int32)); |
409 | createCol(shapes, "PathScaleY", typeof(System.Int32)); | 419 | createCol(shapes, "PathScaleY", typeof (Int32)); |
410 | createCol(shapes, "PathShearX", typeof(System.Int32)); | 420 | createCol(shapes, "PathShearX", typeof (Int32)); |
411 | createCol(shapes, "PathShearY", typeof(System.Int32)); | 421 | createCol(shapes, "PathShearY", typeof (Int32)); |
412 | createCol(shapes, "PathSkew", typeof(System.Int32)); | 422 | createCol(shapes, "PathSkew", typeof (Int32)); |
413 | createCol(shapes, "PathCurve", typeof(System.Int32)); | 423 | createCol(shapes, "PathCurve", typeof (Int32)); |
414 | createCol(shapes, "PathRadiusOffset", typeof(System.Int32)); | 424 | createCol(shapes, "PathRadiusOffset", typeof (Int32)); |
415 | createCol(shapes, "PathRevolutions", typeof(System.Int32)); | 425 | createCol(shapes, "PathRevolutions", typeof (Int32)); |
416 | createCol(shapes, "PathTaperX", typeof(System.Int32)); | 426 | createCol(shapes, "PathTaperX", typeof (Int32)); |
417 | createCol(shapes, "PathTaperY", typeof(System.Int32)); | 427 | createCol(shapes, "PathTaperY", typeof (Int32)); |
418 | createCol(shapes, "PathTwist", typeof(System.Int32)); | 428 | createCol(shapes, "PathTwist", typeof (Int32)); |
419 | createCol(shapes, "PathTwistBegin", typeof(System.Int32)); | 429 | createCol(shapes, "PathTwistBegin", typeof (Int32)); |
420 | // profile | 430 | // profile |
421 | createCol(shapes, "ProfileBegin", typeof(System.Int32)); | 431 | createCol(shapes, "ProfileBegin", typeof (Int32)); |
422 | createCol(shapes, "ProfileEnd", typeof(System.Int32)); | 432 | createCol(shapes, "ProfileEnd", typeof (Int32)); |
423 | createCol(shapes, "ProfileCurve", typeof(System.Int32)); | 433 | createCol(shapes, "ProfileCurve", typeof (Int32)); |
424 | createCol(shapes, "ProfileHollow", typeof(System.Int32)); | 434 | createCol(shapes, "ProfileHollow", typeof (Int32)); |
425 | // text TODO: this isn't right, but I'm not sure the right | 435 | // text TODO: this isn't right, but I'm not sure the right |
426 | // way to specify this as a blob atm | 436 | // way to specify this as a blob atm |
427 | createCol(shapes, "Texture", typeof(System.Byte[])); | 437 | createCol(shapes, "Texture", typeof (Byte[])); |
428 | createCol(shapes, "ExtraParams", typeof(System.Byte[])); | 438 | createCol(shapes, "ExtraParams", typeof (Byte[])); |
429 | 439 | ||
430 | shapes.PrimaryKey = new DataColumn[] { shapes.Columns["UUID"] }; | 440 | shapes.PrimaryKey = new DataColumn[] {shapes.Columns["UUID"]}; |
431 | 441 | ||
432 | return shapes; | 442 | return shapes; |
433 | } | 443 | } |
@@ -446,23 +456,23 @@ namespace OpenSim.DataStore.MonoSqlite | |||
446 | // interesting has to be done to actually get these values | 456 | // interesting has to be done to actually get these values |
447 | // back out. Not enough time to figure it out yet. | 457 | // back out. Not enough time to figure it out yet. |
448 | SceneObjectPart prim = new SceneObjectPart(); | 458 | SceneObjectPart prim = new SceneObjectPart(); |
449 | prim.UUID = new LLUUID((String)row["UUID"]); | 459 | prim.UUID = new LLUUID((String) row["UUID"]); |
450 | // explicit conversion of integers is required, which sort | 460 | // explicit conversion of integers is required, which sort |
451 | // of sucks. No idea if there is a shortcut here or not. | 461 | // of sucks. No idea if there is a shortcut here or not. |
452 | prim.ParentID = Convert.ToUInt32(row["ParentID"]); | 462 | prim.ParentID = Convert.ToUInt32(row["ParentID"]); |
453 | prim.CreationDate = Convert.ToInt32(row["CreationDate"]); | 463 | prim.CreationDate = Convert.ToInt32(row["CreationDate"]); |
454 | prim.Name = (String)row["Name"]; | 464 | prim.Name = (String) row["Name"]; |
455 | // various text fields | 465 | // various text fields |
456 | prim.Text = (String)row["Text"]; | 466 | prim.Text = (String) row["Text"]; |
457 | prim.Description = (String)row["Description"]; | 467 | prim.Description = (String) row["Description"]; |
458 | prim.SitName = (String)row["SitName"]; | 468 | prim.SitName = (String) row["SitName"]; |
459 | prim.TouchName = (String)row["TouchName"]; | 469 | prim.TouchName = (String) row["TouchName"]; |
460 | // permissions | 470 | // permissions |
461 | prim.ObjectFlags = Convert.ToUInt32(row["ObjectFlags"]); | 471 | prim.ObjectFlags = Convert.ToUInt32(row["ObjectFlags"]); |
462 | prim.CreatorID = new LLUUID((String)row["CreatorID"]); | 472 | prim.CreatorID = new LLUUID((String) row["CreatorID"]); |
463 | prim.OwnerID = new LLUUID((String)row["OwnerID"]); | 473 | prim.OwnerID = new LLUUID((String) row["OwnerID"]); |
464 | prim.GroupID = new LLUUID((String)row["GroupID"]); | 474 | prim.GroupID = new LLUUID((String) row["GroupID"]); |
465 | prim.LastOwnerID = new LLUUID((String)row["LastOwnerID"]); | 475 | prim.LastOwnerID = new LLUUID((String) row["LastOwnerID"]); |
466 | prim.OwnerMask = Convert.ToUInt32(row["OwnerMask"]); | 476 | prim.OwnerMask = Convert.ToUInt32(row["OwnerMask"]); |
467 | prim.NextOwnerMask = Convert.ToUInt32(row["NextOwnerMask"]); | 477 | prim.NextOwnerMask = Convert.ToUInt32(row["NextOwnerMask"]); |
468 | prim.GroupMask = Convert.ToUInt32(row["GroupMask"]); | 478 | prim.GroupMask = Convert.ToUInt32(row["GroupMask"]); |
@@ -510,8 +520,8 @@ namespace OpenSim.DataStore.MonoSqlite | |||
510 | row["RegionUUID"] = regionUUID; | 520 | row["RegionUUID"] = regionUUID; |
511 | row["Revision"] = rev; | 521 | row["Revision"] = rev; |
512 | 522 | ||
513 | System.IO.MemoryStream str = new System.IO.MemoryStream(65536 * sizeof(double)); | 523 | MemoryStream str = new MemoryStream(65536*sizeof (double)); |
514 | System.IO.BinaryWriter bw = new System.IO.BinaryWriter(str); | 524 | BinaryWriter bw = new BinaryWriter(str); |
515 | 525 | ||
516 | // TODO: COMPATIBILITY - Add byte-order conversions | 526 | // TODO: COMPATIBILITY - Add byte-order conversions |
517 | for (int x = 0; x < 256; x++) | 527 | for (int x = 0; x < 256; x++) |
@@ -599,8 +609,8 @@ namespace OpenSim.DataStore.MonoSqlite | |||
599 | s.ProfileHollow = Convert.ToUInt16(row["ProfileHollow"]); | 609 | s.ProfileHollow = Convert.ToUInt16(row["ProfileHollow"]); |
600 | // text TODO: this isn't right] = but I'm not sure the right | 610 | // text TODO: this isn't right] = but I'm not sure the right |
601 | // way to specify this as a blob atm | 611 | // way to specify this as a blob atm |
602 | s.TextureEntry = (byte[])row["Texture"]; | 612 | s.TextureEntry = (byte[]) row["Texture"]; |
603 | s.ExtraParams = (byte[])row["ExtraParams"]; | 613 | s.ExtraParams = (byte[]) row["ExtraParams"]; |
604 | // System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding(); | 614 | // System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding(); |
605 | // string texture = encoding.GetString((Byte[])row["Texture"]); | 615 | // string texture = encoding.GetString((Byte[])row["Texture"]); |
606 | // if (!texture.StartsWith("<")) | 616 | // if (!texture.StartsWith("<")) |
@@ -751,7 +761,8 @@ namespace OpenSim.DataStore.MonoSqlite | |||
751 | foreach (DataColumn col in dt.Columns) | 761 | foreach (DataColumn col in dt.Columns) |
752 | { | 762 | { |
753 | if (subsql.Length > 0) | 763 | if (subsql.Length > 0) |
754 | { // a map function would rock so much here | 764 | { |
765 | // a map function would rock so much here | ||
755 | subsql += ", "; | 766 | subsql += ", "; |
756 | } | 767 | } |
757 | subsql += col.ColumnName + "= :" + col.ColumnName; | 768 | subsql += col.ColumnName + "= :" + col.ColumnName; |
@@ -778,7 +789,8 @@ namespace OpenSim.DataStore.MonoSqlite | |||
778 | foreach (DataColumn col in dt.Columns) | 789 | foreach (DataColumn col in dt.Columns) |
779 | { | 790 | { |
780 | if (subsql.Length > 0) | 791 | if (subsql.Length > 0) |
781 | { // a map function would rock so much here | 792 | { |
793 | // a map function would rock so much here | ||
782 | subsql += ",\n"; | 794 | subsql += ",\n"; |
783 | } | 795 | } |
784 | subsql += col.ColumnName + " " + sqliteType(col.DataType); | 796 | subsql += col.ColumnName + " " + sqliteType(col.DataType); |
@@ -812,7 +824,7 @@ namespace OpenSim.DataStore.MonoSqlite | |||
812 | /// for us. | 824 | /// for us. |
813 | ///</summary> | 825 | ///</summary> |
814 | ///<returns>a built sqlite parameter</returns> | 826 | ///<returns>a built sqlite parameter</returns> |
815 | private SqliteParameter createSqliteParameter(string name, System.Type type) | 827 | private SqliteParameter createSqliteParameter(string name, Type type) |
816 | { | 828 | { |
817 | SqliteParameter param = new SqliteParameter(); | 829 | SqliteParameter param = new SqliteParameter(); |
818 | param.ParameterName = ":" + name; | 830 | param.ParameterName = ":" + name; |
@@ -831,7 +843,7 @@ namespace OpenSim.DataStore.MonoSqlite | |||
831 | da.UpdateCommand.Connection = conn; | 843 | da.UpdateCommand.Connection = conn; |
832 | 844 | ||
833 | SqliteCommand delete = new SqliteCommand("delete from prims where UUID = :UUID"); | 845 | SqliteCommand delete = new SqliteCommand("delete from prims where UUID = :UUID"); |
834 | delete.Parameters.Add(createSqliteParameter("UUID", typeof(System.String))); | 846 | delete.Parameters.Add(createSqliteParameter("UUID", typeof (String))); |
835 | delete.Connection = conn; | 847 | delete.Connection = conn; |
836 | da.DeleteCommand = delete; | 848 | da.DeleteCommand = delete; |
837 | } | 849 | } |
@@ -851,7 +863,7 @@ namespace OpenSim.DataStore.MonoSqlite | |||
851 | da.UpdateCommand.Connection = conn; | 863 | da.UpdateCommand.Connection = conn; |
852 | 864 | ||
853 | SqliteCommand delete = new SqliteCommand("delete from primshapes where UUID = :UUID"); | 865 | SqliteCommand delete = new SqliteCommand("delete from primshapes where UUID = :UUID"); |
854 | delete.Parameters.Add(createSqliteParameter("UUID", typeof(System.String))); | 866 | delete.Parameters.Add(createSqliteParameter("UUID", typeof (String))); |
855 | delete.Connection = conn; | 867 | delete.Connection = conn; |
856 | da.DeleteCommand = delete; | 868 | da.DeleteCommand = delete; |
857 | } | 869 | } |
@@ -871,8 +883,9 @@ namespace OpenSim.DataStore.MonoSqlite | |||
871 | { | 883 | { |
872 | pcmd.ExecuteNonQuery(); | 884 | pcmd.ExecuteNonQuery(); |
873 | } | 885 | } |
874 | catch (SqliteSyntaxException) { | 886 | catch (SqliteSyntaxException) |
875 | MainLog.Instance.Warn("SQLITE","Primitives Table Already Exists"); | 887 | { |
888 | MainLog.Instance.Warn("SQLITE", "Primitives Table Already Exists"); | ||
876 | } | 889 | } |
877 | 890 | ||
878 | try | 891 | try |
@@ -912,7 +925,7 @@ namespace OpenSim.DataStore.MonoSqlite | |||
912 | sDa.Fill(tmpDS, "primshapes"); | 925 | sDa.Fill(tmpDS, "primshapes"); |
913 | tDa.Fill(tmpDS, "terrain"); | 926 | tDa.Fill(tmpDS, "terrain"); |
914 | } | 927 | } |
915 | catch (Mono.Data.SqliteClient.SqliteSyntaxException) | 928 | catch (SqliteSyntaxException) |
916 | { | 929 | { |
917 | MainLog.Instance.Verbose("DATASTORE", "SQLite Database doesn't exist... creating"); | 930 | MainLog.Instance.Verbose("DATASTORE", "SQLite Database doesn't exist... creating"); |
918 | InitDB(conn); | 931 | InitDB(conn); |
@@ -957,27 +970,27 @@ namespace OpenSim.DataStore.MonoSqlite | |||
957 | 970 | ||
958 | private DbType dbtypeFromType(Type type) | 971 | private DbType dbtypeFromType(Type type) |
959 | { | 972 | { |
960 | if (type == typeof(System.String)) | 973 | if (type == typeof (String)) |
961 | { | 974 | { |
962 | return DbType.String; | 975 | return DbType.String; |
963 | } | 976 | } |
964 | else if (type == typeof(System.Int32)) | 977 | else if (type == typeof (Int32)) |
965 | { | 978 | { |
966 | return DbType.Int32; | 979 | return DbType.Int32; |
967 | } | 980 | } |
968 | else if (type == typeof(System.Double)) | 981 | else if (type == typeof (Double)) |
969 | { | 982 | { |
970 | return DbType.Double; | 983 | return DbType.Double; |
971 | } | 984 | } |
972 | else if (type == typeof(System.Byte)) | 985 | else if (type == typeof (Byte)) |
973 | { | 986 | { |
974 | return DbType.Byte; | 987 | return DbType.Byte; |
975 | } | 988 | } |
976 | else if (type == typeof(System.Double)) | 989 | else if (type == typeof (Double)) |
977 | { | 990 | { |
978 | return DbType.Double; | 991 | return DbType.Double; |
979 | } | 992 | } |
980 | else if (type == typeof(System.Byte[])) | 993 | else if (type == typeof (Byte[])) |
981 | { | 994 | { |
982 | return DbType.Binary; | 995 | return DbType.Binary; |
983 | } | 996 | } |
@@ -991,19 +1004,19 @@ namespace OpenSim.DataStore.MonoSqlite | |||
991 | // slightly differently. | 1004 | // slightly differently. |
992 | private string sqliteType(Type type) | 1005 | private string sqliteType(Type type) |
993 | { | 1006 | { |
994 | if (type == typeof(System.String)) | 1007 | if (type == typeof (String)) |
995 | { | 1008 | { |
996 | return "varchar(255)"; | 1009 | return "varchar(255)"; |
997 | } | 1010 | } |
998 | else if (type == typeof(System.Int32)) | 1011 | else if (type == typeof (Int32)) |
999 | { | 1012 | { |
1000 | return "integer"; | 1013 | return "integer"; |
1001 | } | 1014 | } |
1002 | else if (type == typeof(System.Double)) | 1015 | else if (type == typeof (Double)) |
1003 | { | 1016 | { |
1004 | return "float"; | 1017 | return "float"; |
1005 | } | 1018 | } |
1006 | else if (type == typeof(System.Byte[])) | 1019 | else if (type == typeof (Byte[])) |
1007 | { | 1020 | { |
1008 | return "blob"; | 1021 | return "blob"; |
1009 | } | 1022 | } |
@@ -1013,4 +1026,4 @@ namespace OpenSim.DataStore.MonoSqlite | |||
1013 | } | 1026 | } |
1014 | } | 1027 | } |
1015 | } | 1028 | } |
1016 | } | 1029 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Storage/OpenSim.DataStore.NullStorage/NullDataStore.cs b/OpenSim/Region/Storage/OpenSim.DataStore.NullStorage/NullDataStore.cs index f726ea2..4e1f71e 100644 --- a/OpenSim/Region/Storage/OpenSim.DataStore.NullStorage/NullDataStore.cs +++ b/OpenSim/Region/Storage/OpenSim.DataStore.NullStorage/NullDataStore.cs | |||
@@ -26,21 +26,16 @@ | |||
26 | * | 26 | * |
27 | */ | 27 | */ |
28 | 28 | ||
29 | using System; | ||
30 | using System.Collections.Generic; | 29 | using System.Collections.Generic; |
31 | using System.Text; | ||
32 | |||
33 | using OpenSim.Region.Environment.Scenes; | ||
34 | using OpenSim.Region.Environment.LandManagement; | ||
35 | using OpenSim.Region.Environment.Interfaces; | ||
36 | using OpenSim.Framework.Console; | ||
37 | using libsecondlife; | 30 | using libsecondlife; |
31 | using OpenSim.Region.Environment.Interfaces; | ||
32 | using OpenSim.Region.Environment.LandManagement; | ||
33 | using OpenSim.Region.Environment.Scenes; | ||
38 | 34 | ||
39 | namespace OpenSim.DataStore.NullStorage | 35 | namespace OpenSim.DataStore.NullStorage |
40 | { | 36 | { |
41 | public class NullDataStore : IRegionDataStore | 37 | public class NullDataStore : IRegionDataStore |
42 | { | 38 | { |
43 | |||
44 | public void Initialise(string dbfile, string dbname) | 39 | public void Initialise(string dbfile, string dbname) |
45 | { | 40 | { |
46 | return; | 41 | return; |
@@ -48,12 +43,10 @@ namespace OpenSim.DataStore.NullStorage | |||
48 | 43 | ||
49 | public void StoreObject(SceneObjectGroup obj, LLUUID regionUUID) | 44 | public void StoreObject(SceneObjectGroup obj, LLUUID regionUUID) |
50 | { | 45 | { |
51 | |||
52 | } | 46 | } |
53 | 47 | ||
54 | public void RemoveObject(LLUUID obj, LLUUID regionUUID) | 48 | public void RemoveObject(LLUUID obj, LLUUID regionUUID) |
55 | { | 49 | { |
56 | |||
57 | } | 50 | } |
58 | 51 | ||
59 | public List<SceneObjectGroup> LoadObjects(LLUUID regionUUID) | 52 | public List<SceneObjectGroup> LoadObjects(LLUUID regionUUID) |
@@ -63,7 +56,6 @@ namespace OpenSim.DataStore.NullStorage | |||
63 | 56 | ||
64 | public void StoreTerrain(double[,] ter, LLUUID regionID) | 57 | public void StoreTerrain(double[,] ter, LLUUID regionID) |
65 | { | 58 | { |
66 | |||
67 | } | 59 | } |
68 | 60 | ||
69 | public double[,] LoadTerrain(LLUUID regionID) | 61 | public double[,] LoadTerrain(LLUUID regionID) |
@@ -73,12 +65,10 @@ namespace OpenSim.DataStore.NullStorage | |||
73 | 65 | ||
74 | public void RemoveLandObject(uint id) | 66 | public void RemoveLandObject(uint id) |
75 | { | 67 | { |
76 | |||
77 | } | 68 | } |
78 | 69 | ||
79 | public void StoreParcel(Land land) | 70 | public void StoreParcel(Land land) |
80 | { | 71 | { |
81 | |||
82 | } | 72 | } |
83 | 73 | ||
84 | public List<Land> LoadLandObjects() | 74 | public List<Land> LoadLandObjects() |
@@ -88,7 +78,6 @@ namespace OpenSim.DataStore.NullStorage | |||
88 | 78 | ||
89 | public void Shutdown() | 79 | public void Shutdown() |
90 | { | 80 | { |
91 | |||
92 | } | 81 | } |
93 | } | 82 | } |
94 | } | 83 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Storage/OpenSim.DataStore.NullStorage/Properties/AssemblyInfo.cs b/OpenSim/Region/Storage/OpenSim.DataStore.NullStorage/Properties/AssemblyInfo.cs index fd86315..7608202 100644 --- a/OpenSim/Region/Storage/OpenSim.DataStore.NullStorage/Properties/AssemblyInfo.cs +++ b/OpenSim/Region/Storage/OpenSim.DataStore.NullStorage/Properties/AssemblyInfo.cs | |||
@@ -1,26 +1,28 @@ | |||
1 | using System.Reflection; | 1 | using System.Reflection; |
2 | using System.Runtime.CompilerServices; | ||
3 | using System.Runtime.InteropServices; | 2 | using System.Runtime.InteropServices; |
4 | 3 | ||
5 | // General Information about an assembly is controlled through the following | 4 | // General Information about an assembly is controlled through the following |
6 | // set of attributes. Change these attribute values to modify the information | 5 | // set of attributes. Change these attribute values to modify the information |
7 | // associated with an assembly. | 6 | // associated with an assembly. |
8 | [assembly: AssemblyTitle("OpenSim.DataStore.NullStorage")] | 7 | |
9 | [assembly: AssemblyDescription("")] | 8 | [assembly : AssemblyTitle("OpenSim.DataStore.NullStorage")] |
10 | [assembly: AssemblyConfiguration("")] | 9 | [assembly : AssemblyDescription("")] |
11 | [assembly: AssemblyCompany("")] | 10 | [assembly : AssemblyConfiguration("")] |
12 | [assembly: AssemblyProduct("OpenSim.DataStore.NullStorage")] | 11 | [assembly : AssemblyCompany("")] |
13 | [assembly: AssemblyCopyright("Copyright © 2007")] | 12 | [assembly : AssemblyProduct("OpenSim.DataStore.NullStorage")] |
14 | [assembly: AssemblyTrademark("")] | 13 | [assembly : AssemblyCopyright("Copyright © 2007")] |
15 | [assembly: AssemblyCulture("")] | 14 | [assembly : AssemblyTrademark("")] |
15 | [assembly : AssemblyCulture("")] | ||
16 | 16 | ||
17 | // Setting ComVisible to false makes the types in this assembly not visible | 17 | // Setting ComVisible to false makes the types in this assembly not visible |
18 | // to COM components. If you need to access a type in this assembly from | 18 | // to COM components. If you need to access a type in this assembly from |
19 | // COM, set the ComVisible attribute to true on that type. | 19 | // COM, set the ComVisible attribute to true on that type. |
20 | [assembly: ComVisible(false)] | 20 | |
21 | [assembly : ComVisible(false)] | ||
21 | 22 | ||
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM | 23 | // The following GUID is for the ID of the typelib if this project is exposed to COM |
23 | [assembly: Guid("b4a1656d-de22-4080-a970-fd8166acbf16")] | 24 | |
25 | [assembly : Guid("b4a1656d-de22-4080-a970-fd8166acbf16")] | ||
24 | 26 | ||
25 | // Version information for an assembly consists of the following four values: | 27 | // Version information for an assembly consists of the following four values: |
26 | // | 28 | // |
@@ -31,5 +33,6 @@ using System.Runtime.InteropServices; | |||
31 | // | 33 | // |
32 | // You can specify all the values or you can default the Revision and Build Numbers | 34 | // You can specify all the values or you can default the Revision and Build Numbers |
33 | // by using the '*' as shown below: | 35 | // by using the '*' as shown below: |
34 | [assembly: AssemblyVersion("1.0.0.0")] | 36 | |
35 | [assembly: AssemblyFileVersion("1.0.0.0")] | 37 | [assembly : AssemblyVersion("1.0.0.0")] |
38 | [assembly : AssemblyFileVersion("1.0.0.0")] \ No newline at end of file | ||
diff --git a/OpenSim/Region/Terrain.BasicTerrain/Properties/AssemblyInfo.cs b/OpenSim/Region/Terrain.BasicTerrain/Properties/AssemblyInfo.cs index e1c3191..e531f01 100644 --- a/OpenSim/Region/Terrain.BasicTerrain/Properties/AssemblyInfo.cs +++ b/OpenSim/Region/Terrain.BasicTerrain/Properties/AssemblyInfo.cs | |||
@@ -1,4 +1,4 @@ | |||
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 | * |
@@ -27,25 +27,29 @@ | |||
27 | */ | 27 | */ |
28 | using System.Reflection; | 28 | using System.Reflection; |
29 | using System.Runtime.InteropServices; | 29 | using System.Runtime.InteropServices; |
30 | |||
30 | // General Information about an assembly is controlled through the following | 31 | // General Information about an assembly is controlled through the following |
31 | // set of attributes. Change these attribute values to modify the information | 32 | // set of attributes. Change these attribute values to modify the information |
32 | // associated with an assembly. | 33 | // associated with an assembly. |
33 | [assembly: AssemblyTitle("OpenSim.Region.Terrain.BasicTerrain")] | 34 | |
34 | [assembly: AssemblyDescription("")] | 35 | [assembly : AssemblyTitle("OpenSim.Region.Terrain.BasicTerrain")] |
35 | [assembly: AssemblyConfiguration("")] | 36 | [assembly : AssemblyDescription("")] |
36 | [assembly: AssemblyCompany("")] | 37 | [assembly : AssemblyConfiguration("")] |
37 | [assembly: AssemblyProduct("OpenSim.Region.Terrain.BasicTerrain")] | 38 | [assembly : AssemblyCompany("")] |
38 | [assembly: AssemblyCopyright("Copyright © 2007")] | 39 | [assembly : AssemblyProduct("OpenSim.Region.Terrain.BasicTerrain")] |
39 | [assembly: AssemblyTrademark("")] | 40 | [assembly : AssemblyCopyright("Copyright © 2007")] |
40 | [assembly: AssemblyCulture("")] | 41 | [assembly : AssemblyTrademark("")] |
42 | [assembly : AssemblyCulture("")] | ||
41 | 43 | ||
42 | // Setting ComVisible to false makes the types in this assembly not visible | 44 | // Setting ComVisible to false makes the types in this assembly not visible |
43 | // to COM components. If you need to access a type in this assembly from | 45 | // to COM components. If you need to access a type in this assembly from |
44 | // COM, set the ComVisible attribute to true on that type. | 46 | // COM, set the ComVisible attribute to true on that type. |
45 | [assembly: ComVisible(false)] | 47 | |
48 | [assembly : ComVisible(false)] | ||
46 | 49 | ||
47 | // The following GUID is for the ID of the typelib if this project is exposed to COM | 50 | // The following GUID is for the ID of the typelib if this project is exposed to COM |
48 | [assembly: Guid("3263f5b5-0a41-4ed5-91a2-9baaaeecc849")] | 51 | |
52 | [assembly : Guid("3263f5b5-0a41-4ed5-91a2-9baaaeecc849")] | ||
49 | 53 | ||
50 | // Version information for an assembly consists of the following four values: | 54 | // Version information for an assembly consists of the following four values: |
51 | // | 55 | // |
@@ -56,5 +60,6 @@ using System.Runtime.InteropServices; | |||
56 | // | 60 | // |
57 | // You can specify all the values or you can default the Revision and Build Numbers | 61 | // You can specify all the values or you can default the Revision and Build Numbers |
58 | // by using the '*' as shown below: | 62 | // by using the '*' as shown below: |
59 | [assembly: AssemblyVersion("1.0.0.0")] | 63 | |
60 | [assembly: AssemblyFileVersion("1.0.0.0")] | 64 | [assembly : AssemblyVersion("1.0.0.0")] |
65 | [assembly : AssemblyFileVersion("1.0.0.0")] \ No newline at end of file | ||
diff --git a/OpenSim/Region/Terrain.BasicTerrain/TerrainEngine.cs b/OpenSim/Region/Terrain.BasicTerrain/TerrainEngine.cs index c8c6e51..bbbb4d7 100644 --- a/OpenSim/Region/Terrain.BasicTerrain/TerrainEngine.cs +++ b/OpenSim/Region/Terrain.BasicTerrain/TerrainEngine.cs | |||
@@ -29,11 +29,11 @@ using System; | |||
29 | using System.Collections.Generic; | 29 | using System.Collections.Generic; |
30 | using System.Drawing; | 30 | using System.Drawing; |
31 | using System.Drawing.Imaging; | 31 | using System.Drawing.Imaging; |
32 | using System.Globalization; | ||
32 | using System.IO; | 33 | using System.IO; |
34 | using System.Threading; | ||
33 | using libTerrain; | 35 | using libTerrain; |
34 | using OpenJPEGNet; | 36 | using OpenJPEGNet; |
35 | using OpenSim.Framework.Interfaces; | ||
36 | using System.Globalization; | ||
37 | using OpenSim.Framework; | 37 | using OpenSim.Framework; |
38 | 38 | ||
39 | namespace OpenSim.Region.Terrain | 39 | namespace OpenSim.Region.Terrain |
@@ -51,7 +51,7 @@ namespace OpenSim.Region.Terrain | |||
51 | 51 | ||
52 | public class TerrainEngine | 52 | public class TerrainEngine |
53 | { | 53 | { |
54 | public static System.Threading.Mutex fileIOLock = new System.Threading.Mutex(); | 54 | public static Mutex fileIOLock = new Mutex(); |
55 | 55 | ||
56 | /// <summary> | 56 | /// <summary> |
57 | /// Plugin library for scripts | 57 | /// Plugin library for scripts |
@@ -95,12 +95,13 @@ namespace OpenSim.Region.Terrain | |||
95 | /// </summary> | 95 | /// </summary> |
96 | public int tainted; | 96 | public int tainted; |
97 | 97 | ||
98 | int w, h; | 98 | private int w, h; |
99 | 99 | ||
100 | /// <summary> | 100 | /// <summary> |
101 | /// Used to determine what offset to use when loading singular heightmaps across multiple sims | 101 | /// Used to determine what offset to use when loading singular heightmaps across multiple sims |
102 | /// </summary> | 102 | /// </summary> |
103 | private int offsetX; | 103 | private int offsetX; |
104 | |||
104 | private int offsetY; | 105 | private int offsetY; |
105 | 106 | ||
106 | 107 | ||
@@ -139,13 +140,13 @@ namespace OpenSim.Region.Terrain | |||
139 | 140 | ||
140 | public bool Tainted(int x, int y) | 141 | public bool Tainted(int x, int y) |
141 | { | 142 | { |
142 | return (heightmap.diff[x / 16, y / 16] != 0); | 143 | return (heightmap.diff[x/16, y/16] != 0); |
143 | } | 144 | } |
144 | 145 | ||
145 | public void ResetTaint() | 146 | public void ResetTaint() |
146 | { | 147 | { |
147 | tainted = 0; | 148 | tainted = 0; |
148 | heightmap.diff = new int[w / 16, h / 16]; | 149 | heightmap.diff = new int[w/16,h/16]; |
149 | } | 150 | } |
150 | 151 | ||
151 | //Testing to see if moving the TerraForming packet handling code into here works well | 152 | //Testing to see if moving the TerraForming packet handling code into here works well |
@@ -158,40 +159,40 @@ namespace OpenSim.Region.Terrain | |||
158 | /// <param name="action">The action to be performed</param> | 159 | /// <param name="action">The action to be performed</param> |
159 | /// <param name="north">Distance from the north border where the cursor is located</param> | 160 | /// <param name="north">Distance from the north border where the cursor is located</param> |
160 | /// <param name="west">Distance from the west border where the cursor is located</param> | 161 | /// <param name="west">Distance from the west border where the cursor is located</param> |
161 | public void ModifyTerrain(float height, float seconds, byte brushsize, byte action, float north, float west, IClientAPI remoteUser) | 162 | public void ModifyTerrain(float height, float seconds, byte brushsize, byte action, float north, float west, |
163 | IClientAPI remoteUser) | ||
162 | { | 164 | { |
163 | |||
164 | // Shiny. | 165 | // Shiny. |
165 | double size = (double)(1 << brushsize); | 166 | double size = (double) (1 << brushsize); |
166 | 167 | ||
167 | switch (action) | 168 | switch (action) |
168 | { | 169 | { |
169 | case 0: | 170 | case 0: |
170 | // flatten terrain | 171 | // flatten terrain |
171 | this.FlattenTerrain(west, north, size, (double)seconds / 5.0); | 172 | FlattenTerrain(west, north, size, (double) seconds/5.0); |
172 | break; | 173 | break; |
173 | case 1: | 174 | case 1: |
174 | // raise terrain | 175 | // raise terrain |
175 | this.RaiseTerrain(west, north, size, (double)seconds / 5.0); | 176 | RaiseTerrain(west, north, size, (double) seconds/5.0); |
176 | break; | 177 | break; |
177 | case 2: | 178 | case 2: |
178 | //lower terrain | 179 | //lower terrain |
179 | this.LowerTerrain(west, north, size, (double)seconds / 5.0); | 180 | LowerTerrain(west, north, size, (double) seconds/5.0); |
180 | break; | 181 | break; |
181 | case 3: | 182 | case 3: |
182 | // smooth terrain | 183 | // smooth terrain |
183 | this.SmoothTerrain(west, north, size, (double)seconds / 5.0); | 184 | SmoothTerrain(west, north, size, (double) seconds/5.0); |
184 | break; | 185 | break; |
185 | case 4: | 186 | case 4: |
186 | // noise | 187 | // noise |
187 | this.NoiseTerrain(west, north, size, (double)seconds / 5.0); | 188 | NoiseTerrain(west, north, size, (double) seconds/5.0); |
188 | break; | 189 | break; |
189 | case 5: | 190 | case 5: |
190 | // revert | 191 | // revert |
191 | this.RevertTerrain(west, north, size, (double)seconds / 5.0); | 192 | RevertTerrain(west, north, size, (double) seconds/5.0); |
192 | break; | 193 | break; |
193 | 194 | ||
194 | // CLIENT EXTENSIONS GO HERE | 195 | // CLIENT EXTENSIONS GO HERE |
195 | case 128: | 196 | case 128: |
196 | // erode-thermal | 197 | // erode-thermal |
197 | break; | 198 | break; |
@@ -207,9 +208,9 @@ namespace OpenSim.Region.Terrain | |||
207 | { | 208 | { |
208 | for (int y = 0; y < 16; y++) | 209 | for (int y = 0; y < 16; y++) |
209 | { | 210 | { |
210 | if (this.Tainted(x * 16, y * 16)) | 211 | if (Tainted(x*16, y*16)) |
211 | { | 212 | { |
212 | remoteUser.SendLayerData(x, y, this.GetHeights1D()); | 213 | remoteUser.SendLayerData(x, y, GetHeights1D()); |
213 | } | 214 | } |
214 | } | 215 | } |
215 | } | 216 | } |
@@ -249,12 +250,12 @@ namespace OpenSim.Region.Terrain | |||
249 | /// <returns>A float[65536] array containing the heightmap</returns> | 250 | /// <returns>A float[65536] array containing the heightmap</returns> |
250 | public float[] GetHeights1D() | 251 | public float[] GetHeights1D() |
251 | { | 252 | { |
252 | float[] heights = new float[w * h]; | 253 | float[] heights = new float[w*h]; |
253 | int i; | 254 | int i; |
254 | 255 | ||
255 | for (i = 0; i < w * h; i++) | 256 | for (i = 0; i < w*h; i++) |
256 | { | 257 | { |
257 | heights[i] = (float)heightmap.map[i % w, i / w]; | 258 | heights[i] = (float) heightmap.map[i%w, i/w]; |
258 | } | 259 | } |
259 | 260 | ||
260 | return heights; | 261 | return heights; |
@@ -266,13 +267,13 @@ namespace OpenSim.Region.Terrain | |||
266 | /// <returns>An array of 256,256 values containing the heightmap</returns> | 267 | /// <returns>An array of 256,256 values containing the heightmap</returns> |
267 | public float[,] GetHeights2D() | 268 | public float[,] GetHeights2D() |
268 | { | 269 | { |
269 | float[,] heights = new float[w, h]; | 270 | float[,] heights = new float[w,h]; |
270 | int x, y; | 271 | int x, y; |
271 | for (x = 0; x < w; x++) | 272 | for (x = 0; x < w; x++) |
272 | { | 273 | { |
273 | for (y = 0; y < h; y++) | 274 | for (y = 0; y < h; y++) |
274 | { | 275 | { |
275 | heights[x, y] = (float)heightmap.map[x, y]; | 276 | heights[x, y] = (float) heightmap.map[x, y]; |
276 | } | 277 | } |
277 | } | 278 | } |
278 | return heights; | 279 | return heights; |
@@ -294,9 +295,9 @@ namespace OpenSim.Region.Terrain | |||
294 | public void GetHeights1D(float[] heights) | 295 | public void GetHeights1D(float[] heights) |
295 | { | 296 | { |
296 | int i; | 297 | int i; |
297 | for (i = 0; i < w * h; i++) | 298 | for (i = 0; i < w*h; i++) |
298 | { | 299 | { |
299 | heightmap.map[i % w, i / w] = heights[i]; | 300 | heightmap.map[i%w, i/w] = heights[i]; |
300 | } | 301 | } |
301 | 302 | ||
302 | tainted++; | 303 | tainted++; |
@@ -313,7 +314,7 @@ namespace OpenSim.Region.Terrain | |||
313 | { | 314 | { |
314 | for (y = 0; y < h; y++) | 315 | for (y = 0; y < h; y++) |
315 | { | 316 | { |
316 | heightmap.Set(x, y, (double)heights[x, y]); | 317 | heightmap.Set(x, y, (double) heights[x, y]); |
317 | } | 318 | } |
318 | } | 319 | } |
319 | SaveRevertMap(); | 320 | SaveRevertMap(); |
@@ -376,28 +377,36 @@ namespace OpenSim.Region.Terrain | |||
376 | 377 | ||
377 | try | 378 | try |
378 | { | 379 | { |
379 | |||
380 | switch (command) | 380 | switch (command) |
381 | { | 381 | { |
382 | case "help": | 382 | case "help": |
383 | resultText += "terrain regenerate - rebuilds the sims terrain using a default algorithm\n"; | 383 | resultText += "terrain regenerate - rebuilds the sims terrain using a default algorithm\n"; |
384 | resultText += "terrain hills <type> <number of hills> <min height> <max height> <island t/f> <additive t/f> <noisy t/f>\n"; | 384 | resultText += |
385 | "terrain hills <type> <number of hills> <min height> <max height> <island t/f> <additive t/f> <noisy t/f>\n"; | ||
385 | resultText += " type should be spheres, blocks, cones, or squared\n"; | 386 | resultText += " type should be spheres, blocks, cones, or squared\n"; |
386 | resultText += "terrain voronoi <points> <blocksize> - generates a worley fractal with X points per block"; | 387 | resultText += |
388 | "terrain voronoi <points> <blocksize> - generates a worley fractal with X points per block"; | ||
387 | resultText += "terrain seed <seed> - sets the random seed value to <seed>\n"; | 389 | resultText += "terrain seed <seed> - sets the random seed value to <seed>\n"; |
388 | resultText += "terrain load <type> <filename> - loads a terrain from disk, type can be 'F32', 'F64', 'RAW' or 'IMG'\n"; | 390 | resultText += |
389 | resultText += "terrain save <type> <filename> - saves a terrain to disk, type can be 'F32', 'F64', 'PNG', 'RAW' or 'HIRAW'\n"; | 391 | "terrain load <type> <filename> - loads a terrain from disk, type can be 'F32', 'F64', 'RAW' or 'IMG'\n"; |
390 | resultText += "terrain save grdmap <filename> <gradient map> - creates a PNG snapshot of the region using a named gradient map\n"; | 392 | resultText += |
391 | resultText += "terrain rescale <min> <max> - rescales a terrain to be between <min> and <max> meters high\n"; | 393 | "terrain save <type> <filename> - saves a terrain to disk, type can be 'F32', 'F64', 'PNG', 'RAW' or 'HIRAW'\n"; |
394 | resultText += | ||
395 | "terrain save grdmap <filename> <gradient map> - creates a PNG snapshot of the region using a named gradient map\n"; | ||
396 | resultText += | ||
397 | "terrain rescale <min> <max> - rescales a terrain to be between <min> and <max> meters high\n"; | ||
392 | resultText += "terrain fill <val> - fills a terrain at the specified height\n"; | 398 | resultText += "terrain fill <val> - fills a terrain at the specified height\n"; |
393 | resultText += "terrain erode aerobic <windspeed> <pickupmin> <dropmin> <carry> <rounds> <lowest t/f> <fluid dynamics t/f>\n"; | 399 | resultText += |
400 | "terrain erode aerobic <windspeed> <pickupmin> <dropmin> <carry> <rounds> <lowest t/f> <fluid dynamics t/f>\n"; | ||
394 | resultText += "terrain erode thermal <talus> <rounds> <carry>\n"; | 401 | resultText += "terrain erode thermal <talus> <rounds> <carry>\n"; |
395 | resultText += "terrain erode hydraulic <rain> <evaporation> <solubility> <frequency> <rounds>\n"; | 402 | resultText += "terrain erode hydraulic <rain> <evaporation> <solubility> <frequency> <rounds>\n"; |
396 | resultText += "terrain multiply <val> - multiplies a terrain by <val>\n"; | 403 | resultText += "terrain multiply <val> - multiplies a terrain by <val>\n"; |
397 | resultText += "terrain revert - reverts the terrain to the stored original\n"; | 404 | resultText += "terrain revert - reverts the terrain to the stored original\n"; |
398 | resultText += "terrain bake - saves the current terrain into the revert map\n"; | 405 | resultText += "terrain bake - saves the current terrain into the revert map\n"; |
399 | resultText += "terrain csfilter <filename.cs> - loads a new filter from the specified .cs file\n"; | 406 | resultText += |
400 | resultText += "terrain jsfilter <filename.js> - loads a new filter from the specified .js file\n"; | 407 | "terrain csfilter <filename.cs> - loads a new filter from the specified .cs file\n"; |
408 | resultText += | ||
409 | "terrain jsfilter <filename.js> - loads a new filter from the specified .js file\n"; | ||
401 | foreach (KeyValuePair<string, ITerrainFilter> filter in customFilters.filters) | 410 | foreach (KeyValuePair<string, ITerrainFilter> filter in customFilters.filters) |
402 | { | 411 | { |
403 | resultText += filter.Value.Help(); | 412 | resultText += filter.Value.Help(); |
@@ -466,8 +475,8 @@ namespace OpenSim.Region.Terrain | |||
466 | 475 | ||
467 | case "load": | 476 | case "load": |
468 | string filenameL = args[2].Replace("%name%", simName); | 477 | string filenameL = args[2].Replace("%name%", simName); |
469 | filenameL = filenameL.Replace("%x%", this.offsetX.ToString()); | 478 | filenameL = filenameL.Replace("%x%", offsetX.ToString()); |
470 | filenameL = filenameL.Replace("%y%", this.offsetY.ToString()); | 479 | filenameL = filenameL.Replace("%y%", offsetY.ToString()); |
471 | 480 | ||
472 | switch (args[1].ToLower()) | 481 | switch (args[1].ToLower()) |
473 | { | 482 | { |
@@ -499,11 +508,11 @@ namespace OpenSim.Region.Terrain | |||
499 | { | 508 | { |
500 | case "f32": | 509 | case "f32": |
501 | LoadFromFileF32(args[2], Convert.ToInt32(args[3]), Convert.ToInt32(args[4]), | 510 | LoadFromFileF32(args[2], Convert.ToInt32(args[3]), Convert.ToInt32(args[4]), |
502 | Convert.ToInt32(args[5]), Convert.ToInt32(args[6])); | 511 | Convert.ToInt32(args[5]), Convert.ToInt32(args[6])); |
503 | break; | 512 | break; |
504 | case "img": | 513 | case "img": |
505 | LoadFromFileIMG(args[2], Convert.ToInt32(args[3]), Convert.ToInt32(args[4]), | 514 | LoadFromFileIMG(args[2], Convert.ToInt32(args[3]), Convert.ToInt32(args[4]), |
506 | Convert.ToInt32(args[5]), Convert.ToInt32(args[6])); | 515 | Convert.ToInt32(args[5]), Convert.ToInt32(args[6])); |
507 | break; | 516 | break; |
508 | default: | 517 | default: |
509 | resultText = "Unknown or unsupported image or data format"; | 518 | resultText = "Unknown or unsupported image or data format"; |
@@ -513,8 +522,8 @@ namespace OpenSim.Region.Terrain | |||
513 | 522 | ||
514 | case "save": | 523 | case "save": |
515 | string filename = args[2].Replace("%name%", simName); | 524 | string filename = args[2].Replace("%name%", simName); |
516 | filename = filename.Replace("%x%", this.offsetX.ToString()); | 525 | filename = filename.Replace("%x%", offsetX.ToString()); |
517 | filename = filename.Replace("%y%", this.offsetY.ToString()); | 526 | filename = filename.Replace("%y%", offsetY.ToString()); |
518 | 527 | ||
519 | switch (args[1].ToLower()) | 528 | switch (args[1].ToLower()) |
520 | { | 529 | { |
@@ -589,15 +598,20 @@ namespace OpenSim.Region.Terrain | |||
589 | { | 598 | { |
590 | case "aerobic": | 599 | case "aerobic": |
591 | // WindSpeed, PickupMinimum,DropMinimum,Carry,Rounds,Lowest | 600 | // WindSpeed, PickupMinimum,DropMinimum,Carry,Rounds,Lowest |
592 | heightmap.AerobicErosion(Convert.ToDouble(args[2]), Convert.ToDouble(args[3]), Convert.ToDouble(args[4]), Convert.ToDouble(args[5]), Convert.ToInt32(args[6]), Convert.ToBoolean(args[7]), Convert.ToBoolean(args[8])); | 601 | heightmap.AerobicErosion(Convert.ToDouble(args[2]), Convert.ToDouble(args[3]), |
602 | Convert.ToDouble(args[4]), Convert.ToDouble(args[5]), | ||
603 | Convert.ToInt32(args[6]), Convert.ToBoolean(args[7]), | ||
604 | Convert.ToBoolean(args[8])); | ||
593 | break; | 605 | break; |
594 | case "thermal": | 606 | case "thermal": |
595 | heightmap.ThermalWeathering(Convert.ToDouble(args[2]), Convert.ToInt32(args[3]), Convert.ToDouble(args[4])); | 607 | heightmap.ThermalWeathering(Convert.ToDouble(args[2]), Convert.ToInt32(args[3]), |
608 | Convert.ToDouble(args[4])); | ||
596 | break; | 609 | break; |
597 | case "hydraulic": | 610 | case "hydraulic": |
598 | Channel rainMap = new Channel(w, h); | 611 | Channel rainMap = new Channel(w, h); |
599 | rainMap.Fill(Convert.ToDouble(args[2])); | 612 | rainMap.Fill(Convert.ToDouble(args[2])); |
600 | heightmap.HydraulicErosion(rainMap, Convert.ToDouble(args[3]), Convert.ToDouble(args[4]), Convert.ToInt32(args[5]), Convert.ToInt32(args[6])); | 613 | heightmap.HydraulicErosion(rainMap, Convert.ToDouble(args[3]), Convert.ToDouble(args[4]), |
614 | Convert.ToInt32(args[5]), Convert.ToInt32(args[6])); | ||
601 | break; | 615 | break; |
602 | default: | 616 | default: |
603 | resultText = "Unknown erosion type"; | 617 | resultText = "Unknown erosion type"; |
@@ -624,8 +638,10 @@ namespace OpenSim.Region.Terrain | |||
624 | if (args.GetLength(0) > 2) | 638 | if (args.GetLength(0) > 2) |
625 | { | 639 | { |
626 | int.TryParse(args[2].ToString(), out count); | 640 | int.TryParse(args[2].ToString(), out count); |
627 | double.TryParse(args[3].ToString(), NumberStyles.AllowDecimalPoint, Culture.NumberFormatInfo, out sizeMin); | 641 | double.TryParse(args[3].ToString(), NumberStyles.AllowDecimalPoint, Culture.NumberFormatInfo, |
628 | double.TryParse(args[4].ToString(), NumberStyles.AllowDecimalPoint, Culture.NumberFormatInfo, out sizeRange); | 642 | out sizeMin); |
643 | double.TryParse(args[4].ToString(), NumberStyles.AllowDecimalPoint, Culture.NumberFormatInfo, | ||
644 | out sizeRange); | ||
629 | bool.TryParse(args[5].ToString(), out island); | 645 | bool.TryParse(args[5].ToString(), out island); |
630 | bool.TryParse(args[6].ToString(), out additive); | 646 | bool.TryParse(args[6].ToString(), out additive); |
631 | bool.TryParse(args[7].ToString(), out noisy); | 647 | bool.TryParse(args[7].ToString(), out noisy); |
@@ -669,7 +685,7 @@ namespace OpenSim.Region.Terrain | |||
669 | /// <param name="max">Maximum value of the new array</param> | 685 | /// <param name="max">Maximum value of the new array</param> |
670 | public void SetRange(float min, float max) | 686 | public void SetRange(float min, float max) |
671 | { | 687 | { |
672 | heightmap.Normalise((double)min, (double)max); | 688 | heightmap.Normalise((double) min, (double) max); |
673 | tainted++; | 689 | tainted++; |
674 | } | 690 | } |
675 | 691 | ||
@@ -713,7 +729,7 @@ namespace OpenSim.Region.Terrain | |||
713 | { | 729 | { |
714 | for (x = 0; x < w; x++) | 730 | for (x = 0; x < w; x++) |
715 | { | 731 | { |
716 | heightmap.map[x, y] = (double)bs.ReadSingle(); | 732 | heightmap.map[x, y] = (double) bs.ReadSingle(); |
717 | } | 733 | } |
718 | } | 734 | } |
719 | 735 | ||
@@ -736,11 +752,10 @@ namespace OpenSim.Region.Terrain | |||
736 | fileIOLock.WaitOne(); | 752 | fileIOLock.WaitOne(); |
737 | try | 753 | try |
738 | { | 754 | { |
755 | int sectionToLoadX = ((offsetX - lowerboundX)*w); | ||
756 | int sectionToLoadY = ((offsetY - lowerboundY)*h); | ||
739 | 757 | ||
740 | int sectionToLoadX = ((this.offsetX - lowerboundX) * this.w); | 758 | double[,] tempMap = new double[dimensionX,dimensionY]; |
741 | int sectionToLoadY = ((this.offsetY - lowerboundY) * this.h); | ||
742 | |||
743 | double[,] tempMap = new double[dimensionX, dimensionY]; | ||
744 | 759 | ||
745 | FileInfo file = new FileInfo(filename); | 760 | FileInfo file = new FileInfo(filename); |
746 | FileStream s = file.Open(FileMode.Open, FileAccess.Read); | 761 | FileStream s = file.Open(FileMode.Open, FileAccess.Read); |
@@ -751,7 +766,7 @@ namespace OpenSim.Region.Terrain | |||
751 | { | 766 | { |
752 | for (y = 0; y < dimensionY; y++) | 767 | for (y = 0; y < dimensionY; y++) |
753 | { | 768 | { |
754 | tempMap[x, y] = (double)bs.ReadSingle(); | 769 | tempMap[x, y] = (double) bs.ReadSingle(); |
755 | } | 770 | } |
756 | } | 771 | } |
757 | 772 | ||
@@ -784,19 +799,19 @@ namespace OpenSim.Region.Terrain | |||
784 | /// <param name="lowerboundY">Where sim coords begin for this patch</param> | 799 | /// <param name="lowerboundY">Where sim coords begin for this patch</param> |
785 | public void LoadFromFileIMG(string filename, int dimensionX, int dimensionY, int lowerboundX, int lowerboundY) | 800 | public void LoadFromFileIMG(string filename, int dimensionX, int dimensionY, int lowerboundX, int lowerboundY) |
786 | { | 801 | { |
787 | int sectionToLoadX = ((this.offsetX - lowerboundX) * this.w); | 802 | int sectionToLoadX = ((offsetX - lowerboundX)*w); |
788 | int sectionToLoadY = ((this.offsetY - lowerboundY) * this.h); | 803 | int sectionToLoadY = ((offsetY - lowerboundY)*h); |
789 | 804 | ||
790 | double[,] tempMap = new double[dimensionX, dimensionY]; | 805 | double[,] tempMap = new double[dimensionX,dimensionY]; |
791 | 806 | ||
792 | System.Drawing.Bitmap lgrBmp = new Bitmap(filename); | 807 | Bitmap lgrBmp = new Bitmap(filename); |
793 | 808 | ||
794 | int x, y; | 809 | int x, y; |
795 | for (x = 0; x < dimensionX; x++) | 810 | for (x = 0; x < dimensionX; x++) |
796 | { | 811 | { |
797 | for (y = 0; y < dimensionY; y++) | 812 | for (y = 0; y < dimensionY; y++) |
798 | { | 813 | { |
799 | tempMap[x, y] = (float)lgrBmp.GetPixel(x, y).GetBrightness(); | 814 | tempMap[x, y] = (float) lgrBmp.GetPixel(x, y).GetBrightness(); |
800 | } | 815 | } |
801 | } | 816 | } |
802 | 817 | ||
@@ -826,7 +841,7 @@ namespace OpenSim.Region.Terrain | |||
826 | { | 841 | { |
827 | for (x = 0; x < w; x++) | 842 | for (x = 0; x < w; x++) |
828 | { | 843 | { |
829 | heightmap.map[x, y] = (double)bs.ReadByte() * ((double)bs.ReadByte() / 127.0); | 844 | heightmap.map[x, y] = (double) bs.ReadByte()*((double) bs.ReadByte()/127.0); |
830 | bs.ReadBytes(11); // Advance the stream to next bytes. | 845 | bs.ReadBytes(11); // Advance the stream to next bytes. |
831 | } | 846 | } |
832 | } | 847 | } |
@@ -875,7 +890,7 @@ namespace OpenSim.Region.Terrain | |||
875 | { | 890 | { |
876 | for (x = 0; x < w; x++) | 891 | for (x = 0; x < w; x++) |
877 | { | 892 | { |
878 | bs.Write((float)heightmap.Get(x, y)); | 893 | bs.Write((float) heightmap.Get(x, y)); |
879 | } | 894 | } |
880 | } | 895 | } |
881 | 896 | ||
@@ -897,27 +912,27 @@ namespace OpenSim.Region.Terrain | |||
897 | int x, y; | 912 | int x, y; |
898 | 913 | ||
899 | // Used for the 'green' channel. | 914 | // Used for the 'green' channel. |
900 | byte avgMultiplier = (byte)heightmap.Avg(); | 915 | byte avgMultiplier = (byte) heightmap.Avg(); |
901 | byte backupMultiplier = (byte)revertmap.Avg(); | 916 | byte backupMultiplier = (byte) revertmap.Avg(); |
902 | 917 | ||
903 | // Limit the multiplier so it can represent points >64m. | 918 | // Limit the multiplier so it can represent points >64m. |
904 | if (avgMultiplier > 196) | 919 | if (avgMultiplier > 196) |
905 | avgMultiplier = 196; | 920 | avgMultiplier = 196; |
906 | if(backupMultiplier > 196) | 921 | if (backupMultiplier > 196) |
907 | backupMultiplier = 196; | 922 | backupMultiplier = 196; |
908 | // Make sure it's at least one to prevent a div by zero | 923 | // Make sure it's at least one to prevent a div by zero |
909 | if (avgMultiplier < 1) | 924 | if (avgMultiplier < 1) |
910 | avgMultiplier = 1; | 925 | avgMultiplier = 1; |
911 | if(backupMultiplier < 1) | 926 | if (backupMultiplier < 1) |
912 | backupMultiplier = 1; | 927 | backupMultiplier = 1; |
913 | 928 | ||
914 | for (y = 0; y < h; y++) | 929 | for (y = 0; y < h; y++) |
915 | { | 930 | { |
916 | for (x = 0; x < h; x++) | 931 | for (x = 0; x < h; x++) |
917 | { | 932 | { |
918 | byte red = (byte)(heightmap.Get(x, y) / ((double)avgMultiplier / 128.0)); | 933 | byte red = (byte) (heightmap.Get(x, y)/((double) avgMultiplier/128.0)); |
919 | byte green = avgMultiplier; | 934 | byte green = avgMultiplier; |
920 | byte blue = (byte)watermap.Get(x, y); | 935 | byte blue = (byte) watermap.Get(x, y); |
921 | byte alpha1 = 0; // Land Parcels | 936 | byte alpha1 = 0; // Land Parcels |
922 | byte alpha2 = 0; // For Sale Land | 937 | byte alpha2 = 0; // For Sale Land |
923 | byte alpha3 = 0; // Public Edit Object | 938 | byte alpha3 = 0; // Public Edit Object |
@@ -926,7 +941,7 @@ namespace OpenSim.Region.Terrain | |||
926 | byte alpha6 = 255; // Flying Allowed | 941 | byte alpha6 = 255; // Flying Allowed |
927 | byte alpha7 = 255; // Create Landmark | 942 | byte alpha7 = 255; // Create Landmark |
928 | byte alpha8 = 255; // Outside Scripts | 943 | byte alpha8 = 255; // Outside Scripts |
929 | byte alpha9 = (byte)(revertmap.Get(x, y) / ((double)backupMultiplier / 128.0)); | 944 | byte alpha9 = (byte) (revertmap.Get(x, y)/((double) backupMultiplier/128.0)); |
930 | byte alpha10 = backupMultiplier; | 945 | byte alpha10 = backupMultiplier; |
931 | 946 | ||
932 | binStream.Write(red); | 947 | binStream.Write(red); |
@@ -966,7 +981,7 @@ namespace OpenSim.Region.Terrain | |||
966 | { | 981 | { |
967 | for (j = 0; j < 256; j++) | 982 | for (j = 0; j < 256; j++) |
968 | { | 983 | { |
969 | lookupHeightTable[i + (j * 256)] = ((double)i * ((double)j / 127.0)); | 984 | lookupHeightTable[i + (j*256)] = ((double) i*((double) j/127.0)); |
970 | } | 985 | } |
971 | } | 986 | } |
972 | 987 | ||
@@ -988,9 +1003,9 @@ namespace OpenSim.Region.Terrain | |||
988 | } | 1003 | } |
989 | } | 1004 | } |
990 | 1005 | ||
991 | byte red = (byte)(index & 0xFF); | 1006 | byte red = (byte) (index & 0xFF); |
992 | byte green = (byte)((index >> 8) & 0xFF); | 1007 | byte green = (byte) ((index >> 8) & 0xFF); |
993 | byte blue = (byte)watermap.Get(x, y); | 1008 | byte blue = (byte) watermap.Get(x, y); |
994 | byte alpha1 = 0; // Land Parcels | 1009 | byte alpha1 = 0; // Land Parcels |
995 | byte alpha2 = 0; // For Sale Land | 1010 | byte alpha2 = 0; // For Sale Land |
996 | byte alpha3 = 0; // Public Edit Object | 1011 | byte alpha3 = 0; // Public Edit Object |
@@ -1140,7 +1155,7 @@ namespace OpenSim.Region.Terrain | |||
1140 | smoothed.Smooth(amount); | 1155 | smoothed.Smooth(amount); |
1141 | 1156 | ||
1142 | Channel mask = new Channel(); | 1157 | Channel mask = new Channel(); |
1143 | mask.Raise(rx,ry,size,amount); | 1158 | mask.Raise(rx, ry, size, amount); |
1144 | 1159 | ||
1145 | heightmap.Blend(smoothed, mask); | 1160 | heightmap.Blend(smoothed, mask); |
1146 | } | 1161 | } |
@@ -1221,8 +1236,7 @@ namespace OpenSim.Region.Terrain | |||
1221 | { | 1236 | { |
1222 | Bitmap bmp = TerrainToBitmap(gradientmap); | 1237 | Bitmap bmp = TerrainToBitmap(gradientmap); |
1223 | 1238 | ||
1224 | imageData = OpenJPEG.EncodeFromImage(bmp, true ); | 1239 | imageData = OpenJPEG.EncodeFromImage(bmp, true); |
1225 | |||
1226 | } | 1240 | } |
1227 | catch (Exception e) | 1241 | catch (Exception e) |
1228 | { | 1242 | { |
@@ -1252,12 +1266,11 @@ namespace OpenSim.Region.Terrain | |||
1252 | for (int x = 0; x < copy.w; x++) | 1266 | for (int x = 0; x < copy.w; x++) |
1253 | { | 1267 | { |
1254 | // 512 is the largest possible height before colours clamp | 1268 | // 512 is the largest possible height before colours clamp |
1255 | int colorindex = (int)(Math.Max(Math.Min(1.0, copy.Get(x, y) / 512.0), 0.0) * (pallete - 1)); | 1269 | int colorindex = (int) (Math.Max(Math.Min(1.0, copy.Get(x, y)/512.0), 0.0)*(pallete - 1)); |
1256 | bmp.SetPixel(x, y, colours[colorindex]); | 1270 | bmp.SetPixel(x, y, colours[colorindex]); |
1257 | } | 1271 | } |
1258 | } | 1272 | } |
1259 | return bmp; | 1273 | return bmp; |
1260 | } | 1274 | } |
1261 | |||
1262 | } | 1275 | } |
1263 | } | 1276 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Terrain.BasicTerrain/TerrainFilter.cs b/OpenSim/Region/Terrain.BasicTerrain/TerrainFilter.cs index 2ae55f0..8c29c6a 100644 --- a/OpenSim/Region/Terrain.BasicTerrain/TerrainFilter.cs +++ b/OpenSim/Region/Terrain.BasicTerrain/TerrainFilter.cs | |||
@@ -87,11 +87,12 @@ namespace OpenSim.Region.Terrain | |||
87 | { | 87 | { |
88 | foreach (Type pluginType in compilerResults.CompiledAssembly.GetExportedTypes()) | 88 | foreach (Type pluginType in compilerResults.CompiledAssembly.GetExportedTypes()) |
89 | { | 89 | { |
90 | Type testInterface = pluginType.GetInterface("ITerrainFilter",true); | 90 | Type testInterface = pluginType.GetInterface("ITerrainFilter", true); |
91 | 91 | ||
92 | if (testInterface != null) | 92 | if (testInterface != null) |
93 | { | 93 | { |
94 | ITerrainFilter filter = (ITerrainFilter)compilerResults.CompiledAssembly.CreateInstance(pluginType.ToString()); | 94 | ITerrainFilter filter = |
95 | (ITerrainFilter) compilerResults.CompiledAssembly.CreateInstance(pluginType.ToString()); | ||
95 | 96 | ||
96 | string filterName = filter.Register(); | 97 | string filterName = filter.Register(); |
97 | Console.WriteLine("Plugin: " + filterName + " loaded."); | 98 | Console.WriteLine("Plugin: " + filterName + " loaded."); |
@@ -107,7 +108,6 @@ namespace OpenSim.Region.Terrain | |||
107 | } | 108 | } |
108 | } | 109 | } |
109 | } | 110 | } |
110 | |||
111 | } | 111 | } |
112 | 112 | ||
113 | public void LoadFilterCSharp(string filename) | 113 | public void LoadFilterCSharp(string filename) |
@@ -122,4 +122,4 @@ namespace OpenSim.Region.Terrain | |||
122 | LoadFilter(compiler, filename); | 122 | LoadFilter(compiler, filename); |
123 | } | 123 | } |
124 | } | 124 | } |
125 | } | 125 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Bitmap/Bitmap.cs b/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Bitmap/Bitmap.cs index 8359f8e..8b5fbed 100644 --- a/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Bitmap/Bitmap.cs +++ b/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Bitmap/Bitmap.cs | |||
@@ -26,18 +26,16 @@ | |||
26 | * | 26 | * |
27 | */ | 27 | */ |
28 | 28 | ||
29 | using System; | ||
30 | using System.Collections.Generic; | ||
31 | using System.Text; | ||
32 | using System.Drawing; | 29 | using System.Drawing; |
30 | using System.Drawing.Imaging; | ||
33 | 31 | ||
34 | namespace libTerrain | 32 | namespace libTerrain |
35 | { | 33 | { |
36 | class Raster | 34 | internal class Raster |
37 | { | 35 | { |
38 | int w; | 36 | private int w; |
39 | int h; | 37 | private int h; |
40 | Bitmap bmp; | 38 | private Bitmap bmp; |
41 | 39 | ||
42 | /// <summary> | 40 | /// <summary> |
43 | /// Creates a new Raster channel for use with bitmap or GDI functions | 41 | /// Creates a new Raster channel for use with bitmap or GDI functions |
@@ -48,7 +46,7 @@ namespace libTerrain | |||
48 | { | 46 | { |
49 | w = width; | 47 | w = width; |
50 | h = height; | 48 | h = height; |
51 | bmp = new Bitmap(width, height, System.Drawing.Imaging.PixelFormat.Format24bppRgb); | 49 | bmp = new Bitmap(width, height, PixelFormat.Format24bppRgb); |
52 | } | 50 | } |
53 | 51 | ||
54 | /// <summary> | 52 | /// <summary> |
@@ -65,7 +63,7 @@ namespace libTerrain | |||
65 | for (y = 0; y < bmp.Height; y++) | 63 | for (y = 0; y < bmp.Height; y++) |
66 | { | 64 | { |
67 | Color val = bmp.GetPixel(x, y); | 65 | Color val = bmp.GetPixel(x, y); |
68 | chan.map[x, y] = (((double)val.R + (double)val.G + (double)val.B) / 3.0) / 255.0; | 66 | chan.map[x, y] = (((double) val.R + (double) val.G + (double) val.B)/3.0)/255.0; |
69 | } | 67 | } |
70 | } | 68 | } |
71 | 69 | ||
@@ -86,7 +84,7 @@ namespace libTerrain | |||
86 | sf.LineAlignment = StringAlignment.Center; | 84 | sf.LineAlignment = StringAlignment.Center; |
87 | 85 | ||
88 | Graphics gd = Graphics.FromImage(bmp); | 86 | Graphics gd = Graphics.FromImage(bmp); |
89 | gd.DrawString(txt, new Font(font, (float)size), new SolidBrush(Color.White), area, sf); | 87 | gd.DrawString(txt, new Font(font, (float) size), new SolidBrush(Color.White), area, sf); |
90 | } | 88 | } |
91 | } | 89 | } |
92 | } | 90 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Channel.cs b/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Channel.cs index 093bfb1..4cb70c2 100644 --- a/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Channel.cs +++ b/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Channel.cs | |||
@@ -26,12 +26,7 @@ | |||
26 | * | 26 | * |
27 | */ | 27 | */ |
28 | 28 | ||
29 | using System; | 29 | /* Channel |
30 | using System.Collections.Generic; | ||
31 | using System.Text; | ||
32 | |||
33 | |||
34 | /* Channel | ||
35 | * A channel is a single heightmap array | 30 | * A channel is a single heightmap array |
36 | * */ | 31 | * */ |
37 | 32 | ||
@@ -50,17 +45,16 @@ namespace libTerrain | |||
50 | { | 45 | { |
51 | w = 256; | 46 | w = 256; |
52 | h = 256; | 47 | h = 256; |
53 | map = new double[w, h]; | 48 | map = new double[w,h]; |
54 | diff = new int[(int)(w / 16), (int)(h / 16)]; | 49 | diff = new int[(int) (w/16),(int) (h/16)]; |
55 | } | 50 | } |
56 | 51 | ||
57 | public Channel(int width, int height) | 52 | public Channel(int width, int height) |
58 | { | 53 | { |
59 | w = width; | 54 | w = width; |
60 | h = height; | 55 | h = height; |
61 | map = new double[w, h]; | 56 | map = new double[w,h]; |
62 | diff = new int[(int)(w / 16), (int)(h / 16)]; | 57 | diff = new int[(int) (w/16),(int) (h/16)]; |
63 | } | 58 | } |
64 | |||
65 | } | 59 | } |
66 | } | 60 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Common.cs b/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Common.cs index 730f206..2ad784b 100644 --- a/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Common.cs +++ b/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Common.cs | |||
@@ -28,8 +28,6 @@ | |||
28 | 28 | ||
29 | 29 | ||
30 | using System; | 30 | using System; |
31 | using System.Collections.Generic; | ||
32 | using System.Text; | ||
33 | 31 | ||
34 | namespace libTerrain | 32 | namespace libTerrain |
35 | { | 33 | { |
@@ -39,6 +37,7 @@ namespace libTerrain | |||
39 | { | 37 | { |
40 | return w; | 38 | return w; |
41 | } | 39 | } |
40 | |||
42 | public int GetHeight() | 41 | public int GetHeight() |
43 | { | 42 | { |
44 | return h; | 43 | return h; |
@@ -47,7 +46,7 @@ namespace libTerrain | |||
47 | public Channel Copy() | 46 | public Channel Copy() |
48 | { | 47 | { |
49 | Channel x = new Channel(w, h); | 48 | Channel x = new Channel(w, h); |
50 | x.map = (double[,])this.map.Clone(); | 49 | x.map = (double[,]) map.Clone(); |
51 | return x; | 50 | return x; |
52 | } | 51 | } |
53 | 52 | ||
@@ -58,9 +57,9 @@ namespace libTerrain | |||
58 | 57 | ||
59 | public void SetDiff(int val) | 58 | public void SetDiff(int val) |
60 | { | 59 | { |
61 | for (int x = 0; x < w / 16; x++) | 60 | for (int x = 0; x < w/16; x++) |
62 | { | 61 | { |
63 | for (int y = 0; y < h / 16; y++) | 62 | for (int y = 0; y < h/16; y++) |
64 | { | 63 | { |
65 | diff[x, y] = val; | 64 | diff[x, y] = val; |
66 | } | 65 | } |
@@ -69,7 +68,7 @@ namespace libTerrain | |||
69 | 68 | ||
70 | public void SetDiff(int x, int y) | 69 | public void SetDiff(int x, int y) |
71 | { | 70 | { |
72 | diff[x / 16, y / 16]++; | 71 | diff[x/16, y/16]++; |
73 | } | 72 | } |
74 | 73 | ||
75 | public void Set(int x, int y, double val) | 74 | public void Set(int x, int y, double val) |
@@ -124,10 +123,10 @@ namespace libTerrain | |||
124 | y = 0.0; | 123 | y = 0.0; |
125 | 124 | ||
126 | int stepSize = 1; | 125 | int stepSize = 1; |
127 | double h00 = Get((int)x, (int)y); | 126 | double h00 = Get((int) x, (int) y); |
128 | double h10 = Get((int)x + stepSize, (int)y); | 127 | double h10 = Get((int) x + stepSize, (int) y); |
129 | double h01 = Get((int)x, (int)y + stepSize); | 128 | double h01 = Get((int) x, (int) y + stepSize); |
130 | double h11 = Get((int)x + stepSize, (int)y + stepSize); | 129 | double h11 = Get((int) x + stepSize, (int) y + stepSize); |
131 | double h1 = h00; | 130 | double h1 = h00; |
132 | double h2 = h10; | 131 | double h2 = h10; |
133 | double h3 = h01; | 132 | double h3 = h01; |
@@ -136,9 +135,9 @@ namespace libTerrain | |||
136 | double a10 = h2 - h1; | 135 | double a10 = h2 - h1; |
137 | double a01 = h3 - h1; | 136 | double a01 = h3 - h1; |
138 | double a11 = h1 - h2 - h3 + h4; | 137 | double a11 = h1 - h2 - h3 + h4; |
139 | double partialx = x - (int)x; | 138 | double partialx = x - (int) x; |
140 | double partialz = y - (int)y; | 139 | double partialz = y - (int) y; |
141 | double hi = a00 + (a10 * partialx) + (a01 * partialz) + (a11 * partialx * partialz); | 140 | double hi = a00 + (a10*partialx) + (a01*partialz) + (a11*partialx*partialz); |
142 | return hi; | 141 | return hi; |
143 | } | 142 | } |
144 | 143 | ||
@@ -159,7 +158,7 @@ namespace libTerrain | |||
159 | { | 158 | { |
160 | SetDiff(x, y); | 159 | SetDiff(x, y); |
161 | 160 | ||
162 | map[x % w, y % h] = val; | 161 | map[x%w, y%h] = val; |
163 | } | 162 | } |
164 | 163 | ||
165 | public void SetWrapClip(int x, int y, double val) | 164 | public void SetWrapClip(int x, int y, double val) |
@@ -171,7 +170,7 @@ namespace libTerrain | |||
171 | if (val < 0.0) | 170 | if (val < 0.0) |
172 | val = 0.0; | 171 | val = 0.0; |
173 | 172 | ||
174 | map[x % w, y % h] = val; | 173 | map[x%w, y%h] = val; |
175 | } | 174 | } |
176 | 175 | ||
177 | public void Fill(double val) | 176 | public void Fill(double val) |
@@ -255,7 +254,7 @@ namespace libTerrain | |||
255 | 254 | ||
256 | public double Avg() | 255 | public double Avg() |
257 | { | 256 | { |
258 | return Sum() / (w * h); | 257 | return Sum()/(w*h); |
259 | } | 258 | } |
260 | 259 | ||
261 | public bool ContainsNaN() | 260 | public bool ContainsNaN() |
@@ -274,4 +273,4 @@ namespace libTerrain | |||
274 | return false; | 273 | return false; |
275 | } | 274 | } |
276 | } | 275 | } |
277 | } | 276 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Editing/Flatten.cs b/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Editing/Flatten.cs index 45bb06b..e753847 100644 --- a/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Editing/Flatten.cs +++ b/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Editing/Flatten.cs | |||
@@ -28,8 +28,6 @@ | |||
28 | 28 | ||
29 | 29 | ||
30 | using System; | 30 | using System; |
31 | using System.Collections.Generic; | ||
32 | using System.Text; | ||
33 | 31 | ||
34 | namespace libTerrain | 32 | namespace libTerrain |
35 | { | 33 | { |
@@ -58,12 +56,12 @@ namespace libTerrain | |||
58 | 56 | ||
59 | // Establish the average height under the area | 57 | // Establish the average height under the area |
60 | Channel newmap = new Channel(w, h); | 58 | Channel newmap = new Channel(w, h); |
61 | newmap.map = (double[,])map.Clone(); | 59 | newmap.map = (double[,]) map.Clone(); |
62 | 60 | ||
63 | newmap *= temp; | 61 | newmap *= temp; |
64 | 62 | ||
65 | double total_terrain = newmap.Sum(); | 63 | double total_terrain = newmap.Sum(); |
66 | double avg_height = total_terrain / total_mod; | 64 | double avg_height = total_terrain/total_mod; |
67 | 65 | ||
68 | // Create a flat terrain using the average height | 66 | // Create a flat terrain using the average height |
69 | Channel flat = new Channel(w, h); | 67 | Channel flat = new Channel(w, h); |
@@ -72,7 +70,6 @@ namespace libTerrain | |||
72 | // Blend the current terrain with the average height terrain | 70 | // Blend the current terrain with the average height terrain |
73 | // using the "raised" empty terrain as a mask | 71 | // using the "raised" empty terrain as a mask |
74 | Blend(flat, temp); | 72 | Blend(flat, temp); |
75 | |||
76 | } | 73 | } |
77 | 74 | ||
78 | private void FlattenFast(double rx, double ry, double size, double amount) | 75 | private void FlattenFast(double rx, double ry, double size, double amount) |
@@ -81,10 +78,10 @@ namespace libTerrain | |||
81 | double avg = 0; | 78 | double avg = 0; |
82 | double div = 0; | 79 | double div = 0; |
83 | 80 | ||
84 | int minX = Math.Max(0, (int)(rx - (size + 1))); | 81 | int minX = Math.Max(0, (int) (rx - (size + 1))); |
85 | int maxX = Math.Min(w, (int)(rx + (size + 1))); | 82 | int maxX = Math.Min(w, (int) (rx + (size + 1))); |
86 | int minY = Math.Max(0, (int)(ry - (size + 1))); | 83 | int minY = Math.Max(0, (int) (ry - (size + 1))); |
87 | int maxY = Math.Min(h, (int)(ry + (size + 1))); | 84 | int maxY = Math.Min(h, (int) (ry + (size + 1))); |
88 | 85 | ||
89 | for (x = minX; x < maxX; x++) | 86 | for (x = minX; x < maxX; x++) |
90 | { | 87 | { |
@@ -92,17 +89,17 @@ namespace libTerrain | |||
92 | { | 89 | { |
93 | double z = size; | 90 | double z = size; |
94 | z *= z; | 91 | z *= z; |
95 | z -= ((x - rx) * (x - rx)) + ((y - ry) * (y - ry)); | 92 | z -= ((x - rx)*(x - rx)) + ((y - ry)*(y - ry)); |
96 | 93 | ||
97 | if (z < 0) | 94 | if (z < 0) |
98 | z = 0; | 95 | z = 0; |
99 | 96 | ||
100 | avg += z * amount; | 97 | avg += z*amount; |
101 | div += z; | 98 | div += z; |
102 | } | 99 | } |
103 | } | 100 | } |
104 | 101 | ||
105 | double height = avg / div; | 102 | double height = avg/div; |
106 | 103 | ||
107 | for (x = minX; x < maxX; x++) | 104 | for (x = minX; x < maxX; x++) |
108 | { | 105 | { |
@@ -110,7 +107,7 @@ namespace libTerrain | |||
110 | { | 107 | { |
111 | double z = size; | 108 | double z = size; |
112 | z *= z; | 109 | z *= z; |
113 | z -= ((x - rx) * (x - rx)) + ((y - ry) * (y - ry)); | 110 | z -= ((x - rx)*(x - rx)) + ((y - ry)*(y - ry)); |
114 | 111 | ||
115 | if (z < 0) | 112 | if (z < 0) |
116 | z = 0; | 113 | z = 0; |
@@ -123,19 +120,19 @@ namespace libTerrain | |||
123 | public void Flatten(Channel mask, double amount) | 120 | public void Flatten(Channel mask, double amount) |
124 | { | 121 | { |
125 | // Generate the mask | 122 | // Generate the mask |
126 | Channel temp = mask * amount; | 123 | Channel temp = mask*amount; |
127 | temp.Clip(0, 1); // Cut off out-of-bounds values | 124 | temp.Clip(0, 1); // Cut off out-of-bounds values |
128 | 125 | ||
129 | double total_mod = temp.Sum(); | 126 | double total_mod = temp.Sum(); |
130 | 127 | ||
131 | // Establish the average height under the area | 128 | // Establish the average height under the area |
132 | Channel map = new Channel(w, h); | 129 | Channel map = new Channel(w, h); |
133 | map.map = (double[,])this.map.Clone(); | 130 | map.map = (double[,]) this.map.Clone(); |
134 | 131 | ||
135 | map *= temp; | 132 | map *= temp; |
136 | 133 | ||
137 | double total_terrain = map.Sum(); | 134 | double total_terrain = map.Sum(); |
138 | double avg_height = total_terrain / total_mod; | 135 | double avg_height = total_terrain/total_mod; |
139 | 136 | ||
140 | // Create a flat terrain using the average height | 137 | // Create a flat terrain using the average height |
141 | Channel flat = new Channel(w, h); | 138 | Channel flat = new Channel(w, h); |
diff --git a/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Editing/Raise.cs b/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Editing/Raise.cs index 15631df..9e8f3a4 100644 --- a/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Editing/Raise.cs +++ b/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Editing/Raise.cs | |||
@@ -28,8 +28,6 @@ | |||
28 | 28 | ||
29 | 29 | ||
30 | using System; | 30 | using System; |
31 | using System.Collections.Generic; | ||
32 | using System.Text; | ||
33 | 31 | ||
34 | namespace libTerrain | 32 | namespace libTerrain |
35 | { | 33 | { |
@@ -63,12 +61,12 @@ namespace libTerrain | |||
63 | { | 61 | { |
64 | double z = size; | 62 | double z = size; |
65 | z *= z; | 63 | z *= z; |
66 | z -= ((x - rx) * (x - rx)) + ((y - ry) * (y - ry)); | 64 | z -= ((x - rx)*(x - rx)) + ((y - ry)*(y - ry)); |
67 | 65 | ||
68 | if (z < 0) | 66 | if (z < 0) |
69 | z = 0; | 67 | z = 0; |
70 | 68 | ||
71 | Set(x, y, map[x, y] + (z * amount)); | 69 | Set(x, y, map[x, y] + (z*amount)); |
72 | } | 70 | } |
73 | } | 71 | } |
74 | } | 72 | } |
@@ -88,12 +86,12 @@ namespace libTerrain | |||
88 | for (y = 0; y < h; y++) | 86 | for (y = 0; y < h; y++) |
89 | { | 87 | { |
90 | double z = size; | 88 | double z = size; |
91 | z -= Math.Sqrt(((x - rx) * (x - rx)) + ((y - ry) * (y - ry))); | 89 | z -= Math.Sqrt(((x - rx)*(x - rx)) + ((y - ry)*(y - ry))); |
92 | 90 | ||
93 | if (z < 0) | 91 | if (z < 0) |
94 | z = 0; | 92 | z = 0; |
95 | 93 | ||
96 | Set(x, y, map[x, y] + (z * amount)); | 94 | Set(x, y, map[x, y] + (z*amount)); |
97 | } | 95 | } |
98 | } | 96 | } |
99 | } | 97 | } |
@@ -126,12 +124,12 @@ namespace libTerrain | |||
126 | { | 124 | { |
127 | double z = size; | 125 | double z = size; |
128 | z *= z; | 126 | z *= z; |
129 | z -= ((x - rx) * (x - rx)) + ((y - ry) * (y - ry)); | 127 | z -= ((x - rx)*(x - rx)) + ((y - ry)*(y - ry)); |
130 | 128 | ||
131 | if (z < 0) | 129 | if (z < 0) |
132 | z = 0; | 130 | z = 0; |
133 | 131 | ||
134 | Set(x, y, map[x, y] - (z * amount)); | 132 | Set(x, y, map[x, y] - (z*amount)); |
135 | } | 133 | } |
136 | } | 134 | } |
137 | } | 135 | } |
diff --git a/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/File.cs b/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/File.cs index 5949759..b4eda47 100644 --- a/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/File.cs +++ b/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/File.cs | |||
@@ -27,9 +27,8 @@ | |||
27 | */ | 27 | */ |
28 | 28 | ||
29 | using System; | 29 | using System; |
30 | using System.Collections.Generic; | ||
31 | using System.Text; | ||
32 | using System.Drawing; | 30 | using System.Drawing; |
31 | using System.Drawing.Imaging; | ||
33 | 32 | ||
34 | namespace libTerrain | 33 | namespace libTerrain |
35 | { | 34 | { |
@@ -48,7 +47,7 @@ namespace libTerrain | |||
48 | for (y = 0; y < bit.Height; y++) | 47 | for (y = 0; y < bit.Height; y++) |
49 | { | 48 | { |
50 | Color val = bit.GetPixel(x, y); | 49 | Color val = bit.GetPixel(x, y); |
51 | chan.map[x, y] = (((double)val.R + (double)val.G + (double)val.B) / 3.0) / 255.0; | 50 | chan.map[x, y] = (((double) val.R + (double) val.G + (double) val.B)/3.0)/255.0; |
52 | } | 51 | } |
53 | } | 52 | } |
54 | 53 | ||
@@ -57,21 +56,21 @@ namespace libTerrain | |||
57 | 56 | ||
58 | public void SaveImage(string filename) | 57 | public void SaveImage(string filename) |
59 | { | 58 | { |
60 | Channel outmap = this.Copy(); | 59 | Channel outmap = Copy(); |
61 | outmap.Normalise(); | 60 | outmap.Normalise(); |
62 | 61 | ||
63 | Bitmap bit = new Bitmap(w, h, System.Drawing.Imaging.PixelFormat.Format24bppRgb); | 62 | Bitmap bit = new Bitmap(w, h, PixelFormat.Format24bppRgb); |
64 | int x, y; | 63 | int x, y; |
65 | for (x = 0; x < w; x++) | 64 | for (x = 0; x < w; x++) |
66 | { | 65 | { |
67 | for (y = 0; y < h; y++) | 66 | for (y = 0; y < h; y++) |
68 | { | 67 | { |
69 | int val = Math.Min(255, (int)(outmap.map[x,y] * 255)); | 68 | int val = Math.Min(255, (int) (outmap.map[x, y]*255)); |
70 | Color col = Color.FromArgb(val,val,val); | 69 | Color col = Color.FromArgb(val, val, val); |
71 | bit.SetPixel(x, y, col); | 70 | bit.SetPixel(x, y, col); |
72 | } | 71 | } |
73 | } | 72 | } |
74 | bit.Save(filename); | 73 | bit.Save(filename); |
75 | } | 74 | } |
76 | } | 75 | } |
77 | } | 76 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Generators/Fracture.cs b/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Generators/Fracture.cs index 3a9b7f7..65badd1 100644 --- a/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Generators/Fracture.cs +++ b/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Generators/Fracture.cs | |||
@@ -27,8 +27,6 @@ | |||
27 | */ | 27 | */ |
28 | 28 | ||
29 | using System; | 29 | using System; |
30 | using System.Collections.Generic; | ||
31 | using System.Text; | ||
32 | 30 | ||
33 | namespace libTerrain | 31 | namespace libTerrain |
34 | { | 32 | { |
@@ -60,19 +58,19 @@ namespace libTerrain | |||
60 | } | 58 | } |
61 | if (val < 512) | 59 | if (val < 512) |
62 | { | 60 | { |
63 | ret[0] = (val % 256); | 61 | ret[0] = (val%256); |
64 | ret[1] = 255; | 62 | ret[1] = 255; |
65 | return ret; | 63 | return ret; |
66 | } | 64 | } |
67 | if (val < 768) | 65 | if (val < 768) |
68 | { | 66 | { |
69 | ret[0] = 255; | 67 | ret[0] = 255; |
70 | ret[1] = 255 - (val % 256); | 68 | ret[1] = 255 - (val%256); |
71 | return ret; | 69 | return ret; |
72 | } | 70 | } |
73 | if (val < 1024) | 71 | if (val < 1024) |
74 | { | 72 | { |
75 | ret[0] = 255 - (val % 256); | 73 | ret[0] = 255 - (val%256); |
76 | ret[1] = 255; | 74 | ret[1] = 255; |
77 | return ret; | 75 | return ret; |
78 | } | 76 | } |
@@ -100,7 +98,7 @@ namespace libTerrain | |||
100 | { | 98 | { |
101 | for (int y = 0; y < h; y++) | 99 | for (int y = 0; y < h; y++) |
102 | { | 100 | { |
103 | double miny = Tools.LinearInterpolate(a[1], b[1], (double)x / (double)w); | 101 | double miny = Tools.LinearInterpolate(a[1], b[1], (double) x/(double) w); |
104 | 102 | ||
105 | if (v >= 0.5) | 103 | if (v >= 0.5) |
106 | { | 104 | { |
diff --git a/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Generators/Gradient.cs b/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Generators/Gradient.cs index 8a1b048..b6e2491 100644 --- a/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Generators/Gradient.cs +++ b/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Generators/Gradient.cs | |||
@@ -26,15 +26,10 @@ | |||
26 | * | 26 | * |
27 | */ | 27 | */ |
28 | 28 | ||
29 | using System; | ||
30 | using System.Collections.Generic; | ||
31 | using System.Text; | ||
32 | |||
33 | namespace libTerrain | 29 | namespace libTerrain |
34 | { | 30 | { |
35 | partial class Channel | 31 | partial class Channel |
36 | { | 32 | { |
37 | |||
38 | public void GradientCube() | 33 | public void GradientCube() |
39 | { | 34 | { |
40 | SetDiff(); | 35 | SetDiff(); |
diff --git a/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Generators/HillPlanter.cs b/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Generators/HillPlanter.cs index 7cea800..6806748 100644 --- a/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Generators/HillPlanter.cs +++ b/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Generators/HillPlanter.cs | |||
@@ -27,8 +27,6 @@ | |||
27 | */ | 27 | */ |
28 | 28 | ||
29 | using System; | 29 | using System; |
30 | using System.Collections.Generic; | ||
31 | using System.Text; | ||
32 | 30 | ||
33 | namespace libTerrain | 31 | namespace libTerrain |
34 | { | 32 | { |
@@ -44,7 +42,8 @@ namespace libTerrain | |||
44 | /// <param name="island">Whether to bias hills towards the center of the map</param> | 42 | /// <param name="island">Whether to bias hills towards the center of the map</param> |
45 | /// <param name="additive">Whether to add hills together or to pick the largest value</param> | 43 | /// <param name="additive">Whether to add hills together or to pick the largest value</param> |
46 | /// <param name="noisy">Generates hill-shaped noise instead of consistent hills</param> | 44 | /// <param name="noisy">Generates hill-shaped noise instead of consistent hills</param> |
47 | public void HillsSpheres(int number, double scale_min, double scale_range, bool island, bool additive, bool noisy) | 45 | public void HillsSpheres(int number, double scale_min, double scale_range, bool island, bool additive, |
46 | bool noisy) | ||
48 | { | 47 | { |
49 | SetDiff(); | 48 | SetDiff(); |
50 | 49 | ||
@@ -55,20 +54,20 @@ namespace libTerrain | |||
55 | 54 | ||
56 | for (i = 0; i < number; i++) | 55 | for (i = 0; i < number; i++) |
57 | { | 56 | { |
58 | double rx = Math.Min(255.0, random.NextDouble() * w); | 57 | double rx = Math.Min(255.0, random.NextDouble()*w); |
59 | double ry = Math.Min(255.0, random.NextDouble() * h); | 58 | double ry = Math.Min(255.0, random.NextDouble()*h); |
60 | double rand = random.NextDouble(); | 59 | double rand = random.NextDouble(); |
61 | 60 | ||
62 | if (island) | 61 | if (island) |
63 | { | 62 | { |
64 | // Move everything towards the center | 63 | // Move everything towards the center |
65 | rx -= w / 2; | 64 | rx -= w/2; |
66 | rx /= 2; | 65 | rx /= 2; |
67 | rx += w / 2; | 66 | rx += w/2; |
68 | 67 | ||
69 | ry -= h / 2; | 68 | ry -= h/2; |
70 | ry /= 2; | 69 | ry /= 2; |
71 | ry += h / 2; | 70 | ry += h/2; |
72 | } | 71 | } |
73 | 72 | ||
74 | for (x = 0; x < w; x++) | 73 | for (x = 0; x < w; x++) |
@@ -78,9 +77,9 @@ namespace libTerrain | |||
78 | if (noisy) | 77 | if (noisy) |
79 | rand = random.NextDouble(); | 78 | rand = random.NextDouble(); |
80 | 79 | ||
81 | double z = (scale_min + (scale_range * rand)); | 80 | double z = (scale_min + (scale_range*rand)); |
82 | z *= z; | 81 | z *= z; |
83 | z -= ((x - rx) * (x - rx)) + ((y - ry) * (y - ry)); | 82 | z -= ((x - rx)*(x - rx)) + ((y - ry)*(y - ry)); |
84 | 83 | ||
85 | if (z < 0) | 84 | if (z < 0) |
86 | z = 0; | 85 | z = 0; |
@@ -121,20 +120,20 @@ namespace libTerrain | |||
121 | 120 | ||
122 | for (i = 0; i < number; i++) | 121 | for (i = 0; i < number; i++) |
123 | { | 122 | { |
124 | double rx = Math.Min(255.0, random.NextDouble() * w); | 123 | double rx = Math.Min(255.0, random.NextDouble()*w); |
125 | double ry = Math.Min(255.0, random.NextDouble() * h); | 124 | double ry = Math.Min(255.0, random.NextDouble()*h); |
126 | double rand = random.NextDouble(); | 125 | double rand = random.NextDouble(); |
127 | 126 | ||
128 | if (island) | 127 | if (island) |
129 | { | 128 | { |
130 | // Move everything towards the center | 129 | // Move everything towards the center |
131 | rx -= w / 2; | 130 | rx -= w/2; |
132 | rx /= 2; | 131 | rx /= 2; |
133 | rx += w / 2; | 132 | rx += w/2; |
134 | 133 | ||
135 | ry -= h / 2; | 134 | ry -= h/2; |
136 | ry /= 2; | 135 | ry /= 2; |
137 | ry += h / 2; | 136 | ry += h/2; |
138 | } | 137 | } |
139 | 138 | ||
140 | for (x = 0; x < w; x++) | 139 | for (x = 0; x < w; x++) |
@@ -144,8 +143,8 @@ namespace libTerrain | |||
144 | if (noisy) | 143 | if (noisy) |
145 | rand = random.NextDouble(); | 144 | rand = random.NextDouble(); |
146 | 145 | ||
147 | double z = (scale_min + (scale_range * rand)); | 146 | double z = (scale_min + (scale_range*rand)); |
148 | z -= Math.Sqrt(((x - rx) * (x - rx)) + ((y - ry) * (y - ry))); | 147 | z -= Math.Sqrt(((x - rx)*(x - rx)) + ((y - ry)*(y - ry))); |
149 | 148 | ||
150 | if (z < 0) | 149 | if (z < 0) |
151 | z = 0; | 150 | z = 0; |
@@ -176,20 +175,20 @@ namespace libTerrain | |||
176 | 175 | ||
177 | for (i = 0; i < number; i++) | 176 | for (i = 0; i < number; i++) |
178 | { | 177 | { |
179 | double rx = Math.Min(255.0, random.NextDouble() * w); | 178 | double rx = Math.Min(255.0, random.NextDouble()*w); |
180 | double ry = Math.Min(255.0, random.NextDouble() * h); | 179 | double ry = Math.Min(255.0, random.NextDouble()*h); |
181 | double rand = random.NextDouble(); | 180 | double rand = random.NextDouble(); |
182 | 181 | ||
183 | if (island) | 182 | if (island) |
184 | { | 183 | { |
185 | // Move everything towards the center | 184 | // Move everything towards the center |
186 | rx -= w / 2; | 185 | rx -= w/2; |
187 | rx /= 2; | 186 | rx /= 2; |
188 | rx += w / 2; | 187 | rx += w/2; |
189 | 188 | ||
190 | ry -= h / 2; | 189 | ry -= h/2; |
191 | ry /= 2; | 190 | ry /= 2; |
192 | ry += h / 2; | 191 | ry += h/2; |
193 | } | 192 | } |
194 | 193 | ||
195 | for (x = 0; x < w; x++) | 194 | for (x = 0; x < w; x++) |
@@ -199,8 +198,8 @@ namespace libTerrain | |||
199 | if (noisy) | 198 | if (noisy) |
200 | rand = random.NextDouble(); | 199 | rand = random.NextDouble(); |
201 | 200 | ||
202 | double z = (scale_min + (scale_range * rand)); | 201 | double z = (scale_min + (scale_range*rand)); |
203 | z -= Math.Abs(x-rx) + Math.Abs(y-ry); | 202 | z -= Math.Abs(x - rx) + Math.Abs(y - ry); |
204 | //z -= Math.Sqrt(((x - rx) * (x - rx)) + ((y - ry) * (y - ry))); | 203 | //z -= Math.Sqrt(((x - rx) * (x - rx)) + ((y - ry) * (y - ry))); |
205 | 204 | ||
206 | if (z < 0) | 205 | if (z < 0) |
@@ -221,7 +220,8 @@ namespace libTerrain | |||
221 | Normalise(); | 220 | Normalise(); |
222 | } | 221 | } |
223 | 222 | ||
224 | public void HillsSquared(int number, double scale_min, double scale_range, bool island, bool additive, bool noisy) | 223 | public void HillsSquared(int number, double scale_min, double scale_range, bool island, bool additive, |
224 | bool noisy) | ||
225 | { | 225 | { |
226 | SetDiff(); | 226 | SetDiff(); |
227 | 227 | ||
@@ -232,20 +232,20 @@ namespace libTerrain | |||
232 | 232 | ||
233 | for (i = 0; i < number; i++) | 233 | for (i = 0; i < number; i++) |
234 | { | 234 | { |
235 | double rx = Math.Min(255.0, random.NextDouble() * w); | 235 | double rx = Math.Min(255.0, random.NextDouble()*w); |
236 | double ry = Math.Min(255.0, random.NextDouble() * h); | 236 | double ry = Math.Min(255.0, random.NextDouble()*h); |
237 | double rand = random.NextDouble(); | 237 | double rand = random.NextDouble(); |
238 | 238 | ||
239 | if (island) | 239 | if (island) |
240 | { | 240 | { |
241 | // Move everything towards the center | 241 | // Move everything towards the center |
242 | rx -= w / 2; | 242 | rx -= w/2; |
243 | rx /= 2; | 243 | rx /= 2; |
244 | rx += w / 2; | 244 | rx += w/2; |
245 | 245 | ||
246 | ry -= h / 2; | 246 | ry -= h/2; |
247 | ry /= 2; | 247 | ry /= 2; |
248 | ry += h / 2; | 248 | ry += h/2; |
249 | } | 249 | } |
250 | 250 | ||
251 | for (x = 0; x < w; x++) | 251 | for (x = 0; x < w; x++) |
@@ -255,11 +255,11 @@ namespace libTerrain | |||
255 | if (noisy) | 255 | if (noisy) |
256 | rand = random.NextDouble(); | 256 | rand = random.NextDouble(); |
257 | 257 | ||
258 | double z = (scale_min + (scale_range * rand)); | 258 | double z = (scale_min + (scale_range*rand)); |
259 | z *= z * z * z; | 259 | z *= z*z*z; |
260 | double dx = Math.Abs(x - rx); | 260 | double dx = Math.Abs(x - rx); |
261 | double dy = Math.Abs(y - ry); | 261 | double dy = Math.Abs(y - ry); |
262 | z -= (dx * dx * dx * dx) + (dy * dy * dy * dy); | 262 | z -= (dx*dx*dx*dx) + (dy*dy*dy*dy); |
263 | 263 | ||
264 | if (z < 0) | 264 | if (z < 0) |
265 | z = 0; | 265 | z = 0; |
@@ -278,6 +278,5 @@ namespace libTerrain | |||
278 | 278 | ||
279 | Normalise(); | 279 | Normalise(); |
280 | } | 280 | } |
281 | |||
282 | } | 281 | } |
283 | } | 282 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Generators/Noise.cs b/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Generators/Noise.cs index 43ae37a..5d39cd5 100644 --- a/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Generators/Noise.cs +++ b/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Generators/Noise.cs | |||
@@ -27,8 +27,6 @@ | |||
27 | */ | 27 | */ |
28 | 28 | ||
29 | using System; | 29 | using System; |
30 | using System.Collections.Generic; | ||
31 | using System.Text; | ||
32 | 30 | ||
33 | namespace libTerrain | 31 | namespace libTerrain |
34 | { | 32 | { |
@@ -53,4 +51,4 @@ namespace libTerrain | |||
53 | } | 51 | } |
54 | } | 52 | } |
55 | } | 53 | } |
56 | } | 54 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Generators/Spiral.cs b/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Generators/Spiral.cs index d7e0dcd..10eaf71 100644 --- a/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Generators/Spiral.cs +++ b/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Generators/Spiral.cs | |||
@@ -28,7 +28,6 @@ | |||
28 | 28 | ||
29 | using System; | 29 | using System; |
30 | using System.Collections.Generic; | 30 | using System.Collections.Generic; |
31 | using System.Text; | ||
32 | 31 | ||
33 | namespace libTerrain | 32 | namespace libTerrain |
34 | { | 33 | { |
@@ -36,10 +35,10 @@ namespace libTerrain | |||
36 | { | 35 | { |
37 | private double[] CoordinatesToPolar(int x, int y) | 36 | private double[] CoordinatesToPolar(int x, int y) |
38 | { | 37 | { |
39 | double theta = Math.Atan2(x - (w / 2), y - (h / 2)); | 38 | double theta = Math.Atan2(x - (w/2), y - (h/2)); |
40 | double rx = (double)x - ((double)w / 2); | 39 | double rx = (double) x - ((double) w/2); |
41 | double ry = (double)y - ((double)h / 2); | 40 | double ry = (double) y - ((double) h/2); |
42 | double r = Math.Sqrt((rx * rx) + (ry * ry)); | 41 | double r = Math.Sqrt((rx*rx) + (ry*ry)); |
43 | 42 | ||
44 | double[] coords = new double[2]; | 43 | double[] coords = new double[2]; |
45 | coords[0] = r; | 44 | coords[0] = r; |
@@ -47,15 +46,16 @@ namespace libTerrain | |||
47 | return coords; | 46 | return coords; |
48 | } | 47 | } |
49 | 48 | ||
50 | public int[] PolarToCoordinates(double r, double theta) { | 49 | public int[] PolarToCoordinates(double r, double theta) |
50 | { | ||
51 | double nx; | 51 | double nx; |
52 | double ny; | 52 | double ny; |
53 | 53 | ||
54 | nx = (double)r * Math.Cos(theta); | 54 | nx = (double) r*Math.Cos(theta); |
55 | ny = (double)r * Math.Sin(theta); | 55 | ny = (double) r*Math.Sin(theta); |
56 | 56 | ||
57 | nx += w / 2; | 57 | nx += w/2; |
58 | ny += h / 2; | 58 | ny += h/2; |
59 | 59 | ||
60 | if (nx >= w) | 60 | if (nx >= w) |
61 | nx = w - 1; | 61 | nx = w - 1; |
@@ -70,8 +70,8 @@ namespace libTerrain | |||
70 | ny = 0; | 70 | ny = 0; |
71 | 71 | ||
72 | int[] coords = new int[2]; | 72 | int[] coords = new int[2]; |
73 | coords[0] = (int)nx; | 73 | coords[0] = (int) nx; |
74 | coords[1] = (int)ny; | 74 | coords[1] = (int) ny; |
75 | return coords; | 75 | return coords; |
76 | } | 76 | } |
77 | 77 | ||
@@ -79,19 +79,19 @@ namespace libTerrain | |||
79 | { | 79 | { |
80 | SetDiff(); | 80 | SetDiff(); |
81 | 81 | ||
82 | Channel n = this.Copy(); | 82 | Channel n = Copy(); |
83 | 83 | ||
84 | int x, y; | 84 | int x, y; |
85 | for (x = 0; x < w; x++) | 85 | for (x = 0; x < w; x++) |
86 | { | 86 | { |
87 | for (y = 0; y < h; y++) | 87 | for (y = 0; y < h; y++) |
88 | { | 88 | { |
89 | double[] coords = CoordinatesToPolar(x,y); | 89 | double[] coords = CoordinatesToPolar(x, y); |
90 | 90 | ||
91 | coords[0] += w / 2.0; | 91 | coords[0] += w/2.0; |
92 | coords[1] += h / 2.0; | 92 | coords[1] += h/2.0; |
93 | 93 | ||
94 | map[x, y] = n.map[(int)coords[0] % n.w, (int)coords[1] % n.h]; | 94 | map[x, y] = n.map[(int) coords[0]%n.w, (int) coords[1]%n.h]; |
95 | } | 95 | } |
96 | } | 96 | } |
97 | } | 97 | } |
@@ -108,12 +108,13 @@ namespace libTerrain | |||
108 | r += incRadius; | 108 | r += incRadius; |
109 | theta += incAngle; | 109 | theta += incAngle; |
110 | 110 | ||
111 | int[] coords = PolarToCoordinates(r,theta); | 111 | int[] coords = PolarToCoordinates(r, theta); |
112 | Raise(coords[0], coords[1], 20, 1); | 112 | Raise(coords[0], coords[1], 20, 1); |
113 | } | 113 | } |
114 | } | 114 | } |
115 | 115 | ||
116 | public void SpiralCells(int steps, double incAngle, double incRadius, double offsetRadius, double offsetAngle, double[] c) | 116 | public void SpiralCells(int steps, double incAngle, double incRadius, double offsetRadius, double offsetAngle, |
117 | double[] c) | ||
117 | { | 118 | { |
118 | SetDiff(); | 119 | SetDiff(); |
119 | 120 | ||
@@ -128,7 +129,7 @@ namespace libTerrain | |||
128 | theta += incAngle; | 129 | theta += incAngle; |
129 | 130 | ||
130 | int[] coords = PolarToCoordinates(r, theta); | 131 | int[] coords = PolarToCoordinates(r, theta); |
131 | points.Add(new Point2D(coords[0],coords[1])); | 132 | points.Add(new Point2D(coords[0], coords[1])); |
132 | } | 133 | } |
133 | 134 | ||
134 | VoronoiDiagram(points, c); | 135 | VoronoiDiagram(points, c); |
@@ -145,9 +146,9 @@ namespace libTerrain | |||
145 | for (y = 0; y < h; y++) | 146 | for (y = 0; y < h; y++) |
146 | { | 147 | { |
147 | z++; | 148 | z++; |
148 | double dx = Math.Abs((w / 2) - x); | 149 | double dx = Math.Abs((w/2) - x); |
149 | double dy = Math.Abs((h / 2) - y); | 150 | double dy = Math.Abs((h/2) - y); |
150 | map[x, y] += Math.Sin(dx / wid) + Math.Cos(dy / hig); | 151 | map[x, y] += Math.Sin(dx/wid) + Math.Cos(dy/hig); |
151 | } | 152 | } |
152 | } | 153 | } |
153 | Normalise(); | 154 | Normalise(); |
diff --git a/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Generators/Voronoi.cs b/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Generators/Voronoi.cs index e2f9560..0159b87 100644 --- a/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Generators/Voronoi.cs +++ b/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Generators/Voronoi.cs | |||
@@ -28,7 +28,6 @@ | |||
28 | 28 | ||
29 | using System; | 29 | using System; |
30 | using System.Collections.Generic; | 30 | using System.Collections.Generic; |
31 | using System.Text; | ||
32 | 31 | ||
33 | namespace libTerrain | 32 | namespace libTerrain |
34 | { | 33 | { |
@@ -57,8 +56,8 @@ namespace libTerrain | |||
57 | { | 56 | { |
58 | for (i = 0; i < pointsPerBlock; i++) | 57 | for (i = 0; i < pointsPerBlock; i++) |
59 | { | 58 | { |
60 | double pX = x + (generator.NextDouble() * (double)blockSize); | 59 | double pX = x + (generator.NextDouble()*(double) blockSize); |
61 | double pY = y + (generator.NextDouble() * (double)blockSize); | 60 | double pY = y + (generator.NextDouble()*(double) blockSize); |
62 | 61 | ||
63 | points.Add(new Point2D(pX, pY)); | 62 | points.Add(new Point2D(pX, pY)); |
64 | } | 63 | } |
@@ -75,10 +74,10 @@ namespace libTerrain | |||
75 | for (i = 0; i < points.Count; i++) | 74 | for (i = 0; i < points.Count; i++) |
76 | { | 75 | { |
77 | double dx, dy; | 76 | double dx, dy; |
78 | dx = Math.Abs((double)x - points[i].x); | 77 | dx = Math.Abs((double) x - points[i].x); |
79 | dy = Math.Abs((double)y - points[i].y); | 78 | dy = Math.Abs((double) y - points[i].y); |
80 | 79 | ||
81 | distances[i] = (dx * dx + dy * dy); | 80 | distances[i] = (dx*dx + dy*dy); |
82 | } | 81 | } |
83 | 82 | ||
84 | Array.Sort(distances); | 83 | Array.Sort(distances); |
@@ -92,7 +91,7 @@ namespace libTerrain | |||
92 | if (i >= points.Count) | 91 | if (i >= points.Count) |
93 | break; | 92 | break; |
94 | 93 | ||
95 | f += c[i] * distances[i]; | 94 | f += c[i]*distances[i]; |
96 | } | 95 | } |
97 | 96 | ||
98 | map[x, y] = f; | 97 | map[x, y] = f; |
@@ -119,10 +118,10 @@ namespace libTerrain | |||
119 | for (i = 0; i < points.Count; i++) | 118 | for (i = 0; i < points.Count; i++) |
120 | { | 119 | { |
121 | double dx, dy; | 120 | double dx, dy; |
122 | dx = Math.Abs((double)x - points[i].x); | 121 | dx = Math.Abs((double) x - points[i].x); |
123 | dy = Math.Abs((double)y - points[i].y); | 122 | dy = Math.Abs((double) y - points[i].y); |
124 | 123 | ||
125 | distances[i] = (dx * dx + dy * dy); | 124 | distances[i] = (dx*dx + dy*dy); |
126 | } | 125 | } |
127 | 126 | ||
128 | Array.Sort(distances); | 127 | Array.Sort(distances); |
@@ -136,7 +135,7 @@ namespace libTerrain | |||
136 | if (i >= points.Count) | 135 | if (i >= points.Count) |
137 | break; | 136 | break; |
138 | 137 | ||
139 | f += c[i] * distances[i]; | 138 | f += c[i]*distances[i]; |
140 | } | 139 | } |
141 | 140 | ||
142 | map[x, y] = f; | 141 | map[x, y] = f; |
@@ -162,8 +161,8 @@ namespace libTerrain | |||
162 | { | 161 | { |
163 | for (i = 0; i < pointsPerBlock; i++) | 162 | for (i = 0; i < pointsPerBlock; i++) |
164 | { | 163 | { |
165 | double pX = x + (generator.NextDouble() * (double)blockSize); | 164 | double pX = x + (generator.NextDouble()*(double) blockSize); |
166 | double pY = y + (generator.NextDouble() * (double)blockSize); | 165 | double pY = y + (generator.NextDouble()*(double) blockSize); |
167 | 166 | ||
168 | points.Add(new Point2D(pX, pY)); | 167 | points.Add(new Point2D(pX, pY)); |
169 | } | 168 | } |
@@ -180,10 +179,10 @@ namespace libTerrain | |||
180 | for (i = 0; i < points.Count; i++) | 179 | for (i = 0; i < points.Count; i++) |
181 | { | 180 | { |
182 | double dx, dy; | 181 | double dx, dy; |
183 | dx = Math.Abs((double)x - points[i].x); | 182 | dx = Math.Abs((double) x - points[i].x); |
184 | dy = Math.Abs((double)y - points[i].y); | 183 | dy = Math.Abs((double) y - points[i].y); |
185 | 184 | ||
186 | distances[i] = (dx * dx + dy * dy); | 185 | distances[i] = (dx*dx + dy*dy); |
187 | } | 186 | } |
188 | 187 | ||
189 | //Array.Sort(distances); | 188 | //Array.Sort(distances); |
@@ -191,7 +190,7 @@ namespace libTerrain | |||
191 | double f = 0.0; | 190 | double f = 0.0; |
192 | 191 | ||
193 | double min = double.MaxValue; | 192 | double min = double.MaxValue; |
194 | for (int j = 0; j < distances.Length;j++ ) | 193 | for (int j = 0; j < distances.Length; j++) |
195 | { | 194 | { |
196 | if (distances[j] < min) | 195 | if (distances[j] < min) |
197 | { | 196 | { |
@@ -211,4 +210,4 @@ namespace libTerrain | |||
211 | Normalise(); | 210 | Normalise(); |
212 | } | 211 | } |
213 | } | 212 | } |
214 | } | 213 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Generators/Worms.cs b/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Generators/Worms.cs index 788134d..deb2e0e 100644 --- a/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Generators/Worms.cs +++ b/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Generators/Worms.cs | |||
@@ -27,8 +27,6 @@ | |||
27 | */ | 27 | */ |
28 | 28 | ||
29 | using System; | 29 | using System; |
30 | using System.Collections.Generic; | ||
31 | using System.Text; | ||
32 | 30 | ||
33 | namespace libTerrain | 31 | namespace libTerrain |
34 | { | 32 | { |
@@ -54,18 +52,18 @@ namespace libTerrain | |||
54 | double rx, ry; | 52 | double rx, ry; |
55 | if (centerspawn) | 53 | if (centerspawn) |
56 | { | 54 | { |
57 | rx = w / 2.0; | 55 | rx = w/2.0; |
58 | ry = h / 2.0; | 56 | ry = h/2.0; |
59 | } | 57 | } |
60 | else | 58 | else |
61 | { | 59 | { |
62 | rx = random.NextDouble() * (w - 1); | 60 | rx = random.NextDouble()*(w - 1); |
63 | ry = random.NextDouble() * (h - 1); | 61 | ry = random.NextDouble()*(h - 1); |
64 | } | 62 | } |
65 | for (j = 0; j < rounds; j++) | 63 | for (j = 0; j < rounds; j++) |
66 | { | 64 | { |
67 | rx += (random.NextDouble() * movement) - (movement / 2.0); | 65 | rx += (random.NextDouble()*movement) - (movement/2.0); |
68 | ry += (random.NextDouble() * movement) - (movement / 2.0); | 66 | ry += (random.NextDouble()*movement) - (movement/2.0); |
69 | Raise(rx, ry, size, 1.0); | 67 | Raise(rx, ry, size, 1.0); |
70 | } | 68 | } |
71 | } | 69 | } |
diff --git a/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Grid.cs b/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Grid.cs index 0155791..24df5b9 100644 --- a/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Grid.cs +++ b/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Grid.cs | |||
@@ -27,8 +27,6 @@ | |||
27 | */ | 27 | */ |
28 | 28 | ||
29 | using System; | 29 | using System; |
30 | using System.Collections.Generic; | ||
31 | using System.Text; | ||
32 | 30 | ||
33 | namespace libTerrain | 31 | namespace libTerrain |
34 | { | 32 | { |
@@ -49,13 +47,13 @@ namespace libTerrain | |||
49 | { | 47 | { |
50 | for (y = 0; y < h; y++) | 48 | for (y = 0; y < h; y++) |
51 | { | 49 | { |
52 | map[x, y] = (map[x, y] - min) * (1.0 / (max - min)); | 50 | map[x, y] = (map[x, y] - min)*(1.0/(max - min)); |
53 | } | 51 | } |
54 | } | 52 | } |
55 | } | 53 | } |
56 | else | 54 | else |
57 | { | 55 | { |
58 | this.Fill(0.5); | 56 | Fill(0.5); |
59 | } | 57 | } |
60 | 58 | ||
61 | return this; | 59 | return this; |
@@ -82,7 +80,7 @@ namespace libTerrain | |||
82 | { | 80 | { |
83 | if (min != max) | 81 | if (min != max) |
84 | { | 82 | { |
85 | double val = (map[x, y] - min) * (1.0 / max - min); | 83 | double val = (map[x, y] - min)*(1.0/max - min); |
86 | val *= maxv - minv; | 84 | val *= maxv - minv; |
87 | val += minv; | 85 | val += minv; |
88 | 86 | ||
@@ -179,9 +177,9 @@ namespace libTerrain | |||
179 | SetDiff(); | 177 | SetDiff(); |
180 | 178 | ||
181 | double area = amount; | 179 | double area = amount; |
182 | double step = amount / 4.0; | 180 | double step = amount/4.0; |
183 | 181 | ||
184 | double[,] manipulate = new double[w, h]; | 182 | double[,] manipulate = new double[w,h]; |
185 | int x, y; | 183 | int x, y; |
186 | double n, l; | 184 | double n, l; |
187 | for (x = 0; x < w; x++) | 185 | for (x = 0; x < w; x++) |
@@ -200,7 +198,7 @@ namespace libTerrain | |||
200 | } | 198 | } |
201 | } | 199 | } |
202 | 200 | ||
203 | manipulate[x, y] = average / avgsteps; | 201 | manipulate[x, y] = average/avgsteps; |
204 | } | 202 | } |
205 | } | 203 | } |
206 | map = manipulate; | 204 | map = manipulate; |
@@ -211,7 +209,7 @@ namespace libTerrain | |||
211 | SetDiff(); | 209 | SetDiff(); |
212 | 210 | ||
213 | // Simple pertubation filter | 211 | // Simple pertubation filter |
214 | double[,] manipulated = new double[w, h]; | 212 | double[,] manipulated = new double[w,h]; |
215 | Random generator = new Random(seed); // Seeds FTW! | 213 | Random generator = new Random(seed); // Seeds FTW! |
216 | //double amount = 8.0; | 214 | //double amount = 8.0; |
217 | 215 | ||
@@ -220,8 +218,8 @@ namespace libTerrain | |||
220 | { | 218 | { |
221 | for (y = 0; y < h; y++) | 219 | for (y = 0; y < h; y++) |
222 | { | 220 | { |
223 | double offset_x = (double)x + (generator.NextDouble() * amount) - (amount / 2.0); | 221 | double offset_x = (double) x + (generator.NextDouble()*amount) - (amount/2.0); |
224 | double offset_y = (double)y + (generator.NextDouble() * amount) - (amount / 2.0); | 222 | double offset_y = (double) y + (generator.NextDouble()*amount) - (amount/2.0); |
225 | double p = GetBilinearInterpolate(offset_x, offset_y); | 223 | double p = GetBilinearInterpolate(offset_x, offset_y); |
226 | manipulated[x, y] = p; | 224 | manipulated[x, y] = p; |
227 | } | 225 | } |
@@ -232,7 +230,7 @@ namespace libTerrain | |||
232 | public void PertubationMask(Channel mask) | 230 | public void PertubationMask(Channel mask) |
233 | { | 231 | { |
234 | // Simple pertubation filter | 232 | // Simple pertubation filter |
235 | double[,] manipulated = new double[w, h]; | 233 | double[,] manipulated = new double[w,h]; |
236 | Random generator = new Random(seed); // Seeds FTW! | 234 | Random generator = new Random(seed); // Seeds FTW! |
237 | //double amount = 8.0; | 235 | //double amount = 8.0; |
238 | 236 | ||
@@ -244,8 +242,8 @@ namespace libTerrain | |||
244 | for (y = 0; y < h; y++) | 242 | for (y = 0; y < h; y++) |
245 | { | 243 | { |
246 | amount = mask.map[x, y]; | 244 | amount = mask.map[x, y]; |
247 | double offset_x = (double)x + (generator.NextDouble() * amount) - (amount / 2.0); | 245 | double offset_x = (double) x + (generator.NextDouble()*amount) - (amount/2.0); |
248 | double offset_y = (double)y + (generator.NextDouble() * amount) - (amount / 2.0); | 246 | double offset_y = (double) y + (generator.NextDouble()*amount) - (amount/2.0); |
249 | 247 | ||
250 | if (offset_x > w) | 248 | if (offset_x > w) |
251 | offset_x = w - 1; | 249 | offset_x = w - 1; |
@@ -267,7 +265,7 @@ namespace libTerrain | |||
267 | public void Distort(Channel mask, double str) | 265 | public void Distort(Channel mask, double str) |
268 | { | 266 | { |
269 | // Simple pertubation filter | 267 | // Simple pertubation filter |
270 | double[,] manipulated = new double[w, h]; | 268 | double[,] manipulated = new double[w,h]; |
271 | 269 | ||
272 | double amount; | 270 | double amount; |
273 | 271 | ||
@@ -277,8 +275,8 @@ namespace libTerrain | |||
277 | for (y = 0; y < h; y++) | 275 | for (y = 0; y < h; y++) |
278 | { | 276 | { |
279 | amount = mask.map[x, y]; | 277 | amount = mask.map[x, y]; |
280 | double offset_x = (double)x + (amount * str) - (0.5 * str); | 278 | double offset_x = (double) x + (amount*str) - (0.5*str); |
281 | double offset_y = (double)y + (amount * str) - (0.5 * str); | 279 | double offset_y = (double) y + (amount*str) - (0.5*str); |
282 | 280 | ||
283 | if (offset_x > w) | 281 | if (offset_x > w) |
284 | offset_x = w - 1; | 282 | offset_x = w - 1; |
@@ -295,13 +293,12 @@ namespace libTerrain | |||
295 | } | 293 | } |
296 | } | 294 | } |
297 | map = manipulated; | 295 | map = manipulated; |
298 | |||
299 | } | 296 | } |
300 | 297 | ||
301 | public void Distort(Channel mask, Channel mask2, double str) | 298 | public void Distort(Channel mask, Channel mask2, double str) |
302 | { | 299 | { |
303 | // Simple pertubation filter | 300 | // Simple pertubation filter |
304 | double[,] manipulated = new double[w, h]; | 301 | double[,] manipulated = new double[w,h]; |
305 | 302 | ||
306 | double amountX; | 303 | double amountX; |
307 | double amountY; | 304 | double amountY; |
@@ -313,8 +310,8 @@ namespace libTerrain | |||
313 | { | 310 | { |
314 | amountX = mask.map[x, y]; | 311 | amountX = mask.map[x, y]; |
315 | amountY = mask2.map[x, y]; | 312 | amountY = mask2.map[x, y]; |
316 | double offset_x = (double)x + (amountX * str) - (0.5 * str); | 313 | double offset_x = (double) x + (amountX*str) - (0.5*str); |
317 | double offset_y = (double)y + (amountY * str) - (0.5 * str); | 314 | double offset_y = (double) y + (amountY*str) - (0.5*str); |
318 | 315 | ||
319 | if (offset_x > w) | 316 | if (offset_x > w) |
320 | offset_x = w - 1; | 317 | offset_x = w - 1; |
@@ -331,7 +328,6 @@ namespace libTerrain | |||
331 | } | 328 | } |
332 | } | 329 | } |
333 | map = manipulated; | 330 | map = manipulated; |
334 | |||
335 | } | 331 | } |
336 | 332 | ||
337 | public Channel Blend(Channel other, double amount) | 333 | public Channel Blend(Channel other, double amount) |
@@ -360,4 +356,4 @@ namespace libTerrain | |||
360 | return this; | 356 | return this; |
361 | } | 357 | } |
362 | } | 358 | } |
363 | } | 359 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Manipulators/AerobicErosion.cs b/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Manipulators/AerobicErosion.cs index ca93c25..c8584e8 100644 --- a/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Manipulators/AerobicErosion.cs +++ b/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Manipulators/AerobicErosion.cs | |||
@@ -27,8 +27,6 @@ | |||
27 | */ | 27 | */ |
28 | 28 | ||
29 | using System; | 29 | using System; |
30 | using System.Collections.Generic; | ||
31 | using System.Text; | ||
32 | 30 | ||
33 | namespace libTerrain | 31 | namespace libTerrain |
34 | { | 32 | { |
@@ -74,17 +72,18 @@ namespace libTerrain | |||
74 | /// <param name="carry">The percentage of rock which can be picked up to pickup 0..1</param> | 72 | /// <param name="carry">The percentage of rock which can be picked up to pickup 0..1</param> |
75 | /// <param name="rounds">The number of erosion rounds (recommended: 25+)</param> | 73 | /// <param name="rounds">The number of erosion rounds (recommended: 25+)</param> |
76 | /// <param name="lowest">Drop sediment at the lowest point?</param> | 74 | /// <param name="lowest">Drop sediment at the lowest point?</param> |
77 | public void AerobicErosion(double windspeed, double pickupTalusMinimum, double dropTalusMinimum, double carry, int rounds, bool lowest, bool usingFluidDynamics) | 75 | public void AerobicErosion(double windspeed, double pickupTalusMinimum, double dropTalusMinimum, double carry, |
76 | int rounds, bool lowest, bool usingFluidDynamics) | ||
78 | { | 77 | { |
79 | bool debugImages = false; | 78 | bool debugImages = false; |
80 | 79 | ||
81 | Channel wind = new Channel(w, h) ; | 80 | Channel wind = new Channel(w, h); |
82 | Channel sediment = new Channel(w, h); | 81 | Channel sediment = new Channel(w, h); |
83 | int x, y, i, j; | 82 | int x, y, i, j; |
84 | 83 | ||
85 | this.Normalise(); | 84 | Normalise(); |
86 | 85 | ||
87 | wind = this.Copy(); | 86 | wind = Copy(); |
88 | wind.Noise(); | 87 | wind.Noise(); |
89 | 88 | ||
90 | if (debugImages) | 89 | if (debugImages) |
@@ -120,7 +119,7 @@ namespace libTerrain | |||
120 | surfacearea += Math.Abs(target - me); | 119 | surfacearea += Math.Abs(target - me); |
121 | } | 120 | } |
122 | 121 | ||
123 | double amount = surfacearea * wind.map[x, y] * carry; | 122 | double amount = surfacearea*wind.map[x, y]*carry; |
124 | 123 | ||
125 | if (amount < 0) | 124 | if (amount < 0) |
126 | amount = 0; | 125 | amount = 0; |
@@ -147,7 +146,7 @@ namespace libTerrain | |||
147 | } | 146 | } |
148 | else | 147 | else |
149 | { | 148 | { |
150 | wind.Pertubation(15); // Can do better later | 149 | wind.Pertubation(15); // Can do better later |
151 | wind.seed++; | 150 | wind.seed++; |
152 | sediment.Pertubation(10); // Sediment is blown around a bit | 151 | sediment.Pertubation(10); // Sediment is blown around a bit |
153 | sediment.seed++; | 152 | sediment.seed++; |
@@ -175,12 +174,12 @@ namespace libTerrain | |||
175 | 174 | ||
176 | if (target < min && lowest) | 175 | if (target < min && lowest) |
177 | { | 176 | { |
178 | minside = (int[])coords.Clone(); | 177 | minside = (int[]) coords.Clone(); |
179 | min = target; | 178 | min = target; |
180 | } | 179 | } |
181 | } | 180 | } |
182 | 181 | ||
183 | double amount = surfacearea * (1.0 - wind.map[x, y]) * carry; | 182 | double amount = surfacearea*(1.0 - wind.map[x, y])*carry; |
184 | 183 | ||
185 | if (amount < 0) | 184 | if (amount < 0) |
186 | amount = 0; | 185 | amount = 0; |
@@ -199,7 +198,7 @@ namespace libTerrain | |||
199 | wind.Normalise(); | 198 | wind.Normalise(); |
200 | wind *= windspeed; | 199 | wind *= windspeed; |
201 | 200 | ||
202 | this.Normalise(); | 201 | Normalise(); |
203 | } | 202 | } |
204 | 203 | ||
205 | Channel myself = this; | 204 | Channel myself = this; |
@@ -207,7 +206,7 @@ namespace libTerrain | |||
207 | myself.Normalise(); | 206 | myself.Normalise(); |
208 | 207 | ||
209 | if (debugImages) | 208 | if (debugImages) |
210 | this.SaveImage("testimg/output.png"); | 209 | SaveImage("testimg/output.png"); |
211 | } | 210 | } |
212 | } | 211 | } |
213 | } \ No newline at end of file | 212 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Manipulators/HydraulicErosion.cs b/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Manipulators/HydraulicErosion.cs index 4f58f71..0e47e1b 100644 --- a/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Manipulators/HydraulicErosion.cs +++ b/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Manipulators/HydraulicErosion.cs | |||
@@ -27,8 +27,6 @@ | |||
27 | */ | 27 | */ |
28 | 28 | ||
29 | using System; | 29 | using System; |
30 | using System.Collections.Generic; | ||
31 | using System.Text; | ||
32 | 30 | ||
33 | namespace libTerrain | 31 | namespace libTerrain |
34 | { | 32 | { |
@@ -44,7 +42,7 @@ namespace libTerrain | |||
44 | Channel waterFlow = new Channel(w, h); | 42 | Channel waterFlow = new Channel(w, h); |
45 | 43 | ||
46 | NeighbourSystem type = NeighbourSystem.Moore; | 44 | NeighbourSystem type = NeighbourSystem.Moore; |
47 | int NEIGHBOUR_ME = 4; | 45 | int NEIGHBOUR_ME = 4; |
48 | 46 | ||
49 | int NEIGHBOUR_MAX = type == NeighbourSystem.Moore ? 9 : 5; | 47 | int NEIGHBOUR_MAX = type == NeighbourSystem.Moore ? 9 : 5; |
50 | 48 | ||
@@ -52,7 +50,7 @@ namespace libTerrain | |||
52 | { | 50 | { |
53 | water += rain; | 51 | water += rain; |
54 | 52 | ||
55 | sediment = terrain * water; | 53 | sediment = terrain*water; |
56 | terrain -= sediment; | 54 | terrain -= sediment; |
57 | 55 | ||
58 | for (int x = 1; x < w - 1; x++) | 56 | for (int x = 1; x < w - 1; x++) |
@@ -72,7 +70,8 @@ namespace libTerrain | |||
72 | coords[0] += x; | 70 | coords[0] += x; |
73 | coords[1] += y; | 71 | coords[1] += y; |
74 | 72 | ||
75 | heights[j] = map[coords[0], coords[1]] + water.map[coords[0], coords[1]] + sediment.map[coords[0], coords[1]]; | 73 | heights[j] = map[coords[0], coords[1]] + water.map[coords[0], coords[1]] + |
74 | sediment.map[coords[0], coords[1]]; | ||
76 | diffs[j] = heightCenter - heights[j]; | 75 | diffs[j] = heightCenter - heights[j]; |
77 | } | 76 | } |
78 | } | 77 | } |
@@ -97,13 +96,13 @@ namespace libTerrain | |||
97 | if (totalCellsCounted == 1) | 96 | if (totalCellsCounted == 1) |
98 | continue; | 97 | continue; |
99 | 98 | ||
100 | double averageHeight = totalHeight / totalCellsCounted; | 99 | double averageHeight = totalHeight/totalCellsCounted; |
101 | double waterAmount = Math.Min(water.map[x, y], heightCenter - averageHeight); | 100 | double waterAmount = Math.Min(water.map[x, y], heightCenter - averageHeight); |
102 | 101 | ||
103 | // TODO: Check this. | 102 | // TODO: Check this. |
104 | waterFlow.map[x, y] += waterFlow.map[x, y] - waterAmount; | 103 | waterFlow.map[x, y] += waterFlow.map[x, y] - waterAmount; |
105 | 104 | ||
106 | double totalInverseDiff = waterAmount / totalHeightDiff; | 105 | double totalInverseDiff = waterAmount/totalHeightDiff; |
107 | 106 | ||
108 | for (int j = 0; j < NEIGHBOUR_MAX; j++) | 107 | for (int j = 0; j < NEIGHBOUR_MAX; j++) |
109 | { | 108 | { |
@@ -115,7 +114,8 @@ namespace libTerrain | |||
115 | 114 | ||
116 | if (diffs[j] > 0) | 115 | if (diffs[j] > 0) |
117 | { | 116 | { |
118 | waterFlow.SetWrap(coords[0], coords[1], waterFlow.map[coords[0], coords[1]] + diffs[j] * totalInverseDiff); | 117 | waterFlow.SetWrap(coords[0], coords[1], |
118 | waterFlow.map[coords[0], coords[1]] + diffs[j]*totalInverseDiff); | ||
119 | } | 119 | } |
120 | } | 120 | } |
121 | } | 121 | } |
@@ -131,7 +131,7 @@ namespace libTerrain | |||
131 | { | 131 | { |
132 | for (int y = 0; y < h; y++) | 132 | for (int y = 0; y < h; y++) |
133 | { | 133 | { |
134 | double deposition = sediment.map[x, y] - water.map[x, y] * solubility; | 134 | double deposition = sediment.map[x, y] - water.map[x, y]*solubility; |
135 | if (deposition > 0) | 135 | if (deposition > 0) |
136 | { | 136 | { |
137 | sediment.map[x, y] -= deposition; | 137 | sediment.map[x, y] -= deposition; |
@@ -139,7 +139,6 @@ namespace libTerrain | |||
139 | } | 139 | } |
140 | } | 140 | } |
141 | } | 141 | } |
142 | |||
143 | } | 142 | } |
144 | } | 143 | } |
145 | } | 144 | } |
diff --git a/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Manipulators/NavierStokes.cs b/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Manipulators/NavierStokes.cs index 401cf95..8c16d7c 100644 --- a/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Manipulators/NavierStokes.cs +++ b/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Manipulators/NavierStokes.cs | |||
@@ -26,10 +26,6 @@ | |||
26 | * | 26 | * |
27 | */ | 27 | */ |
28 | 28 | ||
29 | using System; | ||
30 | using System.Collections.Generic; | ||
31 | using System.Text; | ||
32 | |||
33 | namespace libTerrain | 29 | namespace libTerrain |
34 | { | 30 | { |
35 | partial class Channel | 31 | partial class Channel |
@@ -42,7 +38,7 @@ namespace libTerrain | |||
42 | 38 | ||
43 | private static int nsIX(int i, int j, int N) | 39 | private static int nsIX(int i, int j, int N) |
44 | { | 40 | { |
45 | return ((i) + (N + 2) * (j)); | 41 | return ((i) + (N + 2)*(j)); |
46 | } | 42 | } |
47 | 43 | ||
48 | private static void nsSwap(ref double x0, ref double x) | 44 | private static void nsSwap(ref double x0, ref double x) |
@@ -62,10 +58,10 @@ namespace libTerrain | |||
62 | private void nsAddSource(int N, ref double[] x, ref double[] s, double dt) | 58 | private void nsAddSource(int N, ref double[] x, ref double[] s, double dt) |
63 | { | 59 | { |
64 | int i; | 60 | int i; |
65 | int size = (N + 2) * (N + 2); | 61 | int size = (N + 2)*(N + 2); |
66 | for (i = 0; i < size; i++) | 62 | for (i = 0; i < size; i++) |
67 | { | 63 | { |
68 | x[i] += dt * s[i]; | 64 | x[i] += dt*s[i]; |
69 | } | 65 | } |
70 | } | 66 | } |
71 | 67 | ||
@@ -74,15 +70,15 @@ namespace libTerrain | |||
74 | int i; | 70 | int i; |
75 | for (i = 0; i <= N; i++) | 71 | for (i = 0; i <= N; i++) |
76 | { | 72 | { |
77 | x[nsIX(0, i, N)] = b == 1 ? -x[nsIX(1, i, N)] : x[nsIX(1, i, N)]; | 73 | x[nsIX(0, i, N)] = b == 1 ? -x[nsIX(1, i, N)] : x[nsIX(1, i, N)]; |
78 | x[nsIX(0, N + 1, N)] = b == 1 ? -x[nsIX(N, i, N)] : x[nsIX(N, i, N)]; | 74 | x[nsIX(0, N + 1, N)] = b == 1 ? -x[nsIX(N, i, N)] : x[nsIX(N, i, N)]; |
79 | x[nsIX(i, 0, N)] = b == 2 ? -x[nsIX(i, 1, N)] : x[nsIX(i, 1, N)]; | 75 | x[nsIX(i, 0, N)] = b == 2 ? -x[nsIX(i, 1, N)] : x[nsIX(i, 1, N)]; |
80 | x[nsIX(i, N + 1, N)] = b == 2 ? -x[nsIX(i, N, N)] : x[nsIX(i, N, N)]; | 76 | x[nsIX(i, N + 1, N)] = b == 2 ? -x[nsIX(i, N, N)] : x[nsIX(i, N, N)]; |
81 | } | 77 | } |
82 | x[nsIX(0, 0, N)] = 0.5f * (x[nsIX(1, 0, N)] + x[nsIX(0, 1, N)]); | 78 | x[nsIX(0, 0, N)] = 0.5f*(x[nsIX(1, 0, N)] + x[nsIX(0, 1, N)]); |
83 | x[nsIX(0, N + 1, N)] = 0.5f * (x[nsIX(1, N + 1, N)] + x[nsIX(0, N, N)]); | 79 | x[nsIX(0, N + 1, N)] = 0.5f*(x[nsIX(1, N + 1, N)] + x[nsIX(0, N, N)]); |
84 | x[nsIX(N + 1, 0, N)] = 0.5f * (x[nsIX(N, 0, N)] + x[nsIX(N + 1, 1, N)]); | 80 | x[nsIX(N + 1, 0, N)] = 0.5f*(x[nsIX(N, 0, N)] + x[nsIX(N + 1, 1, N)]); |
85 | x[nsIX(N + 1, N + 1, N)] = 0.5f * (x[nsIX(N, N + 1, N)] + x[nsIX(N + 1, N, N)]); | 81 | x[nsIX(N + 1, N + 1, N)] = 0.5f*(x[nsIX(N, N + 1, N)] + x[nsIX(N + 1, N, N)]); |
86 | } | 82 | } |
87 | 83 | ||
88 | private void nsLinSolve(int N, int b, ref double[] x, ref double[] x0, double a, double c) | 84 | private void nsLinSolve(int N, int b, ref double[] x, ref double[] x0, double a, double c) |
@@ -92,11 +88,11 @@ namespace libTerrain | |||
92 | { | 88 | { |
93 | for (j = 1; j <= N; j++) | 89 | for (j = 1; j <= N; j++) |
94 | { | 90 | { |
95 | x[nsIX(i, j, N)] = (x0[nsIX(i, j, N)] + a * | 91 | x[nsIX(i, j, N)] = (x0[nsIX(i, j, N)] + a* |
96 | (x[nsIX(i - 1, j, N)] + | 92 | (x[nsIX(i - 1, j, N)] + |
97 | x[nsIX(i + 1, j, N)] + | 93 | x[nsIX(i + 1, j, N)] + |
98 | x[nsIX(i, j - 1, N)] + x[nsIX(i, j + 1, N)]) | 94 | x[nsIX(i, j - 1, N)] + x[nsIX(i, j + 1, N)]) |
99 | ) / c; | 95 | )/c; |
100 | } | 96 | } |
101 | } | 97 | } |
102 | 98 | ||
@@ -105,8 +101,8 @@ namespace libTerrain | |||
105 | 101 | ||
106 | private void nsDiffuse(int N, int b, ref double[] x, ref double[] x0, double diff, double dt) | 102 | private void nsDiffuse(int N, int b, ref double[] x, ref double[] x0, double diff, double dt) |
107 | { | 103 | { |
108 | double a = dt * diff * N * N; | 104 | double a = dt*diff*N*N; |
109 | nsLinSolve(N, b, ref x, ref x0, a, 1 + 4 * a); | 105 | nsLinSolve(N, b, ref x, ref x0, a, 1 + 4*a); |
110 | } | 106 | } |
111 | 107 | ||
112 | private void nsAdvect(int N, int b, ref double[] d, ref double[] d0, ref double[] u, ref double[] v, double dt) | 108 | private void nsAdvect(int N, int b, ref double[] d, ref double[] d0, ref double[] u, ref double[] v, double dt) |
@@ -114,27 +110,27 @@ namespace libTerrain | |||
114 | int i, j, i0, j0, i1, j1; | 110 | int i, j, i0, j0, i1, j1; |
115 | double x, y, s0, t0, s1, t1, dt0; | 111 | double x, y, s0, t0, s1, t1, dt0; |
116 | 112 | ||
117 | dt0 = dt * N; | 113 | dt0 = dt*N; |
118 | 114 | ||
119 | for (i = 1; i <= N; i++) | 115 | for (i = 1; i <= N; i++) |
120 | { | 116 | { |
121 | for (j = 1; j <= N; j++) | 117 | for (j = 1; j <= N; j++) |
122 | { | 118 | { |
123 | x = i - dt0 * u[nsIX(i, j, N)]; | 119 | x = i - dt0*u[nsIX(i, j, N)]; |
124 | y = j - dt0 * v[nsIX(i, j, N)]; | 120 | y = j - dt0*v[nsIX(i, j, N)]; |
125 | 121 | ||
126 | if (x < 0.5) | 122 | if (x < 0.5) |
127 | x = 0.5; | 123 | x = 0.5; |
128 | if (x > N + 0.5) | 124 | if (x > N + 0.5) |
129 | x = N + 0.5; | 125 | x = N + 0.5; |
130 | i0 = (int)x; | 126 | i0 = (int) x; |
131 | i1 = i0 + 1; | 127 | i1 = i0 + 1; |
132 | 128 | ||
133 | if (y < 0.5) | 129 | if (y < 0.5) |
134 | y = 0.5; | 130 | y = 0.5; |
135 | if (y > N + 0.5) | 131 | if (y > N + 0.5) |
136 | y = N + 0.5; | 132 | y = N + 0.5; |
137 | j0 = (int)y; | 133 | j0 = (int) y; |
138 | j1 = j0 + 1; | 134 | j1 = j0 + 1; |
139 | 135 | ||
140 | s1 = x - i0; | 136 | s1 = x - i0; |
@@ -142,8 +138,8 @@ namespace libTerrain | |||
142 | t1 = y - j0; | 138 | t1 = y - j0; |
143 | t0 = 1 - t1; | 139 | t0 = 1 - t1; |
144 | 140 | ||
145 | d[nsIX(i, j, N)] = s0 * (t0 * d0[nsIX(i0, j0, N)] + t1 * d0[nsIX(i0, j1, N)]) + | 141 | d[nsIX(i, j, N)] = s0*(t0*d0[nsIX(i0, j0, N)] + t1*d0[nsIX(i0, j1, N)]) + |
146 | s1 * (t0 * d0[nsIX(i1, j0, N)] + t1 * d0[nsIX(i1, j1, N)]); | 142 | s1*(t0*d0[nsIX(i1, j0, N)] + t1*d0[nsIX(i1, j1, N)]); |
147 | } | 143 | } |
148 | } | 144 | } |
149 | 145 | ||
@@ -158,7 +154,9 @@ namespace libTerrain | |||
158 | { | 154 | { |
159 | for (j = 1; j <= N; j++) | 155 | for (j = 1; j <= N; j++) |
160 | { | 156 | { |
161 | div[nsIX(i, j, N)] = -0.5 * (u[nsIX(i + 1, j, N)] - u[nsIX(i - 1, j, N)] + v[nsIX(i, j + 1, N)] - v[nsIX(i, j - 1, N)]) / N; | 157 | div[nsIX(i, j, N)] = -0.5* |
158 | (u[nsIX(i + 1, j, N)] - u[nsIX(i - 1, j, N)] + v[nsIX(i, j + 1, N)] - | ||
159 | v[nsIX(i, j - 1, N)])/N; | ||
162 | p[nsIX(i, j, N)] = 0; | 160 | p[nsIX(i, j, N)] = 0; |
163 | } | 161 | } |
164 | } | 162 | } |
@@ -172,8 +170,8 @@ namespace libTerrain | |||
172 | { | 170 | { |
173 | for (j = 1; j <= N; j++) | 171 | for (j = 1; j <= N; j++) |
174 | { | 172 | { |
175 | u[nsIX(i, j, N)] -= 0.5 * N * (p[nsIX(i + 1, j, N)] - p[nsIX(i - 1, j, N)]); | 173 | u[nsIX(i, j, N)] -= 0.5*N*(p[nsIX(i + 1, j, N)] - p[nsIX(i - 1, j, N)]); |
176 | v[nsIX(i, j, N)] -= 0.5 * N * (p[nsIX(i, j + 1, N)] - p[nsIX(i, j - 1, N)]); | 174 | v[nsIX(i, j, N)] -= 0.5*N*(p[nsIX(i, j + 1, N)] - p[nsIX(i, j - 1, N)]); |
177 | } | 175 | } |
178 | } | 176 | } |
179 | 177 | ||
@@ -181,7 +179,8 @@ namespace libTerrain | |||
181 | nsSetBnd(N, 2, ref v); | 179 | nsSetBnd(N, 2, ref v); |
182 | } | 180 | } |
183 | 181 | ||
184 | private void nsDensStep(int N, ref double[] x, ref double[] x0, ref double[] u, ref double[] v, double diff, double dt) | 182 | private void nsDensStep(int N, ref double[] x, ref double[] x0, ref double[] u, ref double[] v, double diff, |
183 | double dt) | ||
185 | { | 184 | { |
186 | nsAddSource(N, ref x, ref x0, dt); | 185 | nsAddSource(N, ref x, ref x0, dt); |
187 | nsSwap(ref x0, ref x); | 186 | nsSwap(ref x0, ref x); |
@@ -190,7 +189,8 @@ namespace libTerrain | |||
190 | nsAdvect(N, 0, ref x, ref x0, ref u, ref v, dt); | 189 | nsAdvect(N, 0, ref x, ref x0, ref u, ref v, dt); |
191 | } | 190 | } |
192 | 191 | ||
193 | private void nsVelStep(int N, ref double[] u, ref double[] v, ref double[] u0, ref double[] v0, double visc, double dt) | 192 | private void nsVelStep(int N, ref double[] u, ref double[] v, ref double[] u0, ref double[] v0, double visc, |
193 | double dt) | ||
194 | { | 194 | { |
195 | nsAddSource(N, ref u, ref u0, dt); | 195 | nsAddSource(N, ref u, ref u0, dt); |
196 | nsAddSource(N, ref v, ref v0, dt); | 196 | nsAddSource(N, ref v, ref v0, dt); |
@@ -236,17 +236,17 @@ namespace libTerrain | |||
236 | 236 | ||
237 | private void nsSimulate(int N, int rounds, double dt, double diff, double visc) | 237 | private void nsSimulate(int N, int rounds, double dt, double diff, double visc) |
238 | { | 238 | { |
239 | int size = (N * 2) * (N * 2); | 239 | int size = (N*2)*(N*2); |
240 | 240 | ||
241 | double[] u = new double[size]; // Force, X axis | 241 | double[] u = new double[size]; // Force, X axis |
242 | double[] v = new double[size]; // Force, Y axis | 242 | double[] v = new double[size]; // Force, Y axis |
243 | double[] u_prev = new double[size]; | 243 | double[] u_prev = new double[size]; |
244 | double[] v_prev = new double[size]; | 244 | double[] v_prev = new double[size]; |
245 | double[] dens = new double[size]; | 245 | double[] dens = new double[size]; |
246 | double[] dens_prev = new double[size]; | 246 | double[] dens_prev = new double[size]; |
247 | 247 | ||
248 | nsDoublesToBuffer(this.map, N, ref dens); | 248 | nsDoublesToBuffer(map, N, ref dens); |
249 | nsDoublesToBuffer(this.map, N, ref dens_prev); | 249 | nsDoublesToBuffer(map, N, ref dens_prev); |
250 | 250 | ||
251 | for (int i = 0; i < rounds; i++) | 251 | for (int i = 0; i < rounds; i++) |
252 | { | 252 | { |
@@ -258,7 +258,7 @@ namespace libTerrain | |||
258 | nsDensStep(N, ref dens, ref dens_prev, ref u, ref v, diff, dt); | 258 | nsDensStep(N, ref dens, ref dens_prev, ref u, ref v, diff, dt); |
259 | } | 259 | } |
260 | 260 | ||
261 | nsBufferToDoubles(ref dens, N, ref this.map); | 261 | nsBufferToDoubles(ref dens, N, ref map); |
262 | } | 262 | } |
263 | 263 | ||
264 | /// <summary> | 264 | /// <summary> |
@@ -270,14 +270,14 @@ namespace libTerrain | |||
270 | /// <param name="visc">Fluid viscosity (Recommended: 0.0)</param> | 270 | /// <param name="visc">Fluid viscosity (Recommended: 0.0)</param> |
271 | public void navierStokes(int rounds, double dt, double diff, double visc) | 271 | public void navierStokes(int rounds, double dt, double diff, double visc) |
272 | { | 272 | { |
273 | nsSimulate(this.h, rounds, dt, diff, visc); | 273 | nsSimulate(h, rounds, dt, diff, visc); |
274 | } | 274 | } |
275 | 275 | ||
276 | public void navierStokes(int rounds, double dt, double diff, double visc, ref double[,] uret, ref double[,] vret) | 276 | public void navierStokes(int rounds, double dt, double diff, double visc, ref double[,] uret, ref double[,] vret) |
277 | { | 277 | { |
278 | int N = this.h; | 278 | int N = h; |
279 | 279 | ||
280 | int size = (N * 2) * (N * 2); | 280 | int size = (N*2)*(N*2); |
281 | 281 | ||
282 | double[] u = new double[size]; // Force, X axis | 282 | double[] u = new double[size]; // Force, X axis |
283 | double[] v = new double[size]; // Force, Y axis | 283 | double[] v = new double[size]; // Force, Y axis |
@@ -286,8 +286,8 @@ namespace libTerrain | |||
286 | double[] dens = new double[size]; | 286 | double[] dens = new double[size]; |
287 | double[] dens_prev = new double[size]; | 287 | double[] dens_prev = new double[size]; |
288 | 288 | ||
289 | nsDoublesToBuffer(this.map, N, ref dens); | 289 | nsDoublesToBuffer(map, N, ref dens); |
290 | nsDoublesToBuffer(this.map, N, ref dens_prev); | 290 | nsDoublesToBuffer(map, N, ref dens_prev); |
291 | 291 | ||
292 | for (int i = 0; i < rounds; i++) | 292 | for (int i = 0; i < rounds; i++) |
293 | { | 293 | { |
@@ -301,7 +301,7 @@ namespace libTerrain | |||
301 | 301 | ||
302 | nsBufferToDoubles(ref u, N, ref uret); | 302 | nsBufferToDoubles(ref u, N, ref uret); |
303 | nsBufferToDoubles(ref v, N, ref vret); | 303 | nsBufferToDoubles(ref v, N, ref vret); |
304 | nsBufferToDoubles(ref dens, N, ref this.map); | 304 | nsBufferToDoubles(ref dens, N, ref map); |
305 | } | 305 | } |
306 | } | 306 | } |
307 | } \ No newline at end of file | 307 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Manipulators/ThermalWeathering.cs b/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Manipulators/ThermalWeathering.cs index 9148c3c..0ca3d48 100644 --- a/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Manipulators/ThermalWeathering.cs +++ b/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Manipulators/ThermalWeathering.cs | |||
@@ -26,10 +26,6 @@ | |||
26 | * | 26 | * |
27 | */ | 27 | */ |
28 | 28 | ||
29 | using System; | ||
30 | using System.Collections.Generic; | ||
31 | using System.Text; | ||
32 | |||
33 | namespace libTerrain | 29 | namespace libTerrain |
34 | { | 30 | { |
35 | partial class Channel | 31 | partial class Channel |
@@ -47,10 +43,11 @@ namespace libTerrain | |||
47 | double[,] lastFrame; | 43 | double[,] lastFrame; |
48 | double[,] thisFrame; | 44 | double[,] thisFrame; |
49 | 45 | ||
50 | lastFrame = (double[,])map.Clone(); | 46 | lastFrame = (double[,]) map.Clone(); |
51 | thisFrame = (double[,])map.Clone(); | 47 | thisFrame = (double[,]) map.Clone(); |
52 | 48 | ||
53 | NeighbourSystem type = NeighbourSystem.Moore; // Using moore neighbourhood (twice as computationally expensive) | 49 | NeighbourSystem type = NeighbourSystem.Moore; |
50 | // Using moore neighbourhood (twice as computationally expensive) | ||
54 | int NEIGHBOUR_ME = 4; // I am always 4 in both systems. | 51 | int NEIGHBOUR_ME = 4; // I am always 4 in both systems. |
55 | 52 | ||
56 | int NEIGHBOUR_MAX = type == NeighbourSystem.Moore ? 9 : 5; | 53 | int NEIGHBOUR_MAX = type == NeighbourSystem.Moore ? 9 : 5; |
@@ -88,19 +85,18 @@ namespace libTerrain | |||
88 | 85 | ||
89 | if (target > heightF + talus) | 86 | if (target > heightF + talus) |
90 | { | 87 | { |
91 | double calc = c * ((target - heightF) - talus); | 88 | double calc = c*((target - heightF) - talus); |
92 | heightF += calc; | 89 | heightF += calc; |
93 | target -= calc; | 90 | target -= calc; |
94 | } | 91 | } |
95 | 92 | ||
96 | thisFrame[x, y] = heightF; | 93 | thisFrame[x, y] = heightF; |
97 | thisFrame[coords[0], coords[1]] = target; | 94 | thisFrame[coords[0], coords[1]] = target; |
98 | |||
99 | } | 95 | } |
100 | } | 96 | } |
101 | } | 97 | } |
102 | } | 98 | } |
103 | lastFrame = (double[,])thisFrame.Clone(); | 99 | lastFrame = (double[,]) thisFrame.Clone(); |
104 | } | 100 | } |
105 | 101 | ||
106 | map = thisFrame; | 102 | map = thisFrame; |
@@ -109,4 +105,4 @@ namespace libTerrain | |||
109 | return this; | 105 | return this; |
110 | } | 106 | } |
111 | } | 107 | } |
112 | } | 108 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Neighbours.cs b/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Neighbours.cs index 316bd9a..4004747 100644 --- a/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Neighbours.cs +++ b/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Neighbours.cs | |||
@@ -26,19 +26,15 @@ | |||
26 | * | 26 | * |
27 | */ | 27 | */ |
28 | 28 | ||
29 | using System; | ||
30 | using System.Collections.Generic; | ||
31 | using System.Text; | ||
32 | |||
33 | namespace libTerrain | 29 | namespace libTerrain |
34 | { | 30 | { |
35 | partial class Channel | 31 | partial class Channel |
36 | { | 32 | { |
37 | enum NeighbourSystem | 33 | private enum NeighbourSystem |
38 | { | 34 | { |
39 | Moore, | 35 | Moore, |
40 | VonNeumann | 36 | VonNeumann |
41 | }; | 37 | } ; |
42 | 38 | ||
43 | private int[] Neighbours(NeighbourSystem type, int index) | 39 | private int[] Neighbours(NeighbourSystem type, int index) |
44 | { | 40 | { |
@@ -138,4 +134,4 @@ namespace libTerrain | |||
138 | return coord; | 134 | return coord; |
139 | } | 135 | } |
140 | } | 136 | } |
141 | } | 137 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Operators.cs b/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Operators.cs index 0306e58..ae7530c 100644 --- a/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Operators.cs +++ b/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Channel/Operators.cs | |||
@@ -27,8 +27,6 @@ | |||
27 | */ | 27 | */ |
28 | 28 | ||
29 | using System; | 29 | using System; |
30 | using System.Collections.Generic; | ||
31 | using System.Text; | ||
32 | 30 | ||
33 | namespace libTerrain | 31 | namespace libTerrain |
34 | { | 32 | { |
@@ -138,7 +136,7 @@ namespace libTerrain | |||
138 | { | 136 | { |
139 | for (y = 0; y < A.h; y++) | 137 | for (y = 0; y < A.h; y++) |
140 | { | 138 | { |
141 | A.map[x, y] = Math.Pow(A.map[x,y],B.map[x, y]); | 139 | A.map[x, y] = Math.Pow(A.map[x, y], B.map[x, y]); |
142 | } | 140 | } |
143 | } | 141 | } |
144 | 142 | ||
@@ -230,7 +228,7 @@ namespace libTerrain | |||
230 | { | 228 | { |
231 | for (y = 0; y < A.h; y++) | 229 | for (y = 0; y < A.h; y++) |
232 | { | 230 | { |
233 | A.map[x, y] = Math.Pow(A.map[x,y],B); | 231 | A.map[x, y] = Math.Pow(A.map[x, y], B); |
234 | } | 232 | } |
235 | } | 233 | } |
236 | 234 | ||
@@ -238,6 +236,5 @@ namespace libTerrain | |||
238 | 236 | ||
239 | return A; | 237 | return A; |
240 | } | 238 | } |
241 | |||
242 | } | 239 | } |
243 | } | 240 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Tools/Point2D.cs b/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Tools/Point2D.cs index 9985f03..1d52da9 100644 --- a/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Tools/Point2D.cs +++ b/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Tools/Point2D.cs | |||
@@ -26,10 +26,6 @@ | |||
26 | * | 26 | * |
27 | */ | 27 | */ |
28 | 28 | ||
29 | using System; | ||
30 | using System.Collections.Generic; | ||
31 | using System.Text; | ||
32 | |||
33 | namespace libTerrain | 29 | namespace libTerrain |
34 | { | 30 | { |
35 | public class Point2D | 31 | public class Point2D |
@@ -43,4 +39,4 @@ namespace libTerrain | |||
43 | y = Y; | 39 | y = Y; |
44 | } | 40 | } |
45 | } | 41 | } |
46 | } | 42 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Tools/Tools.cs b/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Tools/Tools.cs index 3207f15..d805794 100644 --- a/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Tools/Tools.cs +++ b/OpenSim/Region/Terrain.BasicTerrain/libTerrainBSD/Tools/Tools.cs | |||
@@ -27,33 +27,34 @@ | |||
27 | */ | 27 | */ |
28 | 28 | ||
29 | using System; | 29 | using System; |
30 | using System.Collections.Generic; | ||
31 | using System.Text; | ||
32 | 30 | ||
33 | namespace libTerrain | 31 | namespace libTerrain |
34 | { | 32 | { |
35 | class Tools | 33 | internal class Tools |
36 | { | 34 | { |
37 | public static double LinearInterpolate(double a, double b, double amount) | 35 | public static double LinearInterpolate(double a, double b, double amount) |
38 | { | 36 | { |
39 | return a + ((b - a) * amount); | 37 | return a + ((b - a)*amount); |
40 | } | 38 | } |
41 | 39 | ||
42 | public static double ExponentialInterpolate(double a, double b, double amount) | 40 | public static double ExponentialInterpolate(double a, double b, double amount) |
43 | { | 41 | { |
44 | a = Math.Pow(a, amount); | 42 | a = Math.Pow(a, amount); |
45 | b = Math.Pow(b - a, 1.0 - amount); | 43 | b = Math.Pow(b - a, 1.0 - amount); |
46 | return a+b; | 44 | return a + b; |
47 | } | 45 | } |
48 | 46 | ||
49 | public static int PowerOf2Log2(int n) { | 47 | public static int PowerOf2Log2(int n) |
50 | for (int i = 0; i < 31; i++) { | 48 | { |
51 | if ((n & 1) == 1) { | 49 | for (int i = 0; i < 31; i++) |
52 | return i; | 50 | { |
53 | } | 51 | if ((n & 1) == 1) |
54 | n >>= 1; | 52 | { |
55 | } | 53 | return i; |
56 | return 0; | 54 | } |
57 | } | 55 | n >>= 1; |
56 | } | ||
57 | return 0; | ||
58 | } | ||
58 | } | 59 | } |
59 | } | 60 | } \ No newline at end of file |