Kaynağa Gözat

* Rolled back a few changes.

Adam Frisby 16 yıl önce
ebeveyn
işleme
20a9bf08f5
100 değiştirilmiş dosya ile 2648 ekleme ve 2599 silme
  1. 2 2
      OpenSim/ApplicationPlugins/LoadRegions/LoadRegionsPlugin.cs
  2. 100 116
      OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs
  3. 1 1
      OpenSim/Data/MSSQL/MSSQLAssetData.cs
  4. 39 42
      OpenSim/Grid/AssetServer/Main.cs
  5. 1 1
      OpenSim/Grid/AssetServer/Properties/AssemblyInfo.cs
  6. 21 21
      OpenSim/Grid/AssetServer/RestService.cs
  7. 91 94
      OpenSim/Grid/GridServer/GridManager.cs
  8. 28 32
      OpenSim/Grid/GridServer/GridServerBase.cs
  9. 1 1
      OpenSim/Grid/GridServer/IGridPlugin.cs
  10. 1 1
      OpenSim/Grid/GridServer/Program.cs
  11. 1 1
      OpenSim/Grid/GridServer/Properties/AssemblyInfo.cs
  12. 25 25
      OpenSim/Grid/InventoryServer/GridInventoryService.cs
  13. 7 11
      OpenSim/Grid/InventoryServer/InventoryManager.cs
  14. 31 34
      OpenSim/Grid/InventoryServer/Main.cs
  15. 37 41
      OpenSim/Grid/MessagingServer/Main.cs
  16. 75 76
      OpenSim/Grid/MessagingServer/MessageService.cs
  17. 8 3
      OpenSim/Grid/MessagingServer/PresenceInformer.cs
  18. 7 3
      OpenSim/Grid/MessagingServer/UserPresenceData.cs
  19. 1 1
      OpenSim/Grid/MessagingServer/WorkUnitBase.cs
  20. 1 1
      OpenSim/Grid/MessagingServer/WorkUnitPresenceUpdate.cs
  21. 14 10
      OpenSim/Grid/MessagingServer/XMPPHTTPService.cs
  22. 3 3
      OpenSim/Grid/ScriptServer/Application.cs
  23. 2 2
      OpenSim/Grid/ScriptServer/FakeScene.cs
  24. 1 1
      OpenSim/Grid/ScriptServer/Properties/AssemblyInfo.cs
  25. 1 5
      OpenSim/Grid/ScriptServer/RemotingObject.cs
  26. 4 5
      OpenSim/Grid/ScriptServer/RemotingServer.cs
  27. 0 5
      OpenSim/Grid/ScriptServer/ScriptServer/Region/RegionBase.cs
  28. 1 1
      OpenSim/Grid/ScriptServer/ScriptServer/Region/RegionConnectionManager.cs
  29. 4 2
      OpenSim/Grid/ScriptServer/ScriptServer/RegionCommManager.cs
  30. 3 3
      OpenSim/Grid/ScriptServer/ScriptServer/ScriptEngineLoader.cs
  31. 3 3
      OpenSim/Grid/ScriptServer/ScriptServer/ScriptEnginesManager.cs
  32. 8 8
      OpenSim/Grid/ScriptServer/ScriptServerMain.cs
  33. 72 73
      OpenSim/Grid/UserServer/Main.cs
  34. 34 36
      OpenSim/Grid/UserServer/MessageServersConnector.cs
  35. 1 1
      OpenSim/Grid/UserServer/Properties/AssemblyInfo.cs
  36. 56 62
      OpenSim/Grid/UserServer/UserLoginService.cs
  37. 66 66
      OpenSim/Grid/UserServer/UserManager.cs
  38. 4 1
      OpenSim/Region/Environment/InstantMessageReceiver.cs
  39. 1 1
      OpenSim/Region/Environment/Interfaces/IAgentAssetTransactions.cs
  40. 2 2
      OpenSim/Region/Environment/Interfaces/IAvatarFactory.cs
  41. 1 1
      OpenSim/Region/Environment/Interfaces/IHttpRequests.cs
  42. 2 3
      OpenSim/Region/Environment/Interfaces/ILandChannel.cs
  43. 3 3
      OpenSim/Region/Environment/Interfaces/IRegionDataStore.cs
  44. 3 3
      OpenSim/Region/Environment/Interfaces/IRegionModule.cs
  45. 1 1
      OpenSim/Region/Environment/Interfaces/ISimChat.cs
  46. 1 1
      OpenSim/Region/Environment/Interfaces/IWorldComm.cs
  47. 1 1
      OpenSim/Region/Environment/Interfaces/IXMLRPC.cs
  48. 1 1
      OpenSim/Region/Environment/Interfaces/IXfer.cs
  49. 18 18
      OpenSim/Region/Environment/ModuleLoader.cs
  50. 12 9
      OpenSim/Region/Environment/Modules/Agent/AssetDownload/AssetDownloadModule.cs
  51. 10 10
      OpenSim/Region/Environment/Modules/Agent/AssetTransaction/AgentAssetsTransactions.cs
  52. 9 4
      OpenSim/Region/Environment/Modules/Agent/AssetTransaction/AssetTransactionModule.cs
  53. 6 3
      OpenSim/Region/Environment/Modules/Agent/TextureDownload/TextureDownloadModule.cs
  54. 3 3
      OpenSim/Region/Environment/Modules/Agent/TextureDownload/TextureNotFoundSender.cs
  55. 9 10
      OpenSim/Region/Environment/Modules/Agent/TextureSender/TextureSender.cs
  56. 8 4
      OpenSim/Region/Environment/Modules/Agent/Xfer/XferModule.cs
  57. 28 28
      OpenSim/Region/Environment/Modules/Avatar/Chat/ChatModule.cs
  58. 40 40
      OpenSim/Region/Environment/Modules/Avatar/Currency/SampleMoney/SampleMoneyModule.cs
  59. 17 17
      OpenSim/Region/Environment/Modules/Avatar/Friends/FriendsModule.cs
  60. 5 5
      OpenSim/Region/Environment/Modules/Avatar/Groups/GroupsModule.cs
  61. 1 1
      OpenSim/Region/Environment/Modules/Avatar/Inventory/InventoryModule.cs
  62. 5 1
      OpenSim/Region/Environment/Modules/Avatar/Profiles/AvatarProfilesModule.cs
  63. 11 11
      OpenSim/Region/Environment/Modules/Framework/Commander.cs
  64. 1 1
      OpenSim/Region/Environment/Modules/Framework/CommanderTestModule.cs
  65. 2 2
      OpenSim/Region/Environment/Modules/Grid/Interregion/InterregionModule.cs
  66. 5 5
      OpenSim/Region/Environment/Modules/Scripting/DynamicTexture/DynamicTextureModule.cs
  67. 5 1
      OpenSim/Region/Environment/Modules/Scripting/HttpRequest/ScriptsHttpRequests.cs
  68. 5 5
      OpenSim/Region/Environment/Modules/Scripting/LoadImageURL/LoadImageURLModule.cs
  69. 7 3
      OpenSim/Region/Environment/Modules/Scripting/VectorRender/VectorRenderModule.cs
  70. 6 2
      OpenSim/Region/Environment/Modules/Scripting/WorldComm/WorldCommModule.cs
  71. 12 12
      OpenSim/Region/Environment/Modules/Scripting/XMLRPC/XMLRPCModule.cs
  72. 15 15
      OpenSim/Region/Environment/Modules/World/Land/LandChannel.cs
  73. 3 3
      OpenSim/Region/Environment/Modules/World/Land/LandManagementModule.cs
  74. 15 15
      OpenSim/Region/Environment/Modules/World/Land/LandObject.cs
  75. 7 7
      OpenSim/Region/Environment/Modules/World/Serialiser/SerialiserModule.cs
  76. 1 1
      OpenSim/Region/Environment/Modules/World/Sun/SunModule.cs
  77. 1 1
      OpenSim/Region/Environment/Modules/World/Terrain/Effects/CookieCutter.cs
  78. 2 2
      OpenSim/Region/Environment/Modules/World/Terrain/FileLoaders/LLRAW.cs
  79. 3 3
      OpenSim/Region/Environment/Modules/World/Terrain/FileLoaders/Terragen.cs
  80. 1 0
      OpenSim/Region/Environment/Modules/World/Terrain/PaintBrushes/FlattenSphere.cs
  81. 1 1
      OpenSim/Region/Environment/Modules/World/Terrain/PaintBrushes/NoiseSphere.cs
  82. 1 1
      OpenSim/Region/Environment/Modules/World/Terrain/PaintBrushes/RevertSphere.cs
  83. 1 1
      OpenSim/Region/Environment/Modules/World/Terrain/TerrainException.cs
  84. 3 3
      OpenSim/Region/Environment/Modules/World/Terrain/TerrainModule.cs
  85. 2 2
      OpenSim/Region/Environment/Modules/World/TreePopulator/TreePopulatorModule.cs
  86. 183 178
      OpenSim/Region/Environment/PermissionManager.cs
  87. 3 3
      OpenSim/Region/Environment/Scenes/AvatarAnimations.cs
  88. 61 62
      OpenSim/Region/Environment/Scenes/AvatarAppearance.cs
  89. 97 96
      OpenSim/Region/Environment/Scenes/EntityBase.cs
  90. 1 1
      OpenSim/Region/Environment/Scenes/IScenePresenceBody.cs
  91. 107 91
      OpenSim/Region/Environment/Scenes/InnerScene.cs
  92. 159 157
      OpenSim/Region/Environment/Scenes/Scene.Inventory.cs
  93. 15 15
      OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs
  94. 240 205
      OpenSim/Region/Environment/Scenes/Scene.cs
  95. 34 37
      OpenSim/Region/Environment/Scenes/SceneBase.cs
  96. 269 265
      OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs
  97. 162 175
      OpenSim/Region/Environment/Scenes/SceneEvents.cs
  98. 41 41
      OpenSim/Region/Environment/Scenes/SceneManager.cs
  99. 30 29
      OpenSim/Region/Environment/Scenes/SceneObjectGroup.Inventory.cs
  100. 194 183
      OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs

+ 2 - 2
OpenSim/ApplicationPlugins/LoadRegions/LoadRegionsPlugin.cs

@@ -68,7 +68,7 @@ namespace OpenSim.ApplicationPlugins.LoadRegions
 
             for (int i = 0; i < regionsToLoad.Length; i++)
             {
-                m_log.Debug("[LOADREGIONS]: Creating Region: " + regionsToLoad[i].RegionName + " (ThreadID: " + Thread.CurrentThread.ManagedThreadId +
+                m_log.Debug("[LOADREGIONS]: Creating Region: " + regionsToLoad[i].RegionName + " (ThreadID: " + Thread.CurrentThread.ManagedThreadId.ToString() +
                             ")");
                 openSim.CreateRegion(regionsToLoad[i], true);
             }
@@ -106,7 +106,7 @@ namespace OpenSim.ApplicationPlugins.LoadRegions
                 if (regionhandle == regionsToLoad[i].RegionHandle)
                 {
                     m_log.Debug("[LOADREGIONS]: Creating Region: " + regionsToLoad[i].RegionName + " (ThreadID: " +
-                                Thread.CurrentThread.ManagedThreadId + ")");
+                                Thread.CurrentThread.ManagedThreadId.ToString() + ")");
                     openSim.CreateRegion(regionsToLoad[i], true);
                 }
             }

+ 100 - 116
OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs

@@ -54,13 +54,11 @@ namespace OpenSim.ApplicationPlugins.RemoteController
         private BaseHttpServer m_httpd;
         private string requiredPassword = String.Empty;
 
-        #region IApplicationPlugin Members
-
         public void Initialise(OpenSimMain openSim)
         {
             try
             {
-                if (openSim.ConfigSource.Configs["RemoteAdmin"] != null &&
+                if (openSim.ConfigSource.Configs["RemoteAdmin"] != null && 
                     openSim.ConfigSource.Configs["RemoteAdmin"].GetBoolean("enabled", false))
                 {
                     m_log.Info("[RADMIN]: Remote Admin Plugin Enabled");
@@ -84,12 +82,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController
             }
         }
 
-        public void Close()
-        {
-        }
-
-        #endregion
-
         public XmlRpcResponse XmlRpcRestartMethod(XmlRpcRequest request)
         {
             XmlRpcResponse response = new XmlRpcResponse();
@@ -98,14 +90,13 @@ namespace OpenSim.ApplicationPlugins.RemoteController
             Hashtable responseData = new Hashtable();
 
             m_log.Info("[RADMIN]: Request to restart Region.");
-            try
-            {
-                checkStringParameters(request, new[] {"password", "regionID"});
+            try {
+                checkStringParameters(request, new string[] { "password", "regionID" });
 
                 if (requiredPassword != String.Empty &&
                     (!requestData.Contains("password") || (string) requestData["password"] != requiredPassword))
                     throw new Exception("wrong password");
-
+                
                 LLUUID regionID = new LLUUID((string) requestData["regionID"]);
 
                 responseData["accepted"] = "true";
@@ -115,11 +106,11 @@ namespace OpenSim.ApplicationPlugins.RemoteController
 
                 if (!m_app.SceneManager.TryGetScene(regionID, out rebootedScene))
                     throw new Exception("region not found");
-
+                
                 responseData["rebooting"] = "true";
                 rebootedScene.Restart(30);
-            }
-            catch (Exception e)
+            } 
+            catch(Exception e)
             {
                 m_log.ErrorFormat("[RADMIN]: Restart region: failed: {0}", e.Message);
                 m_log.DebugFormat("[RADMIN]: Restart region: failed: {0}", e.ToString());
@@ -139,14 +130,13 @@ namespace OpenSim.ApplicationPlugins.RemoteController
             Hashtable requestData = (Hashtable) request.Params[0];
             Hashtable responseData = new Hashtable();
 
-            try
-            {
-                checkStringParameters(request, new[] {"password", "message"});
+            try {
+                checkStringParameters(request, new string[] { "password", "message" });
 
                 if (requiredPassword != String.Empty &&
                     (!requestData.Contains("password") || (string) requestData["password"] != requiredPassword))
                     throw new Exception("wrong password");
-
+                
                 string message = (string) requestData["message"];
                 m_log.InfoFormat("[RADMIN]: Broadcasting: {0}", message);
 
@@ -155,7 +145,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
 
                 m_app.SceneManager.SendGeneralMessage(message);
             }
-            catch (Exception e)
+            catch(Exception e)
             {
                 m_log.ErrorFormat("[RADMIN]: Broadcasting: failed: {0}", e.Message);
                 m_log.DebugFormat("[RADMIN]: Broadcasting: failed: {0}", e.ToString());
@@ -172,25 +162,24 @@ namespace OpenSim.ApplicationPlugins.RemoteController
         public XmlRpcResponse XmlRpcLoadHeightmapMethod(XmlRpcRequest request)
         {
             XmlRpcResponse response = new XmlRpcResponse();
-            Hashtable requestData = (Hashtable) request.Params[0];
+            Hashtable requestData = (Hashtable)request.Params[0];
 
             m_log.DebugFormat("[RADMIN]: Load Terrain: XmlRpc {0}", request.ToString());
             foreach (string k in requestData.Keys)
             {
-                m_log.DebugFormat("[RADMIN]: Load Terrain: XmlRpc {0}: >{1}< {2}",
-                                  k, requestData[k], ((string) requestData[k]).Length);
+                m_log.DebugFormat("[RADMIN]: Load Terrain: XmlRpc {0}: >{1}< {2}", 
+                                  k, (string)requestData[k], ((string)requestData[k]).Length);
             }
 
             Hashtable responseData = new Hashtable();
-            try
-            {
-                checkStringParameters(request, new[] {"password", "filename", "regionid"});
+            try {
+                checkStringParameters(request, new string[] { "password", "filename", "regionid"});
 
                 if (requiredPassword != String.Empty &&
-                    (!requestData.Contains("password") || (string) requestData["password"] != requiredPassword))
+                    (!requestData.Contains("password") || (string)requestData["password"] != requiredPassword))
                     throw new Exception("wrong password");
 
-                string file = (string) requestData["filename"];
+                string file = (string)requestData["filename"];
                 LLUUID regionID = (string) requestData["regionid"];
                 m_log.InfoFormat("[RADMIN]: Terrain Loading: {0}", file);
 
@@ -209,7 +198,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
 
                 response.Value = responseData;
             }
-            catch (Exception e)
+            catch (Exception e) 
             {
                 m_log.ErrorFormat("[RADMIN] Terrain Loading: failed: {0}", e.Message);
                 m_log.DebugFormat("[RADMIN] Terrain Loading: failed: {0}", e.ToString());
@@ -228,8 +217,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
             Hashtable requestData = (Hashtable) request.Params[0];
             Hashtable responseData = new Hashtable();
 
-            try
-            {
+            try {
                 if (requiredPassword != String.Empty &&
                     (!requestData.Contains("password") || (string) requestData["password"] != requiredPassword))
                     throw new Exception("wrong password");
@@ -239,14 +227,14 @@ namespace OpenSim.ApplicationPlugins.RemoteController
 
                 int timeout = 2000;
 
-                if (requestData.ContainsKey("shutdown") &&
+                if (requestData.ContainsKey("shutdown") && 
                     ((string) requestData["shutdown"] == "delayed") &&
                     requestData.ContainsKey("milliseconds"))
                 {
                     timeout = (Int32) requestData["milliseconds"];
-                    m_app.SceneManager.SendGeneralMessage("Region is going down in " + ((timeout / 1000)) +
+                    m_app.SceneManager.SendGeneralMessage("Region is going down in " + ((int) (timeout/1000)).ToString() +
                                                           " second(s). Please save what you are doing and log out.");
-                }
+                } 
                 else
                 {
                     m_app.SceneManager.SendGeneralMessage("Region is going down now.");
@@ -255,12 +243,12 @@ namespace OpenSim.ApplicationPlugins.RemoteController
                 // Perform shutdown
                 Timer shutdownTimer = new Timer(timeout); // Wait before firing
                 shutdownTimer.AutoReset = false;
-                shutdownTimer.Elapsed += shutdownTimer_Elapsed;
+                shutdownTimer.Elapsed += new ElapsedEventHandler(shutdownTimer_Elapsed);
                 shutdownTimer.Start();
 
                 responseData["success"] = "true";
             }
-            catch (Exception e)
+            catch (Exception e) 
             {
                 m_log.ErrorFormat("[RADMIN] Shutdown: failed: {0}", e.Message);
                 m_log.DebugFormat("[RADMIN] Shutdown: failed: {0}", e.ToString());
@@ -284,9 +272,9 @@ namespace OpenSim.ApplicationPlugins.RemoteController
             Hashtable requestData = (Hashtable) request.Params[0];
             foreach (string p in param)
             {
-                if (!requestData.Contains(p))
+                if (!requestData.Contains(p)) 
                     throw new Exception(String.Format("missing string parameter {0}", p));
-                if (String.IsNullOrEmpty((string) requestData[p]))
+                if (String.IsNullOrEmpty((string)requestData[p]))
                     throw new Exception(String.Format("parameter {0} is empty", p));
             }
         }
@@ -296,7 +284,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
             Hashtable requestData = (Hashtable) request.Params[0];
             foreach (string p in param)
             {
-                if (!requestData.Contains(p))
+                if (!requestData.Contains(p)) 
                     throw new Exception(String.Format("missing integer parameter {0}", p));
             }
         }
@@ -357,35 +345,31 @@ namespace OpenSim.ApplicationPlugins.RemoteController
             Hashtable requestData = (Hashtable) request.Params[0];
             Hashtable responseData = new Hashtable();
 
-            try
-            {
-                checkStringParameters(request, new[]
-                                                   {
-                                                       "password",
-                                                       "region_name",
-                                                       "region_master_first", "region_master_last",
-                                                       "region_master_password",
-                                                       "listen_ip", "external_address"
-                                                   });
-                checkIntegerParams(request, new[] {"region_x", "region_y", "listen_port"});
+            try {
+                checkStringParameters(request, new string[] { "password", 
+                                                              "region_name", 
+                                                              "region_master_first", "region_master_last", 
+                                                              "region_master_password",
+                                                              "listen_ip", "external_address"});
+                checkIntegerParams(request, new string[] { "region_x", "region_y", "listen_port"});
 
                 // check password
                 if (!String.IsNullOrEmpty(requiredPassword) &&
-                    (string) requestData["password"] != requiredPassword) throw new Exception("wrong password");
+                    (string)requestData["password"] != requiredPassword) throw new Exception("wrong password");
 
                 // extract or generate region ID now
                 Scene scene = null;
                 LLUUID regionID = LLUUID.Zero;
-                if (requestData.ContainsKey("region_id") &&
-                    !String.IsNullOrEmpty((string) requestData["region_id"]))
+                if (requestData.ContainsKey("region_id") && 
+                    !String.IsNullOrEmpty((string)requestData["region_id"])) 
                 {
                     regionID = (string) requestData["region_id"];
-                    if (m_app.SceneManager.TryGetScene(regionID, out scene))
+                    if (m_app.SceneManager.TryGetScene(regionID, out scene)) 
                         throw new Exception(String.Format("region UUID already in use by region {0}, UUID {1}, <{2},{3}>",
                                                           scene.RegionInfo.RegionName, scene.RegionInfo.RegionID,
                                                           scene.RegionInfo.RegionLocX, scene.RegionInfo.RegionLocY));
-                }
-                else
+                } 
+                else 
                 {
                     regionID = LLUUID.Random();
                     m_log.DebugFormat("[RADMIN] CreateRegion: new region UUID {0}", regionID);
@@ -401,7 +385,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController
 
                 // check for collisions: region name, region UUID,
                 // region location
-                if (m_app.SceneManager.TryGetScene(region.RegionName, out scene))
+                if (m_app.SceneManager.TryGetScene(region.RegionName, out scene)) 
                     throw new Exception(String.Format("region name already in use by region {0}, UUID {1}, <{2},{3}>",
                                                       scene.RegionInfo.RegionName, scene.RegionInfo.RegionID,
                                                       scene.RegionInfo.RegionLocX, scene.RegionInfo.RegionLocY));
@@ -411,46 +395,46 @@ namespace OpenSim.ApplicationPlugins.RemoteController
                                                       region.RegionLocX, region.RegionLocY,
                                                       scene.RegionInfo.RegionName, scene.RegionInfo.RegionID,
                                                       scene.RegionInfo.RegionLocX, scene.RegionInfo.RegionLocY));
-
+                
                 // Security risk [and apparently not used]
                 // if (requestData.ContainsKey("datastore"))
                 //     region.DataStore = (string) requestData["datastore"];
 
-                region.InternalEndPoint =
+                region.InternalEndPoint = 
                     new IPEndPoint(IPAddress.Parse((string) requestData["listen_ip"]), 0);
-
+                
                 region.InternalEndPoint.Port = (Int32) requestData["listen_port"];
                 if (0 == region.InternalEndPoint.Port) throw new Exception("listen_port is 0");
                 if (m_app.SceneManager.TryGetScene(region.InternalEndPoint, out scene))
                     throw new Exception(String.Format("region internal IP {0} and port {1} already in use by region {2}, UUID {3}, <{4},{5}>",
-                                                      region.InternalEndPoint.Address,
+                                                      region.InternalEndPoint.Address, 
                                                       region.InternalEndPoint.Port,
                                                       scene.RegionInfo.RegionName, scene.RegionInfo.RegionID,
                                                       scene.RegionInfo.RegionLocX, scene.RegionInfo.RegionLocY));
-
+                
 
                 region.ExternalHostName = (string) requestData["external_address"];
-
+                    
                 region.MasterAvatarFirstName = (string) requestData["region_master_first"];
                 region.MasterAvatarLastName = (string) requestData["region_master_last"];
                 region.MasterAvatarSandboxPassword = (string) requestData["region_master_password"];
 
-                bool persist = Convert.ToBoolean((string) requestData["persist"]);
-                if (persist)
+                bool persist = Convert.ToBoolean((string)requestData["persist"]);
+                if (persist) 
                 {
                     string regionConfigPath = Path.Combine(Path.Combine(Util.configDir(), "Regions"),
                                                            String.Format("{0}x{1}-{2}.xml",
-                                                                         region.RegionLocX,
-                                                                         region.RegionLocY,
-                                                                         regionID));
-                    m_log.DebugFormat("[RADMIN] CreateRegion: persisting region {0} to {1}",
+                                                                         region.RegionLocX.ToString(),
+                                                                         region.RegionLocY.ToString(),
+                                                                         regionID.ToString()));
+                    m_log.DebugFormat("[RADMIN] CreateRegion: persisting region {0} to {1}", 
                                       region.RegionID, regionConfigPath);
                     region.SaveRegionToFile("dynamic region", regionConfigPath);
                 }
-
+                
                 m_app.CreateRegion(region);
 
-                responseData["success"] = "true";
+                responseData["success"]     = "true";
                 responseData["region_name"] = region.RegionName;
                 responseData["region_uuid"] = region.RegionID.ToString();
 
@@ -513,52 +497,48 @@ namespace OpenSim.ApplicationPlugins.RemoteController
             Hashtable requestData = (Hashtable) request.Params[0];
             Hashtable responseData = new Hashtable();
 
-            try
+            try 
             {
                 // check completeness
-                checkStringParameters(request, new[]
-                                                   {
-                                                       "password", "user_firstname",
-                                                       "user_lastname", "user_password"
-                                                   });
-                checkIntegerParams(request, new[] {"start_region_x", "start_region_y"});
+                checkStringParameters(request, new string[] { "password", "user_firstname", 
+                                                              "user_lastname", "user_password" });
+                checkIntegerParams(request, new string[] { "start_region_x", "start_region_y" });
 
                 // check password
                 if (!String.IsNullOrEmpty(requiredPassword) &&
-                    (string) requestData["password"] != requiredPassword) throw new Exception("wrong password");
+                    (string)requestData["password"] != requiredPassword) throw new Exception("wrong password");
 
                 // do the job
                 string firstname = (string) requestData["user_firstname"];
-                string lastname = (string) requestData["user_lastname"];
-                string passwd = (string) requestData["user_password"];
-                uint regX = Convert.ToUInt32((Int32) requestData["start_region_x"]);
-                uint regY = Convert.ToUInt32((Int32) requestData["start_region_y"]);
-
+                string lastname  = (string) requestData["user_lastname"];
+                string passwd    = (string) requestData["user_password"];
+                uint   regX      = Convert.ToUInt32((Int32)requestData["start_region_x"]);
+                uint   regY      = Convert.ToUInt32((Int32)requestData["start_region_y"]);
+                
                 UserProfileData userProfile = m_app.CommunicationsManager.UserService.GetUserProfile(firstname, lastname);
-                if (null != userProfile)
+                if (null != userProfile) 
                     throw new Exception(String.Format("avatar {0} {1} already exists", firstname, lastname));
 
                 LLUUID userID = m_app.CreateUser(firstname, lastname, passwd, regX, regY);
-
-                if (userID == LLUUID.Zero)
-                    throw new Exception(String.Format("failed to create new user {0} {1}",
-                                                      firstname, lastname));
-
-                responseData["success"] = "true";
+                
+                if (userID == LLUUID.Zero) throw new Exception(String.Format("failed to create new user {0} {1}",
+                                                                             firstname, lastname));
+                
+                responseData["success"]     = "true";
                 responseData["avatar_uuid"] = userID.ToString();
 
                 response.Value = responseData;
 
                 m_log.InfoFormat("[RADMIN]: CreateUser: User {0} {1} created, UUID {2}", firstname, lastname, userID);
             }
-            catch (Exception e)
+            catch (Exception e) 
             {
                 m_log.ErrorFormat("[RADMIN] CreateUser: failed: {0}", e.Message);
                 m_log.DebugFormat("[RADMIN] CreateUser: failed: {0}", e.ToString());
 
-                responseData["success"] = "false";
+                responseData["success"]     = "false";
                 responseData["avatar_uuid"] = LLUUID.Zero.ToString();
-                responseData["error"] = e.Message;
+                responseData["error"]       = e.Message;
 
                 response.Value = responseData;
             }
@@ -573,33 +553,33 @@ namespace OpenSim.ApplicationPlugins.RemoteController
             Hashtable requestData = (Hashtable) request.Params[0];
             Hashtable responseData = new Hashtable();
 
-            try
+            try 
             {
                 // check completeness
-                foreach (string p in new[] {"password", "filename"})
+                foreach (string p in new string[] { "password", "filename" })
                 {
-                    if (!requestData.Contains(p))
+                    if (!requestData.Contains(p)) 
                         throw new Exception(String.Format("missing parameter {0}", p));
-                    if (String.IsNullOrEmpty((string) requestData[p]))
+                    if (String.IsNullOrEmpty((string)requestData[p]))
                         throw new Exception(String.Format("parameter {0} is empty"));
                 }
-
+                
                 // check password
                 if (!String.IsNullOrEmpty(requiredPassword) &&
-                    (string) requestData["password"] != requiredPassword) throw new Exception("wrong password");
-
-                string filename = (string) requestData["filename"];
+                    (string)requestData["password"] != requiredPassword) throw new Exception("wrong password");
+                
+                string filename = (string)requestData["filename"];
                 if (requestData.Contains("region_uuid"))
                 {
-                    LLUUID region_uuid = (string) requestData["region_uuid"];
-                    if (!m_app.SceneManager.TrySetCurrentScene(region_uuid))
-                        throw new Exception(String.Format("failed to switch to region {0}", region_uuid));
+                    LLUUID region_uuid = (string)requestData["region_uuid"];
+                    if (!m_app.SceneManager.TrySetCurrentScene(region_uuid)) 
+                        throw new Exception(String.Format("failed to switch to region {0}", region_uuid.ToString()));
                     m_log.InfoFormat("[RADMIN] Switched to region {0}", region_uuid.ToString());
                 }
                 else if (requestData.Contains("region_name"))
                 {
-                    string region_name = (string) requestData["region_name"];
-                    if (!m_app.SceneManager.TrySetCurrentScene(region_name))
+                    string region_name = (string)requestData["region_name"];
+                    if (!m_app.SceneManager.TrySetCurrentScene(region_name)) 
                         throw new Exception(String.Format("failed to switch to region {0}", region_name));
                     m_log.InfoFormat("[RADMIN] Switched to region {0}", region_name);
                 }
@@ -608,23 +588,27 @@ namespace OpenSim.ApplicationPlugins.RemoteController
                 responseData["switched"] = "true";
 
                 m_app.SceneManager.LoadCurrentSceneFromXml(filename, true, new LLVector3(0, 0, 0));
-                responseData["loaded"] = "true";
-
-                response.Value = responseData;
+                responseData["loaded"]   = "true";
+                
+                response.Value           = responseData;
             }
             catch (Exception e)
             {
                 m_log.InfoFormat("[RADMIN] LoadXml: {0}", e.Message);
                 m_log.DebugFormat("[RADMIN] LoadXml: {0}", e.ToString());
 
-                responseData["loaded"] = "false";
+                responseData["loaded"]  = "false";
                 responseData["switched"] = "false";
-                responseData["error"] = e.Message;
-
-                response.Value = responseData;
+                responseData["error"]   = e.Message;
+                
+                response.Value          = responseData;
             }
-
+            
             return response;
         }
+
+        public void Close()
+        {
+        }
     }
 }

+ 1 - 1
OpenSim/Data/MSSQL/MSSQLAssetData.cs

@@ -70,7 +70,7 @@ namespace OpenSim.Data.MSSQL
 
         override public AssetBase FetchAsset(LLUUID assetID)
         {
-            AssetBase asset;
+            AssetBase asset = null;
 
             Dictionary<string, string> param = new Dictionary<string, string>();
             param["id"] = assetID.ToString();

+ 39 - 42
OpenSim/Grid/AssetServer/Main.cs

@@ -46,48 +46,14 @@ namespace OpenSim.Grid.AssetServer
     {
         private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
 
-        public static OpenAsset_Main assetserver;
+        public AssetConfig m_config;
 
+        public static OpenAsset_Main assetserver;   
+        
         // Temporarily hardcoded - should be a plugin
-        protected IAssetLoader assetLoader = new AssetLoaderFileSystem();
-
+        protected IAssetLoader assetLoader = new AssetLoaderFileSystem();        
+        
         private IAssetProvider m_assetProvider;
-        public AssetConfig m_config;
-
-        public OpenAsset_Main()
-        {
-            m_console = new ConsoleBase("OpenAsset", this);
-
-            MainConsole.Instance = m_console;
-        }
-
-        #region conscmd_callback Members
-
-        public override void RunCmd(string cmd, string[] cmdparams)
-        {
-            base.RunCmd(cmd, cmdparams);
-
-            switch (cmd)
-            {
-                case "help":
-                    m_console.Notice(
-                        @"shutdown - shutdown this asset server (USE CAUTION!)
-                 stats    - statistical information for this server");
-
-                    break;
-
-                case "stats":
-                    m_console.Notice("STATS", Environment.NewLine + StatsManager.AssetStats.Report());
-                    break;
-
-                case "shutdown":
-                    m_console.Close();
-                    Environment.Exit(0);
-                    break;
-            }
-        }
-
-        #endregion
 
         [STAThread]
         public static void Main(string[] args)
@@ -112,6 +78,13 @@ namespace OpenSim.Grid.AssetServer
             }
         }
 
+        public OpenAsset_Main()
+        {
+            m_console = new ConsoleBase("OpenAsset", this);
+            
+            MainConsole.Instance = m_console;
+        }
+
         public void Startup()
         {
             m_config = new AssetConfig("ASSET SERVER", (Path.Combine(Util.configDir(), "AssetServer_Config.xml")));
@@ -187,18 +160,42 @@ namespace OpenSim.Grid.AssetServer
             catch (Exception e)
             {
                 m_log.Warn("[ASSET]: setupDB() - Exception occured");
-                m_log.Warn("[ASSET]: " + e);
+                m_log.Warn("[ASSET]: " + e.ToString());
             }
         }
 
         public void LoadDefaultAssets()
         {
-            assetLoader.ForEachDefaultXmlAsset(StoreAsset);
+            assetLoader.ForEachDefaultXmlAsset(StoreAsset);            
         }
 
         protected void StoreAsset(AssetBase asset)
         {
             m_assetProvider.CreateAsset(asset);
         }
+
+        public override void RunCmd(string cmd, string[] cmdparams)
+        {
+            base.RunCmd(cmd, cmdparams);
+            
+            switch (cmd)
+            {
+                case "help":
+                    m_console.Notice(
+                        @"shutdown - shutdown this asset server (USE CAUTION!)
+                 stats    - statistical information for this server");                    
+                    
+                    break;                  
+                    
+                case "stats":
+                    m_console.Notice("STATS", Environment.NewLine + StatsManager.AssetStats.Report());
+                    break;
+
+                case "shutdown":
+                    m_console.Close();
+                    Environment.Exit(0);
+                    break;
+            }
+        }
     }
-}
+}

+ 1 - 1
OpenSim/Grid/AssetServer/Properties/AssemblyInfo.cs

@@ -60,4 +60,4 @@ using System.Runtime.InteropServices;
 //
 
 [assembly : AssemblyVersion("1.0.0.0")]
-[assembly : AssemblyFileVersion("1.0.0.0")]
+[assembly : AssemblyFileVersion("1.0.0.0")]

+ 21 - 21
OpenSim/Grid/AssetServer/RestService.cs

@@ -43,8 +43,8 @@ namespace OpenSim.Grid.AssetServer
     {
         private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
 
-        private readonly IAssetProvider m_assetProvider;
         private OpenAsset_Main m_assetManager;
+        private IAssetProvider m_assetProvider;
 
         /// <summary>
         /// Constructor.
@@ -58,28 +58,28 @@ namespace OpenSim.Grid.AssetServer
             m_assetManager = assetManager;
             m_assetProvider = assetProvider;
         }
-
+        
         public override byte[] Handle(string path, Stream request)
         {
             string param = GetParam(path);
             byte[] result = new byte[] {};
 
-            string[] p = param.Split(new[] {'/', '?', '&'}, StringSplitOptions.RemoveEmptyEntries);
+            string[] p = param.Split(new char[] {'/', '?', '&'}, StringSplitOptions.RemoveEmptyEntries);
 
             if (p.Length > 0)
             {
-                LLUUID assetID = null;
-
+                LLUUID assetID = null;    
+                
                 if (!LLUUID.TryParse(p[0], out assetID))
                 {
                     m_log.InfoFormat(
                         "[REST]: GET:/asset ignoring request with malformed UUID {0}", p[0]);
                     return result;
-                }
+                }   
 
                 if (StatsManager.AssetStats != null)
                     StatsManager.AssetStats.AddRequest();
-
+                
                 AssetBase asset = m_assetProvider.FetchAsset(assetID);
                 if (asset != null)
                 {
@@ -94,39 +94,32 @@ namespace OpenSim.Grid.AssetServer
                     //StreamReader sr = new StreamReader(ms);
 
                     result = ms.GetBuffer();
-
+                    
                     m_log.InfoFormat(
                         "[REST]: GET:/asset found {0} with name {1}, size {2} bytes",
                         assetID, asset.Name, result.Length);
 
-                    Array.Resize(ref result, (int) ms.Length);
+                    Array.Resize<byte>(ref result, (int) ms.Length);
                 }
                 else
                 {
                     if (StatsManager.AssetStats != null)
                         StatsManager.AssetStats.AddNotFoundRequest();
-
+                    
                     m_log.InfoFormat("[REST]: GET:/asset failed to find {0}", assetID);
                 }
             }
 
-            return result;
-        }
+            return result;        
+        }        
     }
 
     public class PostAssetStreamHandler : BaseStreamHandler
     {
         private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
 
-        private readonly IAssetProvider m_assetProvider;
         private OpenAsset_Main m_assetManager;
-
-        public PostAssetStreamHandler(OpenAsset_Main assetManager, IAssetProvider assetProvider)
-            : base("POST", "/assets")
-        {
-            m_assetManager = assetManager;
-            m_assetProvider = assetProvider;
-        }
+        private IAssetProvider m_assetProvider;
 
         public override byte[] Handle(string path, Stream request)
         {
@@ -146,5 +139,12 @@ namespace OpenSim.Grid.AssetServer
 
             return new byte[] {};
         }
+
+        public PostAssetStreamHandler(OpenAsset_Main assetManager, IAssetProvider assetProvider)
+            : base("POST", "/assets")
+        {
+            m_assetManager = assetManager;
+            m_assetProvider = assetProvider;
+        }
     }
-}
+}

+ 91 - 94
OpenSim/Grid/GridServer/GridManager.cs

@@ -44,11 +44,11 @@ namespace OpenSim.Grid.GridServer
     {
         private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
 
-        private readonly Dictionary<string, ILogData> _logplugins = new Dictionary<string, ILogData>();
+        private Dictionary<string, IGridData> _plugins = new Dictionary<string, IGridData>();
+        private Dictionary<string, ILogData> _logplugins = new Dictionary<string, ILogData>();
 
         // This is here so that the grid server can hand out MessageServer settings to regions on registration
-        private readonly List<MessageServerInfo> _MessageServers = new List<MessageServerInfo>();
-        private readonly Dictionary<string, IGridData> _plugins = new Dictionary<string, IGridData>();
+        private List<MessageServerInfo> _MessageServers = new List<MessageServerInfo>();
 
         public GridConfig Config;
 
@@ -72,7 +72,7 @@ namespace OpenSim.Grid.GridServer
                     if (typeInterface != null)
                     {
                         IGridData plug =
-                            (IGridData) Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString()));
+                            (IGridData)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString()));
                         plug.Initialise();
                         _plugins.Add(plug.getName(), plug);
                         m_log.Info("[DATA]: Added IGridData Interface");
@@ -84,7 +84,7 @@ namespace OpenSim.Grid.GridServer
                     if (typeInterface != null)
                     {
                         ILogData plug =
-                            (ILogData) Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString()));
+                            (ILogData)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString()));
                         plug.Initialise();
                         _logplugins.Add(plug.getName(), plug);
                         m_log.Info("[DATA]: Added ILogData Interface");
@@ -152,7 +152,7 @@ namespace OpenSim.Grid.GridServer
                 }
                 catch
                 {
-                    m_log.Warn("[storage]: Unable to find region " + handle + " via " + kvp.Key);
+                    m_log.Warn("[storage]: Unable to find region " + handle.ToString() + " via " + kvp.Key);
                 }
             }
             return null;
@@ -218,20 +218,20 @@ namespace OpenSim.Grid.GridServer
                 {
                     if (
                         GetRegion(
-                            Util.UIntsToLong((uint) ((central_region.regionLocX + x) * Constants.RegionSize),
-                                             (uint) (central_region.regionLocY + y) * Constants.RegionSize)) != null)
+                            Util.UIntsToLong((uint)((central_region.regionLocX + x) * Constants.RegionSize),
+                                             (uint)(central_region.regionLocY + y) * Constants.RegionSize)) != null)
                     {
                         neighbour =
                             GetRegion(
-                                Util.UIntsToLong((uint) ((central_region.regionLocX + x) * Constants.RegionSize),
-                                                 (uint) (central_region.regionLocY + y) * Constants.RegionSize));
+                                Util.UIntsToLong((uint)((central_region.regionLocX + x) * Constants.RegionSize),
+                                                 (uint)(central_region.regionLocY + y) * Constants.RegionSize));
 
                         response += "<neighbour>";
                         response += "<sim_ip>" + neighbour.serverIP + "</sim_ip>";
-                        response += "<sim_port>" + neighbour.serverPort + "</sim_port>";
-                        response += "<locx>" + neighbour.regionLocX + "</locx>";
-                        response += "<locy>" + neighbour.regionLocY + "</locy>";
-                        response += "<regionhandle>" + neighbour.regionHandle + "</regionhandle>";
+                        response += "<sim_port>" + neighbour.serverPort.ToString() + "</sim_port>";
+                        response += "<locx>" + neighbour.regionLocX.ToString() + "</locx>";
+                        response += "<locy>" + neighbour.regionLocY.ToString() + "</locy>";
+                        response += "<regionhandle>" + neighbour.regionHandle.ToString() + "</regionhandle>";
                         response += "</neighbour>";
                     }
                 }
@@ -287,10 +287,10 @@ namespace OpenSim.Grid.GridServer
             RegionProfileData sim;
             RegionProfileData existingSim;
 
-            Hashtable requestData = (Hashtable) request.Params[0];
+            Hashtable requestData = (Hashtable)request.Params[0];
             LLUUID uuid;
 
-            if (!requestData.ContainsKey("UUID") || !LLUUID.TryParse((string) requestData["UUID"], out uuid))
+            if (!requestData.ContainsKey("UUID") || !LLUUID.TryParse((string)requestData["UUID"], out uuid))
             {
                 m_log.Info("[GRID]: Region connected without a UUID, ignoring.");
                 return ErrorResponse("No UUID passed to grid server - unable to connect you");
@@ -303,7 +303,7 @@ namespace OpenSim.Grid.GridServer
             catch (FormatException e)
             {
                 m_log.Info("[GRID]: Invalid login parameters, ignoring.");
-                return ErrorResponse("Wrong format in login parameters. Please verify parameters." + e);
+                return ErrorResponse("Wrong format in login parameters. Please verify parameters." + e.ToString() );
             }
 
             existingSim = GetRegion(sim.regionHandle);
@@ -329,7 +329,7 @@ namespace OpenSim.Grid.GridServer
                         {
                             DataResponse insertResponse;
 
-                            if (existingSim == null)
+                            if( existingSim == null )
                             {
                                 insertResponse = kvp.Value.AddProfile(sim);
                             }
@@ -348,20 +348,20 @@ namespace OpenSim.Grid.GridServer
                                     break;
                                 case DataResponse.RESPONSE_INVALIDCREDENTIALS:
                                     m_log.Warn("[storage]: " +
-                                               "New sim creation failed (Invalid Credentials): " + sim.regionName);
+                                                          "New sim creation failed (Invalid Credentials): " + sim.regionName);
                                     break;
                                 case DataResponse.RESPONSE_AUTHREQUIRED:
                                     m_log.Warn("[storage]: " +
-                                               "New sim creation failed (Authentication Required): " +
-                                               sim.regionName);
+                                                          "New sim creation failed (Authentication Required): " +
+                                                          sim.regionName);
                                     break;
                             }
                         }
                         catch (Exception e)
                         {
                             m_log.Warn("[storage]: " +
-                                       "Unable to add region " + sim.UUID + " via " + kvp.Key);
-                            m_log.Warn("[storage]: " + e);
+                                                  "Unable to add region " + sim.UUID.ToString() + " via " + kvp.Key);
+                            m_log.Warn("[storage]: " + e.ToString());
                         }
                     }
 
@@ -375,8 +375,7 @@ namespace OpenSim.Grid.GridServer
                     {
                         m_log.Warn("[grid]: Authentication failed when trying to add new region " + sim.regionName +
                                    " at location " + sim.regionLocX +
-                                   " " + sim.regionLocY + " with TheSim.regionRecvKey " + sim.regionRecvKey + "(" + Config.SimSendKey +
-                                   ") and TheSim.regionRecvKey " + sim.regionSendKey + "(" + Config.SimRecvKey + ") ");
+                                   " " + sim.regionLocY + " with TheSim.regionRecvKey " + sim.regionRecvKey + "(" + Config.SimSendKey + ") and TheSim.regionRecvKey " + sim.regionSendKey + "(" + Config.SimRecvKey + ") ");
                     }
                     else
                     {
@@ -390,8 +389,7 @@ namespace OpenSim.Grid.GridServer
             }
             else
             {
-                m_log.Warn("[grid]: Failed to add new region " + sim.regionName + " at location " + sim.regionLocX + " " + sim.regionLocY +
-                           " currently occupied by " + existingSim.regionName);
+                m_log.Warn("[grid]: Failed to add new region " + sim.regionName + " at location " + sim.regionLocX + " " + sim.regionLocY + " currently occupied by " + existingSim.regionName);
                 return ErrorResponse("Another region already exists at that location. Try another");
             }
         }
@@ -466,7 +464,7 @@ namespace OpenSim.Grid.GridServer
                 foreach (KeyValuePair<ulong, RegionProfileData> aSim in neighbours)
                 {
                     NeighbourBlock = new Hashtable();
-                    NeighbourBlock["sim_ip"] = Util.GetHostFromDNS(aSim.Value.serverIP).ToString();
+                    NeighbourBlock["sim_ip"] = Util.GetHostFromDNS(aSim.Value.serverIP.ToString()).ToString();
                     NeighbourBlock["sim_port"] = aSim.Value.serverPort.ToString();
                     NeighbourBlock["region_locx"] = aSim.Value.regionLocX.ToString();
                     NeighbourBlock["region_locy"] = aSim.Value.regionLocY.ToString();
@@ -487,13 +485,13 @@ namespace OpenSim.Grid.GridServer
                     {
                         if (
                             GetRegion(
-                                Helpers.UIntsToLong((uint) ((sim.regionLocX + x) * Constants.RegionSize),
-                                                    (uint) (sim.regionLocY + y) * Constants.RegionSize)) != null)
+                                Helpers.UIntsToLong((uint)((sim.regionLocX + x) * Constants.RegionSize),
+                                                    (uint)(sim.regionLocY + y) * Constants.RegionSize)) != null)
                         {
                             neighbour =
                                 GetRegion(
-                                    Helpers.UIntsToLong((uint) ((sim.regionLocX + x) * Constants.RegionSize),
-                                                        (uint) (sim.regionLocY + y) * Constants.RegionSize));
+                                    Helpers.UIntsToLong((uint)((sim.regionLocX + x) * Constants.RegionSize),
+                                                        (uint)(sim.regionLocY + y) * Constants.RegionSize));
 
                             NeighbourBlock = new Hashtable();
                             NeighbourBlock["sim_ip"] = Util.GetHostFromDNS(neighbour.serverIP).ToString();
@@ -521,26 +519,27 @@ namespace OpenSim.Grid.GridServer
             RegionProfileData sim;
             sim = new RegionProfileData();
 
-            sim.UUID = new LLUUID((string) requestData["UUID"]);
-            sim.originUUID = new LLUUID((string) requestData["originUUID"]);
+            sim.UUID = new LLUUID((string)requestData["UUID"]);
+            sim.originUUID = new LLUUID((string)requestData["originUUID"]);
 
             sim.regionRecvKey = String.Empty;
             sim.regionSendKey = String.Empty;
-
+            
             if (requestData.ContainsKey("region_secret"))
             {
-                string regionsecret = (string) requestData["region_secret"];
+                string regionsecret = (string)requestData["region_secret"];
                 if (regionsecret.Length > 0)
                     sim.regionSecret = regionsecret;
                 else
                     sim.regionSecret = Config.SimRecvKey;
+
             }
             else
             {
                 sim.regionSecret = Config.SimRecvKey;
             }
-
-
+            
+            
             sim.regionDataURI = String.Empty;
             sim.regionAssetURI = Config.DefaultAssetServer;
             sim.regionAssetRecvKey = Config.AssetRecvKey;
@@ -549,16 +548,16 @@ namespace OpenSim.Grid.GridServer
             sim.regionUserSendKey = Config.UserSendKey;
             sim.regionUserRecvKey = Config.UserRecvKey;
 
-            sim.serverIP = (string) requestData["sim_ip"];
-            sim.serverPort = Convert.ToUInt32((string) requestData["sim_port"]);
-            sim.httpPort = Convert.ToUInt32((string) requestData["http_port"]);
-            sim.remotingPort = Convert.ToUInt32((string) requestData["remoting_port"]);
-            sim.regionLocX = Convert.ToUInt32((string) requestData["region_locx"]);
-            sim.regionLocY = Convert.ToUInt32((string) requestData["region_locy"]);
+            sim.serverIP = (string)requestData["sim_ip"];
+            sim.serverPort = Convert.ToUInt32((string)requestData["sim_port"]);
+            sim.httpPort = Convert.ToUInt32((string)requestData["http_port"]);
+            sim.remotingPort = Convert.ToUInt32((string)requestData["remoting_port"]);
+            sim.regionLocX = Convert.ToUInt32((string)requestData["region_locx"]);
+            sim.regionLocY = Convert.ToUInt32((string)requestData["region_locy"]);
             sim.regionLocZ = 0;
 
             LLUUID textureID;
-            if (LLUUID.TryParse((string) requestData["map-image-id"], out textureID))
+            if (LLUUID.TryParse((string)requestData["map-image-id"], out textureID))
             {
                 sim.regionMapTextureID = textureID;
             }
@@ -571,23 +570,21 @@ namespace OpenSim.Grid.GridServer
             //
             // this particular section of the mod attempts to receive a value from the region's xml file by way of 
             // OSG1GridServices for the region's owner
-            sim.owner_uuid = (string) requestData["master_avatar_uuid"];
+            sim.owner_uuid = (string)requestData["master_avatar_uuid"];
 
             try
             {
-                sim.regionRecvKey = (string) requestData["recvkey"];
-                sim.regionSendKey = (string) requestData["authkey"];
-            }
-            catch (KeyNotFoundException)
-            {
+                sim.regionRecvKey = (string)requestData["recvkey"];
+                sim.regionSendKey = (string)requestData["authkey"];
             }
+            catch (KeyNotFoundException) { }
 
             sim.regionHandle = Helpers.UIntsToLong((sim.regionLocX * Constants.RegionSize), (sim.regionLocY * Constants.RegionSize));
-            sim.serverURI = (string) requestData["server_uri"];
+            sim.serverURI = (string)requestData["server_uri"];
 
             sim.httpServerURI = "http://" + sim.serverIP + ":" + sim.httpPort + "/";
 
-            sim.regionName = (string) requestData["sim_name"];
+            sim.regionName = (string)requestData["sim_name"];
             return sim;
         }
 
@@ -607,7 +604,7 @@ namespace OpenSim.Grid.GridServer
 
             //RegionProfileData TheSim = null;
             string uuid;
-            Hashtable requestData = (Hashtable) request.Params[0];
+            Hashtable requestData = (Hashtable)request.Params[0];
 
             if (requestData.ContainsKey("UUID"))
             {
@@ -627,7 +624,7 @@ namespace OpenSim.Grid.GridServer
                 //OpenSim.Data.MySQL.MySQLGridData dbengine = new OpenSim.Data.MySQL.MySQLGridData();
                 try
                 {
-                    MySQLGridData mysqldata = (MySQLGridData) (kvp.Value);
+                    MySQLGridData mysqldata = (MySQLGridData)(kvp.Value);
                     //DataResponse insertResponse = mysqldata.DeleteProfile(TheSim);
                     DataResponse insertResponse = mysqldata.DeleteProfile(uuid);
                     switch (insertResponse)
@@ -667,22 +664,22 @@ namespace OpenSim.Grid.GridServer
         /// <returns></returns>
         public XmlRpcResponse XmlRpcSimulatorDataRequestMethod(XmlRpcRequest request)
         {
-            Hashtable requestData = (Hashtable) request.Params[0];
+            Hashtable requestData = (Hashtable)request.Params[0];
             Hashtable responseData = new Hashtable();
             RegionProfileData simData = null;
             if (requestData.ContainsKey("region_UUID"))
             {
-                simData = GetRegion(new LLUUID((string) requestData["region_UUID"]));
+                simData = GetRegion(new LLUUID((string)requestData["region_UUID"]));
             }
             else if (requestData.ContainsKey("region_handle"))
             {
                 //CFK: The if/else below this makes this message redundant.
                 //CFK: Console.WriteLine("requesting data for region " + (string) requestData["region_handle"]);
-                simData = GetRegion(Convert.ToUInt64((string) requestData["region_handle"]));
+                simData = GetRegion(Convert.ToUInt64((string)requestData["region_handle"]));
             }
             else if (requestData.ContainsKey("region_name_search"))
             {
-                simData = GetRegion((string) requestData["region_name_search"]);
+                simData = GetRegion((string)requestData["region_name_search"]);
             }
 
             if (simData == null)
@@ -693,8 +690,8 @@ namespace OpenSim.Grid.GridServer
             }
             else
             {
-                m_log.Info("[DATA]: found " + simData.regionName + " regionHandle = " +
-                           (string) requestData["region_handle"]);
+                m_log.Info("[DATA]: found " + (string)simData.regionName + " regionHandle = " +
+                           (string)requestData["region_handle"]);
                 responseData["sim_ip"] = Util.GetHostFromDNS(simData.serverIP).ToString();
                 responseData["sim_port"] = simData.serverPort.ToString();
                 responseData["server_uri"] = simData.serverURI;
@@ -716,22 +713,22 @@ namespace OpenSim.Grid.GridServer
         {
             int xmin = 980, ymin = 980, xmax = 1020, ymax = 1020;
 
-            Hashtable requestData = (Hashtable) request.Params[0];
+            Hashtable requestData = (Hashtable)request.Params[0];
             if (requestData.ContainsKey("xmin"))
             {
-                xmin = (Int32) requestData["xmin"];
+                xmin = (Int32)requestData["xmin"];
             }
             if (requestData.ContainsKey("ymin"))
             {
-                ymin = (Int32) requestData["ymin"];
+                ymin = (Int32)requestData["ymin"];
             }
             if (requestData.ContainsKey("xmax"))
             {
-                xmax = (Int32) requestData["xmax"];
+                xmax = (Int32)requestData["xmax"];
             }
             if (requestData.ContainsKey("ymax"))
             {
-                ymax = (Int32) requestData["ymax"];
+                ymax = (Int32)requestData["ymax"];
             }
             //CFK: The second log is more meaningful and either standard or fast generally occurs.
             //CFK: m_log.Info("[MAP]: World map request for range (" + xmin + "," + ymin + ")..(" + xmax + "," + ymax + ")");
@@ -746,15 +743,15 @@ namespace OpenSim.Grid.GridServer
             if (fastMode)
             {
                 Dictionary<ulong, RegionProfileData> neighbours =
-                    GetRegions((uint) xmin, (uint) ymin, (uint) xmax, (uint) ymax);
+                    GetRegions((uint)xmin, (uint)ymin, (uint)xmax, (uint)ymax);
 
                 foreach (KeyValuePair<ulong, RegionProfileData> aSim in neighbours)
                 {
                     Hashtable simProfileBlock = new Hashtable();
                     simProfileBlock["x"] = aSim.Value.regionLocX.ToString();
                     simProfileBlock["y"] = aSim.Value.regionLocY.ToString();
-                    Console.WriteLine("send neighbour info for " + aSim.Value.regionLocX + " , " +
-                                      aSim.Value.regionLocY);
+                    Console.WriteLine("send neighbour info for " + aSim.Value.regionLocX.ToString() + " , " +
+                                      aSim.Value.regionLocY.ToString());
                     simProfileBlock["name"] = aSim.Value.regionName;
                     simProfileBlock["access"] = 21;
                     simProfileBlock["region-flags"] = 512;
@@ -764,15 +761,15 @@ namespace OpenSim.Grid.GridServer
 
                     // For Sugilite compatibility
                     simProfileBlock["regionhandle"] = aSim.Value.regionHandle.ToString();
-                    simProfileBlock["sim_ip"] = aSim.Value.serverIP;
+                    simProfileBlock["sim_ip"] = aSim.Value.serverIP.ToString();
                     simProfileBlock["sim_port"] = aSim.Value.serverPort.ToString();
-                    simProfileBlock["sim_uri"] = aSim.Value.serverURI;
+                    simProfileBlock["sim_uri"] = aSim.Value.serverURI.ToString();
                     simProfileBlock["uuid"] = aSim.Value.UUID.ToString();
                     simProfileBlock["remoting_port"] = aSim.Value.remotingPort;
 
                     simProfileList.Add(simProfileBlock);
                 }
-                m_log.Info("[MAP]: Fast map " + simProfileList.Count +
+                m_log.Info("[MAP]: Fast map " + simProfileList.Count.ToString() +
                            " regions @ (" + xmin + "," + ymin + ")..(" + xmax + "," + ymax + ")");
             }
             else
@@ -782,7 +779,7 @@ namespace OpenSim.Grid.GridServer
                 {
                     for (int y = ymin; y < ymax + 1; y++)
                     {
-                        ulong regHandle = Helpers.UIntsToLong((uint) (x * Constants.RegionSize), (uint) (y * Constants.RegionSize));
+                        ulong regHandle = Helpers.UIntsToLong((uint)(x * Constants.RegionSize), (uint)(y * Constants.RegionSize));
                         simProfile = GetRegion(regHandle);
                         if (simProfile != null)
                         {
@@ -798,16 +795,16 @@ namespace OpenSim.Grid.GridServer
 
                             // For Sugilite compatibility
                             simProfileBlock["regionhandle"] = simProfile.regionHandle.ToString();
-                            simProfileBlock["sim_ip"] = simProfile.serverIP;
+                            simProfileBlock["sim_ip"] = simProfile.serverIP.ToString();
                             simProfileBlock["sim_port"] = simProfile.serverPort.ToString();
-                            simProfileBlock["sim_uri"] = simProfile.serverURI;
+                            simProfileBlock["sim_uri"] = simProfile.serverURI.ToString();
                             simProfileBlock["uuid"] = simProfile.UUID.ToString();
 
                             simProfileList.Add(simProfileBlock);
                         }
                     }
                 }
-                m_log.Info("[MAP]: Std map " + simProfileList.Count +
+                m_log.Info("[MAP]: Std map " + simProfileList.Count.ToString() +
                            " regions @ (" + xmin + "," + ymin + ")..(" + xmax + "," + ymax + ")");
             }
 
@@ -863,12 +860,12 @@ namespace OpenSim.Grid.GridServer
                     respstring = "<Root>";
                     respstring += "<authkey>" + TheSim.regionSendKey + "</authkey>";
                     respstring += "<sim>";
-                    respstring += "<uuid>" + TheSim.UUID + "</uuid>";
+                    respstring += "<uuid>" + TheSim.UUID.ToString() + "</uuid>";
                     respstring += "<regionname>" + TheSim.regionName + "</regionname>";
-                    respstring += "<sim_ip>" + Util.GetHostFromDNS(TheSim.serverIP) + "</sim_ip>";
-                    respstring += "<sim_port>" + TheSim.serverPort + "</sim_port>";
-                    respstring += "<region_locx>" + TheSim.regionLocX + "</region_locx>";
-                    respstring += "<region_locy>" + TheSim.regionLocY + "</region_locy>";
+                    respstring += "<sim_ip>" + Util.GetHostFromDNS(TheSim.serverIP).ToString() + "</sim_ip>";
+                    respstring += "<sim_port>" + TheSim.serverPort.ToString() + "</sim_port>";
+                    respstring += "<region_locx>" + TheSim.regionLocX.ToString() + "</region_locx>";
+                    respstring += "<region_locy>" + TheSim.regionLocY.ToString() + "</region_locy>";
                     respstring += "<estate_id>1</estate_id>";
                     respstring += "</sim>";
                     respstring += "</Root>";
@@ -949,12 +946,12 @@ namespace OpenSim.Grid.GridServer
                         break;
 
                     case "region_locx":
-                        theSim.regionLocX = Convert.ToUInt32(simnode.ChildNodes[i].InnerText);
+                        theSim.regionLocX = Convert.ToUInt32((string)simnode.ChildNodes[i].InnerText);
                         theSim.regionHandle = Helpers.UIntsToLong((theSim.regionLocX * Constants.RegionSize), (theSim.regionLocY * Constants.RegionSize));
                         break;
 
                     case "region_locy":
-                        theSim.regionLocY = Convert.ToUInt32(simnode.ChildNodes[i].InnerText);
+                        theSim.regionLocY = Convert.ToUInt32((string)simnode.ChildNodes[i].InnerText);
                         theSim.regionHandle = Helpers.UIntsToLong((theSim.regionLocX * Constants.RegionSize), (theSim.regionLocY * Constants.RegionSize));
                         break;
                 }
@@ -1008,28 +1005,28 @@ namespace OpenSim.Grid.GridServer
                     catch (Exception e)
                     {
                         m_log.Warn("[GRID]: GetRegionPlugin Handle " + kvp.Key + " unable to add new sim: " +
-                                   e);
+                                                      e.ToString());
                     }
                 }
                 return "OK";
             }
             catch (Exception e)
             {
-                return "ERROR! Could not save to database! (" + e + ")";
+                return "ERROR! Could not save to database! (" + e.ToString() + ")";
             }
         }
 
         public XmlRpcResponse XmlRPCRegisterMessageServer(XmlRpcRequest request)
         {
             XmlRpcResponse response = new XmlRpcResponse();
-            Hashtable requestData = (Hashtable) request.Params[0];
+            Hashtable requestData = (Hashtable)request.Params[0];
             Hashtable responseData = new Hashtable();
 
             if (requestData.Contains("uri"))
             {
-                string URI = (string) requestData["URI"];
-                string sendkey = (string) requestData["sendkey"];
-                string recvkey = (string) requestData["recvkey"];
+                string URI = (string)requestData["URI"];
+                string sendkey = (string)requestData["sendkey"];
+                string recvkey = (string)requestData["recvkey"];
                 MessageServerInfo m = new MessageServerInfo();
                 m.URI = URI;
                 m.sendkey = sendkey;
@@ -1045,14 +1042,14 @@ namespace OpenSim.Grid.GridServer
         public XmlRpcResponse XmlRPCDeRegisterMessageServer(XmlRpcRequest request)
         {
             XmlRpcResponse response = new XmlRpcResponse();
-            Hashtable requestData = (Hashtable) request.Params[0];
+            Hashtable requestData = (Hashtable)request.Params[0];
             Hashtable responseData = new Hashtable();
 
             if (requestData.Contains("uri"))
             {
-                string URI = (string) requestData["uri"];
-                string sendkey = (string) requestData["sendkey"];
-                string recvkey = (string) requestData["recvkey"];
+                string URI = (string)requestData["uri"];
+                string sendkey = (string)requestData["sendkey"];
+                string recvkey = (string)requestData["recvkey"];
                 MessageServerInfo m = new MessageServerInfo();
                 m.URI = URI;
                 m.sendkey = sendkey;
@@ -1065,4 +1062,4 @@ namespace OpenSim.Grid.GridServer
             return response;
         }
     }
-}
+}

+ 28 - 32
OpenSim/Grid/GridServer/GridServerBase.cs

@@ -44,34 +44,6 @@ namespace OpenSim.Grid.GridServer
         protected GridManager m_gridManager;
         protected List<IGridPlugin> m_plugins = new List<IGridPlugin>();
 
-        public GridServerBase()
-        {
-            m_console = new ConsoleBase("OpenGrid", this);
-            MainConsole.Instance = m_console;
-        }
-
-        #region conscmd_callback Members
-
-        public override void RunCmd(string cmd, string[] cmdparams)
-        {
-            base.RunCmd(cmd, cmdparams);
-
-            switch (cmd)
-            {
-                case "help":
-                    m_console.Notice("shutdown - shutdown the grid (USE CAUTION!)");
-                    break;
-
-                case "shutdown":
-                    foreach (IGridPlugin plugin in m_plugins) plugin.Close();
-                    m_console.Close();
-                    Environment.Exit(0);
-                    break;
-            }
-        }
-
-        #endregion
-
         public void Work()
         {
             m_console.Notice("Enter help for a list of commands\n");
@@ -82,6 +54,12 @@ namespace OpenSim.Grid.GridServer
             }
         }
 
+        public GridServerBase()
+        {
+            m_console = new ConsoleBase("OpenGrid", this);
+            MainConsole.Instance = m_console;
+        }
+
         public void managercallback(string cmd)
         {
             switch (cmd)
@@ -105,14 +83,14 @@ namespace OpenSim.Grid.GridServer
 
             AddHttpHandlers();
 
-            LoadGridPlugins();
+            LoadGridPlugins( );
 
             m_httpServer.Start();
 
             m_console.Status("[GRID]: Starting sim status checker");
 
             Timer simCheckTimer = new Timer(3600000 * 3); // 3 Hours between updates.
-            simCheckTimer.Elapsed += CheckSims;
+            simCheckTimer.Elapsed += new ElapsedEventHandler(CheckSims);
             simCheckTimer.Enabled = true;
         }
 
@@ -144,7 +122,7 @@ namespace OpenSim.Grid.GridServer
             foreach (TypeExtensionNode node in nodes)
             {
                 m_console.Status("[GRIDPLUGINS]: Loading OpenSim plugin " + node.Path);
-                IGridPlugin plugin = (IGridPlugin) node.CreateInstance();
+                IGridPlugin plugin = (IGridPlugin)node.CreateInstance();
                 plugin.Initialise(this);
                 m_plugins.Add(plugin);
             }
@@ -199,5 +177,23 @@ namespace OpenSim.Grid.GridServer
             }
             */
         }
+
+        public override void RunCmd(string cmd, string[] cmdparams)
+        {
+            base.RunCmd(cmd, cmdparams);
+
+            switch (cmd)
+            {
+                case "help":
+                    m_console.Notice("shutdown - shutdown the grid (USE CAUTION!)");
+                    break;
+
+                case "shutdown":
+                    foreach (IGridPlugin plugin in m_plugins) plugin.Close();
+                    m_console.Close();
+                    Environment.Exit(0);
+                    break;
+            }
+        }
     }
-}
+}

+ 1 - 1
OpenSim/Grid/GridServer/IGridPlugin.cs

@@ -38,4 +38,4 @@ namespace OpenSim.Grid.GridServer
         void Initialise(GridServerBase gridServer);
         void Close();
     }
-}
+}

+ 1 - 1
OpenSim/Grid/GridServer/Program.cs

@@ -50,4 +50,4 @@ namespace OpenSim.Grid.GridServer
             }
         }
     }
-}
+}

+ 1 - 1
OpenSim/Grid/GridServer/Properties/AssemblyInfo.cs

@@ -60,4 +60,4 @@ using System.Runtime.InteropServices;
 //
 
 [assembly : AssemblyVersion("1.0.0.0")]
-[assembly : AssemblyFileVersion("1.0.0.0")]
+[assembly : AssemblyFileVersion("1.0.0.0")]

+ 25 - 25
OpenSim/Grid/InventoryServer/GridInventoryService.cs

@@ -40,7 +40,7 @@ namespace OpenSim.Grid.InventoryServer
     /// </summary>
     public class GridInventoryService : InventoryServiceBase
     {
-        private static readonly ILog m_log
+        private static readonly ILog m_log 
             = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
 
         public override void RequestInventoryForUser(LLUUID userID, InventoryReceiptCallback callback)
@@ -55,7 +55,7 @@ namespace OpenSim.Grid.InventoryServer
         /// <param name="itemsList"></param>
         /// <returns>true if the inventory was retrieved, false otherwise</returns>
         private bool GetUsersInventory(LLUUID userID, out List<InventoryFolderBase> folderList,
-                                       out List<InventoryItemBase> itemsList)
+                                          out List<InventoryItemBase> itemsList)
         {
             List<InventoryFolderBase> allFolders = GetInventorySkeleton(userID);
             List<InventoryItemBase> allItems = new List<InventoryItemBase>();
@@ -109,28 +109,28 @@ namespace OpenSim.Grid.InventoryServer
         {
             // uncomment me to simulate an overloaded inventory server
             //Thread.Sleep(20000);
-
+            
             LLUUID userID = new LLUUID(rawUserID);
 
-            m_log.InfoFormat("[GRID AGENT INVENTORY]: Processing request for inventory of {0}", userID);
+            m_log.InfoFormat("[GRID AGENT INVENTORY]: Processing request for inventory of {0}", userID);            
 
             InventoryCollection invCollection = new InventoryCollection();
-
+            
             List<InventoryFolderBase> allFolders = GetInventorySkeleton(userID);
-
+            
             if (null == allFolders)
             {
                 m_log.WarnFormat("[GRID AGENT INVENTORY]: No inventory found for user {0}", rawUserID);
-
+                
                 return invCollection;
             }
-
+            
             List<InventoryItemBase> allItems = new List<InventoryItemBase>();
 
             foreach (InventoryFolderBase folder in allFolders)
             {
                 List<InventoryItemBase> items = RequestFolderItems(folder.ID);
-
+                
                 if (items != null)
                 {
                     allItems.InsertRange(0, items);
@@ -138,9 +138,9 @@ namespace OpenSim.Grid.InventoryServer
             }
 
             invCollection.UserID = userID;
-            invCollection.Folders = allFolders;
-            invCollection.Items = allItems;
-
+            invCollection.Folders = allFolders;            
+            invCollection.Items = allItems;            
+            
 //            foreach (InventoryFolderBase folder in invCollection.Folders)
 //            {
 //                m_log.DebugFormat("[GRID AGENT INVENTORY]: Sending back folder {0} {1}", folder.Name, folder.ID);
@@ -150,14 +150,14 @@ namespace OpenSim.Grid.InventoryServer
 //            {
 //                m_log.DebugFormat("[GRID AGENT INVENTORY]: Sending back item {0} {1}, folder {2}", item.Name, item.ID, item.Folder);
 //            }
-
+            
             m_log.InfoFormat(
                 "[GRID AGENT INVENTORY]: Sending back inventory response to user {0} containing {1} folders and {2} items",
-                invCollection.UserID, invCollection.Folders.Count, invCollection.Items.Count);
-
+                invCollection.UserID, invCollection.Folders.Count, invCollection.Items.Count);            
+                        
             return invCollection;
         }
-
+                
         /// <summary>
         /// Guid to UUID wrapper for same name IInventoryServices method
         /// </summary>
@@ -166,10 +166,10 @@ namespace OpenSim.Grid.InventoryServer
         public List<InventoryFolderBase> GetInventorySkeleton(Guid rawUserID)
         {
             //Thread.Sleep(10000);
-
+            
             LLUUID userID = new LLUUID(rawUserID);
             return GetInventorySkeleton(userID);
-        }
+        }        
 
         /// <summary>
         /// Create an inventory for the given user.
@@ -196,11 +196,11 @@ namespace OpenSim.Grid.InventoryServer
         {
             MoveFolder(folder);
         }
-
+        
         public override void PurgeInventoryFolder(LLUUID userID, InventoryFolderBase folder)
         {
-            PurgeFolder(folder);
-        }
+             PurgeFolder(folder);
+        }        
 
         public override void AddNewInventoryItem(LLUUID userID, InventoryItemBase item)
         {
@@ -230,15 +230,15 @@ namespace OpenSim.Grid.InventoryServer
             MoveExistingInventoryFolder(folder);
             return true;
         }
-
+        
         public bool PurgeInventoryFolder(InventoryFolderBase folder)
         {
             m_log.InfoFormat(
                 "[GRID AGENT INVENTORY]: Purging folder {0} {1} of its contents", folder.Name, folder.ID);
-
+            
             PurgeInventoryFolder(folder.Owner, folder);
             return true;
-        }
+        }         
 
         public bool AddInventoryItem(InventoryItemBase item)
         {
@@ -267,4 +267,4 @@ namespace OpenSim.Grid.InventoryServer
             return true;
         }
     }
-}
+}

+ 7 - 11
OpenSim/Grid/InventoryServer/InventoryManager.cs

@@ -54,7 +54,7 @@ namespace OpenSim.Grid.InventoryServer
             Assembly pluginAssembly = Assembly.LoadFrom(FileName);
 
             m_log.Info("[" + OpenInventory_Main.LogName + "]: " +
-                       "Invenstorage: Found " + pluginAssembly.GetTypes().Length + " interfaces.");
+                                     "Invenstorage: Found " + pluginAssembly.GetTypes().Length + " interfaces.");
             foreach (Type pluginType in pluginAssembly.GetTypes())
             {
                 if (!pluginType.IsAbstract)
@@ -68,7 +68,7 @@ namespace OpenSim.Grid.InventoryServer
                         plug.Initialise(dbconnect);
                         _databasePlugin = plug;
                         m_log.Info("[" + OpenInventory_Main.LogName + "]: " +
-                                   "Invenstorage: Added IInventoryData Interface");
+                                                 "Invenstorage: Added IInventoryData Interface");
                         break;
                     }
                 }
@@ -136,12 +136,10 @@ namespace OpenSim.Grid.InventoryServer
             return fixupFolder(inventory.root, null);
         }
 
-        #region Nested type: GetInventory
-
         public class GetInventory : BaseStreamHandler
         {
-            private readonly SerializableInventory _inventory;
-            private readonly InventoryManager _manager;
+            private SerializableInventory _inventory;
+            private InventoryManager _manager;
 
             public GetInventory(InventoryManager manager)
                 : base("GET", "/inventory")
@@ -183,7 +181,7 @@ namespace OpenSim.Grid.InventoryServer
             {
                 byte[] result = new byte[] {};
 
-                string[] parms = path.Split(new[] {'/'}, StringSplitOptions.RemoveEmptyEntries);
+                string[] parms = path.Split(new char[] {'/'}, StringSplitOptions.RemoveEmptyEntries);
                 if (parms.Length > 1)
                 {
                     if (string.Compare(parms[1], "library", true) == 0)
@@ -192,7 +190,7 @@ namespace OpenSim.Grid.InventoryServer
                         saveInventoryToStream(_inventory, ms);
 
                         result = ms.GetBuffer();
-                        Array.Resize(ref result, (int) ms.Length);
+                        Array.Resize<byte>(ref result, (int) ms.Length);
                     }
                     else if (string.Compare(parms[1], "user", true) == 0)
                     {
@@ -205,7 +203,5 @@ namespace OpenSim.Grid.InventoryServer
                 return result;
             }
         }
-
-        #endregion
     }
-}
+}

+ 31 - 34
OpenSim/Grid/InventoryServer/Main.cs

@@ -40,38 +40,13 @@ namespace OpenSim.Grid.InventoryServer
 {
     public class OpenInventory_Main : BaseOpenSimServer, conscmd_callback
     {
-        public const string LogName = "INVENTORY";
         private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
 
-        private InventoryConfig m_config;
         private InventoryManager m_inventoryManager;
+        private InventoryConfig m_config;
         private GridInventoryService m_inventoryService;
 
-        public OpenInventory_Main()
-        {
-            m_console = new ConsoleBase(LogName, this);
-            MainConsole.Instance = m_console;
-        }
-
-        #region conscmd_callback Members
-
-        public override void RunCmd(string cmd, string[] cmdparams)
-        {
-            base.RunCmd(cmd, cmdparams);
-
-            switch (cmd)
-            {
-                case "add-user":
-                    m_inventoryService.CreateUsersInventory(LLUUID.Random().UUID);
-                    break;
-                case "shutdown":
-                    m_console.Close();
-                    Environment.Exit(0);
-                    break;
-            }
-        }
-
-        #endregion
+        public const string LogName = "INVENTORY";
 
         [STAThread]
         public static void Main(string[] args)
@@ -84,6 +59,12 @@ namespace OpenSim.Grid.InventoryServer
             theServer.Work();
         }
 
+        public OpenInventory_Main()
+        {
+            m_console = new ConsoleBase(LogName, this);
+            MainConsole.Instance = m_console;
+        }
+
         public void Startup()
         {
             m_log.Info("Initialising inventory manager...");
@@ -94,7 +75,7 @@ namespace OpenSim.Grid.InventoryServer
             m_inventoryService.AddPlugin(m_config.DatabaseProvider, m_config.DatabaseConnect);
 
             m_log.Info("[" + LogName + "]: Starting HTTP server ...");
-
+            
             m_httpServer = new BaseHttpServer(m_config.HttpPort);
             AddHttpHandlers();
             m_httpServer.Start();
@@ -107,11 +88,11 @@ namespace OpenSim.Grid.InventoryServer
             m_httpServer.AddStreamHandler(
                 new RestDeserialisehandler<Guid, InventoryCollection>(
                     "POST", "/GetInventory/", m_inventoryService.GetUserInventory));
-
+            
             m_httpServer.AddStreamHandler(
                 new RestDeserialisehandler<Guid, bool>(
                     "POST", "/CreateInventory/", m_inventoryService.CreateUsersInventory));
-
+            
             m_httpServer.AddStreamHandler(
                 new RestDeserialisehandler<InventoryFolderBase, bool>(
                     "POST", "/NewFolder/", m_inventoryService.AddInventoryFolder));
@@ -119,15 +100,15 @@ namespace OpenSim.Grid.InventoryServer
             m_httpServer.AddStreamHandler(
                 new RestDeserialisehandler<InventoryFolderBase, bool>(
                     "POST", "/MoveFolder/", m_inventoryService.MoveInventoryFolder));
-
+            
             m_httpServer.AddStreamHandler(
                 new RestDeserialisehandler<InventoryFolderBase, bool>(
-                    "POST", "/PurgeFolder/", m_inventoryService.PurgeInventoryFolder));
+                    "POST", "/PurgeFolder/", m_inventoryService.PurgeInventoryFolder));            
 
             m_httpServer.AddStreamHandler(
                 new RestDeserialisehandler<InventoryItemBase, bool>(
                     "POST", "/NewItem/", m_inventoryService.AddInventoryItem));
-
+            
             m_httpServer.AddStreamHandler(
                 new RestDeserialisehandler<InventoryItemBase, bool>(
                     "POST", "/DeleteItem/", m_inventoryService.DeleteInvItem));
@@ -153,5 +134,21 @@ namespace OpenSim.Grid.InventoryServer
                 m_console.Prompt();
             }
         }
+
+        public override void RunCmd(string cmd, string[] cmdparams)
+        {
+            base.RunCmd(cmd, cmdparams);
+            
+            switch (cmd)
+            {
+                case "add-user":
+                    m_inventoryService.CreateUsersInventory(LLUUID.Random().UUID);
+                    break;
+                case "shutdown":
+                    m_console.Close();
+                    Environment.Exit(0);
+                    break;
+            }
+        }
     }
-}
+}

+ 37 - 41
OpenSim/Grid/MessagingServer/Main.cs

@@ -44,42 +44,9 @@ namespace OpenSim.Grid.MessagingServer
         private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
 
         private MessageServerConfig Cfg;
-
-        private LLUUID m_lastCreatedUser = LLUUID.Random();
         private MessageService msgsvc;
-
-        private OpenMessage_Main()
-        {
-            m_console = new ConsoleBase("OpenMessage", this);
-            MainConsole.Instance = m_console;
-        }
-
-        #region conscmd_callback Members
-
-        public override void RunCmd(string cmd, string[] cmdparams)
-        {
-            base.RunCmd(cmd, cmdparams);
-
-            switch (cmd)
-            {
-                case "help":
-                    m_console.Notice("shutdown - shutdown the message server (USE CAUTION!)");
-                    break;
-
-                case "shutdown":
-                    msgsvc.deregisterWithUserServer();
-                    m_console.Close();
-                    Environment.Exit(0);
-                    break;
-            }
-        }
-
-        public override void Show(string ShowWhat)
-        {
-            base.Show(ShowWhat);
-        }
-
-        #endregion
+        
+        private LLUUID m_lastCreatedUser = LLUUID.Random();
 
         [STAThread]
         public static void Main(string[] args)
@@ -88,6 +55,7 @@ namespace OpenSim.Grid.MessagingServer
 
             m_log.Info("Launching MessagingServer...");
 
+            
 
             OpenMessage_Main messageserver = new OpenMessage_Main();
 
@@ -95,6 +63,12 @@ namespace OpenSim.Grid.MessagingServer
             messageserver.Work();
         }
 
+        private OpenMessage_Main()
+        {
+            m_console = new ConsoleBase("OpenMessage", this);
+            MainConsole.Instance = m_console;
+        }
+
         private void Work()
         {
             m_console.Notice("Enter help for a list of commands\n");
@@ -144,13 +118,12 @@ namespace OpenSim.Grid.MessagingServer
             switch (what)
             {
                 case "user":
-
+                    
                     try
                     {
                         //userID =
-                        //m_userManager.AddUserProfile(tempfirstname, templastname, tempMD5Passwd, regX, regY);
-                    }
-                    catch (Exception ex)
+                            //m_userManager.AddUserProfile(tempfirstname, templastname, tempMD5Passwd, regX, regY);
+                    } catch (Exception ex)
                     {
                         m_console.Error("[SERVER]: Error creating user: {0}", ex.ToString());
                     }
@@ -158,7 +131,7 @@ namespace OpenSim.Grid.MessagingServer
                     try
                     {
                         //RestObjectPoster.BeginPostObject<Guid>(m_userManager._config.InventoryUrl + "CreateInventory/",
-                        //userID.UUID);
+                                                               //userID.UUID);
                     }
                     catch (Exception ex)
                     {
@@ -168,5 +141,28 @@ namespace OpenSim.Grid.MessagingServer
                     break;
             }
         }
+
+        public override void RunCmd(string cmd, string[] cmdparams)
+        {
+            base.RunCmd(cmd, cmdparams);
+            
+            switch (cmd)
+            {
+                case "help":
+                    m_console.Notice("shutdown - shutdown the message server (USE CAUTION!)");
+                    break;
+
+                case "shutdown":
+                    msgsvc.deregisterWithUserServer();
+                    m_console.Close();
+                    Environment.Exit(0);
+                    break;
+            }
+        }
+
+        public override void Show(string ShowWhat)
+        {
+            base.Show(ShowWhat);
+        }
     }
-}
+}

+ 75 - 76
OpenSim/Grid/MessagingServer/MessageService.cs

@@ -45,16 +45,16 @@ namespace OpenSim.Grid.MessagingServer
     {
         private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
 
-        private readonly MessageServerConfig m_cfg;
-        private readonly Hashtable m_presence_BackReferences = new Hashtable();
+        private MessageServerConfig m_cfg;
 
         //A hashtable of all current presences this server knows about
-        private readonly Hashtable m_presences = new Hashtable();
+        private Hashtable m_presences = new Hashtable();
 
         //a hashtable of all current regions this server knows about
-        private readonly Hashtable m_regionInfoCache = new Hashtable();
+        private Hashtable m_regionInfoCache = new Hashtable();
 
         //A hashtable containing lists of UUIDs keyed by UUID for fast backreferencing
+        private Hashtable m_presence_BackReferences = new Hashtable();
 
         // Hashtable containing work units that need to be processed
         private Hashtable m_unProcessedWorkUnits = new Hashtable();
@@ -63,13 +63,13 @@ namespace OpenSim.Grid.MessagingServer
         {
             m_cfg = cfg;
         }
-
+        
         #region RegionComms Methods
 
         #endregion
 
         #region FriendList Methods
-
+        
         /// <summary>
         /// Process Friendlist subscriptions for a user
         /// The login method calls this for a User
@@ -87,14 +87,14 @@ namespace OpenSim.Grid.MessagingServer
             for (int i = 0; i < uFriendList.Count; i++)
             {
                 //m_presence_BackReferences.Add(userpresence.agentData.AgentID, uFriendList[i].Friend);
-                // m_presence_BackReferences.Add(uFriendList[i].Friend, userpresence.agentData.AgentID);
+               // m_presence_BackReferences.Add(uFriendList[i].Friend, userpresence.agentData.AgentID);
 
                 if (m_presences.Contains(uFriendList[i].Friend))
                 {
-                    UserPresenceData friendup = (UserPresenceData) m_presences[uFriendList[i].Friend];
+                    UserPresenceData friendup = (UserPresenceData)m_presences[uFriendList[i].Friend];
                     // Add backreference
-
-                    SubscribeToPresenceUpdates(userpresence, friendup, uFriendList[i], i);
+                    
+                    SubscribeToPresenceUpdates(userpresence, friendup, uFriendList[i],i);
                 }
             }
         }
@@ -108,10 +108,10 @@ namespace OpenSim.Grid.MessagingServer
         /// <param name="friendpresence">P2</param>
         /// <param name="uFriendListItem"></param>
         /// <param name="uFriendListIndex"></param>
-        public void SubscribeToPresenceUpdates(UserPresenceData userpresence, UserPresenceData friendpresence,
-                                               FriendListItem uFriendListItem, int uFriendListIndex)
+        public void SubscribeToPresenceUpdates(UserPresenceData userpresence, UserPresenceData friendpresence, 
+                                                FriendListItem uFriendListItem, int uFriendListIndex)
         {
-            if ((uFriendListItem.FriendListOwnerPerms & (uint) FriendRights.CanSeeOnline) != 0)
+            if ((uFriendListItem.FriendListOwnerPerms & (uint)FriendRights.CanSeeOnline) != 0)
             {
                 // Subscribe and Send Out updates
                 if (!friendpresence.subscriptionData.Contains(friendpresence.agentData.AgentID))
@@ -126,13 +126,13 @@ namespace OpenSim.Grid.MessagingServer
                 PresenceInformer friendlistupdater = new PresenceInformer();
                 friendlistupdater.presence1 = friendpresence;
                 friendlistupdater.presence2 = userpresence;
-                WaitCallback cb = friendlistupdater.go;
+                WaitCallback cb = new WaitCallback(friendlistupdater.go);
                 ThreadPool.QueueUserWorkItem(cb);
 
                 //SendRegionPresenceUpdate(friendpresence, userpresence);
             }
 
-            if ((uFriendListItem.FriendPerms & (uint) FriendRights.CanSeeOnline) != 0)
+            if ((uFriendListItem.FriendPerms & (uint)FriendRights.CanSeeOnline) != 0)
             {
                 if (!friendpresence.subscriptionData.Contains(userpresence.agentData.AgentID))
                 {
@@ -147,9 +147,9 @@ namespace OpenSim.Grid.MessagingServer
                 friendlistupdater.presence1 = userpresence;
                 friendlistupdater.presence2 = friendpresence;
 
-                WaitCallback cb2 = friendlistupdater.go;
+                WaitCallback cb2 = new WaitCallback(friendlistupdater.go);
                 ThreadPool.QueueUserWorkItem(cb2);
-
+                
                 //SendRegionPresenceUpdate(userpresence, friendpresence);
             }
         }
@@ -164,7 +164,7 @@ namespace OpenSim.Grid.MessagingServer
         {
             if (m_presence_BackReferences.Contains(friendID))
             {
-                List<LLUUID> presenseBackReferences = (List<LLUUID>) m_presence_BackReferences[friendID];
+                List<LLUUID> presenseBackReferences = (List<LLUUID>)m_presence_BackReferences[friendID];
                 if (!presenseBackReferences.Contains(agentID))
                 {
                     presenseBackReferences.Add(agentID);
@@ -188,7 +188,7 @@ namespace OpenSim.Grid.MessagingServer
         {
             if (m_presence_BackReferences.Contains(friendID))
             {
-                List<LLUUID> presenseBackReferences = (List<LLUUID>) m_presence_BackReferences[friendID];
+                List<LLUUID> presenseBackReferences = (List<LLUUID>)m_presence_BackReferences[friendID];
                 if (presenseBackReferences.Contains(agentID))
                 {
                     presenseBackReferences.Remove(agentID);
@@ -216,29 +216,29 @@ namespace OpenSim.Grid.MessagingServer
             {
                 if (m_presences.Contains(AgentID))
                 {
-                    AgentData = (UserPresenceData) m_presences[AgentID];
+                    AgentData = (UserPresenceData)m_presences[AgentID];
                 }
             }
 
             if (AgentData != null)
             {
-                AgentsNeedingNotification = AgentData.subscriptionData;
+                 AgentsNeedingNotification = AgentData.subscriptionData;
                 //lock (m_presence_BackReferences)
                 //{
-                //if (m_presence_BackReferences.Contains(AgentID))
-                //{
-                //AgentsNeedingNotification = (List<LLUUID>)m_presence_BackReferences[AgentID];
-                //}
+                    //if (m_presence_BackReferences.Contains(AgentID))
+                    //{
+                        //AgentsNeedingNotification = (List<LLUUID>)m_presence_BackReferences[AgentID];
+                    //}
                 //}
 
                 for (int i = 0; i < AgentsNeedingNotification.Count; i++)
                 {
                     // TODO: Do Region Notifications
-                    lock (m_presences)
+                    lock(m_presences)
                     {
                         if (m_presences.Contains(AgentsNeedingNotification[i]))
                         {
-                            friendd = (UserPresenceData) m_presences[AgentsNeedingNotification[i]];
+                            friendd = (UserPresenceData)m_presences[AgentsNeedingNotification[i]];
                         }
                     }
 
@@ -266,7 +266,7 @@ namespace OpenSim.Grid.MessagingServer
                         friendlistupdater.presence1 = AgentData;
                         friendlistupdater.presence2 = friendd;
 
-                        WaitCallback cb3 = friendlistupdater.go;
+                        WaitCallback cb3 = new WaitCallback(friendlistupdater.go);
                         ThreadPool.QueueUserWorkItem(cb3);
 
                         //SendRegionPresenceUpdate(AgentData, friendd);
@@ -276,7 +276,7 @@ namespace OpenSim.Grid.MessagingServer
                 }
             }
         }
-
+        
         #endregion
 
         #region UserServer Comms
@@ -298,17 +298,18 @@ namespace OpenSim.Grid.MessagingServer
                 parameters.Add(param);
                 XmlRpcRequest req = new XmlRpcRequest("get_user_friend_list", parameters);
                 XmlRpcResponse resp = req.Send(m_cfg.UserServerURL, 3000);
-                Hashtable respData = (Hashtable) resp.Value;
+                Hashtable respData = (Hashtable)resp.Value;
 
                 if (respData.Contains("avcount"))
                 {
                     buddylist = ConvertXMLRPCDataToFriendListItemList(respData);
                 }
+
             }
             catch (WebException e)
             {
                 m_log.Warn("Error when trying to fetch Avatar's friends list: " +
-                           e.Message);
+                                      e.Message);
                 // Return Empty list (no friends)
             }
             return buddylist;
@@ -322,16 +323,16 @@ namespace OpenSim.Grid.MessagingServer
         public List<FriendListItem> ConvertXMLRPCDataToFriendListItemList(Hashtable data)
         {
             List<FriendListItem> buddylist = new List<FriendListItem>();
-            int buddycount = Convert.ToInt32((string) data["avcount"]);
+            int buddycount = Convert.ToInt32((string)data["avcount"]);
 
             for (int i = 0; i < buddycount; i++)
             {
                 FriendListItem buddylistitem = new FriendListItem();
 
-                buddylistitem.FriendListOwner = new LLUUID((string) data["ownerID" + i]);
-                buddylistitem.Friend = new LLUUID((string) data["friendID" + i]);
-                buddylistitem.FriendListOwnerPerms = (uint) Convert.ToInt32((string) data["ownerPerms" + i]);
-                buddylistitem.FriendPerms = (uint) Convert.ToInt32((string) data["friendPerms" + i]);
+                buddylistitem.FriendListOwner = new LLUUID((string)data["ownerID" + i.ToString()]);
+                buddylistitem.Friend = new LLUUID((string)data["friendID" + i.ToString()]);
+                buddylistitem.FriendListOwnerPerms = (uint)Convert.ToInt32((string)data["ownerPerms" + i.ToString()]);
+                buddylistitem.FriendPerms = (uint)Convert.ToInt32((string)data["friendPerms" + i.ToString()]);
 
                 buddylist.Add(buddylistitem);
             }
@@ -349,7 +350,7 @@ namespace OpenSim.Grid.MessagingServer
         public XmlRpcResponse UserLoggedOn(XmlRpcRequest request)
         {
             m_log.Info("[LOGON]: User logged on, building indexes for user");
-            Hashtable requestData = (Hashtable) request.Params[0];
+            Hashtable requestData = (Hashtable)request.Params[0];
 
             //requestData["sendkey"] = serv.sendkey;
             //requestData["agentid"] = agentID.ToString();
@@ -363,13 +364,13 @@ namespace OpenSim.Grid.MessagingServer
             //requestData["lastname"] = lastname;
 
             AgentCircuitData agentData = new AgentCircuitData();
-            agentData.SessionID = new LLUUID((string) requestData["sessionid"]);
-            agentData.SecureSessionID = new LLUUID((string) requestData["secure_session_id"]);
-            agentData.firstname = (string) requestData["firstname"];
-            agentData.lastname = (string) requestData["lastname"];
-            agentData.AgentID = new LLUUID((string) requestData["agentid"]);
+            agentData.SessionID = new LLUUID((string)requestData["sessionid"]);
+            agentData.SecureSessionID = new LLUUID((string)requestData["secure_session_id"]);
+            agentData.firstname = (string)requestData["firstname"];
+            agentData.lastname = (string)requestData["lastname"];
+            agentData.AgentID = new LLUUID((string)requestData["agentid"]);
             agentData.circuitcode = Convert.ToUInt32(requestData["circuit_code"]);
-            agentData.CapsPath = (string) requestData["caps_path"];
+            agentData.CapsPath = (string)requestData["caps_path"];
 
             if (requestData.ContainsKey("child_agent") && requestData["child_agent"].Equals("1"))
             {
@@ -378,13 +379,13 @@ namespace OpenSim.Grid.MessagingServer
             else
             {
                 agentData.startpos =
-                    new LLVector3(Convert.ToUInt32(requestData["positionx"]),
+                     new LLVector3(Convert.ToUInt32(requestData["positionx"]),
                                   Convert.ToUInt32(requestData["positiony"]),
                                   Convert.ToUInt32(requestData["positionz"]));
                 agentData.child = false;
             }
 
-            ulong regionHandle = Convert.ToUInt64((string) requestData["regionhandle"]);
+            ulong regionHandle = Convert.ToUInt64((string)requestData["regionhandle"]);
 
             UserPresenceData up = new UserPresenceData();
             up.agentData = agentData;
@@ -397,7 +398,7 @@ namespace OpenSim.Grid.MessagingServer
 
             return new XmlRpcResponse();
         }
-
+        
         /// <summary>
         /// The UserServer got a Logoff message 
         /// Cleanup time for that user.  Send out presence notifications
@@ -406,9 +407,9 @@ namespace OpenSim.Grid.MessagingServer
         /// <returns></returns>
         public XmlRpcResponse UserLoggedOff(XmlRpcRequest request)
         {
-            Hashtable requestData = (Hashtable) request.Params[0];
-
-            LLUUID AgentID = new LLUUID((string) requestData["agentid"]);
+            Hashtable requestData = (Hashtable)request.Params[0];
+            
+            LLUUID AgentID = new LLUUID((string)requestData["agentid"]);
 
             ProcessLogOff(AgentID);
 
@@ -430,9 +431,9 @@ namespace OpenSim.Grid.MessagingServer
             RegionProfileData regionInfo = null;
             if (m_regionInfoCache.Contains(regionhandle))
             {
-                regionInfo = (RegionProfileData) m_regionInfoCache[regionhandle];
+                regionInfo = (RegionProfileData)m_regionInfoCache[regionhandle];
             }
-            else
+            else 
             {
                 regionInfo = RequestRegionInfo(regionhandle);
             }
@@ -446,8 +447,7 @@ namespace OpenSim.Grid.MessagingServer
         /// <param name="regionHandle"></param>
         /// <returns></returns>
         public RegionProfileData RequestRegionInfo(ulong regionHandle)
-        {
-            RegionProfileData regionProfile = null;
+        {   RegionProfileData regionProfile = null;
             try
             {
                 Hashtable requestData = new Hashtable();
@@ -457,8 +457,8 @@ namespace OpenSim.Grid.MessagingServer
                 SendParams.Add(requestData);
                 XmlRpcRequest GridReq = new XmlRpcRequest("simulator_data_request", SendParams);
                 XmlRpcResponse GridResp = GridReq.Send(m_cfg.GridServerURL, 3000);
-
-                Hashtable responseData = (Hashtable) GridResp.Value;
+                
+                Hashtable responseData = (Hashtable)GridResp.Value;
 
                 if (responseData.ContainsKey("error"))
                 {
@@ -466,23 +466,23 @@ namespace OpenSim.Grid.MessagingServer
                     return null;
                 }
 
-                uint regX = Convert.ToUInt32((string) responseData["region_locx"]);
-                uint regY = Convert.ToUInt32((string) responseData["region_locy"]);
-                string internalIpStr = (string) responseData["sim_ip"];
+                uint regX = Convert.ToUInt32((string)responseData["region_locx"]);
+                uint regY = Convert.ToUInt32((string)responseData["region_locy"]);
+                string internalIpStr = (string)responseData["sim_ip"];
                 uint port = Convert.ToUInt32(responseData["sim_port"]);
-                string externalUri = (string) responseData["sim_uri"];
+                string externalUri = (string)responseData["sim_uri"];
                 string neighbourExternalUri = externalUri;
 
                 regionProfile = new RegionProfileData();
-                regionProfile.httpPort = (uint) Convert.ToInt32((string) responseData["http_port"]);
+                regionProfile.httpPort = (uint)Convert.ToInt32((string)responseData["http_port"]);
                 regionProfile.httpServerURI = "http://" + internalIpStr + ":" + regionProfile.httpPort + "/";
                 regionProfile.regionHandle = Helpers.UIntsToLong((regX * Constants.RegionSize), (regY * Constants.RegionSize));
                 regionProfile.regionLocX = regX;
                 regionProfile.regionLocY = regY;
-
-                regionProfile.remotingPort = Convert.ToUInt32((string) responseData["remoting_port"]);
-                regionProfile.UUID = new LLUUID((string) responseData["region_UUID"]);
-                regionProfile.regionName = (string) responseData["region_name"];
+               
+                regionProfile.remotingPort = Convert.ToUInt32((string)responseData["remoting_port"]);
+                regionProfile.UUID = new LLUUID((string)responseData["region_UUID"]);
+                regionProfile.regionName = (string)responseData["region_name"];
                 lock (m_regionInfoCache)
                 {
                     if (!m_regionInfoCache.Contains(regionHandle))
@@ -494,31 +494,31 @@ namespace OpenSim.Grid.MessagingServer
             catch (WebException)
             {
                 m_log.Error("[GRID]: " +
-                            "Region lookup failed for: " + regionHandle +
+                            "Region lookup failed for: " + regionHandle.ToString() +
                             " - Is the GridServer down?");
                 return null;
             }
-
+           
             return regionProfile;
         }
 
-        public bool registerWithUserServer()
+        public bool registerWithUserServer ()
         {
             Hashtable UserParams = new Hashtable();
             // Login / Authentication
-
+            
             if (m_cfg.HttpSSL)
             {
                 UserParams["uri"] = "https://" + m_cfg.MessageServerIP + ":" + m_cfg.HttpPort;
             }
-            else
+            else 
             {
                 UserParams["uri"] = "http://" + m_cfg.MessageServerIP + ":" + m_cfg.HttpPort;
             }
 
             UserParams["recvkey"] = m_cfg.UserRecvKey;
             UserParams["sendkey"] = m_cfg.UserRecvKey;
-
+            
             // Package into an XMLRPC Request
             ArrayList SendParams = new ArrayList();
             SendParams.Add(UserParams);
@@ -530,13 +530,12 @@ namespace OpenSim.Grid.MessagingServer
             {
                 UserReq = new XmlRpcRequest("register_messageserver", SendParams);
                 UserResp = UserReq.Send(m_cfg.UserServerURL, 16000);
-            }
-            catch (Exception ex)
+            } catch (Exception ex)
             {
                 m_log.Error("Unable to connect to grid. Grid server not running?");
-                throw (ex);
+                throw(ex);
             }
-            Hashtable GridRespData = (Hashtable) UserResp.Value;
+            Hashtable GridRespData = (Hashtable)UserResp.Value;
             Hashtable griddatahash = GridRespData;
 
             // Process Response
@@ -584,7 +583,7 @@ namespace OpenSim.Grid.MessagingServer
                 m_log.Error("Unable to connect to grid. Grid server not running?");
                 throw (ex);
             }
-            Hashtable UserRespData = (Hashtable) UserResp.Value;
+            Hashtable UserRespData = (Hashtable)UserResp.Value;
             Hashtable userdatahash = UserRespData;
 
             // Process Response
@@ -600,4 +599,4 @@ namespace OpenSim.Grid.MessagingServer
 
         #endregion
     }
-}
+}

+ 8 - 3
OpenSim/Grid/MessagingServer/PresenceInformer.cs

@@ -35,16 +35,21 @@ namespace OpenSim.Grid.MessagingServer
 {
     public class PresenceInformer
     {
+        public UserPresenceData presence1 = null;
+        public UserPresenceData presence2 = null;
         private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
-        public UserPresenceData presence1;
-        public UserPresenceData presence2;
 
+        public PresenceInformer()
+        {
+
+        }
         public void go(object o)
         {
             if (presence1 != null && presence2 != null)
             {
                 SendRegionPresenceUpdate(presence1, presence2);
             }
+
         }
 
         /// <summary>
@@ -69,4 +74,4 @@ namespace OpenSim.Grid.MessagingServer
             XmlRpcResponse RegionResp = RegionReq.Send(whichRegion.httpServerURI, 6000);
         }
     }
-}
+}

+ 7 - 3
OpenSim/Grid/MessagingServer/UserPresenceData.cs

@@ -36,9 +36,13 @@ namespace OpenSim.Grid.MessagingServer
     public class UserPresenceData
     {
         public AgentCircuitData agentData = new AgentCircuitData();
-        public List<FriendListItem> friendData = new List<FriendListItem>();
-        public string httpURI = String.Empty;
         public RegionProfileData regionData = new RegionProfileData();
+        public string httpURI = String.Empty;
+        public List<FriendListItem> friendData = new List<FriendListItem> ();
         public List<LLUUID> subscriptionData = new List<LLUUID>();
+
+        public UserPresenceData()
+        {
+        }
     }
-}
+}

+ 1 - 1
OpenSim/Grid/MessagingServer/WorkUnitBase.cs

@@ -30,4 +30,4 @@ namespace OpenSim.Grid.MessagingServer
     public class WorkUnitBase
     {
     }
-}
+}

+ 1 - 1
OpenSim/Grid/MessagingServer/WorkUnitPresenceUpdate.cs

@@ -30,4 +30,4 @@ namespace OpenSim.Grid.MessagingServer
     public class WorkUnitPresenceUpdate : WorkUnitBase
     {
     }
-}
+}

+ 14 - 10
OpenSim/Grid/MessagingServer/XMPPHTTPService.cs

@@ -48,26 +48,28 @@ namespace OpenSim.Grid.MessagingServer
             : base("GET", "/presence")
         {
             m_log.Info("[REST]: In Get Request");
+            
         }
-
+        
         public override byte[] Handle(string path, Stream request)
         {
             string param = GetParam(path);
             byte[] result = new byte[] {};
             try
             {
-                string[] p = param.Split(new[] {'/', '?', '&'}, StringSplitOptions.RemoveEmptyEntries);
+                string[] p = param.Split(new char[] {'/', '?', '&'}, StringSplitOptions.RemoveEmptyEntries);
 
                 if (p.Length > 0)
                 {
-                    LLUUID assetID = null;
-
+                    LLUUID assetID = null;    
+                    
                     if (!LLUUID.TryParse(p[0], out assetID))
                     {
                         m_log.InfoFormat(
                             "[REST]: GET:/presence ignoring request with malformed UUID {0}", p[0]);
                         return result;
                     }
+
                 }
             }
             catch (Exception e)
@@ -82,11 +84,6 @@ namespace OpenSim.Grid.MessagingServer
     {
         private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
 
-        public PostXMPPStreamHandler()
-            : base("POST", "/presence")
-        {
-        }
-
         public override byte[] Handle(string path, Stream request)
         {
             string param = GetParam(path);
@@ -100,5 +97,12 @@ namespace OpenSim.Grid.MessagingServer
 
             return new byte[] {};
         }
+
+        public PostXMPPStreamHandler()
+            : base("POST", "/presence")
+        {
+            
+        }
+
     }
-}
+}

+ 3 - 3
OpenSim/Grid/ScriptServer/Application.cs

@@ -39,7 +39,7 @@ namespace OpenSim.Grid.ScriptServer
             XmlConfigurator.Configure();
 
             AppDomain.CurrentDomain.UnhandledException +=
-                CurrentDomain_UnhandledException;
+                new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
 
             // Application is starting
             SE = new ScriptServerMain();
@@ -50,9 +50,9 @@ namespace OpenSim.Grid.ScriptServer
             Console.WriteLine(String.Empty);
             Console.WriteLine("APPLICATION EXCEPTION DETECTED");
             Console.WriteLine(String.Empty);
-            Console.WriteLine("Application is terminating: " + e.IsTerminating);
+            Console.WriteLine("Application is terminating: " + e.IsTerminating.ToString());
             //Console.WriteLine("Exception:");
             //Console.WriteLine(e.ExceptionObject.ToString());
         }
     }
-}
+}

+ 2 - 2
OpenSim/Grid/ScriptServer/FakeScene.cs

@@ -34,7 +34,7 @@ using OpenSim.Region.Environment.Scenes;
 
 namespace OpenSim.Grid.ScriptServer
 {
-    public class FakeScene : Scene
+    public class FakeScene: Scene
     {
         public FakeScene(RegionInfo regInfo, AgentCircuitManager authen, PermissionManager permissionManager,
                          CommunicationsManager commsMan, SceneCommunicationService sceneGridService,
@@ -48,4 +48,4 @@ namespace OpenSim.Grid.ScriptServer
 
         // What does a scene have to do? :P
     }
-}
+}

+ 1 - 1
OpenSim/Grid/ScriptServer/Properties/AssemblyInfo.cs

@@ -60,4 +60,4 @@ using System.Runtime.InteropServices;
 //
 
 [assembly : AssemblyVersion("1.0.0.0")]
-[assembly : AssemblyFileVersion("1.0.0.0")]
+[assembly : AssemblyFileVersion("1.0.0.0")]

+ 1 - 5
OpenSim/Grid/ScriptServer/RemotingObject.cs

@@ -34,13 +34,9 @@ namespace OpenSim.Grid.ScriptServer
     {
         // This object will be exposed over remoting. It is a singleton, so it exists only in as one instance.
 
-        #region ServerRemotingObject Members
-
         ScriptServerInterfaces.RemoteEvents ScriptServerInterfaces.ServerRemotingObject.Events()
         {
             return ScriptServerMain.Engine.EventManager();
         }
-
-        #endregion
     }
-}
+}

+ 4 - 5
OpenSim/Grid/ScriptServer/RemotingServer.cs

@@ -31,10 +31,9 @@ using System.Runtime.Remoting.Channels.Tcp;
 
 namespace OpenSim.Grid.ScriptServer
 {
-    internal class RemotingServer
+    class RemotingServer
     {
-        private readonly TcpChannel channel;
-
+        TcpChannel channel;
         public RemotingServer(int port, string instanceName)
         {
             // Create an instance of a channel
@@ -43,9 +42,9 @@ namespace OpenSim.Grid.ScriptServer
 
             // Register as an available service with the name HelloWorld
             RemotingConfiguration.RegisterWellKnownServiceType(
-                typeof (RemotingObject),
+                typeof(RemotingObject),
                 instanceName,
                 WellKnownObjectMode.Singleton);
         }
     }
-}
+}

+ 0 - 5
OpenSim/Grid/ScriptServer/ScriptServer/Region/RegionBase.cs

@@ -32,13 +32,8 @@ namespace OpenSim.Grid.ScriptServer.ScriptServer.Region
         // These are events that the region needs to have
 
         // TEMP: Using System.Delegate -- needs replacing with a real delegate
-
-        #region Delegates
-
         public delegate void DefaultDelegate();
 
-        #endregion
-
         public event DefaultDelegate onScriptRez;
         public event DefaultDelegate onstate_entry;
         public event DefaultDelegate onstate_exit;

+ 1 - 1
OpenSim/Grid/ScriptServer/ScriptServer/Region/RegionConnectionManager.cs

@@ -29,8 +29,8 @@ namespace OpenSim.Grid.ScriptServer.ScriptServer.Region
 {
     public class RegionConnectionManager : RegionBase
     {
-        private object m_Connection;
         private ScriptServerMain m_ScriptServerMain;
+        private object m_Connection;
 
         public RegionConnectionManager(ScriptServerMain scm, object Connection)
         {

+ 4 - 2
OpenSim/Grid/ScriptServer/ScriptServer/RegionCommManager.cs

@@ -34,10 +34,12 @@ namespace OpenSim.Grid.ScriptServer.ScriptServer
 {
     internal class RegionCommManager
     {
-        private readonly ScriptServerMain m_ScriptServerMain;
-        private readonly List<RegionConnectionManager> Regions = new List<RegionConnectionManager>();
         private Thread listenThread;
 
+        private List<RegionConnectionManager> Regions = new List<RegionConnectionManager>();
+
+        private ScriptServerMain m_ScriptServerMain;
+
         public RegionCommManager(ScriptServerMain scm)
         {
             m_ScriptServerMain = scm;

+ 3 - 3
OpenSim/Grid/ScriptServer/ScriptServer/ScriptEngineLoader.cs

@@ -51,7 +51,7 @@ namespace OpenSim.Grid.ScriptServer.ScriptServer
             {
                 m_log.Error("[ScriptEngine]: " +
                             "Error loading assembly \"" + EngineName + "\": " + e.Message + ", " +
-                            e.StackTrace);
+                            e.StackTrace.ToString());
             }
             return ret;
         }
@@ -104,7 +104,7 @@ namespace OpenSim.Grid.ScriptServer.ScriptServer
             ScriptServerInterfaces.ScriptEngine ret;
             //try
             //{
-            ret = (ScriptServerInterfaces.ScriptEngine) Activator.CreateInstance(t);
+            ret = (ScriptServerInterfaces.ScriptEngine)Activator.CreateInstance(t);
             //}
             //catch (Exception e)
             //{
@@ -114,4 +114,4 @@ namespace OpenSim.Grid.ScriptServer.ScriptServer
             return ret;
         }
     }
-}
+}

+ 3 - 3
OpenSim/Grid/ScriptServer/ScriptServer/ScriptEnginesManager.cs

@@ -32,8 +32,8 @@ namespace OpenSim.Grid.ScriptServer.ScriptServer
 {
     internal class ScriptEngineManager
     {
-        private readonly ScriptEngineLoader ScriptEngineLoader;
-        private readonly List<ScriptServerInterfaces.ScriptEngine> scriptEngines = new List<ScriptServerInterfaces.ScriptEngine>();
+        private ScriptEngineLoader ScriptEngineLoader;
+        private List<ScriptServerInterfaces.ScriptEngine> scriptEngines = new List<ScriptServerInterfaces.ScriptEngine>();
         private ScriptServerMain m_ScriptServerMain;
 
         // Initialize
@@ -58,4 +58,4 @@ namespace OpenSim.Grid.ScriptServer.ScriptServer
             return sei;
         }
     }
-}
+}

+ 8 - 8
OpenSim/Grid/ScriptServer/ScriptServerMain.cs

@@ -44,20 +44,20 @@ namespace OpenSim.Grid.ScriptServer
         //
         // Root object. Creates objects used.
         //
+        private int listenPort = 8010;
 
         // TEMP
         public static ScriptServerInterfaces.ScriptEngine Engine;
-        private int listenPort = 8010;
         //public static FakeScene m_Scene = new FakeScene(null,null,null,null,null,null,null,null,null,false, false, false);
 
         // Objects we use
+        internal RegionCommManager RegionScriptDaemon; // Listen for incoming from region
+        internal ScriptEngineManager ScriptEngines; // Loads scriptengines
         //internal RemotingServer m_RemotingServer;
         internal TCPServer m_TCPServer;
-        internal RegionCommManager RegionScriptDaemon; // Listen for incoming from region
         internal TRPC_Remote RPC;
-        internal ScriptEngineManager ScriptEngines; // Loads scriptengines
 
-        public ScriptServerMain()
+                public ScriptServerMain()
         {
             m_console = CreateConsole();
 
@@ -68,13 +68,13 @@ namespace OpenSim.Grid.ScriptServer
             Engine = ScriptEngines.LoadEngine("DotNetEngine");
 
             Engine.InitializeEngine(null, null, false, Engine.GetScriptManager());
-
+                    
 
             // Set up server
             //m_RemotingServer = new RemotingServer(listenPort, "DotNetEngine");
             m_TCPServer = new TCPServer(listenPort);
             RPC = new TRPC_Remote(m_TCPServer);
-            RPC.ReceiveCommand += RPC_ReceiveCommand;
+                    RPC.ReceiveCommand += new TRPC_Remote.ReceiveCommandDelegate(RPC_ReceiveCommand);
             m_TCPServer.StartListen();
 
             Console.ReadLine();
@@ -93,7 +93,7 @@ namespace OpenSim.Grid.ScriptServer
 
             if (Command == "OnRezScript")
             {
-                Engine.EventManager().OnRezScript((uint) p[0], new LLUUID((string) p[1]), (string) p[2]);
+                Engine.EventManager().OnRezScript((uint)p[0], new LLUUID((string)p[1]), (string)p[2]);
             }
         }
 
@@ -106,4 +106,4 @@ namespace OpenSim.Grid.ScriptServer
             return new ConsoleBase("ScriptServer", this);
         }
     }
-}
+}

+ 72 - 73
OpenSim/Grid/UserServer/Main.cs

@@ -48,61 +48,12 @@ namespace OpenSim.Grid.UserServer
         private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
 
         private UserConfig Cfg;
-        private LLUUID m_lastCreatedUser = LLUUID.Random();
-
-        public UserLoginService m_loginService;
-        public MessageServersConnector m_messagesService;
+        
         public UserManager m_userManager;
+        public UserLoginService m_loginService;
+        public MessageServersConnector m_messagesService;        
 
-        private OpenUser_Main()
-        {
-            m_console = new ConsoleBase("OpenUser", this);
-            MainConsole.Instance = m_console;
-        }
-
-        #region conscmd_callback Members
-
-        public override void RunCmd(string cmd, string[] cmdparams)
-        {
-            base.RunCmd(cmd, cmdparams);
-
-            switch (cmd)
-            {
-                case "help":
-                    m_console.Notice("create user - create a new user");
-                    m_console.Notice("stats - statistical information for this server");
-                    m_console.Notice("shutdown - shutdown the grid (USE CAUTION!)");
-                    break;
-
-                case "create":
-                    do_create(cmdparams[0]);
-                    break;
-
-                case "shutdown":
-                    m_loginService.OnUserLoggedInAtLocation -= NotifyMessageServersUserLoggedInToLocation;
-                    m_console.Close();
-                    Environment.Exit(0);
-                    break;
-
-                case "stats":
-                    m_console.Notice(StatsManager.UserStats.Report());
-                    break;
-
-                case "test-inventory":
-                    //  RestObjectPosterResponse<List<InventoryFolderBase>> requester = new RestObjectPosterResponse<List<InventoryFolderBase>>();
-                    // requester.ReturnResponseVal = TestResponse;
-                    // requester.BeginPostObject<LLUUID>(m_userManager._config.InventoryUrl + "RootFolders/", m_lastCreatedUser);
-                    SynchronousRestObjectPoster.BeginPostObject<LLUUID, List<InventoryFolderBase>>("POST",
-                                                                                                   m_userManager.
-                                                                                                       _config.
-                                                                                                       InventoryUrl +
-                                                                                                   "RootFolders/",
-                                                                                                   m_lastCreatedUser);
-                    break;
-            }
-        }
-
-        #endregion
+        private LLUUID m_lastCreatedUser = LLUUID.Random();
 
         [STAThread]
         public static void Main(string[] args)
@@ -117,6 +68,12 @@ namespace OpenSim.Grid.UserServer
             userserver.Work();
         }
 
+        private OpenUser_Main()
+        {
+            m_console = new ConsoleBase("OpenUser", this);
+            MainConsole.Instance = m_console;
+        }
+
         private void Work()
         {
             m_console.Notice("Enter help for a list of commands\n");
@@ -130,16 +87,16 @@ namespace OpenSim.Grid.UserServer
         public void Startup()
         {
             Cfg = new UserConfig("USER SERVER", (Path.Combine(Util.configDir(), "UserServer_Config.xml")));
-
+            
             StatsManager.StartCollectingUserStats();
 
             m_log.Info("[REGION]: Establishing data connection");
-            m_userManager = new UserManager();
+            m_userManager = new UserManager();            
             m_userManager._config = Cfg;
-            m_userManager.AddPlugin(Cfg.DatabaseProvider);
+            m_userManager.AddPlugin(Cfg.DatabaseProvider);            
 
             m_loginService = new UserLoginService(
-                m_userManager, new LibraryRootFolder(), Cfg, Cfg.DefaultStartupMsg);
+                 m_userManager, new LibraryRootFolder(), Cfg, Cfg.DefaultStartupMsg);
 
             m_messagesService = new MessageServersConnector();
 
@@ -147,7 +104,7 @@ namespace OpenSim.Grid.UserServer
             m_userManager.OnLogOffUser += NotifyMessageServersUserLoggOff;
 
             m_log.Info("[REGION]: Starting HTTP process");
-
+            
             m_httpServer = new BaseHttpServer(Cfg.HttpPort);
             AddHttpHandlers();
             m_httpServer.Start();
@@ -160,7 +117,7 @@ namespace OpenSim.Grid.UserServer
             m_httpServer.AddXmlRPCHandler("login_to_simulator", m_loginService.XmlRpcLoginMethod);
 
             m_httpServer.AddHTTPHandler("login", m_loginService.ProcessHTMLLogin);
-
+            
             m_httpServer.SetLLSDHandler(m_loginService.LLSDLoginMethod);
 
             m_httpServer.AddXmlRPCHandler("get_user_by_name", m_userManager.XmlRPCGetUserMethodName);
@@ -171,7 +128,7 @@ namespace OpenSim.Grid.UserServer
             m_httpServer.AddXmlRPCHandler("update_user_friend_perms", m_userManager.XmlRpcResponseXmlRPCUpdateUserFriendPerms);
             m_httpServer.AddXmlRPCHandler("get_user_friend_list", m_userManager.XmlRpcResponseXmlRPCGetUserFriendList);
             m_httpServer.AddXmlRPCHandler("logout_of_simulator", m_userManager.XmlRPCLogOffUserMethodUUID);
-
+           
             // Message Server ---> User Server
             m_httpServer.AddXmlRPCHandler("register_messageserver", m_messagesService.XmlRPCRegisterMessageServer);
             m_httpServer.AddXmlRPCHandler("agent_change_region", m_messagesService.XmlRPCUserMovedtoRegion);
@@ -206,17 +163,17 @@ namespace OpenSim.Grid.UserServer
                     {
                         m_log.ErrorFormat(
                             "[USERS]: A user with the name {0} {1} already exists!", tempfirstname, templastname);
-
+                    
                         break;
                     }
-
+                    
                     tempMD5Passwd = Util.Md5Hash(Util.Md5Hash(tempMD5Passwd) + ":" + String.Empty);
 
                     LLUUID userID = new LLUUID();
                     try
                     {
                         userID = m_userManager.AddUserProfile(tempfirstname, templastname, tempMD5Passwd, regX, regY);
-                    }
+                    } 
                     catch (Exception ex)
                     {
                         m_log.ErrorFormat("[USERS]: Error creating user: {0}", ex.ToString());
@@ -224,35 +181,76 @@ namespace OpenSim.Grid.UserServer
 
                     try
                     {
-                        bool created
+                        bool created 
                             = SynchronousRestObjectPoster.BeginPostObject<Guid, bool>(
                                 "POST", m_userManager._config.InventoryUrl + "CreateInventory/", userID.UUID);
-
+                    
                         if (!created)
                         {
                             throw new Exception(
                                 String.Format(
                                     "The inventory creation request for user {0} did not succeed."
-                                    + "  Please contact your inventory service provider for more information.",
+                                        + "  Please contact your inventory service provider for more information.", 
                                     userID));
                         }
+                       
                     }
                     catch (WebException e)
                     {
                         m_log.ErrorFormat(
-                            "[USERS]: Could not contact the inventory service at {0} to create an inventory for {1}",
+                            "[USERS]: Could not contact the inventory service at {0} to create an inventory for {1}", 
                             m_userManager._config.InventoryUrl + "CreateInventory/", userID.UUID);
                     }
                     catch (Exception e)
                     {
                         m_log.ErrorFormat("[USERS]: Error creating inventory for user: {0}", e);
                     }
-
+                
                     m_lastCreatedUser = userID;
                     break;
             }
         }
 
+        public override void RunCmd(string cmd, string[] cmdparams)
+        {
+            base.RunCmd(cmd, cmdparams);
+            
+            switch (cmd)
+            {
+                case "help":
+                    m_console.Notice("create user - create a new user");
+                    m_console.Notice("stats - statistical information for this server");                    
+                    m_console.Notice("shutdown - shutdown the grid (USE CAUTION!)");
+                    break;
+
+                case "create":
+                    do_create(cmdparams[0]);
+                    break;
+
+                case "shutdown":
+                    m_loginService.OnUserLoggedInAtLocation -= NotifyMessageServersUserLoggedInToLocation;
+                    m_console.Close();
+                    Environment.Exit(0);
+                    break;
+                    
+                case "stats":
+                    m_console.Notice(StatsManager.UserStats.Report());
+                    break;                    
+
+                case "test-inventory":
+                    //  RestObjectPosterResponse<List<InventoryFolderBase>> requester = new RestObjectPosterResponse<List<InventoryFolderBase>>();
+                    // requester.ReturnResponseVal = TestResponse;
+                    // requester.BeginPostObject<LLUUID>(m_userManager._config.InventoryUrl + "RootFolders/", m_lastCreatedUser);
+                    SynchronousRestObjectPoster.BeginPostObject<LLUUID, List<InventoryFolderBase>>("POST",
+                                                                                                   m_userManager.
+                                                                                                       _config.
+                                                                                                       InventoryUrl +
+                                                                                                   "RootFolders/",
+                                                                                                   m_lastCreatedUser);
+                    break;
+            }
+        }
+
         public void TestResponse(List<InventoryFolderBase> resp)
         {
             m_console.Notice("response got");
@@ -264,11 +262,12 @@ namespace OpenSim.Grid.UserServer
         }
 
         public void NotifyMessageServersUserLoggedInToLocation(LLUUID agentID, LLUUID sessionID, LLUUID RegionID,
-                                                               ulong regionhandle, float positionX, float positionY,
-                                                               float positionZ, string firstname, string lastname)
+                                                                ulong regionhandle, float positionX, float positionY, 
+                                                                float positionZ, string firstname, string lastname)
         {
-            m_messagesService.TellMessageServersAboutUser(agentID, sessionID, RegionID, regionhandle, positionX,
-                                                          positionY, positionZ, firstname, lastname);
+            
+            m_messagesService.TellMessageServersAboutUser( agentID, sessionID, RegionID, regionhandle, positionX,
+                positionY,  positionZ, firstname, lastname);
         }
     }
-}
+}

+ 34 - 36
OpenSim/Grid/UserServer/MessageServersConnector.cs

@@ -41,12 +41,12 @@ namespace OpenSim.Grid.UserServer
         private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
 
         public Dictionary<string, MessageServerInfo> MessageServers;
-
+        
         public MessageServersConnector()
         {
             MessageServers = new Dictionary<string, MessageServerInfo>();
         }
-
+        
         public void RegisterMessageServer(string URI, MessageServerInfo serverData)
         {
             lock (MessageServers)
@@ -55,7 +55,7 @@ namespace OpenSim.Grid.UserServer
                     MessageServers.Add(URI, serverData);
             }
         }
-
+        
         public void DeRegisterMessageServer(string URI)
         {
             lock (MessageServers)
@@ -64,7 +64,7 @@ namespace OpenSim.Grid.UserServer
                     MessageServers.Remove(URI);
             }
         }
-
+        
         public void AddResponsibleRegion(string URI, ulong regionhandle)
         {
             if (!MessageServers.ContainsKey(URI))
@@ -76,9 +76,8 @@ namespace OpenSim.Grid.UserServer
                 MessageServerInfo msginfo = MessageServers["URI"];
                 msginfo.responsibleForRegions.Add(regionhandle);
                 MessageServers["URI"] = msginfo;
-            }
+            }   
         }
-
         public void RemoveResponsibleRegion(string URI, ulong regionhandle)
         {
             if (!MessageServers.ContainsKey(URI))
@@ -93,20 +92,20 @@ namespace OpenSim.Grid.UserServer
                     msginfo.responsibleForRegions.Remove(regionhandle);
                     MessageServers["URI"] = msginfo;
                 }
-            }
-        }
+            }   
 
+        }
         public XmlRpcResponse XmlRPCRegisterMessageServer(XmlRpcRequest request)
         {
             XmlRpcResponse response = new XmlRpcResponse();
-            Hashtable requestData = (Hashtable) request.Params[0];
+            Hashtable requestData = (Hashtable)request.Params[0];
             Hashtable responseData = new Hashtable();
 
             if (requestData.Contains("uri"))
             {
-                string URI = (string) requestData["uri"];
-                string sendkey = (string) requestData["sendkey"];
-                string recvkey = (string) requestData["recvkey"];
+                string URI = (string)requestData["uri"];
+                string sendkey=(string)requestData["sendkey"];
+                string recvkey=(string)requestData["recvkey"];
                 MessageServerInfo m = new MessageServerInfo();
                 m.URI = URI;
                 m.sendkey = sendkey;
@@ -117,16 +116,15 @@ namespace OpenSim.Grid.UserServer
             }
             return response;
         }
-
         public XmlRpcResponse XmlRPCDeRegisterMessageServer(XmlRpcRequest request)
         {
             XmlRpcResponse response = new XmlRpcResponse();
-            Hashtable requestData = (Hashtable) request.Params[0];
+            Hashtable requestData = (Hashtable)request.Params[0];
             Hashtable responseData = new Hashtable();
 
             if (requestData.Contains("uri"))
             {
-                string URI = (string) requestData["uri"];
+                string URI = (string)requestData["uri"];
 
                 DeRegisterMessageServer(URI);
                 responseData["responsestring"] = "TRUE";
@@ -134,24 +132,23 @@ namespace OpenSim.Grid.UserServer
             }
             return response;
         }
-
         public XmlRpcResponse XmlRPCUserMovedtoRegion(XmlRpcRequest request)
         {
             XmlRpcResponse response = new XmlRpcResponse();
-            Hashtable requestData = (Hashtable) request.Params[0];
+            Hashtable requestData = (Hashtable)request.Params[0];
             Hashtable responseData = new Hashtable();
 
             if (requestData.Contains("fromuri"))
             {
-                string sURI = (string) requestData["fromuri"];
-                string sagentID = (string) requestData["agentid"];
-                string ssessionID = (string) requestData["sessionid"];
-                string scurrentRegionID = (string) requestData["regionid"];
-                string sregionhandle = (string) requestData["regionhandle"];
-                string scurrentpos = (string) requestData["currentpos"];
+                string sURI = (string)requestData["fromuri"];
+                string sagentID = (string)requestData["agentid"];
+                string ssessionID = (string)requestData["sessionid"];
+                string scurrentRegionID = (string)requestData["regionid"];
+                string sregionhandle = (string)requestData["regionhandle"];
+                string scurrentpos = (string)requestData["currentpos"];
                 //LLVector3.TryParse((string)reader["currentPos"], out retval.currentPos);
                 // TODO: Okay now raise event so the user server can pass this data to the Usermanager
-
+                
                 responseData["responsestring"] = "TRUE";
                 response.Value = responseData;
             }
@@ -159,7 +156,7 @@ namespace OpenSim.Grid.UserServer
         }
 
         public void TellMessageServersAboutUser(LLUUID agentID, LLUUID sessionID, LLUUID RegionID,
-                                                ulong regionhandle, float positionX, float positionY,
+                                                ulong regionhandle, float positionX, float positionY, 
                                                 float positionZ, string firstname, string lastname)
         {
             // Loop over registered Message Servers ( AND THERE WILL BE MORE THEN ONE :D )
@@ -176,8 +173,8 @@ namespace OpenSim.Grid.UserServer
                 foreach (MessageServerInfo serv in MessageServers.Values)
                 {
                     NotifyMessageServerAboutUser(serv, agentID, sessionID, RegionID,
-                                                 regionhandle, positionX, positionY, positionZ,
-                                                 firstname, lastname);
+                                                regionhandle, positionX, positionY, positionZ,
+                                                firstname, lastname);
                 }
             }
         }
@@ -194,10 +191,10 @@ namespace OpenSim.Grid.UserServer
 //                {
 //                    m_log.Debug("[MSGCONNECTOR]: No Message Servers registered, ignoring");
 //                }
-                    foreach (MessageServerInfo serv in MessageServers.Values)
-                    {
-                        NotifyMessageServerAboutUserLogoff(serv, agentID);
-                    }
+                foreach (MessageServerInfo serv in MessageServers.Values)
+                {
+                    NotifyMessageServerAboutUserLogoff(serv,agentID);
+                }
             }
         }
 
@@ -221,10 +218,10 @@ namespace OpenSim.Grid.UserServer
             m_log.Info("[LOGOUT]: Notified : " + serv.URI + " about user logout");
         }
 
-        private void NotifyMessageServerAboutUser(MessageServerInfo serv,
-                                                  LLUUID agentID, LLUUID sessionID, LLUUID RegionID,
-                                                  ulong regionhandle, float positionX, float positionY, float positionZ,
-                                                  string firstname, string lastname)
+        private void NotifyMessageServerAboutUser(MessageServerInfo serv, 
+                                                    LLUUID agentID, LLUUID sessionID, LLUUID RegionID,
+                                                    ulong regionhandle, float positionX, float positionY, float positionZ, 
+                                                    string firstname, string lastname)
         {
             Hashtable reqparams = new Hashtable();
             reqparams["sendkey"] = serv.sendkey;
@@ -253,6 +250,7 @@ namespace OpenSim.Grid.UserServer
             {
                 m_log.Warn("[MSGCONNECTOR]: Unable to notify Message Server about login.  Presence might be borked for this user");
             }
+            
         }
     }
-}
+}

+ 1 - 1
OpenSim/Grid/UserServer/Properties/AssemblyInfo.cs

@@ -60,4 +60,4 @@ using System.Runtime.InteropServices;
 //
 
 [assembly : AssemblyVersion("1.0.0.0")]
-[assembly : AssemblyFileVersion("1.0.0.0")]
+[assembly : AssemblyFileVersion("1.0.0.0")]

+ 56 - 62
OpenSim/Grid/UserServer/UserLoginService.cs

@@ -41,26 +41,26 @@ using OpenSim.Framework.Servers;
 namespace OpenSim.Grid.UserServer
 {
     public delegate void UserLoggedInAtLocation(LLUUID agentID, LLUUID sessionID, LLUUID RegionID,
-                                                ulong regionhandle, float positionX, float positionY, float positionZ, string firstname, string lastname);
+    ulong regionhandle, float positionX, float positionY, float positionZ, string firstname, string lastname);
 
     public class UserLoginService : LoginService
     {
         private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
 
-        private UserLoggedInAtLocation handlerUserLoggedInAtLocation;
+        public event UserLoggedInAtLocation OnUserLoggedInAtLocation;
 
+        private UserLoggedInAtLocation handlerUserLoggedInAtLocation = null;
+       
         public UserConfig m_config;
 
         public UserLoginService(
-            UserManagerBase userManager, LibraryRootFolder libraryRootFolder,
+            UserManagerBase userManager, LibraryRootFolder libraryRootFolder, 
             UserConfig config, string welcomeMess)
             : base(userManager, libraryRootFolder, welcomeMess)
         {
             m_config = config;
         }
 
-        public event UserLoggedInAtLocation OnUserLoggedInAtLocation;
-
         /// <summary>
         /// Customises the login response and fills in missing values.
         /// </summary>
@@ -95,8 +95,7 @@ namespace OpenSim.Grid.UserServer
                 else
                 {
                     string[] startLocationRequestParsed = Util.ParseStartLocationRequest(startLocationRequest);
-                    m_log.Info("[DEBUGLOGINPARSE]: 1:" + startLocationRequestParsed[0] + ", 2:" + startLocationRequestParsed[1] + ", 3:" +
-                               startLocationRequestParsed[2] + ", 4:" + startLocationRequestParsed[3]);
+                    m_log.Info("[DEBUGLOGINPARSE]: 1:" + startLocationRequestParsed[0] + ", 2:" + startLocationRequestParsed[1] + ", 3:" + startLocationRequestParsed[2] + ", 4:" + startLocationRequestParsed[3]);
                     if (startLocationRequestParsed[0] == "last")
                     {
                         // TODO: Parse out startlocationrequest string in the format; 'uri:RegionName&X&Y&Z'
@@ -109,9 +108,9 @@ namespace OpenSim.Grid.UserServer
                     {
                         m_log.Info("[LOGIN]: Looking up Sim: " + startLocationRequestParsed[0]);
                         SimInfo =
-                            RegionProfileData.RequestSimProfileData(
-                                startLocationRequestParsed[0], m_config.GridServerURL,
-                                m_config.GridSendKey, m_config.GridRecvKey);
+                        RegionProfileData.RequestSimProfileData(
+                            startLocationRequestParsed[0], m_config.GridServerURL,
+                            m_config.GridSendKey, m_config.GridRecvKey);
 
                         if (SimInfo == null)
                         {
@@ -120,9 +119,7 @@ namespace OpenSim.Grid.UserServer
                                 RegionProfileData.RequestSimProfileData(
                                     theUser.HomeRegion, m_config.GridServerURL,
                                     m_config.GridSendKey, m_config.GridRecvKey);
-                        }
-                        else
-                        {
+                        } else {
                             start_x = Convert.ToInt32(startLocationRequestParsed[1]);
                             start_y = Convert.ToInt32(startLocationRequestParsed[2]);
                             start_z = Convert.ToInt32(startLocationRequestParsed[3]);
@@ -133,30 +130,30 @@ namespace OpenSim.Grid.UserServer
                 // Customise the response
                 //CFK: This is redundant and the next message should always appear.
                 //CFK: m_log.Info("[LOGIN]: Home Location");
-                response.Home = "{'region_handle':[r" + (SimInfo.regionLocX * Constants.RegionSize) + ",r" +
-                                (SimInfo.regionLocY * Constants.RegionSize) + "], " +
-                                "'position':[r" + theUser.HomeLocation.X + ",r" +
-                                theUser.HomeLocation.Y + ",r" + theUser.HomeLocation.Z + "], " +
-                                "'look_at':[r" + theUser.HomeLocation.X + ",r" +
-                                theUser.HomeLocation.Y + ",r" + theUser.HomeLocation.Z + "]}";
+                response.Home = "{'region_handle':[r" + (SimInfo.regionLocX * Constants.RegionSize).ToString() + ",r" +
+                                (SimInfo.regionLocY * Constants.RegionSize).ToString() + "], " +
+                                "'position':[r" + theUser.HomeLocation.X.ToString() + ",r" +
+                                theUser.HomeLocation.Y.ToString() + ",r" + theUser.HomeLocation.Z.ToString() + "], " +
+                                "'look_at':[r" + theUser.HomeLocation.X.ToString() + ",r" +
+                                theUser.HomeLocation.Y.ToString() + ",r" + theUser.HomeLocation.Z.ToString() + "]}";
 
                 // Destination
                 //CFK: The "Notifying" message always seems to appear, so subsume the data from this message into 
                 //CFK: the next one for X & Y and comment this one.
                 //CFK: m_log.Info("[LOGIN]: CUSTOMISERESPONSE: Region X: " + SimInfo.regionLocX + 
                 //CFK: "; Region Y: " + SimInfo.regionLocY);
-                response.SimAddress = Util.GetHostFromDNS(SimInfo.serverURI.Split(new[] {'/', ':'})[3]).ToString();
-                response.SimPort = uint.Parse(SimInfo.serverURI.Split(new[] {'/', ':'})[4]);
+                response.SimAddress = Util.GetHostFromDNS(SimInfo.serverURI.Split(new char[] { '/', ':' })[3]).ToString();
+                response.SimPort = uint.Parse(SimInfo.serverURI.Split(new char[] { '/', ':' })[4]);
                 response.RegionX = SimInfo.regionLocX;
                 response.RegionY = SimInfo.regionLocY;
 
                 //Not sure if the + "/CAPS/" should in fact be +"CAPS/" depending if there is already a / as part of httpServerURI
                 string capsPath = Util.GetRandomCapsPath();
                 response.SeedCapability = SimInfo.httpServerURI + "CAPS/" + capsPath + "0000/";
-
+                
                 m_log.DebugFormat(
-                    "[LOGIN]: Sending new CAPS seed url {0} to client {1}",
-                    response.SeedCapability, response.AgentID);
+                    "[LOGIN]: Sending new CAPS seed url {0} to client {1}", 
+                    response.SeedCapability, response.AgentID);                 
 
                 // Notify the target of an incoming user
                 //CFK: The "Notifying" message always seems to appear, so subsume the data from this message into 
@@ -166,8 +163,7 @@ namespace OpenSim.Grid.UserServer
 
                 theUser.CurrentAgent.Region = SimInfo.UUID;
                 theUser.CurrentAgent.Handle = SimInfo.regionHandle;
-                if (start_x >= 0 && start_y >= 0 && start_z >= 0)
-                {
+                if (start_x >= 0 && start_y >= 0 && start_z >= 0) {
                     LLVector3 tmp_v = new LLVector3(start_x, start_y, start_z);
                     theUser.CurrentAgent.Position = tmp_v;
                 }
@@ -190,43 +186,42 @@ namespace OpenSim.Grid.UserServer
                 // Update agent with target sim
 
                 m_log.InfoFormat(
-                    "[LOGIN]: Telling region {0} @ {1},{2} ({3}) to expect user connection",
-                    SimInfo.regionName, response.RegionX, response.RegionY, SimInfo.httpServerURI);
+                    "[LOGIN]: Telling region {0} @ {1},{2} ({3}) to expect user connection", 
+                    SimInfo.regionName, response.RegionX, response.RegionY, SimInfo.httpServerURI); 
 
-                XmlRpcRequest GridReq = new XmlRpcRequest("expect_user", SendParams);
+                XmlRpcRequest GridReq = new XmlRpcRequest("expect_user", SendParams);                
                 XmlRpcResponse GridResp = GridReq.Send(SimInfo.httpServerURI, 6000);
-
+                
                 if (GridResp.IsFault)
                 {
                     m_log.ErrorFormat(
-                        "[LOGIN]: XMLRPC request for {0} failed, fault code: {1}, reason: {2}",
+                        "[LOGIN]: XMLRPC request for {0} failed, fault code: {1}, reason: {2}", 
                         SimInfo.httpServerURI, GridResp.FaultCode, GridResp.FaultString);
                 }
                 handlerUserLoggedInAtLocation = OnUserLoggedInAtLocation;
                 if (handlerUserLoggedInAtLocation != null)
                 {
                     //m_log.Info("[LOGIN]: Letting other objects know about login");
-                    handlerUserLoggedInAtLocation(theUser.ID, theUser.CurrentAgent.SessionID, theUser.CurrentAgent.Region,
-                                                  theUser.CurrentAgent.Handle, theUser.CurrentAgent.Position.X, theUser.CurrentAgent.Position.Y,
-                                                  theUser.CurrentAgent.Position.Z,
-                                                  theUser.FirstName, theUser.SurName);
+                    handlerUserLoggedInAtLocation(theUser.ID, theUser.CurrentAgent.SessionID, theUser.CurrentAgent.Region, 
+                        theUser.CurrentAgent.Handle, theUser.CurrentAgent.Position.X,theUser.CurrentAgent.Position.Y,theUser.CurrentAgent.Position.Z,
+                        theUser.FirstName,theUser.SurName);
                 }
             }
             catch (Exception)
-                //catch (System.AccessViolationException)
+            //catch (System.AccessViolationException)
             {
                 tryDefault = true;
             }
-
+            
             if (tryDefault)
             {
                 // Send him to default region instead
                 // Load information from the gridserver
 
-                ulong defaultHandle = (((ulong) m_config.DefaultX * Constants.RegionSize) << 32) | ((ulong) m_config.DefaultY * Constants.RegionSize);
+                ulong defaultHandle = (((ulong)m_config.DefaultX * Constants.RegionSize) << 32) | ((ulong)m_config.DefaultY * Constants.RegionSize);
 
                 m_log.Warn(
-                    "[LOGIN]: Home region not available: sending to default " + defaultHandle);
+                    "[LOGIN]: Home region not available: sending to default " + defaultHandle.ToString());
 
                 try
                 {
@@ -236,19 +231,19 @@ namespace OpenSim.Grid.UserServer
 
                     // Customise the response
                     m_log.Info("[LOGIN]: Home Location");
-                    response.Home = "{'region_handle':[r" + (SimInfo.regionLocX * Constants.RegionSize) + ",r" +
-                                    (SimInfo.regionLocY * Constants.RegionSize) + "], " +
-                                    "'position':[r" + theUser.HomeLocation.X + ",r" +
-                                    theUser.HomeLocation.Y + ",r" + theUser.HomeLocation.Z + "], " +
-                                    "'look_at':[r" + theUser.HomeLocation.X + ",r" +
-                                    theUser.HomeLocation.Y + ",r" + theUser.HomeLocation.Z + "]}";
+                    response.Home = "{'region_handle':[r" + (SimInfo.regionLocX * Constants.RegionSize).ToString() + ",r" +
+                                    (SimInfo.regionLocY * Constants.RegionSize).ToString() + "], " +
+                                    "'position':[r" + theUser.HomeLocation.X.ToString() + ",r" +
+                                    theUser.HomeLocation.Y.ToString() + ",r" + theUser.HomeLocation.Z.ToString() + "], " +
+                                    "'look_at':[r" + theUser.HomeLocation.X.ToString() + ",r" +
+                                    theUser.HomeLocation.Y.ToString() + ",r" + theUser.HomeLocation.Z.ToString() + "]}";
 
                     // Destination
                     m_log.Info("[LOGIN]: " +
                                "CUSTOMISERESPONSE: Region X: " + SimInfo.regionLocX + "; Region Y: " +
                                SimInfo.regionLocY);
-                    response.SimAddress = Util.GetHostFromDNS(SimInfo.serverURI.Split(new[] {'/', ':'})[3]).ToString();
-                    response.SimPort = uint.Parse(SimInfo.serverURI.Split(new[] {'/', ':'})[4]);
+                    response.SimAddress = Util.GetHostFromDNS(SimInfo.serverURI.Split(new char[] { '/', ':' })[3]).ToString();
+                    response.SimPort = uint.Parse(SimInfo.serverURI.Split(new char[] { '/', ':' })[4]);
                     response.RegionX = SimInfo.regionLocX;
                     response.RegionY = SimInfo.regionLocY;
 
@@ -288,16 +283,15 @@ namespace OpenSim.Grid.UserServer
                     {
                         m_log.Info("[LOGIN]: Letting other objects know about login");
                         handlerUserLoggedInAtLocation(theUser.ID, theUser.CurrentAgent.SessionID, theUser.CurrentAgent.Region,
-                                                      theUser.CurrentAgent.Handle, theUser.CurrentAgent.Position.X, theUser.CurrentAgent.Position.Y,
-                                                      theUser.CurrentAgent.Position.Z,
-                                                      theUser.FirstName, theUser.SurName);
+                        theUser.CurrentAgent.Handle, theUser.CurrentAgent.Position.X, theUser.CurrentAgent.Position.Y, theUser.CurrentAgent.Position.Z,
+                        theUser.FirstName, theUser.SurName);
                     }
                 }
 
                 catch (Exception e)
                 {
                     m_log.Warn("[LOGIN]: Default region also not available");
-                    m_log.Warn("[LOGIN]: " + e);
+                    m_log.Warn("[LOGIN]: " + e.ToString());
                 }
             }
         }
@@ -306,8 +300,8 @@ namespace OpenSim.Grid.UserServer
         protected override InventoryData GetInventorySkeleton(LLUUID userID)
         {
             m_log.DebugFormat(
-                "[LOGIN]: Contacting inventory service at {0} for inventory skeleton of user {1}",
-                m_config.InventoryUrl, userID);
+                 "[LOGIN]: Contacting inventory service at {0} for inventory skeleton of user {1}", 
+                 m_config.InventoryUrl, userID);            
 
             List<InventoryFolderBase> folders
                 = SynchronousRestObjectPoster.BeginPostObject<Guid, List<InventoryFolderBase>>(
@@ -322,23 +316,23 @@ namespace OpenSim.Grid.UserServer
                 // tools are creating the user profile directly in the database without creating the inventory.  At
                 // this time we'll accomodate them by lazily creating the user inventory now if it doesn't already
                 // exist.
-                bool created =
+                bool created = 
                     SynchronousRestObjectPoster.BeginPostObject<Guid, bool>(
                         "POST", m_config.InventoryUrl + "CreateInventory/", userID.UUID);
-
+                
                 if (!created)
                 {
                     throw new Exception(
                         String.Format(
                             "The inventory creation request for user {0} did not succeed."
-                            + "  Please contact your inventory service provider for more information.",
+                                + "  Please contact your inventory service provider for more information.", 
                             userID));
                 }
                 else
                 {
                     m_log.InfoFormat("[LOGIN]: A new inventory skeleton was successfully created for user {0}", userID);
                 }
-
+                
                 folders = SynchronousRestObjectPoster.BeginPostObject<Guid, List<InventoryFolderBase>>(
                     "POST", m_config.InventoryUrl + "RootFolders/", userID.UUID);
             }
@@ -348,11 +342,11 @@ namespace OpenSim.Grid.UserServer
                 LLUUID rootID = LLUUID.Zero;
                 ArrayList AgentInventoryArray = new ArrayList();
                 Hashtable TempHash;
-
+                
                 foreach (InventoryFolderBase InvFolder in folders)
                 {
 //                    m_log.DebugFormat("[LOGIN]: Received agent inventory folder {0}", InvFolder.name);
-
+                    
                     if (InvFolder.ParentID == LLUUID.Zero)
                     {
                         rootID = InvFolder.ID;
@@ -365,16 +359,16 @@ namespace OpenSim.Grid.UserServer
                     TempHash["folder_id"] = InvFolder.ID.ToString();
                     AgentInventoryArray.Add(TempHash);
                 }
-
+                
                 return new InventoryData(AgentInventoryArray, rootID);
             }
             else
             {
                 throw new Exception(
                     String.Format(
-                        "A root inventory folder for user {0} could not be retrieved from the inventory service",
+                        "A root inventory folder for user {0} could not be retrieved from the inventory service", 
                         userID));
             }
         }
     }
-}
+}

+ 66 - 66
OpenSim/Grid/UserServer/UserManager.cs

@@ -41,11 +41,11 @@ namespace OpenSim.Grid.UserServer
     public delegate void logOffUser(LLUUID AgentID);
 
     public class UserManager : UserManagerBase
-    {
+    {            
         private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
 
-        private logOffUser handlerLogOffUser;
         public event logOffUser OnLogOffUser;
+        private logOffUser handlerLogOffUser = null;
 
         /// <summary>
         /// Deletes an active agent session
@@ -81,17 +81,17 @@ namespace OpenSim.Grid.UserServer
             XmlRpcResponse response = new XmlRpcResponse();
             Hashtable responseData = new Hashtable();
             // Query Result Information
-            responseData["queryid"] = queryID.ToString();
-            responseData["avcount"] = returnUsers.Count.ToString();
+            responseData["queryid"] = (string) queryID.ToString();
+            responseData["avcount"] = (string) returnUsers.Count.ToString();
 
             for (int i = 0; i < returnUsers.Count; i++)
             {
-                responseData["avatarid" + i] = returnUsers[i].AvatarID.ToString();
-                responseData["firstname" + i] = returnUsers[i].firstName;
-                responseData["lastname" + i] = returnUsers[i].lastName;
+                responseData["avatarid" + i.ToString()] = returnUsers[i].AvatarID.ToString();
+                responseData["firstname" + i.ToString()] = returnUsers[i].firstName;
+                responseData["lastname" + i.ToString()] = returnUsers[i].lastName;
             }
             response.Value = responseData;
-
+            
             return response;
         }
 
@@ -101,14 +101,14 @@ namespace OpenSim.Grid.UserServer
             Hashtable responseData = new Hashtable();
             // Query Result Information
 
-            responseData["avcount"] = returnUsers.Count.ToString();
+            responseData["avcount"] = (string)returnUsers.Count.ToString();
 
             for (int i = 0; i < returnUsers.Count; i++)
             {
-                responseData["ownerID" + i] = returnUsers[i].FriendListOwner.UUID.ToString();
-                responseData["friendID" + i] = returnUsers[i].Friend.UUID.ToString();
-                responseData["ownerPerms" + i] = returnUsers[i].FriendListOwnerPerms.ToString();
-                responseData["friendPerms" + i] = returnUsers[i].FriendPerms.ToString();
+                responseData["ownerID" + i.ToString()] = returnUsers[i].FriendListOwner.UUID.ToString();
+                responseData["friendID" + i.ToString()] = returnUsers[i].Friend.UUID.ToString();
+                responseData["ownerPerms" + i.ToString()] = returnUsers[i].FriendListOwnerPerms.ToString();
+                responseData["friendPerms" + i.ToString()] = returnUsers[i].FriendPerms.ToString();
             }
             response.Value = responseData;
 
@@ -156,21 +156,6 @@ namespace OpenSim.Grid.UserServer
             return response;
         }
 
-        public override UserProfileData SetupMasterUser(string firstName, string lastName)
-        {
-            throw new Exception("The method or operation is not implemented.");
-        }
-
-        public override UserProfileData SetupMasterUser(string firstName, string lastName, string password)
-        {
-            throw new Exception("The method or operation is not implemented.");
-        }
-
-        public override UserProfileData SetupMasterUser(LLUUID uuid)
-        {
-            throw new Exception("The method or operation is not implemented.");
-        }
-
         #region XMLRPC User Methods
 
         public XmlRpcResponse XmlRPCGetAvatarPickerAvatar(XmlRpcRequest request)
@@ -193,16 +178,15 @@ namespace OpenSim.Grid.UserServer
         public XmlRpcResponse XmlRpcResponseXmlRPCAddUserFriend(XmlRpcRequest request)
         {
             XmlRpcResponse response = new XmlRpcResponse();
-            Hashtable requestData = (Hashtable) request.Params[0];
+            Hashtable requestData = (Hashtable)request.Params[0];
             Hashtable responseData = new Hashtable();
             string returnString = "FALSE";
             // Query Result Information
-
+            
             if (requestData.Contains("ownerID") && requestData.Contains("friendID") && requestData.Contains("friendPerms"))
             {
                 // UserManagerBase.AddNewuserFriend
-                AddNewUserFriend(new LLUUID((string) requestData["ownerID"]), new LLUUID((string) requestData["friendID"]),
-                                 (uint) Convert.ToInt32((string) requestData["friendPerms"]));
+                AddNewUserFriend(new LLUUID((string)requestData["ownerID"]), new LLUUID((string)requestData["friendID"]), (uint)Convert.ToInt32((string)requestData["friendPerms"]));
                 returnString = "TRUE";
             }
             responseData["returnString"] = returnString;
@@ -213,15 +197,15 @@ namespace OpenSim.Grid.UserServer
         public XmlRpcResponse XmlRpcResponseXmlRPCRemoveUserFriend(XmlRpcRequest request)
         {
             XmlRpcResponse response = new XmlRpcResponse();
-            Hashtable requestData = (Hashtable) request.Params[0];
+            Hashtable requestData = (Hashtable)request.Params[0];
             Hashtable responseData = new Hashtable();
             string returnString = "FALSE";
             // Query Result Information
-
+            
             if (requestData.Contains("ownerID") && requestData.Contains("friendID"))
             {
                 // UserManagerBase.AddNewuserFriend
-                RemoveUserFriend(new LLUUID((string) requestData["ownerID"]), new LLUUID((string) requestData["friendID"]));
+                RemoveUserFriend(new LLUUID((string)requestData["ownerID"]), new LLUUID((string)requestData["friendID"]));
                 returnString = "TRUE";
             }
             responseData["returnString"] = returnString;
@@ -232,14 +216,13 @@ namespace OpenSim.Grid.UserServer
         public XmlRpcResponse XmlRpcResponseXmlRPCUpdateUserFriendPerms(XmlRpcRequest request)
         {
             XmlRpcResponse response = new XmlRpcResponse();
-            Hashtable requestData = (Hashtable) request.Params[0];
+            Hashtable requestData = (Hashtable)request.Params[0];
             Hashtable responseData = new Hashtable();
             string returnString = "FALSE";
-
+           
             if (requestData.Contains("ownerID") && requestData.Contains("friendID") && requestData.Contains("friendPerms"))
             {
-                UpdateUserFriendPerms(new LLUUID((string) requestData["ownerID"]), new LLUUID((string) requestData["friendID"]),
-                                      (uint) Convert.ToInt32((string) requestData["friendPerms"]));
+                UpdateUserFriendPerms(new LLUUID((string)requestData["ownerID"]), new LLUUID((string)requestData["friendID"]), (uint)Convert.ToInt32((string)requestData["friendPerms"]));
                 // UserManagerBase.
                 returnString = "TRUE";
             }
@@ -251,16 +234,16 @@ namespace OpenSim.Grid.UserServer
         public XmlRpcResponse XmlRpcResponseXmlRPCGetUserFriendList(XmlRpcRequest request)
         {
             XmlRpcResponse response = new XmlRpcResponse();
-            Hashtable requestData = (Hashtable) request.Params[0];
+            Hashtable requestData = (Hashtable)request.Params[0];
             Hashtable responseData = new Hashtable();
 
             List<FriendListItem> returndata = new List<FriendListItem>();
 
             if (requestData.Contains("ownerID"))
             {
-                returndata = GetUserFriendList(new LLUUID((string) requestData["ownerID"]));
+                returndata = this.GetUserFriendList(new LLUUID((string)requestData["ownerID"]));
             }
-
+            
             return FriendListItemListtoXmlRPCResponse(returndata);
         }
 
@@ -338,7 +321,7 @@ namespace OpenSim.Grid.UserServer
         {
             m_log.Debug("[UserManager]: Got request to update user profile");
             XmlRpcResponse response = new XmlRpcResponse();
-            Hashtable requestData = (Hashtable) request.Params[0];
+            Hashtable requestData = (Hashtable)request.Params[0];
             Hashtable responseData = new Hashtable();
 
             UserProfileData userProfile;
@@ -347,7 +330,7 @@ namespace OpenSim.Grid.UserServer
                 return CreateUnknownUserErrorResponse();
             }
 
-            LLUUID UserUUID = new LLUUID((string) requestData["avatar_uuid"]);
+            LLUUID UserUUID = new LLUUID((string)requestData["avatar_uuid"]);
             userProfile = GetUserProfile(UserUUID);
             if (null == userProfile)
             {
@@ -359,33 +342,33 @@ namespace OpenSim.Grid.UserServer
             }
             if (requestData.Contains("FLImageID"))
             {
-                userProfile.FirstLifeImage = new LLUUID((string) requestData["FLImageID"]);
+                userProfile.FirstLifeImage = new LLUUID((string)requestData["FLImageID"]);
             }
             if (requestData.Contains("ImageID"))
             {
-                userProfile.Image = new LLUUID((string) requestData["ImageID"]);
+                userProfile.Image = new LLUUID((string)requestData["ImageID"]);
             }
             // dont' know how yet
             if (requestData.Contains("MaturePublish"))
-            {
+            {                
             }
             if (requestData.Contains("AboutText"))
             {
-                userProfile.AboutText = (string) requestData["AboutText"];
+                userProfile.AboutText = (string)requestData["AboutText"];
             }
             if (requestData.Contains("FLAboutText"))
             {
-                userProfile.FirstLifeAboutText = (string) requestData["FLAboutText"];
+                userProfile.FirstLifeAboutText = (string)requestData["FLAboutText"];
             }
             // not in DB yet.
             if (requestData.Contains("ProfileURL"))
-            {
+            {                
             }
             if (requestData.Contains("home_region"))
             {
                 try
                 {
-                    userProfile.HomeRegion = Convert.ToUInt64((string) requestData["home_region"]);
+                    userProfile.HomeRegion = Convert.ToUInt64((string)requestData["home_region"]);
                 }
                 catch (ArgumentException)
                 {
@@ -399,23 +382,25 @@ namespace OpenSim.Grid.UserServer
                 {
                     m_log.Error("[PROFILE]:Failed to set home region, Value was too large");
                 }
+                
             }
             if (requestData.Contains("home_pos_x"))
             {
                 try
                 {
-                    userProfile.HomeLocationX = (float) Convert.ToDecimal((string) requestData["home_pos_x"]);
+                    userProfile.HomeLocationX = (float)Convert.ToDecimal((string)requestData["home_pos_x"]);
                 }
                 catch (InvalidCastException)
                 {
                     m_log.Error("[PROFILE]:Failed to set home postion x");
                 }
+
             }
             if (requestData.Contains("home_pos_y"))
             {
                 try
                 {
-                    userProfile.HomeLocationY = (float) Convert.ToDecimal((string) requestData["home_pos_y"]);
+                    userProfile.HomeLocationY = (float)Convert.ToDecimal((string)requestData["home_pos_y"]);
                 }
                 catch (InvalidCastException)
                 {
@@ -426,7 +411,7 @@ namespace OpenSim.Grid.UserServer
             {
                 try
                 {
-                    userProfile.HomeLocationZ = (float) Convert.ToDecimal((string) requestData["home_pos_z"]);
+                    userProfile.HomeLocationZ = (float)Convert.ToDecimal((string)requestData["home_pos_z"]);
                 }
                 catch (InvalidCastException)
                 {
@@ -437,7 +422,7 @@ namespace OpenSim.Grid.UserServer
             {
                 try
                 {
-                    userProfile.HomeLookAtX = (float) Convert.ToDecimal((string) requestData["home_look_x"]);
+                    userProfile.HomeLookAtX = (float)Convert.ToDecimal((string)requestData["home_look_x"]);
                 }
                 catch (InvalidCastException)
                 {
@@ -448,7 +433,7 @@ namespace OpenSim.Grid.UserServer
             {
                 try
                 {
-                    userProfile.HomeLookAtY = (float) Convert.ToDecimal((string) requestData["home_look_y"]);
+                    userProfile.HomeLookAtY = (float)Convert.ToDecimal((string)requestData["home_look_y"]);
                 }
                 catch (InvalidCastException)
                 {
@@ -457,9 +442,9 @@ namespace OpenSim.Grid.UserServer
             }
             if (requestData.Contains("home_look_z"))
             {
-                try
+                try 
                 {
-                    userProfile.HomeLookAtZ = (float) Convert.ToDecimal((string) requestData["home_look_z"]);
+                    userProfile.HomeLookAtZ = (float)Convert.ToDecimal((string)requestData["home_look_z"]);
                 }
                 catch (InvalidCastException)
                 {
@@ -476,18 +461,18 @@ namespace OpenSim.Grid.UserServer
         public XmlRpcResponse XmlRPCLogOffUserMethodUUID(XmlRpcRequest request)
         {
             XmlRpcResponse response = new XmlRpcResponse();
-            Hashtable requestData = (Hashtable) request.Params[0];
+            Hashtable requestData = (Hashtable)request.Params[0];
 
             if (requestData.Contains("avatar_uuid"))
             {
                 try
                 {
-                    LLUUID userUUID = new LLUUID((string) requestData["avatar_uuid"]);
-                    LLUUID RegionID = new LLUUID((string) requestData["region_uuid"]);
-                    ulong regionhandle = (ulong) Convert.ToInt64((string) requestData["region_handle"]);
-                    float posx = (float) Convert.ToDecimal((string) requestData["region_pos_x"]);
-                    float posy = (float) Convert.ToDecimal((string) requestData["region_pos_y"]);
-                    float posz = (float) Convert.ToDecimal((string) requestData["region_pos_z"]);
+                    LLUUID userUUID = new LLUUID((string)requestData["avatar_uuid"]);
+                    LLUUID RegionID = new LLUUID((string)requestData["region_uuid"]);
+                    ulong regionhandle = (ulong)Convert.ToInt64((string)requestData["region_handle"]);
+                    float posx = (float)Convert.ToDecimal((string)requestData["region_pos_x"]);
+                    float posy = (float)Convert.ToDecimal((string)requestData["region_pos_y"]);
+                    float posz = (float)Convert.ToDecimal((string)requestData["region_pos_z"]);
 
                     handlerLogOffUser = OnLogOffUser;
                     if (handlerLogOffUser != null)
@@ -510,5 +495,20 @@ namespace OpenSim.Grid.UserServer
         }
 
         #endregion
+
+        public override UserProfileData SetupMasterUser(string firstName, string lastName)
+        {
+            throw new Exception("The method or operation is not implemented.");
+        }
+
+        public override UserProfileData SetupMasterUser(string firstName, string lastName, string password)
+        {
+            throw new Exception("The method or operation is not implemented.");
+        }
+
+        public override UserProfileData SetupMasterUser(LLUUID uuid)
+        {
+            throw new Exception("The method or operation is not implemented.");
+        }
     }
-}
+}

+ 4 - 1
OpenSim/Region/Environment/InstantMessageReceiver.cs

@@ -32,10 +32,13 @@ namespace OpenSim.Region.Environment
     /// <summary>
     /// Bit Vector for Which Modules to send an instant message to from the Scene or an Associated Module
     /// </summary>
+    
     // This prevents the Modules from sending Instant messages to other modules through the scene
     // and then receiving the same messages
+
     // This is mostly here because on LLSL and the SecondLife Client, IMs,Groups and friends are linked 
     // inseparably
+
     [Flags]
     public enum InstantMessageReceiver : uint
     {
@@ -48,4 +51,4 @@ namespace OpenSim.Region.Environment
         /// <summary>The Groups Module</summary>
         GroupsModule = 0x00000004
     }
-}
+}

+ 1 - 1
OpenSim/Region/Environment/Interfaces/IAgentAssetTransactions.cs

@@ -41,4 +41,4 @@ namespace OpenSim.Region.Environment.Interfaces
 
         void RemoveAgentAssetTransactions(LLUUID userID);
     }
-}
+}

+ 2 - 2
OpenSim/Region/Environment/Interfaces/IAvatarFactory.cs

@@ -30,9 +30,9 @@ using OpenSim.Region.Environment.Scenes;
 
 namespace OpenSim.Region.Environment.Interfaces
 {
-    public interface IAvatarFactory
+    public interface IAvatarFactory 
     {
         bool TryGetAvatarAppearance(LLUUID avatarId, out AvatarAppearance appearance);
         void UpdateDatabase(LLUUID userID, AvatarAppearance avatAppearance);
     }
-}
+}

+ 1 - 1
OpenSim/Region/Environment/Interfaces/IHttpRequests.cs

@@ -39,4 +39,4 @@ namespace OpenSim.Region.Environment.Interfaces
         HttpRequestClass GetNextCompletedRequest();
         void RemoveCompletedRequest(LLUUID id);
     }
-}
+}

+ 2 - 3
OpenSim/Region/Environment/Interfaces/ILandChannel.cs

@@ -70,8 +70,7 @@ namespace OpenSim.Region.Environment.Interfaces
         void handleSignificantClientMovement(IClientAPI remote_client);
         void handleAnyClientMovement(ScenePresence avatar);
         void handleParcelAccessRequest(LLUUID agentID, LLUUID sessionID, uint flags, int sequenceID, int landLocalID, IClientAPI remote_client);
+        void handleParcelAccessUpdateRequest(LLUUID agentID, LLUUID sessionID, uint flags, int landLocalID, List<ParcelManager.ParcelAccessEntry> entries, IClientAPI remote_client);
 
-        void handleParcelAccessUpdateRequest(LLUUID agentID, LLUUID sessionID, uint flags, int landLocalID, List<ParcelManager.ParcelAccessEntry> entries,
-                                             IClientAPI remote_client);
     }
-}
+}

+ 3 - 3
OpenSim/Region/Environment/Interfaces/IRegionDataStore.cs

@@ -48,7 +48,7 @@ namespace OpenSim.Region.Environment.Interfaces
         /// <param name="obj"></param>
         /// <param name="regionUUID"></param>
         void StoreObject(SceneObjectGroup obj, LLUUID regionUUID);
-
+        
         /// <summary>
         /// Entirely removes the object, including inventory
         /// </summary>
@@ -56,7 +56,7 @@ namespace OpenSim.Region.Environment.Interfaces
         /// <param name="regionUUID"></param>
         /// <returns></returns>
         void RemoveObject(LLUUID uuid, LLUUID regionUUID);
-
+        
         /// <summary>
         /// Store a prim's inventory
         /// </summary>
@@ -74,4 +74,4 @@ namespace OpenSim.Region.Environment.Interfaces
 
         void Shutdown();
     }
-}
+}

+ 3 - 3
OpenSim/Region/Environment/Interfaces/IRegionModule.cs

@@ -32,10 +32,10 @@ namespace OpenSim.Region.Environment.Interfaces
 {
     public interface IRegionModule
     {
-        string Name { get; }
-        bool IsSharedModule { get; }
         void Initialise(Scene scene, IConfigSource source);
         void PostInitialise();
         void Close();
+        string Name { get; }
+        bool IsSharedModule { get; }
     }
-}
+}

+ 1 - 1
OpenSim/Region/Environment/Interfaces/ISimChat.cs

@@ -34,4 +34,4 @@ namespace OpenSim.Region.Environment.Interfaces
     {
         void SimChat(Object sender, ChatFromViewerArgs e);
     }
-}
+}

+ 1 - 1
OpenSim/Region/Environment/Interfaces/IWorldComm.cs

@@ -43,4 +43,4 @@ namespace OpenSim.Region.Environment.Interfaces
         uint PeekNextMessageLocalID();
         LLUUID PeekNextMessageItemID();
     }
-}
+}

+ 1 - 1
OpenSim/Region/Environment/Interfaces/IXMLRPC.cs

@@ -45,4 +45,4 @@ namespace OpenSim.Region.Environment.Interfaces
         void RemoveCompletedSRDRequest(LLUUID id);
         void CancelSRDRequests(LLUUID itemID);
     }
-}
+}

+ 1 - 1
OpenSim/Region/Environment/Interfaces/IXfer.cs

@@ -31,4 +31,4 @@ namespace OpenSim.Region.Environment.Interfaces
     {
         bool AddNewFile(string fileName, byte[] data);
     }
-}
+}

+ 18 - 18
OpenSim/Region/Environment/ModuleLoader.cs

@@ -47,11 +47,12 @@ namespace OpenSim.Region.Environment
     public class ModuleLoader
     {
         private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
-        private readonly IConfigSource m_config;
+
+        public Dictionary<string, Assembly> LoadedAssemblys = new Dictionary<string, Assembly>();
 
         private readonly List<IRegionModule> m_loadedModules = new List<IRegionModule>();
         private readonly Dictionary<string, IRegionModule> m_loadedSharedModules = new Dictionary<string, IRegionModule>();
-        public Dictionary<string, Assembly> LoadedAssemblys = new Dictionary<string, Assembly>();
+        private readonly IConfigSource m_config;
 
         public ModuleLoader(IConfigSource config)
         {
@@ -85,8 +86,7 @@ namespace OpenSim.Region.Environment
             DynamicTextureModule dynamicModule = new DynamicTextureModule();
             if (m_loadedSharedModules.ContainsKey(dynamicModule.Name))
             {
-                m_log.ErrorFormat("[MODULES]: Module name \"{0}\" already exists in module list. Module type {1} not added!", dynamicModule.Name,
-                                  "DynamicTextureModule");
+                m_log.ErrorFormat("[MODULES]: Module name \"{0}\" already exists in module list. Module type {1} not added!", dynamicModule.Name, "DynamicTextureModule");
             }
             else
             {
@@ -123,15 +123,15 @@ namespace OpenSim.Region.Environment
                 m_loadedSharedModules.Add(loadMod.Name, loadMod);
             }
 
-            // AvatarFactoryModule avatarFactory = new AvatarFactoryModule();
-            // if (m_loadedSharedModules.ContainsKey(avatarFactory.Name))
-            // {
-            //     m_log.ErrorFormat("[MODULES]: Module name \"{0}\" already exists in module list. Module type {1} not added!", avatarFactory.Name, "AvarFactoryModule");
-            // }
-            // else
-            // {
-            //     m_loadedSharedModules.Add(avatarFactory.Name, avatarFactory);
-            // }
+           // AvatarFactoryModule avatarFactory = new AvatarFactoryModule();
+           // if (m_loadedSharedModules.ContainsKey(avatarFactory.Name))
+           // {
+           //     m_log.ErrorFormat("[MODULES]: Module name \"{0}\" already exists in module list. Module type {1} not added!", avatarFactory.Name, "AvarFactoryModule");
+           // }
+           // else
+           // {
+           //     m_loadedSharedModules.Add(avatarFactory.Name, avatarFactory);
+           // }
 
             XMLRPCModule xmlRpcMod = new XMLRPCModule();
             if (m_loadedSharedModules.ContainsKey(xmlRpcMod.Name))
@@ -149,13 +149,13 @@ namespace OpenSim.Region.Environment
             AssetTransactionModule transactionsModule = new AssetTransactionModule();
             if (m_loadedSharedModules.ContainsKey(transactionsModule.Name))
             {
-                m_log.ErrorFormat("[MODULES]: Module name \"{0}\" already exists in module list. Module type {1} not added!", transactionsModule.Name,
-                                  "TransactionModule");
+                m_log.ErrorFormat("[MODULES]: Module name \"{0}\" already exists in module list. Module type {1} not added!", transactionsModule.Name, "TransactionModule");
             }
             else
             {
                 m_loadedSharedModules.Add(transactionsModule.Name, transactionsModule);
             }
+
         }
 
         public void InitialiseSharedModules(Scene scene)
@@ -284,7 +284,7 @@ namespace OpenSim.Region.Environment
                             {
                                 if (pluginType.GetInterface("IRegionModule") != null)
                                 {
-                                    modules.Add((IRegionModule) Activator.CreateInstance(pluginType));
+                                    modules.Add((IRegionModule)Activator.CreateInstance(pluginType));
                                 }
                             }
                         }
@@ -320,8 +320,8 @@ namespace OpenSim.Region.Environment
         public void UnloadModule(IRegionModule rm)
         {
             rm.Close();
-
+            
             m_loadedModules.Remove(rm);
         }
     }
-}
+}

+ 12 - 9
OpenSim/Region/Environment/Modules/Agent/AssetDownload/AssetDownloadModule.cs

@@ -40,16 +40,15 @@ namespace OpenSim.Region.Environment.Modules.Agent.AssetDownload
         /// <summary>
         /// Asset requests with data which are ready to be sent back to requesters.  This includes textures.
         /// </summary>
-        private readonly List<AssetRequest> AssetRequests;
+        private List<AssetRequest> AssetRequests;
 
-        private readonly Dictionary<LLUUID, Scene> RegisteredScenes = new Dictionary<LLUUID, Scene>();
+        private Scene m_scene;
+        private Dictionary<LLUUID, Scene> RegisteredScenes = new Dictionary<LLUUID, Scene>();
 
         ///
         /// Assets requests (for each user) which are waiting for asset server data.  This includes texture requests
         /// </summary>
-        private readonly Dictionary<LLUUID, Dictionary<LLUUID, AssetRequest>> RequestedAssets;
-
-        private Scene m_scene;
+        private Dictionary<LLUUID, Dictionary<LLUUID, AssetRequest>> RequestedAssets;
 
         public AssetDownloadModule()
         {
@@ -206,18 +205,22 @@ namespace OpenSim.Region.Environment.Modules.Agent.AssetDownload
         {
             public AssetBase AssetInf;
             public byte AssetRequestSource = 2;
-            public long DataPointer;
+            public long DataPointer = 0;
             public int DiscardLevel = -1;
             public AssetBase ImageInfo;
             public bool IsTextureRequest;
-            public int NumPackets;
-            public int PacketCounter;
-            public byte[] Params;
+            public int NumPackets = 0;
+            public int PacketCounter = 0;
+            public byte[] Params = null;
             public LLUUID RequestAssetID;
             public IClientAPI RequestUser;
             public LLUUID TransferRequestID;
             //public bool AssetInCache;
             //public int TimeRequested; 
+
+            public AssetRequest()
+            {
+            }
         }
 
         #endregion

+ 10 - 10
OpenSim/Region/Environment/Modules/Agent/AssetTransaction/AgentAssetsTransactions.cs

@@ -44,7 +44,7 @@ namespace OpenSim.Region.Environment.Modules.Agent.AssetTransaction
         //   = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
 
         // Fields
-        private readonly bool m_dumpAssetsToFile;
+        private bool m_dumpAssetsToFile;
         public AgentAssetTransactionsManager Manager;
         public LLUUID UserID;
         public Dictionary<LLUUID, AssetXferUploader> XferUploaders = new Dictionary<LLUUID, AssetXferUploader>();
@@ -141,23 +141,23 @@ namespace OpenSim.Region.Environment.Modules.Agent.AssetTransaction
         public class AssetXferUploader
         {
             // Fields
-            private readonly bool m_dumpAssetToFile;
-            private readonly AgentAssetTransactions m_userTransactions;
             public bool AddToInventory;
             public AssetBase Asset;
             public LLUUID InventFolder = LLUUID.Zero;
-            private sbyte invType;
-            private bool m_createItem;
+            private sbyte invType = 0;
+            private bool m_createItem = false;
             private string m_description = String.Empty;
-            private bool m_finished;
+            private bool m_dumpAssetToFile;
+            private bool m_finished = false;
             private string m_name = String.Empty;
             private bool m_storeLocal;
-            private uint nextPerm;
+            private AgentAssetTransactions m_userTransactions;
+            private uint nextPerm = 0;
             private IClientAPI ourClient;
             public LLUUID TransactionID = LLUUID.Zero;
-            private sbyte type;
+            private sbyte type = 0;
             public bool UploadComplete;
-            private byte wearableType;
+            private byte wearableType = 0;
             public ulong XferID;
 
             public AssetXferUploader(AgentAssetTransactions transactions, bool dumpAssetToFile)
@@ -390,7 +390,7 @@ namespace OpenSim.Region.Environment.Modules.Agent.AssetTransaction
                     item.BasePermissions = 2147483647;
                     item.CurrentPermissions = 2147483647;
                     item.NextPermissions = nextPerm;
-                    item.Flags = wearableType;
+                    item.Flags = (uint) wearableType;
 
                     userInfo.AddItem(ourClient.AgentId, item);
                     ourClient.SendInventoryItemCreateUpdate(item);

+ 9 - 4
OpenSim/Region/Environment/Modules/Agent/AssetTransaction/AssetTransactionModule.cs

@@ -40,11 +40,16 @@ namespace OpenSim.Region.Environment.Modules.Agent.AssetTransaction
     public class AssetTransactionModule : IRegionModule, IAgentAssetTransactions
     {
         private readonly Dictionary<LLUUID, Scene> RegisteredScenes = new Dictionary<LLUUID, Scene>();
-        private bool m_dumpAssetsToFile;
-        private Scene m_scene;
+        private bool m_dumpAssetsToFile = false;
+        private Scene m_scene = null;
 
         private AgentAssetTransactionsManager m_transactionManager;
 
+        public AssetTransactionModule()
+        {
+            // System.Console.WriteLine("creating AgentAssetTransactionModule");
+        }
+
         #region IAgentAssetTransactions Members
 
         public void HandleItemCreationFromTransaction(IClientAPI remoteClient, LLUUID transactionID, LLUUID folderID,
@@ -140,13 +145,13 @@ namespace OpenSim.Region.Environment.Modules.Agent.AssetTransaction
         /// <summary>
         /// Each agent has its own singleton collection of transactions
         /// </summary>
-        private readonly Dictionary<LLUUID, AgentAssetTransactions> AgentTransactions =
+        private Dictionary<LLUUID, AgentAssetTransactions> AgentTransactions =
             new Dictionary<LLUUID, AgentAssetTransactions>();
 
         /// <summary>
         /// Should we dump uploaded assets to the filesystem?
         /// </summary>
-        private readonly bool m_dumpAssetsToFile;
+        private bool m_dumpAssetsToFile;
 
         public Scene MyScene;
 

+ 6 - 3
OpenSim/Region/Environment/Modules/Agent/TextureDownload/TextureDownloadModule.cs

@@ -47,8 +47,6 @@ namespace OpenSim.Region.Environment.Modules.Agent.TextureDownload
         private readonly BlockingQueue<ITextureSender> m_queueSenders
             = new BlockingQueue<ITextureSender>();
 
-        private readonly List<Scene> m_scenes = new List<Scene>();
-
         /// <summary>
         /// Each user has their own texture download service.
         /// </summary>
@@ -56,9 +54,14 @@ namespace OpenSim.Region.Environment.Modules.Agent.TextureDownload
             new Dictionary<LLUUID, UserTextureDownloadService>();
 
         private Scene m_scene;
+        private List<Scene> m_scenes = new List<Scene>();
 
         private Thread m_thread;
 
+        public TextureDownloadModule()
+        {
+        }
+
         #region IRegionModule Members
 
         public void Initialise(Scene scene, IConfigSource config)
@@ -66,7 +69,7 @@ namespace OpenSim.Region.Environment.Modules.Agent.TextureDownload
             if (m_scene == null)
             {
                 //Console.WriteLine("Creating Texture download module");
-                m_thread = new Thread(ProcessTextureSenders);
+                m_thread = new Thread(new ThreadStart(ProcessTextureSenders));
                 m_thread.Name = "ProcessTextureSenderThread";
                 m_thread.IsBackground = true;
                 m_thread.Start();

+ 3 - 3
OpenSim/Region/Environment/Modules/Agent/TextureDownload/TextureNotFoundSender.cs

@@ -40,13 +40,13 @@ namespace OpenSim.Region.Environment.Modules.Agent.TextureDownload
         //private static readonly log4net.ILog m_log 
         //    = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
 
-        private readonly LLUUID m_textureId;
-        private bool m_cancel;
+        private bool m_cancel = false;
         private IClientAPI m_client;
 
         // See ITextureSender
 
-        private bool m_sending;
+        private bool m_sending = false;
+        private LLUUID m_textureId;
 
         // See ITextureSender
 

+ 9 - 10
OpenSim/Region/Environment/Modules/Agent/TextureSender/TextureSender.cs

@@ -43,14 +43,12 @@ namespace OpenSim.Region.Environment.Modules.Agent.TextureSender
         private static readonly ILog m_log
             = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
 
-        private readonly IClientAPI RequestUser;
-
         /// <summary>
         /// Records the number of times texture send has been called.
         /// </summary>
-        public int counter;
+        public int counter = 0;
 
-        public bool ImageLoaded;
+        public bool ImageLoaded = false;
 
         /// <summary>
         /// Holds the texture asset to send.
@@ -59,26 +57,27 @@ namespace OpenSim.Region.Environment.Modules.Agent.TextureSender
 
         //public LLUUID assetID { get { return m_asset.FullID; } }
 
-        private bool m_cancel;
+        private bool m_cancel = false;
 
         // See ITextureSender
 
-        private bool m_sending;
+        private bool m_sending = false;
 
         /// <summary>
         /// This is actually the number of extra packets required to send the texture data!  We always assume
         /// at least one is required.
         /// </summary>
-        private int NumPackets;
+        private int NumPackets = 0;
 
         /// <summary>
         /// Holds the packet number to send next.  In this case, each packet is 1000 bytes long and starts
         /// at the 600th byte (0th indexed).
         /// </summary>
-        private int PacketCounter;
+        private int PacketCounter = 0;
 
         private int RequestedDiscardLevel = -1;
-        private uint StartPacketNumber;
+        private IClientAPI RequestUser;
+        private uint StartPacketNumber = 0;
 
         public TextureSender(IClientAPI client, int discardLevel, uint packetNumber)
         {
@@ -191,7 +190,7 @@ namespace OpenSim.Region.Environment.Modules.Agent.TextureSender
                     catch (ArgumentOutOfRangeException)
                     {
                         m_log.Error("[TEXTURE SENDER]: Unable to separate texture into multiple packets: Array bounds failure on asset:" +
-                                    m_asset.FullID);
+                                    m_asset.FullID.ToString());
                         return;
                     }
                     RequestUser.OutPacket(im, ThrottleOutPacketType.Texture);

+ 8 - 4
OpenSim/Region/Environment/Modules/Agent/Xfer/XferModule.cs

@@ -41,6 +41,10 @@ namespace OpenSim.Region.Environment.Modules.Agent.Xfer
         public Dictionary<string, byte[]> NewFiles = new Dictionary<string, byte[]>();
         public Dictionary<ulong, XferDownLoad> Transfers = new Dictionary<ulong, XferDownLoad>();
 
+        public XferModule()
+        {
+        }
+
         #region IRegionModule Members
 
         public void Initialise(Scene scene, IConfigSource config)
@@ -145,11 +149,11 @@ namespace OpenSim.Region.Environment.Modules.Agent.Xfer
             public IClientAPI Client;
             private bool complete;
             public byte[] Data = new byte[0];
-            public int DataPointer;
+            public int DataPointer = 0;
             public string FileName = String.Empty;
-            public uint Packet;
+            public uint Packet = 0;
             public uint Serial = 1;
-            public ulong XferID;
+            public ulong XferID = 0;
 
             public XferDownLoad(string fileName, byte[] data, ulong xferID, IClientAPI client)
             {
@@ -213,7 +217,7 @@ namespace OpenSim.Region.Environment.Modules.Agent.Xfer
                     {
                         byte[] transferData = new byte[Data.Length - DataPointer];
                         Array.Copy(Data, DataPointer, transferData, 0, Data.Length - DataPointer);
-                        uint endPacket = Packet |= 0x80000000;
+                        uint endPacket = Packet |= (uint) 0x80000000;
                         Client.SendXferPacket(XferID, endPacket, transferData);
                         Packet++;
                         DataPointer += (Data.Length - DataPointer);

+ 28 - 28
OpenSim/Region/Environment/Modules/Avatar/Chat/ChatModule.cs

@@ -44,15 +44,15 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Chat
     public class ChatModule : IRegionModule, ISimChat
     {
         private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
-        private readonly List<Scene> m_scenes = new List<Scene>();
-        private string m_defaultzone;
+        private string m_defaultzone = null;
 
-        private IRCChatModule m_irc;
-        private Thread m_irc_connector;
+        private IRCChatModule m_irc = null;
+        private Thread m_irc_connector = null;
 
-        private string m_last_leaving_user;
-        private string m_last_new_user;
+        private string m_last_leaving_user = null;
+        private string m_last_new_user = null;
         private int m_saydistance = 30;
+        private List<Scene> m_scenes = new List<Scene>();
         private int m_shoutdistance = 100;
         internal object m_syncInit = new object();
         internal object m_syncLogout = new object();
@@ -257,7 +257,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Chat
             }
             catch (Exception ex)
             {
-                m_log.Error("[IRC]: NewClient exception trap:" + ex);
+                m_log.Error("[IRC]: NewClient exception trap:" + ex.ToString());
             }
         }
 
@@ -284,7 +284,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Chat
                 }
                 catch (Exception ex)
                 {
-                    m_log.Error("[IRC]: ClientLoggedOut exception trap:" + ex);
+                    m_log.Error("[IRC]: ClientLoggedOut exception trap:" + ex.ToString());
                 }
             }
         }
@@ -372,24 +372,24 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Chat
         #endregion
 
         private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
-
-        private readonly string m_basenick;
-        private readonly string m_channel;
-        private readonly bool m_enabled;
-        private readonly uint m_port = 6668;
-        private readonly string m_privmsgformat = "PRIVMSG {0} :<{1} in {2}>: {3}";
-        private readonly string m_user = "USER OpenSimBot 8 * :I'm a OpenSim to irc bot";
         private Thread listener;
-        private bool m_connected;
-        private List<Scene> m_last_scenes;
-        private string m_nick;
+
+        private string m_basenick = null;
+        private string m_channel = null;
+        private bool m_connected = false;
+        private bool m_enabled = false;
+        private List<Scene> m_last_scenes = null;
+        private string m_nick = null;
+        private uint m_port = 6668;
+        private string m_privmsgformat = "PRIVMSG {0} :<{1} in {2}>: {3}";
         private StreamReader m_reader;
-        private List<Scene> m_scenes;
-        private string m_server;
+        private List<Scene> m_scenes = null;
+        private string m_server = null;
 
         private NetworkStream m_stream;
         internal object m_syncConnect = new object();
         private TcpClient m_tcp;
+        private string m_user = "USER OpenSimBot 8 * :I'm a OpenSim to irc bot";
         private StreamWriter m_writer;
 
         private Thread pingSender;
@@ -478,13 +478,13 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Chat
                     m_reader = new StreamReader(m_stream);
                     m_writer = new StreamWriter(m_stream);
 
-                    pingSender = new Thread(PingRun);
+                    pingSender = new Thread(new ThreadStart(PingRun));
                     pingSender.Name = "PingSenderThread";
                     pingSender.IsBackground = true;
                     pingSender.Start();
                     ThreadTracker.Add(pingSender);
 
-                    listener = new Thread(ListenerRun);
+                    listener = new Thread(new ThreadStart(ListenerRun));
                     listener.Name = "IRCChatModuleListenerThread";
                     listener.IsBackground = true;
                     listener.Start();
@@ -545,7 +545,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Chat
             }
             catch (Exception ex)
             {
-                m_log.Error("[IRC]: PrivMsg exception trap:" + ex);
+                m_log.Error("[IRC]: PrivMsg exception trap:" + ex.ToString());
             }
         }
 
@@ -588,7 +588,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Chat
             {
                 try
                 {
-                    if (m_connected)
+                    if (m_connected == true)
                     {
                         m_writer.WriteLine("PING :" + m_server);
                         m_writer.Flush();
@@ -602,7 +602,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Chat
                 }
                 catch (Exception ex)
                 {
-                    m_log.Error("[IRC]: PingRun exception trap:" + ex + "\n" + ex.StackTrace);
+                    m_log.Error("[IRC]: PingRun exception trap:" + ex.ToString() + "\n" + ex.StackTrace);
                 }
             }
         }
@@ -615,7 +615,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Chat
             {
                 try
                 {
-                    while (m_connected && ((inputLine = m_reader.ReadLine()) != null))
+                    while ((m_connected == true) && ((inputLine = m_reader.ReadLine()) != null))
                     {
                         // Console.WriteLine(inputLine);
                         if (inputLine.Contains(m_channel))
@@ -659,7 +659,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Chat
                 }
                 catch (Exception ex)
                 {
-                    m_log.Error("[IRC]: ListenerRun exception trap:" + ex + "\n" + ex.StackTrace);
+                    m_log.Error("[IRC]: ListenerRun exception trap:" + ex.ToString() + "\n" + ex.StackTrace);
                 }
             }
         }
@@ -685,7 +685,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Chat
             }
             catch (Exception ex) // IRC gate should not crash Sim
             {
-                m_log.Error("[IRC]: BroadcastSim Exception Trap:" + ex + "\n" + ex.StackTrace);
+                m_log.Error("[IRC]: BroadcastSim Exception Trap:" + ex.ToString() + "\n" + ex.StackTrace);
             }
         }
 

+ 40 - 40
OpenSim/Region/Environment/Modules/Avatar/Currency/SampleMoney/SampleMoneyModule.cs

@@ -65,55 +65,55 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Currency.SampleMoney
     public class SampleMoneyModule : IMoneyModule
     {
         private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
-        private readonly Dictionary<LLUUID, int> m_KnownClientFunds = new Dictionary<LLUUID, int>();
-
-        /// <summary>
-        /// Region UUIDS indexed by AgentID
-        /// </summary>
-        private readonly Dictionary<LLUUID, LLUUID> m_rootAgents = new Dictionary<LLUUID, LLUUID>();
-
-        /// <summary>
-        /// Scenes by Region Handle
-        /// </summary>
-        private readonly Dictionary<ulong, Scene> m_scenel = new Dictionary<ulong, Scene>();
 
         /// <summary>
         /// Where Stipends come from and Fees go to.
         /// </summary>
         private LLUUID EconomyBaseAccount = LLUUID.Zero;
 
-        private float EnergyEfficiency;
-        private bool gridmode;
+        private float EnergyEfficiency = 0f;
+        private bool gridmode = false;
         private ObjectPaid handerOnObjectPaid;
         private bool m_enabled = true;
 
         private IConfigSource m_gConfig;
 
         private bool m_keepMoneyAcrossLogins = true;
+        private Dictionary<LLUUID, int> m_KnownClientFunds = new Dictionary<LLUUID, int>();
         private string m_LandAddress = String.Empty;
 
         private int m_minFundsBeforeRefresh = 100;
         private string m_MoneyAddress = String.Empty;
 
+        /// <summary>
+        /// Region UUIDS indexed by AgentID
+        /// </summary>
+        private Dictionary<LLUUID, LLUUID> m_rootAgents = new Dictionary<LLUUID, LLUUID>();
+
+        /// <summary>
+        /// Scenes by Region Handle
+        /// </summary>
+        private Dictionary<ulong, Scene> m_scenel = new Dictionary<ulong, Scene>();
+
         private int m_stipend = 1000;
 
         private int ObjectCapacity = 45000;
-        private int ObjectCount;
-        private int PriceEnergyUnit;
-        private int PriceGroupCreate;
-        private int PriceObjectClaim;
-        private float PriceObjectRent;
-        private float PriceObjectScaleFactor;
-        private int PriceParcelClaim;
-        private float PriceParcelClaimFactor;
-        private int PriceParcelRent;
-        private int PricePublicObjectDecay;
-        private int PricePublicObjectDelete;
-        private int PriceRentLight;
-        private int PriceUpload;
-        private int TeleportMinPrice;
-
-        private float TeleportPriceExponent;
+        private int ObjectCount = 0;
+        private int PriceEnergyUnit = 0;
+        private int PriceGroupCreate = 0;
+        private int PriceObjectClaim = 0;
+        private float PriceObjectRent = 0f;
+        private float PriceObjectScaleFactor = 0f;
+        private int PriceParcelClaim = 0;
+        private float PriceParcelClaimFactor = 0f;
+        private int PriceParcelRent = 0;
+        private int PricePublicObjectDecay = 0;
+        private int PricePublicObjectDelete = 0;
+        private int PriceRentLight = 0;
+        private int PriceUpload = 0;
+        private int TeleportMinPrice = 0;
+
+        private float TeleportPriceExponent = 0f;
         private int UserLevelPaysFees = 2;
         private Scene XMLRPCHandler;
 
@@ -305,7 +305,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Currency.SampleMoney
                         Hashtable hbinfo =
                             GetBalanceForUserFromMoneyServer(client.AgentId, client.SecureSessionId, s.RegionInfo.originRegionID.ToString(),
                                                              s.RegionInfo.regionSecret);
-                        if ((bool) hbinfo["success"])
+                        if ((bool) hbinfo["success"] == true)
                         {
                             Helpers.TryParse((string) hbinfo["agentId"], out agentID);
                             try
@@ -333,7 +333,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Currency.SampleMoney
                         else
                         {
                             m_log.WarnFormat("[MONEY]: Getting Money for user {0} failed with the following message:{1}", agentID,
-                                             hbinfo["errorMessage"]);
+                                             (string) hbinfo["errorMessage"]);
                             client.SendAlertMessage((string) hbinfo["errorMessage"]);
                         }
                         SendMoneyBalance(client, agentID, client.SessionId, LLUUID.Zero);
@@ -660,7 +660,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Currency.SampleMoney
 
                     Hashtable hresult = genericCurrencyXMLRPCRequest(ht, "regionMoveMoney");
 
-                    if ((bool) hresult["success"])
+                    if ((bool) hresult["success"] == true)
                     {
                         int funds1 = 0;
                         int funds2 = 0;
@@ -718,7 +718,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Currency.SampleMoney
                         Hashtable hbinfo =
                             GetBalanceForUserFromMoneyServer(aClient.AgentId, aClient.SecureSessionId, s.RegionInfo.originRegionID.ToString(),
                                                              s.RegionInfo.regionSecret);
-                        if ((bool) hbinfo["success"])
+                        if ((bool) hbinfo["success"] == true)
                         {
                             try
                             {
@@ -743,7 +743,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Currency.SampleMoney
                         else
                         {
                             m_log.WarnFormat("[MONEY]: Getting Money for user {0} failed with the following message:{1}", agentId,
-                                             hbinfo["errorMessage"]);
+                                             (string) hbinfo["errorMessage"]);
                             aClient.SendAlertMessage((string) hbinfo["errorMessage"]);
                         }
                     }
@@ -812,7 +812,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Currency.SampleMoney
             string secret = (string) requestData["secret"];
 
             Scene userScene = GetRandomScene();
-            if (userScene.RegionInfo.regionSecret == secret)
+            if (userScene.RegionInfo.regionSecret.ToString() == secret)
             {
                 IClientAPI client = LocateClientObject(agentId);
 
@@ -1238,7 +1238,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Currency.SampleMoney
         {
             lock (e)
             {
-                if (e.economyValidated && e.transactionID == 0)
+                if (e.economyValidated == true && e.transactionID == 0)
                 {
                     e.transactionID = Util.UnixTimeSinceEpoch();
 
@@ -1328,7 +1328,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Currency.SampleMoney
             else
             {
                 m_log.Warn("[MONEY]: Potential Fraud Warning, got money transfer request for avatar that isn't in this simulator - Details; Sender:" +
-                           e.sender + " Receiver: " + e.receiver + " Amount: " + e.amount);
+                           e.sender.ToString() + " Receiver: " + e.receiver.ToString() + " Amount: " + e.amount.ToString());
             }
         }
 
@@ -1400,7 +1400,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Currency.SampleMoney
                             {
                                 Hashtable hresult =
                                     claim_user(avatar.UUID, avatar.ControllingClient.SecureSessionId, regionID, RegionItem.RegionInfo.regionSecret);
-                                if ((bool) hresult["success"])
+                                if ((bool) hresult["success"] == true)
                                 {
                                     int funds = 0;
                                     try
@@ -1432,7 +1432,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Currency.SampleMoney
                         if (RegionItem != null)
                         {
                             Hashtable hresult = claim_user(avatar.UUID, avatar.ControllingClient.SecureSessionId, regionID, RegionItem.RegionInfo.regionSecret);
-                            if ((bool) hresult["success"])
+                            if ((bool) hresult["success"] == true)
                             {
                                 int funds = 0;
                                 try
@@ -1460,7 +1460,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Currency.SampleMoney
         #endregion
     }
 
-    public enum TransactionType
+    public enum TransactionType : int
     {
         SystemGenerated = 0,
         RegionMoneyRequest = 1,

+ 17 - 17
OpenSim/Region/Environment/Modules/Avatar/Friends/FriendsModule.cs

@@ -42,10 +42,10 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Friends
     {
         private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
 
-        private readonly Dictionary<LLUUID, List<FriendListItem>> FriendLists = new Dictionary<LLUUID, List<FriendListItem>>();
-        private readonly Dictionary<LLUUID, LLUUID> m_pendingFriendRequests = new Dictionary<LLUUID, LLUUID>();
-        private readonly Dictionary<LLUUID, ulong> m_rootAgents = new Dictionary<LLUUID, ulong>();
-        private readonly List<Scene> m_scene = new List<Scene>();
+        private Dictionary<LLUUID, List<FriendListItem>> FriendLists = new Dictionary<LLUUID, List<FriendListItem>>();
+        private Dictionary<LLUUID, LLUUID> m_pendingFriendRequests = new Dictionary<LLUUID, LLUUID>();
+        private Dictionary<LLUUID, ulong> m_rootAgents = new Dictionary<LLUUID, ulong>();
+        private List<Scene> m_scene = new List<Scene>();
 
         #region IRegionModule Members
 
@@ -213,7 +213,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Friends
             List<LLUUID> updateUsers = new List<LLUUID>();
             foreach (FriendListItem fli in lfli)
             {
-                if (fli.onlinestatus)
+                if (fli.onlinestatus == true)
                 {
                     updateUsers.Add(fli.Friend);
                 }
@@ -357,20 +357,20 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Friends
             // https://wiki.secondlife.com/wiki/ImprovedInstantMessage
 
             // 38 == Offer friendship
-            if (dialog == 38)
+            if (dialog == (byte) 38)
             {
                 LLUUID friendTransactionID = LLUUID.Random();
 
                 m_pendingFriendRequests.Add(friendTransactionID, fromAgentID);
 
-                m_log.Info("[FRIEND]: 38 - From:" + fromAgentID + " To: " + toAgentID + " Session:" + imSessionID + " Message:" +
+                m_log.Info("[FRIEND]: 38 - From:" + fromAgentID.ToString() + " To: " + toAgentID.ToString() + " Session:" + imSessionID.ToString() + " Message:" +
                            message);
                 GridInstantMessage msg = new GridInstantMessage();
                 msg.fromAgentID = fromAgentID.UUID;
                 msg.fromAgentSession = fromAgentSession.UUID;
                 msg.toAgentID = toAgentID.UUID;
                 msg.imSessionID = friendTransactionID.UUID; // This is the item we're mucking with here
-                m_log.Info("[FRIEND]: Filling Session: " + msg.imSessionID);
+                m_log.Info("[FRIEND]: Filling Session: " + msg.imSessionID.ToString());
                 msg.timestamp = timestamp;
                 if (client != null)
                 {
@@ -393,16 +393,16 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Friends
             }
 
             // 39 == Accept Friendship
-            if (dialog == 39)
+            if (dialog == (byte) 39)
             {
-                m_log.Info("[FRIEND]: 39 - From:" + fromAgentID + " To: " + toAgentID + " Session:" + imSessionID + " Message:" +
+                m_log.Info("[FRIEND]: 39 - From:" + fromAgentID.ToString() + " To: " + toAgentID.ToString() + " Session:" + imSessionID.ToString() + " Message:" +
                            message);
             }
 
             // 40 == Decline Friendship
-            if (dialog == 40)
+            if (dialog == (byte) 40)
             {
-                m_log.Info("[FRIEND]: 40 - From:" + fromAgentID + " To: " + toAgentID + " Session:" + imSessionID + " Message:" +
+                m_log.Info("[FRIEND]: 40 - From:" + fromAgentID.ToString() + " To: " + toAgentID.ToString() + " Session:" + imSessionID.ToString() + " Message:" +
                            message);
             }
         }
@@ -433,14 +433,14 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Friends
                 msg.ParentEstateID = 0;
                 msg.timestamp = (uint) Util.UnixTimeSinceEpoch();
                 msg.RegionID = SceneAgentIn.RegionInfo.RegionID.UUID;
-                msg.dialog = 39; // Approved friend request
+                msg.dialog = (byte) 39; // Approved friend request
                 msg.Position = new sLLVector3();
-                msg.offline = 0;
+                msg.offline = (byte) 0;
                 msg.binaryBucket = new byte[0];
                 // We don't really care which scene we pipe it through, it goes to the shared IM Module and/or the database
 
                 SceneAgentIn.TriggerGridInstantMessage(msg, InstantMessageReceiver.IMModule);
-                SceneAgentIn.StoreAddFriendship(m_pendingFriendRequests[transactionID], agentID, 1);
+                SceneAgentIn.StoreAddFriendship(m_pendingFriendRequests[transactionID], agentID, (uint) 1);
                 m_pendingFriendRequests.Remove(transactionID);
 
                 // TODO: Inform agent that the friend is online
@@ -471,9 +471,9 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Friends
                 msg.ParentEstateID = 0;
                 msg.timestamp = (uint) Util.UnixTimeSinceEpoch();
                 msg.RegionID = SceneAgentIn.RegionInfo.RegionID.UUID;
-                msg.dialog = 40; // Deny friend request
+                msg.dialog = (byte) 40; // Deny friend request
                 msg.Position = new sLLVector3();
-                msg.offline = 0;
+                msg.offline = (byte) 0;
                 msg.binaryBucket = new byte[0];
                 SceneAgentIn.TriggerGridInstantMessage(msg, InstantMessageReceiver.IMModule);
                 m_pendingFriendRequests.Remove(transactionID);

+ 5 - 5
OpenSim/Region/Environment/Modules/Avatar/Groups/GroupsModule.cs

@@ -41,10 +41,10 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Groups
     {
         private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
 
-        private readonly Dictionary<LLUUID, GroupList> m_grouplistmap = new Dictionary<LLUUID, GroupList>();
-        private readonly Dictionary<LLUUID, GroupData> m_groupmap = new Dictionary<LLUUID, GroupData>();
-        private readonly Dictionary<LLUUID, IClientAPI> m_iclientmap = new Dictionary<LLUUID, IClientAPI>();
-        private readonly List<Scene> m_scene = new List<Scene>();
+        private Dictionary<LLUUID, GroupList> m_grouplistmap = new Dictionary<LLUUID, GroupList>();
+        private Dictionary<LLUUID, GroupData> m_groupmap = new Dictionary<LLUUID, GroupData>();
+        private Dictionary<LLUUID, IClientAPI> m_iclientmap = new Dictionary<LLUUID, IClientAPI>();
+        private List<Scene> m_scene = new List<Scene>();
 
         #region IRegionModule Members
 
@@ -214,7 +214,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Groups
                     }
                     else
                     {
-                        m_log.Info("[GROUP]: Removing all reference to groups for " + agentID);
+                        m_log.Info("[GROUP]: Removing all reference to groups for " + agentID.ToString());
                     }
                     m_iclientmap.Remove(agentID);
                 }

+ 1 - 1
OpenSim/Region/Environment/Modules/Avatar/Inventory/InventoryModule.cs

@@ -46,7 +46,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Inventory
         /// occurs in the initial offer message, not the accept message.  So this dictionary links
         /// IM Session Ids to ItemIds
         /// </summary>
-        private readonly IDictionary<LLUUID, LLUUID> m_pendingOffers = new Dictionary<LLUUID, LLUUID>();
+        private IDictionary<LLUUID, LLUUID> m_pendingOffers = new Dictionary<LLUUID, LLUUID>();
 
         private Scene m_scene;
 

+ 5 - 1
OpenSim/Region/Environment/Modules/Avatar/Profiles/AvatarProfilesModule.cs

@@ -41,6 +41,10 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Profiles
         private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
         private Scene m_scene;
 
+        public AvatarProfilesModule()
+        {
+        }
+
         #region IRegionModule Members
 
         public void Initialise(Scene scene, IConfigSource config)
@@ -100,7 +104,7 @@ namespace OpenSim.Region.Environment.Modules.Avatar.Profiles
             }
             else
             {
-                m_log.Debug("[AvatarProfilesModule]: Got null for profile for " + avatarID);
+                m_log.Debug("[AvatarProfilesModule]: Got null for profile for " + avatarID.ToString());
             }
         }
 

+ 11 - 11
OpenSim/Region/Environment/Modules/Framework/Commander.cs

@@ -42,11 +42,11 @@ namespace OpenSim.Region.Environment.Modules.Framework
     public class Command : ICommand
     {
         private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
-        private readonly List<CommandArgument> m_args = new List<CommandArgument>();
+        private List<CommandArgument> m_args = new List<CommandArgument>();
 
-        private readonly Action<object[]> m_command;
-        private readonly string m_help;
-        private readonly string m_name;
+        private Action<object[]> m_command;
+        private string m_help;
+        private string m_name;
 
         public Command(string name, Action<Object[]> command, string help)
         {
@@ -164,9 +164,9 @@ namespace OpenSim.Region.Environment.Modules.Framework
     /// </summary>
     public class CommandArgument
     {
-        private readonly string m_help;
-        private readonly string m_name;
-        private readonly string m_type;
+        private string m_help;
+        private string m_name;
+        private string m_type;
         private Object m_val;
 
         public CommandArgument(string name, string help, string type)
@@ -204,8 +204,8 @@ namespace OpenSim.Region.Environment.Modules.Framework
     public class Commander : ICommander
     {
         private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
-        private readonly Dictionary<string, ICommand> m_commands = new Dictionary<string, ICommand>();
-        private readonly string m_name;
+        private Dictionary<string, ICommand> m_commands = new Dictionary<string, ICommand>();
+        private string m_name;
 
         public Commander(string name)
         {
@@ -235,11 +235,11 @@ namespace OpenSim.Region.Environment.Modules.Framework
                 }
                 classSrc = classSrc.Remove(classSrc.Length - 1); // Delete the last comma
                 classSrc += " )\n\t{\n";
-                classSrc += "\t\tObject[] args = new Object[" + com.Arguments.Count + "];\n";
+                classSrc += "\t\tObject[] args = new Object[" + com.Arguments.Count.ToString() + "];\n";
                 int i = 0;
                 foreach (KeyValuePair<string, string> arg in com.Arguments)
                 {
-                    classSrc += "\t\targs[" + i + "] = " + Util.Md5Hash(arg.Key) + "  " + ";\n";
+                    classSrc += "\t\targs[" + i.ToString() + "] = " + Util.Md5Hash(arg.Key) + "  " + ";\n";
                     i++;
                 }
                 classSrc += "\t\tGetCommander(\"" + m_name + "\").Run(\"" + com.Name + "\", args);\n";

+ 1 - 1
OpenSim/Region/Environment/Modules/Framework/CommanderTestModule.cs

@@ -34,7 +34,7 @@ namespace OpenSim.Region.Environment.Modules.Framework
 {
     public class CommanderTestModule : IRegionModule, ICommandableModule
     {
-        private readonly Commander m_commander = new Commander("CommanderTest");
+        private Commander m_commander = new Commander("CommanderTest");
         private Scene m_scene;
 
         #region ICommandableModule Members

+ 2 - 2
OpenSim/Region/Environment/Modules/Grid/Interregion/InterregionModule.cs

@@ -29,14 +29,14 @@ namespace OpenSim.Region.Environment.Modules.Grid.Interregion
         #endregion
 
         private readonly Dictionary<Type, Object> m_interfaces = new Dictionary<Type, object>();
-        private readonly Object m_lockObject = new object();
         private readonly List<Location> m_myLocations = new List<Location>();
 
         private readonly Dictionary<Location, string[]> m_neighbourInterfaces = new Dictionary<Location, string[]>();
         private readonly Dictionary<Location, RemotingObject> m_neighbourRemote = new Dictionary<Location, RemotingObject>();
         private IConfigSource m_config;
-        private bool m_enabled;
+        private bool m_enabled = false;
 
+        private Object m_lockObject = new object();
         private RemotingObject m_myRemote;
         private TcpChannel m_tcpChannel;
         private int m_tcpPort = 10101;

+ 5 - 5
OpenSim/Region/Environment/Modules/Scripting/DynamicTexture/DynamicTextureModule.cs

@@ -40,12 +40,12 @@ namespace OpenSim.Region.Environment.Modules.Scripting.DynamicTexture
 {
     public class DynamicTextureModule : IRegionModule, IDynamicTextureManager
     {
-        private readonly Dictionary<LLUUID, Scene> RegisteredScenes = new Dictionary<LLUUID, Scene>();
+        private Dictionary<LLUUID, Scene> RegisteredScenes = new Dictionary<LLUUID, Scene>();
 
-        private readonly Dictionary<string, IDynamicTextureRender> RenderPlugins =
+        private Dictionary<string, IDynamicTextureRender> RenderPlugins =
             new Dictionary<string, IDynamicTextureRender>();
 
-        private readonly Dictionary<LLUUID, DynamicTextureUpdater> Updaters = new Dictionary<LLUUID, DynamicTextureUpdater>();
+        private Dictionary<LLUUID, DynamicTextureUpdater> Updaters = new Dictionary<LLUUID, DynamicTextureUpdater>();
 
         #region IDynamicTextureManager Members
 
@@ -176,14 +176,14 @@ namespace OpenSim.Region.Environment.Modules.Scripting.DynamicTexture
 
         public class DynamicTextureUpdater
         {
-            public bool BlendWithOldTexture;
+            public bool BlendWithOldTexture = false;
             public string BodyData;
             public string ContentType;
             public byte FrontAlpha = 255;
             public LLUUID LastAssetID;
             public string Params;
             public LLUUID PrimID;
-            public bool SetNewFrontAlpha;
+            public bool SetNewFrontAlpha = false;
             public LLUUID SimUUID;
             public LLUUID UpdaterID;
             public int UpdateTimer;

+ 5 - 1
OpenSim/Region/Environment/Modules/Scripting/HttpRequest/ScriptsHttpRequests.cs

@@ -84,7 +84,7 @@ namespace OpenSim.Region.Environment.Modules.Scripting.HttpRequest
 {
     public class HttpRequestModule : IRegionModule, IHttpRequests
     {
-        private readonly object HttpListLock = new object();
+        private object HttpListLock = new object();
         private int httpTimeout = 30000;
         private string m_name = "HttpScriptRequests";
 
@@ -93,6 +93,10 @@ namespace OpenSim.Region.Environment.Modules.Scripting.HttpRequest
         private Scene m_scene;
         private Queue<HttpRequestClass> rpcQueue = new Queue<HttpRequestClass>();
 
+        public HttpRequestModule()
+        {
+        }
+
         #region IHttpRequests Members
 
         public LLUUID MakeHttpRequest(string url, string parameters, string body)

+ 5 - 5
OpenSim/Region/Environment/Modules/Scripting/LoadImageURL/LoadImageURLModule.cs

@@ -120,9 +120,9 @@ namespace OpenSim.Region.Environment.Modules.Scripting.LoadImageURL
 
         private void MakeHttpRequest(string url, LLUUID requestID)
         {
-            WebRequest request = WebRequest.Create(url);
+            WebRequest request = HttpWebRequest.Create(url);
             RequestState state = new RequestState((HttpWebRequest) request, requestID);
-            IAsyncResult result = request.BeginGetResponse(HttpRequestReturn, state);
+            IAsyncResult result = request.BeginGetResponse(new AsyncCallback(HttpRequestReturn), state);
 
             TimeSpan t = (DateTime.UtcNow - new DateTime(1970, 1, 1));
             state.TimeOfRequest = (int) t.TotalSeconds;
@@ -131,7 +131,7 @@ namespace OpenSim.Region.Environment.Modules.Scripting.LoadImageURL
         private void HttpRequestReturn(IAsyncResult result)
         {
             RequestState state = (RequestState) result.AsyncState;
-            WebRequest request = state.Request;
+            WebRequest request = (WebRequest) state.Request;
             HttpWebResponse response = (HttpWebResponse) request.EndGetResponse(result);
             if (response.StatusCode == HttpStatusCode.OK)
             {
@@ -175,9 +175,9 @@ namespace OpenSim.Region.Environment.Modules.Scripting.LoadImageURL
 
         public class RequestState
         {
-            public HttpWebRequest Request;
+            public HttpWebRequest Request = null;
             public LLUUID RequestID = LLUUID.Zero;
-            public int TimeOfRequest;
+            public int TimeOfRequest = 0;
 
             public RequestState(HttpWebRequest request, LLUUID requestID)
             {

+ 7 - 3
OpenSim/Region/Environment/Modules/Scripting/VectorRender/VectorRenderModule.cs

@@ -48,6 +48,10 @@ namespace OpenSim.Region.Environment.Modules.Scripting.VectorRender
         private Scene m_scene;
         private IDynamicTextureManager m_textureManager;
 
+        public VectorRenderModule()
+        {
+        }
+
         #region IDynamicTextureRender Members
 
         public string GetContentType()
@@ -134,7 +138,7 @@ namespace OpenSim.Region.Environment.Modules.Scripting.VectorRender
             catch (Exception e)
             {
 //Ckrinke: Add a WriteLine to remove the warning about 'e' defined but not used
-                Console.WriteLine("Problem with Draw. Please verify parameters." + e);
+                Console.WriteLine("Problem with Draw. Please verify parameters." + e.ToString());
             }
 
             if ((size < 128) || (size > 1024))
@@ -256,7 +260,7 @@ namespace OpenSim.Region.Environment.Modules.Scripting.VectorRender
                     endPoint.X = (int) x;
                     endPoint.Y = (int) y;
                     Image image = ImageHttpRequest(nextLine);
-                    graph.DrawImage(image, startPoint.X, startPoint.Y, x, y);
+                    graph.DrawImage(image, (float) startPoint.X, (float) startPoint.Y, x, y);
                     startPoint.X += endPoint.X;
                     startPoint.Y += endPoint.Y;
                 }
@@ -349,7 +353,7 @@ namespace OpenSim.Region.Environment.Modules.Scripting.VectorRender
 
         private Bitmap ImageHttpRequest(string url)
         {
-            WebRequest request = WebRequest.Create(url);
+            WebRequest request = HttpWebRequest.Create(url);
 //Ckrinke: Comment out for now as 'str' is unused. Bring it back into play later when it is used.
 //Ckrinke            Stream str = null;
             HttpWebResponse response = (HttpWebResponse) (request).GetResponse();

+ 6 - 2
OpenSim/Region/Environment/Modules/Scripting/WorldComm/WorldCommModule.cs

@@ -75,6 +75,10 @@ namespace OpenSim.Region.Environment.Modules.Scripting.WorldComm
         private Queue m_pendingQ;
         private Scene m_scene;
 
+        public WorldCommModule()
+        {
+        }
+
         #region IRegionModule Members
 
         public void Initialise(Scene scene, IConfigSource config)
@@ -320,8 +324,8 @@ namespace OpenSim.Region.Environment.Modules.Scripting.WorldComm
     public class ListenerManager
     {
         //private Dictionary<int, ListenerInfo> m_listeners;
-        private readonly Hashtable m_listeners = Hashtable.Synchronized(new Hashtable());
         private object ListenersLock = new object();
+        private Hashtable m_listeners = Hashtable.Synchronized(new Hashtable());
         private int m_MaxListeners = 100;
 
         public int AddListener(uint localID, LLUUID itemID, LLUUID hostID, int channel, string name, string id, string msg)
@@ -481,7 +485,6 @@ namespace OpenSim.Region.Environment.Modules.Scripting.WorldComm
 
     public class ListenerInfo
     {
-        private readonly LLUUID m_sourceItemID; // ID of the scenePart or avatar source of the message
         private bool m_active; // Listener is active or not
         private int m_channel; // Channel
         private int m_handle; // Assigned handle of this listener
@@ -491,6 +494,7 @@ namespace OpenSim.Region.Environment.Modules.Scripting.WorldComm
         private uint m_localID; // Local ID from script engine
         private string m_message; // The message
         private string m_name; // Object name to filter messages from
+        private LLUUID m_sourceItemID; // ID of the scenePart or avatar source of the message
 
         public ListenerInfo(uint localID, int handle, LLUUID ItemID, LLUUID hostID, int channel, string name, LLUUID id, string message)
         {

+ 12 - 12
OpenSim/Region/Environment/Modules/Scripting/XMLRPC/XMLRPCModule.cs

@@ -78,20 +78,20 @@ namespace OpenSim.Region.Environment.Modules.Scripting.XMLRPC
     public class XMLRPCModule : IRegionModule, IXMLRPC
     {
         private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
-        private readonly List<Scene> m_scenes = new List<Scene>();
-        private readonly object XMLRPCListLock = new object();
 
         private string m_name = "XMLRPCModule";
 
         // <channel id, RPCChannelInfo>
         private Dictionary<LLUUID, RPCChannelInfo> m_openChannels;
         private Dictionary<LLUUID, SendRemoteDataRequest> m_pendingSRDResponses;
-        private int m_remoteDataPort;
+        private int m_remoteDataPort = 0;
 
         private Dictionary<LLUUID, RPCRequestInfo> m_rpcPending;
         private Dictionary<LLUUID, RPCRequestInfo> m_rpcPendingResponses;
+        private List<Scene> m_scenes = new List<Scene>();
         private int RemoteReplyScriptTimeout = 9000;
         private int RemoteReplyScriptWait = 300;
+        private object XMLRPCListLock = new object();
 
         #region IRegionModule Members
 
@@ -428,15 +428,15 @@ namespace OpenSim.Region.Environment.Modules.Scripting.XMLRPC
 
     public class RPCRequestInfo
     {
-        private readonly LLUUID m_ChannelKey;
-        private readonly string m_IntVal;
-        private readonly LLUUID m_ItemID;
-        private readonly uint m_localID;
-        private readonly LLUUID m_MessageID;
-        private readonly string m_StrVal;
+        private LLUUID m_ChannelKey;
+        private string m_IntVal;
+        private LLUUID m_ItemID;
+        private uint m_localID;
+        private LLUUID m_MessageID;
         private bool m_processed;
         private int m_respInt;
         private string m_respStr;
+        private string m_StrVal;
 
         public RPCRequestInfo(uint localID, LLUUID itemID, LLUUID channelKey, string strVal, string intVal)
         {
@@ -514,9 +514,9 @@ namespace OpenSim.Region.Environment.Modules.Scripting.XMLRPC
 
     public class RPCChannelInfo
     {
-        private readonly LLUUID m_ChannelKey;
-        private readonly LLUUID m_itemID;
-        private readonly uint m_localID;
+        private LLUUID m_ChannelKey;
+        private LLUUID m_itemID;
+        private uint m_localID;
 
         public RPCChannelInfo(uint localID, LLUUID itemID, LLUUID channelID)
         {

+ 15 - 15
OpenSim/Region/Environment/Modules/World/Land/LandChannel.cs

@@ -44,8 +44,8 @@ namespace OpenSim.Region.Environment.Modules.World.Land
         //Land types set with flags in ParcelOverlay.
         //Only one of these can be used. 
         public const float BAN_LINE_SAFETY_HIEGHT = 100;
-        public const byte LAND_FLAG_PROPERTY_BORDER_SOUTH = 128; //Equals 10000000
-        public const byte LAND_FLAG_PROPERTY_BORDER_WEST = 64; //Equals 01000000
+        public const byte LAND_FLAG_PROPERTY_BORDER_SOUTH = (byte) 128; //Equals 10000000
+        public const byte LAND_FLAG_PROPERTY_BORDER_WEST = (byte) 64; //Equals 01000000
 
         //RequestResults (I think these are right, they seem to work):
         public const int LAND_RESULT_MULTIPLE = 1; // The request they made contained more than a single peice of land
@@ -55,26 +55,26 @@ namespace OpenSim.Region.Environment.Modules.World.Land
         public const int LAND_SELECT_OBJECTS_GROUP = 4;
         public const int LAND_SELECT_OBJECTS_OTHER = 8;
         public const int LAND_SELECT_OBJECTS_OWNER = 2;
-        public const byte LAND_TYPE_IS_BEING_AUCTIONED = 5; //Equals 00000101
-        public const byte LAND_TYPE_IS_FOR_SALE = 4; //Equals 00000100
-        public const byte LAND_TYPE_OWNED_BY_GROUP = 2; //Equals 00000010
-        public const byte LAND_TYPE_OWNED_BY_OTHER = 1; //Equals 00000001
-        public const byte LAND_TYPE_OWNED_BY_REQUESTER = 3; //Equals 00000011
-        public const byte LAND_TYPE_PUBLIC = 0; //Equals 00000000
+        public const byte LAND_TYPE_IS_BEING_AUCTIONED = (byte) 5; //Equals 00000101
+        public const byte LAND_TYPE_IS_FOR_SALE = (byte) 4; //Equals 00000100
+        public const byte LAND_TYPE_OWNED_BY_GROUP = (byte) 2; //Equals 00000010
+        public const byte LAND_TYPE_OWNED_BY_OTHER = (byte) 1; //Equals 00000001
+        public const byte LAND_TYPE_OWNED_BY_REQUESTER = (byte) 3; //Equals 00000011
+        public const byte LAND_TYPE_PUBLIC = (byte) 0; //Equals 00000000
 
         //These are other constants. Yay!
         public const int START_LAND_LOCAL_ID = 1;
 
         #endregion
 
-        private readonly int[,] landIDList = new int[64,64];
-        private readonly Dictionary<int, ILandObject> landList = new Dictionary<int, ILandObject>();
-        private readonly Scene m_scene;
+        private int[,] landIDList = new int[64,64];
+        private Dictionary<int, ILandObject> landList = new Dictionary<int, ILandObject>();
 
-        private bool landPrimCountTainted;
+        private bool landPrimCountTainted = false;
         private int lastLandLocalID = START_LAND_LOCAL_ID - 1;
 
         private bool m_allowedForcefulBans = true;
+        private Scene m_scene;
 
         public LandChannel(Scene scene)
         {
@@ -192,7 +192,7 @@ namespace OpenSim.Region.Environment.Modules.World.Land
         {
             lastLandLocalID++;
             new_land.landData.localID = lastLandLocalID;
-            landList.Add(lastLandLocalID, new_land.Copy());
+            landList.Add(lastLandLocalID, (LandObject) new_land.Copy());
 
 
             bool[,] landBitmap = new_land.getLandBitmap();
@@ -532,7 +532,7 @@ namespace OpenSim.Region.Environment.Modules.World.Land
             {
                 for (x = 0; x < 64; x++)
                 {
-                    byte tempByte = 0; //This represents the byte for the current 4x4
+                    byte tempByte = (byte) 0; //This represents the byte for the current 4x4
                     ILandObject currentParcelBlock = null;
 
                     try
@@ -611,7 +611,7 @@ namespace OpenSim.Region.Environment.Modules.World.Land
                                 packet = (ParcelOverlayPacket) PacketPool.Instance.GetPacket(PacketType.ParcelOverlay);
                                 packet.ParcelData.Data = byteArray;
                                 packet.ParcelData.SequenceID = sequenceID;
-                                remote_client.OutPacket(packet, ThrottleOutPacketType.Task);
+                                remote_client.OutPacket((Packet) packet, ThrottleOutPacketType.Task);
                                 sequenceID++;
                                 byteArray = new byte[LAND_BLOCKS_PER_PACKET];
                             }

+ 3 - 3
OpenSim/Region/Environment/Modules/World/Land/LandManagementModule.cs

@@ -45,14 +45,14 @@ namespace OpenSim.Region.Environment.Modules.World.Land
 
             m_scene.EventManager.OnParcelPrimCountAdd += landChannel.addPrimToLandPrimCounts;
             m_scene.EventManager.OnParcelPrimCountUpdate += landChannel.updateLandPrimCounts;
-            m_scene.EventManager.OnAvatarEnteringNewParcel += landChannel.handleAvatarChangingParcel;
-            m_scene.EventManager.OnClientMovement += landChannel.handleAnyClientMovement;
+            m_scene.EventManager.OnAvatarEnteringNewParcel += new EventManager.AvatarEnteringNewParcel(landChannel.handleAvatarChangingParcel);
+            m_scene.EventManager.OnClientMovement += new EventManager.ClientMovement(landChannel.handleAnyClientMovement);
             m_scene.EventManager.OnValidateLandBuy += landChannel.handleLandValidationRequest;
             m_scene.EventManager.OnLandBuy += landChannel.handleLandBuyRequest;
 
             lock (m_scene)
             {
-                m_scene.LandChannel = landChannel;
+                m_scene.LandChannel = (ILandChannel) landChannel;
             }
         }
 

+ 15 - 15
OpenSim/Region/Environment/Modules/World/Land/LandObject.cs

@@ -73,8 +73,6 @@ namespace OpenSim.Region.Environment.Modules.World.Land
             get { return m_scene.RegionInfo.RegionID; }
         }
 
-        #endregion
-
         #region Constructors
 
         public LandObject(LLUUID owner_id, bool is_group_owned, Scene scene)
@@ -100,7 +98,7 @@ namespace OpenSim.Region.Environment.Modules.World.Land
         {
             if (x >= 0 && y >= 0 && x <= Constants.RegionSize && x <= Constants.RegionSize)
             {
-                return landBitmap[x / 4, y / 4];
+                return (landBitmap[x / 4, y / 4] == true);
             }
             else
             {
@@ -150,7 +148,7 @@ namespace OpenSim.Region.Environment.Modules.World.Land
             updatePacket.ParcelData.GroupID = landData.groupID;
             updatePacket.ParcelData.GroupPrims = landData.groupPrims;
             updatePacket.ParcelData.IsGroupOwned = landData.isGroupOwned;
-            updatePacket.ParcelData.LandingType = landData.landingType;
+            updatePacket.ParcelData.LandingType = (byte) landData.landingType;
             updatePacket.ParcelData.LocalID = landData.localID;
             if (landData.area > 0)
             {
@@ -214,7 +212,7 @@ namespace OpenSim.Region.Environment.Modules.World.Land
                                                  landData.selectedPrims;
             updatePacket.ParcelData.UserLocation = landData.userLocation;
             updatePacket.ParcelData.UserLookAt = landData.userLookAt;
-            remote_client.OutPacket(updatePacket, ThrottleOutPacketType.Task);
+            remote_client.OutPacket((Packet) updatePacket, ThrottleOutPacketType.Task);
         }
 
         public void updateLandProperties(ParcelPropertiesUpdatePacket packet, IClientAPI remote_client)
@@ -357,7 +355,7 @@ namespace OpenSim.Region.Environment.Modules.World.Land
                 {
                     ParcelAccessListReplyPacket.ListBlock listBlock = new ParcelAccessListReplyPacket.ListBlock();
 
-                    listBlock.Flags = 0;
+                    listBlock.Flags = (uint) 0;
                     listBlock.ID = entry.AgentID;
                     listBlock.Time = 0;
 
@@ -369,7 +367,7 @@ namespace OpenSim.Region.Environment.Modules.World.Land
             {
                 ParcelAccessListReplyPacket.ListBlock listBlock = new ParcelAccessListReplyPacket.ListBlock();
 
-                listBlock.Flags = 0;
+                listBlock.Flags = (uint) 0;
                 listBlock.ID = LLUUID.Zero;
                 listBlock.Time = 0;
 
@@ -392,7 +390,7 @@ namespace OpenSim.Region.Environment.Modules.World.Land
                 replyPacket.Data.SequenceID = 0;
 
                 replyPacket.List = createAccessListArrayByFlag(ParcelManager.AccessList.Access);
-                remote_client.OutPacket(replyPacket, ThrottleOutPacketType.Task);
+                remote_client.OutPacket((Packet) replyPacket, ThrottleOutPacketType.Task);
             }
 
             if (flags == (uint) ParcelManager.AccessList.Ban || flags == (uint) ParcelManager.AccessList.Both)
@@ -404,7 +402,7 @@ namespace OpenSim.Region.Environment.Modules.World.Land
                 replyPacket.Data.SequenceID = 0;
 
                 replyPacket.List = createAccessListArrayByFlag(ParcelManager.AccessList.Ban);
-                remote_client.OutPacket(replyPacket, ThrottleOutPacketType.Task);
+                remote_client.OutPacket((Packet) replyPacket, ThrottleOutPacketType.Task);
             }
         }
 
@@ -484,7 +482,7 @@ namespace OpenSim.Region.Environment.Modules.World.Land
             {
                 for (y = 0; y < 64; y++)
                 {
-                    if (landBitmap[x, y])
+                    if (landBitmap[x, y] == true)
                     {
                         if (min_x > x) min_x = x;
                         if (min_y > y) min_y = y;
@@ -501,7 +499,7 @@ namespace OpenSim.Region.Environment.Modules.World.Land
             if (ty > 255)
                 ty = 255;
             landData.AABBMin =
-                new LLVector3((min_x * 4), (min_y * 4),
+                new LLVector3((float) (min_x * 4), (float) (min_y * 4),
                               (float) m_scene.Heightmap[tx, ty]);
 
             tx = max_x * 4;
@@ -511,7 +509,7 @@ namespace OpenSim.Region.Environment.Modules.World.Land
             if (ty > 255)
                 ty = 255;
             landData.AABBMax =
-                new LLVector3((max_x * 4), (max_y * 4),
+                new LLVector3((float) (max_x * 4), (float) (max_y * 4),
                               (float) m_scene.Heightmap[tx, ty]);
             landData.area = tempArea;
         }
@@ -659,7 +657,7 @@ namespace OpenSim.Region.Environment.Modules.World.Land
                     if (i % 8 == 0)
                     {
                         tempConvertArr[byteNum] = tempByte;
-                        tempByte = 0;
+                        tempByte = (byte) 0;
                         i = 0;
                         byteNum++;
                     }
@@ -679,7 +677,7 @@ namespace OpenSim.Region.Environment.Modules.World.Land
                 tempByte = landData.landBitmapByteArray[i];
                 for (bitNum = 0; bitNum < 8; bitNum++)
                 {
-                    bool bit = Convert.ToBoolean(Convert.ToByte(tempByte >> bitNum) & 1);
+                    bool bit = Convert.ToBoolean(Convert.ToByte(tempByte >> bitNum) & (byte) 1);
                     tempConvertMap[x, y] = bit;
                     x++;
                     if (x > 63)
@@ -753,7 +751,7 @@ namespace OpenSim.Region.Environment.Modules.World.Land
                     resultLocalIDs.RemoveAt(0);
                 }
                 pack.Data = data;
-                remote_client.OutPacket(pack, ThrottleOutPacketType.Task);
+                remote_client.OutPacket((Packet) pack, ThrottleOutPacketType.Task);
             }
         }
 
@@ -924,5 +922,7 @@ namespace OpenSim.Region.Environment.Modules.World.Land
         #endregion
 
         #endregion
+
+        #endregion
     }
 }

+ 7 - 7
OpenSim/Region/Environment/Modules/World/Serialiser/SerialiserModule.cs

@@ -37,10 +37,10 @@ namespace OpenSim.Region.Environment.Modules.World.Serialiser
 {
     public class SerialiserModule : IRegionModule, IRegionSerialiser
     {
-        private readonly Commander m_commander = new Commander("Export");
-        private readonly List<Scene> m_regions = new List<Scene>();
-        private readonly List<IFileSerialiser> m_serialisers = new List<IFileSerialiser>();
+        private Commander m_commander = new Commander("Export");
+        private List<Scene> m_regions = new List<Scene>();
         private string m_savedir = "exports" + "/";
+        private List<IFileSerialiser> m_serialisers = new List<IFileSerialiser>();
 
         #region IRegionModule Members
 
@@ -105,8 +105,8 @@ namespace OpenSim.Region.Environment.Modules.World.Serialiser
 
             TextWriter regionInfoWriter = new StreamWriter(saveDir + "README.TXT");
             regionInfoWriter.WriteLine("Region Name: " + scene.RegionInfo.RegionName);
-            regionInfoWriter.WriteLine("Region ID: " + scene.RegionInfo.RegionID);
-            regionInfoWriter.WriteLine("Backup Time: UTC " + DateTime.UtcNow);
+            regionInfoWriter.WriteLine("Region ID: " + scene.RegionInfo.RegionID.ToString());
+            regionInfoWriter.WriteLine("Backup Time: UTC " + DateTime.UtcNow.ToString());
             regionInfoWriter.WriteLine("Serialise Version: 0.1");
             regionInfoWriter.Close();
 
@@ -141,7 +141,7 @@ namespace OpenSim.Region.Environment.Modules.World.Serialiser
             {
                 if (region.RegionInfo.RegionName == (string) args[0])
                 {
-                    List<string> results = SerialiseRegion(region, m_savedir + region.RegionInfo.RegionID + "/");
+                    List<string> results = SerialiseRegion(region, m_savedir + region.RegionInfo.RegionID.ToString() + "/");
                 }
             }
         }
@@ -150,7 +150,7 @@ namespace OpenSim.Region.Environment.Modules.World.Serialiser
         {
             foreach (Scene region in m_regions)
             {
-                List<string> results = SerialiseRegion(region, m_savedir + region.RegionInfo.RegionID + "/");
+                List<string> results = SerialiseRegion(region, m_savedir + region.RegionInfo.RegionID.ToString() + "/");
             }
         }
 

+ 1 - 1
OpenSim/Region/Environment/Modules/World/Sun/SunModule.cs

@@ -127,7 +127,7 @@ namespace OpenSim.Region.Environment.Modules.World.Sun
         {
             long m_addticks = (DateTime.Now.Ticks - m_start) * m_dilation;
             DateTime dt = new DateTime(m_start + m_addticks);
-            return dt.Hour + (dt.Minute / 60.0);
+            return (double) dt.Hour + ((double) dt.Minute / 60.0);
         }
 
         private LLVector3 SunPos(double hour)

+ 1 - 1
OpenSim/Region/Environment/Modules/World/Terrain/Effects/CookieCutter.cs

@@ -78,7 +78,7 @@ namespace OpenSim.Region.Environment.Modules.World.Terrain.Effects
             {
                 for (y = 0; y < map.Height; y++)
                 {
-                    if (cliffMask[x, y])
+                    if (cliffMask[x, y] == true)
                         eroder.PaintEffect(map, x, y, 4, 0.1);
                 }
             }

+ 2 - 2
OpenSim/Region/Environment/Modules/World/Terrain/FileLoaders/LLRAW.cs

@@ -47,7 +47,7 @@ namespace OpenSim.Region.Environment.Modules.World.Terrain.FileLoaders
             {
                 for (x = 0; x < retval.Width; x++)
                 {
-                    retval[x, y] = bs.ReadByte() * (bs.ReadByte() / 127.0);
+                    retval[x, y] = (double) bs.ReadByte() * ((double) bs.ReadByte() / 127.0);
                     bs.ReadBytes(11); // Advance the stream to next bytes.
                 }
             }
@@ -76,7 +76,7 @@ namespace OpenSim.Region.Environment.Modules.World.Terrain.FileLoaders
             {
                 for (j = 0; j < 256; j++)
                 {
-                    lookupHeightTable[i + (j * 256)] = (i * (j / 127.0));
+                    lookupHeightTable[i + (j * 256)] = ((double) i * ((double) j / 127.0));
                 }
             }
 

+ 3 - 3
OpenSim/Region/Environment/Modules/World/Terrain/FileLoaders/Terragen.cs

@@ -50,14 +50,14 @@ namespace OpenSim.Region.Environment.Modules.World.Terrain.FileLoaders
             BinaryReader bs = new BinaryReader(s);
 
             bool eof = false;
-            if (Encoding.ASCII.GetString(bs.ReadBytes(16)) == "TERRAGENTERRAIN ")
+            if (ASCIIEncoding.ASCII.GetString(bs.ReadBytes(16)) == "TERRAGENTERRAIN ")
             {
                 // Terragen file
                 while (eof == false)
                 {
                     int w = 256;
                     int h = 256;
-                    string tmp = Encoding.ASCII.GetString(bs.ReadBytes(4));
+                    string tmp = ASCIIEncoding.ASCII.GetString(bs.ReadBytes(4));
                     switch (tmp)
                     {
                         case "SIZE":
@@ -84,7 +84,7 @@ namespace OpenSim.Region.Environment.Modules.World.Terrain.FileLoaders
                             {
                                 for (y = 0; y < h; y++)
                                 {
-                                    retval[x, y] = baseHeight + bs.ReadInt16() * (double) heightScale / 65536.0;
+                                    retval[x, y] = (double) baseHeight + (double) bs.ReadInt16() * (double) heightScale / 65536.0;
                                 }
                             }
                             break;

+ 1 - 0
OpenSim/Region/Environment/Modules/World/Terrain/PaintBrushes/FlattenSphere.cs

@@ -31,6 +31,7 @@ namespace OpenSim.Region.Environment.Modules.World.Terrain.PaintBrushes
 {
     public class FlattenSphere : ITerrainPaintableEffect
     {
+
         #region ITerrainPaintableEffect Members
 
         public void PaintEffect(ITerrainChannel map, double rx, double ry, double strength, double duration)

+ 1 - 1
OpenSim/Region/Environment/Modules/World/Terrain/PaintBrushes/NoiseSphere.cs

@@ -57,7 +57,7 @@ namespace OpenSim.Region.Environment.Modules.World.Terrain.PaintBrushes
                     z *= z;
                     z -= ((x - rx) * (x - rx)) + ((y - ry) * (y - ry));
 
-                    double noise = TerrainUtil.PerlinNoise2D(x / (double) Constants.RegionSize, y / (double) Constants.RegionSize, 8, 1.0);
+                    double noise = TerrainUtil.PerlinNoise2D((double) x / (double) Constants.RegionSize, (double) y / (double) Constants.RegionSize, 8, 1.0);
 
                     if (z > 0.0)
                         map[x, y] += noise * z * duration;

+ 1 - 1
OpenSim/Region/Environment/Modules/World/Terrain/PaintBrushes/RevertSphere.cs

@@ -32,7 +32,7 @@ namespace OpenSim.Region.Environment.Modules.World.Terrain.PaintBrushes
 {
     public class RevertSphere : ITerrainPaintableEffect
     {
-        private readonly ITerrainChannel m_revertmap;
+        private ITerrainChannel m_revertmap;
 
         public RevertSphere(ITerrainChannel revertmap)
         {

+ 1 - 1
OpenSim/Region/Environment/Modules/World/Terrain/TerrainException.cs

@@ -31,7 +31,7 @@ namespace OpenSim.Region.Environment.Modules.World.Terrain
 {
     public class TerrainException : Exception
     {
-        public TerrainException()
+        public TerrainException() : base()
         {
         }
 

+ 3 - 3
OpenSim/Region/Environment/Modules/World/Terrain/TerrainModule.cs

@@ -83,7 +83,7 @@ namespace OpenSim.Region.Environment.Modules.World.Terrain
         private Dictionary<string, ITerrainEffect> m_plugineffects;
         private ITerrainChannel m_revert;
         private Scene m_scene;
-        private bool m_tainted;
+        private bool m_tainted = false;
 
         #region ICommandableModule Members
 
@@ -223,8 +223,6 @@ namespace OpenSim.Region.Environment.Modules.World.Terrain
             }
         }
 
-        #endregion
-
         #region Plugin Loading Methods
 
         private void LoadPlugins()
@@ -278,6 +276,8 @@ namespace OpenSim.Region.Environment.Modules.World.Terrain
 
         #endregion
 
+        #endregion
+
         /// <summary>
         /// Installs into terrain module the standard suite of brushes
         /// </summary>

+ 2 - 2
OpenSim/Region/Environment/Modules/World/TreePopulator/TreePopulatorModule.cs

@@ -66,10 +66,10 @@ namespace OpenSim.Region.Environment.Modules.World.TreePopulator
             m_trees = new List<LLUUID>();
             m_scene = scene;
 
-            m_scene.EventManager.OnPluginConsole += EventManager_OnPluginConsole;
+            m_scene.EventManager.OnPluginConsole += new EventManager.OnPluginConsoleDelegate(EventManager_OnPluginConsole);
 
             Timer CalculateTrees = new Timer(m_tree_updates);
-            CalculateTrees.Elapsed += CalculateTrees_Elapsed;
+            CalculateTrees.Elapsed += new ElapsedEventHandler(CalculateTrees_Elapsed);
             CalculateTrees.Start();
             m_log.Debug("[TREES]: Initialised tree module");
         }

+ 183 - 178
OpenSim/Region/Environment/PermissionManager.cs

@@ -33,21 +33,27 @@ namespace OpenSim.Region.Environment
 {
     public class PermissionManager
     {
-        // Bypasses the permissions engine (always returns OK)
-        // disable in any production environment
-        // TODO: Change this to false when permissions are a desired default
-        // TODO: Move to configuration option.
-        private bool m_bypassPermissions = true;
         protected Scene m_scene;
 
         // These are here for testing.  They will be taken out
+        
         //private uint PERM_ALL = (uint)2147483647;
-        private uint PERM_COPY = 32768;
+        private uint PERM_COPY = (uint)32768;
         //private uint PERM_MODIFY = (uint)16384;
+        private uint PERM_MOVE = (uint)524288;
         //private uint PERM_TRANS = (uint)8192;
-        private uint PERM_LOCKED = 540672;
-        private uint PERM_MOVE = 524288;
+        private uint PERM_LOCKED = (uint)540672;
+        // Bypasses the permissions engine (always returns OK)
+        // disable in any production environment
+        // TODO: Change this to false when permissions are a desired default
+        // TODO: Move to configuration option.
+        private bool m_bypassPermissions = true;
 
+        public bool BypassPermissions
+        {
+            get { return m_bypassPermissions; }
+            set { m_bypassPermissions = value; }
+        }
 
         public PermissionManager()
         {
@@ -58,12 +64,6 @@ namespace OpenSim.Region.Environment
             m_scene = scene;
         }
 
-        public bool BypassPermissions
-        {
-            get { return m_bypassPermissions; }
-            set { m_bypassPermissions = value; }
-        }
-
         public void Initialise(Scene scene)
         {
             m_scene = scene;
@@ -129,8 +129,8 @@ namespace OpenSim.Region.Environment
             ILandObject land = m_scene.LandChannel.getLandObject(position.X, position.Y);
             if (land == null) return false;
 
-            if ((land.landData.landFlags & ((int) Parcel.ParcelFlags.CreateObjects)) ==
-                (int) Parcel.ParcelFlags.CreateObjects)
+            if ((land.landData.landFlags & ((int)Parcel.ParcelFlags.CreateObjects)) ==
+                (int)Parcel.ParcelFlags.CreateObjects)
                 permission = true;
 
             //TODO: check for group rights
@@ -168,6 +168,8 @@ namespace OpenSim.Region.Environment
         /// <returns>Has permission?</returns>
         public virtual bool CanObjectEntry(LLUUID user, LLVector3 oldPos, LLVector3 newPos)
         {
+            
+
             if ((newPos.X > 257f || newPos.X < -1f || newPos.Y > 257f || newPos.Y < -1f))
             {
                 return true;
@@ -191,7 +193,7 @@ namespace OpenSim.Region.Environment
                 return true;
             }
 
-            if ((land2.landData.landFlags & ((int) Parcel.ParcelFlags.AllowAllObjectEntry)) != 0)
+            if ((land2.landData.landFlags & ((int)Parcel.ParcelFlags.AllowAllObjectEntry)) != 0)
             {
                 return true;
             }
@@ -208,142 +210,11 @@ namespace OpenSim.Region.Environment
             return false;
         }
 
-        public virtual bool CanEditScript(LLUUID user, LLUUID script)
-        {
-            return IsAdministrator(user);
-        }
-
-        public virtual bool CanRunScript(LLUUID user, LLUUID script)
-        {
-            return IsAdministrator(user);
-        }
-
-        public virtual bool CanRunConsoleCommand(LLUUID user)
-        {
-            return IsAdministrator(user);
-        }
-
-        public virtual bool CanTerraform(LLUUID user, LLVector3 position)
-        {
-            bool permission = false;
-
-            // Estate override
-            if (GenericEstatePermission(user))
-                permission = true;
-
-            float X = position.X;
-            float Y = position.Y;
-
-            if (X > 255)
-                X = 255;
-            if (Y > 255)
-                Y = 255;
-            if (X < 0)
-                X = 0;
-            if (Y < 0)
-                Y = 0;
-
-            // Land owner can terraform too
-            ILandObject parcel = m_scene.LandChannel.getLandObject(X, Y);
-            if (parcel != null && GenericParcelPermission(user, parcel))
-                permission = true;
-
-            if (!permission)
-                SendPermissionError(user, "Not authorized to terraform at this location.");
-
-            return permission;
-        }
-
-        #region Estate Permissions
-
-        public virtual bool GenericEstatePermission(LLUUID user)
-        {
-            // Default: deny
-            bool permission = false;
-
-            // Estate admins should be able to use estate tools
-            if (IsEstateManager(user))
-                permission = true;
-
-            // Administrators always have permission
-            if (IsAdministrator(user))
-                permission = true;
-
-            return permission;
-        }
-
-        public virtual bool CanEditEstateTerrain(LLUUID user)
-        {
-            return GenericEstatePermission(user);
-        }
-
-        public virtual bool CanRestartSim(LLUUID user)
-        {
-            // Since this is potentially going on a grid...    
-
-            return GenericEstatePermission(user);
-            //return m_scene.RegionInfo.MasterAvatarAssignedUUID == user;
-        }
-
-        #endregion
-
-        #region Parcel Permissions
-
-        protected virtual bool GenericParcelPermission(LLUUID user, ILandObject parcel)
-        {
-            bool permission = false;
-
-            if (parcel.landData.ownerID == user)
-            {
-                permission = true;
-            }
-
-            if (parcel.landData.isGroupOwned)
-            {
-                // TODO: Need to do some extra checks here. Requires group code.
-            }
-
-            if (IsEstateManager(user))
-            {
-                permission = true;
-            }
-
-            if (IsAdministrator(user))
-            {
-                permission = true;
-            }
-
-            return permission;
-        }
-
-        protected virtual bool GenericParcelPermission(LLUUID user, LLVector3 pos)
-        {
-            ILandObject parcel = m_scene.LandChannel.getLandObject(pos.X, pos.Y);
-            if (parcel == null) return false;
-            return GenericParcelPermission(user, parcel);
-        }
-
-        public virtual bool CanEditParcel(LLUUID user, ILandObject parcel)
-        {
-            return GenericParcelPermission(user, parcel);
-        }
-
-        public virtual bool CanSellParcel(LLUUID user, ILandObject parcel)
-        {
-            return GenericParcelPermission(user, parcel);
-        }
-
-        public virtual bool CanAbandonParcel(LLUUID user, ILandObject parcel)
-        {
-            return GenericParcelPermission(user, parcel);
-        }
-
-        #endregion
-
         #region Object Permissions
 
         public virtual uint GenerateClientFlags(LLUUID user, LLUUID objID)
         {
+
             // Here's the way this works, 
             // ObjectFlags and Permission flags are two different enumerations
             // ObjectFlags, however, tells the client to change what it will allow the user to do.
@@ -355,33 +226,32 @@ namespace OpenSim.Region.Environment
             // Outside of this method, they should never be added to objectflags!
             // -teravus
 
-            SceneObjectPart task = m_scene.GetSceneObjectPart(objID);
-
+			SceneObjectPart task=m_scene.GetSceneObjectPart(objID);
+            
             // this shouldn't ever happen..     return no permissions/objectflags.
             if (task == null)
-                return 0;
+                return (uint)0;
 
-            uint objflags = task.GetEffectiveObjectFlags();
-            LLUUID objectOwner = task.OwnerID;
+			uint objflags = task.GetEffectiveObjectFlags();
+			LLUUID objectOwner = task.OwnerID;
 
 
             // Remove any of the objectFlags that are temporary.  These will get added back if appropriate 
             // in the next bit of code
 
             objflags &= (uint)
-                        ~(LLObject.ObjectFlags.ObjectCopy | // Tells client you can copy the object
-                          LLObject.ObjectFlags.ObjectModify | // tells client you can modify the object
-                          LLObject.ObjectFlags.ObjectMove | // tells client that you can move the object (only, no mod)
-                          LLObject.ObjectFlags.ObjectTransfer | // tells the client that you can /take/ the object if you don't own it
-                          LLObject.ObjectFlags.ObjectYouOwner | // Tells client that you're the owner of the object
-                          LLObject.ObjectFlags.ObjectYouOfficer
-                         // Tells client that you've got group object editing permission. Used when ObjectGroupOwned is set
-                         );
+                ~(LLObject.ObjectFlags.ObjectCopy | // Tells client you can copy the object
+                  LLObject.ObjectFlags.ObjectModify | // tells client you can modify the object
+                  LLObject.ObjectFlags.ObjectMove |   // tells client that you can move the object (only, no mod)
+                  LLObject.ObjectFlags.ObjectTransfer | // tells the client that you can /take/ the object if you don't own it
+                  LLObject.ObjectFlags.ObjectYouOwner | // Tells client that you're the owner of the object
+                  LLObject.ObjectFlags.ObjectYouOfficer // Tells client that you've got group object editing permission. Used when ObjectGroupOwned is set
+                    );
 
             // Creating the three ObjectFlags options for this method to choose from.
             // Customize the OwnerMask
             uint objectOwnerMask = ApplyObjectModifyMasks(task.OwnerMask, objflags);
-            objectOwnerMask |= (uint) LLObject.ObjectFlags.ObjectYouOwner;
+            objectOwnerMask |= (uint)LLObject.ObjectFlags.ObjectYouOwner;
 
             // Customize the GroupMask
             uint objectGroupMask = ApplyObjectModifyMasks(task.GroupMask, objflags);
@@ -391,8 +261,8 @@ namespace OpenSim.Region.Environment
 
 
             // Hack to allow collaboration until Groups and Group Permissions are implemented
-            if ((objectEveryoneMask & (uint) LLObject.ObjectFlags.ObjectMove) != 0)
-                objectEveryoneMask |= (uint) LLObject.ObjectFlags.ObjectModify;
+            if ((objectEveryoneMask & (uint)LLObject.ObjectFlags.ObjectMove) != 0)
+                objectEveryoneMask |= (uint)LLObject.ObjectFlags.ObjectModify;
 
             if (m_bypassPermissions)
                 return objectOwnerMask;
@@ -417,6 +287,7 @@ namespace OpenSim.Region.Environment
                 return objectOwnerMask;
 
 
+
             // Admin should be able to edit anything in the sim (including admin objects)
             if (IsAdministrator(user))
                 return objectOwnerMask;
@@ -426,29 +297,30 @@ namespace OpenSim.Region.Environment
         }
 
 
+
         private uint ApplyObjectModifyMasks(uint setPermissionMask, uint objectFlagsMask)
         {
             // We are adding the temporary objectflags to the object's objectflags based on the 
             // permission flag given.  These change the F flags on the client.
 
-            if ((setPermissionMask & (uint) PermissionMask.Copy) != 0)
+            if ((setPermissionMask & (uint)PermissionMask.Copy) != 0)
             {
-                objectFlagsMask |= (uint) LLObject.ObjectFlags.ObjectCopy;
+                objectFlagsMask |= (uint)LLObject.ObjectFlags.ObjectCopy;
             }
 
-            if ((setPermissionMask & (uint) PermissionMask.Move) != 0)
+            if ((setPermissionMask & (uint)PermissionMask.Move) != 0)
             {
-                objectFlagsMask |= (uint) LLObject.ObjectFlags.ObjectMove;
+                objectFlagsMask |= (uint)LLObject.ObjectFlags.ObjectMove;
             }
 
-            if ((setPermissionMask & (uint) PermissionMask.Modify) != 0)
+            if ((setPermissionMask & (uint)PermissionMask.Modify) != 0)
             {
-                objectFlagsMask |= (uint) LLObject.ObjectFlags.ObjectModify;
+                objectFlagsMask |= (uint)LLObject.ObjectFlags.ObjectModify;
             }
 
-            if ((setPermissionMask & (uint) PermissionMask.Transfer) != 0)
+            if ((setPermissionMask & (uint)PermissionMask.Transfer) != 0)
             {
-                objectFlagsMask |= (uint) LLObject.ObjectFlags.ObjectTransfer;
+                objectFlagsMask |= (uint)LLObject.ObjectFlags.ObjectTransfer;
             }
 
             return objectFlagsMask;
@@ -472,7 +344,7 @@ namespace OpenSim.Region.Environment
             }
 
 
-            SceneObjectGroup group = (SceneObjectGroup) m_scene.Entities[objId];
+            SceneObjectGroup group = (SceneObjectGroup)m_scene.Entities[objId];
 
             LLUUID objectOwner = group.OwnerID;
             locked = ((group.RootPart.OwnerMask & PERM_LOCKED) == 0);
@@ -560,7 +432,7 @@ namespace OpenSim.Region.Environment
                 }
 
 
-                SceneObjectGroup task = (SceneObjectGroup) m_scene.Entities[obj];
+                SceneObjectGroup task = (SceneObjectGroup)m_scene.Entities[obj];
 
 
                 LLUUID taskOwner = null;
@@ -575,6 +447,7 @@ namespace OpenSim.Region.Environment
                 // Locked
                 if ((task.RootPart.OwnerMask & PERM_LOCKED) == 0)
                     permission = false;
+
             }
             else
             {
@@ -591,7 +464,7 @@ namespace OpenSim.Region.Environment
                 }
 
 
-                SceneObjectGroup group = (SceneObjectGroup) m_scene.Entities[obj];
+                SceneObjectGroup group = (SceneObjectGroup)m_scene.Entities[obj];
 
                 LLUUID objectOwner = group.OwnerID;
                 locked = ((group.RootPart.OwnerMask & PERM_LOCKED) == 0);
@@ -629,7 +502,7 @@ namespace OpenSim.Region.Environment
                     return false;
                 }
 
-                SceneObjectGroup task = (SceneObjectGroup) m_scene.Entities[obj];
+                SceneObjectGroup task = (SceneObjectGroup)m_scene.Entities[obj];
                 LLUUID taskOwner = null;
                 // Added this because at this point in time it wouldn't be wise for 
                 // the administrator object permissions to take effect.
@@ -685,5 +558,137 @@ namespace OpenSim.Region.Environment
         }
 
         #endregion
+
+        public virtual bool CanEditScript(LLUUID user, LLUUID script)
+        {
+            return IsAdministrator(user);
+        }
+
+        public virtual bool CanRunScript(LLUUID user, LLUUID script)
+        {
+            return IsAdministrator(user);
+        }
+
+        public virtual bool CanRunConsoleCommand(LLUUID user)
+        {
+            return IsAdministrator(user);
+        }
+
+        public virtual bool CanTerraform(LLUUID user, LLVector3 position)
+        {
+            bool permission = false;
+
+            // Estate override
+            if (GenericEstatePermission(user))
+                permission = true;
+
+            float X = position.X;
+            float Y = position.Y;
+
+            if (X > 255)
+                X = 255;
+            if (Y > 255)
+                Y = 255;
+            if (X < 0)
+                X = 0;
+            if (Y < 0)
+                Y = 0;
+
+            // Land owner can terraform too
+            ILandObject parcel = m_scene.LandChannel.getLandObject(X, Y);
+            if (parcel != null && GenericParcelPermission(user, parcel))
+                permission = true;
+
+            if (!permission)
+                SendPermissionError(user, "Not authorized to terraform at this location.");
+
+            return permission;
+        }
+
+        #region Estate Permissions
+
+        public virtual bool GenericEstatePermission(LLUUID user)
+        {
+            // Default: deny
+            bool permission = false;
+
+            // Estate admins should be able to use estate tools
+            if (IsEstateManager(user))
+                permission = true;
+
+            // Administrators always have permission
+            if (IsAdministrator(user))
+                permission = true;
+
+            return permission;
+        }
+
+        public virtual bool CanEditEstateTerrain(LLUUID user)
+        {
+            return GenericEstatePermission(user);
+        }
+
+        public virtual bool CanRestartSim(LLUUID user)
+        {
+            // Since this is potentially going on a grid...    
+
+            return GenericEstatePermission(user);
+            //return m_scene.RegionInfo.MasterAvatarAssignedUUID == user;
+        }
+
+        #endregion
+
+        #region Parcel Permissions
+
+        protected virtual bool GenericParcelPermission(LLUUID user, ILandObject parcel)
+        {
+            bool permission = false;
+
+            if (parcel.landData.ownerID == user)
+            {
+                permission = true;
+            }
+
+            if (parcel.landData.isGroupOwned)
+            {
+                // TODO: Need to do some extra checks here. Requires group code.
+            }
+
+            if (IsEstateManager(user))
+            {
+                permission = true;
+            }
+
+            if (IsAdministrator(user))
+            {
+                permission = true;
+            }
+
+            return permission;
+        }
+
+        protected virtual bool GenericParcelPermission(LLUUID user, LLVector3 pos)
+        {
+            ILandObject parcel = m_scene.LandChannel.getLandObject(pos.X, pos.Y);
+            if (parcel == null) return false;
+            return GenericParcelPermission(user, parcel);
+        }
+
+        public virtual bool CanEditParcel(LLUUID user, ILandObject parcel)
+        {
+            return GenericParcelPermission(user, parcel);
+        }
+
+        public virtual bool CanSellParcel(LLUUID user, ILandObject parcel)
+        {
+            return GenericParcelPermission(user, parcel);
+        }
+
+        public virtual bool CanAbandonParcel(LLUUID user, ILandObject parcel)
+        {
+            return GenericParcelPermission(user, parcel);
+        }
+
+        #endregion
     }
-}
+}

+ 3 - 3
OpenSim/Region/Environment/Scenes/AvatarAnimations.cs

@@ -46,8 +46,8 @@ namespace OpenSim.Region.Environment.Scenes
                 {
                     if (nod.Attributes["name"] != null)
                     {
-                        string name = nod.Attributes["name"].Value;
-                        LLUUID id = (LLUUID) nod.InnerText;
+                        string name = (string)nod.Attributes["name"].Value;
+                        LLUUID id = (LLUUID)nod.InnerText;
 
                         AnimsLLUUID.Add(name, id);
                         AnimsNames.Add(id, name);
@@ -56,4 +56,4 @@ namespace OpenSim.Region.Environment.Scenes
             }
         }
     }
-}
+}

+ 61 - 62
OpenSim/Region/Environment/Scenes/AvatarAppearance.cs

@@ -37,54 +37,14 @@ namespace OpenSim.Region.Environment.Scenes
     [Serializable]
     public class AvatarAppearance : ISerializable
     {
-        protected float m_avatarHeight;
         protected LLUUID m_scenePresenceID;
-        protected LLObject.TextureEntry m_textureEntry;
-        protected byte[] m_visualParams;
-        protected AvatarWearable[] m_wearables;
-
-        protected int m_wearablesSerial = 1;
-
-        public AvatarAppearance()
-        {
-        }
-
-        public AvatarAppearance(LLUUID avatarID, AvatarWearable[] wearables, byte[] visualParams)
-        {
-            m_scenePresenceID = avatarID;
-            m_wearablesSerial = 1;
-            m_wearables = wearables;
-            m_visualParams = visualParams;
-            m_textureEntry = GetDefaultTextureEntry();
-        }
-
-        protected AvatarAppearance(SerializationInfo info, StreamingContext context)
-        {
-            //System.Console.WriteLine("AvatarAppearance Deserialize BGN");
-
-            if (info == null)
-            {
-                throw new ArgumentNullException("info");
-            }
-
-            m_scenePresenceID = new LLUUID((Guid) info.GetValue("m_scenePresenceID", typeof (Guid)));
-            m_wearablesSerial = (int) info.GetValue("m_wearablesSerial", typeof (int));
-            m_visualParams = (byte[]) info.GetValue("m_visualParams", typeof (byte[]));
-            m_wearables = (AvatarWearable[]) info.GetValue("m_wearables", typeof (AvatarWearable[]));
-
-            byte[] m_textureEntry_work = (byte[]) info.GetValue("m_textureEntry", typeof (byte[]));
-            m_textureEntry = new LLObject.TextureEntry(m_textureEntry_work, 0, m_textureEntry_work.Length);
-
-            m_avatarHeight = (float) info.GetValue("m_avatarHeight", typeof (float));
-
-            //System.Console.WriteLine("AvatarAppearance Deserialize END");
-        }
 
         public LLUUID ScenePresenceID
         {
             get { return m_scenePresenceID; }
             set { m_scenePresenceID = value; }
         }
+        protected int m_wearablesSerial = 1;
 
         public int WearablesSerial
         {
@@ -92,51 +52,50 @@ namespace OpenSim.Region.Environment.Scenes
             set { m_wearablesSerial = value; }
         }
 
+        protected byte[] m_visualParams;
+
         public byte[] VisualParams
         {
             get { return m_visualParams; }
             set { m_visualParams = value; }
         }
 
+        protected AvatarWearable[] m_wearables;
+
         public AvatarWearable[] Wearables
         {
             get { return m_wearables; }
             set { m_wearables = value; }
         }
 
+        protected LLObject.TextureEntry m_textureEntry;
+
         public LLObject.TextureEntry TextureEntry
         {
             get { return m_textureEntry; }
             set { m_textureEntry = value; }
         }
 
+        protected float m_avatarHeight = 0;
+
         public float AvatarHeight
         {
             get { return m_avatarHeight; }
             set { m_avatarHeight = value; }
         }
 
-        #region ISerializable Members
-
-        [SecurityPermission(SecurityAction.LinkDemand,
-            Flags = SecurityPermissionFlag.SerializationFormatter)]
-        public virtual void GetObjectData(
-            SerializationInfo info, StreamingContext context)
+        public AvatarAppearance()
         {
-            if (info == null)
-            {
-                throw new ArgumentNullException("info");
-            }
-
-            info.AddValue("m_scenePresenceID", m_scenePresenceID.UUID);
-            info.AddValue("m_wearablesSerial", m_wearablesSerial);
-            info.AddValue("m_visualParams", m_visualParams);
-            info.AddValue("m_wearables", m_wearables);
-            info.AddValue("m_textureEntry", m_textureEntry.ToBytes());
-            info.AddValue("m_avatarHeight", m_avatarHeight);
         }
 
-        #endregion
+        public AvatarAppearance(LLUUID avatarID, AvatarWearable[] wearables, byte[] visualParams)
+        {
+            m_scenePresenceID = avatarID;
+            m_wearablesSerial = 1;
+            m_wearables = wearables;
+            m_visualParams = visualParams;
+            m_textureEntry = GetDefaultTextureEntry();
+        }
 
         /// <summary>
         /// 
@@ -156,8 +115,8 @@ namespace OpenSim.Region.Environment.Scenes
             // Teravus : Nifty AV Height Getting Maaaaagical formula.  Oh how we love turning 0-255 into meters.
             // (float)m_visualParams[25] = Height
             // (float)m_visualParams[125] = LegLength
-            m_avatarHeight = (1.50856f + ((m_visualParams[25] / 255.0f) * (2.525506f - 1.50856f)))
-                             + ((m_visualParams[125] / 255.0f) / 1.5f);
+            m_avatarHeight = (1.50856f + (((float) m_visualParams[25]/255.0f)*(2.525506f - 1.50856f)))
+                             + (((float) m_visualParams[125]/255.0f)/1.5f);
         }
 
         /// <summary>
@@ -193,5 +152,45 @@ namespace OpenSim.Region.Environment.Scenes
             textu.CreateFace(6).TextureID = new LLUUID("00000000-0000-1111-9999-000000000011");
             return textu;
         }
+
+        protected AvatarAppearance(SerializationInfo info, StreamingContext context)
+        {
+            //System.Console.WriteLine("AvatarAppearance Deserialize BGN");
+
+            if (info == null)
+            {
+                throw new ArgumentNullException("info");
+            }
+
+            m_scenePresenceID = new LLUUID((Guid)info.GetValue("m_scenePresenceID", typeof(Guid)));
+            m_wearablesSerial = (int)info.GetValue("m_wearablesSerial", typeof(int));
+            m_visualParams = (byte[])info.GetValue("m_visualParams", typeof(byte[]));
+            m_wearables = (AvatarWearable[])info.GetValue("m_wearables", typeof(AvatarWearable[]));
+
+            byte[] m_textureEntry_work = (byte[])info.GetValue("m_textureEntry", typeof(byte[]));
+            m_textureEntry = new LLObject.TextureEntry(m_textureEntry_work, 0, m_textureEntry_work.Length);
+
+            m_avatarHeight = (float)info.GetValue("m_avatarHeight", typeof(float));
+
+            //System.Console.WriteLine("AvatarAppearance Deserialize END");
+        }
+
+        [SecurityPermission(SecurityAction.LinkDemand,
+            Flags = SecurityPermissionFlag.SerializationFormatter)]
+        public virtual void GetObjectData(
+                        SerializationInfo info, StreamingContext context)
+        {
+            if (info == null)
+            {
+                throw new ArgumentNullException("info");
+            }
+
+            info.AddValue("m_scenePresenceID", m_scenePresenceID.UUID);
+            info.AddValue("m_wearablesSerial", m_wearablesSerial);
+            info.AddValue("m_visualParams", m_visualParams);
+            info.AddValue("m_wearables", m_wearables);
+            info.AddValue("m_textureEntry", m_textureEntry.ToBytes());
+            info.AddValue("m_avatarHeight", m_avatarHeight);
+        }
     }
-}
+}

+ 97 - 96
OpenSim/Region/Environment/Scenes/EntityBase.cs

@@ -36,83 +36,23 @@ namespace OpenSim.Region.Environment.Scenes
     [Serializable]
     public abstract class EntityBase : ISerializable
     {
-        protected uint m_localId;
-        protected string m_name;
-        protected LLVector3 m_pos;
-        protected Quaternion m_rotation = new Quaternion(0, 0, 1, 0);
-        protected LLVector3 m_rotationalvelocity;
         protected Scene m_scene;
-
-        protected LLUUID m_uuid;
-        protected LLVector3 m_velocity;
-
-        /// <summary>
-        /// Creates a new Entity (should not occur on it's own)
-        /// </summary>
-        public EntityBase()
-        {
-            m_uuid = LLUUID.Zero;
-
-            m_pos = new LLVector3();
-            m_velocity = new LLVector3();
-            Rotation = new Quaternion();
-            m_name = "(basic entity)";
-            m_rotationalvelocity = new LLVector3(0, 0, 0);
-        }
-
-        protected EntityBase(SerializationInfo info, StreamingContext context)
-        {
-            //System.Console.WriteLine("EntityBase Deserialize BGN");
-
-            if (info == null)
-            {
-                throw new ArgumentNullException("info");
-            }
-
-            m_uuid = new LLUUID((Guid) info.GetValue("m_uuid", typeof (Guid)));
-            m_name = (string) info.GetValue("m_name", typeof (string));
-
-            m_pos
-                = new LLVector3(
-                    (float) info.GetValue("m_pos.X", typeof (float)),
-                    (float) info.GetValue("m_pos.Y", typeof (float)),
-                    (float) info.GetValue("m_pos.Z", typeof (float)));
-
-            m_velocity
-                = new LLVector3(
-                    (float) info.GetValue("m_velocity.X", typeof (float)),
-                    (float) info.GetValue("m_velocity.Y", typeof (float)),
-                    (float) info.GetValue("m_velocity.Z", typeof (float)));
-
-            m_rotationalvelocity
-                = new LLVector3(
-                    (float) info.GetValue("m_rotationalvelocity.X", typeof (float)),
-                    (float) info.GetValue("m_rotationalvelocity.Y", typeof (float)),
-                    (float) info.GetValue("m_rotationalvelocity.Z", typeof (float)));
-
-            m_rotation
-                = new Quaternion(
-                    (float) info.GetValue("m_rotation.w", typeof (float)),
-                    (float) info.GetValue("m_rotation.x", typeof (float)),
-                    (float) info.GetValue("m_rotation.y", typeof (float)),
-                    (float) info.GetValue("m_rotation.z", typeof (float)));
-
-            m_localId = (uint) info.GetValue("m_localId", typeof (uint));
-
-            //System.Console.WriteLine("EntityBase Deserialize END");
-        }
-
+        
         public Scene Scene
         {
             get { return m_scene; }
         }
 
+        protected LLUUID m_uuid;
+
         public virtual LLUUID UUID
         {
             get { return m_uuid; }
             set { m_uuid = value; }
         }
 
+        protected string m_name;
+
         /// <summary>
         /// 
         /// </summary>
@@ -122,6 +62,8 @@ namespace OpenSim.Region.Environment.Scenes
             set { m_name = value; }
         }
 
+        protected LLVector3 m_pos;
+
         /// <summary>
         /// 
         /// </summary>
@@ -131,6 +73,9 @@ namespace OpenSim.Region.Environment.Scenes
             set { m_pos = value; }
         }
 
+        protected LLVector3 m_velocity;
+        protected LLVector3 m_rotationalvelocity;
+
         /// <summary>
         /// 
         /// </summary>
@@ -140,24 +85,104 @@ namespace OpenSim.Region.Environment.Scenes
             set { m_velocity = value; }
         }
 
+        protected Quaternion m_rotation = new Quaternion(0, 0, 1, 0);
+
         public virtual Quaternion Rotation
         {
             get { return m_rotation; }
             set { m_rotation = value; }
         }
 
+        protected uint m_localId;
+
         public virtual uint LocalId
         {
             get { return m_localId; }
             set { m_localId = value; }
         }
 
-        #region ISerializable Members
+        /// <summary>
+        /// Creates a new Entity (should not occur on it's own)
+        /// </summary>
+        public EntityBase()
+        {
+            m_uuid = LLUUID.Zero;
+
+            m_pos = new LLVector3();
+            m_velocity = new LLVector3();
+            Rotation = new Quaternion();
+            m_name = "(basic entity)";
+            m_rotationalvelocity = new LLVector3(0, 0, 0);
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public abstract void UpdateMovement();
+
+        /// <summary>
+        /// Performs any updates that need to be done at each frame.
+        /// </summary>
+        public abstract void Update();
+
+        /// <summary>
+        /// Copies the entity
+        /// </summary>
+        /// <returns></returns>
+        public virtual EntityBase Copy()
+        {
+            return (EntityBase) MemberwiseClone();
+        }
+
+
+        public abstract void SetText(string text, Vector3 color, double alpha);
+
+        protected EntityBase(SerializationInfo info, StreamingContext context)
+        {
+            //System.Console.WriteLine("EntityBase Deserialize BGN");
+
+            if (info == null)
+            {
+                throw new ArgumentNullException("info");
+            }
+
+            m_uuid = new LLUUID((Guid)info.GetValue("m_uuid", typeof(Guid)));
+            m_name = (string)info.GetValue("m_name", typeof(string));
+
+            m_pos
+                = new LLVector3(
+                        (float)info.GetValue("m_pos.X", typeof(float)),
+                        (float)info.GetValue("m_pos.Y", typeof(float)),
+                        (float)info.GetValue("m_pos.Z", typeof(float)));
+
+            m_velocity
+                = new LLVector3(
+                        (float)info.GetValue("m_velocity.X", typeof(float)),
+                        (float)info.GetValue("m_velocity.Y", typeof(float)),
+                        (float)info.GetValue("m_velocity.Z", typeof(float)));
+
+            m_rotationalvelocity
+                = new LLVector3(
+                        (float)info.GetValue("m_rotationalvelocity.X", typeof(float)),
+                        (float)info.GetValue("m_rotationalvelocity.Y", typeof(float)),
+                        (float)info.GetValue("m_rotationalvelocity.Z", typeof(float)));
+
+            m_rotation
+                = new Quaternion(
+                        (float)info.GetValue("m_rotation.w", typeof(float)),
+                        (float)info.GetValue("m_rotation.x", typeof(float)),
+                        (float)info.GetValue("m_rotation.y", typeof(float)),
+                        (float)info.GetValue("m_rotation.z", typeof(float)));
+
+            m_localId = (uint)info.GetValue("m_localId", typeof(uint));
+
+            //System.Console.WriteLine("EntityBase Deserialize END");
+        }
 
         [SecurityPermission(SecurityAction.LinkDemand,
             Flags = SecurityPermissionFlag.SerializationFormatter)]
         public virtual void GetObjectData(
-            SerializationInfo info, StreamingContext context)
+                        SerializationInfo info, StreamingContext context)
         {
             if (info == null)
             {
@@ -190,42 +215,18 @@ namespace OpenSim.Region.Environment.Scenes
 
             info.AddValue("m_localId", m_localId);
         }
-
-        #endregion
-
-        /// <summary>
-        /// 
-        /// </summary>
-        public abstract void UpdateMovement();
-
-        /// <summary>
-        /// Performs any updates that need to be done at each frame.
-        /// </summary>
-        public abstract void Update();
-
-        /// <summary>
-        /// Copies the entity
-        /// </summary>
-        /// <returns></returns>
-        public virtual EntityBase Copy()
-        {
-            return (EntityBase) MemberwiseClone();
-        }
-
-
-        public abstract void SetText(string text, Vector3 color, double alpha);
     }
 
     //Nested Classes
     public class EntityIntersection
     {
-        public Vector3 AAfaceNormal = new Vector3(0, 0, 0);
-        public float distance;
-        public int face = -1;
-        public bool HitTF;
         public Vector3 ipoint = new Vector3(0, 0, 0);
         public Vector3 normal = new Vector3(0, 0, 0);
+        public Vector3 AAfaceNormal = new Vector3(0, 0, 0);
+        public int face = -1;
+        public bool HitTF = false;
         public SceneObjectPart obj;
+        public float distance = 0;
 
         public EntityIntersection()
         {
@@ -238,4 +239,4 @@ namespace OpenSim.Region.Environment.Scenes
             HitTF = _HitTF;
         }
     }
-}
+}

+ 1 - 1
OpenSim/Region/Environment/Scenes/IScenePresenceBody.cs

@@ -34,4 +34,4 @@ namespace OpenSim.Region.Environment.Scenes
     {
         void processMovement(IClientAPI remoteClient, uint flags, LLQuaternion bodyRotation);
     }
-}
+}

+ 107 - 91
OpenSim/Region/Environment/Scenes/InnerScene.cs

@@ -46,33 +46,36 @@ namespace OpenSim.Region.Environment.Scenes
 
         #region Events
 
-        private PhysicsCrash handlerPhysicsCrash;
         public event PhysicsCrash UnRecoverableError;
+        private PhysicsCrash handlerPhysicsCrash = null;
 
         #endregion
 
         #region Fields
 
+        public Dictionary<LLUUID, ScenePresence> ScenePresences;
         // SceneObjects is not currently populated or used.
         //public Dictionary<LLUUID, SceneObjectGroup> SceneObjects;
-        public PhysicsScene _PhyScene;
         public Dictionary<LLUUID, EntityBase> Entities;
-        protected int m_activeScripts;
-        protected int m_numChildAgents;
-        protected int m_numPrim;
-        protected int m_numRootAgents;
-        protected Scene m_parentScene;
-        protected int m_physicalPrim;
+        public Dictionary<LLUUID, ScenePresence> RestorePresences;
+
+        public BasicQuadTreeNode QuadTree;
+
         protected RegionInfo m_regInfo;
+        protected Scene m_parentScene;
+        protected PermissionManager PermissionsMngr;
+        protected List<EntityBase> m_updateList = new List<EntityBase>();
+        protected int m_numRootAgents = 0;
+        protected int m_numPrim = 0;
+        protected int m_numChildAgents = 0;
+        protected int m_physicalPrim = 0;
 
-        protected int m_scriptLPS;
+        protected int m_activeScripts = 0;
+        protected int m_scriptLPS = 0;
 
         internal object m_syncRoot = new object();
-        protected List<EntityBase> m_updateList = new List<EntityBase>();
-        protected PermissionManager PermissionsMngr;
-        public BasicQuadTreeNode QuadTree;
-        public Dictionary<LLUUID, ScenePresence> RestorePresences;
-        public Dictionary<LLUUID, ScenePresence> ScenePresences;
+
+        public PhysicsScene _PhyScene;
 
         #endregion
 
@@ -81,7 +84,7 @@ namespace OpenSim.Region.Environment.Scenes
             m_parentScene = parent;
             m_regInfo = regInfo;
             PermissionsMngr = permissionsMngr;
-            QuadTree = new BasicQuadTreeNode(null, "/0/", 0, 0, (short) Constants.RegionSize, (short) Constants.RegionSize);
+            QuadTree = new BasicQuadTreeNode(null, "/0/", 0, 0, (short)Constants.RegionSize, (short)Constants.RegionSize);
             QuadTree.Subdivide();
             QuadTree.Subdivide();
         }
@@ -159,7 +162,7 @@ namespace OpenSim.Region.Environment.Scenes
         {
             lock (m_syncRoot)
             {
-                return _PhyScene.Simulate((float) elapsed);
+                return _PhyScene.Simulate((float)elapsed);
             }
         }
 
@@ -184,6 +187,7 @@ namespace OpenSim.Region.Environment.Scenes
             foreach (SceneObjectPart part in sceneObject.Children.Values)
             {
                 part.LocalId = m_parentScene.PrimIDAllocate();
+
             }
             sceneObject.UpdateParentIDs();
             AddEntity(sceneObject);
@@ -229,7 +233,7 @@ namespace OpenSim.Region.Environment.Scenes
                 for (int i = 0; i < m_updateList.Count; i++)
                 {
                     EntityBase entity = m_updateList[i];
-
+                    
                     // Don't abort the whole update if one entity happens to give us an exception.
                     try
                     {
@@ -245,7 +249,7 @@ namespace OpenSim.Region.Environment.Scenes
                     }
                     catch (Exception e)
                     {
-                        m_log.ErrorFormat("[INNER SCENE]: Failed to update {0}, - {1}", entity.Name, e); //entity.m_uuid
+                        m_log.ErrorFormat("[INNER SCENE]: Failed to update {0}, - {1}", entity.Name, e);//entity.m_uuid
                     }
                 }
                 m_updateList.Clear();
@@ -280,16 +284,15 @@ namespace OpenSim.Region.Environment.Scenes
             {
                 if (obj is SceneObjectGroup)
                 {
-                    if ((obj).LocalId == localID)
+                    if (((SceneObjectGroup)obj).LocalId == localID)
                     {
-                        m_parentScene.RemoveEntity((SceneObjectGroup) obj);
+                        m_parentScene.RemoveEntity((SceneObjectGroup)obj);
                         m_numPrim--;
                         return;
                     }
                 }
             }
         }
-
         public void DetachObject(uint objectLocalID, IClientAPI remoteClient)
         {
             List<EntityBase> EntityList = GetEntities();
@@ -298,25 +301,29 @@ namespace OpenSim.Region.Environment.Scenes
             {
                 if (obj is SceneObjectGroup)
                 {
-                    if ((obj).LocalId == objectLocalID)
+                    if (((SceneObjectGroup)obj).LocalId == objectLocalID)
                     {
-                        SceneObjectGroup group = (SceneObjectGroup) obj;
+                        SceneObjectGroup group = (SceneObjectGroup)obj;
 
                         //group.DetachToGround();
-                        DetachSingleAttachmentToInv(group.GetFromAssetID(), remoteClient);
+                        DetachSingleAttachmentToInv(group.GetFromAssetID(),remoteClient);
                     }
                 }
             }
+
         }
 
         public void HandleUndo(IClientAPI remoteClient, LLUUID primId)
         {
             if (primId != LLUUID.Zero)
             {
-                SceneObjectPart part = m_parentScene.GetSceneObjectPart(primId);
+                SceneObjectPart part =  m_parentScene.GetSceneObjectPart(primId);
                 if (part != null)
                     part.Undo();
+
             }
+                
+
         }
 
         /// <summary>
@@ -331,29 +338,27 @@ namespace OpenSim.Region.Environment.Scenes
             // Calls attach with a Zero position
             AttachObject(remoteClient, objectLocalID, AttachmentPt, rot, LLVector3.Zero);
         }
-
-        public void RezSingleAttachment(IClientAPI remoteClient, LLUUID itemID, uint AttachmentPt, uint ItemFlags, uint NextOwnerMask)
+        public void RezSingleAttachment(IClientAPI remoteClient, LLUUID itemID, uint AttachmentPt,uint ItemFlags, uint NextOwnerMask)
         {
-            SceneObjectGroup objatt = m_parentScene.RezObject(remoteClient, itemID, LLVector3.Zero, LLVector3.Zero, LLUUID.Zero, 1, true,
-                                                              (uint)
-                                                              (PermissionMask.Copy | PermissionMask.Move | PermissionMask.Modify | PermissionMask.Transfer),
-                                                              (uint)
-                                                              (PermissionMask.Copy | PermissionMask.Move | PermissionMask.Modify | PermissionMask.Transfer),
-                                                              (uint)
-                                                              (PermissionMask.Copy | PermissionMask.Move | PermissionMask.Modify | PermissionMask.Transfer),
-                                                              ItemFlags, false, false, remoteClient.AgentId, true);
+            SceneObjectGroup objatt = m_parentScene.RezObject(remoteClient, itemID, LLVector3.Zero, LLVector3.Zero, LLUUID.Zero, (byte)1, true,
+                (uint)(PermissionMask.Copy | PermissionMask.Move | PermissionMask.Modify | PermissionMask.Transfer),
+                (uint)(PermissionMask.Copy | PermissionMask.Move | PermissionMask.Modify | PermissionMask.Transfer),
+                (uint)(PermissionMask.Copy | PermissionMask.Move | PermissionMask.Modify | PermissionMask.Transfer),
+                ItemFlags, false, false, remoteClient.AgentId, true);
 
             if (objatt != null)
             {
-                AttachObject(remoteClient, objatt.LocalId, AttachmentPt, new LLQuaternion(0, 0, 0, 1), objatt.AbsolutePosition);
+                AttachObject(remoteClient,objatt.LocalId,AttachmentPt,new LLQuaternion(0,0,0,1),objatt.AbsolutePosition);
                 objatt.ScheduleGroupForFullUpdate();
             }
+
         }
 
         // What makes this method odd and unique is it tries to detach using an LLUUID....     Yay for standards.
         // To LocalId or LLUUID, *THAT* is the question. How now Brown LLUUID??
         public void DetachSingleAttachmentToInv(LLUUID itemID, IClientAPI remoteClient)
         {
+            
             if (itemID == LLUUID.Zero) // If this happened, someone made a mistake....  
                 return;
 
@@ -363,16 +368,17 @@ namespace OpenSim.Region.Environment.Scenes
             {
                 if (obj is SceneObjectGroup)
                 {
-                    if (((SceneObjectGroup) obj).GetFromAssetID() == itemID)
+                    if (((SceneObjectGroup)obj).GetFromAssetID() == itemID)
                     {
-                        SceneObjectGroup group = (SceneObjectGroup) obj;
+                        SceneObjectGroup group = (SceneObjectGroup)obj;
                         group.DetachToInventoryPrep();
-                        m_log.Debug("[DETACH]: Saving attachpoint: " + ((uint) group.GetAttachmentPoint()));
-                        m_parentScene.updateKnownAsset(remoteClient, group, group.GetFromAssetID(), group.OwnerID);
+                        m_log.Debug("[DETACH]: Saving attachpoint: " + ((uint)group.GetAttachmentPoint()).ToString());
+                        m_parentScene.updateKnownAsset(remoteClient, group, group.GetFromAssetID(),group.OwnerID);
                         m_parentScene.DeleteSceneObjectGroup(group);
                     }
                 }
             }
+
         }
 
         public void AttachObject(IClientAPI remoteClient, uint objectLocalID, uint AttachmentPt, LLQuaternion rot, LLVector3 attachPos)
@@ -382,34 +388,39 @@ namespace OpenSim.Region.Environment.Scenes
             {
                 if (obj is SceneObjectGroup)
                 {
-                    if ((obj).LocalId == objectLocalID)
+                    if (((SceneObjectGroup)obj).LocalId == objectLocalID)
                     {
-                        SceneObjectGroup group = (SceneObjectGroup) obj;
-
+                        SceneObjectGroup group = (SceneObjectGroup)obj;
+                        
                         // If the attachment point isn't the same as the one previously used
                         // set it's offset position = 0 so that it appears on the attachment point
                         // and not in a weird location somewhere unknown.
-                        if (AttachmentPt != 0 && AttachmentPt != group.GetAttachmentPoint())
+                        if (AttachmentPt != 0 && AttachmentPt != (uint)group.GetAttachmentPoint())
                         {
+
                             attachPos = LLVector3.Zero;
                         }
 
                         // AttachmentPt 0 means the client chose to 'wear' the attachment.
                         if (AttachmentPt == 0)
                         {
+                            
                             // Check object for stored attachment point
-                            AttachmentPt = group.GetAttachmentPoint();
+                            AttachmentPt = (uint)group.GetAttachmentPoint();
+                            
+
                         }
 
                         // if we still didn't find a suitable attachment point.......
                         if (AttachmentPt == 0)
                         {
                             // Stick it on left hand with Zero Offset from the attachment point.
-                            AttachmentPt = (uint) AttachmentPoint.LeftHand;
+                            AttachmentPt = (uint)AttachmentPoint.LeftHand;
                             attachPos = LLVector3.Zero;
                         }
-                        m_log.Debug("[ATTACH]: Using attachpoint: " + AttachmentPt);
-
+                            m_log.Debug("[ATTACH]: Using attachpoint: " + AttachmentPt.ToString());
+                            
+                        
 
                         // Saves and gets assetID
                         if (group.GetFromAssetID() == LLUUID.Zero)
@@ -420,14 +431,16 @@ namespace OpenSim.Region.Environment.Scenes
                             group.SetFromAssetID(newAssetID);
                         }
                         group.AttachToAgent(remoteClient.AgentId, AttachmentPt, attachPos);
+                        
                     }
+
                 }
             }
-        }
 
+        }
         // Use the above method.
-        public void AttachObject(IClientAPI remoteClient, uint objectLocalID, uint AttachmentPt, LLQuaternion rot,
-                                 bool deadMethod)
+        public void AttachObject(IClientAPI remoteClient, uint objectLocalID, uint AttachmentPt, LLQuaternion rot, 
+            bool deadMethod)
         {
             Console.WriteLine("Attaching object " + objectLocalID + " to " + AttachmentPt);
             SceneObjectPart p = GetSceneObjectPart(objectLocalID);
@@ -476,14 +489,14 @@ namespace OpenSim.Region.Environment.Scenes
                     objupdate.ObjectData[0].ParentID = 0;
                     objupdate.ObjectData[0].OwnerID = LLUUID.Zero;
                     objupdate.ObjectData[0].Scale = new LLVector3(1, 1, 1);
-                    objupdate.ObjectData[0].PCode = (byte) PCode.Avatar;
+                    objupdate.ObjectData[0].PCode = (byte)PCode.Avatar;
                     objupdate.ObjectData[0].TextureEntry = ScenePresence.DefaultTexture;
 
                     objupdate.ObjectData[0].ID = av.LocalId;
                     objupdate.ObjectData[0].FullID = remoteClient.AgentId;
                     objupdate.ObjectData[0].ParentID = 0;
                     objupdate.ObjectData[0].NameValue =
-                        Helpers.StringToField("FirstName STRING RW SV " + av.Firstname + "\nLastName STRING RW SV " + av.Lastname);
+                           Helpers.StringToField("FirstName STRING RW SV " + av.Firstname + "\nLastName STRING RW SV " + av.Lastname);
                     LLVector3 pos2 = av.AbsolutePosition;
                     // new LLVector3((float) Pos.X, (float) Pos.Y, (float) Pos.Z);
                     byte[] pb = pos2.GetBytes();
@@ -516,7 +529,7 @@ namespace OpenSim.Region.Environment.Scenes
 
                     objupdate.ObjectData[1].TextureEntry = primData.TextureEntry;
                     objupdate.ObjectData[1].PCode = primData.PCode;
-                    objupdate.ObjectData[1].State = (byte) (((byte) AttachmentPt) << 4);
+                    objupdate.ObjectData[1].State = (byte)(((byte)AttachmentPt) << 4);
                     objupdate.ObjectData[1].PathBegin = primData.PathBegin;
                     objupdate.ObjectData[1].PathEnd = primData.PathEnd;
                     objupdate.ObjectData[1].PathScaleX = primData.PathScaleX;
@@ -553,8 +566,8 @@ namespace OpenSim.Region.Environment.Scenes
                     //objupdate.ObjectData[1].ClickAction = clickAction;
                     objupdate.ObjectData[1].Radius = 20;
                     objupdate.ObjectData[1].NameValue =
-                        Helpers.StringToField("AttachItemID STRING RW SV " + p.UUID);
-                    LLVector3 pos = new LLVector3((float) 0.0, (float) 0.0, (float) 0.0);
+                           Helpers.StringToField("AttachItemID STRING RW SV " + p.UUID);
+                    LLVector3 pos = new LLVector3((float)0.0, (float)0.0, (float)0.0);
 
                     pb = pos.GetBytes();
                     Array.Copy(pb, 0, objupdate.ObjectData[1].ObjectData, 0, pb.Length);
@@ -725,7 +738,6 @@ namespace OpenSim.Region.Environment.Scenes
             m_scriptLPS = 0;
             return returnval;
         }
-
         #endregion
 
         #region Get Methods
@@ -753,7 +765,7 @@ namespace OpenSim.Region.Environment.Scenes
 
             return result;
         }
-
+        
         /// <summary>
         /// Get the controlling client for the given avatar, if there is one.
         /// 
@@ -767,12 +779,12 @@ namespace OpenSim.Region.Environment.Scenes
         public IClientAPI GetControllingClient(LLUUID agentId)
         {
             ScenePresence presence = GetScenePresence(agentId);
-
+            
             if (presence != null)
             {
                 return presence.ControllingClient;
             }
-
+            
             return null;
         }
 
@@ -807,7 +819,7 @@ namespace OpenSim.Region.Environment.Scenes
             {
                 return ScenePresences[agentID];
             }
-
+            
             return null;
         }
 
@@ -819,8 +831,8 @@ namespace OpenSim.Region.Environment.Scenes
             {
                 if (ent is SceneObjectGroup)
                 {
-                    if (((SceneObjectGroup) ent).HasChildPrim(localID))
-                        return (SceneObjectGroup) ent;
+                    if (((SceneObjectGroup)ent).HasChildPrim(localID))
+                        return (SceneObjectGroup)ent;
                 }
             }
             return null;
@@ -834,8 +846,8 @@ namespace OpenSim.Region.Environment.Scenes
             {
                 if (ent is SceneObjectGroup)
                 {
-                    if (((SceneObjectGroup) ent).HasChildPrim(fullID))
-                        return (SceneObjectGroup) ent;
+                    if (((SceneObjectGroup)ent).HasChildPrim(fullID))
+                        return (SceneObjectGroup)ent;
                 }
             }
             return null;
@@ -850,7 +862,7 @@ namespace OpenSim.Region.Environment.Scenes
             {
                 if (ent is SceneObjectGroup)
                 {
-                    SceneObjectGroup reportingG = (SceneObjectGroup) ent;
+                    SceneObjectGroup reportingG = (SceneObjectGroup)ent;
                     EntityIntersection result = reportingG.TestIntersection(hray, frontFacesOnly, faceCenters);
                     if (result.HitTF)
                     {
@@ -890,13 +902,13 @@ namespace OpenSim.Region.Environment.Scenes
             {
                 if (!presence.IsChildAgent)
                 {
-                    avatar = presence;
+                    avatar = presence;                   
                     return true;
                 }
                 else
                 {
                     m_log.WarnFormat(
-                        "[INNER SCENE]: Requested avatar {0} could not be found in scene {1} since it is only registered as a child agent!",
+                        "[INNER SCENE]: Requested avatar {0} could not be found in scene {1} since it is only registered as a child agent!", 
                         avatarId, m_parentScene.RegionInfo.RegionName);
                 }
             }
@@ -975,8 +987,8 @@ namespace OpenSim.Region.Environment.Scenes
 
                     if (presence.IsChildAgent && m_parentScene.m_seeIntoRegionFromNeighbor)
                     {
-                        LLVector3 oLoc = (ent).AbsolutePosition;
-                        float distResult = (float) Util.GetDistanceTo(presence.AbsolutePosition, oLoc);
+                        LLVector3 oLoc = ((SceneObjectGroup)ent).AbsolutePosition;
+                        float distResult = (float)Util.GetDistanceTo(presence.AbsolutePosition, oLoc);
 
                         //m_log.Info("[DISTANCE]: " + distResult.ToString());
 
@@ -984,13 +996,13 @@ namespace OpenSim.Region.Environment.Scenes
                         {
                             // Send Only if we don't already know about it.
                             // KnownPrim also makes the prim known when called.
-                            if (!presence.KnownPrim((ent).UUID))
-                                ((SceneObjectGroup) ent).ScheduleFullUpdateToAvatar(presence);
+                            if (!presence.KnownPrim(((SceneObjectGroup)ent).UUID))
+                                ((SceneObjectGroup)ent).ScheduleFullUpdateToAvatar(presence);
                         }
                     }
                     else
                     {
-                        ((SceneObjectGroup) ent).ScheduleFullUpdateToAvatar(presence);
+                        ((SceneObjectGroup)ent).ScheduleFullUpdateToAvatar(presence);
                     }
                 }
             }
@@ -1025,7 +1037,6 @@ namespace OpenSim.Region.Environment.Scenes
                 }
             }
         }
-
         public void UpdatePrimGroupScale(uint localID, LLVector3 scale, IClientAPI remoteClient)
         {
             SceneObjectGroup group = GetGroupByPrim(localID);
@@ -1140,12 +1151,13 @@ namespace OpenSim.Region.Environment.Scenes
             SceneObjectGroup group = GetGroupByPrim(localID);
             if (group != null)
             {
+                
                 LLVector3 oldPos = group.AbsolutePosition;
                 if (group.RootPart.m_IsAttachment)
                 {
                     group.UpdateGroupPosition(pos);
                 }
-                else
+                else 
                 {
                     if (!PermissionsMngr.CanObjectEntry(remoteClient.AgentId, oldPos, pos) && !group.RootPart.m_IsAttachment)
                     {
@@ -1191,7 +1203,7 @@ namespace OpenSim.Region.Environment.Scenes
             {
                 if (PermissionsMngr.CanEditObject(remoteClient.AgentId, group.UUID))
                 {
-                    group.UpdatePrimFlags(localID, (ushort) packet.Type, true, packet.ToBytes());
+                    group.UpdatePrimFlags(localID, (ushort)packet.Type, true, packet.ToBytes());
                 }
             }
         }
@@ -1201,7 +1213,7 @@ namespace OpenSim.Region.Environment.Scenes
             SceneObjectGroup group = GetGroupByPrim(objectID);
             if (group != null)
             {
-                if (PermissionsMngr.CanEditObjectPosition(remoteClient.AgentId, group.UUID)) // && PermissionsMngr.)
+                if (PermissionsMngr.CanEditObjectPosition(remoteClient.AgentId, group.UUID))// && PermissionsMngr.)
                 {
                     group.GrabMovement(offset, pos, remoteClient);
                 }
@@ -1292,9 +1304,9 @@ namespace OpenSim.Region.Environment.Scenes
             {
                 if (ent is SceneObjectGroup)
                 {
-                    if ((ent).LocalId == parentPrim)
+                    if (((SceneObjectGroup)ent).LocalId == parentPrim)
                     {
-                        parenPrim = (SceneObjectGroup) ent;
+                        parenPrim = (SceneObjectGroup)ent;
                         break;
                     }
                 }
@@ -1309,9 +1321,9 @@ namespace OpenSim.Region.Environment.Scenes
                     {
                         if (ent is SceneObjectGroup)
                         {
-                            if ((ent).LocalId == childPrims[i])
+                            if (((SceneObjectGroup)ent).LocalId == childPrims[i])
                             {
-                                children.Add((SceneObjectGroup) ent);
+                                children.Add((SceneObjectGroup)ent);
                             }
                         }
                     }
@@ -1322,7 +1334,7 @@ namespace OpenSim.Region.Environment.Scenes
             {
                 parenPrim.LinkToGroup(sceneObj);
             }
-
+            
             // We need to explicitly resend the newly link prim's object properties since no other actions
             // occur on link to invoke this elsewhere (such as object selection)
             parenPrim.GetProperties(client);
@@ -1348,16 +1360,19 @@ namespace OpenSim.Region.Environment.Scenes
             {
                 if (ent is SceneObjectGroup)
                 {
-                    SceneObjectGroup obj = (SceneObjectGroup) ent;
+                    SceneObjectGroup obj = (SceneObjectGroup)ent;
                     sceneObjects.Add(obj.LocalId, obj);
+
                 }
             }
 
             // Find the root prim among the prim ids we've been given
             for (int i = 0; i < primIds.Count; i++)
             {
+
                 if (sceneObjects.ContainsKey(primIds[i]))
                 {
+
                     parenPrim = sceneObjects[primIds[i]];
                     primIds.RemoveAt(i);
                     break;
@@ -1387,13 +1402,14 @@ namespace OpenSim.Region.Environment.Scenes
                             grp.DelinkFromGroup(primIds[i]);
                             delinkedSomething = true;
                         }
+
                     }
                 }
                 if (!delinkedSomething)
                 {
                     m_log.InfoFormat("[SCENE]: " +
-                                     "DelinkObjects(): Could not find a root prim out of {0} as given to a delink request!",
-                                     primIds);
+                                    "DelinkObjects(): Could not find a root prim out of {0} as given to a delink request!",
+                                    primIds);
                 }
             }
         }
@@ -1409,7 +1425,7 @@ namespace OpenSim.Region.Environment.Scenes
             {
                 if (ent is SceneObjectGroup)
                 {
-                    foreach (KeyValuePair<LLUUID, SceneObjectPart> subent in ((SceneObjectGroup) ent).Children)
+                    foreach (KeyValuePair<LLUUID, SceneObjectPart> subent in ((SceneObjectGroup)ent).Children)
                     {
                         if (subent.Value.LocalId == localID)
                         {
@@ -1419,7 +1435,7 @@ namespace OpenSim.Region.Environment.Scenes
                     }
                 }
             }
-
+            
             //Protip: In my day, we didn't call them searchable objects, we called them limited point-to-point joints
             //aka ObjectFlags.JointWheel = IncludeInSearch
 
@@ -1451,7 +1467,7 @@ namespace OpenSim.Region.Environment.Scenes
         public void DuplicateObject(uint originalPrim, LLVector3 offset, uint flags, LLUUID AgentID, LLUUID GroupID)
         {
             m_log.DebugFormat("[SCENE]: Duplication of object {0} at offset {1} requested by agent {2}", originalPrim, offset, AgentID);
-
+            
             List<EntityBase> EntityList = GetEntities();
 
             SceneObjectGroup originPrim = null;
@@ -1459,9 +1475,9 @@ namespace OpenSim.Region.Environment.Scenes
             {
                 if (ent is SceneObjectGroup)
                 {
-                    if ((ent).LocalId == originalPrim)
+                    if (((SceneObjectGroup)ent).LocalId == originalPrim)
                     {
-                        originPrim = (SceneObjectGroup) ent;
+                        originPrim = (SceneObjectGroup)ent;
                         break;
                     }
                 }
@@ -1510,4 +1526,4 @@ namespace OpenSim.Region.Environment.Scenes
 
         #endregion
     }
-}
+}

+ 159 - 157
OpenSim/Region/Environment/Scenes/Scene.Inventory.cs

@@ -40,7 +40,7 @@ namespace OpenSim.Region.Environment.Scenes
 {
     public partial class Scene
     {
-        private static readonly ILog m_log
+        private static readonly ILog m_log 
             = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
 
         /// <summary>
@@ -49,11 +49,11 @@ namespace OpenSim.Region.Environment.Scenes
         public void StartScripts()
         {
             m_log.Info("[PRIM INVENTORY]: Starting scripts in scene");
-
+            
             foreach (SceneObjectGroup group in Entities.Values)
             {
                 group.StartScripts();
-            }
+            }            
         }
 
         /// <summary>
@@ -64,9 +64,9 @@ namespace OpenSim.Region.Environment.Scenes
         /// in which the item is to be placed.</param>
         public void AddInventoryItem(IClientAPI remoteClient, InventoryItemBase item)
         {
-            CachedUserInfo userInfo
+            CachedUserInfo userInfo 
                 = CommsManager.UserProfileCacheService.GetUserDetails(remoteClient.AgentId);
-
+            
             if (userInfo != null)
             {
                 userInfo.AddItem(remoteClient.AgentId, item);
@@ -88,9 +88,9 @@ namespace OpenSim.Region.Environment.Scenes
                 m_log.ErrorFormat(
                     "[AGENT INVENTORY]: Agent {0} {1} was not found for add of item {2} {3}",
                     remoteClient.Name, remoteClient.AgentId, item.Name, item.ID);
-
+                
                 return;
-            }
+            }             
         }
 
         /// <summary> 
@@ -190,7 +190,7 @@ namespace OpenSim.Region.Environment.Scenes
         {
             // Retrieve group
             SceneObjectPart part = GetSceneObjectPart(primId);
-            SceneObjectGroup group = part.ParentGroup;
+            SceneObjectGroup group = part.ParentGroup;            
             if (null == group)
             {
                 m_log.ErrorFormat(
@@ -200,30 +200,30 @@ namespace OpenSim.Region.Environment.Scenes
 
                 return;
             }
-
+                        
             // Retrieve item
             TaskInventoryItem item = group.GetInventoryItem(part.LocalId, itemId);
             if (null == item)
             {
                 return;
             }
-
+            
             // Create new asset
             // XXX Hardcoding the numbers is a temporary measure - need an enumeration for this 
             // There may well be one in libsecondlife
             AssetBase asset = CreateAsset(item.Name, item.Description, 10, 10, data);
             AssetCache.AddAsset(asset);
-
+                        
             // Update item with new asset
             item.AssetID = asset.FullID;
             group.UpdateInventoryItem(item);
             group.GetProperties(remoteClient);
-
+            
             // Trigger rerunning of script (use TriggerRezScript event, see RezScript)           
             if (isScriptRunning)
             {
                 group.StopScript(part.LocalId, item.ItemID);
-                group.StartScript(part.LocalId, item.ItemID);
+                group.StartScript(part.LocalId, item.ItemID);            
             }
         }
 
@@ -272,7 +272,7 @@ namespace OpenSim.Region.Environment.Scenes
             if (userInfo != null && userInfo.RootFolder != null)
             {
                 InventoryItemBase item = userInfo.RootFolder.HasItem(itemID);
-
+                
                 if (item != null)
                 {
                     if (LLUUID.Zero == transactionID)
@@ -298,11 +298,11 @@ namespace OpenSim.Region.Environment.Scenes
                     }
                     else
                     {
-                        IAgentAssetTransactions agentTransactions = RequestModuleInterface<IAgentAssetTransactions>();
+                        IAgentAssetTransactions agentTransactions = this.RequestModuleInterface<IAgentAssetTransactions>();
                         if (agentTransactions != null)
                         {
                             agentTransactions.HandleItemUpdateFromTransaction(
-                                remoteClient, transactionID, item);
+                                         remoteClient, transactionID, item);
                         }
                     }
                 }
@@ -318,7 +318,7 @@ namespace OpenSim.Region.Environment.Scenes
                     "[AGENT INVENTORY]: Agent ID " + remoteClient.AgentId + " not found for an inventory item update.");
             }
         }
-
+        
         /// <summary>
         /// Give an inventory item from one avatar to another
         /// </summary>
@@ -328,13 +328,13 @@ namespace OpenSim.Region.Environment.Scenes
         public void GiveInventoryItem(IClientAPI recipientClient, LLUUID senderId, LLUUID itemId)
         {
             // Retrieve the item from the sender
-            CachedUserInfo senderUserInfo = CommsManager.UserProfileCacheService.GetUserDetails(senderId);
-
+            CachedUserInfo senderUserInfo = CommsManager.UserProfileCacheService.GetUserDetails(senderId);            
+            
             if (senderUserInfo == null)
             {
                 m_log.ErrorFormat(
-                    "[AGENT INVENTORY]: Failed to find sending user {0} for item {1}", senderId, itemId);
-
+                     "[AGENT INVENTORY]: Failed to find sending user {0} for item {1}", senderId, itemId);
+                
                 return;
             }
 
@@ -342,11 +342,11 @@ namespace OpenSim.Region.Environment.Scenes
             {
                 InventoryItemBase item = senderUserInfo.RootFolder.HasItem(itemId);
                 if (item != null)
-                {
+                {             
                     // TODO get recipient's root folder
-                    CachedUserInfo recipientUserInfo
-                        = CommsManager.UserProfileCacheService.GetUserDetails(recipientClient.AgentId);
-
+                    CachedUserInfo recipientUserInfo 
+                        = CommsManager.UserProfileCacheService.GetUserDetails(recipientClient.AgentId);                    
+                    
                     if (recipientUserInfo != null)
                     {
                         // Insert a copy of the item into the recipient                    
@@ -373,15 +373,15 @@ namespace OpenSim.Region.Environment.Scenes
                         itemCopy.SaleType = item.SaleType;
 
                         recipientUserInfo.AddItem(recipientClient.AgentId, itemCopy);
-
+                        
                         // Let the recipient client know about this new item
-                        recipientClient.SendBulkUpdateInventory(itemCopy);
+                        recipientClient.SendBulkUpdateInventory(itemCopy);                         
                     }
                     else
                     {
                         m_log.ErrorFormat(
-                            "[AGENT INVENTORY]: Could not find userinfo for recipient user {0}, {1} of item {2}, {3} from {4}",
-                            recipientClient.Name, recipientClient.AgentId, item.Name,
+                            "[AGENT INVENTORY]: Could not find userinfo for recipient user {0}, {1} of item {2}, {3} from {4}", 
+                            recipientClient.Name, recipientClient.AgentId, item.Name, 
                             item.ID, senderId);
                     }
                 }
@@ -389,15 +389,15 @@ namespace OpenSim.Region.Environment.Scenes
                 {
                     m_log.ErrorFormat(
                         "[AGENT INVENTORY]: Failed to find item {0} to give to {1}", itemId, senderId);
-
+                    
                     return;
                 }
             }
             else
             {
-                m_log.Error("[AGENT INVENTORY]: Failed to find item " + itemId + ", no root folder");
+                m_log.Error("[AGENT INVENTORY]: Failed to find item " + itemId.ToString() + ", no root folder");
                 return;
-            }
+            }                       
         }
 
         public void CopyInventoryItem(IClientAPI remoteClient, uint callbackID, LLUUID oldAgentID, LLUUID oldItemID,
@@ -406,14 +406,14 @@ namespace OpenSim.Region.Environment.Scenes
             m_log.DebugFormat(
                 "[AGENT INVENTORY]: CopyInventoryItem received by {0} with oldAgentID {1}, oldItemID {2}, new FolderID {3}, newName {4}",
                 remoteClient.AgentId, oldAgentID, oldItemID, newFolderID, newName);
-
+            
             InventoryItemBase item = CommsManager.UserProfileCacheService.libraryRoot.HasItem(oldItemID);
             if (item == null)
             {
                 CachedUserInfo userInfo = CommsManager.UserProfileCacheService.GetUserDetails(oldAgentID);
                 if (userInfo == null)
                 {
-                    m_log.Error("[AGENT INVENTORY]: Failed to find user " + oldAgentID);
+                    m_log.Error("[AGENT INVENTORY]: Failed to find user " + oldAgentID.ToString());
                     return;
                 }
 
@@ -422,20 +422,20 @@ namespace OpenSim.Region.Environment.Scenes
                     item = userInfo.RootFolder.HasItem(oldItemID);
                     if (item == null)
                     {
-                        m_log.Error("[AGENT INVENTORY]: Failed to find item " + oldItemID);
+                        m_log.Error("[AGENT INVENTORY]: Failed to find item " + oldItemID.ToString());
                         return;
                     }
                 }
                 else
                 {
-                    m_log.Error("[AGENT INVENTORY]: Failed to find item " + oldItemID);
+                    m_log.Error("[AGENT INVENTORY]: Failed to find item " + oldItemID.ToString());
                     return;
                 }
             }
-
-            AssetBase asset
+            
+            AssetBase asset 
                 = AssetCache.GetAsset(
-                    item.AssetID, (item.AssetType == (int) AssetType.Texture ? true : false));
+                    item.AssetID, (item.AssetType == (int)AssetType.Texture ? true : false));
 
             if (asset != null)
             {
@@ -447,7 +447,7 @@ namespace OpenSim.Region.Environment.Scenes
             {
                 m_log.ErrorFormat(
                     "[AGENT INVENTORY]: Could not copy item {0} since asset {1} could not be found",
-                    item.Name, item.AssetID);
+                    item.Name, item.AssetID);                
             }
         }
 
@@ -472,7 +472,7 @@ namespace OpenSim.Region.Environment.Scenes
             CachedUserInfo userInfo = CommsManager.UserProfileCacheService.GetUserDetails(remoteClient.AgentId);
             if (userInfo == null)
             {
-                m_log.Error("[AGENT INVENTORY]: Failed to find user " + remoteClient.AgentId);
+                m_log.Error("[AGENT INVENTORY]: Failed to find user " + remoteClient.AgentId.ToString());
                 return;
             }
 
@@ -493,13 +493,13 @@ namespace OpenSim.Region.Environment.Scenes
                 }
                 else
                 {
-                    m_log.Error("[AGENT INVENTORY]: Failed to find item " + itemID);
+                    m_log.Error("[AGENT INVENTORY]: Failed to find item " + itemID.ToString());
                     return;
                 }
             }
             else
             {
-                m_log.Error("[AGENT INVENTORY]: Failed to find item " + itemID + ", no root folder");
+                m_log.Error("[AGENT INVENTORY]: Failed to find item " + itemID.ToString() + ", no root folder");
                 return;
             }
         }
@@ -515,9 +515,9 @@ namespace OpenSim.Region.Environment.Scenes
         private void CreateNewInventoryItem(IClientAPI remoteClient, LLUUID folderID, uint callbackID,
                                             AssetBase asset, uint nextOwnerMask)
         {
-            CachedUserInfo userInfo
+            CachedUserInfo userInfo 
                 = CommsManager.UserProfileCacheService.GetUserDetails(remoteClient.AgentId);
-
+            
             if (userInfo != null)
             {
                 InventoryItemBase item = new InventoryItemBase();
@@ -539,8 +539,8 @@ namespace OpenSim.Region.Environment.Scenes
             else
             {
                 m_log.WarnFormat(
-                    "No user details associated with client {0} uuid {1} in CreateNewInventoryItem!",
-                    remoteClient.Name, remoteClient.AgentId);
+                    "No user details associated with client {0} uuid {1} in CreateNewInventoryItem!", 
+                     remoteClient.Name, remoteClient.AgentId);
             }
         }
 
@@ -564,25 +564,25 @@ namespace OpenSim.Region.Environment.Scenes
                                            byte wearableType, uint nextOwnerMask)
         {
 //            m_log.DebugFormat("[AGENT INVENTORY]: Received request to create inventory item {0} in folder {1}", name, folderID);
-
+            
             if (transactionID == LLUUID.Zero)
             {
-                CachedUserInfo userInfo
+                CachedUserInfo userInfo 
                     = CommsManager.UserProfileCacheService.GetUserDetails(remoteClient.AgentId);
-
+                
                 if (userInfo != null)
                 {
                     ScenePresence presence;
                     TryGetAvatar(remoteClient.AgentId, out presence);
                     byte[] data = null;
-                    if (invType == 3 && presence != null) // libsecondlife.asset.assettype.landmark = 3 - needs to be turned into an enum
+                    if(invType == 3 && presence != null) // libsecondlife.asset.assettype.landmark = 3 - needs to be turned into an enum
                     {
-                        LLVector3 pos = presence.AbsolutePosition;
-                        string strdata = String.Format("Landmark version 2\nregion_id {0}\nlocal_pos {1} {2} {3}\nregion_handle {4}\n",
-                                                       presence.Scene.RegionInfo.RegionID,
-                                                       pos.X, pos.Y, pos.Z,
-                                                       presence.RegionHandle);
-                        data = Encoding.ASCII.GetBytes(strdata);
+                        LLVector3 pos=presence.AbsolutePosition;
+                        string strdata=String.Format("Landmark version 2\nregion_id {0}\nlocal_pos {1} {2} {3}\nregion_handle {4}\n",
+                            presence.Scene.RegionInfo.RegionID,
+                            pos.X, pos.Y, pos.Z,
+                            presence.RegionHandle);
+                        data=Encoding.ASCII.GetBytes(strdata);
                     }
 
                     AssetBase asset = CreateAsset(name, description, invType, assetType, data);
@@ -593,19 +593,21 @@ namespace OpenSim.Region.Environment.Scenes
                 else
                 {
                     m_log.ErrorFormat(
-                        "userInfo for agent uuid {0} unexpectedly null in CreateNewInventoryItem",
+                        "userInfo for agent uuid {0} unexpectedly null in CreateNewInventoryItem", 
                         remoteClient.AgentId);
                 }
             }
             else
             {
-                IAgentAssetTransactions agentTransactions = RequestModuleInterface<IAgentAssetTransactions>();
+                IAgentAssetTransactions agentTransactions = this.RequestModuleInterface<IAgentAssetTransactions>();
                 if (agentTransactions != null)
                 {
                     agentTransactions.HandleItemCreationFromTransaction(
-                        remoteClient, transactionID, folderID, callbackID, description,
-                        name, invType, assetType, wearableType, nextOwnerMask);
+                    remoteClient, transactionID, folderID, callbackID, description,
+                    name, invType, assetType, wearableType, nextOwnerMask); 
                 }
+
+                                
             }
         }
 
@@ -615,7 +617,7 @@ namespace OpenSim.Region.Environment.Scenes
                 = CommsManager.UserProfileCacheService.GetUserDetails(remoteClient.AgentId);
             if (userInfo == null)
             {
-                m_log.Error("[AGENT INVENTORY]: Failed to find user " + remoteClient.AgentId);
+                m_log.Error("[AGENT INVENTORY]: Failed to find user " + remoteClient.AgentId.ToString());
                 return;
             }
 
@@ -639,7 +641,7 @@ namespace OpenSim.Region.Environment.Scenes
                 = CommsManager.UserProfileCacheService.GetUserDetails(remoteClient.AgentId);
             if (userInfo == null)
             {
-                m_log.Error("[AGENT INVENTORY]: Failed to find user " + remoteClient.AgentId);
+                m_log.Error("[AGENT INVENTORY]: Failed to find user " + remoteClient.AgentId.ToString());
                 return;
             }
 
@@ -675,7 +677,7 @@ namespace OpenSim.Region.Environment.Scenes
         /// <param name="remoteClient"></param>
         /// <param name="primLocalID"></param>
         public void RequestTaskInventory(IClientAPI remoteClient, uint primLocalID)
-        {
+        {    
             SceneObjectGroup group = GetGroupByPrim(primLocalID);
             if (group != null)
             {
@@ -723,7 +725,7 @@ namespace OpenSim.Region.Environment.Scenes
                     localID);
             }
         }
-
+        
         /// <summary>
         /// Move the given item in the given prim to a folder in the client's inventory
         /// </summary>
@@ -734,43 +736,43 @@ namespace OpenSim.Region.Environment.Scenes
         public void MoveTaskInventoryItem(IClientAPI remoteClient, LLUUID folderId, uint primLocalId, LLUUID itemId)
         {
             SceneObjectGroup group = GetGroupByPrim(primLocalId);
-
+            
             if (null == group)
             {
                 m_log.WarnFormat(
                     "[PRIM INVENTORY]: " +
                     "Move of inventory item {0} from prim with local id {1} failed because the prim could not be found",
                     itemId, primLocalId);
-
+                
                 return;
-            }
-
+            }      
+            
             TaskInventoryItem taskItem = group.GetInventoryItem(primLocalId, itemId);
-
+            
             if (null == taskItem)
             {
                 // Console already notified of error in GetInventoryItem
                 return;
             }
-
+            
 //                        bool permission;
 //                            permission = PermissionsMngr.CanCopyObject(remoteClient.AgentId, 
 //                                                                ((SceneObjectGroup) selectedEnt).UUID);
-
+            
             // Pending resolving upstream problems with permissions, we just won't allow anybody who is not the owner
             // to copy
             if (remoteClient.AgentId != taskItem.OwnerID)
             {
                 m_log.InfoFormat(
                     "[PRIM INVENTORY]: Attempt made by {0} {1} to copy inventory item {2} {3} in prim {4} {5},"
-                    + " but temporarily not allowed pending upstream bugfixes/feature implementation",
+                        + " but temporarily not allowed pending upstream bugfixes/feature implementation",
                     remoteClient.Name, remoteClient.AgentId, taskItem.Name, taskItem.ItemID, group.Name, group.UUID);
 
                 return;
             }
-
+            
             InventoryItemBase agentItem = new InventoryItemBase();
-
+            
             agentItem.ID = LLUUID.Random();
             agentItem.Creator = taskItem.CreatorID;
             agentItem.Owner = remoteClient.AgentId;
@@ -781,9 +783,8 @@ namespace OpenSim.Region.Environment.Scenes
             agentItem.InvType = taskItem.InvType;
             agentItem.Folder = folderId;
             agentItem.EveryOnePermissions = taskItem.EveryoneMask;
-
-            if (remoteClient.AgentId != taskItem.OwnerID)
-            {
+            
+            if (remoteClient.AgentId != taskItem.OwnerID) {
                 agentItem.BasePermissions = taskItem.NextOwnerMask;
                 agentItem.CurrentPermissions = taskItem.NextOwnerMask;
                 agentItem.NextPermissions = taskItem.NextOwnerMask;
@@ -792,9 +793,9 @@ namespace OpenSim.Region.Environment.Scenes
             {
                 agentItem.BasePermissions = taskItem.BaseMask;
                 agentItem.CurrentPermissions = taskItem.OwnerMask;
-                agentItem.NextPermissions = taskItem.NextOwnerMask;
+                agentItem.NextPermissions = taskItem.NextOwnerMask;                    
             }
-
+                
             AddInventoryItem(remoteClient, agentItem);
         }
 
@@ -833,7 +834,7 @@ namespace OpenSim.Region.Environment.Scenes
                         {
                             group.AddInventoryItem(remoteClient, primLocalID, item, copyID);
                             m_log.InfoFormat(
-                                "[PRIM INVENTORY]: Update with item {0} requested of prim {1} for {2}",
+                                "[PRIM INVENTORY]: Update with item {0} requested of prim {1} for {2}", 
                                 item.Name, primLocalID, remoteClient.Name);
                             group.GetProperties(remoteClient);
                         }
@@ -864,22 +865,22 @@ namespace OpenSim.Region.Environment.Scenes
         public void RezScript(IClientAPI remoteClient, LLUUID itemID, uint localID)
         {
             LLUUID copyID = LLUUID.Random();
-
+            
             if (itemID != LLUUID.Zero)
             {
                 CachedUserInfo userInfo = CommsManager.UserProfileCacheService.GetUserDetails(remoteClient.AgentId);
-
+            
                 if (userInfo != null && userInfo.RootFolder != null)
                 {
                     InventoryItemBase item = userInfo.RootFolder.HasItem(itemID);
-
+                    
                     // Try library
                     // XXX clumsy, possibly should be one call
                     if (null == item)
                     {
                         item = CommsManager.UserProfileCacheService.libraryRoot.HasItem(itemID);
                     }
-
+                        
                     if (item != null)
                     {
                         SceneObjectGroup group = GetGroupByPrim(localID);
@@ -888,10 +889,10 @@ namespace OpenSim.Region.Environment.Scenes
                             group.AddInventoryItem(remoteClient, localID, item, copyID);
                             group.StartScript(localID, copyID);
                             group.GetProperties(remoteClient);
-
-                            //                        m_log.InfoFormat("[PRIMINVENTORY]: " +
-                            //                                         "Rezzed script {0} into prim local ID {1} for user {2}",
-                            //                                         item.inventoryName, localID, remoteClient.Name);
+    
+    //                        m_log.InfoFormat("[PRIMINVENTORY]: " +
+    //                                         "Rezzed script {0} into prim local ID {1} for user {2}",
+    //                                         item.inventoryName, localID, remoteClient.Name);
                         }
                         else
                         {
@@ -910,7 +911,7 @@ namespace OpenSim.Region.Environment.Scenes
                     }
                 }
             }
-            else // If the itemID is zero then the script has been rezzed directly in an object's inventory
+            else  // If the itemID is zero then the script has been rezzed directly in an object's inventory
             {
                 // not yet implemented
                 // TODO Need to get more details from original RezScript packet                
@@ -926,7 +927,7 @@ namespace OpenSim.Region.Environment.Scenes
         /// <param name="packet"></param>
         /// <param name="simClient"></param>
         public virtual void DeRezObject(Packet packet, IClientAPI remoteClient)
-        {
+        {     
             DeRezObjectPacket DeRezPacket = (DeRezObjectPacket) packet;
 
             if (DeRezPacket.AgentBlock.DestinationID == LLUUID.Zero)
@@ -936,11 +937,11 @@ namespace OpenSim.Region.Environment.Scenes
             else
             {
                 foreach (DeRezObjectPacket.ObjectDataBlock Data in DeRezPacket.ObjectData)
-                {
+                {            
 //                    m_log.DebugFormat(
 //                        "[AGENT INVENTORY]: Received request to derez {0} into folder {1}",
 //                        Data.ObjectLocalID, DeRezPacket.AgentBlock.DestinationID);
-
+                    
                     EntityBase selectedEnt = null;
                     //m_log.Info("[CLIENT]: LocalID:" + Data.ObjectLocalID.ToString());
 
@@ -958,16 +959,14 @@ namespace OpenSim.Region.Environment.Scenes
                     {
                         bool permission;
                         if (DeRezPacket.AgentBlock.Destination == 1)
-                        {
-                            // Take Copy
-                            permission = PermissionsMngr.CanCopyObject(remoteClient.AgentId,
-                                                                       (selectedEnt).UUID);
+                        { // Take Copy
+                            permission = PermissionsMngr.CanCopyObject(remoteClient.AgentId, 
+                                                                ((SceneObjectGroup) selectedEnt).UUID);
                         }
                         else
-                        {
-                            // Take
-                            permission = PermissionsMngr.CanDeRezObject(remoteClient.AgentId,
-                                                                        (selectedEnt).UUID);
+                        { // Take
+                            permission = PermissionsMngr.CanDeRezObject(remoteClient.AgentId, 
+                                                                ((SceneObjectGroup) selectedEnt).UUID);
                         }
 
                         if (permission)
@@ -998,8 +997,7 @@ namespace OpenSim.Region.Environment.Scenes
                                 item.InvType = asset.InvType;
                                 item.Folder = DeRezPacket.AgentBlock.DestinationID;
                                 item.EveryOnePermissions = objectGroup.RootPart.EveryoneMask;
-                                if (remoteClient.AgentId != objectGroup.RootPart.OwnerID)
-                                {
+                                if (remoteClient.AgentId != objectGroup.RootPart.OwnerID) {
                                     item.BasePermissions = objectGroup.RootPart.NextOwnerMask;
                                     item.CurrentPermissions = objectGroup.RootPart.NextOwnerMask;
                                     item.NextPermissions = objectGroup.RootPart.NextOwnerMask;
@@ -1027,7 +1025,6 @@ namespace OpenSim.Region.Environment.Scenes
                 }
             }
         }
-
         public void updateKnownAsset(IClientAPI remoteClient, SceneObjectGroup grp, LLUUID assetID, LLUUID agentID)
         {
             SceneObjectGroup objectGroup = grp;
@@ -1047,6 +1044,7 @@ namespace OpenSim.Region.Environment.Scenes
                     // search through folders to find the asset.
                     while (searchfolders.Count > 0)
                     {
+
                         InventoryFolderImpl fld = searchfolders.Dequeue();
                         lock (fld)
                         {
@@ -1071,8 +1069,8 @@ namespace OpenSim.Region.Environment.Scenes
                     AssetBase asset = CreateAsset(
                         objectGroup.GetPartName(objectGroup.LocalId),
                         objectGroup.GetPartDescription(objectGroup.LocalId),
-                        (sbyte) InventoryType.Object,
-                        (sbyte) AssetType.Object,
+                        (sbyte)InventoryType.Object,
+                        (sbyte)AssetType.Object,
                         Helpers.StringToField(sceneObjectXml));
                     AssetCache.AddAsset(asset);
 
@@ -1088,7 +1086,7 @@ namespace OpenSim.Region.Environment.Scenes
 
                     // Sticking it in root folder for now..    objects folder later?
 
-                    item.Folder = foundFolder; // DeRezPacket.AgentBlock.DestinationID;
+                    item.Folder = foundFolder;// DeRezPacket.AgentBlock.DestinationID;
                     item.EveryOnePermissions = objectGroup.RootPart.EveryoneMask;
                     if (agentID != objectGroup.RootPart.OwnerID)
                     {
@@ -1110,10 +1108,10 @@ namespace OpenSim.Region.Environment.Scenes
                     {
                         remoteClient.SendInventoryItemCreateUpdate(item);
                     }
+                    
                 }
             }
         }
-
         public LLUUID attachObjectAssetStore(IClientAPI remoteClient, SceneObjectGroup grp, LLUUID AgentId)
         {
             SceneObjectGroup objectGroup = grp;
@@ -1128,8 +1126,8 @@ namespace OpenSim.Region.Environment.Scenes
                     AssetBase asset = CreateAsset(
                         objectGroup.GetPartName(objectGroup.LocalId),
                         objectGroup.GetPartDescription(objectGroup.LocalId),
-                        (sbyte) InventoryType.Object,
-                        (sbyte) AssetType.Object,
+                        (sbyte)InventoryType.Object,
+                        (sbyte)AssetType.Object,
                         Helpers.StringToField(sceneObjectXml));
                     AssetCache.AddAsset(asset);
 
@@ -1142,10 +1140,10 @@ namespace OpenSim.Region.Environment.Scenes
                     item.Name = asset.Name;
                     item.AssetType = asset.Type;
                     item.InvType = asset.InvType;
-
+                    
                     // Sticking it in root folder for now..    objects folder later?
 
-                    item.Folder = userInfo.RootFolder.ID; // DeRezPacket.AgentBlock.DestinationID;
+                    item.Folder = userInfo.RootFolder.ID;// DeRezPacket.AgentBlock.DestinationID;
                     item.EveryOnePermissions = objectGroup.RootPart.EveryoneMask;
                     if (remoteClient.AgentId != objectGroup.RootPart.OwnerID)
                     {
@@ -1167,6 +1165,7 @@ namespace OpenSim.Region.Environment.Scenes
                 return LLUUID.Zero;
             }
             return LLUUID.Zero;
+
         }
 
         /// <summary>
@@ -1188,63 +1187,64 @@ namespace OpenSim.Region.Environment.Scenes
         /// <param name="RemoveItem"></param>
         /// <param name="fromTaskID"></param>
         public virtual void RezObject(IClientAPI remoteClient, LLUUID itemID, LLVector3 RayEnd, LLVector3 RayStart,
-                                      LLUUID RayTargetID, byte BypassRayCast, bool RayEndIsIntersection,
-                                      uint EveryoneMask, uint GroupMask, uint NextOwnerMask, uint ItemFlags,
-                                      bool RezSelected, bool RemoveItem, LLUUID fromTaskID)
+                                    LLUUID RayTargetID, byte BypassRayCast, bool RayEndIsIntersection,
+                                    uint EveryoneMask, uint GroupMask, uint NextOwnerMask, uint ItemFlags,
+                                    bool RezSelected, bool RemoveItem, LLUUID fromTaskID)
         {
             SceneObjectGroup sog = RezObject(remoteClient, itemID, RayEnd, RayStart,
-                                             RayTargetID, BypassRayCast, RayEndIsIntersection,
-                                             EveryoneMask, GroupMask, NextOwnerMask, ItemFlags,
-                                             RezSelected, RemoveItem, fromTaskID, false);
+                                    RayTargetID, BypassRayCast, RayEndIsIntersection,
+                                    EveryoneMask, GroupMask, NextOwnerMask, ItemFlags,
+                                    RezSelected, RemoveItem, fromTaskID, false);
         }
 
 
-        /// <summary>
-        /// Returns SceneObjectGroup or null from asset request.
-        /// </summary>
-        /// <param name="remoteClient"></param>
-        /// <param name="itemID"></param>
-        /// <param name="RayEnd"></param>
-        /// <param name="RayStart"></param>
-        /// <param name="RayTargetID"></param>
-        /// <param name="BypassRayCast"></param>
-        /// <param name="RayEndIsIntersection"></param>
-        /// <param name="EveryoneMask"></param>
-        /// <param name="GroupMask"></param>
-        /// <param name="NextOwnerMask"></param>
-        /// <param name="ItemFlags"></param>
-        /// <param name="RezSelected"></param>
-        /// <param name="RemoveItem"></param>
-        /// <param name="fromTaskID"></param>
-        /// <param name="difference"></param>
-        /// <returns></returns>
+
+       /// <summary>
+       /// Returns SceneObjectGroup or null from asset request.
+       /// </summary>
+       /// <param name="remoteClient"></param>
+       /// <param name="itemID"></param>
+       /// <param name="RayEnd"></param>
+       /// <param name="RayStart"></param>
+       /// <param name="RayTargetID"></param>
+       /// <param name="BypassRayCast"></param>
+       /// <param name="RayEndIsIntersection"></param>
+       /// <param name="EveryoneMask"></param>
+       /// <param name="GroupMask"></param>
+       /// <param name="NextOwnerMask"></param>
+       /// <param name="ItemFlags"></param>
+       /// <param name="RezSelected"></param>
+       /// <param name="RemoveItem"></param>
+       /// <param name="fromTaskID"></param>
+       /// <param name="difference"></param>
+       /// <returns></returns>
         public virtual SceneObjectGroup RezObject(IClientAPI remoteClient, LLUUID itemID, LLVector3 RayEnd, LLVector3 RayStart,
-                                                  LLUUID RayTargetID, byte BypassRayCast, bool RayEndIsIntersection,
-                                                  uint EveryoneMask, uint GroupMask, uint NextOwnerMask, uint ItemFlags,
-                                                  bool RezSelected, bool RemoveItem, LLUUID fromTaskID, bool attachment)
+                                    LLUUID RayTargetID, byte BypassRayCast, bool RayEndIsIntersection,
+                                    uint EveryoneMask, uint GroupMask, uint NextOwnerMask, uint ItemFlags,
+                                    bool RezSelected, bool RemoveItem, LLUUID fromTaskID, bool attachment)
         {
             // Work out position details
-            byte bRayEndIsIntersection = 0;
+            byte bRayEndIsIntersection = (byte)0;
 
             if (RayEndIsIntersection)
             {
-                bRayEndIsIntersection = 1;
+                bRayEndIsIntersection = (byte)1;
             }
             else
             {
-                bRayEndIsIntersection = 0;
+                bRayEndIsIntersection = (byte)0;
             }
 
             LLVector3 scale = new LLVector3(0.5f, 0.5f, 0.5f);
 
-
+            
             LLVector3 pos = GetNewRezLocation(
-                RayStart, RayEnd, RayTargetID, new LLQuaternion(0, 0, 0, 1),
-                BypassRayCast, bRayEndIsIntersection, true, scale, false);
-
+                      RayStart, RayEnd, RayTargetID, new LLQuaternion(0, 0, 0, 1), 
+                      BypassRayCast, bRayEndIsIntersection,true,scale, false);
+            
             if (!PermissionsMngr.CanRezObject(remoteClient.AgentId, pos) && !attachment)
             {
-                return null;
+                return null;         
             }
 
             // Rez object
@@ -1260,7 +1260,7 @@ namespace OpenSim.Region.Environment.Scenes
 
                         if (rezAsset != null)
                         {
-                            string xmlData = Helpers.FieldToUTF8String(rezAsset.Data);
+                            string xmlData = Helpers.FieldToUTF8String(rezAsset.Data);                            
                             SceneObjectGroup group = new SceneObjectGroup(this, m_regionHandle, xmlData);
                             group.ResetIDs();
                             AddEntity(group);
@@ -1270,8 +1270,8 @@ namespace OpenSim.Region.Environment.Scenes
                             if (!attachment)
                             {
                                 pos = GetNewRezLocation(
-                                    RayStart, RayEnd, RayTargetID, new LLQuaternion(0, 0, 0, 1),
-                                    BypassRayCast, bRayEndIsIntersection, true, group.GroupScale(), false);
+                                            RayStart, RayEnd, RayTargetID, new LLQuaternion(0, 0, 0, 1),
+                                               BypassRayCast, bRayEndIsIntersection, true, group.GroupScale(), false);
                                 group.AbsolutePosition = pos;
                             }
                             else
@@ -1280,7 +1280,7 @@ namespace OpenSim.Region.Environment.Scenes
                             }
 
                             SceneObjectPart rootPart = group.GetChildPart(group.UUID);
-
+                            
                             // Since renaming the item in the inventory does not affect the name stored
                             // in the serialization, transfer the correct name from the inventory to the
                             // object itself before we rez.
@@ -1301,22 +1301,22 @@ namespace OpenSim.Region.Environment.Scenes
                                     part.ChangeInventoryOwner(item.Owner);
                                 }
                             }
-
+ 
                             rootPart.TrimPermissions();
 
                             if (!attachment)
                             {
-                                if (group.RootPart.Shape.PCode == (byte) PCode.Prim)
+                                if (group.RootPart.Shape.PCode == (byte)PCode.Prim)
                                 {
                                     group.ClearPartAttachmentData();
                                 }
                                 group.ApplyPhysics(m_physicalPrim);
                             }
-
+                            
 
                             group.StartScripts();
 
-
+                            
                             if (!attachment)
                                 rootPart.ScheduleFullUpdate();
 
@@ -1327,5 +1327,7 @@ namespace OpenSim.Region.Environment.Scenes
             }
             return null;
         }
+        
+        
     }
-}
+}

+ 15 - 15
OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs

@@ -78,12 +78,11 @@ namespace OpenSim.Region.Environment.Scenes
             foreach (EntityBase ent in EntitieList)
             {
                 if (ent is SceneObjectGroup)
-                {
-                    if ((ent).LocalId == primLocalID)
+                {                    
+                    if (((SceneObjectGroup) ent).LocalId == primLocalID)
                     {
                         // A prim is only tainted if it's allowed to be edited by the person clicking it.
-                        if (m_permissionManager.CanEditObjectPosition(remoteClient.AgentId, (ent).UUID) ||
-                            m_permissionManager.CanEditObject(remoteClient.AgentId, (ent).UUID))
+                        if (m_permissionManager.CanEditObjectPosition(remoteClient.AgentId, ((SceneObjectGroup)ent).UUID) || m_permissionManager.CanEditObject(remoteClient.AgentId, ((SceneObjectGroup)ent).UUID))
                         {
                             ((SceneObjectGroup) ent).GetProperties(remoteClient);
                             ((SceneObjectGroup) ent).IsSelected = true;
@@ -108,10 +107,9 @@ namespace OpenSim.Region.Environment.Scenes
             {
                 if (ent is SceneObjectGroup)
                 {
-                    if ((ent).LocalId == primLocalID)
+                    if (((SceneObjectGroup) ent).LocalId == primLocalID)
                     {
-                        if (m_permissionManager.CanEditObjectPosition(remoteClient.AgentId, (ent).UUID) ||
-                            m_permissionManager.CanEditObject(remoteClient.AgentId, (ent).UUID))
+                        if (m_permissionManager.CanEditObjectPosition(remoteClient.AgentId, ((SceneObjectGroup)ent).UUID) || m_permissionManager.CanEditObject(remoteClient.AgentId, ((SceneObjectGroup)ent).UUID))
                         {
                             ((SceneObjectGroup) ent).IsSelected = false;
                             LandChannel.setPrimsTainted();
@@ -131,20 +129,21 @@ namespace OpenSim.Region.Environment.Scenes
         }
 
         public virtual void ProcessParcelBuy(LLUUID agentId, LLUUID groupId, bool final, bool groupOwned,
-                                             bool removeContribution, int parcelLocalID, int parcelArea, int parcelPrice, bool authenticated)
+                bool removeContribution, int parcelLocalID, int parcelArea, int parcelPrice, bool authenticated)
         {
             EventManager.LandBuyArgs args = new EventManager.LandBuyArgs(
-                agentId, groupId, final, groupOwned, removeContribution, parcelLocalID, parcelArea, parcelPrice, authenticated);
+               agentId, groupId, final, groupOwned, removeContribution, parcelLocalID, parcelArea, parcelPrice, authenticated);
 
             // First, allow all validators a stab at it
-            m_eventManager.TriggerValidateLandBuy(this, args);
+            m_eventManager.TriggerValidateLandBuy(this, args);        
 
             // Then, check validation and transfer
-            m_eventManager.TriggerLandBuy(this, args);
+            m_eventManager.TriggerLandBuy(this, args);        
         }
 
         public virtual void ProcessObjectGrab(uint localID, LLVector3 offsetPos, IClientAPI remoteClient)
         {
+
             List<EntityBase> EntitieList = GetEntities();
 
             foreach (EntityBase ent in EntitieList)
@@ -179,6 +178,7 @@ namespace OpenSim.Region.Environment.Scenes
 
         public virtual void ProcessObjectDeGrab(uint localID, IClientAPI remoteClient)
         {
+
             List<EntityBase> EntitieList = GetEntities();
 
             foreach (EntityBase ent in EntitieList)
@@ -190,7 +190,7 @@ namespace OpenSim.Region.Environment.Scenes
                     // Is this prim part of the group
                     if (obj.HasChildPrim(localID))
                     {
-                        SceneObjectPart part = obj.GetChildPart(localID);
+						SceneObjectPart part=obj.GetChildPart(localID);
                         if (part != null)
                         {
                             // If the touched prim handles touches, deliver it
@@ -233,8 +233,8 @@ namespace OpenSim.Region.Environment.Scenes
                 LLUUID translatedIDtem = item.AvatarID;
                 searchData[i] = new AvatarPickerReplyPacket.DataBlock();
                 searchData[i].AvatarID = translatedIDtem;
-                searchData[i].FirstName = Helpers.StringToField(item.firstName);
-                searchData[i].LastName = Helpers.StringToField(item.lastName);
+                searchData[i].FirstName = Helpers.StringToField((string) item.firstName);
+                searchData[i].LastName = Helpers.StringToField((string) item.lastName);
                 i++;
             }
             if (AvatarResponses.Count == 0)
@@ -245,4 +245,4 @@ namespace OpenSim.Region.Environment.Scenes
             client.SendAvatarPickerReply(replyPacket);
         }
     }
-}
+}

Dosya farkı çok büyük olduğundan ihmal edildi
+ 240 - 205
OpenSim/Region/Environment/Scenes/Scene.cs


+ 34 - 37
OpenSim/Region/Environment/Scenes/SceneBase.cs

@@ -40,11 +40,6 @@ namespace OpenSim.Region.Environment.Scenes
     {
         private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
 
-        /// <summary>
-        /// XXX These two methods are very temporary
-        /// </summary>
-        protected Dictionary<LLUUID, string> capsPaths = new Dictionary<LLUUID, string>();
-
         #region Events
 
         public event restart OnRestart;
@@ -55,38 +50,41 @@ namespace OpenSim.Region.Environment.Scenes
 
         private readonly ClientManager m_clientManager = new ClientManager();
 
+        public ClientManager ClientManager
+        {
+            get { return m_clientManager; }
+        }
+
+        protected ulong m_regionHandle;
+        protected string m_regionName;
+        protected RegionInfo m_regInfo;
+
         //public TerrainEngine Terrain;
         public ITerrainChannel Heightmap;
 
         public ILandChannel LandChannel;
-        private AssetCache m_assetCache;
 
-
-        protected string m_datastore;
         protected EventManager m_eventManager;
 
-        private uint m_nextLocalId = 8880000;
-        protected RegionInfo m_regInfo;
-        protected ulong m_regionHandle;
-        protected string m_regionName;
-
-        protected RegionStatus m_regStatus;
-
         public EventManager EventManager
         {
             get { return m_eventManager; }
         }
 
+        
+        protected string m_datastore;
+
+        private uint m_nextLocalId = 8880000;
+        
+        private AssetCache m_assetCache;
+
         public AssetCache AssetCache
         {
             get { return m_assetCache; }
             set { m_assetCache = value; }
         }
-
-        public ClientManager ClientManager
-        {
-            get { return m_clientManager; }
-        }
+        
+        protected RegionStatus m_regStatus;        
 
         public RegionStatus Region_Status
         {
@@ -143,8 +141,6 @@ namespace OpenSim.Region.Environment.Scenes
 
         #endregion
 
-        #region IScene Members
-
         /// <summary>
         /// 
         /// </summary>
@@ -159,18 +155,6 @@ namespace OpenSim.Region.Environment.Scenes
             get { return m_nextLocalId++; }
         }
 
-        public string GetCapsPath(LLUUID agentId)
-        {
-            if (capsPaths.ContainsKey(agentId))
-            {
-                return capsPaths[agentId];
-            }
-
-            return null;
-        }
-
-        #endregion
-
         #region admin stuff
 
         /// <summary>
@@ -189,7 +173,6 @@ namespace OpenSim.Region.Environment.Scenes
         {
             return false;
         }
-
         public abstract bool OtherRegionUp(RegionInfo thisRegion);
 
         public virtual string GetSimulatorVersion()
@@ -212,10 +195,24 @@ namespace OpenSim.Region.Environment.Scenes
             }
             catch (Exception e)
             {
-                m_log.Error("[SCENE]: SceneBase.cs: Close() - Failed with exception " + e);
+                m_log.Error("[SCENE]: SceneBase.cs: Close() - Failed with exception " + e.ToString());
             }
         }
 
         #endregion
+        
+        /// <summary>
+        /// XXX These two methods are very temporary
+        /// </summary>
+        protected Dictionary<LLUUID, string> capsPaths = new Dictionary<LLUUID, string>();
+        public string GetCapsPath(LLUUID agentId)
+        {
+            if (capsPaths.ContainsKey(agentId))
+            {
+                return capsPaths[agentId];
+            }
+            
+            return null;
+        }
     }
-}
+}

+ 269 - 265
OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs

@@ -43,47 +43,13 @@ namespace OpenSim.Region.Environment.Scenes
 
     public class SceneCommunicationService //one instance per region
     {
-        #region Delegates
-
-        public delegate void InformNeighbourThatRegionUpDelegate(RegionInfo region, ulong regionhandle);
-
-        public delegate void SendChildAgentDataUpdateDelegate(ChildAgentDataUpdate cAgentData, ScenePresence presence);
-
-        public delegate void SendCloseChildAgentDelegate(LLUUID agentID, List<ulong> regionlst);
-
-        #endregion
-
         private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
-        public string _debugRegionName = String.Empty;
-        private AgentCrossing handlerAvatarCrossingIntoRegion; // OnAvatarCrossingIntoRegion;
-        private ChildAgentUpdate handlerChildAgentUpdate; // OnChildAgentUpdate;
-        private CloseAgentConnection handlerCloseAgentConnection; // OnCloseAgentConnection;
-        private ExpectPrimDelegate handlerExpectPrim; // OnExpectPrim;
-        private ExpectUserDelegate handlerExpectUser; // OnExpectUser;
-        private PrimCrossing handlerPrimCrossingIntoRegion; // OnPrimCrossingIntoRegion;
-        private RegionUp handlerRegionUp; // OnRegionUp;
-        private RemoveKnownRegionsFromAvatarList handlerRemoveKnownRegionFromAvatar; // OnRemoveKnownRegionFromAvatar;
-
-        public KillObjectDelegate KillObject;
 
         protected CommunicationsManager m_commsProvider;
         protected RegionInfo m_regionInfo;
 
         protected RegionCommsListener regionCommsHost;
 
-        public SceneCommunicationService(CommunicationsManager commsMan)
-        {
-            m_commsProvider = commsMan;
-            m_commsProvider.GridService.gdebugRegionName = _debugRegionName;
-            m_commsProvider.InterRegion.rdebugRegionName = _debugRegionName;
-        }
-
-        public string debugRegionName
-        {
-            get { return _debugRegionName; }
-            set { _debugRegionName = value; }
-        }
-
         public event AgentCrossing OnAvatarCrossingIntoRegion;
         public event ExpectUserDelegate OnExpectUser;
         public event ExpectPrimDelegate OnExpectPrim;
@@ -93,6 +59,31 @@ namespace OpenSim.Region.Environment.Scenes
         public event ChildAgentUpdate OnChildAgentUpdate;
         public event RemoveKnownRegionsFromAvatarList OnRemoveKnownRegionFromAvatar;
 
+        private AgentCrossing handlerAvatarCrossingIntoRegion = null; // OnAvatarCrossingIntoRegion;
+        private ExpectUserDelegate handlerExpectUser = null; // OnExpectUser;
+        private ExpectPrimDelegate handlerExpectPrim = null; // OnExpectPrim;
+        private CloseAgentConnection handlerCloseAgentConnection = null; // OnCloseAgentConnection;
+        private PrimCrossing handlerPrimCrossingIntoRegion = null; // OnPrimCrossingIntoRegion;
+        private RegionUp handlerRegionUp = null; // OnRegionUp;
+        private ChildAgentUpdate handlerChildAgentUpdate = null; // OnChildAgentUpdate;
+        private RemoveKnownRegionsFromAvatarList handlerRemoveKnownRegionFromAvatar = null; // OnRemoveKnownRegionFromAvatar;
+
+        public KillObjectDelegate KillObject;
+        public string _debugRegionName = String.Empty;
+
+        public string debugRegionName
+        {
+            get { return _debugRegionName; }
+            set { _debugRegionName = value; }
+        }
+
+        public SceneCommunicationService(CommunicationsManager commsMan)
+        {
+            m_commsProvider = commsMan;
+            m_commsProvider.GridService.gdebugRegionName = _debugRegionName;
+            m_commsProvider.InterRegion.rdebugRegionName = _debugRegionName;
+        }
+
         public void RegisterRegion(RegionInfo regionInfos)
         {
             m_regionInfo = regionInfos;
@@ -108,7 +99,7 @@ namespace OpenSim.Region.Environment.Scenes
                 regionCommsHost.OnAvatarCrossingIntoRegion += AgentCrossing;
                 regionCommsHost.OnCloseAgentConnection += CloseConnection;
                 regionCommsHost.OnRegionUp += newRegionUp;
-                regionCommsHost.OnChildAgentUpdate += ChildAgentUpdate;
+                regionCommsHost.OnChildAgentUpdate += ChildAgentUpdate;                
             }
             else
             {
@@ -131,6 +122,218 @@ namespace OpenSim.Region.Environment.Scenes
             }
         }
 
+        #region CommsManager Event handlers
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="regionHandle"></param>
+        /// <param name="agent"></param>
+        ///
+        protected void NewUserConnection(ulong regionHandle, AgentCircuitData agent)
+        {
+            handlerExpectUser = OnExpectUser;
+            if (handlerExpectUser != null)
+            {
+                //m_log.Info("[INTER]: " + debugRegionName + ": SceneCommunicationService: OnExpectUser Fired for User:" + agent.firstname + " " + agent.lastname);
+                handlerExpectUser(regionHandle, agent);
+            }
+        }
+
+        protected bool newRegionUp(RegionInfo region)
+        {
+            handlerRegionUp = OnRegionUp;
+            if (handlerRegionUp != null)
+            {
+                //m_log.Info("[INTER]: " + debugRegionName + ": SceneCommunicationService: newRegionUp Fired for User:" + region.RegionName);
+                handlerRegionUp(region);
+            }
+            return true;
+        }
+
+        protected bool ChildAgentUpdate(ulong regionHandle, ChildAgentDataUpdate cAgentData)
+        {
+            handlerChildAgentUpdate = OnChildAgentUpdate;
+            if (handlerChildAgentUpdate != null)
+                handlerChildAgentUpdate(regionHandle, cAgentData);
+
+
+            return true;
+        }
+
+        protected void AgentCrossing(ulong regionHandle, LLUUID agentID, LLVector3 position, bool isFlying)
+        {
+            handlerAvatarCrossingIntoRegion = OnAvatarCrossingIntoRegion;
+            if (handlerAvatarCrossingIntoRegion != null)
+            {
+                handlerAvatarCrossingIntoRegion(regionHandle, agentID, position, isFlying);
+            }
+        }
+
+        protected bool IncomingPrimCrossing(ulong regionHandle, LLUUID primID, String objXMLData, int XMLMethod)
+        {
+            handlerExpectPrim = OnExpectPrim;
+            if (handlerExpectPrim != null)
+            {
+                return handlerExpectPrim(regionHandle, primID, objXMLData, XMLMethod);
+            }
+            else
+            {
+                return false;
+            }
+
+        }
+
+        protected void PrimCrossing(ulong regionHandle, LLUUID primID, LLVector3 position, bool isPhysical)
+        {
+            handlerPrimCrossingIntoRegion = OnPrimCrossingIntoRegion;
+            if (handlerPrimCrossingIntoRegion != null)
+            {
+                handlerPrimCrossingIntoRegion(regionHandle, primID, position, isPhysical);
+            }
+        }
+
+        protected bool CloseConnection(ulong regionHandle, LLUUID agentID)
+        {
+            m_log.Info("[INTERREGION]: Incoming Agent Close Request for agent: " + agentID.ToString());
+            handlerCloseAgentConnection = OnCloseAgentConnection;
+            if (handlerCloseAgentConnection != null)
+            {
+                return handlerCloseAgentConnection(regionHandle, agentID);
+            }
+            return false;
+        }
+
+        #endregion
+
+        #region Inform Client of Neighbours
+
+        private delegate void InformClientOfNeighbourDelegate(
+            ScenePresence avatar, AgentCircuitData a, ulong regionHandle, IPEndPoint endPoint);
+
+        private void InformClientOfNeighbourCompleted(IAsyncResult iar)
+        {
+            InformClientOfNeighbourDelegate icon = (InformClientOfNeighbourDelegate) iar.AsyncState;
+            icon.EndInvoke(iar);
+        }
+
+        /// <summary>
+        /// Async compnent for informing client of which neighbours exists
+        /// </summary>
+        /// <remarks>
+        /// This needs to run asynchronesously, as a network timeout may block the thread for a long while
+        /// </remarks>
+        /// <param name="remoteClient"></param>
+        /// <param name="a"></param>
+        /// <param name="regionHandle"></param>
+        /// <param name="endPoint"></param>
+        private void InformClientOfNeighbourAsync(ScenePresence avatar, AgentCircuitData a, ulong regionHandle,
+                                                  IPEndPoint endPoint)
+        {
+            m_log.Info("[INTERGRID]: Starting to inform client about neighbours");
+            bool regionAccepted = m_commsProvider.InterRegion.InformRegionOfChildAgent(regionHandle, a);
+
+            if (regionAccepted)
+            {
+                avatar.ControllingClient.InformClientOfNeighbour(regionHandle, endPoint);
+                avatar.AddNeighbourRegion(regionHandle);
+                m_log.Info("[INTERGRID]: Completed inform client about neighbours");
+            }
+        }
+
+        public void RequestNeighbors(RegionInfo region)
+        {
+            List<SimpleRegionInfo> neighbours =
+                m_commsProvider.GridService.RequestNeighbours(m_regionInfo.RegionLocX, m_regionInfo.RegionLocY);
+            //IPEndPoint blah = new IPEndPoint();
+
+            //blah.Address = region.RemotingAddress;
+            //blah.Port = region.RemotingPort;
+        }
+
+        /// <summary>
+        /// This informs all neighboring regions about agent "avatar".
+        /// Calls an asynchronous method to do so..  so it doesn't lag the sim.
+        /// </summary>
+        public void EnableNeighbourChildAgents(ScenePresence avatar, List<RegionInfo> lstneighbours)
+        {
+            List<SimpleRegionInfo> neighbours = new List<SimpleRegionInfo>();
+
+            //m_commsProvider.GridService.RequestNeighbours(m_regionInfo.RegionLocX, m_regionInfo.RegionLocY);
+            for (int i = 0; i < lstneighbours.Count; i++)
+            {
+                // We don't want to keep sending to regions that consistently fail on comms.
+                if (!(lstneighbours[i].commFailTF))
+                {
+                    neighbours.Add(new SimpleRegionInfo(lstneighbours[i]));
+                }
+            }
+            // we're going to be using the above code once neighbour cache is correct.  Currently it doesn't appear to be
+            // So we're temporarily going back to the old method of grabbing it from the Grid Server Every time :/
+            neighbours =
+                m_commsProvider.GridService.RequestNeighbours(m_regionInfo.RegionLocX, m_regionInfo.RegionLocY);
+
+            if (neighbours != null)
+            {
+                for (int i = 0; i < neighbours.Count; i++)
+                {
+                    AgentCircuitData agent = avatar.ControllingClient.RequestClientInfo();
+                    agent.BaseFolder = LLUUID.Zero;
+                    agent.InventoryFolder = LLUUID.Zero;
+                    agent.startpos = new LLVector3(128, 128, 70);
+                    agent.child = true;
+
+                    InformClientOfNeighbourDelegate d = InformClientOfNeighbourAsync;
+                    
+                    try
+                    {
+                        d.BeginInvoke(avatar, agent, neighbours[i].RegionHandle, neighbours[i].ExternalEndPoint,
+                                      InformClientOfNeighbourCompleted,
+                                      d);
+                    }
+                    catch (Exception e)
+                    {
+                        m_log.ErrorFormat(
+                            "[REGIONINFO]: Could not resolve external hostname {0} for region {1} ({2}, {3}).  {4}", 
+                            neighbours[i].ExternalHostName, 
+                            neighbours[i].RegionHandle, 
+                            neighbours[i].RegionLocX, 
+                            neighbours[i].RegionLocY,
+                            e);
+                                                
+                        // FIXME: Okay, even though we've failed, we're still going to throw the exception on,
+                        // since I don't know what will happen if we just let the client continue
+                        
+                        // XXX: Well, decided to swallow the exception instead for now.  Let us see how that goes.
+                        // throw e;                        
+                        
+                    }                    
+                }
+            }
+        }
+
+        /// <summary>
+        /// This informs a single neighboring region about agent "avatar".
+        /// Calls an asynchronous method to do so..  so it doesn't lag the sim.
+        /// </summary>
+        public void InformNeighborChildAgent(ScenePresence avatar, RegionInfo region, List<RegionInfo> neighbours)
+        {
+            AgentCircuitData agent = avatar.ControllingClient.RequestClientInfo();
+            agent.BaseFolder = LLUUID.Zero;
+            agent.InventoryFolder = LLUUID.Zero;
+            agent.startpos = new LLVector3(128, 128, 70);
+            agent.child = true;
+
+            InformClientOfNeighbourDelegate d = InformClientOfNeighbourAsync;
+            d.BeginInvoke(avatar, agent, region.RegionHandle, region.ExternalEndPoint,
+                          InformClientOfNeighbourCompleted,
+                          d);
+        }
+
+        #endregion
+
+        public delegate void InformNeighbourThatRegionUpDelegate(RegionInfo region, ulong regionhandle);
+
         private void InformNeighborsThatRegionisUpCompleted(IAsyncResult iar)
         {
             InformNeighbourThatRegionUpDelegate icon = (InformNeighbourThatRegionUpDelegate) iar.AsyncState;
@@ -187,6 +390,8 @@ namespace OpenSim.Region.Environment.Scenes
             //bool val = m_commsProvider.InterRegion.RegionUp(new SearializableRegionInfo(region));
         }
 
+        public delegate void SendChildAgentDataUpdateDelegate(ChildAgentDataUpdate cAgentData, ScenePresence presence);
+
         /// <summary>
         /// This informs all neighboring regions about the settings of it's child agent.
         /// Calls an asynchronous method to do so..  so it doesn't lag the sim.
@@ -217,6 +422,7 @@ namespace OpenSim.Region.Environment.Scenes
             {
                 // We're ignoring a collection was modified error because this data gets old and outdated fast.
             }
+
         }
 
         private void SendChildAgentDataUpdateCompleted(IAsyncResult iar)
@@ -229,17 +435,20 @@ namespace OpenSim.Region.Environment.Scenes
         {
             // This assumes that we know what our neighbors are.
             SendChildAgentDataUpdateDelegate d = SendChildAgentDataUpdateAsync;
-            d.BeginInvoke(cAgentData, presence,
+            d.BeginInvoke(cAgentData,presence,
                           SendChildAgentDataUpdateCompleted,
                           d);
         }
 
+        public delegate void SendCloseChildAgentDelegate( LLUUID agentID, List<ulong> regionlst);
+
         /// <summary>
         /// This Closes child agents on neighboring regions
         /// Calls an asynchronous method to do so..  so it doesn't lag the sim.
         /// </summary>
         private void SendCloseChildAgentAsync(LLUUID agentID, List<ulong> regionlst)
         {
+
             foreach (ulong regionHandle in regionlst)
             {
                 bool regionAccepted = m_commsProvider.InterRegion.TellRegionToCloseChildConnection(regionHandle, agentID);
@@ -247,11 +456,14 @@ namespace OpenSim.Region.Environment.Scenes
                 if (regionAccepted)
                 {
                     m_log.Info("[INTERGRID]: Completed sending agent Close agent Request to neighbor");
+                    
                 }
                 else
                 {
                     m_log.Info("[INTERGRID]: Failed sending agent Close agent Request to neighbor");
+                    
                 }
+                
             }
             // We remove the list of known regions from the agent's known region list through an event
             // to scene, because, if an agent logged of, it's likely that there will be no scene presence
@@ -265,7 +477,7 @@ namespace OpenSim.Region.Environment.Scenes
 
         private void SendCloseChildAgentCompleted(IAsyncResult iar)
         {
-            SendCloseChildAgentDelegate icon = (SendCloseChildAgentDelegate) iar.AsyncState;
+            SendCloseChildAgentDelegate icon = (SendCloseChildAgentDelegate)iar.AsyncState;
             icon.EndInvoke(iar);
         }
 
@@ -344,28 +556,28 @@ namespace OpenSim.Region.Environment.Scenes
                         // assume local regions are always up
                         destRegionUp = true;
                     }
-                    if (destRegionUp)
+                    if(destRegionUp)
                     {
                         avatar.Close();
-
+                        
                         // Compared to ScenePresence.CrossToNewRegion(), there's no obvious code to handle a teleport 
                         // failure at this point (unlike a border crossing failure).  So perhaps this can never fail
                         // once we reach here...
                         avatar.Scene.RemoveCapsHandler(avatar.UUID);
-
+                        
                         m_commsProvider.InterRegion.InformRegionOfChildAgent(regionHandle, agent);
                         m_commsProvider.InterRegion.ExpectAvatarCrossing(regionHandle, avatar.ControllingClient.AgentId,
-                                                                         position, false);
+                                                                     position, false);
                         AgentCircuitData circuitdata = avatar.ControllingClient.RequestClientInfo();
-
+                        
                         // TODO Should construct this behind a method
-                        string capsPath =
-                            "http://" + reg.ExternalHostName + ":" + reg.HttpPort
-                            + "/CAPS/" + circuitdata.CapsPath + "0000/";
-
+                        string capsPath = 
+                            "http://" + reg.ExternalHostName + ":" + reg.HttpPort 
+                            + "/CAPS/" + circuitdata.CapsPath + "0000/";  
+                        
                         m_log.DebugFormat(
-                            "[CAPS]: Sending new CAPS seed url {0} to client {1}", capsPath, avatar.UUID);
-
+                            "[CAPS]: Sending new CAPS seed url {0} to client {1}", capsPath, avatar.UUID);                        
+                        
                         avatar.ControllingClient.SendRegionTeleport(regionHandle, 13, reg.ExternalEndPoint, 4, (1 << 4),
                                                                     capsPath);
                         avatar.MakeChildAgent();
@@ -375,13 +587,13 @@ namespace OpenSim.Region.Environment.Scenes
                         {
                             KillObject(avatar.LocalId);
                         }
-                        uint newRegionX = (uint) (regionHandle >> 40);
-                        uint newRegionY = (((uint) (regionHandle)) >> 8);
-                        uint oldRegionX = (uint) (m_regionInfo.RegionHandle >> 40);
-                        uint oldRegionY = (((uint) (m_regionInfo.RegionHandle)) >> 8);
-                        if (Util.fast_distance2d((int) (newRegionX - oldRegionX), (int) (newRegionY - oldRegionY)) > 3)
+                        uint newRegionX = (uint)(regionHandle >> 40);
+                        uint newRegionY = (((uint)(regionHandle)) >> 8);
+                        uint oldRegionX = (uint)(m_regionInfo.RegionHandle >> 40);
+                        uint oldRegionY = (((uint)(m_regionInfo.RegionHandle)) >> 8);
+                        if (Util.fast_distance2d((int)(newRegionX - oldRegionX), (int)(newRegionY - oldRegionY)) > 3)
                         {
-                            SendCloseChildAgentConnections(avatar.UUID, avatar.GetKnownRegionList());
+                            SendCloseChildAgentConnections(avatar.UUID,avatar.GetKnownRegionList());
                         }
                     }
                     else
@@ -416,7 +628,7 @@ namespace OpenSim.Region.Environment.Scenes
 
         public void LogOffUser(LLUUID userid, LLUUID regionid, ulong regionhandle, float posx, float posy, float posz)
         {
-            m_commsProvider.LogOffUser(userid, regionid, regionhandle, posx, posy, posz);
+             m_commsProvider.LogOffUser(userid, regionid, regionhandle, posx, posy, posz);
         }
 
         public void ClearUserAgent(LLUUID avatarID)
@@ -444,7 +656,7 @@ namespace OpenSim.Region.Environment.Scenes
             return m_commsProvider.GetUserFriendList(friendlistowner);
         }
 
-        public List<MapBlockData> RequestNeighbourMapBlocks(int minX, int minY, int maxX, int maxY)
+        public  List<MapBlockData> RequestNeighbourMapBlocks(int minX, int minY, int maxX, int maxY)
         {
             return m_commsProvider.GridService.RequestNeighbourMapBlocks(minX, minY, maxX, maxY);
         }
@@ -453,213 +665,5 @@ namespace OpenSim.Region.Environment.Scenes
         {
             return m_commsProvider.GenerateAgentPickerRequestResponse(queryID, query);
         }
-
-        #region CommsManager Event handlers
-
-        /// <summary>
-        /// 
-        /// </summary>
-        /// <param name="regionHandle"></param>
-        /// <param name="agent"></param>
-        ///
-        protected void NewUserConnection(ulong regionHandle, AgentCircuitData agent)
-        {
-            handlerExpectUser = OnExpectUser;
-            if (handlerExpectUser != null)
-            {
-                //m_log.Info("[INTER]: " + debugRegionName + ": SceneCommunicationService: OnExpectUser Fired for User:" + agent.firstname + " " + agent.lastname);
-                handlerExpectUser(regionHandle, agent);
-            }
-        }
-
-        protected bool newRegionUp(RegionInfo region)
-        {
-            handlerRegionUp = OnRegionUp;
-            if (handlerRegionUp != null)
-            {
-                //m_log.Info("[INTER]: " + debugRegionName + ": SceneCommunicationService: newRegionUp Fired for User:" + region.RegionName);
-                handlerRegionUp(region);
-            }
-            return true;
-        }
-
-        protected bool ChildAgentUpdate(ulong regionHandle, ChildAgentDataUpdate cAgentData)
-        {
-            handlerChildAgentUpdate = OnChildAgentUpdate;
-            if (handlerChildAgentUpdate != null)
-                handlerChildAgentUpdate(regionHandle, cAgentData);
-
-
-            return true;
-        }
-
-        protected void AgentCrossing(ulong regionHandle, LLUUID agentID, LLVector3 position, bool isFlying)
-        {
-            handlerAvatarCrossingIntoRegion = OnAvatarCrossingIntoRegion;
-            if (handlerAvatarCrossingIntoRegion != null)
-            {
-                handlerAvatarCrossingIntoRegion(regionHandle, agentID, position, isFlying);
-            }
-        }
-
-        protected bool IncomingPrimCrossing(ulong regionHandle, LLUUID primID, String objXMLData, int XMLMethod)
-        {
-            handlerExpectPrim = OnExpectPrim;
-            if (handlerExpectPrim != null)
-            {
-                return handlerExpectPrim(regionHandle, primID, objXMLData, XMLMethod);
-            }
-            else
-            {
-                return false;
-            }
-        }
-
-        protected void PrimCrossing(ulong regionHandle, LLUUID primID, LLVector3 position, bool isPhysical)
-        {
-            handlerPrimCrossingIntoRegion = OnPrimCrossingIntoRegion;
-            if (handlerPrimCrossingIntoRegion != null)
-            {
-                handlerPrimCrossingIntoRegion(regionHandle, primID, position, isPhysical);
-            }
-        }
-
-        protected bool CloseConnection(ulong regionHandle, LLUUID agentID)
-        {
-            m_log.Info("[INTERREGION]: Incoming Agent Close Request for agent: " + agentID);
-            handlerCloseAgentConnection = OnCloseAgentConnection;
-            if (handlerCloseAgentConnection != null)
-            {
-                return handlerCloseAgentConnection(regionHandle, agentID);
-            }
-            return false;
-        }
-
-        #endregion
-
-        #region Inform Client of Neighbours
-
-        private void InformClientOfNeighbourCompleted(IAsyncResult iar)
-        {
-            InformClientOfNeighbourDelegate icon = (InformClientOfNeighbourDelegate) iar.AsyncState;
-            icon.EndInvoke(iar);
-        }
-
-        /// <summary>
-        /// Async compnent for informing client of which neighbours exists
-        /// </summary>
-        /// <remarks>
-        /// This needs to run asynchronesously, as a network timeout may block the thread for a long while
-        /// </remarks>
-        /// <param name="remoteClient"></param>
-        /// <param name="a"></param>
-        /// <param name="regionHandle"></param>
-        /// <param name="endPoint"></param>
-        private void InformClientOfNeighbourAsync(ScenePresence avatar, AgentCircuitData a, ulong regionHandle,
-                                                  IPEndPoint endPoint)
-        {
-            m_log.Info("[INTERGRID]: Starting to inform client about neighbours");
-            bool regionAccepted = m_commsProvider.InterRegion.InformRegionOfChildAgent(regionHandle, a);
-
-            if (regionAccepted)
-            {
-                avatar.ControllingClient.InformClientOfNeighbour(regionHandle, endPoint);
-                avatar.AddNeighbourRegion(regionHandle);
-                m_log.Info("[INTERGRID]: Completed inform client about neighbours");
-            }
-        }
-
-        public void RequestNeighbors(RegionInfo region)
-        {
-            List<SimpleRegionInfo> neighbours =
-                m_commsProvider.GridService.RequestNeighbours(m_regionInfo.RegionLocX, m_regionInfo.RegionLocY);
-            //IPEndPoint blah = new IPEndPoint();
-
-            //blah.Address = region.RemotingAddress;
-            //blah.Port = region.RemotingPort;
-        }
-
-        /// <summary>
-        /// This informs all neighboring regions about agent "avatar".
-        /// Calls an asynchronous method to do so..  so it doesn't lag the sim.
-        /// </summary>
-        public void EnableNeighbourChildAgents(ScenePresence avatar, List<RegionInfo> lstneighbours)
-        {
-            List<SimpleRegionInfo> neighbours = new List<SimpleRegionInfo>();
-
-            //m_commsProvider.GridService.RequestNeighbours(m_regionInfo.RegionLocX, m_regionInfo.RegionLocY);
-            for (int i = 0; i < lstneighbours.Count; i++)
-            {
-                // We don't want to keep sending to regions that consistently fail on comms.
-                if (!(lstneighbours[i].commFailTF))
-                {
-                    neighbours.Add(new SimpleRegionInfo(lstneighbours[i]));
-                }
-            }
-            // we're going to be using the above code once neighbour cache is correct.  Currently it doesn't appear to be
-            // So we're temporarily going back to the old method of grabbing it from the Grid Server Every time :/
-            neighbours =
-                m_commsProvider.GridService.RequestNeighbours(m_regionInfo.RegionLocX, m_regionInfo.RegionLocY);
-
-            if (neighbours != null)
-            {
-                for (int i = 0; i < neighbours.Count; i++)
-                {
-                    AgentCircuitData agent = avatar.ControllingClient.RequestClientInfo();
-                    agent.BaseFolder = LLUUID.Zero;
-                    agent.InventoryFolder = LLUUID.Zero;
-                    agent.startpos = new LLVector3(128, 128, 70);
-                    agent.child = true;
-
-                    InformClientOfNeighbourDelegate d = InformClientOfNeighbourAsync;
-
-                    try
-                    {
-                        d.BeginInvoke(avatar, agent, neighbours[i].RegionHandle, neighbours[i].ExternalEndPoint,
-                                      InformClientOfNeighbourCompleted,
-                                      d);
-                    }
-                    catch (Exception e)
-                    {
-                        m_log.ErrorFormat(
-                            "[REGIONINFO]: Could not resolve external hostname {0} for region {1} ({2}, {3}).  {4}",
-                            neighbours[i].ExternalHostName,
-                            neighbours[i].RegionHandle,
-                            neighbours[i].RegionLocX,
-                            neighbours[i].RegionLocY,
-                            e);
-
-                        // FIXME: Okay, even though we've failed, we're still going to throw the exception on,
-                        // since I don't know what will happen if we just let the client continue
-
-                        // XXX: Well, decided to swallow the exception instead for now.  Let us see how that goes.
-                        // throw e;                        
-                    }
-                }
-            }
-        }
-
-        /// <summary>
-        /// This informs a single neighboring region about agent "avatar".
-        /// Calls an asynchronous method to do so..  so it doesn't lag the sim.
-        /// </summary>
-        public void InformNeighborChildAgent(ScenePresence avatar, RegionInfo region, List<RegionInfo> neighbours)
-        {
-            AgentCircuitData agent = avatar.ControllingClient.RequestClientInfo();
-            agent.BaseFolder = LLUUID.Zero;
-            agent.InventoryFolder = LLUUID.Zero;
-            agent.startpos = new LLVector3(128, 128, 70);
-            agent.child = true;
-
-            InformClientOfNeighbourDelegate d = InformClientOfNeighbourAsync;
-            d.BeginInvoke(avatar, agent, region.RegionHandle, region.ExternalEndPoint,
-                          InformClientOfNeighbourCompleted,
-                          d);
-        }
-
-        private delegate void InformClientOfNeighbourDelegate(
-            ScenePresence avatar, AgentCircuitData a, ulong regionHandle, IPEndPoint endPoint);
-
-        #endregion
     }
-}
+}

+ 162 - 175
OpenSim/Region/Environment/Scenes/SceneEvents.cs

@@ -38,186 +38,236 @@ namespace OpenSim.Region.Environment.Scenes
     /// </summary>
     public class EventManager
     {
-        #region Delegates
-
-        public delegate void AvatarEnteringNewParcel(ScenePresence avatar, int localLandID, LLUUID regionID);
+        public delegate void OnFrameDelegate();
 
-        public delegate void ClientClosed(LLUUID clientID);
+        public event OnFrameDelegate OnFrame;
 
         public delegate void ClientMovement(ScenePresence client);
 
-        /// <summary>
-        /// DeregisterCapsEvent is called by Scene when the caps
-        /// handler for an agent are removed.
-        /// </summary>
-        public delegate void DeregisterCapsEvent(LLUUID agentID, Caps caps);
-
-        public delegate void LandBuy(Object sender, LandBuyArgs e);
-
-        public delegate void LandObjectAdded(ILandObject newParcel);
-
-        public delegate void LandObjectRemoved(LLUUID globalID);
-
-        public delegate void MoneyTransferEvent(Object sender, MoneyTransferArgs e);
-
-        public delegate void NewGridInstantMessage(GridInstantMessage message);
-
-        public delegate void NewInventoryItemUploadComplete(LLUUID avatarID, LLUUID assetID, string name, int userlevel);
-
-        public delegate void NewRezScript(uint localID, LLUUID itemID, string script);
+        public event ClientMovement OnClientMovement;
 
-        public delegate void ObjectDeGrabDelegate(uint localID, IClientAPI remoteClient);
+        public delegate void OnTerrainTickDelegate();
 
-        public delegate void ObjectGrabDelegate(uint localID, LLVector3 offsetPos, IClientAPI remoteClient);
+        public event OnTerrainTickDelegate OnTerrainTick;
 
         public delegate void OnBackupDelegate(IRegionDataStore datastore);
 
-        public delegate void OnFrameDelegate();
+        public event OnBackupDelegate OnBackup;
 
         public delegate void OnNewClientDelegate(IClientAPI client);
 
-        public delegate void OnNewPresenceDelegate(ScenePresence presence);
-
-        public delegate void OnParcelPrimCountAddDelegate(SceneObjectGroup obj);
-
-        public delegate void OnParcelPrimCountUpdateDelegate();
+        public event OnNewClientDelegate OnNewClient;
 
-        public delegate void OnPermissionErrorDelegate(LLUUID user, string reason);
+        public delegate void OnNewPresenceDelegate(ScenePresence presence);
 
-        public delegate void OnPluginConsoleDelegate(string[] args);
+        public event OnNewPresenceDelegate OnNewPresence;
 
         public delegate void OnRemovePresenceDelegate(LLUUID agentId);
 
-        public delegate void OnShutdownDelegate();
-
-        public delegate void OnTerrainTickDelegate();
-
-        /// <summary>
-        /// RegisterCapsEvent is called by Scene after the Caps object
-        /// has been instantiated and before it is return to the
-        /// client and provides region modules to add their caps.
-        /// </summary>
-        public delegate void RegisterCapsEvent(LLUUID agentID, Caps caps);
-
-        public delegate void RemoveScript(uint localID, LLUUID itemID);
-
-        public delegate void SceneGroupGrabed(LLUUID groupID, LLVector3 offset, LLUUID userID);
-
-        public delegate bool SceneGroupMoved(LLUUID groupID, LLVector3 delta);
-
-        public delegate void ScriptAtTargetEvent(uint localID, uint handle, LLVector3 targetpos, LLVector3 atpos);
-
-        public delegate void ScriptChangedEvent(uint localID, uint change);
-
-        public delegate void ScriptNotAtTargetEvent(uint localID);
-
-        #endregion
-
-        private AvatarEnteringNewParcel handlerAvatarEnteringNewParcel; //OnAvatarEnteringNewParcel;
-        private OnBackupDelegate handlerBackup; //OnBackup;
-        private ClientClosed handlerClientClosed; //OnClientClosed;
-        private ClientMovement handlerClientMovement; //OnClientMovement;
-        private DeregisterCapsEvent handlerDeregisterCaps; // OnDeregisterCaps;
-        private OnFrameDelegate handlerFrame; //OnFrame;
-        private NewGridInstantMessage handlerGridInstantMessageToFriends; //OnGridInstantMessageToFriendsModule;
-        private NewGridInstantMessage handlerGridInstantMessageToIM; //OnGridInstantMessageToIMModule;
-        private LandBuy handlerLandBuy;
-        private LandObjectAdded handlerLandObjectAdded; //OnLandObjectAdded;
-        private LandObjectRemoved handlerLandObjectRemoved; //OnLandObjectRemoved;
-        private OnNewPresenceDelegate handlerMakeChildAgent; //OnMakeChildAgent;
-        private MoneyTransferEvent handlerMoneyTransfer; //OnMoneyTransfer;
-        private OnNewClientDelegate handlerNewClient; //OnNewClient;
-        private NewInventoryItemUploadComplete handlerNewInventoryItemUpdateComplete;
-        private OnNewPresenceDelegate handlerNewPresence; //OnNewPresence;
-        private ObjectDeGrabDelegate handlerObjectDeGrab; //OnObjectDeGrab;
-        private ObjectGrabDelegate handlerObjectGrab; //OnObjectGrab;
-        private OnParcelPrimCountAddDelegate handlerParcelPrimCountAdd; //OnParcelPrimCountAdd;
-        private OnParcelPrimCountUpdateDelegate handlerParcelPrimCountUpdate; //OnParcelPrimCountUpdate;
-        private OnPermissionErrorDelegate handlerPermissionError; //OnPermissionError;
-        private OnPluginConsoleDelegate handlerPluginConsole; //OnPluginConsole;
-        private RegisterCapsEvent handlerRegisterCaps; // OnRegisterCaps;
-        private OnRemovePresenceDelegate handlerRemovePresence; //OnRemovePresence;
-        private RemoveScript handlerRemoveScript; //OnRemoveScript;
-        private NewRezScript handlerRezScript; //OnRezScript;
-        private SceneGroupGrabed handlerSceneGroupGrab; //OnSceneGroupGrab;
-        private SceneGroupMoved handlerSceneGroupMove; //OnSceneGroupMove;
-        private ScriptAtTargetEvent handlerScriptAtTargetEvent;
-        private ScriptChangedEvent handlerScriptChangedEvent; //OnScriptChangedEvent;
-        private ScriptNotAtTargetEvent handlerScriptNotAtTargetEvent;
-        private OnShutdownDelegate handlerShutdown; //OnShutdown;
-        private OnTerrainTickDelegate handlerTerrainTick; // OnTerainTick;
-        private LandBuy handlerValidateLandBuy;
-
-        public event OnFrameDelegate OnFrame;
+        public event OnRemovePresenceDelegate OnRemovePresence;
 
-        public event ClientMovement OnClientMovement;
+        public delegate void OnParcelPrimCountUpdateDelegate();
 
-        public event OnTerrainTickDelegate OnTerrainTick;
+        public event OnParcelPrimCountUpdateDelegate OnParcelPrimCountUpdate;
 
-        public event OnBackupDelegate OnBackup;
+        public delegate void OnParcelPrimCountAddDelegate(SceneObjectGroup obj);
 
-        public event OnNewClientDelegate OnNewClient;
+        public event OnParcelPrimCountAddDelegate OnParcelPrimCountAdd;
 
-        public event OnNewPresenceDelegate OnNewPresence;
+        public delegate void OnPluginConsoleDelegate(string[] args);
 
-        public event OnRemovePresenceDelegate OnRemovePresence;
+        public event OnPluginConsoleDelegate OnPluginConsole;
 
-        public event OnParcelPrimCountUpdateDelegate OnParcelPrimCountUpdate;
+        public delegate void OnShutdownDelegate();
 
-        public event OnParcelPrimCountAddDelegate OnParcelPrimCountAdd;
+        public event OnShutdownDelegate OnShutdown;
 
-        public event OnPluginConsoleDelegate OnPluginConsole;
+        public delegate void ObjectGrabDelegate(uint localID, LLVector3 offsetPos, IClientAPI remoteClient);
+        public delegate void ObjectDeGrabDelegate(uint localID, IClientAPI remoteClient);
 
-        public event OnShutdownDelegate OnShutdown;
+        public delegate void OnPermissionErrorDelegate(LLUUID user, string reason);
 
         public event ObjectGrabDelegate OnObjectGrab;
         public event ObjectDeGrabDelegate OnObjectDeGrab;
 
         public event OnPermissionErrorDelegate OnPermissionError;
 
+        public delegate void NewRezScript(uint localID, LLUUID itemID, string script);
+
         public event NewRezScript OnRezScript;
 
+        public delegate void RemoveScript(uint localID, LLUUID itemID);
+
         public event RemoveScript OnRemoveScript;
 
+        public delegate bool SceneGroupMoved(LLUUID groupID, LLVector3 delta);
+
         public event SceneGroupMoved OnSceneGroupMove;
 
+        public delegate void SceneGroupGrabed(LLUUID groupID, LLVector3 offset, LLUUID userID);
+
         public event SceneGroupGrabed OnSceneGroupGrab;
 
+        public delegate void LandObjectAdded(ILandObject newParcel);
+
         public event LandObjectAdded OnLandObjectAdded;
 
+        public delegate void LandObjectRemoved(LLUUID globalID);
+
         public event LandObjectRemoved OnLandObjectRemoved;
 
+        public delegate void AvatarEnteringNewParcel(ScenePresence avatar, int localLandID, LLUUID regionID);
+
         public event AvatarEnteringNewParcel OnAvatarEnteringNewParcel;
 
 
+        public delegate void NewGridInstantMessage(GridInstantMessage message);
+
         public event NewGridInstantMessage OnGridInstantMessageToIMModule;
 
         public event NewGridInstantMessage OnGridInstantMessageToFriendsModule;
 
         public event NewGridInstantMessage OnGridInstantMessageToGroupsModule;
 
+        public delegate void ClientClosed(LLUUID clientID);
+
         public event ClientClosed OnClientClosed;
 
+        public delegate void ScriptChangedEvent(uint localID, uint change);
+
         public event ScriptChangedEvent OnScriptChangedEvent;
 
+        public delegate void ScriptAtTargetEvent(uint localID, uint handle, LLVector3 targetpos, LLVector3 atpos);
+
         public event ScriptAtTargetEvent OnScriptAtTargetEvent;
 
+        public delegate void ScriptNotAtTargetEvent(uint localID);
+
         public event ScriptNotAtTargetEvent OnScriptNotAtTargetEvent;
 
         public event OnNewPresenceDelegate OnMakeChildAgent;
 
+        public delegate void NewInventoryItemUploadComplete(LLUUID avatarID, LLUUID assetID, string name, int userlevel);
+
         public event NewInventoryItemUploadComplete OnNewInventoryItemUploadComplete;
 
+        /// <summary>
+        /// RegisterCapsEvent is called by Scene after the Caps object
+        /// has been instantiated and before it is return to the
+        /// client and provides region modules to add their caps.
+        /// </summary>
+        public delegate void RegisterCapsEvent(LLUUID agentID, Caps caps);
         public event RegisterCapsEvent OnRegisterCaps;
-
+        /// <summary>
+        /// DeregisterCapsEvent is called by Scene when the caps
+        /// handler for an agent are removed.
+        /// </summary>
+        public delegate void DeregisterCapsEvent(LLUUID agentID, Caps caps);
         public event DeregisterCapsEvent OnDeregisterCaps;
 
+        public class MoneyTransferArgs : EventArgs 
+        {
+            public LLUUID sender;
+            public LLUUID receiver;
+
+            // Always false. The SL protocol sucks.
+            public bool authenticated = false;
+
+            public int amount;
+            public int transactiontype;
+            public string description;
+
+            public MoneyTransferArgs(LLUUID asender, LLUUID areceiver, int aamount, int atransactiontype, string adescription) {
+                sender = asender;
+                receiver = areceiver;
+                amount = aamount;
+                transactiontype = atransactiontype;
+                description = adescription;
+            }
+        }
+
+        public class LandBuyArgs : EventArgs
+        {
+            public LLUUID agentId = LLUUID.Zero;
+            
+            public LLUUID groupId = LLUUID.Zero;
+
+            public LLUUID parcelOwnerID = LLUUID.Zero;
+
+            public bool final = false;
+            public bool groupOwned = false;
+            public bool removeContribution = false;
+            public int parcelLocalID = 0;
+            public int parcelArea = 0;
+            public int parcelPrice = 0;
+            public bool authenticated = false;
+            public bool landValidated = false;
+            public bool economyValidated = false;
+            public int transactionID = 0;
+            public int amountDebited = 0;
+
+            
+            public LandBuyArgs(LLUUID pagentId, LLUUID pgroupId, bool pfinal, bool pgroupOwned,
+                bool premoveContribution, int pparcelLocalID, int pparcelArea, int pparcelPrice, 
+                bool pauthenticated)
+            {
+                agentId = pagentId;
+                groupId = pgroupId;
+                final = pfinal;
+                groupOwned = pgroupOwned;
+                removeContribution = premoveContribution;
+                parcelLocalID = pparcelLocalID;
+                parcelArea = pparcelArea;
+                parcelPrice = pparcelPrice;
+                authenticated = pauthenticated;
+            }
+        }
+
+        public delegate void MoneyTransferEvent(Object sender, MoneyTransferArgs e);
+
+        public delegate void LandBuy(Object sender, LandBuyArgs e);
+
         public event MoneyTransferEvent OnMoneyTransfer;
         public event LandBuy OnLandBuy;
         public event LandBuy OnValidateLandBuy;
 
         /* Designated Event Deletage Instances */
 
+        private ScriptChangedEvent handlerScriptChangedEvent = null; //OnScriptChangedEvent;
+        private ScriptAtTargetEvent handlerScriptAtTargetEvent = null;
+        private ScriptNotAtTargetEvent handlerScriptNotAtTargetEvent = null;
+        private ClientMovement handlerClientMovement = null; //OnClientMovement;
+        private OnPermissionErrorDelegate handlerPermissionError = null; //OnPermissionError;
+        private OnPluginConsoleDelegate handlerPluginConsole = null; //OnPluginConsole;
+        private OnFrameDelegate handlerFrame = null; //OnFrame;
+        private OnNewClientDelegate handlerNewClient = null; //OnNewClient;
+        private OnNewPresenceDelegate handlerNewPresence = null; //OnNewPresence;
+        private OnRemovePresenceDelegate handlerRemovePresence = null; //OnRemovePresence;
+        private OnBackupDelegate handlerBackup = null; //OnBackup;
+        private OnParcelPrimCountUpdateDelegate handlerParcelPrimCountUpdate = null; //OnParcelPrimCountUpdate;
+        private MoneyTransferEvent handlerMoneyTransfer = null; //OnMoneyTransfer;
+        private OnParcelPrimCountAddDelegate handlerParcelPrimCountAdd = null; //OnParcelPrimCountAdd;
+        private OnShutdownDelegate handlerShutdown = null; //OnShutdown;
+        private ObjectGrabDelegate handlerObjectGrab = null; //OnObjectGrab;
+        private ObjectDeGrabDelegate handlerObjectDeGrab = null; //OnObjectDeGrab;
+        private NewRezScript handlerRezScript = null; //OnRezScript;
+        private RemoveScript handlerRemoveScript = null; //OnRemoveScript;
+        private SceneGroupMoved handlerSceneGroupMove = null; //OnSceneGroupMove;
+        private SceneGroupGrabed handlerSceneGroupGrab = null; //OnSceneGroupGrab;
+        private LandObjectAdded handlerLandObjectAdded = null; //OnLandObjectAdded;
+        private LandObjectRemoved handlerLandObjectRemoved = null; //OnLandObjectRemoved;
+        private AvatarEnteringNewParcel handlerAvatarEnteringNewParcel = null; //OnAvatarEnteringNewParcel;
+        private NewGridInstantMessage handlerGridInstantMessageToIM = null; //OnGridInstantMessageToIMModule;
+        private NewGridInstantMessage handlerGridInstantMessageToFriends = null; //OnGridInstantMessageToFriendsModule;
+        private ClientClosed handlerClientClosed = null; //OnClientClosed;
+        private OnNewPresenceDelegate handlerMakeChildAgent = null; //OnMakeChildAgent;
+        private OnTerrainTickDelegate handlerTerrainTick = null; // OnTerainTick;
+        private RegisterCapsEvent handlerRegisterCaps = null; // OnRegisterCaps;
+        private DeregisterCapsEvent handlerDeregisterCaps = null; // OnDeregisterCaps;
+        private NewInventoryItemUploadComplete handlerNewInventoryItemUpdateComplete = null;
+        private LandBuy handlerLandBuy = null;
+        private LandBuy handlerValidateLandBuy = null;
+
         public void TriggerOnScriptChangedEvent(uint localID, uint change)
         {
             handlerScriptChangedEvent = OnScriptChangedEvent;
@@ -293,7 +343,7 @@ namespace OpenSim.Region.Environment.Scenes
             if (handlerParcelPrimCountUpdate != null)
             {
                 handlerParcelPrimCountUpdate();
-            }
+            }    
         }
 
         public void TriggerMoneyTransfer(Object sender, MoneyTransferArgs e)
@@ -442,6 +492,7 @@ namespace OpenSim.Region.Environment.Scenes
                 {
                     handlerGridInstantMessageToFriends(message);
                 }
+
             }
         }
 
@@ -463,7 +514,7 @@ namespace OpenSim.Region.Environment.Scenes
             }
         }
 
-        public void TriggerOnRegisterCaps(LLUUID agentID, Caps caps)
+        public void TriggerOnRegisterCaps(LLUUID agentID, Caps caps) 
         {
             handlerRegisterCaps = OnRegisterCaps;
             if (handlerRegisterCaps != null)
@@ -472,7 +523,7 @@ namespace OpenSim.Region.Environment.Scenes
             }
         }
 
-        public void TriggerOnDeregisterCaps(LLUUID agentID, Caps caps)
+        public void TriggerOnDeregisterCaps(LLUUID agentID, Caps caps) 
         {
             handlerDeregisterCaps = OnDeregisterCaps;
             if (handlerDeregisterCaps != null)
@@ -489,8 +540,7 @@ namespace OpenSim.Region.Environment.Scenes
                 handlerNewInventoryItemUpdateComplete(agentID, AssetID, AssetName, userlevel);
             }
         }
-
-        public void TriggerLandBuy(Object sender, LandBuyArgs e)
+        public void TriggerLandBuy (Object sender, LandBuyArgs e)
         {
             handlerLandBuy = OnLandBuy;
             if (handlerLandBuy != null)
@@ -498,7 +548,6 @@ namespace OpenSim.Region.Environment.Scenes
                 handlerLandBuy(sender, e);
             }
         }
-
         public void TriggerValidateLandBuy(Object sender, LandBuyArgs e)
         {
             handlerValidateLandBuy = OnValidateLandBuy;
@@ -507,7 +556,7 @@ namespace OpenSim.Region.Environment.Scenes
                 handlerValidateLandBuy(sender, e);
             }
         }
-
+        
         public void TriggerAtTargetEvent(uint localID, uint handle, LLVector3 targetpos, LLVector3 currentpos)
         {
             handlerScriptAtTargetEvent = OnScriptAtTargetEvent;
@@ -525,67 +574,5 @@ namespace OpenSim.Region.Environment.Scenes
                 handlerScriptNotAtTargetEvent(localID);
             }
         }
-
-        #region Nested type: LandBuyArgs
-
-        public class LandBuyArgs : EventArgs
-        {
-            public LLUUID agentId = LLUUID.Zero;
-            public int amountDebited;
-            public bool authenticated;
-            public bool economyValidated;
-
-            public bool final;
-            public LLUUID groupId = LLUUID.Zero;
-            public bool groupOwned;
-            public bool landValidated;
-            public int parcelArea;
-            public int parcelLocalID;
-            public LLUUID parcelOwnerID = LLUUID.Zero;
-            public int parcelPrice;
-            public bool removeContribution;
-            public int transactionID;
-
-
-            public LandBuyArgs(LLUUID pagentId, LLUUID pgroupId, bool pfinal, bool pgroupOwned,
-                               bool premoveContribution, int pparcelLocalID, int pparcelArea, int pparcelPrice,
-                               bool pauthenticated)
-            {
-                agentId = pagentId;
-                groupId = pgroupId;
-                final = pfinal;
-                groupOwned = pgroupOwned;
-                removeContribution = premoveContribution;
-                parcelLocalID = pparcelLocalID;
-                parcelArea = pparcelArea;
-                parcelPrice = pparcelPrice;
-                authenticated = pauthenticated;
-            }
-        }
-
-        #endregion
-
-        #region Nested type: MoneyTransferArgs
-
-        public class MoneyTransferArgs : EventArgs
-        {
-            public int amount;
-            public bool authenticated;
-            public string description;
-            public LLUUID receiver;
-            public LLUUID sender;
-            public int transactiontype;
-
-            public MoneyTransferArgs(LLUUID asender, LLUUID areceiver, int aamount, int atransactiontype, string adescription)
-            {
-                sender = asender;
-                receiver = areceiver;
-                amount = aamount;
-                transactiontype = atransactiontype;
-                description = adescription;
-            }
-        }
-
-        #endregion
     }
-}
+}

+ 41 - 41
OpenSim/Region/Environment/Scenes/SceneManager.cs

@@ -41,13 +41,10 @@ namespace OpenSim.Region.Environment.Scenes
     {
         private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
 
-        private readonly List<Scene> m_localScenes;
-        private Scene m_currentScene;
+        public event RestartSim OnRestartSim;
 
-        public SceneManager()
-        {
-            m_localScenes = new List<Scene>();
-        }
+        private readonly List<Scene> m_localScenes;
+        private Scene m_currentScene = null;
 
         public List<Scene> Scenes
         {
@@ -74,7 +71,10 @@ namespace OpenSim.Region.Environment.Scenes
             }
         }
 
-        public event RestartSim OnRestartSim;
+        public SceneManager()
+        {
+            m_localScenes = new List<Scene>();
+        }
 
         public void Close()
         {
@@ -180,7 +180,7 @@ namespace OpenSim.Region.Environment.Scenes
         [Obsolete("TODO: Remove this warning by 0.7")]
         public bool RunTerrainCmdOnCurrentScene(string[] cmdparams, ref string result)
         {
-            m_log.Warn("DEPRECIATED: The terrain engine has been replaced with a new terrain plugin module. Please type 'plugin terrain help' for new commands.");
+            m_log.Warn("DEPRECIATED: The terrain engine has been replaced with a new terrain plugin module. Please type 'plugin terrain help' for new commands.");            
             return false;
         }
 
@@ -252,8 +252,8 @@ namespace OpenSim.Region.Environment.Scenes
 
         public bool TrySetCurrentScene(LLUUID regionID)
         {
-            Console.WriteLine("Searching for Region: '{0}'", regionID);
-
+            Console.WriteLine("Searching for Region: '{0}'", regionID.ToString());
+            
             foreach (Scene scene in m_localScenes)
             {
                 if (scene.RegionInfo.RegionID == regionID)
@@ -262,7 +262,7 @@ namespace OpenSim.Region.Environment.Scenes
                     return true;
                 }
             }
-
+            
             return false;
         }
 
@@ -313,7 +313,7 @@ namespace OpenSim.Region.Environment.Scenes
         {
             foreach (Scene mscene in m_localScenes)
             {
-                if ((mscene.RegionInfo.InternalEndPoint.Equals(ipEndPoint.Address)) &&
+                if((mscene.RegionInfo.InternalEndPoint.Equals(ipEndPoint.Address)) &&
                     (mscene.RegionInfo.InternalEndPoint.Port == ipEndPoint.Port))
                 {
                     scene = mscene;
@@ -327,22 +327,22 @@ namespace OpenSim.Region.Environment.Scenes
         public void SetDebugPacketOnCurrentScene(int newDebug)
         {
             ForEachCurrentScene(delegate(Scene scene)
-                                    {
-                                        List<ScenePresence> scenePresences = scene.GetScenePresences();
+                                {
+                                    List<ScenePresence> scenePresences = scene.GetScenePresences();
 
-                                        foreach (ScenePresence scenePresence in scenePresences)
+                                    foreach (ScenePresence scenePresence in scenePresences)
+                                    {
+                                        if (!scenePresence.IsChildAgent)
                                         {
-                                            if (!scenePresence.IsChildAgent)
-                                            {
-                                                m_log.ErrorFormat("Packet debug for {0} {1} set to {2}",
-                                                                  scenePresence.Firstname,
-                                                                  scenePresence.Lastname,
-                                                                  newDebug);
-
-                                                scenePresence.ControllingClient.SetDebug(newDebug);
-                                            }
+                                            m_log.ErrorFormat("Packet debug for {0} {1} set to {2}",
+                                                              scenePresence.Firstname,
+                                                              scenePresence.Lastname,
+                                                              newDebug);
+
+                                            scenePresence.ControllingClient.SetDebug(newDebug);
                                         }
-                                    });
+                                    }
+                                });
         }
 
         public List<ScenePresence> GetCurrentSceneAvatars()
@@ -350,17 +350,17 @@ namespace OpenSim.Region.Environment.Scenes
             List<ScenePresence> avatars = new List<ScenePresence>();
 
             ForEachCurrentScene(delegate(Scene scene)
-                                    {
-                                        List<ScenePresence> scenePresences = scene.GetScenePresences();
+            {
+                List<ScenePresence> scenePresences = scene.GetScenePresences();
 
-                                        foreach (ScenePresence scenePresence in scenePresences)
-                                        {
-                                            if (!scenePresence.IsChildAgent)
-                                            {
-                                                avatars.Add(scenePresence);
-                                            }
-                                        }
-                                    });
+                foreach (ScenePresence scenePresence in scenePresences)
+                {
+                    if (!scenePresence.IsChildAgent)
+                    {
+                        avatars.Add(scenePresence);
+                    }
+                }
+            });
 
             return avatars;
         }
@@ -381,11 +381,11 @@ namespace OpenSim.Region.Environment.Scenes
         public void SetCurrentSceneTimePhase(int timePhase)
         {
             ForEachCurrentScene(delegate(Scene scene)
-                                    {
-                                        scene.SetTimePhase(
-                                            timePhase)
-                                            ;
-                                    });
+                                {
+                                    scene.SetTimePhase(
+                                        timePhase)
+                                        ;
+                                });
         }
 
         public void ForceCurrentSceneClientUpdate()
@@ -453,4 +453,4 @@ namespace OpenSim.Region.Environment.Scenes
             m_localScenes.ForEach(action);
         }
     }
-}
+}

+ 30 - 29
OpenSim/Region/Environment/Scenes/SceneObjectGroup.Inventory.cs

@@ -49,6 +49,7 @@ namespace OpenSim.Region.Environment.Scenes
             if (part != null)
             {
                 part.StartScript(itemID);
+               
             }
             else
             {
@@ -56,9 +57,9 @@ namespace OpenSim.Region.Environment.Scenes
                     "[PRIMINVENTORY]: " +
                     "Couldn't find part {0} in object group {1}, {2} to start script with ID {3}",
                     localID, Name, UUID, itemID);
-            }
+            }            
         }
-
+        
 //        /// Start a given script.
 //        /// </summary>
 //        /// <param name="localID">
@@ -79,7 +80,7 @@ namespace OpenSim.Region.Environment.Scenes
 //                    localID, Name, UUID, itemID);
 //            }            
 //        }        
-
+        
         /// <summary>
         /// Start the scripts contained in all the prims in this group.
         /// </summary>
@@ -105,7 +106,7 @@ namespace OpenSim.Region.Environment.Scenes
                 }
             }
         }
-
+        
         /// Start a given script.
         /// </summary>
         /// <param name="localID">
@@ -125,9 +126,9 @@ namespace OpenSim.Region.Environment.Scenes
                     "[PRIMINVENTORY]: " +
                     "Couldn't find part {0} in object group {1}, {2} to stop script with ID {3}",
                     partID, Name, UUID, itemID);
-            }
-        }
-
+            }            
+        }         
+        
         /// <summary>
         /// 
         /// </summary>
@@ -170,7 +171,7 @@ namespace OpenSim.Region.Environment.Scenes
                     localID, Name, UUID);
             }
         }
-
+         
         /// <summary>
         /// Add an inventory item to a prim in this group.
         /// </summary>
@@ -179,7 +180,7 @@ namespace OpenSim.Region.Environment.Scenes
         /// <param name="item"></param>
         /// <param name="copyItemID">The item UUID that should be used by the new item.</param>
         /// <returns></returns>
-        public bool AddInventoryItem(IClientAPI remoteClient, uint localID,
+        public bool AddInventoryItem(IClientAPI remoteClient, uint localID, 
                                      InventoryItemBase item, LLUUID copyItemID)
         {
             LLUUID newItemId = (copyItemID != LLUUID.Zero) ? copyItemID : item.ID;
@@ -188,8 +189,8 @@ namespace OpenSim.Region.Environment.Scenes
             if (part != null)
             {
                 TaskInventoryItem taskItem = new TaskInventoryItem();
-
-                taskItem.ItemID = newItemId;
+                
+                taskItem.ItemID = newItemId;                
                 taskItem.AssetID = item.AssetID;
                 taskItem.Name = item.Name;
                 taskItem.Description = item.Description;
@@ -197,15 +198,15 @@ namespace OpenSim.Region.Environment.Scenes
                 taskItem.CreatorID = item.Creator;
                 taskItem.Type = item.AssetType;
                 taskItem.InvType = item.InvType;
-
+                
                 taskItem.BaseMask = item.BasePermissions;
                 taskItem.OwnerMask = item.CurrentPermissions;
                 // FIXME: ignoring group permissions for now as they aren't stored in item
                 taskItem.EveryoneMask = item.EveryOnePermissions;
                 taskItem.NextOwnerMask = item.NextPermissions;
-
+                    
                 part.AddInventoryItem(taskItem);
-
+                
                 return true;
             }
             else
@@ -218,7 +219,7 @@ namespace OpenSim.Region.Environment.Scenes
 
             return false;
         }
-
+        
         /// <summary>
         /// Returns an existing inventory item.  Returns the original, so any changes will be live.
         /// </summary>
@@ -238,11 +239,11 @@ namespace OpenSim.Region.Environment.Scenes
                     "[PRIMINVENTORY]: " +
                     "Couldn't find prim local ID {0} in prim {1}, {2} to get inventory item ID {3}",
                     primID, part.Name, part.UUID, itemID);
-            }
-
+            }   
+            
             return null;
-        }
-
+        }         
+        
         /// <summary>
         /// Update an existing inventory item.
         /// </summary>
@@ -254,8 +255,8 @@ namespace OpenSim.Region.Environment.Scenes
             SceneObjectPart part = GetChildPart(item.ParentPartID);
             if (part != null)
             {
-                part.UpdateInventoryItem(item);
-
+                part.UpdateInventoryItem(item);              
+                
                 return true;
             }
             else
@@ -264,22 +265,22 @@ namespace OpenSim.Region.Environment.Scenes
                     "[PRIMINVENTORY]: " +
                     "Couldn't find prim ID {0} to update item {1}, {2}",
                     item.ParentPartID, item.Name, item.ItemID);
-            }
-
+            }   
+            
             return false;
-        }
+        }        
 
         public int RemoveInventoryItem(uint localID, LLUUID itemID)
         {
             SceneObjectPart part = GetChildPart(localID);
             if (part != null)
-            {
+            {                
                 int type = part.RemoveInventoryItem(itemID);
-
+                
                 return type;
             }
-
+            
             return -1;
-        }
+        } 
     }
-}
+}

+ 194 - 183
OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs

@@ -72,7 +72,7 @@ namespace OpenSim.Region.Environment.Scenes
         object_rez = 4194304
     }
 
-    internal struct scriptPosTarget
+    struct scriptPosTarget
     {
         public LLVector3 targetPos;
         public float tolerance;
@@ -82,14 +82,14 @@ namespace OpenSim.Region.Environment.Scenes
 
     public partial class SceneObjectGroup : EntityBase
     {
-        private readonly Dictionary<uint, scriptPosTarget> m_targets = new Dictionary<uint, scriptPosTarget>();
-        private PrimCountTaintedDelegate handlerPrimCountTainted;
+        private PrimCountTaintedDelegate handlerPrimCountTainted = null;
 
         /// <summary>
         /// Signal whether the non-inventory attributes of any prims in the group have changed 
         /// since the group's last persistent backup
         /// </summary>
-        public bool HasGroupChanged;
+        public bool HasGroupChanged = false;
+        
 
 
         private LLVector3 lastPhysGroupPos;
@@ -104,8 +104,11 @@ namespace OpenSim.Region.Environment.Scenes
         protected SceneObjectPart m_rootPart;
         private Dictionary<LLUUID, scriptEvents> m_scriptEvents = new Dictionary<LLUUID, scriptEvents>();
 
-        private bool m_scriptListens_atTarget;
-        private bool m_scriptListens_notAtTarget;
+        private Dictionary<uint, scriptPosTarget> m_targets = new Dictionary<uint, scriptPosTarget>();
+
+        private bool m_scriptListens_atTarget = false;
+        private bool m_scriptListens_notAtTarget = false;
+
 
         #region Properties
 
@@ -116,7 +119,7 @@ namespace OpenSim.Region.Environment.Scenes
         /// think really there should be a list (or whatever) in each scenepresence
         /// saying what prim(s) that user has selected. 
         /// </summary>
-        protected bool m_isSelected;
+        protected bool m_isSelected = false;
 
         /// <summary>
         /// 
@@ -183,6 +186,7 @@ namespace OpenSim.Region.Environment.Scenes
                         string.Format("[SCENE OBJECT GROUP]: Object {0} has no root part.", m_uuid));
                 }
 
+                
 
                 return m_rootPart.GroupPosition;
             }
@@ -202,7 +206,7 @@ namespace OpenSim.Region.Environment.Scenes
                         part.GroupPosition = val;
                     }
                 }
-
+                
                 //if (m_rootPart.PhysActor != null)
                 //{
                 //m_rootPart.PhysActor.Position =
@@ -212,7 +216,7 @@ namespace OpenSim.Region.Environment.Scenes
                 //}
             }
         }
-
+        
         public override uint LocalId
         {
             get
@@ -511,11 +515,10 @@ namespace OpenSim.Region.Environment.Scenes
                 m_scene.EventManager.OnBackup += ProcessBackup;
             }
         }
-
         public LLVector3 GroupScale()
         {
-            LLVector3 minScale = new LLVector3(Constants.RegionSize, Constants.RegionSize, Constants.RegionSize);
-            LLVector3 maxScale = new LLVector3(0f, 0f, 0f);
+            LLVector3 minScale = new LLVector3(Constants.RegionSize,Constants.RegionSize,Constants.RegionSize);
+            LLVector3 maxScale = new LLVector3(0f,0f,0f);
             LLVector3 finalScale = new LLVector3(0.5f, 0.5f, 0.5f);
 
             lock (m_parts)
@@ -538,8 +541,8 @@ namespace OpenSim.Region.Environment.Scenes
             finalScale.Y = (minScale.Y > maxScale.Y) ? minScale.Y : maxScale.Y;
             finalScale.Z = (minScale.Z > maxScale.Z) ? minScale.Z : maxScale.Z;
             return finalScale;
-        }
 
+        }
         public EntityIntersection TestIntersection(Ray hRay, bool frontFacesOnly, bool faceCenters)
         {
             // We got a request from the inner_scene to raytrace along the Ray hRay
@@ -562,7 +565,7 @@ namespace OpenSim.Region.Environment.Scenes
                     // Telling the prim to raytrace.
                     //EntityIntersection inter = part.TestIntersection(hRay, parentrotation);
 
-                    EntityIntersection inter = part.TestIntersectionOBB(hRay, parentrotation, frontFacesOnly, faceCenters);
+                    EntityIntersection inter = part.TestIntersectionOBB(hRay, parentrotation,frontFacesOnly, faceCenters);
 
                     // This may need to be updated to the maximum draw distance possible..  
                     // We might (and probably will) be checking for prim creation from other sims
@@ -681,11 +684,12 @@ namespace OpenSim.Region.Environment.Scenes
                 DetachFromBackup(this);
                 m_rootPart.m_attachedAvatar = agentID;
 
-
+               
                 if (m_rootPart.PhysActor != null)
                 {
                     m_scene.PhysicsScene.RemovePrim(m_rootPart.PhysActor);
                     m_rootPart.PhysActor = null;
+
                 }
 
                 AbsolutePosition = AttachOffset;
@@ -705,28 +709,27 @@ namespace OpenSim.Region.Environment.Scenes
                 m_rootPart.ScheduleFullUpdate();
             }
         }
-
         public byte GetAttachmentPoint()
         {
             if (m_rootPart != null)
             {
                 return m_rootPart.Shape.State;
             }
-            return 0;
+            return (byte)0;
         }
 
         public void ClearPartAttachmentData()
         {
             foreach (SceneObjectPart part in m_parts.Values)
             {
-                part.SetAttachmentPoint(0);
+                part.SetAttachmentPoint((Byte)0);
             }
         }
 
         public void DetachToGround()
         {
             ScenePresence avatar = m_scene.GetScenePresence(m_rootPart.m_attachedAvatar);
-            LLVector3 detachedpos = new LLVector3(127f, 127f, 127f);
+            LLVector3 detachedpos = new LLVector3(127f,127f,127f);
             if (avatar != null)
             {
                 detachedpos = avatar.AbsolutePosition;
@@ -735,14 +738,14 @@ namespace OpenSim.Region.Environment.Scenes
             AbsolutePosition = detachedpos;
             m_rootPart.m_attachedAvatar = LLUUID.Zero;
             m_rootPart.SetParentLocalId(0);
-            m_rootPart.SetAttachmentPoint(0);
+            m_rootPart.SetAttachmentPoint((byte)0);
             m_rootPart.m_IsAttachment = false;
             m_rootPart.ApplyPhysics(m_rootPart.GetEffectiveObjectFlags(), m_scene.m_physicalPrim);
             AttachToBackup();
             m_rootPart.ScheduleFullUpdate();
             m_rootPart.ClearUndoState();
+           
         }
-
         public void DetachToInventoryPrep()
         {
             ScenePresence avatar = m_scene.GetScenePresence(m_rootPart.m_attachedAvatar);
@@ -752,7 +755,7 @@ namespace OpenSim.Region.Environment.Scenes
                 //detachedpos = avatar.AbsolutePosition;
                 avatar.RemoveAttachment(this);
             }
-
+            
             m_rootPart.m_attachedAvatar = LLUUID.Zero;
             m_rootPart.SetParentLocalId(0);
             //m_rootPart.SetAttachmentPoint((byte)0);
@@ -761,8 +764,8 @@ namespace OpenSim.Region.Environment.Scenes
             //m_rootPart.ApplyPhysics(m_rootPart.GetEffectiveObjectFlags(), m_scene.m_physicalPrim);
             //AttachToBackup();
             //m_rootPart.ScheduleFullUpdate();
+            
         }
-
         /// <summary>
         /// 
         /// </summary>
@@ -823,6 +826,7 @@ namespace OpenSim.Region.Environment.Scenes
                 try
                 {
                     m_parts.Add(part.UUID, part);
+                    
                 }
                 catch (Exception e)
                 {
@@ -843,6 +847,7 @@ namespace OpenSim.Region.Environment.Scenes
                     if (part.UUID != m_rootPart.UUID)
                     {
                         part.ParentID = m_rootPart.LocalId;
+                        
                     }
                 }
             }
@@ -855,10 +860,10 @@ namespace OpenSim.Region.Environment.Scenes
                 foreach (SceneObjectPart part in m_parts.Values)
                 {
                     part.UUID = LLUUID.Random();
+                    
                 }
             }
         }
-
         // helper provided for parts.
         public int GetSceneMaxUndo()
         {
@@ -866,7 +871,6 @@ namespace OpenSim.Region.Environment.Scenes
                 return m_scene.MaxUndoCount;
             return 5;
         }
-
         public void ResetChildPrimPhysicsPositions()
         {
             AbsolutePosition = AbsolutePosition;
@@ -893,6 +897,7 @@ namespace OpenSim.Region.Environment.Scenes
             {
                 SceneObjectPart part = GetChildPart(localId);
                 OnGrabPart(part, offsetPos, remoteClient);
+                
             }
         }
 
@@ -900,6 +905,7 @@ namespace OpenSim.Region.Environment.Scenes
         {
             part.StoreUndoState();
             part.OnGrab(offsetPos, remoteClient);
+            
         }
 
         public virtual void OnGrabGroup(LLVector3 offsetPos, IClientAPI remoteClient)
@@ -963,19 +969,19 @@ namespace OpenSim.Region.Environment.Scenes
 
         public void aggregateScriptEvents()
         {
-            uint objectflagupdate = RootPart.GetEffectiveObjectFlags();
+			uint objectflagupdate=(uint)RootPart.GetEffectiveObjectFlags();
 
-            scriptEvents aggregateScriptEvents = 0;
+			scriptEvents aggregateScriptEvents=0;
 
             lock (m_parts)
             {
                 foreach (SceneObjectPart part in m_parts.Values)
                 {
-                    if (part == null)
-                        continue;
-                    if (part != RootPart)
-                        part.ObjectFlags = objectflagupdate;
-                    aggregateScriptEvents |= part.m_aggregateScriptEvents;
+					if(part == null)
+						continue;
+					if(part != RootPart)
+  						part.ObjectFlags = objectflagupdate;
+					aggregateScriptEvents |= part.m_aggregateScriptEvents;
                 }
             }
 
@@ -1059,139 +1065,6 @@ namespace OpenSim.Region.Environment.Scenes
             }
         }
 
-        internal void SetAxisRotation(int axis, int rotate10)
-        {
-            bool setX = false;
-            bool setY = false;
-            bool setZ = false;
-
-            int xaxis = 2;
-            int yaxis = 4;
-            int zaxis = 8;
-
-            if (m_rootPart != null)
-            {
-                setX = ((axis & xaxis) != 0) ? true : false;
-                setY = ((axis & yaxis) != 0) ? true : false;
-                setZ = ((axis & zaxis) != 0) ? true : false;
-
-                float setval = (rotate10 > 0) ? 1f : 0f;
-
-                if (setX)
-                    m_rootPart.m_rotationAxis.X = setval;
-                if (setY)
-                    m_rootPart.m_rotationAxis.Y = setval;
-                if (setZ)
-                    m_rootPart.m_rotationAxis.Z = setval;
-
-                if (setX || setY || setZ)
-                {
-                    m_rootPart.SetPhysicsAxisRotation();
-                }
-            }
-        }
-
-        public int registerTargetWaypoint(LLVector3 target, float tolerance)
-        {
-            scriptPosTarget waypoint = new scriptPosTarget();
-            waypoint.targetPos = target;
-            waypoint.tolerance = tolerance;
-            uint handle = m_scene.PrimIDAllocate();
-            lock (m_targets)
-            {
-                m_targets.Add(handle, waypoint);
-            }
-            return (int) handle;
-        }
-
-        public void unregisterTargetWaypoint(int handle)
-        {
-            lock (m_targets)
-            {
-                if (m_targets.ContainsKey((uint) handle))
-                    m_targets.Remove((uint) handle);
-            }
-        }
-
-        private void checkAtTargets()
-        {
-            if (m_scriptListens_atTarget || m_scriptListens_notAtTarget)
-            {
-                if (m_targets.Count > 0)
-                {
-                    bool at_target = false;
-                    //LLVector3 targetPos;
-                    //uint targetHandle;
-                    Dictionary<uint, scriptPosTarget> atTargets = new Dictionary<uint, scriptPosTarget>();
-                    lock (m_targets)
-                    {
-                        foreach (uint idx in m_targets.Keys)
-                        {
-                            scriptPosTarget target = m_targets[idx];
-                            if (Util.GetDistanceTo(target.targetPos, m_rootPart.GroupPosition) <= target.tolerance)
-                            {
-                                // trigger at_target
-                                if (m_scriptListens_atTarget)
-                                {
-                                    // Reusing att.tolerance to hold the index of the target in the targets dictionary
-                                    // to avoid deadlocking the sim.
-                                    at_target = true;
-                                    scriptPosTarget att = new scriptPosTarget();
-                                    att.targetPos = target.targetPos;
-                                    att.tolerance = idx;
-                                    atTargets.Add(idx, att);
-                                }
-                            }
-                        }
-                    }
-                    if (atTargets.Count > 0)
-                    {
-                        uint[] localids = new uint[0];
-                        lock (m_parts)
-                        {
-                            localids = new uint[m_parts.Count];
-                            int cntr = 0;
-                            foreach (SceneObjectPart part in m_parts.Values)
-                            {
-                                localids[cntr] = part.LocalId;
-                                cntr++;
-                            }
-                        }
-                        for (int ctr = 0; ctr < localids.Length; ctr++)
-                        {
-                            foreach (uint target in atTargets.Keys)
-                            {
-                                scriptPosTarget att = atTargets[target];
-                                // Reusing att.tolerance to hold the index of the target in the targets dictionary
-                                // to avoid deadlocking the sim.
-                                m_scene.TriggerAtTargetEvent(localids[ctr], (uint) att.tolerance, att.targetPos, m_rootPart.GroupPosition);
-                            }
-                        }
-                        return;
-                    }
-                    if (m_scriptListens_notAtTarget && !at_target)
-                    {
-                        //trigger not_at_target
-                        uint[] localids = new uint[0];
-                        lock (m_parts)
-                        {
-                            localids = new uint[m_parts.Count];
-                            int cntr = 0;
-                            foreach (SceneObjectPart part in m_parts.Values)
-                            {
-                                localids[cntr] = part.LocalId;
-                                cntr++;
-                            }
-                        }
-                        for (int ctr = 0; ctr < localids.Length; ctr++)
-                        {
-                            m_scene.TriggerNotAtTargetEvent(localids[ctr]);
-                        }
-                    }
-                }
-            }
-        }
-
         #region Events
 
         /// <summary>
@@ -1489,8 +1362,9 @@ namespace OpenSim.Region.Environment.Scenes
             {
                 m_parts.Add(newPart.UUID, newPart);
             }
-
+            
             SetPartAsNonRoot(newPart);
+            
         }
 
         /// <summary>
@@ -1560,30 +1434,32 @@ namespace OpenSim.Region.Environment.Scenes
         /// </summary>
         public override void Update()
         {
+            
             lock (m_parts)
             {
                 //if (m_rootPart.m_IsAttachment)
                 //{
-                //foreach (SceneObjectPart part in m_parts.Values)
-                //{
-                //part.SendScheduledUpdates();
+                    //foreach (SceneObjectPart part in m_parts.Values)
+                    //{
+                        //part.SendScheduledUpdates();
+                    //}
+                    //return;
                 //}
-                //return;
-                //}
-
+            
                 if (Util.GetDistanceTo(lastPhysGroupPos, AbsolutePosition) > 0.02)
                 {
                     m_rootPart.UpdateFlag = 1;
                     lastPhysGroupPos = AbsolutePosition;
                 }
-                //foreach (SceneObjectPart part in m_parts.Values)
-                //{
-                //if (part.UpdateFlag == 0) part.UpdateFlag = 1;
-                //}
-
-
-                checkAtTargets();
+                    //foreach (SceneObjectPart part in m_parts.Values)
+                    //{
+                        //if (part.UpdateFlag == 0) part.UpdateFlag = 1;
+                    //}
 
+                    
+                    
+                    checkAtTargets();
+                
 
                 if ((Math.Abs(lastPhysGroupRot.W - GroupRotation.W) > 0.1)
                     || (Math.Abs(lastPhysGroupRot.X - GroupRotation.X) > 0.1)
@@ -1887,7 +1763,7 @@ namespace OpenSim.Region.Environment.Scenes
         public void DelinkFromGroup(uint partID)
         {
             SceneObjectPart linkPart = GetChildPart(partID);
-
+            
             if (null != linkPart)
             {
                 linkPart.ClearUndoState();
@@ -2072,10 +1948,10 @@ namespace OpenSim.Region.Environment.Scenes
             proper.ObjectData[0].FromTaskID = LLUUID.Zero;
             proper.ObjectData[0].GroupID = LLUUID.Zero;
             proper.ObjectData[0].InventorySerial = (short) m_rootPart.InventorySerial;
-
+            
             proper.ObjectData[0].LastOwnerID = m_rootPart.LastOwnerID;
 //            proper.ObjectData[0].LastOwnerID = LLUUID.Zero;
-
+            
             proper.ObjectData[0].ObjectID = UUID;
             proper.ObjectData[0].OwnerID = m_rootPart.OwnerID;
             proper.ObjectData[0].TouchName = Helpers.StringToField(m_rootPart.TouchName);
@@ -2515,5 +2391,140 @@ namespace OpenSim.Region.Environment.Scenes
         }
 
         #endregion
+
+        internal void SetAxisRotation(int axis, int rotate10)
+        {
+            bool setX = false;
+            bool setY = false;
+            bool setZ = false;
+
+            int xaxis = 2;
+            int yaxis = 4;
+            int zaxis = 8;
+
+            if (m_rootPart != null)
+            {
+                setX = ((axis & xaxis) != 0) ? true : false;
+                setY = ((axis & yaxis) != 0) ? true : false;
+                setZ = ((axis & zaxis) != 0) ? true : false;
+
+                float setval = (rotate10 > 0) ? 1f : 0f;
+
+                if (setX)
+                    m_rootPart.m_rotationAxis.X = setval;
+                if (setY)
+                    m_rootPart.m_rotationAxis.Y = setval;
+                if (setZ)
+                    m_rootPart.m_rotationAxis.Z = setval;
+
+                if (setX || setY || setZ)
+                {
+                    m_rootPart.SetPhysicsAxisRotation();
+                }
+
+            }
+        }
+
+        public int registerTargetWaypoint(LLVector3 target, float tolerance)
+        {
+            scriptPosTarget waypoint = new scriptPosTarget();
+            waypoint.targetPos = target;
+            waypoint.tolerance = tolerance;
+            uint handle = m_scene.PrimIDAllocate();
+            lock (m_targets)
+            {
+                m_targets.Add(handle, waypoint);
+            }
+            return (int)handle;
+        }
+        public void unregisterTargetWaypoint(int handle)
+        {
+            lock (m_targets)
+            {
+                if (m_targets.ContainsKey((uint)handle))
+                    m_targets.Remove((uint)handle);
+            }
+        }
+
+        private void checkAtTargets()
+        {
+            if (m_scriptListens_atTarget || m_scriptListens_notAtTarget)
+            {
+                if (m_targets.Count > 0)
+                {
+                    bool at_target = false;
+                    //LLVector3 targetPos;
+                    //uint targetHandle;
+                    Dictionary<uint, scriptPosTarget> atTargets = new Dictionary<uint, scriptPosTarget>();
+                    lock (m_targets)
+                    {
+                        foreach (uint idx in m_targets.Keys)
+                        {
+                            scriptPosTarget target = m_targets[idx];
+                            if (Util.GetDistanceTo(target.targetPos, m_rootPart.GroupPosition) <= target.tolerance)
+                            {
+                                // trigger at_target
+                                if (m_scriptListens_atTarget)
+                                {
+                                    // Reusing att.tolerance to hold the index of the target in the targets dictionary
+                                    // to avoid deadlocking the sim.
+                                    at_target = true;
+                                    scriptPosTarget att = new scriptPosTarget();
+                                    att.targetPos = target.targetPos;
+                                    att.tolerance = (float)idx;
+                                    atTargets.Add(idx, att);
+                                }
+                            }
+                        }
+                    }
+                    if (atTargets.Count > 0)
+                    {
+                        uint[] localids = new uint[0];
+                        lock (m_parts)
+                        {
+                            localids = new uint[m_parts.Count];
+                            int cntr = 0;
+                            foreach (SceneObjectPart part in m_parts.Values)
+                            {
+                                localids[cntr] = part.LocalId;
+                                cntr++;
+                            }
+                        }
+                        for (int ctr = 0; ctr < localids.Length; ctr++)
+                        {
+                            foreach (uint target in atTargets.Keys)
+                            {
+                                scriptPosTarget att = atTargets[target];
+                                // Reusing att.tolerance to hold the index of the target in the targets dictionary
+                                // to avoid deadlocking the sim.
+                                m_scene.TriggerAtTargetEvent(localids[ctr], (uint)att.tolerance, att.targetPos, m_rootPart.GroupPosition);
+                                
+
+                            }
+                        }
+                        return;
+                    }
+                    if (m_scriptListens_notAtTarget && !at_target)
+                    {
+                        //trigger not_at_target
+                        uint[] localids = new uint[0];
+                        lock (m_parts)
+                        {
+                            localids = new uint[m_parts.Count];
+                            int cntr = 0;
+                            foreach (SceneObjectPart part in m_parts.Values)
+                            {
+                                localids[cntr] = part.LocalId;
+                                cntr++;
+                            }
+                        }
+                        for (int ctr = 0; ctr < localids.Length; ctr++)
+                        {
+                            m_scene.TriggerNotAtTargetEvent(localids[ctr]);
+                        }
+                    }
+                }
+            }
+        }
     }
-}
+}

Bu fark içinde çok fazla dosya değişikliği olduğu için bazı dosyalar gösterilmiyor