diff --git a/OpenSim/Data/MSSQL/MSSQLRegionData.cs b/OpenSim/Data/MSSQL/MSSQLRegionData.cs index 6f4edd13ef..3669bdce49 100644 --- a/OpenSim/Data/MSSQL/MSSQLRegionData.cs +++ b/OpenSim/Data/MSSQL/MSSQLRegionData.cs @@ -210,8 +210,8 @@ namespace OpenSim.Data.MSSQL "No shape found for prim in storage, so setting default box shape"); prim.Shape = PrimitiveBaseShape.Default; } - group.AddPart(prim); - group.RootPart = prim; + + group.SetRootPart(prim); createdObjects.Add(group.UUID, group); retvals.Add(group); diff --git a/OpenSim/Data/MySQL/MySQLRegionData.cs b/OpenSim/Data/MySQL/MySQLRegionData.cs index 27bfec870b..70940db744 100644 --- a/OpenSim/Data/MySQL/MySQLRegionData.cs +++ b/OpenSim/Data/MySQL/MySQLRegionData.cs @@ -421,8 +421,8 @@ namespace OpenSim.Data.MySQL "No shape found for prim in storage, so setting default box shape"); prim.Shape = PrimitiveBaseShape.Default; } - group.AddPart(prim); - group.RootPart = prim; + + group.SetRootPart(prim); createdObjects.Add(group.UUID, group); retvals.Add(group); LoadItems(prim); diff --git a/OpenSim/Data/NHibernate/NHibernateRegionData.cs b/OpenSim/Data/NHibernate/NHibernateRegionData.cs index ecb29feb26..833f1b79ef 100644 --- a/OpenSim/Data/NHibernate/NHibernateRegionData.cs +++ b/OpenSim/Data/NHibernate/NHibernateRegionData.cs @@ -195,8 +195,7 @@ namespace OpenSim.Data.NHibernate // root part if (p.UUID == uuid) { - group.AddPart(p); - group.RootPart = p; + group.SetRootPart(p); } else { @@ -244,8 +243,7 @@ namespace OpenSim.Data.NHibernate if (p.UUID == p.ParentUUID) { SceneObjectGroup group = new SceneObjectGroup(); - group.AddPart(p); - group.RootPart = p; + group.SetRootPart(p); SOG.Add(p.ParentUUID, group); } else diff --git a/OpenSim/Data/SQLite/SQLiteRegionData.cs b/OpenSim/Data/SQLite/SQLiteRegionData.cs index 93d9406845..cc3ad06364 100644 --- a/OpenSim/Data/SQLite/SQLiteRegionData.cs +++ b/OpenSim/Data/SQLite/SQLiteRegionData.cs @@ -436,8 +436,8 @@ namespace OpenSim.Data.SQLite "[REGION DB]: No shape found for prim in storage, so setting default box shape"); prim.Shape = PrimitiveBaseShape.Default; } - group.AddPart(prim); - group.RootPart = prim; + + group.SetRootPart(prim); createdObjects.Add(group.UUID, group); retvals.Add(group); LoadItems(prim); @@ -1102,8 +1102,7 @@ namespace OpenSim.Data.SQLite // sop.TouchName = ""; // sop.UUID = UUID.Random(); // sop.Shape = PrimitiveBaseShape.Default; - // sog.AddPart(sop); - // sog.RootPart = sop; + // sog.SetRootPart(sop); // Add breakpoint in above line. Check sop fields. // TODO: this doesn't work yet because something more diff --git a/OpenSim/Data/Tests/BasicRegionTest.cs b/OpenSim/Data/Tests/BasicRegionTest.cs index 12435c96c2..ab46ed44d2 100644 --- a/OpenSim/Data/Tests/BasicRegionTest.cs +++ b/OpenSim/Data/Tests/BasicRegionTest.cs @@ -315,8 +315,7 @@ namespace OpenSim.Data.Tests sop.ObjectFlags = 0; SceneObjectGroup sog = new SceneObjectGroup(); - sog.AddPart(sop); - sog.RootPart = sop; + sog.SetRootPart(sop); // Inserts group in DB db.StoreObject(sog,region3); @@ -795,8 +794,7 @@ namespace OpenSim.Data.Tests sop.Shape = PrimitiveBaseShape.Default; SceneObjectGroup sog = new SceneObjectGroup(); - sog.AddPart(sop); - sog.RootPart = sop; + sog.SetRootPart(sop); return sog; } diff --git a/OpenSim/Region/Environment/Modules/ContentManagementSystem/MetaEntity.cs b/OpenSim/Region/Environment/Modules/ContentManagementSystem/MetaEntity.cs index 801f8ff194..d654a1a2cd 100644 --- a/OpenSim/Region/Environment/Modules/ContentManagementSystem/MetaEntity.cs +++ b/OpenSim/Region/Environment/Modules/ContentManagementSystem/MetaEntity.cs @@ -132,7 +132,6 @@ namespace OpenSim.Region.Environment.Modules.ContentManagement public SceneObjectPart RootPart { get { return m_Entity.RootPart; } - set { m_Entity.RootPart = value; } } public Scene Scene diff --git a/OpenSim/Region/Environment/Modules/ContentManagementSystem/PointMetaEntity.cs b/OpenSim/Region/Environment/Modules/ContentManagementSystem/PointMetaEntity.cs index bf7d944f15..5db95455a9 100644 --- a/OpenSim/Region/Environment/Modules/ContentManagementSystem/PointMetaEntity.cs +++ b/OpenSim/Region/Environment/Modules/ContentManagementSystem/PointMetaEntity.cs @@ -104,11 +104,7 @@ namespace OpenSim.Region.Environment.Modules.ContentManagement //Initialize group and add part as root part x.SetScene(scene); - y.SetParent(x); - y.ParentID = 0; - y.LinkNum = 0; - x.Children.Add(y.UUID, y); - x.RootPart = y; + x.SetRootPart(y); x.RegionHandle = scene.RegionInfo.RegionHandle; x.SetScene(scene); diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs index 8f88d8ea9d..d2bd698115 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs @@ -184,10 +184,12 @@ namespace OpenSim.Region.Environment.Scenes set { m_parts = value; } } + /// + /// The root part of this scene object + /// public SceneObjectPart RootPart { get { return m_rootPart; } - set { m_rootPart = value; } } public ulong RegionHandle @@ -877,7 +879,7 @@ namespace OpenSim.Region.Environment.Scenes /// Set a part to act as the root part for this scene object /// /// - private void SetRootPart(SceneObjectPart part) + public void SetRootPart(SceneObjectPart part) { part.SetParent(this); part.ParentID = 0; @@ -1886,7 +1888,7 @@ namespace OpenSim.Region.Environment.Scenes m_scene.UnlinkSceneObject(objectGroup.UUID, true); objectGroup.Children.Clear(); - objectGroup.RootPart = null; + objectGroup.m_rootPart = null; // TODO Deleting the original group object may cause problems later on if they have already // made it into the update queue. However, sending out updates for those parts is now diff --git a/OpenSim/Region/Environment/Scenes/Tests/SceneTests.cs b/OpenSim/Region/Environment/Scenes/Tests/SceneTests.cs index 4a038e24a9..de37eb4f0a 100644 --- a/OpenSim/Region/Environment/Scenes/Tests/SceneTests.cs +++ b/OpenSim/Region/Environment/Scenes/Tests/SceneTests.cs @@ -78,10 +78,8 @@ namespace OpenSim.Region.Environment.Scenes.Tests SceneObjectPart part = new SceneObjectPart(UUID.Zero, PrimitiveBaseShape.Default, Vector3.Zero, Quaternion.Identity, Vector3.Zero); //part.UpdatePrimFlags(false, false, true); - part.ObjectFlags |= (uint)PrimFlags.Phantom; - - sceneObject.RootPart = part; - sceneObject.AddPart(part); + part.ObjectFlags |= (uint)PrimFlags.Phantom; + sceneObject.SetRootPart(part); scene.AddNewSceneObject(sceneObject, false);