diff options
Diffstat (limited to 'OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs')
-rw-r--r-- | OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs index 1e6cd8f..9042c04 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs | |||
@@ -436,12 +436,26 @@ namespace OpenSim.Region.Environment.Scenes | |||
436 | linkPart.SetParent(this); | 436 | linkPart.SetParent(this); |
437 | 437 | ||
438 | //TODO: rest of parts | 438 | //TODO: rest of parts |
439 | foreach (SceneObjectPart part in objectGroup.Children.Values) | ||
440 | { | ||
441 | if (part.UUID != objectGroup.m_rootPart.UUID) | ||
442 | { | ||
443 | this.LinkNonRootPart(part); | ||
444 | } | ||
445 | } | ||
439 | 446 | ||
440 | m_scene.EventManager.OnBackup -= objectGroup.ProcessBackup; | 447 | m_scene.EventManager.OnBackup -= objectGroup.ProcessBackup; |
441 | m_scene.DeleteEntity(objectGroup.UUID); | 448 | m_scene.DeleteEntity(objectGroup.UUID); |
442 | this.ScheduleGroupForFullUpdate(); | 449 | this.ScheduleGroupForFullUpdate(); |
443 | } | 450 | } |
444 | 451 | ||
452 | private void LinkNonRootPart(SceneObjectPart part) | ||
453 | { | ||
454 | part.SetParent(this); | ||
455 | part.ParentID = this.m_rootPart.LocalID; | ||
456 | this.m_parts.Add(part.UUID, part); | ||
457 | } | ||
458 | |||
445 | /// <summary> | 459 | /// <summary> |
446 | /// | 460 | /// |
447 | /// </summary> | 461 | /// </summary> |
@@ -812,7 +826,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
812 | /// <param name="datastore"></param> | 826 | /// <param name="datastore"></param> |
813 | public void ProcessBackup(OpenSim.Region.Interfaces.IRegionDataStore datastore) | 827 | public void ProcessBackup(OpenSim.Region.Interfaces.IRegionDataStore datastore) |
814 | { | 828 | { |
815 | datastore.StoreObject(this); | 829 | datastore.StoreObject(this, m_scene.RegionInfo.SimUUID); |
816 | } | 830 | } |
817 | #endregion | 831 | #endregion |
818 | 832 | ||