From d216f5779c5f03709d718e279420e13472d08aae Mon Sep 17 00:00:00 2001 From: mingchen Date: Mon, 16 Jul 2007 14:56:35 +0000 Subject: *Trunk compiles now *Added "RemoveEntity" and renamed "AddNewEntity" to "AddEntity" --- OpenSim/Region/Environment/ParcelManager.cs | 16 ++++++++++++++- OpenSim/Region/Environment/Scenes/Scene.cs | 32 ++++++++++++++++++++++++++--- 2 files changed, 44 insertions(+), 4 deletions(-) (limited to 'OpenSim/Region/Environment') diff --git a/OpenSim/Region/Environment/ParcelManager.cs b/OpenSim/Region/Environment/ParcelManager.cs index e413650..31b9b1d 100644 --- a/OpenSim/Region/Environment/ParcelManager.cs +++ b/OpenSim/Region/Environment/ParcelManager.cs @@ -1024,6 +1024,7 @@ namespace OpenSim.Region.Environment } #endregion + #region Object Select and Object Owner Listing public void sendForceObjectSelect(int local_id, int request_type, IClientAPI remote_client) { List resultLocalIDs = new List(); @@ -1123,6 +1124,19 @@ namespace OpenSim.Region.Environment remote_client.OutPacket(pack); } } + #endregion + + #region Object Returning + public void returnObject(SceneObject obj) + { + } + public void returnParcelObjects(int type, LLUUID owner) + { + + } + #endregion + + #region Object Adding/Removing from Parcel public void resetParcelPrimCounts() { parcelData.groupPrims = 0; @@ -1180,7 +1194,7 @@ namespace OpenSim.Region.Environment primsOverMe.Remove(obj); } } - + #endregion #endregion diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index ba57115..1e69c9e 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs @@ -155,7 +155,7 @@ namespace OpenSim.Region.Environment.Scenes List PrimsFromDB = storageManager.DataStore.LoadObjects(); foreach (SceneObject prim in PrimsFromDB) { - Prims.Add(prim.uuid, prim); + AddEntity(prim); } MainLog.Instance.Verbose("World.cs - loaded " + PrimsFromDB.Count.ToString() + " object(s)"); @@ -483,14 +483,40 @@ namespace OpenSim.Region.Environment.Scenes { SceneObject sceneOb = new SceneObject(this, m_eventManager, ownerID, this.PrimIDAllocate(), pos, shape); - AddNewEntity(sceneOb); + AddEntity(sceneOb); } - public void AddNewEntity(SceneObject sceneObject) + public void RemovePrim(uint localID, LLUUID avatar_deleter) + { + foreach (EntityBase obj in Entities.Values) + { + if (obj is SceneObject) + { + if (((SceneObject)obj).LocalId == localID) + { + RemoveEntity((SceneObject)obj); + return; + } + } + } + + } + + public void AddEntity(SceneObject sceneObject) { this.Entities.Add(sceneObject.rootUUID, sceneObject); } + public void RemoveEntity(SceneObject sceneObject) + { + if (this.Entities.ContainsKey(sceneObject.rootUUID)) + { + m_parcelManager.removePrimFromParcelCounts(sceneObject); + this.Entities.Remove(sceneObject.rootUUID); + m_parcelManager.setPrimsTainted(); + } + } + /// /// Called by a prim when it has been created/cloned, so that its events can be subscribed to /// -- cgit v1.1