diff options
-rw-r--r-- | OpenSim/Framework/IClientAPI.cs | 4 | ||||
-rw-r--r-- | OpenSim/Region/ClientStack/ClientView.cs | 68 | ||||
-rw-r--r-- | OpenSim/Region/Environment/Scenes/Scene.cs | 283 |
3 files changed, 172 insertions, 183 deletions
diff --git a/OpenSim/Framework/IClientAPI.cs b/OpenSim/Framework/IClientAPI.cs index d2d7365..bb4fd15 100644 --- a/OpenSim/Framework/IClientAPI.cs +++ b/OpenSim/Framework/IClientAPI.cs | |||
@@ -406,9 +406,7 @@ namespace OpenSim.Framework | |||
406 | // We keep all this information for fraud purposes in the future. | 406 | // We keep all this information for fraud purposes in the future. |
407 | public delegate void MoneyBalanceRequest(IClientAPI remoteClient, LLUUID agentID, LLUUID sessionID, LLUUID TransactionID); | 407 | public delegate void MoneyBalanceRequest(IClientAPI remoteClient, LLUUID agentID, LLUUID sessionID, LLUUID TransactionID); |
408 | 408 | ||
409 | public delegate void ObjectPermissions( | 409 | public delegate void ObjectPermissions(IClientAPI controller, LLUUID agentID, LLUUID sessionID, byte field, uint localId, uint mask, byte set); |
410 | IClientAPI remoteClinet, LLUUID AgentID, LLUUID SessionID, | ||
411 | List<ObjectPermissionsPacket.ObjectDataBlock> permChanges); | ||
412 | 410 | ||
413 | public interface IClientAPI | 411 | public interface IClientAPI |
414 | { | 412 | { |
diff --git a/OpenSim/Region/ClientStack/ClientView.cs b/OpenSim/Region/ClientStack/ClientView.cs index d4af98c..a35c83c 100644 --- a/OpenSim/Region/ClientStack/ClientView.cs +++ b/OpenSim/Region/ClientStack/ClientView.cs | |||
@@ -51,11 +51,11 @@ namespace OpenSim.Region.ClientStack | |||
51 | /// </summary> | 51 | /// </summary> |
52 | public class ClientView : IClientAPI | 52 | public class ClientView : IClientAPI |
53 | { | 53 | { |
54 | // ~ClientView() | 54 | // ~ClientView() |
55 | // { | 55 | // { |
56 | // System.Console.WriteLine("[CLIENTVIEW]: Destructor called"); | 56 | // System.Console.WriteLine("[CLIENTVIEW]: Destructor called"); |
57 | // } | 57 | // } |
58 | 58 | ||
59 | private static readonly log4net.ILog m_log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); | 59 | private static readonly log4net.ILog m_log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); |
60 | 60 | ||
61 | /* static variables */ | 61 | /* static variables */ |
@@ -239,10 +239,10 @@ namespace OpenSim.Region.ClientStack | |||
239 | private void CloseCleanup() | 239 | private void CloseCleanup() |
240 | { | 240 | { |
241 | m_scene.RemoveClient(AgentId); | 241 | m_scene.RemoveClient(AgentId); |
242 | 242 | ||
243 | //m_log.InfoFormat("[CLIENTVIEW] Memory pre GC {0}", System.GC.GetTotalMemory(false)); | 243 | //m_log.InfoFormat("[CLIENTVIEW] Memory pre GC {0}", System.GC.GetTotalMemory(false)); |
244 | //m_log.InfoFormat("[CLIENTVIEW] Memory post GC {0}", System.GC.GetTotalMemory(true)); | 244 | //m_log.InfoFormat("[CLIENTVIEW] Memory post GC {0}", System.GC.GetTotalMemory(true)); |
245 | 245 | ||
246 | // Send the STOP packet | 246 | // Send the STOP packet |
247 | DisableSimulatorPacket disable = (DisableSimulatorPacket)PacketPool.Instance.GetPacket(PacketType.DisableSimulator); | 247 | DisableSimulatorPacket disable = (DisableSimulatorPacket)PacketPool.Instance.GetPacket(PacketType.DisableSimulator); |
248 | OutPacket(disable, ThrottleOutPacketType.Task); | 248 | OutPacket(disable, ThrottleOutPacketType.Task); |
@@ -368,7 +368,7 @@ namespace OpenSim.Region.ClientStack | |||
368 | if (m_debug > 0) | 368 | if (m_debug > 0) |
369 | { | 369 | { |
370 | string info = String.Empty; | 370 | string info = String.Empty; |
371 | 371 | ||
372 | if (m_debug < 255 && packet.Type == PacketType.AgentUpdate) | 372 | if (m_debug < 255 && packet.Type == PacketType.AgentUpdate) |
373 | return; | 373 | return; |
374 | if (m_debug < 254 && packet.Type == PacketType.ViewerEffect) | 374 | if (m_debug < 254 && packet.Type == PacketType.ViewerEffect) |
@@ -1006,7 +1006,7 @@ namespace OpenSim.Region.ClientStack | |||
1006 | int MAX_ITEMS_PER_PACKET = 6; | 1006 | int MAX_ITEMS_PER_PACKET = 6; |
1007 | 1007 | ||
1008 | Encoding enc = Encoding.ASCII; | 1008 | Encoding enc = Encoding.ASCII; |
1009 | uint FULL_MASK_PERMISSIONS = 2147483647; | 1009 | uint FULL_MASK_PERMISSIONS = (uint)PermissionMask.All; |
1010 | InventoryDescendentsPacket descend; | 1010 | InventoryDescendentsPacket descend; |
1011 | int i; | 1011 | int i; |
1012 | int count; | 1012 | int count; |
@@ -1179,7 +1179,7 @@ namespace OpenSim.Region.ClientStack | |||
1179 | public void SendInventoryItemDetails(LLUUID ownerID, InventoryItemBase item) | 1179 | public void SendInventoryItemDetails(LLUUID ownerID, InventoryItemBase item) |
1180 | { | 1180 | { |
1181 | Encoding enc = Encoding.ASCII; | 1181 | Encoding enc = Encoding.ASCII; |
1182 | uint FULL_MASK_PERMISSIONS = 2147483647; | 1182 | uint FULL_MASK_PERMISSIONS = (uint)PermissionMask.All; |
1183 | FetchInventoryReplyPacket inventoryReply = (FetchInventoryReplyPacket)PacketPool.Instance.GetPacket(PacketType.FetchInventoryReply); | 1183 | FetchInventoryReplyPacket inventoryReply = (FetchInventoryReplyPacket)PacketPool.Instance.GetPacket(PacketType.FetchInventoryReply); |
1184 | // TODO: don't create new blocks if recycling an old packet | 1184 | // TODO: don't create new blocks if recycling an old packet |
1185 | inventoryReply.AgentData.AgentID = AgentId; | 1185 | inventoryReply.AgentData.AgentID = AgentId; |
@@ -1221,7 +1221,7 @@ namespace OpenSim.Region.ClientStack | |||
1221 | public void SendInventoryItemCreateUpdate(InventoryItemBase Item) | 1221 | public void SendInventoryItemCreateUpdate(InventoryItemBase Item) |
1222 | { | 1222 | { |
1223 | Encoding enc = Encoding.ASCII; | 1223 | Encoding enc = Encoding.ASCII; |
1224 | uint FULL_MASK_PERMISSIONS = 2147483647; | 1224 | uint FULL_MASK_PERMISSIONS = (uint)PermissionMask.All; |
1225 | UpdateCreateInventoryItemPacket InventoryReply = (UpdateCreateInventoryItemPacket)PacketPool.Instance.GetPacket(PacketType.UpdateCreateInventoryItem); | 1225 | UpdateCreateInventoryItemPacket InventoryReply = (UpdateCreateInventoryItemPacket)PacketPool.Instance.GetPacket(PacketType.UpdateCreateInventoryItem); |
1226 | // TODO: don't create new blocks if recycling an old packet | 1226 | // TODO: don't create new blocks if recycling an old packet |
1227 | InventoryReply.AgentData.AgentID = AgentId; | 1227 | InventoryReply.AgentData.AgentID = AgentId; |
@@ -1601,9 +1601,9 @@ namespace OpenSim.Region.ClientStack | |||
1601 | terse.RegionData.TimeDilation = timeDilation; | 1601 | terse.RegionData.TimeDilation = timeDilation; |
1602 | terse.ObjectData = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock[1]; | 1602 | terse.ObjectData = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock[1]; |
1603 | terse.ObjectData[0] = terseBlock; | 1603 | terse.ObjectData[0] = terseBlock; |
1604 | 1604 | ||
1605 | terse.Header.Reliable = false; | 1605 | terse.Header.Reliable = false; |
1606 | 1606 | ||
1607 | 1607 | ||
1608 | OutPacket(terse, ThrottleOutPacketType.Task); | 1608 | OutPacket(terse, ThrottleOutPacketType.Task); |
1609 | } | 1609 | } |
@@ -1695,7 +1695,7 @@ namespace OpenSim.Region.ClientStack | |||
1695 | outPacket.ObjectData[0].PSBlock = particleSystem; | 1695 | outPacket.ObjectData[0].PSBlock = particleSystem; |
1696 | outPacket.ObjectData[0].ClickAction = clickAction; | 1696 | outPacket.ObjectData[0].ClickAction = clickAction; |
1697 | //outPacket.ObjectData[0].Flags = 0; | 1697 | //outPacket.ObjectData[0].Flags = 0; |
1698 | 1698 | ||
1699 | // Sound Radius | 1699 | // Sound Radius |
1700 | outPacket.ObjectData[0].Radius = 20; | 1700 | outPacket.ObjectData[0].Radius = 20; |
1701 | 1701 | ||
@@ -1707,7 +1707,7 @@ namespace OpenSim.Region.ClientStack | |||
1707 | 1707 | ||
1708 | if (textureanim.Length > 0) | 1708 | if (textureanim.Length > 0) |
1709 | outPacket.ObjectData[0].TextureAnim = textureanim; | 1709 | outPacket.ObjectData[0].TextureAnim = textureanim; |
1710 | 1710 | ||
1711 | 1711 | ||
1712 | OutPacket(outPacket, ThrottleOutPacketType.Task); | 1712 | OutPacket(outPacket, ThrottleOutPacketType.Task); |
1713 | } | 1713 | } |
@@ -1978,7 +1978,7 @@ namespace OpenSim.Region.ClientStack | |||
1978 | objectData.PathTwistBegin = primData.PathTwistBegin; | 1978 | objectData.PathTwistBegin = primData.PathTwistBegin; |
1979 | objectData.ExtraParams = primData.ExtraParams; | 1979 | objectData.ExtraParams = primData.ExtraParams; |
1980 | } | 1980 | } |
1981 | 1981 | ||
1982 | /// <summary> | 1982 | /// <summary> |
1983 | /// Set some default values in a ObjectUpdatePacket | 1983 | /// Set some default values in a ObjectUpdatePacket |
1984 | /// </summary> | 1984 | /// </summary> |
@@ -3100,15 +3100,25 @@ namespace OpenSim.Region.ClientStack | |||
3100 | } | 3100 | } |
3101 | break; | 3101 | break; |
3102 | case PacketType.ObjectPermissions: | 3102 | case PacketType.ObjectPermissions: |
3103 | m_log.Warn("[CLIENT]: unhandled packet " + PacketType.ObjectPermissions.ToString()); | 3103 | if (OnObjectPermissions != null) |
3104 | ObjectPermissionsPacket newobjPerms = (ObjectPermissionsPacket)Pack; | 3104 | { |
3105 | ObjectPermissionsPacket newobjPerms = (ObjectPermissionsPacket)Pack; | ||
3105 | 3106 | ||
3106 | List<ObjectPermissionsPacket.ObjectDataBlock> permChanges = | 3107 | LLUUID AgentID = newobjPerms.AgentData.AgentID; |
3107 | new List<ObjectPermissionsPacket.ObjectDataBlock>(); | 3108 | LLUUID SessionID = newobjPerms.AgentData.SessionID; |
3108 | 3109 | ||
3109 | for (int i = 0; i < newobjPerms.ObjectData.Length; i++) | 3110 | for (int i = 0; i < newobjPerms.ObjectData.Length; i++) |
3110 | { | 3111 | { |
3111 | permChanges.Add(newobjPerms.ObjectData[i]); | 3112 | ObjectPermissionsPacket.ObjectDataBlock permChanges = newobjPerms.ObjectData[i]; |
3113 | |||
3114 | |||
3115 | byte field = permChanges.Field; | ||
3116 | uint localID = permChanges.ObjectLocalID; | ||
3117 | uint mask = permChanges.Mask; | ||
3118 | byte set = permChanges.Set; | ||
3119 | |||
3120 | OnObjectPermissions(this, AgentID, SessionID, field, localID, mask, set); | ||
3121 | } | ||
3112 | } | 3122 | } |
3113 | 3123 | ||
3114 | // Here's our data, | 3124 | // Here's our data, |
@@ -3123,12 +3133,6 @@ namespace OpenSim.Region.ClientStack | |||
3123 | // Unfortunately, we have to pass the event the packet because objData is an array | 3133 | // Unfortunately, we have to pass the event the packet because objData is an array |
3124 | // That means multiple object perms may be updated in a single packet. | 3134 | // That means multiple object perms may be updated in a single packet. |
3125 | 3135 | ||
3126 | LLUUID AgentID = newobjPerms.AgentData.AgentID; | ||
3127 | LLUUID SessionID = newobjPerms.AgentData.SessionID; | ||
3128 | if (OnObjectPermissions != null) | ||
3129 | { | ||
3130 | OnObjectPermissions(this, AgentID, SessionID, permChanges); | ||
3131 | } | ||
3132 | 3136 | ||
3133 | break; | 3137 | break; |
3134 | 3138 | ||
@@ -3481,8 +3485,8 @@ namespace OpenSim.Region.ClientStack | |||
3481 | { | 3485 | { |
3482 | OnMoneyBalanceRequest(this, moneybalancerequestpacket.AgentData.AgentID, moneybalancerequestpacket.AgentData.SessionID, moneybalancerequestpacket.MoneyData.TransactionID); | 3486 | OnMoneyBalanceRequest(this, moneybalancerequestpacket.AgentData.AgentID, moneybalancerequestpacket.AgentData.SessionID, moneybalancerequestpacket.MoneyData.TransactionID); |
3483 | } | 3487 | } |
3484 | 3488 | ||
3485 | 3489 | ||
3486 | break; | 3490 | break; |
3487 | case PacketType.UUIDNameRequest: | 3491 | case PacketType.UUIDNameRequest: |
3488 | UUIDNameRequestPacket incoming = (UUIDNameRequestPacket)Pack; | 3492 | UUIDNameRequestPacket incoming = (UUIDNameRequestPacket)Pack; |
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index 5026688..dfbeed1 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs | |||
@@ -46,9 +46,9 @@ using OpenSim.Region.Environment.Modules; | |||
46 | using OpenSim.Region.Environment.Scenes.Scripting; | 46 | using OpenSim.Region.Environment.Scenes.Scripting; |
47 | using OpenSim.Region.Physics.Manager; | 47 | using OpenSim.Region.Physics.Manager; |
48 | using OpenSim.Region.Terrain; | 48 | using OpenSim.Region.Terrain; |
49 | using Caps=OpenSim.Region.Capabilities.Caps; | 49 | using Caps = OpenSim.Region.Capabilities.Caps; |
50 | using Image=System.Drawing.Image; | 50 | using Image = System.Drawing.Image; |
51 | using Timer=System.Timers.Timer; | 51 | using Timer = System.Timers.Timer; |
52 | 52 | ||
53 | namespace OpenSim.Region.Environment.Scenes | 53 | namespace OpenSim.Region.Environment.Scenes |
54 | { | 54 | { |
@@ -193,10 +193,10 @@ namespace OpenSim.Region.Environment.Scenes | |||
193 | } | 193 | } |
194 | 194 | ||
195 | // Local reference to the objects in the scene (which are held in innerScene) | 195 | // Local reference to the objects in the scene (which are held in innerScene) |
196 | // public Dictionary<LLUUID, SceneObjectGroup> Objects | 196 | // public Dictionary<LLUUID, SceneObjectGroup> Objects |
197 | // { | 197 | // { |
198 | // get { return m_innerScene.SceneObjects; } | 198 | // get { return m_innerScene.SceneObjects; } |
199 | // } | 199 | // } |
200 | 200 | ||
201 | // Reference to all of the agents in the scene (root and child) | 201 | // Reference to all of the agents in the scene (root and child) |
202 | protected Dictionary<LLUUID, ScenePresence> m_scenePresences | 202 | protected Dictionary<LLUUID, ScenePresence> m_scenePresences |
@@ -205,11 +205,11 @@ namespace OpenSim.Region.Environment.Scenes | |||
205 | set { m_innerScene.ScenePresences = value; } | 205 | set { m_innerScene.ScenePresences = value; } |
206 | } | 206 | } |
207 | 207 | ||
208 | // protected Dictionary<LLUUID, SceneObjectGroup> m_sceneObjects | 208 | // protected Dictionary<LLUUID, SceneObjectGroup> m_sceneObjects |
209 | // { | 209 | // { |
210 | // get { return m_innerScene.SceneObjects; } | 210 | // get { return m_innerScene.SceneObjects; } |
211 | // set { m_innerScene.SceneObjects = value; } | 211 | // set { m_innerScene.SceneObjects = value; } |
212 | // } | 212 | // } |
213 | 213 | ||
214 | public Dictionary<LLUUID, EntityBase> Entities | 214 | public Dictionary<LLUUID, EntityBase> Entities |
215 | { | 215 | { |
@@ -278,7 +278,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
278 | //m_sceneObjects = new Dictionary<LLUUID, SceneObjectGroup>(); | 278 | //m_sceneObjects = new Dictionary<LLUUID, SceneObjectGroup>(); |
279 | 279 | ||
280 | m_log.Info("[SCENE]: Creating LandMap"); | 280 | m_log.Info("[SCENE]: Creating LandMap"); |
281 | Terrain = new TerrainEngine((int) RegionInfo.RegionLocX, (int) RegionInfo.RegionLocY); | 281 | Terrain = new TerrainEngine((int)RegionInfo.RegionLocX, (int)RegionInfo.RegionLocY); |
282 | 282 | ||
283 | httpListener = httpServer; | 283 | httpListener = httpServer; |
284 | m_dumpAssetsToFile = dumpAssetsToFile; | 284 | m_dumpAssetsToFile = dumpAssetsToFile; |
@@ -308,13 +308,13 @@ namespace OpenSim.Region.Environment.Scenes | |||
308 | { | 308 | { |
309 | OSString = System.Environment.OSVersion.ToString(); | 309 | OSString = System.Environment.OSVersion.ToString(); |
310 | } | 310 | } |
311 | else | 311 | else |
312 | { | 312 | { |
313 | OSString = Util.ReadEtcIssue(); | 313 | OSString = Util.ReadEtcIssue(); |
314 | } | 314 | } |
315 | if (OSString.Length > 45) | 315 | if (OSString.Length > 45) |
316 | { | 316 | { |
317 | OSString = OSString.Substring(0,45); | 317 | OSString = OSString.Substring(0, 45); |
318 | } | 318 | } |
319 | 319 | ||
320 | m_simulatorVersion = "OpenSimulator v0.5-SVN on " + OSString + " ChilTasks:" + m_sendTasksToChild.ToString() + " PhysPrim:" + m_physicalPrim.ToString(); | 320 | m_simulatorVersion = "OpenSimulator v0.5-SVN on " + OSString + " ChilTasks:" + m_sendTasksToChild.ToString() + " PhysPrim:" + m_physicalPrim.ToString(); |
@@ -383,7 +383,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
383 | int resultX = Math.Abs((int)otherRegion.RegionLocX - (int)RegionInfo.RegionLocX); | 383 | int resultX = Math.Abs((int)otherRegion.RegionLocX - (int)RegionInfo.RegionLocX); |
384 | int resultY = Math.Abs((int)otherRegion.RegionLocY - (int)RegionInfo.RegionLocY); | 384 | int resultY = Math.Abs((int)otherRegion.RegionLocY - (int)RegionInfo.RegionLocY); |
385 | if ((resultX <= 1) && | 385 | if ((resultX <= 1) && |
386 | ( resultY <= 1)) | 386 | (resultY <= 1)) |
387 | { | 387 | { |
388 | try | 388 | try |
389 | { | 389 | { |
@@ -434,11 +434,11 @@ namespace OpenSim.Region.Environment.Scenes | |||
434 | { | 434 | { |
435 | // Now we figure out what to set the timer to that does the notifications and calls, RestartNow() | 435 | // Now we figure out what to set the timer to that does the notifications and calls, RestartNow() |
436 | m_restartTimer.Interval = 15000; | 436 | m_restartTimer.Interval = 15000; |
437 | m_incrementsof15seconds = (int) seconds/15; | 437 | m_incrementsof15seconds = (int)seconds / 15; |
438 | m_RestartTimerCounter = 0; | 438 | m_RestartTimerCounter = 0; |
439 | m_restartTimer.AutoReset = true; | 439 | m_restartTimer.AutoReset = true; |
440 | m_restartTimer.Elapsed += new ElapsedEventHandler(RestartTimer_Elapsed); | 440 | m_restartTimer.Elapsed += new ElapsedEventHandler(RestartTimer_Elapsed); |
441 | m_log.Error("[REGION]: Restarting Region in " + (seconds/60) + " minutes"); | 441 | m_log.Error("[REGION]: Restarting Region in " + (seconds / 60) + " minutes"); |
442 | m_restartTimer.Start(); | 442 | m_restartTimer.Start(); |
443 | SendRegionMessageFromEstateTools(LLUUID.Random(), LLUUID.Random(), String.Empty, RegionInfo.RegionName + ": Restarting in 2 Minutes"); | 443 | SendRegionMessageFromEstateTools(LLUUID.Random(), LLUUID.Random(), String.Empty, RegionInfo.RegionName + ": Restarting in 2 Minutes"); |
444 | //SendGeneralAlert(RegionInfo.RegionName + ": Restarting in 2 Minutes"); | 444 | //SendGeneralAlert(RegionInfo.RegionName + ": Restarting in 2 Minutes"); |
@@ -455,11 +455,11 @@ namespace OpenSim.Region.Environment.Scenes | |||
455 | if (m_RestartTimerCounter <= m_incrementsof15seconds) | 455 | if (m_RestartTimerCounter <= m_incrementsof15seconds) |
456 | { | 456 | { |
457 | if (m_RestartTimerCounter == 4 || m_RestartTimerCounter == 6 || m_RestartTimerCounter == 7) | 457 | if (m_RestartTimerCounter == 4 || m_RestartTimerCounter == 6 || m_RestartTimerCounter == 7) |
458 | SendRegionMessageFromEstateTools(LLUUID.Random(), LLUUID.Random(), String.Empty, RegionInfo.RegionName + ": Restarting in " + | 458 | SendRegionMessageFromEstateTools(LLUUID.Random(), LLUUID.Random(), String.Empty, RegionInfo.RegionName + ": Restarting in " + |
459 | ((8 - m_RestartTimerCounter) * 15) + " seconds"); | 459 | ((8 - m_RestartTimerCounter) * 15) + " seconds"); |
460 | 460 | ||
461 | // SendGeneralAlert(RegionInfo.RegionName + ": Restarting in " + ((8 - m_RestartTimerCounter)*15) + | 461 | // SendGeneralAlert(RegionInfo.RegionName + ": Restarting in " + ((8 - m_RestartTimerCounter)*15) + |
462 | //" seconds"); | 462 | //" seconds"); |
463 | } | 463 | } |
464 | else | 464 | else |
465 | { | 465 | { |
@@ -548,7 +548,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
548 | } | 548 | } |
549 | } | 549 | } |
550 | } | 550 | } |
551 | 551 | ||
552 | 552 | ||
553 | } | 553 | } |
554 | m_scripts_enabled = !ScriptEngine; | 554 | m_scripts_enabled = !ScriptEngine; |
@@ -612,7 +612,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
612 | { | 612 | { |
613 | m_log.Debug("[SCENE]: Starting timer"); | 613 | m_log.Debug("[SCENE]: Starting timer"); |
614 | m_heartbeatTimer.Enabled = true; | 614 | m_heartbeatTimer.Enabled = true; |
615 | m_heartbeatTimer.Interval = (int) (m_timespan*1000); | 615 | m_heartbeatTimer.Interval = (int)(m_timespan * 1000); |
616 | m_heartbeatTimer.Elapsed += new ElapsedEventHandler(Heartbeat); | 616 | m_heartbeatTimer.Elapsed += new ElapsedEventHandler(Heartbeat); |
617 | } | 617 | } |
618 | 618 | ||
@@ -650,7 +650,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
650 | updateLock.WaitOne(); | 650 | updateLock.WaitOne(); |
651 | float physicsFPS = 0; | 651 | float physicsFPS = 0; |
652 | int agentsInScene = m_innerScene.GetRootAgentCount() + m_innerScene.GetChildAgentCount(); | 652 | int agentsInScene = m_innerScene.GetRootAgentCount() + m_innerScene.GetChildAgentCount(); |
653 | 653 | ||
654 | 654 | ||
655 | if (agentsInScene > 21) | 655 | if (agentsInScene > 21) |
656 | { | 656 | { |
@@ -681,41 +681,41 @@ namespace OpenSim.Region.Environment.Scenes | |||
681 | // Loop it | 681 | // Loop it |
682 | if (m_frame == Int32.MaxValue) | 682 | if (m_frame == Int32.MaxValue) |
683 | m_frame = 0; | 683 | m_frame = 0; |
684 | |||
685 | 684 | ||
686 | physicsMS2 = System.Environment.TickCount; | 685 | |
687 | if ((m_frame%m_update_physics == 0) && m_physics_enabled) | 686 | physicsMS2 = System.Environment.TickCount; |
687 | if ((m_frame % m_update_physics == 0) && m_physics_enabled) | ||
688 | m_innerScene.UpdatePreparePhysics(); | 688 | m_innerScene.UpdatePreparePhysics(); |
689 | physicsMS2 = System.Environment.TickCount - physicsMS2; | 689 | physicsMS2 = System.Environment.TickCount - physicsMS2; |
690 | 690 | ||
691 | if (m_frame%m_update_entitymovement == 0) | 691 | if (m_frame % m_update_entitymovement == 0) |
692 | m_innerScene.UpdateEntityMovement(); | 692 | m_innerScene.UpdateEntityMovement(); |
693 | 693 | ||
694 | physicsMS = System.Environment.TickCount; | 694 | physicsMS = System.Environment.TickCount; |
695 | if ((m_frame%m_update_physics == 0) && m_physics_enabled) | 695 | if ((m_frame % m_update_physics == 0) && m_physics_enabled) |
696 | physicsFPS = m_innerScene.UpdatePhysics( | 696 | physicsFPS = m_innerScene.UpdatePhysics( |
697 | Math.Max(SinceLastFrame.TotalSeconds, m_timespan) | 697 | Math.Max(SinceLastFrame.TotalSeconds, m_timespan) |
698 | ); | 698 | ); |
699 | 699 | ||
700 | physicsMS = System.Environment.TickCount - physicsMS; | 700 | physicsMS = System.Environment.TickCount - physicsMS; |
701 | physicsMS += physicsMS2; | 701 | physicsMS += physicsMS2; |
702 | 702 | ||
703 | otherMS = System.Environment.TickCount; | 703 | otherMS = System.Environment.TickCount; |
704 | if (m_frame%m_update_entities == 0) | 704 | if (m_frame % m_update_entities == 0) |
705 | m_innerScene.UpdateEntities(); | 705 | m_innerScene.UpdateEntities(); |
706 | 706 | ||
707 | if (m_frame%m_update_events == 0) | 707 | if (m_frame % m_update_events == 0) |
708 | UpdateEvents(); | 708 | UpdateEvents(); |
709 | 709 | ||
710 | if (m_frame%m_update_backup == 0) | 710 | if (m_frame % m_update_backup == 0) |
711 | UpdateStorageBackup(); | 711 | UpdateStorageBackup(); |
712 | 712 | ||
713 | if (m_frame%m_update_terrain == 0) | 713 | if (m_frame % m_update_terrain == 0) |
714 | UpdateTerrain(); | 714 | UpdateTerrain(); |
715 | 715 | ||
716 | if (m_frame%m_update_land == 0) | 716 | if (m_frame % m_update_land == 0) |
717 | UpdateLand(); | 717 | UpdateLand(); |
718 | otherMS = System.Environment.TickCount - otherMS; | 718 | otherMS = System.Environment.TickCount - otherMS; |
719 | // if (m_frame%m_update_avatars == 0) | 719 | // if (m_frame%m_update_avatars == 0) |
720 | // UpdateInWorldTime(); | 720 | // UpdateInWorldTime(); |
721 | m_statsReporter.AddPhysicsFPS(physicsFPS); | 721 | m_statsReporter.AddPhysicsFPS(physicsFPS); |
@@ -732,7 +732,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
732 | m_statsReporter.addOtherMS(otherMS); | 732 | m_statsReporter.addOtherMS(otherMS); |
733 | m_statsReporter.SetActiveScripts(m_innerScene.GetActiveScripts()); | 733 | m_statsReporter.SetActiveScripts(m_innerScene.GetActiveScripts()); |
734 | m_statsReporter.addScriptLines(m_innerScene.GetScriptLPS()); | 734 | m_statsReporter.addScriptLines(m_innerScene.GetScriptLPS()); |
735 | 735 | ||
736 | } | 736 | } |
737 | catch (NotImplementedException) | 737 | catch (NotImplementedException) |
738 | { | 738 | { |
@@ -746,7 +746,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
746 | { | 746 | { |
747 | updateLock.ReleaseMutex(); | 747 | updateLock.ReleaseMutex(); |
748 | 748 | ||
749 | m_timedilation = m_timespan/(float) SinceLastFrame.TotalSeconds; | 749 | m_timedilation = m_timespan / (float)SinceLastFrame.TotalSeconds; |
750 | m_lastupdate = DateTime.Now; | 750 | m_lastupdate = DateTime.Now; |
751 | } | 751 | } |
752 | } | 752 | } |
@@ -871,10 +871,10 @@ namespace OpenSim.Region.Environment.Scenes | |||
871 | public void ExportWorldMap(string fileName) | 871 | public void ExportWorldMap(string fileName) |
872 | { | 872 | { |
873 | List<MapBlockData> mapBlocks = | 873 | List<MapBlockData> mapBlocks = |
874 | CommsManager.GridService.RequestNeighbourMapBlocks((int) (RegionInfo.RegionLocX - 9), | 874 | CommsManager.GridService.RequestNeighbourMapBlocks((int)(RegionInfo.RegionLocX - 9), |
875 | (int) (RegionInfo.RegionLocY - 9), | 875 | (int)(RegionInfo.RegionLocY - 9), |
876 | (int) (RegionInfo.RegionLocX + 9), | 876 | (int)(RegionInfo.RegionLocX + 9), |
877 | (int) (RegionInfo.RegionLocY + 9)); | 877 | (int)(RegionInfo.RegionLocY + 9)); |
878 | List<AssetBase> textures = new List<AssetBase>(); | 878 | List<AssetBase> textures = new List<AssetBase>(); |
879 | List<Image> bitImages = new List<Image>(); | 879 | List<Image> bitImages = new List<Image>(); |
880 | 880 | ||
@@ -909,9 +909,9 @@ namespace OpenSim.Region.Environment.Scenes | |||
909 | 909 | ||
910 | for (int i = 0; i < mapBlocks.Count; i++) | 910 | for (int i = 0; i < mapBlocks.Count; i++) |
911 | { | 911 | { |
912 | ushort x = (ushort) ((mapBlocks[i].X - RegionInfo.RegionLocX) + 10); | 912 | ushort x = (ushort)((mapBlocks[i].X - RegionInfo.RegionLocX) + 10); |
913 | ushort y = (ushort) ((mapBlocks[i].Y - RegionInfo.RegionLocY) + 10); | 913 | ushort y = (ushort)((mapBlocks[i].Y - RegionInfo.RegionLocY) + 10); |
914 | g.DrawImage(bitImages[i], (x*128), (y*128), 128, 128); | 914 | g.DrawImage(bitImages[i], (x * 128), (y * 128), 128, 128); |
915 | } | 915 | } |
916 | mapTexture.Save(fileName, ImageFormat.Jpeg); | 916 | mapTexture.Save(fileName, ImageFormat.Jpeg); |
917 | } | 917 | } |
@@ -1019,17 +1019,17 @@ namespace OpenSim.Region.Environment.Scenes | |||
1019 | 1019 | ||
1020 | public void loadAllLandObjectsFromStorage() | 1020 | public void loadAllLandObjectsFromStorage() |
1021 | { | 1021 | { |
1022 | m_log.Info("[SCENE]: Loading land objects from storage"); | 1022 | m_log.Info("[SCENE]: Loading land objects from storage"); |
1023 | List<LandData> landData = m_storageManager.DataStore.LoadLandObjects(RegionInfo.RegionID); | 1023 | List<LandData> landData = m_storageManager.DataStore.LoadLandObjects(RegionInfo.RegionID); |
1024 | 1024 | ||
1025 | if (landData.Count == 0) | 1025 | if (landData.Count == 0) |
1026 | { | 1026 | { |
1027 | m_LandManager.NoLandDataFromStorage(); | 1027 | m_LandManager.NoLandDataFromStorage(); |
1028 | } | 1028 | } |
1029 | else | 1029 | else |
1030 | { | 1030 | { |
1031 | m_LandManager.IncomingLandObjectsFromStorage(landData); | 1031 | m_LandManager.IncomingLandObjectsFromStorage(landData); |
1032 | } | 1032 | } |
1033 | } | 1033 | } |
1034 | 1034 | ||
1035 | #endregion | 1035 | #endregion |
@@ -1042,7 +1042,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
1042 | public virtual void LoadPrimsFromStorage(bool m_permissions) | 1042 | public virtual void LoadPrimsFromStorage(bool m_permissions) |
1043 | { | 1043 | { |
1044 | m_log.Info("[SCENE]: Loading objects from datastore"); | 1044 | m_log.Info("[SCENE]: Loading objects from datastore"); |
1045 | 1045 | ||
1046 | List<SceneObjectGroup> PrimsFromDB = m_storageManager.DataStore.LoadObjects(m_regInfo.RegionID); | 1046 | List<SceneObjectGroup> PrimsFromDB = m_storageManager.DataStore.LoadObjects(m_regInfo.RegionID); |
1047 | foreach (SceneObjectGroup group in PrimsFromDB) | 1047 | foreach (SceneObjectGroup group in PrimsFromDB) |
1048 | { | 1048 | { |
@@ -1054,7 +1054,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
1054 | group.ApplyPhysics(m_physicalPrim); | 1054 | group.ApplyPhysics(m_physicalPrim); |
1055 | //rootPart.DoPhysicsPropertyUpdate(UsePhysics, true); | 1055 | //rootPart.DoPhysicsPropertyUpdate(UsePhysics, true); |
1056 | } | 1056 | } |
1057 | 1057 | ||
1058 | m_log.Info("[SCENE]: Loaded " + PrimsFromDB.Count.ToString() + " SceneObject(s)"); | 1058 | m_log.Info("[SCENE]: Loaded " + PrimsFromDB.Count.ToString() + " SceneObject(s)"); |
1059 | } | 1059 | } |
1060 | 1060 | ||
@@ -1075,7 +1075,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
1075 | return myID; | 1075 | return myID; |
1076 | } | 1076 | } |
1077 | 1077 | ||
1078 | public LLVector3 GetNewRezLocation(LLVector3 RayStart, LLVector3 RayEnd, LLUUID RayTargetID, LLQuaternion rot, byte bypassRayCast, byte RayEndIsIntersection) | 1078 | public LLVector3 GetNewRezLocation(LLVector3 RayStart, LLVector3 RayEnd, LLUUID RayTargetID, LLQuaternion rot, byte bypassRayCast, byte RayEndIsIntersection) |
1079 | { | 1079 | { |
1080 | LLVector3 pos = LLVector3.Zero; | 1080 | LLVector3 pos = LLVector3.Zero; |
1081 | if (RayEndIsIntersection == (byte)1) | 1081 | if (RayEndIsIntersection == (byte)1) |
@@ -1095,42 +1095,42 @@ namespace OpenSim.Region.Environment.Scenes | |||
1095 | //ScenePresence presence = ((ScenePresence)GetScenePresence(ownerID)); | 1095 | //ScenePresence presence = ((ScenePresence)GetScenePresence(ownerID)); |
1096 | //if (presence != null) | 1096 | //if (presence != null) |
1097 | //{ | 1097 | //{ |
1098 | //Vector3 CameraPosition = presence.CameraPosition; | 1098 | //Vector3 CameraPosition = presence.CameraPosition; |
1099 | //Vector3 rayEnd = new Vector3(pos.X, pos.Y, pos.Z); | 1099 | //Vector3 rayEnd = new Vector3(pos.X, pos.Y, pos.Z); |
1100 | 1100 | ||
1101 | //float rayMag = m_innerScene.Vector3Distance(CameraPosition, rayEnd); | 1101 | //float rayMag = m_innerScene.Vector3Distance(CameraPosition, rayEnd); |
1102 | //LLVector3 rayDirectionLL = Util.GetNormal(pos); | 1102 | //LLVector3 rayDirectionLL = Util.GetNormal(pos); |
1103 | 1103 | ||
1104 | //Vector3 rayDirection = new Vector3(rayDirectionLL.X, rayDirectionLL.Y, rayDirectionLL.Z); | 1104 | //Vector3 rayDirection = new Vector3(rayDirectionLL.X, rayDirectionLL.Y, rayDirectionLL.Z); |
1105 | 1105 | ||
1106 | //Ray rezRay = new Ray(CameraPosition, rayDirection); | 1106 | //Ray rezRay = new Ray(CameraPosition, rayDirection); |
1107 | 1107 | ||
1108 | //Vector3 RezDirectionFromCamera = rezRay.Direction; | 1108 | //Vector3 RezDirectionFromCamera = rezRay.Direction; |
1109 | 1109 | ||
1110 | //rayTracing = m_innerScene.GetClosestIntersectingPrim(rezRay); | 1110 | //rayTracing = m_innerScene.GetClosestIntersectingPrim(rezRay); |
1111 | //} | 1111 | //} |
1112 | 1112 | ||
1113 | //if ((rayTracing != null) && (rayTracing.HitTF)) | 1113 | //if ((rayTracing != null) && (rayTracing.HitTF)) |
1114 | //{ | 1114 | //{ |
1115 | // We raytraced and found a prim in the way of the ground.. so | 1115 | // We raytraced and found a prim in the way of the ground.. so |
1116 | // We will rez the object somewhere close to the prim. Better math needed. This is a Stub | 1116 | // We will rez the object somewhere close to the prim. Better math needed. This is a Stub |
1117 | //Vector3 Newpos = new Vector3(rayTracing.obj.AbsolutePosition.X,rayTracing.obj.AbsolutePosition.Y,rayTracing.obj.AbsolutePosition.Z); | 1117 | //Vector3 Newpos = new Vector3(rayTracing.obj.AbsolutePosition.X,rayTracing.obj.AbsolutePosition.Y,rayTracing.obj.AbsolutePosition.Z); |
1118 | //Vector3 Newpos = rayTracing.ipoint; | 1118 | //Vector3 Newpos = rayTracing.ipoint; |
1119 | //Vector3 NewScale = | 1119 | //Vector3 NewScale = |
1120 | //new Vector3(rayTracing.obj.Scale.X, rayTracing.obj.Scale.Y, rayTracing.obj.Scale.Z); | 1120 | //new Vector3(rayTracing.obj.Scale.X, rayTracing.obj.Scale.Y, rayTracing.obj.Scale.Z); |
1121 | 1121 | ||
1122 | //Quaternion ParentRot = rayTracing.obj.ParentGroup.Rotation; | 1122 | //Quaternion ParentRot = rayTracing.obj.ParentGroup.Rotation; |
1123 | //Quaternion ParentRot = new Quaternion(primParentRot.W,primParentRot.X,primParentRot.Y,primParentRot.Z); | 1123 | //Quaternion ParentRot = new Quaternion(primParentRot.W,primParentRot.X,primParentRot.Y,primParentRot.Z); |
1124 | 1124 | ||
1125 | //LLQuaternion primLocalRot = rayTracing.obj.RotationOffset; | 1125 | //LLQuaternion primLocalRot = rayTracing.obj.RotationOffset; |
1126 | //Quaternion LocalRot = new Quaternion(primLocalRot.W, primLocalRot.X, primLocalRot.Y, primLocalRot.Z); | 1126 | //Quaternion LocalRot = new Quaternion(primLocalRot.W, primLocalRot.X, primLocalRot.Y, primLocalRot.Z); |
1127 | 1127 | ||
1128 | //Quaternion NewRot = LocalRot * ParentRot; | 1128 | //Quaternion NewRot = LocalRot * ParentRot; |
1129 | 1129 | ||
1130 | //Vector3 RezPoint = Newpos; | 1130 | //Vector3 RezPoint = Newpos; |
1131 | 1131 | ||
1132 | //m_log.Info("[REZINFO]: Possible Rez Point:" + RezPoint.ToString()); | 1132 | //m_log.Info("[REZINFO]: Possible Rez Point:" + RezPoint.ToString()); |
1133 | //pos = new LLVector3(RezPoint.x, RezPoint.y, RezPoint.z); | 1133 | //pos = new LLVector3(RezPoint.x, RezPoint.y, RezPoint.z); |
1134 | //} | 1134 | //} |
1135 | 1135 | ||
1136 | return pos; | 1136 | return pos; |
@@ -1150,16 +1150,16 @@ namespace OpenSim.Region.Environment.Scenes | |||
1150 | } | 1150 | } |
1151 | } | 1151 | } |
1152 | 1152 | ||
1153 | public virtual void AddNewPrim(LLUUID ownerID, LLVector3 RayEnd, LLQuaternion rot, PrimitiveBaseShape shape, | 1153 | public virtual void AddNewPrim(LLUUID ownerID, LLVector3 RayEnd, LLQuaternion rot, PrimitiveBaseShape shape, |
1154 | byte bypassRaycast, LLVector3 RayStart, LLUUID RayTargetID, | 1154 | byte bypassRaycast, LLVector3 RayStart, LLUUID RayTargetID, |
1155 | byte RayEndIsIntersection) | 1155 | byte RayEndIsIntersection) |
1156 | { | 1156 | { |
1157 | LLVector3 pos = GetNewRezLocation(RayStart, RayEnd, RayTargetID, rot, bypassRaycast, RayEndIsIntersection); | 1157 | LLVector3 pos = GetNewRezLocation(RayStart, RayEnd, RayTargetID, rot, bypassRaycast, RayEndIsIntersection); |
1158 | 1158 | ||
1159 | if (PermissionsMngr.CanRezObject(ownerID, pos)) | 1159 | if (PermissionsMngr.CanRezObject(ownerID, pos)) |
1160 | { | 1160 | { |
1161 | // rez ON the ground, not IN the ground | 1161 | // rez ON the ground, not IN the ground |
1162 | pos.Z += 0.25F; | 1162 | pos.Z += 0.25F; |
1163 | 1163 | ||
1164 | 1164 | ||
1165 | AddNewPrim(ownerID, pos, rot, shape); | 1165 | AddNewPrim(ownerID, pos, rot, shape); |
@@ -1192,9 +1192,9 @@ namespace OpenSim.Region.Environment.Scenes | |||
1192 | PrimitiveBaseShape treeShape = new PrimitiveBaseShape(); | 1192 | PrimitiveBaseShape treeShape = new PrimitiveBaseShape(); |
1193 | treeShape.PathCurve = 16; | 1193 | treeShape.PathCurve = 16; |
1194 | treeShape.PathEnd = 49900; | 1194 | treeShape.PathEnd = 49900; |
1195 | treeShape.PCode = newTree ? (byte) PCode.NewTree : (byte) PCode.Tree; | 1195 | treeShape.PCode = newTree ? (byte)PCode.NewTree : (byte)PCode.Tree; |
1196 | treeShape.Scale = scale; | 1196 | treeShape.Scale = scale; |
1197 | treeShape.State = (byte) treeType; | 1197 | treeShape.State = (byte)treeType; |
1198 | return AddNewPrim(uuid, position, rotation, treeShape); | 1198 | return AddNewPrim(uuid, position, rotation, treeShape); |
1199 | } | 1199 | } |
1200 | 1200 | ||
@@ -1399,8 +1399,8 @@ namespace OpenSim.Region.Environment.Scenes | |||
1399 | else | 1399 | else |
1400 | { | 1400 | { |
1401 | m_innerScene.removeUserCount(true); | 1401 | m_innerScene.removeUserCount(true); |
1402 | CommsManager.LogOffUser(agentID, RegionInfo.RegionID, RegionInfo.RegionHandle, | 1402 | CommsManager.LogOffUser(agentID, RegionInfo.RegionID, RegionInfo.RegionHandle, |
1403 | avatar.AbsolutePosition.X, avatar.AbsolutePosition.Y, | 1403 | avatar.AbsolutePosition.X, avatar.AbsolutePosition.Y, |
1404 | avatar.AbsolutePosition.Z); | 1404 | avatar.AbsolutePosition.Z); |
1405 | m_sceneGridService.SendCloseChildAgentConnections(avatar); | 1405 | m_sceneGridService.SendCloseChildAgentConnections(avatar); |
1406 | } | 1406 | } |
@@ -1451,7 +1451,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
1451 | { | 1451 | { |
1452 | m_log.Warn( | 1452 | m_log.Warn( |
1453 | String.Format("[SCENE] Tried to remove non-existent scene prescence with agent ID {0} from scene Entities list", agentID)); | 1453 | String.Format("[SCENE] Tried to remove non-existent scene prescence with agent ID {0} from scene Entities list", agentID)); |
1454 | } | 1454 | } |
1455 | } | 1455 | } |
1456 | 1456 | ||
1457 | try | 1457 | try |
@@ -1468,8 +1468,8 @@ namespace OpenSim.Region.Environment.Scenes | |||
1468 | } | 1468 | } |
1469 | 1469 | ||
1470 | // Remove client agent from profile, so new logins will work | 1470 | // Remove client agent from profile, so new logins will work |
1471 | CommsManager.UserService.clearUserAgent(agentID); | 1471 | CommsManager.UserService.clearUserAgent(agentID); |
1472 | 1472 | ||
1473 | //m_log.InfoFormat("[SCENE] Memory pre GC {0}", System.GC.GetTotalMemory(false)); | 1473 | //m_log.InfoFormat("[SCENE] Memory pre GC {0}", System.GC.GetTotalMemory(false)); |
1474 | //m_log.InfoFormat("[SCENE] Memory post GC {0}", System.GC.GetTotalMemory(true)); | 1474 | //m_log.InfoFormat("[SCENE] Memory post GC {0}", System.GC.GetTotalMemory(true)); |
1475 | } | 1475 | } |
@@ -1525,9 +1525,9 @@ namespace OpenSim.Region.Environment.Scenes | |||
1525 | m_sceneGridService.OnCloseAgentConnection += CloseConnection; | 1525 | m_sceneGridService.OnCloseAgentConnection += CloseConnection; |
1526 | m_sceneGridService.OnRegionUp += OtherRegionUp; | 1526 | m_sceneGridService.OnRegionUp += OtherRegionUp; |
1527 | m_sceneGridService.OnChildAgentUpdate += IncomingChildAgentDataUpdate; | 1527 | m_sceneGridService.OnChildAgentUpdate += IncomingChildAgentDataUpdate; |
1528 | |||
1529 | 1528 | ||
1530 | 1529 | ||
1530 | |||
1531 | 1531 | ||
1532 | 1532 | ||
1533 | m_sceneGridService.KillObject = SendKillObject; | 1533 | m_sceneGridService.KillObject = SendKillObject; |
@@ -1652,7 +1652,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
1652 | childAgentUpdate.ChildAgentDataUpdate(cAgentData, tRegionX, tRegionY, rRegionX, rRegionY); | 1652 | childAgentUpdate.ChildAgentDataUpdate(cAgentData, tRegionX, tRegionY, rRegionX, rRegionY); |
1653 | // Not Implemented: | 1653 | // Not Implemented: |
1654 | //TODO: Do we need to pass the message on to one of our neighbors? | 1654 | //TODO: Do we need to pass the message on to one of our neighbors? |
1655 | 1655 | ||
1656 | } | 1656 | } |
1657 | return true; | 1657 | return true; |
1658 | } | 1658 | } |
@@ -1680,7 +1680,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
1680 | m_innerScene.removeUserCount(true); | 1680 | m_innerScene.removeUserCount(true); |
1681 | } | 1681 | } |
1682 | // Tell a single agent to disconnect from the region. | 1682 | // Tell a single agent to disconnect from the region. |
1683 | libsecondlife.Packets.DisableSimulatorPacket disable = (libsecondlife.Packets.DisableSimulatorPacket) PacketPool.Instance.GetPacket(libsecondlife.Packets.PacketType.DisableSimulator); | 1683 | libsecondlife.Packets.DisableSimulatorPacket disable = (libsecondlife.Packets.DisableSimulatorPacket)PacketPool.Instance.GetPacket(libsecondlife.Packets.PacketType.DisableSimulator); |
1684 | presence.ControllingClient.OutPacket(disable, ThrottleOutPacketType.Task); | 1684 | presence.ControllingClient.OutPacket(disable, ThrottleOutPacketType.Task); |
1685 | presence.ControllingClient.Close(true); | 1685 | presence.ControllingClient.Close(true); |
1686 | } | 1686 | } |
@@ -1794,9 +1794,9 @@ namespace OpenSim.Region.Environment.Scenes | |||
1794 | /// <param name="mod"></param> | 1794 | /// <param name="mod"></param> |
1795 | public void RegisterModuleInterface<M>(M mod) | 1795 | public void RegisterModuleInterface<M>(M mod) |
1796 | { | 1796 | { |
1797 | if (!ModuleInterfaces.ContainsKey(typeof (M))) | 1797 | if (!ModuleInterfaces.ContainsKey(typeof(M))) |
1798 | { | 1798 | { |
1799 | ModuleInterfaces.Add(typeof (M), mod); | 1799 | ModuleInterfaces.Add(typeof(M), mod); |
1800 | } | 1800 | } |
1801 | } | 1801 | } |
1802 | 1802 | ||
@@ -1806,9 +1806,9 @@ namespace OpenSim.Region.Environment.Scenes | |||
1806 | /// <returns></returns> | 1806 | /// <returns></returns> |
1807 | public T RequestModuleInterface<T>() | 1807 | public T RequestModuleInterface<T>() |
1808 | { | 1808 | { |
1809 | if (ModuleInterfaces.ContainsKey(typeof (T))) | 1809 | if (ModuleInterfaces.ContainsKey(typeof(T))) |
1810 | { | 1810 | { |
1811 | return (T) ModuleInterfaces[typeof (T)]; | 1811 | return (T)ModuleInterfaces[typeof(T)]; |
1812 | } | 1812 | } |
1813 | else | 1813 | else |
1814 | { | 1814 | { |
@@ -1816,7 +1816,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
1816 | } | 1816 | } |
1817 | } | 1817 | } |
1818 | 1818 | ||
1819 | 1819 | ||
1820 | 1820 | ||
1821 | #endregion | 1821 | #endregion |
1822 | 1822 | ||
@@ -1851,11 +1851,11 @@ namespace OpenSim.Region.Environment.Scenes | |||
1851 | } | 1851 | } |
1852 | } | 1852 | } |
1853 | 1853 | ||
1854 | public void SendDialogToUser(LLUUID avatarID, string objectName, LLUUID objectID, LLUUID ownerID,string message,LLUUID TextureID,int ch,string[] buttonlabels) | 1854 | public void SendDialogToUser(LLUUID avatarID, string objectName, LLUUID objectID, LLUUID ownerID, string message, LLUUID TextureID, int ch, string[] buttonlabels) |
1855 | { | 1855 | { |
1856 | if (m_scenePresences.ContainsKey(avatarID)) | 1856 | if (m_scenePresences.ContainsKey(avatarID)) |
1857 | { | 1857 | { |
1858 | m_scenePresences[avatarID].ControllingClient.SendDialog(objectName,objectID,ownerID,message,TextureID,ch,buttonlabels); | 1858 | m_scenePresences[avatarID].ControllingClient.SendDialog(objectName, objectID, ownerID, message, TextureID, ch, buttonlabels); |
1859 | } | 1859 | } |
1860 | } | 1860 | } |
1861 | 1861 | ||
@@ -1883,7 +1883,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
1883 | m_LandManager.resetAllLandPrimCounts(); | 1883 | m_LandManager.resetAllLandPrimCounts(); |
1884 | m_eventManager.TriggerParcelPrimCountUpdate(); | 1884 | m_eventManager.TriggerParcelPrimCountUpdate(); |
1885 | m_LandManager.finalizeLandPrimCountUpdate(); | 1885 | m_LandManager.finalizeLandPrimCountUpdate(); |
1886 | m_LandManager.landPrimCountTainted = false; | 1886 | m_LandManager.landPrimCountTainted = false; |
1887 | } | 1887 | } |
1888 | 1888 | ||
1889 | /// <summary> | 1889 | /// <summary> |
@@ -1895,7 +1895,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
1895 | { | 1895 | { |
1896 | if (obj is SceneObjectGroup) | 1896 | if (obj is SceneObjectGroup) |
1897 | { | 1897 | { |
1898 | m_eventManager.TriggerParcelPrimCountAdd((SceneObjectGroup) obj); | 1898 | m_eventManager.TriggerParcelPrimCountAdd((SceneObjectGroup)obj); |
1899 | } | 1899 | } |
1900 | } | 1900 | } |
1901 | } | 1901 | } |
@@ -1910,9 +1910,9 @@ namespace OpenSim.Region.Environment.Scenes | |||
1910 | /// </summary> | 1910 | /// </summary> |
1911 | /// <param name="message">object containing the instant message data</param> | 1911 | /// <param name="message">object containing the instant message data</param> |
1912 | /// <returns>void</returns> | 1912 | /// <returns>void</returns> |
1913 | public void TriggerGridInstantMessage(GridInstantMessage message,InstantMessageReceiver options) | 1913 | public void TriggerGridInstantMessage(GridInstantMessage message, InstantMessageReceiver options) |
1914 | { | 1914 | { |
1915 | m_eventManager.TriggerGridInstantMessage(message,options); | 1915 | m_eventManager.TriggerGridInstantMessage(message, options); |
1916 | } | 1916 | } |
1917 | 1917 | ||
1918 | 1918 | ||
@@ -2096,8 +2096,8 @@ namespace OpenSim.Region.Environment.Scenes | |||
2096 | if (controller.AgentId != godID) | 2096 | if (controller.AgentId != godID) |
2097 | controller.Kick(Helpers.FieldToUTF8String(reason)); | 2097 | controller.Kick(Helpers.FieldToUTF8String(reason)); |
2098 | 2098 | ||
2099 | 2099 | ||
2100 | 2100 | ||
2101 | } | 2101 | } |
2102 | ); | 2102 | ); |
2103 | // This is a bit crude. It seems the client will be null before it actually stops the thread | 2103 | // This is a bit crude. It seems the client will be null before it actually stops the thread |
@@ -2108,7 +2108,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
2108 | ScenePresence p = GetScenePresence(controller.AgentId); | 2108 | ScenePresence p = GetScenePresence(controller.AgentId); |
2109 | bool childagent = !p.Equals(null) && p.IsChildAgent; | 2109 | bool childagent = !p.Equals(null) && p.IsChildAgent; |
2110 | if (controller.AgentId != godID && !childagent) | 2110 | if (controller.AgentId != godID && !childagent) |
2111 | // Do we really want to kick the initiator of this madness? | 2111 | // Do we really want to kick the initiator of this madness? |
2112 | { | 2112 | { |
2113 | controller.Close(true); | 2113 | controller.Close(true); |
2114 | } | 2114 | } |
@@ -2138,29 +2138,16 @@ namespace OpenSim.Region.Environment.Scenes | |||
2138 | } | 2138 | } |
2139 | } | 2139 | } |
2140 | 2140 | ||
2141 | /// <summary> | 2141 | public void HandleObjectPermissionsUpdate(IClientAPI controller, LLUUID agentID, LLUUID sessionID, byte field, uint localId, uint mask, byte set) |
2142 | /// | ||
2143 | /// </summary> | ||
2144 | /// <param name="controller"></param> | ||
2145 | /// <param name="agentID"></param> | ||
2146 | /// <param name="sessionID"></param> | ||
2147 | /// <param name="permChanges"></param> | ||
2148 | public void HandleObjectPermissionsUpdate(IClientAPI controller, LLUUID agentID, LLUUID sessionID, | ||
2149 | List<ObjectPermissionsPacket.ObjectDataBlock> permChanges) | ||
2150 | { | 2142 | { |
2151 | // Check for spoofing.. since this is permissions we're talking about here! | 2143 | // Check for spoofing.. since this is permissions we're talking about here! |
2152 | if ((controller.SessionId == sessionID) && (controller.AgentId == agentID)) | 2144 | if ((controller.SessionId == sessionID) && (controller.AgentId == agentID)) |
2153 | { | 2145 | { |
2154 | for (int i = 0; i < permChanges.Count; i++) | 2146 | |
2155 | { | 2147 | // Tell the object to do permission update |
2156 | // Tell the object to do permission update | 2148 | SceneObjectGroup chObjectGroup = GetGroupByPrim(localId); |
2157 | byte field = permChanges[i].Field; | 2149 | chObjectGroup.UpdatePermissions(agentID, field, localId, mask, set); |
2158 | uint localID = permChanges[i].ObjectLocalID; | 2150 | |
2159 | uint mask = permChanges[i].Mask; | ||
2160 | byte addRemTF = permChanges[i].Set; | ||
2161 | SceneObjectGroup chObjectGroup = GetGroupByPrim(localID); | ||
2162 | chObjectGroup.UpdatePermissions(agentID, field, localID, mask, addRemTF); | ||
2163 | } | ||
2164 | } | 2151 | } |
2165 | } | 2152 | } |
2166 | 2153 | ||
@@ -2226,7 +2213,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
2226 | { | 2213 | { |
2227 | if (ent is SceneObjectGroup) | 2214 | if (ent is SceneObjectGroup) |
2228 | { | 2215 | { |
2229 | ((SceneObjectGroup) ent).ScheduleGroupForFullUpdate(); | 2216 | ((SceneObjectGroup)ent).ScheduleGroupForFullUpdate(); |
2230 | } | 2217 | } |
2231 | } | 2218 | } |
2232 | } | 2219 | } |
@@ -2246,7 +2233,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
2246 | { | 2233 | { |
2247 | if (ent is SceneObjectGroup) | 2234 | if (ent is SceneObjectGroup) |
2248 | { | 2235 | { |
2249 | SceneObjectPart part = ((SceneObjectGroup) ent).GetChildPart(((SceneObjectGroup) ent).UUID); | 2236 | SceneObjectPart part = ((SceneObjectGroup)ent).GetChildPart(((SceneObjectGroup)ent).UUID); |
2250 | if (part != null) | 2237 | if (part != null) |
2251 | { | 2238 | { |
2252 | if (part.Name == cmdparams[0]) | 2239 | if (part.Name == cmdparams[0]) |
@@ -2493,20 +2480,20 @@ namespace OpenSim.Region.Environment.Scenes | |||
2493 | /// | 2480 | /// |
2494 | /// </summary> | 2481 | /// </summary> |
2495 | /// <param name="action"></param> | 2482 | /// <param name="action"></param> |
2496 | // public void ForEachObject(Action<SceneObjectGroup> action) | 2483 | // public void ForEachObject(Action<SceneObjectGroup> action) |
2497 | // { | 2484 | // { |
2498 | // List<SceneObjectGroup> presenceList; | 2485 | // List<SceneObjectGroup> presenceList; |
2499 | // | 2486 | // |
2500 | // lock (m_sceneObjects) | 2487 | // lock (m_sceneObjects) |
2501 | // { | 2488 | // { |
2502 | // presenceList = new List<SceneObjectGroup>(m_sceneObjects.Values); | 2489 | // presenceList = new List<SceneObjectGroup>(m_sceneObjects.Values); |
2503 | // } | 2490 | // } |
2504 | // | 2491 | // |
2505 | // foreach (SceneObjectGroup presence in presenceList) | 2492 | // foreach (SceneObjectGroup presence in presenceList) |
2506 | // { | 2493 | // { |
2507 | // action(presence); | 2494 | // action(presence); |
2508 | // } | 2495 | // } |
2509 | // } | 2496 | // } |
2510 | 2497 | ||
2511 | /// <summary> | 2498 | /// <summary> |
2512 | /// | 2499 | /// |