aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Framework')
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.Inventory.cs23
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectPart.cs15
-rw-r--r--OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs103
-rw-r--r--OpenSim/Region/Framework/Scenes/Tests/SceneObjectScriptTests.cs2
-rw-r--r--OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAgentTests.cs2
5 files changed, 57 insertions, 88 deletions
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
index 817736f..58de44e 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
@@ -1491,12 +1491,27 @@ namespace OpenSim.Region.Framework.Scenes
1491// m_log.DebugFormat( 1491// m_log.DebugFormat(
1492// "[PRIM INVENTORY]: Updating item {0} in {1} for UpdateTaskInventory()", 1492// "[PRIM INVENTORY]: Updating item {0} in {1} for UpdateTaskInventory()",
1493// currentItem.Name, part.Name); 1493// currentItem.Name, part.Name);
1494 IAgentAssetTransactions agentTransactions = this.RequestModuleInterface<IAgentAssetTransactions>(); 1494
1495 if (agentTransactions != null) 1495 // Only look for an uploaded updated asset if we are passed a transaction ID. This is only the
1496 // case for updates uploded through UDP. Updates uploaded via a capability (e.g. a script update)
1497 // will not pass in a transaction ID in the update message.
1498 if (transactionID != UUID.Zero)
1496 { 1499 {
1497 agentTransactions.HandleTaskItemUpdateFromTransaction( 1500 IAgentAssetTransactions agentTransactions = this.RequestModuleInterface<IAgentAssetTransactions>();
1498 remoteClient, part, transactionID, currentItem); 1501 if (agentTransactions != null)
1502 {
1503 agentTransactions.HandleTaskItemUpdateFromTransaction(
1504 remoteClient, part, transactionID, currentItem);
1505
1506// if ((InventoryType)itemInfo.InvType == InventoryType.Notecard)
1507// remoteClient.SendAgentAlertMessage("Notecard saved", false);
1508// else if ((InventoryType)itemInfo.InvType == InventoryType.LSL)
1509// remoteClient.SendAgentAlertMessage("Script saved", false);
1510// else
1511// remoteClient.SendAgentAlertMessage("Item saved", false);
1512 }
1499 } 1513 }
1514
1500 // Base ALWAYS has move 1515 // Base ALWAYS has move
1501 currentItem.BasePermissions |= (uint)PermissionMask.Move; 1516 currentItem.BasePermissions |= (uint)PermissionMask.Move;
1502 1517
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
index 0d14963..a6c234e 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
@@ -2781,10 +2781,6 @@ namespace OpenSim.Region.Framework.Scenes
2781 if (ParentGroup == null) 2781 if (ParentGroup == null)
2782 return; 2782 return;
2783 2783
2784 // When running OpenSim tests, Scene (and EventManager can be null).
2785 // Need to fix tests before we can trigger this here
2786 // ParentGroup.Scene.EventManager.TriggerSceneObjectPartUpdated(this);
2787
2788 ParentGroup.QueueForUpdateCheck(); 2784 ParentGroup.QueueForUpdateCheck();
2789 2785
2790 int timeNow = Util.UnixTimeSinceEpoch(); 2786 int timeNow = Util.UnixTimeSinceEpoch();
@@ -2806,6 +2802,9 @@ namespace OpenSim.Region.Framework.Scenes
2806 // m_log.DebugFormat( 2802 // m_log.DebugFormat(
2807 // "[SCENE OBJECT PART]: Scheduling full update for {0}, {1} at {2}", 2803 // "[SCENE OBJECT PART]: Scheduling full update for {0}, {1} at {2}",
2808 // UUID, Name, TimeStampFull); 2804 // UUID, Name, TimeStampFull);
2805
2806 if (ParentGroup.Scene != null)
2807 ParentGroup.Scene.EventManager.TriggerSceneObjectPartUpdated(this);
2809 } 2808 }
2810 2809
2811 /// <summary> 2810 /// <summary>
@@ -2817,15 +2816,12 @@ namespace OpenSim.Region.Framework.Scenes
2817 if (ParentGroup == null) 2816 if (ParentGroup == null)
2818 return; 2817 return;
2819 2818
2820 // When running OpenSim tests, Scene (and EventManager can be null).
2821 // Need to fix tests before we can trigger this here
2822 // ParentGroup.Scene.EventManager.TriggerSceneObjectPartUpdated(this);
2823
2824 // This was pulled from SceneViewer. Attachments always receive full updates. 2819 // This was pulled from SceneViewer. Attachments always receive full updates.
2825 // I could not verify if this is a requirement but this maintains existing behavior 2820 // I could not verify if this is a requirement but this maintains existing behavior
2826 if (ParentGroup.IsAttachment) 2821 if (ParentGroup.IsAttachment)
2827 { 2822 {
2828 ScheduleFullUpdate(); 2823 ScheduleFullUpdate();
2824 return;
2829 } 2825 }
2830 2826
2831 if (UpdateFlag == UpdateRequired.NONE) 2827 if (UpdateFlag == UpdateRequired.NONE)
@@ -2840,6 +2836,9 @@ namespace OpenSim.Region.Framework.Scenes
2840 // "[SCENE OBJECT PART]: Scheduling terse update for {0}, {1} at {2}", 2836 // "[SCENE OBJECT PART]: Scheduling terse update for {0}, {1} at {2}",
2841 // UUID, Name, TimeStampTerse); 2837 // UUID, Name, TimeStampTerse);
2842 } 2838 }
2839
2840 if (ParentGroup.Scene != null)
2841 ParentGroup.Scene.EventManager.TriggerSceneObjectPartUpdated(this);
2843 } 2842 }
2844 2843
2845 public void ScriptSetPhysicsStatus(bool UsePhysics) 2844 public void ScriptSetPhysicsStatus(bool UsePhysics)
diff --git a/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs b/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs
index 6303cb1..ba33122 100644
--- a/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs
+++ b/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs
@@ -34,6 +34,7 @@ using System.Xml;
34using log4net; 34using log4net;
35using OpenMetaverse; 35using OpenMetaverse;
36using OpenSim.Framework; 36using OpenSim.Framework;
37using OpenSim.Framework.Serialization.External;
37using OpenSim.Region.Framework.Interfaces; 38using OpenSim.Region.Framework.Interfaces;
38using OpenSim.Region.Framework.Scenes; 39using OpenSim.Region.Framework.Scenes;
39 40
@@ -276,14 +277,14 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
276 277
277 #region manual serialization 278 #region manual serialization
278 279
279 private delegate void SOPXmlProcessor(SceneObjectPart sop, XmlTextReader reader); 280 private static Dictionary<string, Action<SceneObjectPart, XmlTextReader>> m_SOPXmlProcessors
280 private static Dictionary<string, SOPXmlProcessor> m_SOPXmlProcessors = new Dictionary<string, SOPXmlProcessor>(); 281 = new Dictionary<string, Action<SceneObjectPart, XmlTextReader>>();
281 282
282 private delegate void TaskInventoryXmlProcessor(TaskInventoryItem item, XmlTextReader reader); 283 private static Dictionary<string, Action<TaskInventoryItem, XmlTextReader>> m_TaskInventoryXmlProcessors
283 private static Dictionary<string, TaskInventoryXmlProcessor> m_TaskInventoryXmlProcessors = new Dictionary<string, TaskInventoryXmlProcessor>(); 284 = new Dictionary<string, Action<TaskInventoryItem, XmlTextReader>>();
284 285
285 private delegate void ShapeXmlProcessor(PrimitiveBaseShape shape, XmlTextReader reader); 286 private static Dictionary<string, Action<PrimitiveBaseShape, XmlTextReader>> m_ShapeXmlProcessors
286 private static Dictionary<string, ShapeXmlProcessor> m_ShapeXmlProcessors = new Dictionary<string, ShapeXmlProcessor>(); 287 = new Dictionary<string, Action<PrimitiveBaseShape, XmlTextReader>>();
287 288
288 static SceneObjectSerializer() 289 static SceneObjectSerializer()
289 { 290 {
@@ -1480,34 +1481,14 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
1480 1481
1481 reader.ReadStartElement("SceneObjectPart"); 1482 reader.ReadStartElement("SceneObjectPart");
1482 1483
1483 string nodeName = string.Empty; 1484 ExternalRepresentationUtils.ExecuteReadProcessors(
1484 while (reader.NodeType != XmlNodeType.EndElement) 1485 obj,
1485 { 1486 m_SOPXmlProcessors,
1486 nodeName = reader.Name; 1487 reader,
1487 SOPXmlProcessor p = null; 1488 (o, nodeName, e)
1488 if (m_SOPXmlProcessors.TryGetValue(reader.Name, out p)) 1489 => m_log.ErrorFormat(
1489 { 1490 "[SceneObjectSerializer]: Exception while parsing {0} in object {1} {2}: {3}{4}",
1490 //m_log.DebugFormat("[XXX] Processing: {0}", reader.Name); 1491 ((SceneObjectPart)o).Name, ((SceneObjectPart)o).UUID, nodeName, e.Message, e.StackTrace));
1491 try
1492 {
1493 p(obj, reader);
1494 }
1495 catch (Exception e)
1496 {
1497 m_log.DebugFormat(
1498 "[SceneObjectSerializer]: exception while parsing {0} in object {1} {2}: {3}{4}",
1499 obj.Name, obj.UUID, nodeName, e.Message, e.StackTrace);
1500 if (reader.NodeType == XmlNodeType.EndElement)
1501 reader.Read();
1502 }
1503 }
1504 else
1505 {
1506// m_log.DebugFormat("[SceneObjectSerializer]: caught unknown element {0}", nodeName);
1507 reader.ReadOuterXml(); // ignore
1508 }
1509
1510 }
1511 1492
1512 reader.ReadEndElement(); // SceneObjectPart 1493 reader.ReadEndElement(); // SceneObjectPart
1513 1494
@@ -1526,17 +1507,12 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
1526 reader.ReadStartElement("TaskInventoryItem", String.Empty); // TaskInventory 1507 reader.ReadStartElement("TaskInventoryItem", String.Empty); // TaskInventory
1527 1508
1528 TaskInventoryItem item = new TaskInventoryItem(); 1509 TaskInventoryItem item = new TaskInventoryItem();
1529 while (reader.NodeType != XmlNodeType.EndElement) 1510
1530 { 1511 ExternalRepresentationUtils.ExecuteReadProcessors(
1531 TaskInventoryXmlProcessor p = null; 1512 item,
1532 if (m_TaskInventoryXmlProcessors.TryGetValue(reader.Name, out p)) 1513 m_TaskInventoryXmlProcessors,
1533 p(item, reader); 1514 reader);
1534 else 1515
1535 {
1536// m_log.DebugFormat("[SceneObjectSerializer]: caught unknown element in TaskInventory {0}, {1}", reader.Name, reader.Value);
1537 reader.ReadOuterXml();
1538 }
1539 }
1540 reader.ReadEndElement(); // TaskInventoryItem 1516 reader.ReadEndElement(); // TaskInventoryItem
1541 tinv.Add(item.ItemID, item); 1517 tinv.Add(item.ItemID, item);
1542 1518
@@ -1563,35 +1539,14 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
1563 1539
1564 reader.ReadStartElement(name, String.Empty); // Shape 1540 reader.ReadStartElement(name, String.Empty); // Shape
1565 1541
1566 string nodeName = string.Empty; 1542 ExternalRepresentationUtils.ExecuteReadProcessors(
1567 while (reader.NodeType != XmlNodeType.EndElement) 1543 shape,
1568 { 1544 m_ShapeXmlProcessors,
1569 nodeName = reader.Name; 1545 reader,
1570 //m_log.DebugFormat("[XXX] Processing: {0}", reader.Name); 1546 (o, nodeName, e)
1571 ShapeXmlProcessor p = null; 1547 => m_log.ErrorFormat(
1572 if (m_ShapeXmlProcessors.TryGetValue(reader.Name, out p)) 1548 "[SceneObjectSerializer]: Exception while parsing Shape property {0}: {1}{2}",
1573 { 1549 nodeName, e.Message, e.StackTrace));
1574 try
1575 {
1576 p(shape, reader);
1577 }
1578 catch (Exception e)
1579 {
1580 errors = true;
1581 m_log.DebugFormat(
1582 "[SceneObjectSerializer]: exception while parsing Shape property {0}: {1}{2}",
1583 nodeName, e.Message, e.StackTrace);
1584
1585 if (reader.NodeType == XmlNodeType.EndElement)
1586 reader.Read();
1587 }
1588 }
1589 else
1590 {
1591 // m_log.DebugFormat("[SceneObjectSerializer]: caught unknown element in Shape {0}", reader.Name);
1592 reader.ReadOuterXml();
1593 }
1594 }
1595 1550
1596 reader.ReadEndElement(); // Shape 1551 reader.ReadEndElement(); // Shape
1597 1552
diff --git a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectScriptTests.cs b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectScriptTests.cs
index 6f99abd..c582cf6 100644
--- a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectScriptTests.cs
+++ b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectScriptTests.cs
@@ -49,7 +49,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests
49// log4net.Config.XmlConfigurator.Configure(); 49// log4net.Config.XmlConfigurator.Configure();
50 50
51 UUID userId = TestHelpers.ParseTail(0x1); 51 UUID userId = TestHelpers.ParseTail(0x1);
52 UUID itemId = TestHelpers.ParseTail(0x2); 52// UUID itemId = TestHelpers.ParseTail(0x2);
53 string itemName = "Test Script Item"; 53 string itemName = "Test Script Item";
54 54
55 Scene scene = SceneHelpers.SetupScene(); 55 Scene scene = SceneHelpers.SetupScene();
diff --git a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAgentTests.cs b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAgentTests.cs
index d4c299f..ed9b179 100644
--- a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAgentTests.cs
+++ b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceAgentTests.cs
@@ -174,7 +174,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests
174 TestHelpers.InMethod(); 174 TestHelpers.InMethod();
175// log4net.Config.XmlConfigurator.Configure(); 175// log4net.Config.XmlConfigurator.Configure();
176 176
177 UUID agent1Id = UUID.Parse("00000000-0000-0000-0000-000000000001"); 177// UUID agent1Id = UUID.Parse("00000000-0000-0000-0000-000000000001");
178 178
179 TestScene myScene1 = SceneHelpers.SetupScene("Neighbour y", UUID.Random(), 1000, 1000); 179 TestScene myScene1 = SceneHelpers.SetupScene("Neighbour y", UUID.Random(), 1000, 1000);
180 TestScene myScene2 = SceneHelpers.SetupScene("Neighbour y + 1", UUID.Random(), 1001, 1000); 180 TestScene myScene2 = SceneHelpers.SetupScene("Neighbour y + 1", UUID.Random(), 1001, 1000);