From cb90510e1631343e87f35e75af4022e3fc611103 Mon Sep 17 00:00:00 2001 From: MW Date: Thu, 16 Aug 2007 18:22:08 +0000 Subject: Had to rename Rotation in SceneObjectGroup to GroupRotation to stop conflict with Rotation in entitybase (couldn't override as they are different types (LL vs Axiom) and didn't want to add new). When you take prims into inventory (or delete them), they should now be removed from the prim datastore, so they no longer reappear in-world when you restart opensim. --- .../Region/Environment/Scenes/Scene.PacketHandlers.cs | 3 ++- OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs | 5 ++--- OpenSim/Region/Examples/SimpleApp/ComplexObject.cs | 2 +- .../MonoSqliteDataStore.cs | 19 ++++++++++++++++++- 4 files changed, 23 insertions(+), 6 deletions(-) (limited to 'OpenSim/Region') diff --git a/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs b/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs index 3f90723..f0f73b0 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 a5ad2e6..ec62509 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 9276212..01af4f0 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 b5e9e1c..6f12c47 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() -- cgit v1.1