diff --git a/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs b/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs index 3f907237e4..f0f73b0f1b 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs @@ -270,6 +270,7 @@ namespace OpenSim.Region.Environment.Scenes remoteClient.SendInventoryItemUpdate(item); } + storageManager.DataStore.RemoveObject(((SceneObjectGroup)selectedEnt).UUID); ((SceneObjectGroup)selectedEnt).DeleteGroup(); lock (Entities) @@ -318,7 +319,7 @@ namespace OpenSim.Region.Environment.Scenes { SceneObjectGroup group = new SceneObjectGroup(this, this.m_regionHandle, xmlData); this.AddEntity(group); - group.Pos = pos; + group.AbsolutePosition = pos; } /// diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs index a5ad2e6225..ec62509df5 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs @@ -35,12 +35,11 @@ namespace OpenSim.Region.Environment.Scenes get { return 1; } } - public LLQuaternion Rotation + public LLQuaternion GroupRotation { get { return m_rootPart.RotationOffset; } } - /// /// /// @@ -538,7 +537,7 @@ namespace OpenSim.Region.Environment.Scenes SceneObjectPart part = this.GetChildPrim(localID); if (part != null) { - return part.PartName; + return part.Name; } return ""; } diff --git a/OpenSim/Region/Examples/SimpleApp/ComplexObject.cs b/OpenSim/Region/Examples/SimpleApp/ComplexObject.cs index 9276212ded..01af4f0a2b 100644 --- a/OpenSim/Region/Examples/SimpleApp/ComplexObject.cs +++ b/OpenSim/Region/Examples/SimpleApp/ComplexObject.cs @@ -31,7 +31,7 @@ namespace SimpleApp public override void UpdateMovement() { - UpdateGroupRotation(Rotation * m_rotationDirection); + UpdateGroupRotation(GroupRotation * m_rotationDirection); base.UpdateMovement(); } diff --git a/OpenSim/Region/Storage/OpenSim.DataStore.MonoSqlite/MonoSqliteDataStore.cs b/OpenSim/Region/Storage/OpenSim.DataStore.MonoSqlite/MonoSqliteDataStore.cs index b5e9e1cae6..6f12c47d31 100644 --- a/OpenSim/Region/Storage/OpenSim.DataStore.MonoSqlite/MonoSqliteDataStore.cs +++ b/OpenSim/Region/Storage/OpenSim.DataStore.MonoSqlite/MonoSqliteDataStore.cs @@ -475,7 +475,24 @@ namespace OpenSim.DataStore.MonoSqliteStorage public void RemoveObject(LLUUID obj) { - // TODO: remove code + DataTable prims = ds.Tables["prims"]; + DataTable shapes = ds.Tables["primshapes"]; + + string selectExp = "SceneGroupID = '" + obj.ToString() + "'"; + DataRow[] primRows = prims.Select(selectExp); + foreach (DataRow row in primRows) + { + LLUUID uuid = new LLUUID((string)row["UUID"]); + DataRow shapeRow = shapes.Rows.Find(uuid); + if (shapeRow != null) + { + shapeRow.Delete(); + } + row.Delete(); + } + + primDa.Update(ds, "prims"); + shapeDa.Update(ds, "primshapes"); } public List LoadObjects()