diff options
47 files changed, 1672 insertions, 170 deletions
diff --git a/OpenSim/Data/MySQL/MySQLGenericTableHandler.cs b/OpenSim/Data/MySQL/MySQLGenericTableHandler.cs index 4e27e26..2f5937d 100644 --- a/OpenSim/Data/MySQL/MySQLGenericTableHandler.cs +++ b/OpenSim/Data/MySQL/MySQLGenericTableHandler.cs | |||
@@ -135,7 +135,7 @@ namespace OpenSim.Data.MySQL | |||
135 | 135 | ||
136 | List<T> result = new List<T>(); | 136 | List<T> result = new List<T>(); |
137 | 137 | ||
138 | while(reader.Read()) | 138 | while (reader.Read()) |
139 | { | 139 | { |
140 | T row = new T(); | 140 | T row = new T(); |
141 | 141 | ||
@@ -146,7 +146,7 @@ namespace OpenSim.Data.MySQL | |||
146 | int v = Convert.ToInt32(reader[name]); | 146 | int v = Convert.ToInt32(reader[name]); |
147 | m_Fields[name].SetValue(row, v != 0 ? true : false); | 147 | m_Fields[name].SetValue(row, v != 0 ? true : false); |
148 | } | 148 | } |
149 | else if(m_Fields[name].GetValue(row) is UUID) | 149 | else if (m_Fields[name].GetValue(row) is UUID) |
150 | { | 150 | { |
151 | UUID uuid = UUID.Zero; | 151 | UUID uuid = UUID.Zero; |
152 | 152 | ||
diff --git a/OpenSim/Data/MySQL/MySQLInventoryData.cs b/OpenSim/Data/MySQL/MySQLInventoryData.cs index 0eecf06..063dd91 100644 --- a/OpenSim/Data/MySQL/MySQLInventoryData.cs +++ b/OpenSim/Data/MySQL/MySQLInventoryData.cs | |||
@@ -48,6 +48,10 @@ namespace OpenSim.Data.MySQL | |||
48 | /// </summary> | 48 | /// </summary> |
49 | private MySQLManager database; | 49 | private MySQLManager database; |
50 | 50 | ||
51 | private bool rollbackStore = false; | ||
52 | private bool opengridmode = false; | ||
53 | private string rollbackDir = ""; | ||
54 | |||
51 | public void Initialise() | 55 | public void Initialise() |
52 | { | 56 | { |
53 | m_log.Info("[MySQLInventoryData]: " + Name + " cannot be default-initialized!"); | 57 | m_log.Info("[MySQLInventoryData]: " + Name + " cannot be default-initialized!"); |
@@ -82,6 +86,10 @@ namespace OpenSim.Data.MySQL | |||
82 | string settingPooling = GridDataMySqlFile.ParseFileReadValue("pooling"); | 86 | string settingPooling = GridDataMySqlFile.ParseFileReadValue("pooling"); |
83 | string settingPort = GridDataMySqlFile.ParseFileReadValue("port"); | 87 | string settingPort = GridDataMySqlFile.ParseFileReadValue("port"); |
84 | 88 | ||
89 | rollbackDir = GridDataMySqlFile.ParseFileReadValue("rollbackdir"); | ||
90 | rollbackStore = GridDataMySqlFile.ParseFileReadValue("rollback") == "true"; | ||
91 | opengridmode = GridDataMySqlFile.ParseFileReadValue("opengridmode") == "true"; | ||
92 | |||
85 | database = | 93 | database = |
86 | new MySQLManager(settingHostname, settingDatabase, settingUsername, settingPassword, settingPooling, | 94 | new MySQLManager(settingHostname, settingDatabase, settingUsername, settingPassword, settingPooling, |
87 | settingPort); | 95 | settingPort); |
@@ -851,16 +859,25 @@ namespace OpenSim.Data.MySQL | |||
851 | { | 859 | { |
852 | List<InventoryFolderBase> subFolders = getFolderHierarchy(folderID); | 860 | List<InventoryFolderBase> subFolders = getFolderHierarchy(folderID); |
853 | 861 | ||
854 | //Delete all sub-folders | 862 | // Dont delete in OGM - makes for easier restores if someone sends a malcious command. (just restore the folder entry) |
855 | foreach (InventoryFolderBase f in subFolders) | 863 | if (opengridmode == false) |
856 | { | 864 | { |
857 | deleteOneFolder(f.ID); | 865 | //Delete all sub-folders |
858 | deleteItemsInFolder(f.ID); | 866 | foreach (InventoryFolderBase f in subFolders) |
867 | { | ||
868 | deleteOneFolder(f.ID); | ||
869 | deleteItemsInFolder(f.ID); | ||
870 | } | ||
859 | } | 871 | } |
860 | 872 | ||
861 | //Delete the actual row | 873 | //Delete the actual row |
862 | deleteOneFolder(folderID); | 874 | deleteOneFolder(folderID); |
863 | deleteItemsInFolder(folderID); | 875 | |
876 | // Just delete the folder context in OGM | ||
877 | if (opengridmode == false) | ||
878 | { | ||
879 | deleteItemsInFolder(folderID); | ||
880 | } | ||
864 | } | 881 | } |
865 | 882 | ||
866 | public List<InventoryItemBase> fetchActiveGestures(UUID avatarID) | 883 | public List<InventoryItemBase> fetchActiveGestures(UUID avatarID) |
diff --git a/OpenSim/Framework/PrimitiveBaseShape.cs b/OpenSim/Framework/PrimitiveBaseShape.cs index e43d634..fe8f020 100644 --- a/OpenSim/Framework/PrimitiveBaseShape.cs +++ b/OpenSim/Framework/PrimitiveBaseShape.cs | |||
@@ -1099,8 +1099,6 @@ namespace OpenSim.Framework | |||
1099 | prim.Sculpt = new Primitive.SculptData(); | 1099 | prim.Sculpt = new Primitive.SculptData(); |
1100 | prim.Sculpt.Type = (OpenMetaverse.SculptType)this.SculptType; | 1100 | prim.Sculpt.Type = (OpenMetaverse.SculptType)this.SculptType; |
1101 | prim.Sculpt.SculptTexture = this.SculptTexture; | 1101 | prim.Sculpt.SculptTexture = this.SculptTexture; |
1102 | |||
1103 | return prim; | ||
1104 | } | 1102 | } |
1105 | 1103 | ||
1106 | prim.PrimData.PathShearX = this.PathShearX < 128 ? (float)this.PathShearX * 0.01f : (float)(this.PathShearX - 256) * 0.01f; | 1104 | prim.PrimData.PathShearX = this.PathShearX < 128 ? (float)this.PathShearX * 0.01f : (float)(this.PathShearX - 256) * 0.01f; |
diff --git a/OpenSim/Framework/Servers/HttpServer/PollServiceWorkerThread.cs b/OpenSim/Framework/Servers/HttpServer/PollServiceWorkerThread.cs index cc8bdb6..1cc19c5 100644 --- a/OpenSim/Framework/Servers/HttpServer/PollServiceWorkerThread.cs +++ b/OpenSim/Framework/Servers/HttpServer/PollServiceWorkerThread.cs | |||
@@ -50,7 +50,7 @@ namespace OpenSim.Framework.Servers.HttpServer | |||
50 | private readonly BaseHttpServer m_server; | 50 | private readonly BaseHttpServer m_server; |
51 | private BlockingQueue<PollServiceHttpRequest> m_request; | 51 | private BlockingQueue<PollServiceHttpRequest> m_request; |
52 | private bool m_running = true; | 52 | private bool m_running = true; |
53 | private int m_timeout = 250; | 53 | private int m_timeout = 250; |
54 | 54 | ||
55 | public PollServiceWorkerThread(BaseHttpServer pSrv, int pTimeout) | 55 | public PollServiceWorkerThread(BaseHttpServer pSrv, int pTimeout) |
56 | { | 56 | { |
diff --git a/OpenSim/Framework/Tests/ACLTest.cs b/OpenSim/Framework/Tests/ACLTest.cs index d11f307..06e860e 100644 --- a/OpenSim/Framework/Tests/ACLTest.cs +++ b/OpenSim/Framework/Tests/ACLTest.cs | |||
@@ -1,4 +1,31 @@ | |||
1 | using System; | 1 | /* |
2 | * Copyright (c) Contributors, http://opensimulator.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSimulator Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | */ | ||
27 | |||
28 | using System; | ||
2 | using NUnit.Framework; | 29 | using NUnit.Framework; |
3 | using System.Collections.Generic; | 30 | using System.Collections.Generic; |
4 | 31 | ||
diff --git a/OpenSim/Framework/Tests/CacheTests.cs b/OpenSim/Framework/Tests/CacheTests.cs index 8e97232..e2afd2a 100644 --- a/OpenSim/Framework/Tests/CacheTests.cs +++ b/OpenSim/Framework/Tests/CacheTests.cs | |||
@@ -1,4 +1,31 @@ | |||
1 | using System; | 1 | /* |
2 | * Copyright (c) Contributors, http://opensimulator.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSimulator Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | */ | ||
27 | |||
28 | using System; | ||
2 | using NUnit.Framework; | 29 | using NUnit.Framework; |
3 | using OpenMetaverse; | 30 | using OpenMetaverse; |
4 | 31 | ||
@@ -38,7 +65,7 @@ namespace OpenSim.Framework.Tests | |||
38 | randomNotIn = UUID.Random(); | 65 | randomNotIn = UUID.Random(); |
39 | } | 66 | } |
40 | object citem = cache.Get(randomNotIn.ToString()); | 67 | object citem = cache.Get(randomNotIn.ToString()); |
41 | Assert.That(citem == null, "Item should not be in Cache" ); | 68 | Assert.That(citem == null, "Item should not be in Cache"); |
42 | } | 69 | } |
43 | 70 | ||
44 | //NOTE: Test Case disabled until Cache is fixed | 71 | //NOTE: Test Case disabled until Cache is fixed |
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index 49b9378..47251b7 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs | |||
@@ -350,7 +350,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
350 | 350 | ||
351 | protected IAssetService m_assetService; | 351 | protected IAssetService m_assetService; |
352 | private IHyperAssetService m_hyperAssets; | 352 | private IHyperAssetService m_hyperAssets; |
353 | 353 | private const bool m_checkPackets = true; | |
354 | 354 | ||
355 | #endregion Class Members | 355 | #endregion Class Members |
356 | 356 | ||
@@ -1266,10 +1266,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
1266 | // | 1266 | // |
1267 | if (totalItems == 0 && totalFolders == 0) | 1267 | if (totalItems == 0 && totalFolders == 0) |
1268 | currentPacket = CreateInventoryDescendentsPacket(ownerID, folderID, version, items.Count + folders.Count, 0, 0); | 1268 | currentPacket = CreateInventoryDescendentsPacket(ownerID, folderID, version, items.Count + folders.Count, 0, 0); |
1269 | 1269 | ||
1270 | // To preserve SL compatibility, we will NOT combine folders and items in one packet | 1270 | // To preserve SL compatibility, we will NOT combine folders and items in one packet |
1271 | // | 1271 | // |
1272 | while(itemsSent < totalItems || foldersSent < totalFolders) | 1272 | while (itemsSent < totalItems || foldersSent < totalFolders) |
1273 | { | 1273 | { |
1274 | if (currentPacket == null) // Start a new packet | 1274 | if (currentPacket == null) // Start a new packet |
1275 | { | 1275 | { |
@@ -1289,7 +1289,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
1289 | 1289 | ||
1290 | if (foldersToSend-- > 0) | 1290 | if (foldersToSend-- > 0) |
1291 | currentPacket.FolderData[foldersSent % MAX_FOLDERS_PER_PACKET] = CreateFolderDataBlock(folders[foldersSent++]); | 1291 | currentPacket.FolderData[foldersSent % MAX_FOLDERS_PER_PACKET] = CreateFolderDataBlock(folders[foldersSent++]); |
1292 | else if(itemsToSend-- > 0) | 1292 | else if (itemsToSend-- > 0) |
1293 | currentPacket.ItemData[itemsSent % MAX_ITEMS_PER_PACKET] = CreateItemDataBlock(items[itemsSent++]); | 1293 | currentPacket.ItemData[itemsSent % MAX_ITEMS_PER_PACKET] = CreateItemDataBlock(items[itemsSent++]); |
1294 | else | 1294 | else |
1295 | { | 1295 | { |
@@ -2043,7 +2043,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
2043 | packet.AgentData.SessionID = SessionId; | 2043 | packet.AgentData.SessionID = SessionId; |
2044 | 2044 | ||
2045 | packet.Effect = effectBlocks; | 2045 | packet.Effect = effectBlocks; |
2046 | 2046 | ||
2047 | OutPacket(packet, ThrottleOutPacketType.State); | 2047 | OutPacket(packet, ThrottleOutPacketType.State); |
2048 | } | 2048 | } |
2049 | 2049 | ||
@@ -2742,7 +2742,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
2742 | } | 2742 | } |
2743 | llsd.Add("GroupData", GroupData); | 2743 | llsd.Add("GroupData", GroupData); |
2744 | llsd.Add("NewGroupData", NewGroupData); | 2744 | llsd.Add("NewGroupData", NewGroupData); |
2745 | 2745 | ||
2746 | IEventQueue eq = this.Scene.RequestModuleInterface<IEventQueue>(); | 2746 | IEventQueue eq = this.Scene.RequestModuleInterface<IEventQueue>(); |
2747 | if (eq != null) | 2747 | if (eq != null) |
2748 | { | 2748 | { |
@@ -3121,7 +3121,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
3121 | 3121 | ||
3122 | objupdate.ObjectData = new ObjectUpdatePacket.ObjectDataBlock[1]; | 3122 | objupdate.ObjectData = new ObjectUpdatePacket.ObjectDataBlock[1]; |
3123 | objupdate.ObjectData[0] = CreateAvatarUpdateBlock(data); | 3123 | objupdate.ObjectData[0] = CreateAvatarUpdateBlock(data); |
3124 | |||
3125 | OutPacket(objupdate, ThrottleOutPacketType.Task); | 3124 | OutPacket(objupdate, ThrottleOutPacketType.Task); |
3126 | } | 3125 | } |
3127 | 3126 | ||
@@ -3172,8 +3171,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
3172 | terse.ObjectData[i] = m_avatarTerseUpdates.Dequeue(); | 3171 | terse.ObjectData[i] = m_avatarTerseUpdates.Dequeue(); |
3173 | } | 3172 | } |
3174 | 3173 | ||
3175 | // HACK: Using the task category until the tiered reprioritization code is in | 3174 | OutPacket(terse, ThrottleOutPacketType.State); |
3176 | OutPacket(terse, ThrottleOutPacketType.Task); | ||
3177 | } | 3175 | } |
3178 | 3176 | ||
3179 | public void SendCoarseLocationUpdate(List<UUID> users, List<Vector3> CoarseLocations) | 3177 | public void SendCoarseLocationUpdate(List<UUID> users, List<Vector3> CoarseLocations) |
@@ -4045,7 +4043,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4045 | 4043 | ||
4046 | if (collisionPlane == Vector4.Zero) | 4044 | if (collisionPlane == Vector4.Zero) |
4047 | collisionPlane = Vector4.UnitW; | 4045 | collisionPlane = Vector4.UnitW; |
4048 | 4046 | //m_log.DebugFormat("CollisionPlane: {0}",collisionPlane); | |
4049 | collisionPlane.ToBytes(data, pos); | 4047 | collisionPlane.ToBytes(data, pos); |
4050 | pos += 16; | 4048 | pos += 16; |
4051 | } | 4049 | } |
@@ -4130,12 +4128,12 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4130 | update.PCode = (byte)PCode.Avatar; | 4128 | update.PCode = (byte)PCode.Avatar; |
4131 | update.ProfileCurve = 1; | 4129 | update.ProfileCurve = 1; |
4132 | update.PSBlock = Utils.EmptyBytes; | 4130 | update.PSBlock = Utils.EmptyBytes; |
4133 | update.Scale = Vector3.One; | 4131 | update.Scale = new Vector3(0.45f,0.6f,1.9f); |
4134 | update.Text = Utils.EmptyBytes; | 4132 | update.Text = Utils.EmptyBytes; |
4135 | update.TextColor = new byte[4]; | 4133 | update.TextColor = new byte[4]; |
4136 | update.TextureAnim = Utils.EmptyBytes; | 4134 | update.TextureAnim = Utils.EmptyBytes; |
4137 | update.TextureEntry = data.TextureEntry ?? Utils.EmptyBytes; | 4135 | update.TextureEntry = data.TextureEntry ?? Utils.EmptyBytes; |
4138 | update.UpdateFlags = 61 + (9 << 8) + (130 << 16) + (16 << 24); // TODO: Replace these numbers with PrimFlags | 4136 | update.UpdateFlags = (uint)(PrimFlags.Physics | PrimFlags.ObjectModify | PrimFlags.ObjectCopy | PrimFlags.ObjectAnyOwner | PrimFlags.ObjectYouOwner | PrimFlags.ObjectMove | PrimFlags.InventoryEmpty | PrimFlags.ObjectTransfer | PrimFlags.ObjectOwnerModify);//61 + (9 << 8) + (130 << 16) + (16 << 24); // TODO: Replace these numbers with PrimFlags |
4139 | 4137 | ||
4140 | return update; | 4138 | return update; |
4141 | } | 4139 | } |
@@ -4282,6 +4280,38 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4282 | AddLocalPacketHandler(PacketType.UUIDGroupNameRequest, HandleUUIDGroupNameRequest); | 4280 | AddLocalPacketHandler(PacketType.UUIDGroupNameRequest, HandleUUIDGroupNameRequest); |
4283 | AddLocalPacketHandler(PacketType.ObjectGroup, HandleObjectGroupRequest); | 4281 | AddLocalPacketHandler(PacketType.ObjectGroup, HandleObjectGroupRequest); |
4284 | AddLocalPacketHandler(PacketType.GenericMessage, HandleGenericMessage); | 4282 | AddLocalPacketHandler(PacketType.GenericMessage, HandleGenericMessage); |
4283 | AddLocalPacketHandler(PacketType.AvatarPropertiesRequest, HandleAvatarPropertiesRequest); | ||
4284 | AddLocalPacketHandler(PacketType.ChatFromViewer, HandleChatFromViewer); | ||
4285 | AddLocalPacketHandler(PacketType.AvatarPropertiesUpdate, HandlerAvatarPropertiesUpdate); | ||
4286 | AddLocalPacketHandler(PacketType.ScriptDialogReply, HandlerScriptDialogReply); | ||
4287 | AddLocalPacketHandler(PacketType.ImprovedInstantMessage, HandlerImprovedInstantMessage); | ||
4288 | AddLocalPacketHandler(PacketType.AcceptFriendship, HandlerAcceptFriendship); | ||
4289 | AddLocalPacketHandler(PacketType.DeclineFriendship, HandlerDeclineFriendship); | ||
4290 | AddLocalPacketHandler(PacketType.TerminateFriendship, HandlerTerminateFrendship); | ||
4291 | AddLocalPacketHandler(PacketType.RezObject, HandlerRezObject); | ||
4292 | AddLocalPacketHandler(PacketType.DeRezObject, HandlerDeRezObject); | ||
4293 | AddLocalPacketHandler(PacketType.ModifyLand, HandlerModifyLand); | ||
4294 | AddLocalPacketHandler(PacketType.RegionHandshakeReply, HandlerRegionHandshakeReply); | ||
4295 | AddLocalPacketHandler(PacketType.AgentWearablesRequest, HandlerAgentWearablesRequest); | ||
4296 | AddLocalPacketHandler(PacketType.AgentSetAppearance, HandlerAgentSetAppearance); | ||
4297 | AddLocalPacketHandler(PacketType.AgentIsNowWearing, HandlerAgentIsNowWearing); | ||
4298 | AddLocalPacketHandler(PacketType.RezSingleAttachmentFromInv, HandlerRezSingleAttachmentFromInv); | ||
4299 | AddLocalPacketHandler(PacketType.RezMultipleAttachmentsFromInv, HandleRezMultipleAttachmentsFromInv); | ||
4300 | AddLocalPacketHandler(PacketType.DetachAttachmentIntoInv, HandleDetachAttachmentIntoInv); | ||
4301 | AddLocalPacketHandler(PacketType.ObjectAttach, HandleObjectAttach); | ||
4302 | AddLocalPacketHandler(PacketType.ObjectDetach, HandleObjectDetach); | ||
4303 | AddLocalPacketHandler(PacketType.ObjectDrop, HandleObjectDrop); | ||
4304 | AddLocalPacketHandler(PacketType.SetAlwaysRun, HandleSetAlwaysRun); | ||
4305 | AddLocalPacketHandler(PacketType.CompleteAgentMovement, HandleCompleteAgentMovement); | ||
4306 | AddLocalPacketHandler(PacketType.AgentAnimation, HandleAgentAnimation); | ||
4307 | AddLocalPacketHandler(PacketType.AgentRequestSit, HandleAgentRequestSit); | ||
4308 | AddLocalPacketHandler(PacketType.AgentSit, HandleAgentSit); | ||
4309 | AddLocalPacketHandler(PacketType.SoundTrigger, HandleSoundTrigger); | ||
4310 | //AddLocalPacketHandler(PacketType.ChatFromViewer, HandleChatFromViewer); | ||
4311 | //AddLocalPacketHandler(PacketType.ChatFromViewer, HandleChatFromViewer); | ||
4312 | //AddLocalPacketHandler(PacketType.ChatFromViewer, HandleChatFromViewer); | ||
4313 | //AddLocalPacketHandler(PacketType.ChatFromViewer, HandleChatFromViewer); | ||
4314 | |||
4285 | } | 4315 | } |
4286 | 4316 | ||
4287 | #region Packet Handlers | 4317 | #region Packet Handlers |
@@ -4497,6 +4527,723 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4497 | return true; | 4527 | return true; |
4498 | } | 4528 | } |
4499 | 4529 | ||
4530 | private bool HandleAvatarPropertiesRequest(IClientAPI sender, Packet Pack) | ||
4531 | { | ||
4532 | AvatarPropertiesRequestPacket avatarProperties = (AvatarPropertiesRequestPacket)Pack; | ||
4533 | |||
4534 | #region Packet Session and User Check | ||
4535 | if (m_checkPackets) | ||
4536 | { | ||
4537 | if (avatarProperties.AgentData.SessionID != SessionId || | ||
4538 | avatarProperties.AgentData.AgentID != AgentId) | ||
4539 | return true; | ||
4540 | } | ||
4541 | #endregion | ||
4542 | |||
4543 | RequestAvatarProperties handlerRequestAvatarProperties = OnRequestAvatarProperties; | ||
4544 | if (handlerRequestAvatarProperties != null) | ||
4545 | { | ||
4546 | handlerRequestAvatarProperties(this, avatarProperties.AgentData.AvatarID); | ||
4547 | } | ||
4548 | return true; | ||
4549 | } | ||
4550 | |||
4551 | private bool HandleChatFromViewer(IClientAPI sender, Packet Pack) | ||
4552 | { | ||
4553 | ChatFromViewerPacket inchatpack = (ChatFromViewerPacket)Pack; | ||
4554 | |||
4555 | #region Packet Session and User Check | ||
4556 | if (m_checkPackets) | ||
4557 | { | ||
4558 | if (inchatpack.AgentData.SessionID != SessionId || | ||
4559 | inchatpack.AgentData.AgentID != AgentId) | ||
4560 | return true; | ||
4561 | } | ||
4562 | #endregion | ||
4563 | |||
4564 | string fromName = String.Empty; //ClientAvatar.firstname + " " + ClientAvatar.lastname; | ||
4565 | byte[] message = inchatpack.ChatData.Message; | ||
4566 | byte type = inchatpack.ChatData.Type; | ||
4567 | Vector3 fromPos = new Vector3(); // ClientAvatar.Pos; | ||
4568 | // UUID fromAgentID = AgentId; | ||
4569 | |||
4570 | int channel = inchatpack.ChatData.Channel; | ||
4571 | |||
4572 | if (OnChatFromClient != null) | ||
4573 | { | ||
4574 | OSChatMessage args = new OSChatMessage(); | ||
4575 | args.Channel = channel; | ||
4576 | args.From = fromName; | ||
4577 | args.Message = Utils.BytesToString(message); | ||
4578 | args.Type = (ChatTypeEnum)type; | ||
4579 | args.Position = fromPos; | ||
4580 | |||
4581 | args.Scene = Scene; | ||
4582 | args.Sender = this; | ||
4583 | args.SenderUUID = this.AgentId; | ||
4584 | |||
4585 | ChatMessage handlerChatFromClient = OnChatFromClient; | ||
4586 | if (handlerChatFromClient != null) | ||
4587 | handlerChatFromClient(this, args); | ||
4588 | } | ||
4589 | return true; | ||
4590 | } | ||
4591 | |||
4592 | private bool HandlerAvatarPropertiesUpdate(IClientAPI sender, Packet Pack) | ||
4593 | { | ||
4594 | AvatarPropertiesUpdatePacket avatarProps = (AvatarPropertiesUpdatePacket)Pack; | ||
4595 | |||
4596 | #region Packet Session and User Check | ||
4597 | if (m_checkPackets) | ||
4598 | { | ||
4599 | if (avatarProps.AgentData.SessionID != SessionId || | ||
4600 | avatarProps.AgentData.AgentID != AgentId) | ||
4601 | return true; | ||
4602 | } | ||
4603 | #endregion | ||
4604 | |||
4605 | UpdateAvatarProperties handlerUpdateAvatarProperties = OnUpdateAvatarProperties; | ||
4606 | if (handlerUpdateAvatarProperties != null) | ||
4607 | { | ||
4608 | AvatarPropertiesUpdatePacket.PropertiesDataBlock Properties = avatarProps.PropertiesData; | ||
4609 | UserProfileData UserProfile = new UserProfileData(); | ||
4610 | UserProfile.ID = AgentId; | ||
4611 | UserProfile.AboutText = Utils.BytesToString(Properties.AboutText); | ||
4612 | UserProfile.FirstLifeAboutText = Utils.BytesToString(Properties.FLAboutText); | ||
4613 | UserProfile.FirstLifeImage = Properties.FLImageID; | ||
4614 | UserProfile.Image = Properties.ImageID; | ||
4615 | UserProfile.ProfileUrl = Utils.BytesToString(Properties.ProfileURL); | ||
4616 | |||
4617 | handlerUpdateAvatarProperties(this, UserProfile); | ||
4618 | } | ||
4619 | return true; | ||
4620 | } | ||
4621 | |||
4622 | private bool HandlerScriptDialogReply(IClientAPI sender, Packet Pack) | ||
4623 | { | ||
4624 | ScriptDialogReplyPacket rdialog = (ScriptDialogReplyPacket)Pack; | ||
4625 | |||
4626 | #region Packet Session and User Check | ||
4627 | if (m_checkPackets) | ||
4628 | { | ||
4629 | if (rdialog.AgentData.SessionID != SessionId || | ||
4630 | rdialog.AgentData.AgentID != AgentId) | ||
4631 | return true; | ||
4632 | } | ||
4633 | #endregion | ||
4634 | |||
4635 | int ch = rdialog.Data.ChatChannel; | ||
4636 | byte[] msg = rdialog.Data.ButtonLabel; | ||
4637 | if (OnChatFromClient != null) | ||
4638 | { | ||
4639 | OSChatMessage args = new OSChatMessage(); | ||
4640 | args.Channel = ch; | ||
4641 | args.From = String.Empty; | ||
4642 | args.Message = Utils.BytesToString(msg); | ||
4643 | args.Type = ChatTypeEnum.Shout; | ||
4644 | args.Position = new Vector3(); | ||
4645 | args.Scene = Scene; | ||
4646 | args.Sender = this; | ||
4647 | ChatMessage handlerChatFromClient2 = OnChatFromClient; | ||
4648 | if (handlerChatFromClient2 != null) | ||
4649 | handlerChatFromClient2(this, args); | ||
4650 | } | ||
4651 | |||
4652 | return true; | ||
4653 | } | ||
4654 | |||
4655 | private bool HandlerImprovedInstantMessage(IClientAPI sender, Packet Pack) | ||
4656 | { | ||
4657 | ImprovedInstantMessagePacket msgpack = (ImprovedInstantMessagePacket)Pack; | ||
4658 | |||
4659 | #region Packet Session and User Check | ||
4660 | if (m_checkPackets) | ||
4661 | { | ||
4662 | if (msgpack.AgentData.SessionID != SessionId || | ||
4663 | msgpack.AgentData.AgentID != AgentId) | ||
4664 | return true; | ||
4665 | } | ||
4666 | #endregion | ||
4667 | |||
4668 | string IMfromName = Util.FieldToString(msgpack.MessageBlock.FromAgentName); | ||
4669 | string IMmessage = Utils.BytesToString(msgpack.MessageBlock.Message); | ||
4670 | ImprovedInstantMessage handlerInstantMessage = OnInstantMessage; | ||
4671 | |||
4672 | if (handlerInstantMessage != null) | ||
4673 | { | ||
4674 | GridInstantMessage im = new GridInstantMessage(Scene, | ||
4675 | msgpack.AgentData.AgentID, | ||
4676 | IMfromName, | ||
4677 | msgpack.MessageBlock.ToAgentID, | ||
4678 | msgpack.MessageBlock.Dialog, | ||
4679 | msgpack.MessageBlock.FromGroup, | ||
4680 | IMmessage, | ||
4681 | msgpack.MessageBlock.ID, | ||
4682 | msgpack.MessageBlock.Offline != 0 ? true : false, | ||
4683 | msgpack.MessageBlock.Position, | ||
4684 | msgpack.MessageBlock.BinaryBucket); | ||
4685 | |||
4686 | handlerInstantMessage(this, im); | ||
4687 | } | ||
4688 | return true; | ||
4689 | |||
4690 | } | ||
4691 | |||
4692 | private bool HandlerAcceptFriendship(IClientAPI sender, Packet Pack) | ||
4693 | { | ||
4694 | AcceptFriendshipPacket afriendpack = (AcceptFriendshipPacket)Pack; | ||
4695 | |||
4696 | #region Packet Session and User Check | ||
4697 | if (m_checkPackets) | ||
4698 | { | ||
4699 | if (afriendpack.AgentData.SessionID != SessionId || | ||
4700 | afriendpack.AgentData.AgentID != AgentId) | ||
4701 | return true; | ||
4702 | } | ||
4703 | #endregion | ||
4704 | |||
4705 | // My guess is this is the folder to stick the calling card into | ||
4706 | List<UUID> callingCardFolders = new List<UUID>(); | ||
4707 | |||
4708 | UUID agentID = afriendpack.AgentData.AgentID; | ||
4709 | UUID transactionID = afriendpack.TransactionBlock.TransactionID; | ||
4710 | |||
4711 | for (int fi = 0; fi < afriendpack.FolderData.Length; fi++) | ||
4712 | { | ||
4713 | callingCardFolders.Add(afriendpack.FolderData[fi].FolderID); | ||
4714 | } | ||
4715 | |||
4716 | FriendActionDelegate handlerApproveFriendRequest = OnApproveFriendRequest; | ||
4717 | if (handlerApproveFriendRequest != null) | ||
4718 | { | ||
4719 | handlerApproveFriendRequest(this, agentID, transactionID, callingCardFolders); | ||
4720 | } | ||
4721 | return true; | ||
4722 | |||
4723 | } | ||
4724 | |||
4725 | private bool HandlerDeclineFriendship(IClientAPI sender, Packet Pack) | ||
4726 | { | ||
4727 | DeclineFriendshipPacket dfriendpack = (DeclineFriendshipPacket)Pack; | ||
4728 | |||
4729 | #region Packet Session and User Check | ||
4730 | if (m_checkPackets) | ||
4731 | { | ||
4732 | if (dfriendpack.AgentData.SessionID != SessionId || | ||
4733 | dfriendpack.AgentData.AgentID != AgentId) | ||
4734 | return true; | ||
4735 | } | ||
4736 | #endregion | ||
4737 | |||
4738 | if (OnDenyFriendRequest != null) | ||
4739 | { | ||
4740 | OnDenyFriendRequest(this, | ||
4741 | dfriendpack.AgentData.AgentID, | ||
4742 | dfriendpack.TransactionBlock.TransactionID, | ||
4743 | null); | ||
4744 | } | ||
4745 | return true; | ||
4746 | } | ||
4747 | |||
4748 | private bool HandlerTerminateFrendship(IClientAPI sender, Packet Pack) | ||
4749 | { | ||
4750 | TerminateFriendshipPacket tfriendpack = (TerminateFriendshipPacket)Pack; | ||
4751 | |||
4752 | #region Packet Session and User Check | ||
4753 | if (m_checkPackets) | ||
4754 | { | ||
4755 | if (tfriendpack.AgentData.SessionID != SessionId || | ||
4756 | tfriendpack.AgentData.AgentID != AgentId) | ||
4757 | return true; | ||
4758 | } | ||
4759 | #endregion | ||
4760 | |||
4761 | UUID listOwnerAgentID = tfriendpack.AgentData.AgentID; | ||
4762 | UUID exFriendID = tfriendpack.ExBlock.OtherID; | ||
4763 | |||
4764 | FriendshipTermination handlerTerminateFriendship = OnTerminateFriendship; | ||
4765 | if (handlerTerminateFriendship != null) | ||
4766 | { | ||
4767 | handlerTerminateFriendship(this, listOwnerAgentID, exFriendID); | ||
4768 | } | ||
4769 | return true; | ||
4770 | } | ||
4771 | |||
4772 | private bool HandlerRezObject(IClientAPI sender, Packet Pack) | ||
4773 | { | ||
4774 | RezObjectPacket rezPacket = (RezObjectPacket)Pack; | ||
4775 | |||
4776 | #region Packet Session and User Check | ||
4777 | if (m_checkPackets) | ||
4778 | { | ||
4779 | if (rezPacket.AgentData.SessionID != SessionId || | ||
4780 | rezPacket.AgentData.AgentID != AgentId) | ||
4781 | return true; | ||
4782 | } | ||
4783 | #endregion | ||
4784 | |||
4785 | RezObject handlerRezObject = OnRezObject; | ||
4786 | if (handlerRezObject != null) | ||
4787 | { | ||
4788 | handlerRezObject(this, rezPacket.InventoryData.ItemID, rezPacket.RezData.RayEnd, | ||
4789 | rezPacket.RezData.RayStart, rezPacket.RezData.RayTargetID, | ||
4790 | rezPacket.RezData.BypassRaycast, rezPacket.RezData.RayEndIsIntersection, | ||
4791 | rezPacket.RezData.RezSelected, rezPacket.RezData.RemoveItem, | ||
4792 | rezPacket.RezData.FromTaskID); | ||
4793 | } | ||
4794 | return true; | ||
4795 | } | ||
4796 | |||
4797 | private bool HandlerDeRezObject(IClientAPI sender, Packet Pack) | ||
4798 | { | ||
4799 | DeRezObjectPacket DeRezPacket = (DeRezObjectPacket)Pack; | ||
4800 | |||
4801 | #region Packet Session and User Check | ||
4802 | if (m_checkPackets) | ||
4803 | { | ||
4804 | if (DeRezPacket.AgentData.SessionID != SessionId || | ||
4805 | DeRezPacket.AgentData.AgentID != AgentId) | ||
4806 | return true; | ||
4807 | } | ||
4808 | #endregion | ||
4809 | |||
4810 | DeRezObject handlerDeRezObject = OnDeRezObject; | ||
4811 | if (handlerDeRezObject != null) | ||
4812 | { | ||
4813 | List<uint> deRezIDs = new List<uint>(); | ||
4814 | |||
4815 | foreach (DeRezObjectPacket.ObjectDataBlock data in | ||
4816 | DeRezPacket.ObjectData) | ||
4817 | { | ||
4818 | deRezIDs.Add(data.ObjectLocalID); | ||
4819 | } | ||
4820 | // It just so happens that the values on the DeRezAction enumerator match the Destination | ||
4821 | // values given by a Second Life client | ||
4822 | handlerDeRezObject(this, deRezIDs, | ||
4823 | DeRezPacket.AgentBlock.GroupID, | ||
4824 | (DeRezAction)DeRezPacket.AgentBlock.Destination, | ||
4825 | DeRezPacket.AgentBlock.DestinationID); | ||
4826 | |||
4827 | } | ||
4828 | return true; | ||
4829 | } | ||
4830 | |||
4831 | private bool HandlerModifyLand(IClientAPI sender, Packet Pack) | ||
4832 | { | ||
4833 | ModifyLandPacket modify = (ModifyLandPacket)Pack; | ||
4834 | |||
4835 | #region Packet Session and User Check | ||
4836 | if (m_checkPackets) | ||
4837 | { | ||
4838 | if (modify.AgentData.SessionID != SessionId || | ||
4839 | modify.AgentData.AgentID != AgentId) | ||
4840 | return true; | ||
4841 | } | ||
4842 | |||
4843 | #endregion | ||
4844 | //m_log.Info("[LAND]: LAND:" + modify.ToString()); | ||
4845 | if (modify.ParcelData.Length > 0) | ||
4846 | { | ||
4847 | if (OnModifyTerrain != null) | ||
4848 | { | ||
4849 | for (int i = 0; i < modify.ParcelData.Length; i++) | ||
4850 | { | ||
4851 | ModifyTerrain handlerModifyTerrain = OnModifyTerrain; | ||
4852 | if (handlerModifyTerrain != null) | ||
4853 | { | ||
4854 | handlerModifyTerrain(AgentId, modify.ModifyBlock.Height, modify.ModifyBlock.Seconds, | ||
4855 | modify.ModifyBlock.BrushSize, | ||
4856 | modify.ModifyBlock.Action, modify.ParcelData[i].North, | ||
4857 | modify.ParcelData[i].West, modify.ParcelData[i].South, | ||
4858 | modify.ParcelData[i].East, AgentId); | ||
4859 | } | ||
4860 | } | ||
4861 | } | ||
4862 | } | ||
4863 | |||
4864 | return true; | ||
4865 | } | ||
4866 | |||
4867 | private bool HandlerRegionHandshakeReply(IClientAPI sender, Packet Pack) | ||
4868 | { | ||
4869 | Action<IClientAPI> handlerRegionHandShakeReply = OnRegionHandShakeReply; | ||
4870 | if (handlerRegionHandShakeReply != null) | ||
4871 | { | ||
4872 | handlerRegionHandShakeReply(this); | ||
4873 | } | ||
4874 | |||
4875 | return true; | ||
4876 | } | ||
4877 | |||
4878 | private bool HandlerAgentWearablesRequest(IClientAPI sender, Packet Pack) | ||
4879 | { | ||
4880 | GenericCall2 handlerRequestWearables = OnRequestWearables; | ||
4881 | |||
4882 | if (handlerRequestWearables != null) | ||
4883 | { | ||
4884 | handlerRequestWearables(); | ||
4885 | } | ||
4886 | |||
4887 | Action<IClientAPI> handlerRequestAvatarsData = OnRequestAvatarsData; | ||
4888 | |||
4889 | if (handlerRequestAvatarsData != null) | ||
4890 | { | ||
4891 | handlerRequestAvatarsData(this); | ||
4892 | } | ||
4893 | |||
4894 | return true; | ||
4895 | } | ||
4896 | |||
4897 | private bool HandlerAgentSetAppearance(IClientAPI sender, Packet Pack) | ||
4898 | { | ||
4899 | AgentSetAppearancePacket appear = (AgentSetAppearancePacket)Pack; | ||
4900 | |||
4901 | #region Packet Session and User Check | ||
4902 | if (m_checkPackets) | ||
4903 | { | ||
4904 | if (appear.AgentData.SessionID != SessionId || | ||
4905 | appear.AgentData.AgentID != AgentId) | ||
4906 | return true; | ||
4907 | } | ||
4908 | #endregion | ||
4909 | |||
4910 | SetAppearance handlerSetAppearance = OnSetAppearance; | ||
4911 | if (handlerSetAppearance != null) | ||
4912 | { | ||
4913 | // Temporarily protect ourselves from the mantis #951 failure. | ||
4914 | // However, we could do this for several other handlers where a failure isn't terminal | ||
4915 | // for the client session anyway, in order to protect ourselves against bad code in plugins | ||
4916 | try | ||
4917 | { | ||
4918 | byte[] visualparams = new byte[appear.VisualParam.Length]; | ||
4919 | for (int i = 0; i < appear.VisualParam.Length; i++) | ||
4920 | visualparams[i] = appear.VisualParam[i].ParamValue; | ||
4921 | |||
4922 | Primitive.TextureEntry te = null; | ||
4923 | if (appear.ObjectData.TextureEntry.Length > 1) | ||
4924 | te = new Primitive.TextureEntry(appear.ObjectData.TextureEntry, 0, appear.ObjectData.TextureEntry.Length); | ||
4925 | |||
4926 | handlerSetAppearance(te, visualparams); | ||
4927 | } | ||
4928 | catch (Exception e) | ||
4929 | { | ||
4930 | m_log.ErrorFormat( | ||
4931 | "[CLIENT VIEW]: AgentSetApperance packet handler threw an exception, {0}", | ||
4932 | e); | ||
4933 | } | ||
4934 | } | ||
4935 | |||
4936 | return true; | ||
4937 | } | ||
4938 | |||
4939 | private bool HandlerAgentIsNowWearing(IClientAPI sender, Packet Pack) | ||
4940 | { | ||
4941 | if (OnAvatarNowWearing != null) | ||
4942 | { | ||
4943 | AgentIsNowWearingPacket nowWearing = (AgentIsNowWearingPacket)Pack; | ||
4944 | |||
4945 | #region Packet Session and User Check | ||
4946 | if (m_checkPackets) | ||
4947 | { | ||
4948 | if (nowWearing.AgentData.SessionID != SessionId || | ||
4949 | nowWearing.AgentData.AgentID != AgentId) | ||
4950 | return true; | ||
4951 | } | ||
4952 | #endregion | ||
4953 | |||
4954 | AvatarWearingArgs wearingArgs = new AvatarWearingArgs(); | ||
4955 | for (int i = 0; i < nowWearing.WearableData.Length; i++) | ||
4956 | { | ||
4957 | AvatarWearingArgs.Wearable wearable = | ||
4958 | new AvatarWearingArgs.Wearable(nowWearing.WearableData[i].ItemID, | ||
4959 | nowWearing.WearableData[i].WearableType); | ||
4960 | wearingArgs.NowWearing.Add(wearable); | ||
4961 | } | ||
4962 | |||
4963 | AvatarNowWearing handlerAvatarNowWearing = OnAvatarNowWearing; | ||
4964 | if (handlerAvatarNowWearing != null) | ||
4965 | { | ||
4966 | handlerAvatarNowWearing(this, wearingArgs); | ||
4967 | } | ||
4968 | } | ||
4969 | return true; | ||
4970 | } | ||
4971 | |||
4972 | private bool HandlerRezSingleAttachmentFromInv(IClientAPI sender, Packet Pack) | ||
4973 | { | ||
4974 | RezSingleAttachmentFromInv handlerRezSingleAttachment = OnRezSingleAttachmentFromInv; | ||
4975 | if (handlerRezSingleAttachment != null) | ||
4976 | { | ||
4977 | RezSingleAttachmentFromInvPacket rez = (RezSingleAttachmentFromInvPacket)Pack; | ||
4978 | |||
4979 | #region Packet Session and User Check | ||
4980 | if (m_checkPackets) | ||
4981 | { | ||
4982 | if (rez.AgentData.SessionID != SessionId || | ||
4983 | rez.AgentData.AgentID != AgentId) | ||
4984 | return true; | ||
4985 | } | ||
4986 | #endregion | ||
4987 | |||
4988 | handlerRezSingleAttachment(this, rez.ObjectData.ItemID, | ||
4989 | rez.ObjectData.AttachmentPt); | ||
4990 | } | ||
4991 | |||
4992 | return true; | ||
4993 | } | ||
4994 | |||
4995 | private bool HandleRezMultipleAttachmentsFromInv(IClientAPI sender, Packet Pack) | ||
4996 | { | ||
4997 | RezMultipleAttachmentsFromInv handlerRezMultipleAttachments = OnRezMultipleAttachmentsFromInv; | ||
4998 | if (handlerRezMultipleAttachments != null) | ||
4999 | { | ||
5000 | RezMultipleAttachmentsFromInvPacket rez = (RezMultipleAttachmentsFromInvPacket)Pack; | ||
5001 | handlerRezMultipleAttachments(this, rez.HeaderData, | ||
5002 | rez.ObjectData); | ||
5003 | } | ||
5004 | |||
5005 | return true; | ||
5006 | } | ||
5007 | |||
5008 | private bool HandleDetachAttachmentIntoInv(IClientAPI sender, Packet Pack) | ||
5009 | { | ||
5010 | UUIDNameRequest handlerDetachAttachmentIntoInv = OnDetachAttachmentIntoInv; | ||
5011 | if (handlerDetachAttachmentIntoInv != null) | ||
5012 | { | ||
5013 | DetachAttachmentIntoInvPacket detachtoInv = (DetachAttachmentIntoInvPacket)Pack; | ||
5014 | |||
5015 | #region Packet Session and User Check | ||
5016 | // UNSUPPORTED ON THIS PACKET | ||
5017 | #endregion | ||
5018 | |||
5019 | UUID itemID = detachtoInv.ObjectData.ItemID; | ||
5020 | // UUID ATTACH_agentID = detachtoInv.ObjectData.AgentID; | ||
5021 | |||
5022 | handlerDetachAttachmentIntoInv(itemID, this); | ||
5023 | } | ||
5024 | return true; | ||
5025 | } | ||
5026 | |||
5027 | private bool HandleObjectAttach(IClientAPI sender, Packet Pack) | ||
5028 | { | ||
5029 | if (OnObjectAttach != null) | ||
5030 | { | ||
5031 | ObjectAttachPacket att = (ObjectAttachPacket)Pack; | ||
5032 | |||
5033 | #region Packet Session and User Check | ||
5034 | if (m_checkPackets) | ||
5035 | { | ||
5036 | if (att.AgentData.SessionID != SessionId || | ||
5037 | att.AgentData.AgentID != AgentId) | ||
5038 | return true; | ||
5039 | } | ||
5040 | #endregion | ||
5041 | |||
5042 | ObjectAttach handlerObjectAttach = OnObjectAttach; | ||
5043 | |||
5044 | if (handlerObjectAttach != null) | ||
5045 | { | ||
5046 | if (att.ObjectData.Length > 0) | ||
5047 | { | ||
5048 | handlerObjectAttach(this, att.ObjectData[0].ObjectLocalID, att.AgentData.AttachmentPoint, att.ObjectData[0].Rotation, false); | ||
5049 | } | ||
5050 | } | ||
5051 | } | ||
5052 | return true; | ||
5053 | } | ||
5054 | |||
5055 | private bool HandleObjectDetach(IClientAPI sender, Packet Pack) | ||
5056 | { | ||
5057 | ObjectDetachPacket dett = (ObjectDetachPacket)Pack; | ||
5058 | |||
5059 | #region Packet Session and User Check | ||
5060 | if (m_checkPackets) | ||
5061 | { | ||
5062 | if (dett.AgentData.SessionID != SessionId || | ||
5063 | dett.AgentData.AgentID != AgentId) | ||
5064 | return true; | ||
5065 | } | ||
5066 | #endregion | ||
5067 | |||
5068 | for (int j = 0; j < dett.ObjectData.Length; j++) | ||
5069 | { | ||
5070 | uint obj = dett.ObjectData[j].ObjectLocalID; | ||
5071 | ObjectDeselect handlerObjectDetach = OnObjectDetach; | ||
5072 | if (handlerObjectDetach != null) | ||
5073 | { | ||
5074 | handlerObjectDetach(obj, this); | ||
5075 | } | ||
5076 | |||
5077 | } | ||
5078 | return true; | ||
5079 | } | ||
5080 | |||
5081 | private bool HandleObjectDrop(IClientAPI sender, Packet Pack) | ||
5082 | { | ||
5083 | ObjectDropPacket dropp = (ObjectDropPacket)Pack; | ||
5084 | |||
5085 | #region Packet Session and User Check | ||
5086 | if (m_checkPackets) | ||
5087 | { | ||
5088 | if (dropp.AgentData.SessionID != SessionId || | ||
5089 | dropp.AgentData.AgentID != AgentId) | ||
5090 | return true; | ||
5091 | } | ||
5092 | #endregion | ||
5093 | |||
5094 | for (int j = 0; j < dropp.ObjectData.Length; j++) | ||
5095 | { | ||
5096 | uint obj = dropp.ObjectData[j].ObjectLocalID; | ||
5097 | ObjectDrop handlerObjectDrop = OnObjectDrop; | ||
5098 | if (handlerObjectDrop != null) | ||
5099 | { | ||
5100 | handlerObjectDrop(obj, this); | ||
5101 | } | ||
5102 | } | ||
5103 | return true; | ||
5104 | } | ||
5105 | |||
5106 | private bool HandleSetAlwaysRun(IClientAPI sender, Packet Pack) | ||
5107 | { | ||
5108 | SetAlwaysRunPacket run = (SetAlwaysRunPacket)Pack; | ||
5109 | |||
5110 | #region Packet Session and User Check | ||
5111 | if (m_checkPackets) | ||
5112 | { | ||
5113 | if (run.AgentData.SessionID != SessionId || | ||
5114 | run.AgentData.AgentID != AgentId) | ||
5115 | return true; | ||
5116 | } | ||
5117 | #endregion | ||
5118 | |||
5119 | SetAlwaysRun handlerSetAlwaysRun = OnSetAlwaysRun; | ||
5120 | if (handlerSetAlwaysRun != null) | ||
5121 | handlerSetAlwaysRun(this, run.AgentData.AlwaysRun); | ||
5122 | |||
5123 | return true; | ||
5124 | } | ||
5125 | |||
5126 | private bool HandleCompleteAgentMovement(IClientAPI sender, Packet Pack) | ||
5127 | { | ||
5128 | GenericCall2 handlerCompleteMovementToRegion = OnCompleteMovementToRegion; | ||
5129 | if (handlerCompleteMovementToRegion != null) | ||
5130 | { | ||
5131 | handlerCompleteMovementToRegion(); | ||
5132 | } | ||
5133 | handlerCompleteMovementToRegion = null; | ||
5134 | |||
5135 | return true; | ||
5136 | } | ||
5137 | |||
5138 | private bool HandleAgentAnimation(IClientAPI sender, Packet Pack) | ||
5139 | { | ||
5140 | AgentAnimationPacket AgentAni = (AgentAnimationPacket)Pack; | ||
5141 | |||
5142 | #region Packet Session and User Check | ||
5143 | if (m_checkPackets) | ||
5144 | { | ||
5145 | if (AgentAni.AgentData.SessionID != SessionId || | ||
5146 | AgentAni.AgentData.AgentID != AgentId) | ||
5147 | return true; | ||
5148 | } | ||
5149 | #endregion | ||
5150 | |||
5151 | StartAnim handlerStartAnim = null; | ||
5152 | StopAnim handlerStopAnim = null; | ||
5153 | |||
5154 | for (int i = 0; i < AgentAni.AnimationList.Length; i++) | ||
5155 | { | ||
5156 | if (AgentAni.AnimationList[i].StartAnim) | ||
5157 | { | ||
5158 | handlerStartAnim = OnStartAnim; | ||
5159 | if (handlerStartAnim != null) | ||
5160 | { | ||
5161 | handlerStartAnim(this, AgentAni.AnimationList[i].AnimID); | ||
5162 | } | ||
5163 | } | ||
5164 | else | ||
5165 | { | ||
5166 | handlerStopAnim = OnStopAnim; | ||
5167 | if (handlerStopAnim != null) | ||
5168 | { | ||
5169 | handlerStopAnim(this, AgentAni.AnimationList[i].AnimID); | ||
5170 | } | ||
5171 | } | ||
5172 | } | ||
5173 | return true; | ||
5174 | } | ||
5175 | |||
5176 | private bool HandleAgentRequestSit(IClientAPI sender, Packet Pack) | ||
5177 | { | ||
5178 | if (OnAgentRequestSit != null) | ||
5179 | { | ||
5180 | AgentRequestSitPacket agentRequestSit = (AgentRequestSitPacket)Pack; | ||
5181 | |||
5182 | #region Packet Session and User Check | ||
5183 | if (m_checkPackets) | ||
5184 | { | ||
5185 | if (agentRequestSit.AgentData.SessionID != SessionId || | ||
5186 | agentRequestSit.AgentData.AgentID != AgentId) | ||
5187 | return true; | ||
5188 | } | ||
5189 | #endregion | ||
5190 | |||
5191 | AgentRequestSit handlerAgentRequestSit = OnAgentRequestSit; | ||
5192 | if (handlerAgentRequestSit != null) | ||
5193 | handlerAgentRequestSit(this, agentRequestSit.AgentData.AgentID, | ||
5194 | agentRequestSit.TargetObject.TargetID, agentRequestSit.TargetObject.Offset); | ||
5195 | } | ||
5196 | return true; | ||
5197 | } | ||
5198 | |||
5199 | private bool HandleAgentSit(IClientAPI sender, Packet Pack) | ||
5200 | { | ||
5201 | if (OnAgentSit != null) | ||
5202 | { | ||
5203 | AgentSitPacket agentSit = (AgentSitPacket)Pack; | ||
5204 | |||
5205 | #region Packet Session and User Check | ||
5206 | if (m_checkPackets) | ||
5207 | { | ||
5208 | if (agentSit.AgentData.SessionID != SessionId || | ||
5209 | agentSit.AgentData.AgentID != AgentId) | ||
5210 | return true; | ||
5211 | } | ||
5212 | #endregion | ||
5213 | |||
5214 | AgentSit handlerAgentSit = OnAgentSit; | ||
5215 | if (handlerAgentSit != null) | ||
5216 | { | ||
5217 | OnAgentSit(this, agentSit.AgentData.AgentID); | ||
5218 | } | ||
5219 | } | ||
5220 | return true; | ||
5221 | } | ||
5222 | |||
5223 | private bool HandleSoundTrigger(IClientAPI sender, Packet Pack) | ||
5224 | { | ||
5225 | SoundTriggerPacket soundTriggerPacket = (SoundTriggerPacket)Pack; | ||
5226 | |||
5227 | #region Packet Session and User Check | ||
5228 | if (m_checkPackets) | ||
5229 | { | ||
5230 | // UNSUPPORTED ON THIS PACKET | ||
5231 | } | ||
5232 | #endregion | ||
5233 | |||
5234 | SoundTrigger handlerSoundTrigger = OnSoundTrigger; | ||
5235 | if (handlerSoundTrigger != null) | ||
5236 | { | ||
5237 | handlerSoundTrigger(soundTriggerPacket.SoundData.SoundID, soundTriggerPacket.SoundData.OwnerID, | ||
5238 | soundTriggerPacket.SoundData.ObjectID, soundTriggerPacket.SoundData.ParentID, | ||
5239 | soundTriggerPacket.SoundData.Gain, soundTriggerPacket.SoundData.Position, | ||
5240 | soundTriggerPacket.SoundData.Handle); | ||
5241 | |||
5242 | } | ||
5243 | return true; | ||
5244 | } | ||
5245 | |||
5246 | |||
4500 | #endregion Packet Handlers | 5247 | #endregion Packet Handlers |
4501 | 5248 | ||
4502 | public void SendScriptQuestion(UUID taskID, string taskName, string ownerName, UUID itemID, int question) | 5249 | public void SendScriptQuestion(UUID taskID, string taskName, string ownerName, UUID itemID, int question) |
@@ -4988,13 +5735,12 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4988 | return; | 5735 | return; |
4989 | } | 5736 | } |
4990 | 5737 | ||
4991 | const bool m_checkPackets = true; | ||
4992 | |||
4993 | // Main packet processing conditional | 5738 | // Main packet processing conditional |
4994 | switch (Pack.Type) | 5739 | switch (Pack.Type) |
4995 | { | 5740 | { |
4996 | #region Scene/Avatar | 5741 | #region Scene/Avatar |
4997 | 5742 | #region CommentedOut | |
5743 | /* | ||
4998 | case PacketType.AvatarPropertiesRequest: | 5744 | case PacketType.AvatarPropertiesRequest: |
4999 | AvatarPropertiesRequestPacket avatarProperties = (AvatarPropertiesRequestPacket)Pack; | 5745 | AvatarPropertiesRequestPacket avatarProperties = (AvatarPropertiesRequestPacket)Pack; |
5000 | 5746 | ||
@@ -5656,7 +6402,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
5656 | 6402 | ||
5657 | } | 6403 | } |
5658 | break; | 6404 | break; |
5659 | 6405 | */ | |
6406 | #endregion | ||
5660 | case PacketType.AvatarPickerRequest: | 6407 | case PacketType.AvatarPickerRequest: |
5661 | AvatarPickerRequestPacket avRequestQuery = (AvatarPickerRequestPacket)Pack; | 6408 | AvatarPickerRequestPacket avRequestQuery = (AvatarPickerRequestPacket)Pack; |
5662 | 6409 | ||
@@ -9713,7 +10460,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
9713 | Utils.BytesToString(avatarInterestUpdate.PropertiesData.SkillsText), | 10460 | Utils.BytesToString(avatarInterestUpdate.PropertiesData.SkillsText), |
9714 | Utils.BytesToString(avatarInterestUpdate.PropertiesData.LanguagesText)); | 10461 | Utils.BytesToString(avatarInterestUpdate.PropertiesData.LanguagesText)); |
9715 | break; | 10462 | break; |
9716 | 10463 | ||
9717 | case PacketType.GrantUserRights: | 10464 | case PacketType.GrantUserRights: |
9718 | GrantUserRightsPacket GrantUserRights = | 10465 | GrantUserRightsPacket GrantUserRights = |
9719 | (GrantUserRightsPacket)Pack; | 10466 | (GrantUserRightsPacket)Pack; |
@@ -9732,7 +10479,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
9732 | GrantUserRights.Rights[0].AgentRelated, | 10479 | GrantUserRights.Rights[0].AgentRelated, |
9733 | GrantUserRights.Rights[0].RelatedRights); | 10480 | GrantUserRights.Rights[0].RelatedRights); |
9734 | break; | 10481 | break; |
9735 | 10482 | ||
9736 | case PacketType.PlacesQuery: | 10483 | case PacketType.PlacesQuery: |
9737 | PlacesQueryPacket placesQueryPacket = | 10484 | PlacesQueryPacket placesQueryPacket = |
9738 | (PlacesQueryPacket)Pack; | 10485 | (PlacesQueryPacket)Pack; |
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs index 0b05ed9..98bb4f7 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs | |||
@@ -571,23 +571,24 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
571 | //Sorry, i know it's not optimal, but until the LL client | 571 | //Sorry, i know it's not optimal, but until the LL client |
572 | //manages packets correctly and re-orders them as required, this is necessary. | 572 | //manages packets correctly and re-orders them as required, this is necessary. |
573 | 573 | ||
574 | if (outgoingPacket.Type == PacketType.ImprovedTerseObjectUpdate | 574 | |
575 | || outgoingPacket.Type == PacketType.ChatFromSimulator | 575 | // Put the UDP payload on the wire |
576 | || outgoingPacket.Type == PacketType.ObjectUpdate | 576 | if (outgoingPacket.Type == PacketType.ImprovedTerseObjectUpdate) |
577 | || outgoingPacket.Type == PacketType.LayerData) | ||
578 | { | 577 | { |
579 | sendSynchronous = true; | 578 | SyncBeginPrioritySend(buffer, 2); // highest priority |
580 | } | 579 | } |
581 | 580 | else if (outgoingPacket.Type == PacketType.ObjectUpdate | |
582 | // Put the UDP payload on the wire | 581 | || outgoingPacket.Type == PacketType.LayerData) |
583 | if (sendSynchronous == true) | ||
584 | { | 582 | { |
585 | SyncBeginSend(buffer); | 583 | SyncBeginPrioritySend(buffer, 1); // medium priority |
586 | } | 584 | } |
587 | else | 585 | else |
588 | { | 586 | { |
589 | AsyncBeginSend(buffer); | 587 | SyncBeginPrioritySend(buffer, 0); // normal priority |
590 | } | 588 | } |
589 | |||
590 | //AsyncBeginSend(buffer); | ||
591 | |||
591 | // Keep track of when this packet was sent out (right now) | 592 | // Keep track of when this packet was sent out (right now) |
592 | outgoingPacket.TickCount = Environment.TickCount & Int32.MaxValue; | 593 | outgoingPacket.TickCount = Environment.TickCount & Int32.MaxValue; |
593 | } | 594 | } |
@@ -862,7 +863,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
862 | 863 | ||
863 | Buffer.BlockCopy(packetData, 0, buffer.Data, 0, length); | 864 | Buffer.BlockCopy(packetData, 0, buffer.Data, 0, length); |
864 | 865 | ||
865 | AsyncBeginSend(buffer); | 866 | SyncBeginPrioritySend(buffer, 1); //Setting this to a medium priority should help minimise resends |
866 | } | 867 | } |
867 | 868 | ||
868 | private bool IsClientAuthorized(UseCircuitCodePacket useCircuitCode, out AuthenticateResponse sessionInfo) | 869 | private bool IsClientAuthorized(UseCircuitCodePacket useCircuitCode, out AuthenticateResponse sessionInfo) |
diff --git a/OpenSim/Region/ClientStack/LindenUDP/OpenSimUDPBase.cs b/OpenSim/Region/ClientStack/LindenUDP/OpenSimUDPBase.cs index 63579ac..de2cd24 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/OpenSimUDPBase.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/OpenSimUDPBase.cs | |||
@@ -29,6 +29,7 @@ using System; | |||
29 | using System.Net; | 29 | using System.Net; |
30 | using System.Net.Sockets; | 30 | using System.Net.Sockets; |
31 | using System.Threading; | 31 | using System.Threading; |
32 | using System.Collections.Generic; | ||
32 | using log4net; | 33 | using log4net; |
33 | 34 | ||
34 | namespace OpenMetaverse | 35 | namespace OpenMetaverse |
@@ -52,12 +53,30 @@ namespace OpenMetaverse | |||
52 | /// <summary>Local IP address to bind to in server mode</summary> | 53 | /// <summary>Local IP address to bind to in server mode</summary> |
53 | protected IPAddress m_localBindAddress; | 54 | protected IPAddress m_localBindAddress; |
54 | 55 | ||
56 | /// <summary> | ||
57 | /// Standard queue for our outgoing SyncBeginPrioritySend | ||
58 | /// </summary> | ||
59 | private List<UDPPacketBuffer> m_standardQueue = new List<UDPPacketBuffer>(); | ||
60 | |||
61 | /// <summary> | ||
62 | /// Medium priority queue for our outgoing SyncBeginPrioritySend | ||
63 | /// </summary> | ||
64 | private List<UDPPacketBuffer> m_mediumPriorityQueue = new List<UDPPacketBuffer>(); | ||
65 | |||
66 | /// <summary> | ||
67 | /// Prioritised queue for our outgoing SyncBeginPrioritySend | ||
68 | /// </summary> | ||
69 | private List<UDPPacketBuffer> m_priorityQueue = new List<UDPPacketBuffer>(); | ||
70 | |||
55 | /// <summary>UDP socket, used in either client or server mode</summary> | 71 | /// <summary>UDP socket, used in either client or server mode</summary> |
56 | private Socket m_udpSocket; | 72 | private Socket m_udpSocket; |
57 | 73 | ||
58 | /// <summary>Flag to process packets asynchronously or synchronously</summary> | 74 | /// <summary>Flag to process packets asynchronously or synchronously</summary> |
59 | private bool m_asyncPacketHandling; | 75 | private bool m_asyncPacketHandling; |
60 | 76 | ||
77 | /// <summary>Are we currently sending data asynchronously?</summary> | ||
78 | private volatile bool m_sendingData = false; | ||
79 | |||
61 | /// <summary>The all important shutdown flag</summary> | 80 | /// <summary>The all important shutdown flag</summary> |
62 | private volatile bool m_shutdownFlag = true; | 81 | private volatile bool m_shutdownFlag = true; |
63 | 82 | ||
@@ -246,25 +265,51 @@ namespace OpenMetaverse | |||
246 | } | 265 | } |
247 | } | 266 | } |
248 | 267 | ||
249 | public void SyncBeginSend(UDPPacketBuffer buf) | 268 | public void SyncBeginPrioritySend(UDPPacketBuffer buf, int Priority) |
250 | { | 269 | { |
251 | if (!m_shutdownFlag) | 270 | if (!m_shutdownFlag) |
252 | { | 271 | { |
253 | try | 272 | if (!m_sendingData) |
254 | { | 273 | { |
255 | m_udpSocket.SendTo( | 274 | m_sendingData = true; |
256 | buf.Data, | 275 | try |
257 | 0, | 276 | { |
258 | buf.DataLength, | 277 | AsyncBeginSend(buf); |
259 | SocketFlags.None, | 278 | } |
260 | buf.RemoteEndPoint); | 279 | catch (SocketException) { } |
280 | catch (ObjectDisposedException) { } | ||
281 | } | ||
282 | else | ||
283 | { | ||
284 | if (Priority == 2) | ||
285 | { | ||
286 | lock (m_priorityQueue) | ||
287 | { | ||
288 | m_priorityQueue.Add(buf); | ||
289 | } | ||
290 | } | ||
291 | else | ||
292 | { | ||
293 | if (Priority != 0) | ||
294 | { | ||
295 | lock (m_mediumPriorityQueue) | ||
296 | { | ||
297 | m_mediumPriorityQueue.Add(buf); | ||
298 | } | ||
299 | } | ||
300 | else | ||
301 | { | ||
302 | lock (m_standardQueue) | ||
303 | { | ||
304 | m_standardQueue.Add(buf); | ||
305 | } | ||
306 | } | ||
307 | } | ||
261 | } | 308 | } |
262 | catch (SocketException) { } | ||
263 | catch (ObjectDisposedException) { } | ||
264 | } | 309 | } |
265 | } | 310 | } |
266 | 311 | ||
267 | public void AsyncBeginSend(UDPPacketBuffer buf) | 312 | private void AsyncBeginSend(UDPPacketBuffer buf) |
268 | { | 313 | { |
269 | if (!m_shutdownFlag) | 314 | if (!m_shutdownFlag) |
270 | { | 315 | { |
@@ -288,8 +333,48 @@ namespace OpenMetaverse | |||
288 | { | 333 | { |
289 | try | 334 | try |
290 | { | 335 | { |
291 | // UDPPacketBuffer buf = (UDPPacketBuffer)result.AsyncState; | ||
292 | m_udpSocket.EndSendTo(result); | 336 | m_udpSocket.EndSendTo(result); |
337 | |||
338 | if (m_sendingData) | ||
339 | { | ||
340 | lock (m_priorityQueue) | ||
341 | { | ||
342 | if (m_priorityQueue.Count > 0) | ||
343 | { | ||
344 | UDPPacketBuffer buf = m_priorityQueue[0]; | ||
345 | m_priorityQueue.RemoveAt(0); | ||
346 | AsyncBeginSend(buf); | ||
347 | } | ||
348 | else | ||
349 | { | ||
350 | lock (m_mediumPriorityQueue) | ||
351 | { | ||
352 | if (m_mediumPriorityQueue.Count > 0) | ||
353 | { | ||
354 | UDPPacketBuffer buf = m_mediumPriorityQueue[0]; | ||
355 | m_mediumPriorityQueue.RemoveAt(0); | ||
356 | AsyncBeginSend(buf); | ||
357 | } | ||
358 | else | ||
359 | { | ||
360 | lock (m_standardQueue) | ||
361 | { | ||
362 | if (m_standardQueue.Count > 0) | ||
363 | { | ||
364 | UDPPacketBuffer buf = m_standardQueue[0]; | ||
365 | m_standardQueue.RemoveAt(0); | ||
366 | AsyncBeginSend(buf); | ||
367 | } | ||
368 | else | ||
369 | { | ||
370 | m_sendingData = false; | ||
371 | } | ||
372 | } | ||
373 | } | ||
374 | } | ||
375 | } | ||
376 | } | ||
377 | } | ||
293 | } | 378 | } |
294 | catch (SocketException) { } | 379 | catch (SocketException) { } |
295 | catch (ObjectDisposedException) { } | 380 | catch (ObjectDisposedException) { } |
diff --git a/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs b/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs index bb4e032..d6a82ef 100644 --- a/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs | |||
@@ -395,7 +395,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends | |||
395 | 395 | ||
396 | // if it leaves, we want to know, too | 396 | // if it leaves, we want to know, too |
397 | client.OnLogout += OnLogout; | 397 | client.OnLogout += OnLogout; |
398 | client.OnGrantUserRights += GrantUserFriendRights; | 398 | client.OnGrantUserRights += GrantUserFriendRights; |
399 | 399 | ||
400 | } | 400 | } |
401 | 401 | ||
@@ -1112,8 +1112,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends | |||
1112 | } | 1112 | } |
1113 | private void GrantUserFriendRights(IClientAPI remoteClient, UUID requester, UUID target, int rights) | 1113 | private void GrantUserFriendRights(IClientAPI remoteClient, UUID requester, UUID target, int rights) |
1114 | { | 1114 | { |
1115 | ((Scene)remoteClient.Scene).CommsManager.UpdateUserFriendPerms(requester, target, (uint)rights); | 1115 | ((Scene)remoteClient.Scene).CommsManager.UpdateUserFriendPerms(requester, target, (uint)rights); |
1116 | } | 1116 | } |
1117 | 1117 | ||
1118 | public List<FriendListItem> GetUserFriends(UUID agentID) | 1118 | public List<FriendListItem> GetUserFriends(UUID agentID) |
1119 | { | 1119 | { |
@@ -1126,6 +1126,6 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends | |||
1126 | 1126 | ||
1127 | return fl; | 1127 | return fl; |
1128 | } | 1128 | } |
1129 | } | 1129 | } |
1130 | #endregion | 1130 | #endregion |
1131 | } | 1131 | } |
diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs index aafcfa2..9e76d79 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs | |||
@@ -136,7 +136,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver | |||
136 | successfulAssetRestores); | 136 | successfulAssetRestores); |
137 | } | 137 | } |
138 | else if (filePath.StartsWith(ArchiveConstants.INVENTORY_PATH)) | 138 | else if (filePath.StartsWith(ArchiveConstants.INVENTORY_PATH)) |
139 | { | 139 | { |
140 | InventoryFolderBase foundFolder | 140 | InventoryFolderBase foundFolder |
141 | = ReplicateArchivePathToUserInventory( | 141 | = ReplicateArchivePathToUserInventory( |
142 | filePath, TarArchiveReader.TarEntryType.TYPE_DIRECTORY == entryType, | 142 | filePath, TarArchiveReader.TarEntryType.TYPE_DIRECTORY == entryType, |
@@ -254,7 +254,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver | |||
254 | 254 | ||
255 | string newFolderName = rawDirsToCreate[i].Remove(identicalNameIdentifierIndex); | 255 | string newFolderName = rawDirsToCreate[i].Remove(identicalNameIdentifierIndex); |
256 | 256 | ||
257 | newFolderName = InventoryArchiveUtils.UnescapeArchivePath(newFolderName); | 257 | newFolderName = InventoryArchiveUtils.UnescapeArchivePath(newFolderName); |
258 | UUID newFolderId = UUID.Random(); | 258 | UUID newFolderId = UUID.Random(); |
259 | 259 | ||
260 | // Asset type has to be Unknown here rather than Folder, otherwise the created folder can't be | 260 | // Asset type has to be Unknown here rather than Folder, otherwise the created folder can't be |
@@ -352,7 +352,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver | |||
352 | item.Folder = loadFolder.ID; | 352 | item.Folder = loadFolder.ID; |
353 | 353 | ||
354 | //m_userInfo.AddItem(item); | 354 | //m_userInfo.AddItem(item); |
355 | m_scene.InventoryService.AddItem(item); | 355 | m_scene.InventoryService.AddItem(item); |
356 | 356 | ||
357 | return item; | 357 | return item; |
358 | } | 358 | } |
diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveUtils.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveUtils.cs index 247cee4..47b18d8 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveUtils.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveUtils.cs | |||
@@ -116,7 +116,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver | |||
116 | return startFolder; | 116 | return startFolder; |
117 | 117 | ||
118 | string[] components = SplitEscapedPath(path); | 118 | string[] components = SplitEscapedPath(path); |
119 | components[0] = UnescapePath(components[0]); | 119 | components[0] = UnescapePath(components[0]); |
120 | 120 | ||
121 | //string[] components = path.Split(new string[] { PATH_DELIMITER.ToString() }, 2, StringSplitOptions.None); | 121 | //string[] components = path.Split(new string[] { PATH_DELIMITER.ToString() }, 2, StringSplitOptions.None); |
122 | 122 | ||
@@ -306,17 +306,17 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver | |||
306 | public static string EscapeArchivePath(string path) | 306 | public static string EscapeArchivePath(string path) |
307 | { | 307 | { |
308 | // Only encode ampersands (for escaping anything) and / (since this is used as general dir separator). | 308 | // Only encode ampersands (for escaping anything) and / (since this is used as general dir separator). |
309 | return path.Replace("&", "&").Replace("/", "/"); | 309 | return path.Replace("&", "&").Replace("/", "/"); |
310 | } | 310 | } |
311 | 311 | ||
312 | /// <summary> | 312 | /// <summary> |
313 | /// Unescape an archive path. | 313 | /// Unescape an archive path. |
314 | /// </summary> | 314 | /// </summary> |
315 | /// <param name="path"></param> | 315 | /// <param name="path"></param> |
316 | /// <returns></returns> | 316 | /// <returns></returns> |
317 | public static string UnescapeArchivePath(string path) | 317 | public static string UnescapeArchivePath(string path) |
318 | { | 318 | { |
319 | return path.Replace("/", "/").Replace("&", "&"); | 319 | return path.Replace("/", "/").Replace("&", "&"); |
320 | } | 320 | } |
321 | } | 321 | } |
322 | } \ No newline at end of file | 322 | } \ No newline at end of file |
diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs index bbb49f6..6e11f36 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs | |||
@@ -270,7 +270,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver | |||
270 | inventoryFolder.Name, inventoryFolder.ID, m_invPath); | 270 | inventoryFolder.Name, inventoryFolder.ID, m_invPath); |
271 | 271 | ||
272 | //recurse through all dirs getting dirs and files | 272 | //recurse through all dirs getting dirs and files |
273 | SaveInvFolder(inventoryFolder, ArchiveConstants.INVENTORY_PATH, !foundStar); | 273 | SaveInvFolder(inventoryFolder, ArchiveConstants.INVENTORY_PATH, !foundStar); |
274 | } | 274 | } |
275 | else if (inventoryItem != null) | 275 | else if (inventoryItem != null) |
276 | { | 276 | { |
@@ -278,7 +278,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver | |||
278 | "[INVENTORY ARCHIVER]: Found item {0} {1} at {2}", | 278 | "[INVENTORY ARCHIVER]: Found item {0} {1} at {2}", |
279 | inventoryItem.Name, inventoryItem.ID, m_invPath); | 279 | inventoryItem.Name, inventoryItem.ID, m_invPath); |
280 | 280 | ||
281 | SaveInvItem(inventoryItem, ArchiveConstants.INVENTORY_PATH); | 281 | SaveInvItem(inventoryItem, ArchiveConstants.INVENTORY_PATH); |
282 | } | 282 | } |
283 | else | 283 | else |
284 | { | 284 | { |
@@ -288,7 +288,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver | |||
288 | m_log.ErrorFormat("[INVENTORY ARCHIVER]: {0}", errorMessage); | 288 | m_log.ErrorFormat("[INVENTORY ARCHIVER]: {0}", errorMessage); |
289 | m_module.TriggerInventoryArchiveSaved( | 289 | m_module.TriggerInventoryArchiveSaved( |
290 | m_id, false, m_userInfo, m_invPath, m_saveStream, | 290 | m_id, false, m_userInfo, m_invPath, m_saveStream, |
291 | new Exception(errorMessage)); | 291 | new Exception(errorMessage)); |
292 | return; | 292 | return; |
293 | } | 293 | } |
294 | 294 | ||
diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs index f8a010c..7927352 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs | |||
@@ -133,7 +133,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests | |||
133 | InventoryFolderBase objsFolder | 133 | InventoryFolderBase objsFolder |
134 | = InventoryArchiveUtils.FindFolderByPath(scene.InventoryService, userId, "Objects"); | 134 | = InventoryArchiveUtils.FindFolderByPath(scene.InventoryService, userId, "Objects"); |
135 | item1.Folder = objsFolder.ID; | 135 | item1.Folder = objsFolder.ID; |
136 | scene.AddInventoryItem(userId, item1); | 136 | scene.AddInventoryItem(userId, item1); |
137 | 137 | ||
138 | MemoryStream archiveWriteStream = new MemoryStream(); | 138 | MemoryStream archiveWriteStream = new MemoryStream(); |
139 | archiverModule.OnInventoryArchiveSaved += SaveCompleted; | 139 | archiverModule.OnInventoryArchiveSaved += SaveCompleted; |
@@ -348,7 +348,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests | |||
348 | InventoryFolderBase objsFolder | 348 | InventoryFolderBase objsFolder |
349 | = InventoryArchiveUtils.FindFolderByPath(scene.InventoryService, userId, "Objects"); | 349 | = InventoryArchiveUtils.FindFolderByPath(scene.InventoryService, userId, "Objects"); |
350 | item1.Folder = objsFolder.ID; | 350 | item1.Folder = objsFolder.ID; |
351 | scene.AddInventoryItem(userId, item1); | 351 | scene.AddInventoryItem(userId, item1); |
352 | 352 | ||
353 | MemoryStream archiveWriteStream = new MemoryStream(); | 353 | MemoryStream archiveWriteStream = new MemoryStream(); |
354 | archiverModule.OnInventoryArchiveSaved += SaveCompleted; | 354 | archiverModule.OnInventoryArchiveSaved += SaveCompleted; |
@@ -356,7 +356,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests | |||
356 | mre.Reset(); | 356 | mre.Reset(); |
357 | archiverModule.ArchiveInventory( | 357 | archiverModule.ArchiveInventory( |
358 | Guid.NewGuid(), userFirstName, userLastName, "Objects", userPassword, archiveWriteStream); | 358 | Guid.NewGuid(), userFirstName, userLastName, "Objects", userPassword, archiveWriteStream); |
359 | mre.WaitOne(60000, false); | 359 | mre.WaitOne(60000, false); |
360 | 360 | ||
361 | // LOAD ITEM | 361 | // LOAD ITEM |
362 | MemoryStream archiveReadStream = new MemoryStream(archiveWriteStream.ToArray()); | 362 | MemoryStream archiveReadStream = new MemoryStream(archiveWriteStream.ToArray()); |
@@ -373,7 +373,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests | |||
373 | // "Loaded item non-uuid creator doesn't match that of the loading user"); | 373 | // "Loaded item non-uuid creator doesn't match that of the loading user"); |
374 | Assert.That( | 374 | Assert.That( |
375 | foundItem1.Name, Is.EqualTo(itemName), | 375 | foundItem1.Name, Is.EqualTo(itemName), |
376 | "Loaded item name doesn't match saved name"); | 376 | "Loaded item name doesn't match saved name"); |
377 | } | 377 | } |
378 | 378 | ||
379 | /// <summary> | 379 | /// <summary> |
diff --git a/OpenSim/Region/CoreModules/Framework/Monitoring/Alerts/DeadlockAlert.cs b/OpenSim/Region/CoreModules/Framework/Monitoring/Alerts/DeadlockAlert.cs index b546ccb..b5b5cea 100644 --- a/OpenSim/Region/CoreModules/Framework/Monitoring/Alerts/DeadlockAlert.cs +++ b/OpenSim/Region/CoreModules/Framework/Monitoring/Alerts/DeadlockAlert.cs | |||
@@ -1,4 +1,31 @@ | |||
1 | using OpenSim.Region.CoreModules.Framework.Monitoring.Monitors; | 1 | /* |
2 | * Copyright (c) Contributors, http://opensimulator.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSimulator Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | */ | ||
27 | |||
28 | using OpenSim.Region.CoreModules.Framework.Monitoring.Monitors; | ||
2 | 29 | ||
3 | namespace OpenSim.Region.CoreModules.Framework.Monitoring.Alerts | 30 | namespace OpenSim.Region.CoreModules.Framework.Monitoring.Alerts |
4 | { | 31 | { |
@@ -22,7 +49,7 @@ namespace OpenSim.Region.CoreModules.Framework.Monitoring.Alerts | |||
22 | { | 49 | { |
23 | if (m_monitor.GetValue() > 60 * 1000) | 50 | if (m_monitor.GetValue() > 60 * 1000) |
24 | { | 51 | { |
25 | if(OnTriggerAlert != null) | 52 | if (OnTriggerAlert != null) |
26 | { | 53 | { |
27 | OnTriggerAlert(typeof (DeadlockAlert), | 54 | OnTriggerAlert(typeof (DeadlockAlert), |
28 | (int) (m_monitor.GetValue()/1000) + " second(s) since last frame processed.", true); | 55 | (int) (m_monitor.GetValue()/1000) + " second(s) since last frame processed.", true); |
diff --git a/OpenSim/Region/CoreModules/Framework/Monitoring/IAlert.cs b/OpenSim/Region/CoreModules/Framework/Monitoring/IAlert.cs index b533df9..5ea5a4f 100644 --- a/OpenSim/Region/CoreModules/Framework/Monitoring/IAlert.cs +++ b/OpenSim/Region/CoreModules/Framework/Monitoring/IAlert.cs | |||
@@ -1,4 +1,31 @@ | |||
1 | using System; | 1 | /* |
2 | * Copyright (c) Contributors, http://opensimulator.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSimulator Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | */ | ||
27 | |||
28 | using System; | ||
2 | 29 | ||
3 | namespace OpenSim.Region.CoreModules.Framework.Monitoring | 30 | namespace OpenSim.Region.CoreModules.Framework.Monitoring |
4 | { | 31 | { |
diff --git a/OpenSim/Region/CoreModules/Framework/Monitoring/IMonitor.cs b/OpenSim/Region/CoreModules/Framework/Monitoring/IMonitor.cs index a51dccd..9f618cc 100644 --- a/OpenSim/Region/CoreModules/Framework/Monitoring/IMonitor.cs +++ b/OpenSim/Region/CoreModules/Framework/Monitoring/IMonitor.cs | |||
@@ -1,4 +1,31 @@ | |||
1 | namespace OpenSim.Region.CoreModules.Framework.Monitoring | 1 | /* |
2 | * Copyright (c) Contributors, http://opensimulator.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSimulator Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | */ | ||
27 | |||
28 | namespace OpenSim.Region.CoreModules.Framework.Monitoring | ||
2 | { | 29 | { |
3 | interface IMonitor | 30 | interface IMonitor |
4 | { | 31 | { |
diff --git a/OpenSim/Region/CoreModules/Framework/Monitoring/MonitorModule.cs b/OpenSim/Region/CoreModules/Framework/Monitoring/MonitorModule.cs index 11aca99..d84f4ea 100644 --- a/OpenSim/Region/CoreModules/Framework/Monitoring/MonitorModule.cs +++ b/OpenSim/Region/CoreModules/Framework/Monitoring/MonitorModule.cs | |||
@@ -1,4 +1,31 @@ | |||
1 | using System.Collections; | 1 | /* |
2 | * Copyright (c) Contributors, http://opensimulator.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSimulator Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | */ | ||
27 | |||
28 | using System.Collections; | ||
2 | using System.Collections.Generic; | 29 | using System.Collections.Generic; |
3 | using System.Reflection; | 30 | using System.Reflection; |
4 | using log4net; | 31 | using log4net; |
diff --git a/OpenSim/Region/CoreModules/Framework/Monitoring/Monitors/AgentCountMonitor.cs b/OpenSim/Region/CoreModules/Framework/Monitoring/Monitors/AgentCountMonitor.cs index edc6e6b..4a2029e 100644 --- a/OpenSim/Region/CoreModules/Framework/Monitoring/Monitors/AgentCountMonitor.cs +++ b/OpenSim/Region/CoreModules/Framework/Monitoring/Monitors/AgentCountMonitor.cs | |||
@@ -1,4 +1,31 @@ | |||
1 | using OpenSim.Region.Framework.Scenes; | 1 | /* |
2 | * Copyright (c) Contributors, http://opensimulator.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSimulator Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | */ | ||
27 | |||
28 | using OpenSim.Region.Framework.Scenes; | ||
2 | 29 | ||
3 | namespace OpenSim.Region.CoreModules.Framework.Monitoring.Monitors | 30 | namespace OpenSim.Region.CoreModules.Framework.Monitoring.Monitors |
4 | { | 31 | { |
diff --git a/OpenSim/Region/CoreModules/Framework/Monitoring/Monitors/ChildAgentCountMonitor.cs b/OpenSim/Region/CoreModules/Framework/Monitoring/Monitors/ChildAgentCountMonitor.cs index afe6b79..4ab3edd 100644 --- a/OpenSim/Region/CoreModules/Framework/Monitoring/Monitors/ChildAgentCountMonitor.cs +++ b/OpenSim/Region/CoreModules/Framework/Monitoring/Monitors/ChildAgentCountMonitor.cs | |||
@@ -1,4 +1,31 @@ | |||
1 | using OpenSim.Region.Framework.Scenes; | 1 | /* |
2 | * Copyright (c) Contributors, http://opensimulator.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSimulator Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | */ | ||
27 | |||
28 | using OpenSim.Region.Framework.Scenes; | ||
2 | 29 | ||
3 | namespace OpenSim.Region.CoreModules.Framework.Monitoring.Monitors | 30 | namespace OpenSim.Region.CoreModules.Framework.Monitoring.Monitors |
4 | { | 31 | { |
diff --git a/OpenSim/Region/CoreModules/Framework/Monitoring/Monitors/EventFrameMonitor.cs b/OpenSim/Region/CoreModules/Framework/Monitoring/Monitors/EventFrameMonitor.cs index dec5a9e..356458d 100644 --- a/OpenSim/Region/CoreModules/Framework/Monitoring/Monitors/EventFrameMonitor.cs +++ b/OpenSim/Region/CoreModules/Framework/Monitoring/Monitors/EventFrameMonitor.cs | |||
@@ -1,4 +1,31 @@ | |||
1 | using OpenSim.Region.Framework.Scenes; | 1 | /* |
2 | * Copyright (c) Contributors, http://opensimulator.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSimulator Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | */ | ||
27 | |||
28 | using OpenSim.Region.Framework.Scenes; | ||
2 | 29 | ||
3 | namespace OpenSim.Region.CoreModules.Framework.Monitoring.Monitors | 30 | namespace OpenSim.Region.CoreModules.Framework.Monitoring.Monitors |
4 | { | 31 | { |
diff --git a/OpenSim/Region/CoreModules/Framework/Monitoring/Monitors/GCMemoryMonitor.cs b/OpenSim/Region/CoreModules/Framework/Monitoring/Monitors/GCMemoryMonitor.cs index cd67fea..aa2e9c0 100644 --- a/OpenSim/Region/CoreModules/Framework/Monitoring/Monitors/GCMemoryMonitor.cs +++ b/OpenSim/Region/CoreModules/Framework/Monitoring/Monitors/GCMemoryMonitor.cs | |||
@@ -1,4 +1,31 @@ | |||
1 | using System; | 1 | /* |
2 | * Copyright (c) Contributors, http://opensimulator.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSimulator Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | */ | ||
27 | |||
28 | using System; | ||
2 | 29 | ||
3 | namespace OpenSim.Region.CoreModules.Framework.Monitoring.Monitors | 30 | namespace OpenSim.Region.CoreModules.Framework.Monitoring.Monitors |
4 | { | 31 | { |
diff --git a/OpenSim/Region/CoreModules/Framework/Monitoring/Monitors/LandFrameMonitor.cs b/OpenSim/Region/CoreModules/Framework/Monitoring/Monitors/LandFrameMonitor.cs index d883fc7..e1c36de 100644 --- a/OpenSim/Region/CoreModules/Framework/Monitoring/Monitors/LandFrameMonitor.cs +++ b/OpenSim/Region/CoreModules/Framework/Monitoring/Monitors/LandFrameMonitor.cs | |||
@@ -1,4 +1,31 @@ | |||
1 | using OpenSim.Region.Framework.Scenes; | 1 | /* |
2 | * Copyright (c) Contributors, http://opensimulator.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSimulator Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | */ | ||
27 | |||
28 | using OpenSim.Region.Framework.Scenes; | ||
2 | 29 | ||
3 | namespace OpenSim.Region.CoreModules.Framework.Monitoring.Monitors | 30 | namespace OpenSim.Region.CoreModules.Framework.Monitoring.Monitors |
4 | { | 31 | { |
diff --git a/OpenSim/Region/CoreModules/Framework/Monitoring/Monitors/LastFrameTimeMonitor.cs b/OpenSim/Region/CoreModules/Framework/Monitoring/Monitors/LastFrameTimeMonitor.cs index 36363f8..f21a3ae 100644 --- a/OpenSim/Region/CoreModules/Framework/Monitoring/Monitors/LastFrameTimeMonitor.cs +++ b/OpenSim/Region/CoreModules/Framework/Monitoring/Monitors/LastFrameTimeMonitor.cs | |||
@@ -1,4 +1,31 @@ | |||
1 | using System; | 1 | /* |
2 | * Copyright (c) Contributors, http://opensimulator.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSimulator Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | */ | ||
27 | |||
28 | using System; | ||
2 | using OpenSim.Region.Framework.Scenes; | 29 | using OpenSim.Region.Framework.Scenes; |
3 | 30 | ||
4 | namespace OpenSim.Region.CoreModules.Framework.Monitoring.Monitors | 31 | namespace OpenSim.Region.CoreModules.Framework.Monitoring.Monitors |
diff --git a/OpenSim/Region/CoreModules/Framework/Monitoring/Monitors/ObjectCountMonitor.cs b/OpenSim/Region/CoreModules/Framework/Monitoring/Monitors/ObjectCountMonitor.cs index dd9b19d..10804f9 100644 --- a/OpenSim/Region/CoreModules/Framework/Monitoring/Monitors/ObjectCountMonitor.cs +++ b/OpenSim/Region/CoreModules/Framework/Monitoring/Monitors/ObjectCountMonitor.cs | |||
@@ -1,4 +1,31 @@ | |||
1 | using OpenSim.Region.Framework.Scenes; | 1 | /* |
2 | * Copyright (c) Contributors, http://opensimulator.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSimulator Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | */ | ||
27 | |||
28 | using OpenSim.Region.Framework.Scenes; | ||
2 | 29 | ||
3 | namespace OpenSim.Region.CoreModules.Framework.Monitoring.Monitors | 30 | namespace OpenSim.Region.CoreModules.Framework.Monitoring.Monitors |
4 | { | 31 | { |
diff --git a/OpenSim/Region/CoreModules/Framework/Monitoring/Monitors/PWSMemoryMonitor.cs b/OpenSim/Region/CoreModules/Framework/Monitoring/Monitors/PWSMemoryMonitor.cs index 88f2938..5f6190c 100644 --- a/OpenSim/Region/CoreModules/Framework/Monitoring/Monitors/PWSMemoryMonitor.cs +++ b/OpenSim/Region/CoreModules/Framework/Monitoring/Monitors/PWSMemoryMonitor.cs | |||
@@ -1,4 +1,31 @@ | |||
1 | using System; | 1 | /* |
2 | * Copyright (c) Contributors, http://opensimulator.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSimulator Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | */ | ||
27 | |||
28 | using System; | ||
2 | 29 | ||
3 | namespace OpenSim.Region.CoreModules.Framework.Monitoring.Monitors | 30 | namespace OpenSim.Region.CoreModules.Framework.Monitoring.Monitors |
4 | { | 31 | { |
diff --git a/OpenSim/Region/CoreModules/Framework/Monitoring/Monitors/PhysicsFrameMonitor.cs b/OpenSim/Region/CoreModules/Framework/Monitoring/Monitors/PhysicsFrameMonitor.cs index 4d62e4f..7c5bb0a 100644 --- a/OpenSim/Region/CoreModules/Framework/Monitoring/Monitors/PhysicsFrameMonitor.cs +++ b/OpenSim/Region/CoreModules/Framework/Monitoring/Monitors/PhysicsFrameMonitor.cs | |||
@@ -1,4 +1,31 @@ | |||
1 | using OpenSim.Region.Framework.Scenes; | 1 | /* |
2 | * Copyright (c) Contributors, http://opensimulator.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSimulator Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | */ | ||
27 | |||
28 | using OpenSim.Region.Framework.Scenes; | ||
2 | 29 | ||
3 | namespace OpenSim.Region.CoreModules.Framework.Monitoring.Monitors | 30 | namespace OpenSim.Region.CoreModules.Framework.Monitoring.Monitors |
4 | { | 31 | { |
diff --git a/OpenSim/Region/CoreModules/Framework/Monitoring/Monitors/PhysicsUpdateFrameMonitor.cs b/OpenSim/Region/CoreModules/Framework/Monitoring/Monitors/PhysicsUpdateFrameMonitor.cs index 91ac282..1894b3b 100644 --- a/OpenSim/Region/CoreModules/Framework/Monitoring/Monitors/PhysicsUpdateFrameMonitor.cs +++ b/OpenSim/Region/CoreModules/Framework/Monitoring/Monitors/PhysicsUpdateFrameMonitor.cs | |||
@@ -1,4 +1,31 @@ | |||
1 | using OpenSim.Region.Framework.Scenes; | 1 | /* |
2 | * Copyright (c) Contributors, http://opensimulator.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSimulator Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | */ | ||
27 | |||
28 | using OpenSim.Region.Framework.Scenes; | ||
2 | 29 | ||
3 | namespace OpenSim.Region.CoreModules.Framework.Monitoring.Monitors | 30 | namespace OpenSim.Region.CoreModules.Framework.Monitoring.Monitors |
4 | { | 31 | { |
diff --git a/OpenSim/Region/CoreModules/Framework/Monitoring/Monitors/ThreadCountMonitor.cs b/OpenSim/Region/CoreModules/Framework/Monitoring/Monitors/ThreadCountMonitor.cs index 9300a93..63ddf07 100644 --- a/OpenSim/Region/CoreModules/Framework/Monitoring/Monitors/ThreadCountMonitor.cs +++ b/OpenSim/Region/CoreModules/Framework/Monitoring/Monitors/ThreadCountMonitor.cs | |||
@@ -1,4 +1,31 @@ | |||
1 | | 1 | /* |
2 | * Copyright (c) Contributors, http://opensimulator.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSimulator Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | */ | ||
27 | |||
28 | |||
2 | namespace OpenSim.Region.CoreModules.Framework.Monitoring.Monitors | 29 | namespace OpenSim.Region.CoreModules.Framework.Monitoring.Monitors |
3 | { | 30 | { |
4 | class ThreadCountMonitor : IMonitor | 31 | class ThreadCountMonitor : IMonitor |
diff --git a/OpenSim/Region/CoreModules/Framework/Monitoring/Monitors/TotalFrameMonitor.cs b/OpenSim/Region/CoreModules/Framework/Monitoring/Monitors/TotalFrameMonitor.cs index dea1f94..c3942bf 100644 --- a/OpenSim/Region/CoreModules/Framework/Monitoring/Monitors/TotalFrameMonitor.cs +++ b/OpenSim/Region/CoreModules/Framework/Monitoring/Monitors/TotalFrameMonitor.cs | |||
@@ -1,4 +1,31 @@ | |||
1 | using OpenSim.Region.Framework.Scenes; | 1 | /* |
2 | * Copyright (c) Contributors, http://opensimulator.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSimulator Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | */ | ||
27 | |||
28 | using OpenSim.Region.Framework.Scenes; | ||
2 | 29 | ||
3 | namespace OpenSim.Region.CoreModules.Framework.Monitoring.Monitors | 30 | namespace OpenSim.Region.CoreModules.Framework.Monitoring.Monitors |
4 | { | 31 | { |
diff --git a/OpenSim/Region/CoreModules/World/Land/LandObject.cs b/OpenSim/Region/CoreModules/World/Land/LandObject.cs index 0bd225e..1fa8630 100644 --- a/OpenSim/Region/CoreModules/World/Land/LandObject.cs +++ b/OpenSim/Region/CoreModules/World/Land/LandObject.cs | |||
@@ -318,7 +318,7 @@ namespace OpenSim.Region.CoreModules.World.Land | |||
318 | } | 318 | } |
319 | 319 | ||
320 | public void SendLandUpdateToClient(bool snap_selection, IClientAPI remote_client) | 320 | public void SendLandUpdateToClient(bool snap_selection, IClientAPI remote_client) |
321 | { | 321 | { |
322 | SendLandProperties(0, snap_selection, 0, remote_client); | 322 | SendLandProperties(0, snap_selection, 0, remote_client); |
323 | } | 323 | } |
324 | 324 | ||
diff --git a/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs b/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs index c790624..013a0ef 100644 --- a/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs +++ b/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs | |||
@@ -486,21 +486,21 @@ namespace OpenSim.Region.CoreModules.World.Permissions | |||
486 | } | 486 | } |
487 | protected bool IsFriendWithPerms(UUID user,UUID objectOwner) | 487 | protected bool IsFriendWithPerms(UUID user,UUID objectOwner) |
488 | { | 488 | { |
489 | 489 | ||
490 | if (user == UUID.Zero) | 490 | if (user == UUID.Zero) |
491 | return false; | 491 | return false; |
492 | 492 | ||
493 | if (m_friendsModule == null) | 493 | if (m_friendsModule == null) |
494 | return false; | 494 | return false; |
495 | 495 | ||
496 | List<FriendListItem> profile = m_friendsModule.GetUserFriends(user); | 496 | List<FriendListItem> profile = m_friendsModule.GetUserFriends(user); |
497 | 497 | ||
498 | foreach (FriendListItem item in profile) | 498 | foreach (FriendListItem item in profile) |
499 | { | 499 | { |
500 | if(item.Friend == objectOwner && (item.FriendPerms & (uint)FriendRights.CanModifyObjects) != 0) | 500 | if (item.Friend == objectOwner && (item.FriendPerms & (uint)FriendRights.CanModifyObjects) != 0) |
501 | return true; | 501 | return true; |
502 | } | 502 | } |
503 | return false; | 503 | return false; |
504 | } | 504 | } |
505 | 505 | ||
506 | protected bool IsEstateManager(UUID user) | 506 | protected bool IsEstateManager(UUID user) |
diff --git a/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs b/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs index cbe4118..30a95ce 100644 --- a/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs +++ b/OpenSim/Region/Framework/Scenes/Animation/ScenePresenceAnimator.cs | |||
@@ -39,7 +39,7 @@ namespace OpenSim.Region.Framework.Scenes.Animation | |||
39 | /// Handle all animation duties for a scene presence | 39 | /// Handle all animation duties for a scene presence |
40 | /// </summary> | 40 | /// </summary> |
41 | public class ScenePresenceAnimator | 41 | public class ScenePresenceAnimator |
42 | { | 42 | { |
43 | public AnimationSet Animations | 43 | public AnimationSet Animations |
44 | { | 44 | { |
45 | get { return m_animations; } | 45 | get { return m_animations; } |
@@ -53,19 +53,19 @@ namespace OpenSim.Region.Framework.Scenes.Animation | |||
53 | { | 53 | { |
54 | get { return m_movementAnimation; } | 54 | get { return m_movementAnimation; } |
55 | } | 55 | } |
56 | protected string m_movementAnimation = "DEFAULT"; | 56 | protected string m_movementAnimation = "DEFAULT"; |
57 | 57 | ||
58 | private int m_animTickFall; | 58 | private int m_animTickFall; |
59 | private int m_animTickJump; | 59 | private int m_animTickJump; |
60 | 60 | ||
61 | /// <value> | 61 | /// <value> |
62 | /// The scene presence that this animator applies to | 62 | /// The scene presence that this animator applies to |
63 | /// </value> | 63 | /// </value> |
64 | protected ScenePresence m_scenePresence; | 64 | protected ScenePresence m_scenePresence; |
65 | 65 | ||
66 | public ScenePresenceAnimator(ScenePresence sp) | 66 | public ScenePresenceAnimator(ScenePresence sp) |
67 | { | 67 | { |
68 | m_scenePresence = sp; | 68 | m_scenePresence = sp; |
69 | } | 69 | } |
70 | 70 | ||
71 | public void AddAnimation(UUID animID, UUID objectID) | 71 | public void AddAnimation(UUID animID, UUID objectID) |
@@ -110,11 +110,11 @@ namespace OpenSim.Region.Framework.Scenes.Animation | |||
110 | return; | 110 | return; |
111 | 111 | ||
112 | RemoveAnimation(animID); | 112 | RemoveAnimation(animID); |
113 | } | 113 | } |
114 | 114 | ||
115 | public void ResetAnimations() | 115 | public void ResetAnimations() |
116 | { | 116 | { |
117 | m_animations.Clear(); | 117 | m_animations.Clear(); |
118 | } | 118 | } |
119 | 119 | ||
120 | /// <summary> | 120 | /// <summary> |
@@ -131,7 +131,7 @@ namespace OpenSim.Region.Framework.Scenes.Animation | |||
131 | anim, m_scenePresence.ControllingClient.NextAnimationSequenceNumber, UUID.Zero)) | 131 | anim, m_scenePresence.ControllingClient.NextAnimationSequenceNumber, UUID.Zero)) |
132 | { | 132 | { |
133 | // 16384 is CHANGED_ANIMATION | 133 | // 16384 is CHANGED_ANIMATION |
134 | m_scenePresence.SendScriptEventToAttachments("changed", new Object[] { 16384 }); | 134 | m_scenePresence.SendScriptEventToAttachments("changed", new Object[] { 16384 }); |
135 | SendAnimPack(); | 135 | SendAnimPack(); |
136 | } | 136 | } |
137 | } | 137 | } |
@@ -156,8 +156,8 @@ namespace OpenSim.Region.Framework.Scenes.Animation | |||
156 | Vector3 left = Vector3.Transform(Vector3.UnitY, rotMatrix); | 156 | Vector3 left = Vector3.Transform(Vector3.UnitY, rotMatrix); |
157 | 157 | ||
158 | // Check control flags | 158 | // Check control flags |
159 | bool heldForward = (controlFlags & AgentManager.ControlFlags.AGENT_CONTROL_AT_POS) == AgentManager.ControlFlags.AGENT_CONTROL_AT_POS; | 159 | bool heldForward = ((controlFlags & AgentManager.ControlFlags.AGENT_CONTROL_AT_POS) == AgentManager.ControlFlags.AGENT_CONTROL_AT_POS || (controlFlags & AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_AT_POS) == AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_AT_POS); |
160 | bool heldBack = (controlFlags & AgentManager.ControlFlags.AGENT_CONTROL_AT_NEG) == AgentManager.ControlFlags.AGENT_CONTROL_AT_NEG; | 160 | bool heldBack = ((controlFlags & AgentManager.ControlFlags.AGENT_CONTROL_AT_NEG) == AgentManager.ControlFlags.AGENT_CONTROL_AT_NEG || (controlFlags & AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_AT_NEG) == AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_AT_NEG); |
161 | bool heldLeft = (controlFlags & AgentManager.ControlFlags.AGENT_CONTROL_LEFT_POS) == AgentManager.ControlFlags.AGENT_CONTROL_LEFT_POS; | 161 | bool heldLeft = (controlFlags & AgentManager.ControlFlags.AGENT_CONTROL_LEFT_POS) == AgentManager.ControlFlags.AGENT_CONTROL_LEFT_POS; |
162 | bool heldRight = (controlFlags & AgentManager.ControlFlags.AGENT_CONTROL_LEFT_NEG) == AgentManager.ControlFlags.AGENT_CONTROL_LEFT_NEG; | 162 | bool heldRight = (controlFlags & AgentManager.ControlFlags.AGENT_CONTROL_LEFT_NEG) == AgentManager.ControlFlags.AGENT_CONTROL_LEFT_NEG; |
163 | //bool heldTurnLeft = (controlFlags & AgentManager.ControlFlags.AGENT_CONTROL_TURN_LEFT) == AgentManager.ControlFlags.AGENT_CONTROL_TURN_LEFT; | 163 | //bool heldTurnLeft = (controlFlags & AgentManager.ControlFlags.AGENT_CONTROL_TURN_LEFT) == AgentManager.ControlFlags.AGENT_CONTROL_TURN_LEFT; |
@@ -305,7 +305,7 @@ namespace OpenSim.Region.Framework.Scenes.Animation | |||
305 | #endregion Ground Movement | 305 | #endregion Ground Movement |
306 | 306 | ||
307 | return m_movementAnimation; | 307 | return m_movementAnimation; |
308 | } | 308 | } |
309 | 309 | ||
310 | /// <summary> | 310 | /// <summary> |
311 | /// Update the movement animation of this avatar according to its current state | 311 | /// Update the movement animation of this avatar according to its current state |
@@ -391,7 +391,7 @@ namespace OpenSim.Region.Framework.Scenes.Animation | |||
391 | m_scenePresence.Scene.AssetService.Store(Animasset); | 391 | m_scenePresence.Scene.AssetService.Store(Animasset); |
392 | AddAnimation(Animasset.FullID, m_scenePresence.UUID); | 392 | AddAnimation(Animasset.FullID, m_scenePresence.UUID); |
393 | return anim; | 393 | return anim; |
394 | } | 394 | } |
395 | 395 | ||
396 | /// <summary> | 396 | /// <summary> |
397 | /// | 397 | /// |
@@ -443,6 +443,6 @@ namespace OpenSim.Region.Framework.Scenes.Animation | |||
443 | m_animations.GetArrays(out animIDs, out sequenceNums, out objectIDs); | 443 | m_animations.GetArrays(out animIDs, out sequenceNums, out objectIDs); |
444 | 444 | ||
445 | SendAnimPack(animIDs, sequenceNums, objectIDs); | 445 | SendAnimPack(animIDs, sequenceNums, objectIDs); |
446 | } | 446 | } |
447 | } | 447 | } |
448 | } \ No newline at end of file | 448 | } \ No newline at end of file |
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 2e15b86..4ffa1a2 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs | |||
@@ -1164,16 +1164,16 @@ namespace OpenSim.Region.Framework.Scenes | |||
1164 | // Check if any objects have reached their targets | 1164 | // Check if any objects have reached their targets |
1165 | CheckAtTargets(); | 1165 | CheckAtTargets(); |
1166 | 1166 | ||
1167 | // Update SceneObjectGroups that have scheduled themselves for updates | ||
1168 | // Objects queue their updates onto all scene presences | ||
1169 | if (m_frame % m_update_objects == 0) | ||
1170 | m_sceneGraph.UpdateObjectGroups(); | ||
1171 | |||
1172 | // Run through all ScenePresences looking for updates | 1167 | // Run through all ScenePresences looking for updates |
1173 | // Presence updates and queued object updates for each presence are sent to clients | 1168 | // Presence updates and queued object updates for each presence are sent to clients |
1174 | if (m_frame % m_update_presences == 0) | 1169 | if (m_frame % m_update_presences == 0) |
1175 | m_sceneGraph.UpdatePresences(); | 1170 | m_sceneGraph.UpdatePresences(); |
1176 | 1171 | ||
1172 | // Update SceneObjectGroups that have scheduled themselves for updates | ||
1173 | // Objects queue their updates onto all scene presences | ||
1174 | if (m_frame % m_update_objects == 0) | ||
1175 | m_sceneGraph.UpdateObjectGroups(); | ||
1176 | |||
1177 | int TempPhysicsMS2 = Environment.TickCount; | 1177 | int TempPhysicsMS2 = Environment.TickCount; |
1178 | if ((m_frame % m_update_physics == 0) && m_physics_enabled) | 1178 | if ((m_frame % m_update_physics == 0) && m_physics_enabled) |
1179 | m_sceneGraph.UpdatePreparePhysics(); | 1179 | m_sceneGraph.UpdatePreparePhysics(); |
@@ -1266,7 +1266,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1266 | // allocations, and there is no more work to be done until someone logs in | 1266 | // allocations, and there is no more work to be done until someone logs in |
1267 | GC.Collect(); | 1267 | GC.Collect(); |
1268 | 1268 | ||
1269 | m_log.DebugFormat("[REGION]: Enabling Logins for {0}", RegionInfo.RegionName); | 1269 | m_log.DebugFormat("[REGION]: Enabling logins for {0}", RegionInfo.RegionName); |
1270 | loginsdisabled = false; | 1270 | loginsdisabled = false; |
1271 | } | 1271 | } |
1272 | } | 1272 | } |
@@ -3470,6 +3470,49 @@ namespace OpenSim.Region.Framework.Scenes | |||
3470 | agent.startpos.Y = crossedBorder.BorderLine.Z - 1; | 3470 | agent.startpos.Y = crossedBorder.BorderLine.Z - 1; |
3471 | } | 3471 | } |
3472 | 3472 | ||
3473 | //Mitigate http://opensimulator.org/mantis/view.php?id=3522 | ||
3474 | // Check if start position is outside of region | ||
3475 | // If it is, check the Z start position also.. if not, leave it alone. | ||
3476 | if (BordersLocked) | ||
3477 | { | ||
3478 | lock (EastBorders) | ||
3479 | { | ||
3480 | if (agent.startpos.X > EastBorders[0].BorderLine.Z) | ||
3481 | { | ||
3482 | m_log.Warn("FIX AGENT POSITION"); | ||
3483 | agent.startpos.X = EastBorders[0].BorderLine.Z * 0.5f; | ||
3484 | if (agent.startpos.Z > 720) | ||
3485 | agent.startpos.Z = 720; | ||
3486 | } | ||
3487 | } | ||
3488 | lock (NorthBorders) | ||
3489 | { | ||
3490 | if (agent.startpos.Y > NorthBorders[0].BorderLine.Z) | ||
3491 | { | ||
3492 | m_log.Warn("FIX Agent POSITION"); | ||
3493 | agent.startpos.Y = NorthBorders[0].BorderLine.Z * 0.5f; | ||
3494 | if (agent.startpos.Z > 720) | ||
3495 | agent.startpos.Z = 720; | ||
3496 | } | ||
3497 | } | ||
3498 | } | ||
3499 | else | ||
3500 | { | ||
3501 | if (agent.startpos.X > EastBorders[0].BorderLine.Z) | ||
3502 | { | ||
3503 | m_log.Warn("FIX AGENT POSITION"); | ||
3504 | agent.startpos.X = EastBorders[0].BorderLine.Z * 0.5f; | ||
3505 | if (agent.startpos.Z > 720) | ||
3506 | agent.startpos.Z = 720; | ||
3507 | } | ||
3508 | if (agent.startpos.Y > NorthBorders[0].BorderLine.Z) | ||
3509 | { | ||
3510 | m_log.Warn("FIX Agent POSITION"); | ||
3511 | agent.startpos.Y = NorthBorders[0].BorderLine.Z * 0.5f; | ||
3512 | if (agent.startpos.Z > 720) | ||
3513 | agent.startpos.Z = 720; | ||
3514 | } | ||
3515 | } | ||
3473 | // Honor parcel landing type and position. | 3516 | // Honor parcel landing type and position. |
3474 | ILandObject land = LandChannel.GetLandObject(agent.startpos.X, agent.startpos.Y); | 3517 | ILandObject land = LandChannel.GetLandObject(agent.startpos.X, agent.startpos.Y); |
3475 | if (land != null) | 3518 | if (land != null) |
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs index bf2f3d3..cdec135 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | |||
@@ -2075,6 +2075,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
2075 | { | 2075 | { |
2076 | if (PhysActor != null) | 2076 | if (PhysActor != null) |
2077 | { | 2077 | { |
2078 | |||
2078 | Vector3 newpos = new Vector3(PhysActor.Position.GetBytes(), 0); | 2079 | Vector3 newpos = new Vector3(PhysActor.Position.GetBytes(), 0); |
2079 | 2080 | ||
2080 | if (m_parentGroup.Scene.TestBorderCross(newpos, Cardinals.N) | m_parentGroup.Scene.TestBorderCross(newpos, Cardinals.S) | m_parentGroup.Scene.TestBorderCross(newpos, Cardinals.E) | m_parentGroup.Scene.TestBorderCross(newpos, Cardinals.W)) | 2081 | if (m_parentGroup.Scene.TestBorderCross(newpos, Cardinals.N) | m_parentGroup.Scene.TestBorderCross(newpos, Cardinals.S) | m_parentGroup.Scene.TestBorderCross(newpos, Cardinals.E) | m_parentGroup.Scene.TestBorderCross(newpos, Cardinals.W)) |
@@ -2082,6 +2083,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
2082 | m_parentGroup.AbsolutePosition = newpos; | 2083 | m_parentGroup.AbsolutePosition = newpos; |
2083 | return; | 2084 | return; |
2084 | } | 2085 | } |
2086 | //m_parentGroup.RootPart.m_groupPosition = newpos; | ||
2085 | } | 2087 | } |
2086 | ScheduleTerseUpdate(); | 2088 | ScheduleTerseUpdate(); |
2087 | 2089 | ||
@@ -2393,6 +2395,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
2393 | if (!RotationOffset.ApproxEquals(m_lastRotation, ROTATION_TOLERANCE) || | 2395 | if (!RotationOffset.ApproxEquals(m_lastRotation, ROTATION_TOLERANCE) || |
2394 | !Acceleration.Equals(m_lastAcceleration) || | 2396 | !Acceleration.Equals(m_lastAcceleration) || |
2395 | !Velocity.ApproxEquals(m_lastVelocity, VELOCITY_TOLERANCE) || | 2397 | !Velocity.ApproxEquals(m_lastVelocity, VELOCITY_TOLERANCE) || |
2398 | Velocity.ApproxEquals(Vector3.Zero, VELOCITY_TOLERANCE) || | ||
2396 | !AngularVelocity.ApproxEquals(m_lastAngularVelocity, VELOCITY_TOLERANCE) || | 2399 | !AngularVelocity.ApproxEquals(m_lastAngularVelocity, VELOCITY_TOLERANCE) || |
2397 | !OffsetPosition.ApproxEquals(m_lastPosition, POSITION_TOLERANCE) || | 2400 | !OffsetPosition.ApproxEquals(m_lastPosition, POSITION_TOLERANCE) || |
2398 | Environment.TickCount - m_lastTerseSent > TIME_MS_TOLERANCE) | 2401 | Environment.TickCount - m_lastTerseSent > TIME_MS_TOLERANCE) |
@@ -2427,6 +2430,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
2427 | m_updateFlag = 0; //Same here | 2430 | m_updateFlag = 0; //Same here |
2428 | } | 2431 | } |
2429 | } | 2432 | } |
2433 | m_updateFlag = 0; | ||
2430 | } | 2434 | } |
2431 | 2435 | ||
2432 | /// <summary> | 2436 | /// <summary> |
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index aa538dc..4e5fee1 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs | |||
@@ -73,7 +73,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
73 | // { | 73 | // { |
74 | // m_log.Debug("[ScenePresence] Destructor called"); | 74 | // m_log.Debug("[ScenePresence] Destructor called"); |
75 | // } | 75 | // } |
76 | 76 | ||
77 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | 77 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); |
78 | 78 | ||
79 | private static readonly byte[] BAKE_INDICES = new byte[] { 8, 9, 10, 11, 19, 20 }; | 79 | private static readonly byte[] BAKE_INDICES = new byte[] { 8, 9, 10, 11, 19, 20 }; |
@@ -146,7 +146,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
146 | private int m_perfMonMS; | 146 | private int m_perfMonMS; |
147 | 147 | ||
148 | private bool m_setAlwaysRun; | 148 | private bool m_setAlwaysRun; |
149 | |||
150 | private bool m_forceFly; | 149 | private bool m_forceFly; |
151 | private bool m_flyDisabled; | 150 | private bool m_flyDisabled; |
152 | 151 | ||
@@ -154,6 +153,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
154 | 153 | ||
155 | private Quaternion m_bodyRot= Quaternion.Identity; | 154 | private Quaternion m_bodyRot= Quaternion.Identity; |
156 | 155 | ||
156 | private const int LAND_VELOCITYMAG_MAX = 12; | ||
157 | |||
157 | public bool IsRestrictedToRegion; | 158 | public bool IsRestrictedToRegion; |
158 | 159 | ||
159 | public string JID = String.Empty; | 160 | public string JID = String.Empty; |
@@ -168,7 +169,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
168 | protected RegionInfo m_regionInfo; | 169 | protected RegionInfo m_regionInfo; |
169 | protected ulong crossingFromRegion; | 170 | protected ulong crossingFromRegion; |
170 | 171 | ||
171 | private readonly Vector3[] Dir_Vectors = new Vector3[6]; | 172 | private readonly Vector3[] Dir_Vectors = new Vector3[9]; |
173 | private bool m_isNudging = false; | ||
172 | 174 | ||
173 | // Position of agent's camera in world (region cordinates) | 175 | // Position of agent's camera in world (region cordinates) |
174 | protected Vector3 m_CameraCenter; | 176 | protected Vector3 m_CameraCenter; |
@@ -232,6 +234,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
232 | DIR_CONTROL_FLAG_RIGHT = AgentManager.ControlFlags.AGENT_CONTROL_LEFT_NEG, | 234 | DIR_CONTROL_FLAG_RIGHT = AgentManager.ControlFlags.AGENT_CONTROL_LEFT_NEG, |
233 | DIR_CONTROL_FLAG_UP = AgentManager.ControlFlags.AGENT_CONTROL_UP_POS, | 235 | DIR_CONTROL_FLAG_UP = AgentManager.ControlFlags.AGENT_CONTROL_UP_POS, |
234 | DIR_CONTROL_FLAG_DOWN = AgentManager.ControlFlags.AGENT_CONTROL_UP_NEG, | 236 | DIR_CONTROL_FLAG_DOWN = AgentManager.ControlFlags.AGENT_CONTROL_UP_NEG, |
237 | DIR_CONTROL_FLAG_FORWARD_NUDGE = AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_AT_POS, | ||
238 | DIR_CONTROL_FLAG_BACK_NUDGE = AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_AT_NEG, | ||
235 | DIR_CONTROL_FLAG_DOWN_NUDGE = AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_UP_NEG | 239 | DIR_CONTROL_FLAG_DOWN_NUDGE = AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_UP_NEG |
236 | } | 240 | } |
237 | 241 | ||
@@ -247,7 +251,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
247 | /// <value> | 251 | /// <value> |
248 | /// Script engines present in the scene | 252 | /// Script engines present in the scene |
249 | /// </value> | 253 | /// </value> |
250 | private IScriptModule[] m_scriptEngines; | 254 | private IScriptModule[] m_scriptEngines; |
251 | 255 | ||
252 | #region Properties | 256 | #region Properties |
253 | 257 | ||
@@ -674,7 +678,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
674 | AvatarWearable[] wearables) | 678 | AvatarWearable[] wearables) |
675 | : this(client, world, reginfo) | 679 | : this(client, world, reginfo) |
676 | { | 680 | { |
677 | m_appearance = new AvatarAppearance(m_uuid, wearables, visualParams); | 681 | m_appearance = new AvatarAppearance(m_uuid, wearables, visualParams); |
678 | } | 682 | } |
679 | 683 | ||
680 | public ScenePresence(IClientAPI client, Scene world, RegionInfo reginfo, AvatarAppearance appearance) | 684 | public ScenePresence(IClientAPI client, Scene world, RegionInfo reginfo, AvatarAppearance appearance) |
@@ -716,21 +720,41 @@ namespace OpenSim.Region.Framework.Scenes | |||
716 | Dir_Vectors[3] = -Vector3.UnitY; //RIGHT | 720 | Dir_Vectors[3] = -Vector3.UnitY; //RIGHT |
717 | Dir_Vectors[4] = Vector3.UnitZ; //UP | 721 | Dir_Vectors[4] = Vector3.UnitZ; //UP |
718 | Dir_Vectors[5] = -Vector3.UnitZ; //DOWN | 722 | Dir_Vectors[5] = -Vector3.UnitZ; //DOWN |
719 | Dir_Vectors[5] = new Vector3(0f, 0f, -0.5f); //DOWN_Nudge | 723 | Dir_Vectors[6] = new Vector3(0.5f, 0f, 0f); //FORWARD_NUDGE |
724 | Dir_Vectors[7] = new Vector3(-0.5f, 0f, 0f); //BACK_NUDGE | ||
725 | Dir_Vectors[8] = new Vector3(0f, 0f, -0.5f); //DOWN_Nudge | ||
720 | } | 726 | } |
721 | 727 | ||
722 | private Vector3[] GetWalkDirectionVectors() | 728 | private Vector3[] GetWalkDirectionVectors() |
723 | { | 729 | { |
724 | Vector3[] vector = new Vector3[6]; | 730 | Vector3[] vector = new Vector3[9]; |
725 | vector[0] = new Vector3(m_CameraUpAxis.Z, 0f, -m_CameraAtAxis.Z); //FORWARD | 731 | vector[0] = new Vector3(m_CameraUpAxis.Z, 0f, -m_CameraAtAxis.Z); //FORWARD |
726 | vector[1] = new Vector3(-m_CameraUpAxis.Z, 0f, m_CameraAtAxis.Z); //BACK | 732 | vector[1] = new Vector3(-m_CameraUpAxis.Z, 0f, m_CameraAtAxis.Z); //BACK |
727 | vector[2] = Vector3.UnitY; //LEFT | 733 | vector[2] = Vector3.UnitY; //LEFT |
728 | vector[3] = -Vector3.UnitY; //RIGHT | 734 | vector[3] = -Vector3.UnitY; //RIGHT |
729 | vector[4] = new Vector3(m_CameraAtAxis.Z, 0f, m_CameraUpAxis.Z); //UP | 735 | vector[4] = new Vector3(m_CameraAtAxis.Z, 0f, m_CameraUpAxis.Z); //UP |
730 | vector[5] = new Vector3(-m_CameraAtAxis.Z, 0f, -m_CameraUpAxis.Z); //DOWN | 736 | vector[5] = new Vector3(-m_CameraAtAxis.Z, 0f, -m_CameraUpAxis.Z); //DOWN |
731 | vector[5] = new Vector3(-m_CameraAtAxis.Z, 0f, -m_CameraUpAxis.Z); //DOWN_Nudge | 737 | vector[6] = new Vector3(m_CameraUpAxis.Z, 0f, -m_CameraAtAxis.Z); //FORWARD_NUDGE |
738 | vector[7] = new Vector3(-m_CameraUpAxis.Z, 0f, m_CameraAtAxis.Z); //BACK_NUDGE | ||
739 | vector[8] = new Vector3(-m_CameraAtAxis.Z, 0f, -m_CameraUpAxis.Z); //DOWN_Nudge | ||
732 | return vector; | 740 | return vector; |
733 | } | 741 | } |
742 | |||
743 | private bool[] GetDirectionIsNudge() | ||
744 | { | ||
745 | bool[] isNudge = new bool[9]; | ||
746 | isNudge[0] = false; //FORWARD | ||
747 | isNudge[1] = false; //BACK | ||
748 | isNudge[2] = false; //LEFT | ||
749 | isNudge[3] = false; //RIGHT | ||
750 | isNudge[4] = false; //UP | ||
751 | isNudge[5] = false; //DOWN | ||
752 | isNudge[6] = true; //FORWARD_NUDGE | ||
753 | isNudge[7] = true; //BACK_NUDGE | ||
754 | isNudge[8] = true; //DOWN_Nudge | ||
755 | return isNudge; | ||
756 | } | ||
757 | |||
734 | 758 | ||
735 | #endregion | 759 | #endregion |
736 | 760 | ||
@@ -980,8 +1004,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
980 | public void StopFlying() | 1004 | public void StopFlying() |
981 | { | 1005 | { |
982 | // It turns out to get the agent to stop flying, you have to feed it stop flying velocities | 1006 | // It turns out to get the agent to stop flying, you have to feed it stop flying velocities |
983 | // and send a full object update. | 1007 | // There's no explicit message to send the client to tell it to stop flying.. it relies on the |
984 | // There's no message to send the client to tell it to stop flying | 1008 | // velocity, collision plane and avatar height |
985 | 1009 | ||
986 | // Add 1/6 the avatar's height to it's position so it doesn't shoot into the air | 1010 | // Add 1/6 the avatar's height to it's position so it doesn't shoot into the air |
987 | // when the avatar stands up | 1011 | // when the avatar stands up |
@@ -995,8 +1019,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
995 | AbsolutePosition = AbsolutePosition + new Vector3(0f, 0f, (1.56f / 6f)); | 1019 | AbsolutePosition = AbsolutePosition + new Vector3(0f, 0f, (1.56f / 6f)); |
996 | } | 1020 | } |
997 | 1021 | ||
998 | Animator.TrySetMovementAnimation("LAND"); | 1022 | ControllingClient.SendAvatarTerseUpdate(new SendAvatarTerseData(m_rootRegionHandle, (ushort)(m_scene.TimeDilation * ushort.MaxValue), LocalId, |
999 | SendFullUpdateToAllClients(); | 1023 | AbsolutePosition, Velocity, Vector3.Zero, m_bodyRot, new Vector4(0,0,1,AbsolutePosition.Z - 0.5f), m_uuid, null, GetUpdatePriority(ControllingClient))); |
1000 | } | 1024 | } |
1001 | 1025 | ||
1002 | public void AddNeighbourRegion(ulong regionHandle, string cap) | 1026 | public void AddNeighbourRegion(ulong regionHandle, string cap) |
@@ -1147,7 +1171,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
1147 | // // m_log.Debug("DEBUG: HandleAgentUpdate: child agent"); | 1171 | // // m_log.Debug("DEBUG: HandleAgentUpdate: child agent"); |
1148 | // return; | 1172 | // return; |
1149 | //} | 1173 | //} |
1150 | |||
1151 | m_perfMonMS = Environment.TickCount; | 1174 | m_perfMonMS = Environment.TickCount; |
1152 | 1175 | ||
1153 | ++m_movementUpdateCount; | 1176 | ++m_movementUpdateCount; |
@@ -1229,7 +1252,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
1229 | m_scene.PhysicsScene.RaycastWorld(m_pos, Vector3.Normalize(m_CameraCenter - posAdjusted), Vector3.Distance(m_CameraCenter, posAdjusted) + 0.3f, RayCastCameraCallback); | 1252 | m_scene.PhysicsScene.RaycastWorld(m_pos, Vector3.Normalize(m_CameraCenter - posAdjusted), Vector3.Distance(m_CameraCenter, posAdjusted) + 0.3f, RayCastCameraCallback); |
1230 | } | 1253 | } |
1231 | } | 1254 | } |
1232 | |||
1233 | lock (scriptedcontrols) | 1255 | lock (scriptedcontrols) |
1234 | { | 1256 | { |
1235 | if (scriptedcontrols.Count > 0) | 1257 | if (scriptedcontrols.Count > 0) |
@@ -1261,7 +1283,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
1261 | { | 1283 | { |
1262 | return; | 1284 | return; |
1263 | } | 1285 | } |
1264 | |||
1265 | if (m_allowMovement) | 1286 | if (m_allowMovement) |
1266 | { | 1287 | { |
1267 | int i = 0; | 1288 | int i = 0; |
@@ -1289,6 +1310,11 @@ namespace OpenSim.Region.Framework.Scenes | |||
1289 | update_rotation = true; | 1310 | update_rotation = true; |
1290 | } | 1311 | } |
1291 | 1312 | ||
1313 | //guilty until proven innocent.. | ||
1314 | bool Nudging = true; | ||
1315 | //Basically, if there is at least one non-nudge control then we don't need | ||
1316 | //to worry about stopping the avatar | ||
1317 | |||
1292 | if (m_parentID == 0) | 1318 | if (m_parentID == 0) |
1293 | { | 1319 | { |
1294 | bool bAllowUpdateMoveToPosition = false; | 1320 | bool bAllowUpdateMoveToPosition = false; |
@@ -1303,6 +1329,12 @@ namespace OpenSim.Region.Framework.Scenes | |||
1303 | else | 1329 | else |
1304 | dirVectors = Dir_Vectors; | 1330 | dirVectors = Dir_Vectors; |
1305 | 1331 | ||
1332 | bool[] isNudge = GetDirectionIsNudge(); | ||
1333 | |||
1334 | |||
1335 | |||
1336 | |||
1337 | |||
1306 | foreach (Dir_ControlFlags DCF in DIR_CONTROL_FLAGS) | 1338 | foreach (Dir_ControlFlags DCF in DIR_CONTROL_FLAGS) |
1307 | { | 1339 | { |
1308 | if (((uint)flags & (uint)DCF) != 0) | 1340 | if (((uint)flags & (uint)DCF) != 0) |
@@ -1312,6 +1344,10 @@ namespace OpenSim.Region.Framework.Scenes | |||
1312 | try | 1344 | try |
1313 | { | 1345 | { |
1314 | agent_control_v3 += dirVectors[i]; | 1346 | agent_control_v3 += dirVectors[i]; |
1347 | if (isNudge[i] == false) | ||
1348 | { | ||
1349 | Nudging = false; | ||
1350 | } | ||
1315 | } | 1351 | } |
1316 | catch (IndexOutOfRangeException) | 1352 | catch (IndexOutOfRangeException) |
1317 | { | 1353 | { |
@@ -1373,6 +1409,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
1373 | // Ignore z component of vector | 1409 | // Ignore z component of vector |
1374 | Vector3 LocalVectorToTarget2D = new Vector3((float)(LocalVectorToTarget3D.X), (float)(LocalVectorToTarget3D.Y), 0f); | 1410 | Vector3 LocalVectorToTarget2D = new Vector3((float)(LocalVectorToTarget3D.X), (float)(LocalVectorToTarget3D.Y), 0f); |
1375 | LocalVectorToTarget2D.Normalize(); | 1411 | LocalVectorToTarget2D.Normalize(); |
1412 | |||
1413 | //We're not nudging | ||
1414 | Nudging = false; | ||
1376 | agent_control_v3 += LocalVectorToTarget2D; | 1415 | agent_control_v3 += LocalVectorToTarget2D; |
1377 | 1416 | ||
1378 | // update avatar movement flags. the avatar coordinate system is as follows: | 1417 | // update avatar movement flags. the avatar coordinate system is as follows: |
@@ -1431,6 +1470,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
1431 | // Only do this if we're flying | 1470 | // Only do this if we're flying |
1432 | if (m_physicsActor != null && m_physicsActor.Flying && !m_forceFly) | 1471 | if (m_physicsActor != null && m_physicsActor.Flying && !m_forceFly) |
1433 | { | 1472 | { |
1473 | // Landing detection code | ||
1474 | |||
1434 | // Are the landing controls requirements filled? | 1475 | // Are the landing controls requirements filled? |
1435 | bool controlland = (((flags & AgentManager.ControlFlags.AGENT_CONTROL_UP_NEG) != 0) || | 1476 | bool controlland = (((flags & AgentManager.ControlFlags.AGENT_CONTROL_UP_NEG) != 0) || |
1436 | ((flags & AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_UP_NEG) != 0)); | 1477 | ((flags & AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_UP_NEG) != 0)); |
@@ -1440,7 +1481,10 @@ namespace OpenSim.Region.Framework.Scenes | |||
1440 | 1481 | ||
1441 | if (m_physicsActor.Flying && colliding && controlland) | 1482 | if (m_physicsActor.Flying && colliding && controlland) |
1442 | { | 1483 | { |
1443 | StopFlying(); | 1484 | // nesting this check because LengthSquared() is expensive and we don't |
1485 | // want to do it every step when flying. | ||
1486 | if ((Velocity.LengthSquared() <= LAND_VELOCITYMAG_MAX)) | ||
1487 | StopFlying(); | ||
1444 | } | 1488 | } |
1445 | } | 1489 | } |
1446 | 1490 | ||
@@ -1450,7 +1494,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1450 | // m_log.DebugFormat( | 1494 | // m_log.DebugFormat( |
1451 | // "In {0} adding velocity to {1} of {2}", m_scene.RegionInfo.RegionName, Name, agent_control_v3); | 1495 | // "In {0} adding velocity to {1} of {2}", m_scene.RegionInfo.RegionName, Name, agent_control_v3); |
1452 | 1496 | ||
1453 | AddNewMovement(agent_control_v3, q); | 1497 | AddNewMovement(agent_control_v3, q, Nudging); |
1454 | 1498 | ||
1455 | if (update_movementflag) | 1499 | if (update_movementflag) |
1456 | Animator.UpdateMovementAnimations(); | 1500 | Animator.UpdateMovementAnimations(); |
@@ -1923,7 +1967,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1923 | /// </summary> | 1967 | /// </summary> |
1924 | /// <param name="vec">The vector in which to move. This is relative to the rotation argument</param> | 1968 | /// <param name="vec">The vector in which to move. This is relative to the rotation argument</param> |
1925 | /// <param name="rotation">The direction in which this avatar should now face. | 1969 | /// <param name="rotation">The direction in which this avatar should now face. |
1926 | public void AddNewMovement(Vector3 vec, Quaternion rotation) | 1970 | public void AddNewMovement(Vector3 vec, Quaternion rotation, bool Nudging) |
1927 | { | 1971 | { |
1928 | if (m_isChildAgent) | 1972 | if (m_isChildAgent) |
1929 | { | 1973 | { |
@@ -1997,7 +2041,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1997 | 2041 | ||
1998 | // TODO: Add the force instead of only setting it to support multiple forces per frame? | 2042 | // TODO: Add the force instead of only setting it to support multiple forces per frame? |
1999 | m_forceToApply = direc; | 2043 | m_forceToApply = direc; |
2000 | 2044 | m_isNudging = Nudging; | |
2001 | m_scene.StatsReporter.AddAgentTime(Environment.TickCount - m_perfMonMS); | 2045 | m_scene.StatsReporter.AddAgentTime(Environment.TickCount - m_perfMonMS); |
2002 | } | 2046 | } |
2003 | 2047 | ||
@@ -2012,7 +2056,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
2012 | const float POSITION_TOLERANCE = 0.05f; | 2056 | const float POSITION_TOLERANCE = 0.05f; |
2013 | //const int TIME_MS_TOLERANCE = 3000; | 2057 | //const int TIME_MS_TOLERANCE = 3000; |
2014 | 2058 | ||
2015 | SendPrimUpdates(); | 2059 | |
2016 | 2060 | ||
2017 | if (m_newCoarseLocations) | 2061 | if (m_newCoarseLocations) |
2018 | { | 2062 | { |
@@ -2048,6 +2092,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
2048 | CheckForBorderCrossing(); | 2092 | CheckForBorderCrossing(); |
2049 | CheckForSignificantMovement(); // sends update to the modules. | 2093 | CheckForSignificantMovement(); // sends update to the modules. |
2050 | } | 2094 | } |
2095 | |||
2096 | //Sending prim updates AFTER the avatar terse updates are sent | ||
2097 | SendPrimUpdates(); | ||
2051 | } | 2098 | } |
2052 | 2099 | ||
2053 | #endregion | 2100 | #endregion |
@@ -2901,14 +2948,24 @@ namespace OpenSim.Region.Framework.Scenes | |||
2901 | { | 2948 | { |
2902 | if (m_forceToApply.HasValue) | 2949 | if (m_forceToApply.HasValue) |
2903 | { | 2950 | { |
2904 | Vector3 force = m_forceToApply.Value; | ||
2905 | 2951 | ||
2952 | Vector3 force = m_forceToApply.Value; | ||
2906 | m_updateflag = true; | 2953 | m_updateflag = true; |
2907 | // movementvector = force; | ||
2908 | Velocity = force; | 2954 | Velocity = force; |
2909 | 2955 | ||
2910 | m_forceToApply = null; | 2956 | m_forceToApply = null; |
2911 | } | 2957 | } |
2958 | else | ||
2959 | { | ||
2960 | if (m_isNudging) | ||
2961 | { | ||
2962 | Vector3 force = Vector3.Zero; | ||
2963 | |||
2964 | m_updateflag = true; | ||
2965 | Velocity = force; | ||
2966 | m_isNudging = false; | ||
2967 | } | ||
2968 | } | ||
2912 | } | 2969 | } |
2913 | 2970 | ||
2914 | public override void SetText(string text, Vector3 color, double alpha) | 2971 | public override void SetText(string text, Vector3 color, double alpha) |
@@ -3084,7 +3141,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
3084 | 3141 | ||
3085 | public ScenePresence() | 3142 | public ScenePresence() |
3086 | { | 3143 | { |
3087 | m_sendCourseLocationsMethod = SendCoarseLocationsDefault; | 3144 | m_sendCourseLocationsMethod = SendCoarseLocationsDefault; |
3088 | CreateSceneViewer(); | 3145 | CreateSceneViewer(); |
3089 | m_animator = new ScenePresenceAnimator(this); | 3146 | m_animator = new ScenePresenceAnimator(this); |
3090 | } | 3147 | } |
@@ -3172,8 +3229,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
3172 | } | 3229 | } |
3173 | } | 3230 | } |
3174 | } | 3231 | } |
3175 | } | 3232 | } |
3176 | } | 3233 | } |
3177 | 3234 | ||
3178 | public bool CrossAttachmentsIntoNewRegion(ulong regionHandle, bool silent) | 3235 | public bool CrossAttachmentsIntoNewRegion(ulong regionHandle, bool silent) |
3179 | { | 3236 | { |
diff --git a/OpenSim/Region/Framework/Scenes/Tests/UuidGathererTests.cs b/OpenSim/Region/Framework/Scenes/Tests/UuidGathererTests.cs index b68a044..a36c4db 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/UuidGathererTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/UuidGathererTests.cs | |||
@@ -65,7 +65,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
65 | m_uuidGatherer.GatherAssetUuids(corruptAssetUuid, AssetType.Object, foundAssetUuids); | 65 | m_uuidGatherer.GatherAssetUuids(corruptAssetUuid, AssetType.Object, foundAssetUuids); |
66 | 66 | ||
67 | // We count the uuid as gathered even if the asset itself is corrupt. | 67 | // We count the uuid as gathered even if the asset itself is corrupt. |
68 | Assert.That(foundAssetUuids.Count, Is.EqualTo(1)); | 68 | Assert.That(foundAssetUuids.Count, Is.EqualTo(1)); |
69 | } | 69 | } |
70 | 70 | ||
71 | /// <summary> | 71 | /// <summary> |
@@ -76,7 +76,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
76 | { | 76 | { |
77 | TestHelper.InMethod(); | 77 | TestHelper.InMethod(); |
78 | 78 | ||
79 | UUID missingAssetUuid = UUID.Parse("00000000-0000-0000-0000-000000000666"); | 79 | UUID missingAssetUuid = UUID.Parse("00000000-0000-0000-0000-000000000666"); |
80 | IDictionary<UUID, int> foundAssetUuids = new Dictionary<UUID, int>(); | 80 | IDictionary<UUID, int> foundAssetUuids = new Dictionary<UUID, int>(); |
81 | 81 | ||
82 | m_uuidGatherer.GatherAssetUuids(missingAssetUuid, AssetType.Object, foundAssetUuids); | 82 | m_uuidGatherer.GatherAssetUuids(missingAssetUuid, AssetType.Object, foundAssetUuids); |
diff --git a/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs b/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs index 2bf96e4..b0e9a91 100644 --- a/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs +++ b/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs | |||
@@ -2185,9 +2185,30 @@ Console.WriteLine(" JointCreateFixed"); | |||
2185 | if (IsPhysical) | 2185 | if (IsPhysical) |
2186 | { | 2186 | { |
2187 | Vector3 iforce = Vector3.Zero; | 2187 | Vector3 iforce = Vector3.Zero; |
2188 | for (int i = 0; i < m_forcelist.Count; i++) | 2188 | int i = 0; |
2189 | try | ||
2189 | { | 2190 | { |
2190 | iforce = iforce + (m_forcelist[i] * 100); | 2191 | for (i = 0; i < m_forcelist.Count; i++) |
2192 | { | ||
2193 | |||
2194 | iforce = iforce + (m_forcelist[i] * 100); | ||
2195 | } | ||
2196 | } | ||
2197 | catch (IndexOutOfRangeException) | ||
2198 | { | ||
2199 | m_forcelist = new List<Vector3>(); | ||
2200 | m_collisionscore = 0; | ||
2201 | m_interpenetrationcount = 0; | ||
2202 | m_taintforce = false; | ||
2203 | return; | ||
2204 | } | ||
2205 | catch (ArgumentOutOfRangeException) | ||
2206 | { | ||
2207 | m_forcelist = new List<Vector3>(); | ||
2208 | m_collisionscore = 0; | ||
2209 | m_interpenetrationcount = 0; | ||
2210 | m_taintforce = false; | ||
2211 | return; | ||
2191 | } | 2212 | } |
2192 | d.BodyEnable(Body); | 2213 | d.BodyEnable(Body); |
2193 | d.BodyAddForce(Body, iforce.X, iforce.Y, iforce.Z); | 2214 | d.BodyAddForce(Body, iforce.X, iforce.Y, iforce.Z); |
@@ -2416,6 +2437,9 @@ Console.WriteLine(" JointCreateFixed"); | |||
2416 | { | 2437 | { |
2417 | // Averate previous velocity with the new one so | 2438 | // Averate previous velocity with the new one so |
2418 | // client object interpolation works a 'little' better | 2439 | // client object interpolation works a 'little' better |
2440 | if (_zeroFlag) | ||
2441 | return Vector3.Zero; | ||
2442 | |||
2419 | Vector3 returnVelocity = Vector3.Zero; | 2443 | Vector3 returnVelocity = Vector3.Zero; |
2420 | returnVelocity.X = (m_lastVelocity.X + _velocity.X)/2; | 2444 | returnVelocity.X = (m_lastVelocity.X + _velocity.X)/2; |
2421 | returnVelocity.Y = (m_lastVelocity.Y + _velocity.Y)/2; | 2445 | returnVelocity.Y = (m_lastVelocity.Y + _velocity.Y)/2; |
@@ -2518,7 +2542,9 @@ Console.WriteLine(" JointCreateFixed"); | |||
2518 | { | 2542 | { |
2519 | if (force.IsFinite()) | 2543 | if (force.IsFinite()) |
2520 | { | 2544 | { |
2521 | m_forcelist.Add(force); | 2545 | lock (m_forcelist) |
2546 | m_forcelist.Add(force); | ||
2547 | |||
2522 | m_taintforce = true; | 2548 | m_taintforce = true; |
2523 | } | 2549 | } |
2524 | else | 2550 | else |
@@ -2702,7 +2728,7 @@ Console.WriteLine(" JointCreateFixed"); | |||
2702 | //outofBounds = true; | 2728 | //outofBounds = true; |
2703 | } | 2729 | } |
2704 | 2730 | ||
2705 | // float Adiff = 1.0f - Math.Abs(Quaternion.Dot(m_lastorientation, l_orientation)); | 2731 | //float Adiff = 1.0f - Math.Abs(Quaternion.Dot(m_lastorientation, l_orientation)); |
2706 | //Console.WriteLine("Adiff " + m_primName + " = " + Adiff); | 2732 | //Console.WriteLine("Adiff " + m_primName + " = " + Adiff); |
2707 | if ((Math.Abs(m_lastposition.X - l_position.X) < 0.02) | 2733 | if ((Math.Abs(m_lastposition.X - l_position.X) < 0.02) |
2708 | && (Math.Abs(m_lastposition.Y - l_position.Y) < 0.02) | 2734 | && (Math.Abs(m_lastposition.Y - l_position.Y) < 0.02) |
@@ -2718,6 +2744,8 @@ Console.WriteLine(" JointCreateFixed"); | |||
2718 | { | 2744 | { |
2719 | //m_log.Debug(Math.Abs(m_lastposition.X - l_position.X).ToString()); | 2745 | //m_log.Debug(Math.Abs(m_lastposition.X - l_position.X).ToString()); |
2720 | _zeroFlag = false; | 2746 | _zeroFlag = false; |
2747 | m_lastUpdateSent = false; | ||
2748 | //m_throttleUpdates = false; | ||
2721 | } | 2749 | } |
2722 | 2750 | ||
2723 | if (_zeroFlag) | 2751 | if (_zeroFlag) |
@@ -2744,7 +2772,9 @@ Console.WriteLine(" JointCreateFixed"); | |||
2744 | m_rotationalVelocity = pv; | 2772 | m_rotationalVelocity = pv; |
2745 | 2773 | ||
2746 | if (_parent == null) | 2774 | if (_parent == null) |
2775 | { | ||
2747 | base.RequestPhysicsterseUpdate(); | 2776 | base.RequestPhysicsterseUpdate(); |
2777 | } | ||
2748 | 2778 | ||
2749 | m_lastUpdateSent = true; | 2779 | m_lastUpdateSent = true; |
2750 | } | 2780 | } |
@@ -2754,7 +2784,9 @@ Console.WriteLine(" JointCreateFixed"); | |||
2754 | if (lastZeroFlag != _zeroFlag) | 2784 | if (lastZeroFlag != _zeroFlag) |
2755 | { | 2785 | { |
2756 | if (_parent == null) | 2786 | if (_parent == null) |
2787 | { | ||
2757 | base.RequestPhysicsterseUpdate(); | 2788 | base.RequestPhysicsterseUpdate(); |
2789 | } | ||
2758 | } | 2790 | } |
2759 | 2791 | ||
2760 | m_lastVelocity = _velocity; | 2792 | m_lastVelocity = _velocity; |
@@ -2787,7 +2819,9 @@ Console.WriteLine(" JointCreateFixed"); | |||
2787 | if (!m_throttleUpdates || throttleCounter > _parent_scene.geomUpdatesPerThrottledUpdate) | 2819 | if (!m_throttleUpdates || throttleCounter > _parent_scene.geomUpdatesPerThrottledUpdate) |
2788 | { | 2820 | { |
2789 | if (_parent == null) | 2821 | if (_parent == null) |
2822 | { | ||
2790 | base.RequestPhysicsterseUpdate(); | 2823 | base.RequestPhysicsterseUpdate(); |
2824 | } | ||
2791 | } | 2825 | } |
2792 | else | 2826 | else |
2793 | { | 2827 | { |
diff --git a/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs b/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs index 981cf43..e6b31ca 100644 --- a/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs +++ b/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs | |||
@@ -835,7 +835,18 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
835 | // allows us to have different settings | 835 | // allows us to have different settings |
836 | 836 | ||
837 | // We only need to test p2 for 'jump crouch purposes' | 837 | // We only need to test p2 for 'jump crouch purposes' |
838 | p2.IsColliding = true; | 838 | if (p2 is OdeCharacter) |
839 | { | ||
840 | // Testing if the collision is at the feet of the avatar | ||
841 | |||
842 | //m_log.DebugFormat("[PHYSICS]: {0} - {1} - {2} - {3}", curContact.pos.Z, p2.Position.Z, (p2.Position.Z - curContact.pos.Z), (p2.Size.Z * 0.6f)); | ||
843 | if ((p2.Position.Z - curContact.pos.Z) > (p2.Size.Z * 0.6f)) | ||
844 | p2.IsColliding = true; | ||
845 | } | ||
846 | else | ||
847 | { | ||
848 | p2.IsColliding = true; | ||
849 | } | ||
839 | 850 | ||
840 | //if ((framecount % m_returncollisions) == 0) | 851 | //if ((framecount % m_returncollisions) == 0) |
841 | 852 | ||
diff --git a/OpenSim/Region/RegionCombinerModule/RegionCombinerModule.cs b/OpenSim/Region/RegionCombinerModule/RegionCombinerModule.cs index 7ec1d4b..92f060b 100644 --- a/OpenSim/Region/RegionCombinerModule/RegionCombinerModule.cs +++ b/OpenSim/Region/RegionCombinerModule/RegionCombinerModule.cs | |||
@@ -325,7 +325,7 @@ namespace OpenSim.Region.RegionCombinerModule | |||
325 | >= (regionConnections.Y * (int)Constants.RegionSize))) | 325 | >= (regionConnections.Y * (int)Constants.RegionSize))) |
326 | { | 326 | { |
327 | connectedYN = DoWorkForOneRegionOverXPlusY(conn, regionConnections, scene); | 327 | connectedYN = DoWorkForOneRegionOverXPlusY(conn, regionConnections, scene); |
328 | break; | 328 | break; |
329 | } | 329 | } |
330 | 330 | ||
331 | // If we're one region over +x +y | 331 | // If we're one region over +x +y |
@@ -338,7 +338,7 @@ namespace OpenSim.Region.RegionCombinerModule | |||
338 | >= (regionConnections.Y * (int)Constants.RegionSize))) | 338 | >= (regionConnections.Y * (int)Constants.RegionSize))) |
339 | { | 339 | { |
340 | connectedYN = DoWorkForOneRegionOverPlusXPlusY(conn, regionConnections, scene); | 340 | connectedYN = DoWorkForOneRegionOverPlusXPlusY(conn, regionConnections, scene); |
341 | break; | 341 | break; |
342 | 342 | ||
343 | } | 343 | } |
344 | } | 344 | } |
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index 5fb2775..50b2fb5 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | |||
@@ -1271,11 +1271,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
1271 | if (part == null || part.ParentGroup == null || part.ParentGroup.IsDeleted) | 1271 | if (part == null || part.ParentGroup == null || part.ParentGroup.IsDeleted) |
1272 | return; | 1272 | return; |
1273 | if (scale.x < 0.01) | 1273 | if (scale.x < 0.01) |
1274 | scale.x = 0.01; | 1274 | scale.x = 0.01; |
1275 | if (scale.y < 0.01) | 1275 | if (scale.y < 0.01) |
1276 | scale.y = 0.01; | 1276 | scale.y = 0.01; |
1277 | if (scale.z < 0.01) | 1277 | if (scale.z < 0.01) |
1278 | scale.z = 0.01; | 1278 | scale.z = 0.01; |
1279 | 1279 | ||
1280 | if (part.ParentGroup.RootPart.PhysActor != null && part.ParentGroup.RootPart.PhysActor.IsPhysical) | 1280 | if (part.ParentGroup.RootPart.PhysActor != null && part.ParentGroup.RootPart.PhysActor.IsPhysical) |
1281 | { | 1281 | { |
diff --git a/OpenSim/Region/ScriptEngine/Shared/CodeTools/CSCodeGenerator.cs b/OpenSim/Region/ScriptEngine/Shared/CodeTools/CSCodeGenerator.cs index 41ecfd3..e427f50 100644 --- a/OpenSim/Region/ScriptEngine/Shared/CodeTools/CSCodeGenerator.cs +++ b/OpenSim/Region/ScriptEngine/Shared/CodeTools/CSCodeGenerator.cs | |||
@@ -722,8 +722,26 @@ namespace OpenSim.Region.ScriptEngine.Shared.CodeTools | |||
722 | if (fls.kids.Top is IdentExpression && 1 == fls.kids.Count) | 722 | if (fls.kids.Top is IdentExpression && 1 == fls.kids.Count) |
723 | return retstr; | 723 | return retstr; |
724 | 724 | ||
725 | foreach (SYMBOL s in fls.kids) | 725 | for (int i = 0; i < fls.kids.Count; i++) |
726 | { | 726 | { |
727 | SYMBOL s = (SYMBOL)fls.kids[i]; | ||
728 | |||
729 | // Statements surrounded by parentheses in for loops | ||
730 | // | ||
731 | // e.g. for ((i = 0), (j = 7); (i < 10); (++i)) | ||
732 | // | ||
733 | // are legal in LSL but not in C# so we need to discard the parentheses | ||
734 | // | ||
735 | // The following, however, does not appear to be legal in LLS | ||
736 | // | ||
737 | // for ((i = 0, j = 7); (i < 10); (++i)) | ||
738 | // | ||
739 | // As of Friday 20th November 2009, the Linden Lab simulators appear simply never to compile or run this | ||
740 | // script but with no debug or warnings at all! Therefore, we won't deal with this yet (which looks | ||
741 | // like it would be considerably more complicated to handle). | ||
742 | while (s is ParenthesisExpression) | ||
743 | s = (SYMBOL)s.kids.Pop(); | ||
744 | |||
727 | retstr += GenerateNode(s); | 745 | retstr += GenerateNode(s); |
728 | if (0 < comma--) | 746 | if (0 < comma--) |
729 | retstr += Generate(", "); | 747 | retstr += Generate(", "); |
diff --git a/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs b/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs index 549c038..41b5d49 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs | |||
@@ -252,18 +252,18 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance | |||
252 | { | 252 | { |
253 | m_Apis[api] = am.CreateApi(api); | 253 | m_Apis[api] = am.CreateApi(api); |
254 | m_Apis[api].Initialize(engine, part, m_LocalID, itemID); | 254 | m_Apis[api].Initialize(engine, part, m_LocalID, itemID); |
255 | } | 255 | } |
256 | 256 | ||
257 | try | 257 | try |
258 | { | 258 | { |
259 | if (dom != System.AppDomain.CurrentDomain) | 259 | if (dom != System.AppDomain.CurrentDomain) |
260 | m_Script = (IScript)dom.CreateInstanceAndUnwrap( | 260 | m_Script = (IScript)dom.CreateInstanceAndUnwrap( |
261 | Path.GetFileNameWithoutExtension(assembly), | 261 | Path.GetFileNameWithoutExtension(assembly), |
262 | "SecondLife.Script"); | 262 | "SecondLife.Script"); |
263 | else | 263 | else |
264 | m_Script = (IScript)Assembly.Load( | 264 | m_Script = (IScript)Assembly.Load( |
265 | Path.GetFileNameWithoutExtension(assembly)).CreateInstance( | 265 | Path.GetFileNameWithoutExtension(assembly)).CreateInstance( |
266 | "SecondLife.Script"); | 266 | "SecondLife.Script"); |
267 | 267 | ||
268 | 268 | ||
269 | //ILease lease = (ILease)RemotingServices.GetLifetimeService(m_Script as ScriptBaseClass); | 269 | //ILease lease = (ILease)RemotingServices.GetLifetimeService(m_Script as ScriptBaseClass); |
@@ -903,7 +903,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance | |||
903 | // If the state is different, update the disk file. | 903 | // If the state is different, update the disk file. |
904 | UUID hash = UUID.Parse(Utils.MD5String(xml)); | 904 | UUID hash = UUID.Parse(Utils.MD5String(xml)); |
905 | 905 | ||
906 | if(hash != m_CurrentStateHash) | 906 | if (hash != m_CurrentStateHash) |
907 | { | 907 | { |
908 | try | 908 | try |
909 | { | 909 | { |
diff --git a/OpenSim/Services/InventoryService/InventoryService.cs b/OpenSim/Services/InventoryService/InventoryService.cs index 70c55a5..d4da4d3 100644 --- a/OpenSim/Services/InventoryService/InventoryService.cs +++ b/OpenSim/Services/InventoryService/InventoryService.cs | |||
@@ -439,6 +439,7 @@ namespace OpenSim.Services.InventoryService | |||
439 | 439 | ||
440 | public virtual bool DeleteFolders(UUID ownerID, List<UUID> folderIDs) | 440 | public virtual bool DeleteFolders(UUID ownerID, List<UUID> folderIDs) |
441 | { | 441 | { |
442 | m_log.InfoFormat("[INVENTORY SERVICE]: Deleting {0} folders from user {1}", folderIDs.Count, ownerID); | ||
442 | foreach (UUID id in folderIDs) | 443 | foreach (UUID id in folderIDs) |
443 | { | 444 | { |
444 | InventoryFolderBase folder = new InventoryFolderBase(id, ownerID); | 445 | InventoryFolderBase folder = new InventoryFolderBase(id, ownerID); |
diff --git a/OpenSim/Tests/Common/Mock/MockUserService.cs b/OpenSim/Tests/Common/Mock/MockUserService.cs index 62c41c7..396ef25 100644 --- a/OpenSim/Tests/Common/Mock/MockUserService.cs +++ b/OpenSim/Tests/Common/Mock/MockUserService.cs | |||
@@ -34,7 +34,7 @@ using OpenSim.Framework.Communications.Cache; | |||
34 | using OpenSim.Services.Interfaces; | 34 | using OpenSim.Services.Interfaces; |
35 | 35 | ||
36 | namespace OpenSim.Tests.Common | 36 | namespace OpenSim.Tests.Common |
37 | { | 37 | { |
38 | public class MockUserService : IUserService | 38 | public class MockUserService : IUserService |
39 | { | 39 | { |
40 | public void AddTemporaryUserProfile(UserProfileData userProfile) | 40 | public void AddTemporaryUserProfile(UserProfileData userProfile) |
diff --git a/OpenSim/Tests/Common/Setup/AssetHelpers.cs b/OpenSim/Tests/Common/Setup/AssetHelpers.cs index df69cd9..1188b62 100644 --- a/OpenSim/Tests/Common/Setup/AssetHelpers.cs +++ b/OpenSim/Tests/Common/Setup/AssetHelpers.cs | |||
@@ -32,7 +32,7 @@ using OpenSim.Region.Framework.Scenes; | |||
32 | using OpenSim.Region.Framework.Scenes.Serialization; | 32 | using OpenSim.Region.Framework.Scenes.Serialization; |
33 | 33 | ||
34 | namespace OpenSim.Tests.Common | 34 | namespace OpenSim.Tests.Common |
35 | { | 35 | { |
36 | public class AssetHelpers | 36 | public class AssetHelpers |
37 | { | 37 | { |
38 | /// <summary> | 38 | /// <summary> |
diff --git a/OpenSim/Tests/Common/Setup/UserProfileTestUtils.cs b/OpenSim/Tests/Common/Setup/UserProfileTestUtils.cs index 1b06a46..cb76bc1 100644 --- a/OpenSim/Tests/Common/Setup/UserProfileTestUtils.cs +++ b/OpenSim/Tests/Common/Setup/UserProfileTestUtils.cs | |||
@@ -113,6 +113,6 @@ namespace OpenSim.Tests.Common.Setup | |||
113 | userInfo.FetchInventory(); | 113 | userInfo.FetchInventory(); |
114 | 114 | ||
115 | return userInfo; | 115 | return userInfo; |
116 | } | 116 | } |
117 | } | 117 | } |
118 | } | 118 | } |