diff options
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/SceneGraph.cs')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SceneGraph.cs | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs index 973891b..bc91961 100644 --- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs +++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs | |||
@@ -462,6 +462,20 @@ namespace OpenSim.Region.Framework.Scenes | |||
462 | return true; | 462 | return true; |
463 | } | 463 | } |
464 | 464 | ||
465 | public void updateScenePartGroup(SceneObjectPart part, SceneObjectGroup grp) | ||
466 | { | ||
467 | // no tests, caller has responsability... | ||
468 | lock (SceneObjectGroupsByFullPartID) | ||
469 | { | ||
470 | SceneObjectGroupsByFullPartID[part.UUID] = grp; | ||
471 | } | ||
472 | |||
473 | lock (SceneObjectGroupsByLocalPartID) | ||
474 | { | ||
475 | SceneObjectGroupsByLocalPartID[part.LocalId] = grp; | ||
476 | } | ||
477 | } | ||
478 | |||
465 | /// <summary> | 479 | /// <summary> |
466 | /// Delete an object from the scene | 480 | /// Delete an object from the scene |
467 | /// </summary> | 481 | /// </summary> |
@@ -1804,7 +1818,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1804 | List<SceneObjectGroup> childGroups = new List<SceneObjectGroup>(); | 1818 | List<SceneObjectGroup> childGroups = new List<SceneObjectGroup>(); |
1805 | 1819 | ||
1806 | // We do this in reverse to get the link order of the prims correct | 1820 | // We do this in reverse to get the link order of the prims correct |
1807 | for (int i = 0 ; i < children.Count ; i++) | 1821 | for (int i = 0; i < children.Count; i++) |
1808 | { | 1822 | { |
1809 | SceneObjectGroup child = children[i].ParentGroup; | 1823 | SceneObjectGroup child = children[i].ParentGroup; |
1810 | 1824 | ||
@@ -1815,7 +1829,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1815 | // Make sure no child prim is set for sale | 1829 | // Make sure no child prim is set for sale |
1816 | // So that, on delink, no prims are unwittingly | 1830 | // So that, on delink, no prims are unwittingly |
1817 | // left for sale and sold off | 1831 | // left for sale and sold off |
1818 | 1832 | ||
1819 | if (child != null) | 1833 | if (child != null) |
1820 | { | 1834 | { |
1821 | child.RootPart.ObjectSaleType = 0; | 1835 | child.RootPart.ObjectSaleType = 0; |
@@ -1850,12 +1864,13 @@ namespace OpenSim.Region.Framework.Scenes | |||
1850 | } | 1864 | } |
1851 | finally | 1865 | finally |
1852 | { | 1866 | { |
1867 | /* | ||
1853 | lock (SceneObjectGroupsByLocalPartID) | 1868 | lock (SceneObjectGroupsByLocalPartID) |
1854 | { | 1869 | { |
1855 | foreach (SceneObjectPart part in parentGroup.Parts) | 1870 | foreach (SceneObjectPart part in parentGroup.Parts) |
1856 | SceneObjectGroupsByLocalPartID[part.LocalId] = parentGroup; | 1871 | SceneObjectGroupsByLocalPartID[part.LocalId] = parentGroup; |
1857 | } | 1872 | } |
1858 | 1873 | */ | |
1859 | parentGroup.AdjustChildPrimPermissions(); | 1874 | parentGroup.AdjustChildPrimPermissions(); |
1860 | parentGroup.HasGroupChanged = true; | 1875 | parentGroup.HasGroupChanged = true; |
1861 | parentGroup.ProcessBackup(m_parentScene.SimulationDataService, true); | 1876 | parentGroup.ProcessBackup(m_parentScene.SimulationDataService, true); |