aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region')
-rw-r--r--OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs23
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneGraph.cs30
2 files changed, 52 insertions, 1 deletions
diff --git a/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs b/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs
index 80b2859..dd55f98 100644
--- a/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs
+++ b/OpenSim/Region/CoreModules/World/Land/Tests/PrimCountModuleTests.cs
@@ -105,6 +105,29 @@ namespace OpenSim.Region.CoreModules.World.Land.Tests
105 } 105 }
106 106
107 /// <summary> 107 /// <summary>
108 /// Test count after a parcel owner owned copied object is added.
109 /// </summary>
110 [Test]
111 public void TestCopiedOwnerObject()
112 {
113 TestHelper.InMethod();
114// log4net.Config.XmlConfigurator.Configure();
115
116 IPrimCounts pc = m_lo.PrimCounts;
117
118 SceneObjectGroup sog = SceneSetupHelpers.CreateSceneObject(3, m_userId, 0x01);
119 m_scene.AddNewSceneObject(sog, false);
120 m_scene.SceneGraph.DuplicateObject(sog.LocalId, Vector3.Zero, 0, m_userId, UUID.Zero, Quaternion.Identity);
121
122 Assert.That(pc.Owner, Is.EqualTo(6));
123 Assert.That(pc.Group, Is.EqualTo(0));
124 Assert.That(pc.Others, Is.EqualTo(0));
125 Assert.That(pc.Users[m_userId], Is.EqualTo(6));
126 Assert.That(pc.Users[m_dummyUserId], Is.EqualTo(0));
127 Assert.That(pc.Simulator, Is.EqualTo(6));
128 }
129
130 /// <summary>
108 /// Test count after a parcel owner owned object is removed. 131 /// Test count after a parcel owner owned object is removed.
109 /// </summary> 132 /// </summary>
110 [Test] 133 [Test]
diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
index 1621398..60855b2 100644
--- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
@@ -363,6 +363,10 @@ namespace OpenSim.Region.Framework.Scenes
363 363
364 if (Entities.ContainsKey(sceneObject.UUID)) 364 if (Entities.ContainsKey(sceneObject.UUID))
365 return false; 365 return false;
366
367// m_log.DebugFormat(
368// "[SCENEGRAPH]: Adding scene object {0} {1}, with {2} parts on {3}",
369// sceneObject.Name, sceneObject.UUID, sceneObject.Parts.Length, m_parentScene.RegionInfo.RegionName);
366 370
367 SceneObjectPart[] children = sceneObject.Parts; 371 SceneObjectPart[] children = sceneObject.Parts;
368 372
@@ -1798,7 +1802,10 @@ namespace OpenSim.Region.Framework.Scenes
1798 /// <param name="rot"></param> 1802 /// <param name="rot"></param>
1799 public SceneObjectGroup DuplicateObject(uint originalPrimID, Vector3 offset, uint flags, UUID AgentID, UUID GroupID, Quaternion rot) 1803 public SceneObjectGroup DuplicateObject(uint originalPrimID, Vector3 offset, uint flags, UUID AgentID, UUID GroupID, Quaternion rot)
1800 { 1804 {
1801 //m_log.DebugFormat("[SCENE]: Duplication of object {0} at offset {1} requested by agent {2}", originalPrim, offset, AgentID); 1805// m_log.DebugFormat(
1806// "[SCENE]: Duplication of object {0} at offset {1} requested by agent {2}",
1807// originalPrimID, offset, AgentID);
1808
1802 SceneObjectGroup original = GetGroupByPrim(originalPrimID); 1809 SceneObjectGroup original = GetGroupByPrim(originalPrimID);
1803 if (original != null) 1810 if (original != null)
1804 { 1811 {
@@ -1829,7 +1836,28 @@ namespace OpenSim.Region.Framework.Scenes
1829 copy.RootPart.SalePrice = 10; 1836 copy.RootPart.SalePrice = 10;
1830 } 1837 }
1831 1838
1839 // FIXME: This section needs to be refactored so that it just calls AddSceneObject()
1832 Entities.Add(copy); 1840 Entities.Add(copy);
1841
1842 lock (SceneObjectGroupsByFullID)
1843 SceneObjectGroupsByFullID[copy.UUID] = copy;
1844
1845 SceneObjectPart[] children = copy.Parts;
1846
1847 lock (SceneObjectGroupsByFullPartID)
1848 {
1849 SceneObjectGroupsByFullPartID[copy.UUID] = copy;
1850 foreach (SceneObjectPart part in children)
1851 SceneObjectGroupsByFullPartID[part.UUID] = copy;
1852 }
1853
1854 lock (SceneObjectGroupsByLocalPartID)
1855 {
1856 SceneObjectGroupsByLocalPartID[copy.LocalId] = copy;
1857 foreach (SceneObjectPart part in children)
1858 SceneObjectGroupsByLocalPartID[copy.LocalId] = copy;
1859 }
1860 // PROBABLE END OF FIXME
1833 1861
1834 // Since we copy from a source group that is in selected 1862 // Since we copy from a source group that is in selected
1835 // state, but the copy is shown deselected in the viewer, 1863 // state, but the copy is shown deselected in the viewer,