aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework
diff options
context:
space:
mode:
authorroot2011-06-30 00:26:03 +0100
committerroot2011-06-30 00:26:03 +0100
commit5f927dc104aac48707c0ea2ff77a3410c3857ecc (patch)
tree123324ae910db49349e7b07749f49cd172a3d037 /OpenSim/Region/Framework
parentRemove friends debug spam (diff)
parentDon't follow inventory links of links. (diff)
downloadopensim-SC_OLD-5f927dc104aac48707c0ea2ff77a3410c3857ecc.zip
opensim-SC_OLD-5f927dc104aac48707c0ea2ff77a3410c3857ecc.tar.gz
opensim-SC_OLD-5f927dc104aac48707c0ea2ff77a3410c3857ecc.tar.bz2
opensim-SC_OLD-5f927dc104aac48707c0ea2ff77a3410c3857ecc.tar.xz
Merge branch 'master' into careminster-presence-refactor
Diffstat (limited to 'OpenSim/Region/Framework')
-rw-r--r--OpenSim/Region/Framework/Interfaces/IAvatarFactory.cs2
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.Inventory.cs18
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.cs4
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectPart.cs6
-rw-r--r--OpenSim/Region/Framework/Scenes/ScenePresence.cs6
5 files changed, 25 insertions, 11 deletions
diff --git a/OpenSim/Region/Framework/Interfaces/IAvatarFactory.cs b/OpenSim/Region/Framework/Interfaces/IAvatarFactory.cs
index 22795fc..d0e5609 100644
--- a/OpenSim/Region/Framework/Interfaces/IAvatarFactory.cs
+++ b/OpenSim/Region/Framework/Interfaces/IAvatarFactory.cs
@@ -36,4 +36,4 @@ namespace OpenSim.Region.Framework.Interfaces
36 void QueueAppearanceSend(UUID agentid); 36 void QueueAppearanceSend(UUID agentid);
37 void QueueAppearanceSave(UUID agentid); 37 void QueueAppearanceSave(UUID agentid);
38 } 38 }
39} 39} \ No newline at end of file
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
index c04bbb4..28c0276 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
@@ -1347,7 +1347,7 @@ namespace OpenSim.Region.Framework.Scenes
1347// m_log.DebugFormat("[AGENT INVENTORY]: Sending inventory folder contents ({0} nodes) for \"{1}\" to {2} {3}", 1347// m_log.DebugFormat("[AGENT INVENTORY]: Sending inventory folder contents ({0} nodes) for \"{1}\" to {2} {3}",
1348// contents.Folders.Count + contents.Items.Count, containingFolder.Name, client.FirstName, client.LastName); 1348// contents.Folders.Count + contents.Items.Count, containingFolder.Name, client.FirstName, client.LastName);
1349 1349
1350 if (containingFolder != null && containingFolder != null) 1350 if (containingFolder != null)
1351 { 1351 {
1352 // If the folder requested contains links, then we need to send those folders first, otherwise the links 1352 // If the folder requested contains links, then we need to send those folders first, otherwise the links
1353 // will be broken in the viewer. 1353 // will be broken in the viewer.
@@ -1359,15 +1359,25 @@ namespace OpenSim.Region.Framework.Scenes
1359 InventoryItemBase linkedItem = InventoryService.GetItem(new InventoryItemBase(item.AssetID)); 1359 InventoryItemBase linkedItem = InventoryService.GetItem(new InventoryItemBase(item.AssetID));
1360 1360
1361 // Take care of genuinely broken links where the target doesn't exist 1361 // Take care of genuinely broken links where the target doesn't exist
1362 if (linkedItem != null) 1362 // HACK: Also, don't follow up links that just point to other links. In theory this is legitimate,
1363 linkedItemFolderIdsToSend.Add(linkedItem.Folder); 1363 // but no viewer has been observed to set these up and this is the lazy way of avoiding cycles
1364 // rather than having to keep track of every folder requested in the recursion.
1365 if (linkedItem != null && linkedItem.AssetType != (int)AssetType.Link)
1366 {
1367 // We don't need to send the folder if source and destination of the link are in the same
1368 // folder.
1369 if (linkedItem.Folder != containingFolder.ID)
1370 linkedItemFolderIdsToSend.Add(linkedItem.Folder);
1371 }
1364 } 1372 }
1365 } 1373 }
1366 1374
1367 foreach (UUID linkedItemFolderId in linkedItemFolderIdsToSend) 1375 foreach (UUID linkedItemFolderId in linkedItemFolderIdsToSend)
1368 SendInventoryUpdate(client, new InventoryFolderBase(linkedItemFolderId), false, true); 1376 SendInventoryUpdate(client, new InventoryFolderBase(linkedItemFolderId), false, true);
1369 1377
1370 client.SendInventoryFolderDetails(client.AgentId, folder.ID, contents.Items, contents.Folders, containingFolder.Version, fetchFolders, fetchItems); 1378 client.SendInventoryFolderDetails(
1379 client.AgentId, folder.ID, contents.Items, contents.Folders,
1380 containingFolder.Version, fetchFolders, fetchItems);
1371 } 1381 }
1372 } 1382 }
1373 1383
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index 1575e50..253adae 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -2706,8 +2706,10 @@ namespace OpenSim.Region.Framework.Scenes
2706 { 2706 {
2707 string homeURL = string.Empty; 2707 string homeURL = string.Empty;
2708 string first = aCircuit.firstname, last = aCircuit.lastname; 2708 string first = aCircuit.firstname, last = aCircuit.lastname;
2709
2709 if (aCircuit.ServiceURLs.ContainsKey("HomeURI")) 2710 if (aCircuit.ServiceURLs.ContainsKey("HomeURI"))
2710 homeURL = aCircuit.ServiceURLs["HomeURI"].ToString(); 2711 homeURL = aCircuit.ServiceURLs["HomeURI"].ToString();
2712
2711 if (aCircuit.lastname.StartsWith("@")) 2713 if (aCircuit.lastname.StartsWith("@"))
2712 { 2714 {
2713 string[] parts = aCircuit.firstname.Split('.'); 2715 string[] parts = aCircuit.firstname.Split('.');
@@ -2717,6 +2719,7 @@ namespace OpenSim.Region.Framework.Scenes
2717 last = parts[1]; 2719 last = parts[1];
2718 } 2720 }
2719 } 2721 }
2722
2720 uMan.AddUser(aCircuit.AgentID, first, last, homeURL); 2723 uMan.AddUser(aCircuit.AgentID, first, last, homeURL);
2721 } 2724 }
2722 } 2725 }
@@ -3530,7 +3533,6 @@ namespace OpenSim.Region.Framework.Scenes
3530 } 3533 }
3531 } 3534 }
3532 3535
3533
3534 // In all cases, add or update the circuit data with the new agent circuit data and teleport flags 3536 // In all cases, add or update the circuit data with the new agent circuit data and teleport flags
3535 agent.teleportFlags = teleportFlags; 3537 agent.teleportFlags = teleportFlags;
3536 m_authenticateHandler.AddNewCircuit(agent.circuitcode, agent); 3538 m_authenticateHandler.AddNewCircuit(agent.circuitcode, agent);
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
index e3744bd..ff1d520 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
@@ -806,7 +806,8 @@ namespace OpenSim.Region.Framework.Scenes
806 actor.Orientation = GetWorldRotation(); 806 actor.Orientation = GetWorldRotation();
807 807
808 // Tell the physics engines that this prim changed. 808 // Tell the physics engines that this prim changed.
809 m_parentGroup.Scene.PhysicsScene.AddPhysicsActorTaint(actor); 809 if (m_parentGroup.Scene != null)
810 m_parentGroup.Scene.PhysicsScene.AddPhysicsActorTaint(actor);
810 } 811 }
811 812
812 if (!m_parentGroup.m_dupeInProgress) 813 if (!m_parentGroup.m_dupeInProgress)
@@ -1117,6 +1118,9 @@ namespace OpenSim.Region.Framework.Scenes
1117 { 1118 {
1118 get 1119 get
1119 { 1120 {
1121 if (IsAttachment)
1122 return GroupPosition;
1123
1120 return GroupPosition + (m_offsetPosition * ParentGroup.RootPart.RotationOffset); 1124 return GroupPosition + (m_offsetPosition * ParentGroup.RootPart.RotationOffset);
1121 } 1125 }
1122 } 1126 }
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index af6f89c..d2f84e3 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -2251,10 +2251,9 @@ namespace OpenSim.Region.Framework.Scenes
2251 m_log.Warn("Sit requested on unknown object: " + targetID.ToString()); 2251 m_log.Warn("Sit requested on unknown object: " + targetID.ToString());
2252 } 2252 }
2253 2253
2254
2255
2256 SendSitResponse(remoteClient, targetID, offset, Quaternion.Identity); 2254 SendSitResponse(remoteClient, targetID, offset, Quaternion.Identity);
2257 } 2255 }
2256
2258 /* 2257 /*
2259 public void SitRayCastAvatarPosition(SceneObjectPart part) 2258 public void SitRayCastAvatarPosition(SceneObjectPart part)
2260 { 2259 {
@@ -2797,7 +2796,6 @@ namespace OpenSim.Region.Framework.Scenes
2797 /// <param name="remoteClient"></param> 2796 /// <param name="remoteClient"></param>
2798 public void SendTerseUpdateToClient(IClientAPI remoteClient) 2797 public void SendTerseUpdateToClient(IClientAPI remoteClient)
2799 { 2798 {
2800
2801 // If the client is inactive, it's getting its updates from another 2799 // If the client is inactive, it's getting its updates from another
2802 // server. 2800 // server.
2803 if (remoteClient.IsActive) 2801 if (remoteClient.IsActive)
@@ -2912,7 +2910,7 @@ namespace OpenSim.Region.Framework.Scenes
2912 } 2910 }
2913 2911
2914 // If we aren't using a cached appearance, then clear out the baked textures 2912 // If we aren't using a cached appearance, then clear out the baked textures
2915 if (! cachedappearance) 2913 if (!cachedappearance)
2916 { 2914 {
2917 m_appearance.ResetAppearance(); 2915 m_appearance.ResetAppearance();
2918 if (m_scene.AvatarFactory != null) 2916 if (m_scene.AvatarFactory != null)