diff options
Diffstat (limited to '')
18 files changed, 323 insertions, 93 deletions
diff --git a/OpenSim/Framework/Communications/Cache/AssetCache.cs b/OpenSim/Framework/Communications/Cache/AssetCache.cs index 3866e21..c08bef2 100644 --- a/OpenSim/Framework/Communications/Cache/AssetCache.cs +++ b/OpenSim/Framework/Communications/Cache/AssetCache.cs | |||
@@ -137,6 +137,16 @@ namespace OpenSim.Framework.Communications.Caches | |||
137 | return asset; | 137 | return asset; |
138 | } | 138 | } |
139 | 139 | ||
140 | public AssetBase GetAsset(LLUUID assetID, bool isTexture) | ||
141 | { | ||
142 | AssetBase asset = GetAsset(assetID); | ||
143 | if (asset == null) | ||
144 | { | ||
145 | this._assetServer.RequestAsset(assetID, isTexture); | ||
146 | } | ||
147 | return asset; | ||
148 | } | ||
149 | |||
140 | public void AddAsset(AssetBase asset) | 150 | public void AddAsset(AssetBase asset) |
141 | { | 151 | { |
142 | // Console.WriteLine("adding asset " + asset.FullID.ToStringHyphenated()); | 152 | // Console.WriteLine("adding asset " + asset.FullID.ToStringHyphenated()); |
@@ -241,44 +251,51 @@ namespace OpenSim.Framework.Communications.Caches | |||
241 | if (IsTexture) | 251 | if (IsTexture) |
242 | { | 252 | { |
243 | // Console.WriteLine("asset recieved from asset server"); | 253 | // Console.WriteLine("asset recieved from asset server"); |
254 | |||
244 | TextureImage image = new TextureImage(asset); | 255 | TextureImage image = new TextureImage(asset); |
245 | this.Textures.Add(image.FullID, image); | 256 | if (!this.Textures.ContainsKey(image.FullID)) |
246 | if (this.RequestedTextures.ContainsKey(image.FullID)) | ||
247 | { | 257 | { |
248 | AssetRequest req = this.RequestedTextures[image.FullID]; | 258 | this.Textures.Add(image.FullID, image); |
249 | req.ImageInfo = image; | 259 | if (this.RequestedTextures.ContainsKey(image.FullID)) |
250 | if (image.Data.LongLength > 600) | ||
251 | { | ||
252 | //over 600 bytes so split up file | ||
253 | req.NumPackets = 1 + (int)(image.Data.Length - 600 ) / 1000; | ||
254 | } | ||
255 | else | ||
256 | { | 260 | { |
257 | req.NumPackets = 1; | 261 | AssetRequest req = this.RequestedTextures[image.FullID]; |
262 | req.ImageInfo = image; | ||
263 | if (image.Data.LongLength > 600) | ||
264 | { | ||
265 | //over 600 bytes so split up file | ||
266 | req.NumPackets = 1 + (int)(image.Data.Length - 600) / 1000; | ||
267 | } | ||
268 | else | ||
269 | { | ||
270 | req.NumPackets = 1; | ||
271 | } | ||
272 | this.RequestedTextures.Remove(image.FullID); | ||
273 | this.TextureRequests.Add(req); | ||
258 | } | 274 | } |
259 | this.RequestedTextures.Remove(image.FullID); | ||
260 | this.TextureRequests.Add(req); | ||
261 | } | 275 | } |
262 | } | 276 | } |
263 | else | 277 | else |
264 | { | 278 | { |
265 | AssetInfo assetInf = new AssetInfo(asset); | 279 | AssetInfo assetInf = new AssetInfo(asset); |
266 | this.Assets.Add(assetInf.FullID, assetInf); | 280 | if (!this.Assets.ContainsKey(assetInf.FullID)) |
267 | if (this.RequestedAssets.ContainsKey(assetInf.FullID)) | ||
268 | { | 281 | { |
269 | AssetRequest req = this.RequestedAssets[assetInf.FullID]; | 282 | this.Assets.Add(assetInf.FullID, assetInf); |
270 | req.AssetInf = assetInf; | 283 | if (this.RequestedAssets.ContainsKey(assetInf.FullID)) |
271 | if (assetInf.Data.LongLength > 600) | ||
272 | { | ||
273 | //over 600 bytes so split up file | ||
274 | req.NumPackets = 1 + (int)(assetInf.Data.Length - 600 + 999) / 1000; | ||
275 | } | ||
276 | else | ||
277 | { | 284 | { |
278 | req.NumPackets = 1; | 285 | AssetRequest req = this.RequestedAssets[assetInf.FullID]; |
286 | req.AssetInf = assetInf; | ||
287 | if (assetInf.Data.LongLength > 600) | ||
288 | { | ||
289 | //over 600 bytes so split up file | ||
290 | req.NumPackets = 1 + (int)(assetInf.Data.Length - 600 + 999) / 1000; | ||
291 | } | ||
292 | else | ||
293 | { | ||
294 | req.NumPackets = 1; | ||
295 | } | ||
296 | this.RequestedAssets.Remove(assetInf.FullID); | ||
297 | this.AssetRequests.Add(req); | ||
279 | } | 298 | } |
280 | this.RequestedAssets.Remove(assetInf.FullID); | ||
281 | this.AssetRequests.Add(req); | ||
282 | } | 299 | } |
283 | } | 300 | } |
284 | } | 301 | } |
diff --git a/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs b/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs index 9970d80..ddb5658 100644 --- a/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs +++ b/OpenSim/Framework/Communications/Cache/CachedUserInfo.cs | |||
@@ -105,13 +105,27 @@ namespace OpenSim.Framework.Communications.Caches | |||
105 | } | 105 | } |
106 | } | 106 | } |
107 | 107 | ||
108 | public void updateItem(LLUUID userID, InventoryItemBase itemInfo) | 108 | public void UpdateItem(LLUUID userID, InventoryItemBase itemInfo) |
109 | { | 109 | { |
110 | if ((userID == this.UserProfile.UUID) && (this.RootFolder != null)) | 110 | if ((userID == this.UserProfile.UUID) && (this.RootFolder != null)) |
111 | { | 111 | { |
112 | this.m_parentCommsManager.InventoryServer.AddNewInventoryItem(userID, itemInfo); | 112 | this.m_parentCommsManager.InventoryServer.AddNewInventoryItem(userID, itemInfo); |
113 | } | 113 | } |
114 | } | 114 | } |
115 | |||
116 | public bool DeleteItem(LLUUID userID, InventoryItemBase item) | ||
117 | { | ||
118 | bool result = false; | ||
119 | if ((userID == this.UserProfile.UUID) && (this.RootFolder != null)) | ||
120 | { | ||
121 | result = RootFolder.DeleteItem(item.inventoryID); | ||
122 | if (result) | ||
123 | { | ||
124 | this.m_parentCommsManager.InventoryServer.DeleteInventoryItem(userID, item); | ||
125 | } | ||
126 | } | ||
127 | return result; | ||
128 | } | ||
115 | } | 129 | } |
116 | 130 | ||
117 | 131 | ||
diff --git a/OpenSim/Framework/Communications/Cache/InventoryFolder.cs b/OpenSim/Framework/Communications/Cache/InventoryFolder.cs index 6b0e2b4..34f83db 100644 --- a/OpenSim/Framework/Communications/Cache/InventoryFolder.cs +++ b/OpenSim/Framework/Communications/Cache/InventoryFolder.cs | |||
@@ -90,6 +90,26 @@ namespace OpenSim.Framework.Communications.Caches | |||
90 | return base2; | 90 | return base2; |
91 | } | 91 | } |
92 | 92 | ||
93 | public bool DeleteItem(LLUUID itemID) | ||
94 | { | ||
95 | bool found = false; | ||
96 | if (this.Items.ContainsKey(itemID)) | ||
97 | { | ||
98 | Items.Remove(itemID); | ||
99 | return true; | ||
100 | } | ||
101 | foreach (InventoryFolder folder in this.SubFolders.Values) | ||
102 | { | ||
103 | found = folder.DeleteItem(itemID); | ||
104 | if (found == true) | ||
105 | { | ||
106 | break; | ||
107 | } | ||
108 | } | ||
109 | return found; | ||
110 | } | ||
111 | |||
112 | |||
93 | public InventoryFolder HasSubFolder(LLUUID folderID) | 113 | public InventoryFolder HasSubFolder(LLUUID folderID) |
94 | { | 114 | { |
95 | InventoryFolder returnFolder = null; | 115 | InventoryFolder returnFolder = null; |
diff --git a/OpenSim/Framework/Communications/IInventoryServices.cs b/OpenSim/Framework/Communications/IInventoryServices.cs index 6f01cf2..bd58756 100644 --- a/OpenSim/Framework/Communications/IInventoryServices.cs +++ b/OpenSim/Framework/Communications/IInventoryServices.cs | |||
@@ -16,5 +16,6 @@ namespace OpenSim.Framework.Communications | |||
16 | void RequestInventoryForUser(LLUUID userID, InventoryFolderInfo folderCallBack, InventoryItemInfo itemCallBack); | 16 | void RequestInventoryForUser(LLUUID userID, InventoryFolderInfo folderCallBack, InventoryItemInfo itemCallBack); |
17 | void AddNewInventoryFolder(LLUUID userID, InventoryFolder folder); | 17 | void AddNewInventoryFolder(LLUUID userID, InventoryFolder folder); |
18 | void AddNewInventoryItem(LLUUID userID, InventoryItemBase item); | 18 | void AddNewInventoryItem(LLUUID userID, InventoryItemBase item); |
19 | void DeleteInventoryItem(LLUUID userID, InventoryItemBase item); | ||
19 | } | 20 | } |
20 | } | 21 | } |
diff --git a/OpenSim/Framework/Data.MySQL/MySQLInventoryData.cs b/OpenSim/Framework/Data.MySQL/MySQLInventoryData.cs index d8bfc4d..b02aa93 100644 --- a/OpenSim/Framework/Data.MySQL/MySQLInventoryData.cs +++ b/OpenSim/Framework/Data.MySQL/MySQLInventoryData.cs | |||
@@ -320,6 +320,15 @@ namespace OpenSim.Framework.Data.MySQL | |||
320 | } | 320 | } |
321 | 321 | ||
322 | /// <summary> | 322 | /// <summary> |
323 | /// | ||
324 | /// </summary> | ||
325 | /// <param name="item"></param> | ||
326 | public void deleteInventoryItem(InventoryItemBase item) | ||
327 | { | ||
328 | |||
329 | } | ||
330 | |||
331 | /// <summary> | ||
323 | /// Creates a new inventory folder | 332 | /// Creates a new inventory folder |
324 | /// </summary> | 333 | /// </summary> |
325 | /// <param name="folder">Folder to create</param> | 334 | /// <param name="folder">Folder to create</param> |
diff --git a/OpenSim/Framework/Data.SQLite/SQLiteInventoryStore.cs b/OpenSim/Framework/Data.SQLite/SQLiteInventoryStore.cs index 045fbee..fe494fb 100644 --- a/OpenSim/Framework/Data.SQLite/SQLiteInventoryStore.cs +++ b/OpenSim/Framework/Data.SQLite/SQLiteInventoryStore.cs | |||
@@ -447,6 +447,23 @@ namespace OpenSim.Framework.Data.SQLite | |||
447 | } | 447 | } |
448 | 448 | ||
449 | /// <summary> | 449 | /// <summary> |
450 | /// | ||
451 | /// </summary> | ||
452 | /// <param name="item"></param> | ||
453 | public void deleteInventoryItem(InventoryItemBase item) | ||
454 | { | ||
455 | DataTable inventoryItemTable = ds.Tables["inventoryitems"]; | ||
456 | |||
457 | DataRow inventoryRow = inventoryItemTable.Rows.Find(item.inventoryID); | ||
458 | if (inventoryRow != null) | ||
459 | { | ||
460 | inventoryRow.Delete(); | ||
461 | } | ||
462 | |||
463 | this.invItemsDa.Update(ds, "inventoryitems"); | ||
464 | } | ||
465 | |||
466 | /// <summary> | ||
450 | /// Adds a new folder specified by folder | 467 | /// Adds a new folder specified by folder |
451 | /// </summary> | 468 | /// </summary> |
452 | /// <param name="folder">The inventory folder</param> | 469 | /// <param name="folder">The inventory folder</param> |
diff --git a/OpenSim/Framework/Data/InventoryData.cs b/OpenSim/Framework/Data/InventoryData.cs index a12b87b..38c251c 100644 --- a/OpenSim/Framework/Data/InventoryData.cs +++ b/OpenSim/Framework/Data/InventoryData.cs | |||
@@ -202,6 +202,12 @@ namespace OpenSim.Framework.Data | |||
202 | void updateInventoryItem(InventoryItemBase item); | 202 | void updateInventoryItem(InventoryItemBase item); |
203 | 203 | ||
204 | /// <summary> | 204 | /// <summary> |
205 | /// | ||
206 | /// </summary> | ||
207 | /// <param name="item"></param> | ||
208 | void deleteInventoryItem(InventoryItemBase item); | ||
209 | |||
210 | /// <summary> | ||
205 | /// Adds a new folder specified by folder | 211 | /// Adds a new folder specified by folder |
206 | /// </summary> | 212 | /// </summary> |
207 | /// <param name="folder">The inventory folder</param> | 213 | /// <param name="folder">The inventory folder</param> |
diff --git a/OpenSim/Framework/General/Interfaces/IClientAPI.cs b/OpenSim/Framework/General/Interfaces/IClientAPI.cs index f39d0c7..8db1e15 100644 --- a/OpenSim/Framework/General/Interfaces/IClientAPI.cs +++ b/OpenSim/Framework/General/Interfaces/IClientAPI.cs | |||
@@ -36,7 +36,7 @@ namespace OpenSim.Framework.Interfaces | |||
36 | { | 36 | { |
37 | public delegate void ChatFromViewer(byte[] message, byte type, LLVector3 fromPos, string fromName, LLUUID fromAgentID); | 37 | public delegate void ChatFromViewer(byte[] message, byte type, LLVector3 fromPos, string fromName, LLUUID fromAgentID); |
38 | public delegate void ImprovedInstantMessage(LLUUID fromAgentID, LLUUID toAgentID, uint timestamp, string fromAgentName, string message); // Cut down from full list | 38 | public delegate void ImprovedInstantMessage(LLUUID fromAgentID, LLUUID toAgentID, uint timestamp, string fromAgentName, string message); // Cut down from full list |
39 | public delegate void RezObject(AssetBase primAsset, LLVector3 pos); | 39 | public delegate void RezObject(IClientAPI remoteClient, LLUUID itemID, LLVector3 pos); |
40 | public delegate void ModifyTerrain(float height, float seconds, byte size, byte action, float north, float west, IClientAPI remoteClient); | 40 | public delegate void ModifyTerrain(float height, float seconds, byte size, byte action, float north, float west, IClientAPI remoteClient); |
41 | public delegate void SetAppearance(byte[] texture, AgentSetAppearancePacket.VisualParamBlock[] visualParam); | 41 | public delegate void SetAppearance(byte[] texture, AgentSetAppearancePacket.VisualParamBlock[] visualParam); |
42 | public delegate void StartAnim(LLUUID animID, int seq); | 42 | public delegate void StartAnim(LLUUID animID, int seq); |
@@ -210,6 +210,7 @@ namespace OpenSim.Framework.Interfaces | |||
210 | void SendInventoryFolderDetails(LLUUID ownerID, LLUUID folderID, List<InventoryItemBase> items); | 210 | void SendInventoryFolderDetails(LLUUID ownerID, LLUUID folderID, List<InventoryItemBase> items); |
211 | void SendInventoryItemDetails(LLUUID ownerID, InventoryItemBase item); | 211 | void SendInventoryItemDetails(LLUUID ownerID, InventoryItemBase item); |
212 | void SendInventoryItemUpdate(InventoryItemBase Item); | 212 | void SendInventoryItemUpdate(InventoryItemBase Item); |
213 | void SendRemoveInventoryItem(LLUUID itemID); | ||
213 | void SendTaskInventory(LLUUID taskID, short serial, byte[] fileName); | 214 | void SendTaskInventory(LLUUID taskID, short serial, byte[] fileName); |
214 | 215 | ||
215 | void SendNameReply(LLUUID profileId, string firstname, string lastname); | 216 | void SendNameReply(LLUUID profileId, string firstname, string lastname); |
diff --git a/OpenSim/Framework/General/NullClientAPI.cs b/OpenSim/Framework/General/NullClientAPI.cs index e85b88f..6be2563 100644 --- a/OpenSim/Framework/General/NullClientAPI.cs +++ b/OpenSim/Framework/General/NullClientAPI.cs | |||
@@ -138,6 +138,7 @@ namespace OpenSim.Framework | |||
138 | public virtual void SendInventoryFolderDetails(LLUUID ownerID, LLUUID folderID, List<InventoryItemBase> items){} | 138 | public virtual void SendInventoryFolderDetails(LLUUID ownerID, LLUUID folderID, List<InventoryItemBase> items){} |
139 | public virtual void SendInventoryItemDetails(LLUUID ownerID, InventoryItemBase item){} | 139 | public virtual void SendInventoryItemDetails(LLUUID ownerID, InventoryItemBase item){} |
140 | public virtual void SendInventoryItemUpdate(InventoryItemBase Item) { } | 140 | public virtual void SendInventoryItemUpdate(InventoryItemBase Item) { } |
141 | public virtual void SendRemoveInventoryItem(LLUUID itemID) { } | ||
141 | public virtual void SendTaskInventory(LLUUID taskID, short serial, byte[] fileName) { } | 142 | public virtual void SendTaskInventory(LLUUID taskID, short serial, byte[] fileName) { } |
142 | 143 | ||
143 | public virtual void SendNameReply(LLUUID profileId, string firstname, string lastname){} | 144 | public virtual void SendNameReply(LLUUID profileId, string firstname, string lastname){} |
diff --git a/OpenSim/Framework/InventoryServiceBase/InventoryServiceBase.cs b/OpenSim/Framework/InventoryServiceBase/InventoryServiceBase.cs index bc55d05..20d3a77 100644 --- a/OpenSim/Framework/InventoryServiceBase/InventoryServiceBase.cs +++ b/OpenSim/Framework/InventoryServiceBase/InventoryServiceBase.cs | |||
@@ -124,6 +124,14 @@ namespace OpenSim.Framework.InventoryServiceBase | |||
124 | } | 124 | } |
125 | } | 125 | } |
126 | 126 | ||
127 | public void deleteItem(InventoryItemBase item) | ||
128 | { | ||
129 | foreach (KeyValuePair<string, IInventoryData> plugin in m_plugins) | ||
130 | { | ||
131 | plugin.Value.deleteInventoryItem(item); | ||
132 | } | ||
133 | } | ||
134 | |||
127 | /// <summary> | 135 | /// <summary> |
128 | /// | 136 | /// |
129 | /// </summary> | 137 | /// </summary> |
diff --git a/OpenSim/Region/ClientStack/ClientView.API.cs b/OpenSim/Region/ClientStack/ClientView.API.cs index d7962dc..f655674 100644 --- a/OpenSim/Region/ClientStack/ClientView.API.cs +++ b/OpenSim/Region/ClientStack/ClientView.API.cs | |||
@@ -630,6 +630,18 @@ namespace OpenSim.Region.ClientStack | |||
630 | OutPacket(InventoryReply); | 630 | OutPacket(InventoryReply); |
631 | } | 631 | } |
632 | 632 | ||
633 | public void SendRemoveInventoryItem(LLUUID itemID) | ||
634 | { | ||
635 | RemoveInventoryItemPacket remove = new RemoveInventoryItemPacket(); | ||
636 | remove.AgentData.AgentID = this.AgentID; | ||
637 | remove.AgentData.SessionID = this.SessionID; | ||
638 | remove.InventoryData = new RemoveInventoryItemPacket.InventoryDataBlock[1]; | ||
639 | remove.InventoryData[0] = new RemoveInventoryItemPacket.InventoryDataBlock(); | ||
640 | remove.InventoryData[0].ItemID = itemID; | ||
641 | |||
642 | OutPacket(remove); | ||
643 | } | ||
644 | |||
633 | public void SendTaskInventory(LLUUID taskID, short serial, byte[] fileName) | 645 | public void SendTaskInventory(LLUUID taskID, short serial, byte[] fileName) |
634 | { | 646 | { |
635 | ReplyTaskInventoryPacket replytask = new ReplyTaskInventoryPacket(); | 647 | ReplyTaskInventoryPacket replytask = new ReplyTaskInventoryPacket(); |
diff --git a/OpenSim/Region/ClientStack/ClientView.ProcessPackets.cs b/OpenSim/Region/ClientStack/ClientView.ProcessPackets.cs index f380c25..89df290 100644 --- a/OpenSim/Region/ClientStack/ClientView.ProcessPackets.cs +++ b/OpenSim/Region/ClientStack/ClientView.ProcessPackets.cs | |||
@@ -45,12 +45,12 @@ namespace OpenSim.Region.ClientStack | |||
45 | get { return m_moneyBalance; } | 45 | get { return m_moneyBalance; } |
46 | } | 46 | } |
47 | 47 | ||
48 | public bool AddMoney( int debit ) | 48 | public bool AddMoney(int debit) |
49 | { | 49 | { |
50 | if( m_moneyBalance + debit >= 0 ) | 50 | if (m_moneyBalance + debit >= 0) |
51 | { | 51 | { |
52 | m_moneyBalance += debit; | 52 | m_moneyBalance += debit; |
53 | SendMoneyBalance( LLUUID.Zero, true, Helpers.StringToField("Poof Poof!"), m_moneyBalance ); | 53 | SendMoneyBalance(LLUUID.Zero, true, Helpers.StringToField("Poof Poof!"), m_moneyBalance); |
54 | return true; | 54 | return true; |
55 | } | 55 | } |
56 | else | 56 | else |
@@ -58,7 +58,7 @@ namespace OpenSim.Region.ClientStack | |||
58 | return false; | 58 | return false; |
59 | } | 59 | } |
60 | } | 60 | } |
61 | 61 | ||
62 | protected override void ProcessInPacket(Packet Pack) | 62 | protected override void ProcessInPacket(Packet Pack) |
63 | { | 63 | { |
64 | ack_pack(Pack); | 64 | ack_pack(Pack); |
@@ -126,21 +126,9 @@ namespace OpenSim.Region.ClientStack | |||
126 | break; | 126 | break; |
127 | case PacketType.RezObject: | 127 | case PacketType.RezObject: |
128 | RezObjectPacket rezPacket = (RezObjectPacket)Pack; | 128 | RezObjectPacket rezPacket = (RezObjectPacket)Pack; |
129 | AgentInventory inven = this.m_inventoryCache.GetAgentsInventory(this.AgentID); | 129 | if (OnRezObject != null) |
130 | if (inven != null) | ||
131 | { | 130 | { |
132 | if (inven.InventoryItems.ContainsKey(rezPacket.InventoryData.ItemID)) | 131 | this.OnRezObject(this, rezPacket.InventoryData.ItemID, rezPacket.RezData.RayEnd); |
133 | { | ||
134 | AssetBase asset = this.m_assetCache.GetAsset(inven.InventoryItems[rezPacket.InventoryData.ItemID].AssetID); | ||
135 | if (asset != null) | ||
136 | { | ||
137 | if (OnRezObject != null) | ||
138 | { | ||
139 | this.OnRezObject(asset, rezPacket.RezData.RayEnd); | ||
140 | this.m_inventoryCache.DeleteInventoryItem(this, rezPacket.InventoryData.ItemID); | ||
141 | } | ||
142 | } | ||
143 | } | ||
144 | } | 132 | } |
145 | break; | 133 | break; |
146 | case PacketType.DeRezObject: | 134 | case PacketType.DeRezObject: |
diff --git a/OpenSim/Region/Communications/Local/LocalInventoryService.cs b/OpenSim/Region/Communications/Local/LocalInventoryService.cs index 8295cfa..af58d33 100644 --- a/OpenSim/Region/Communications/Local/LocalInventoryService.cs +++ b/OpenSim/Region/Communications/Local/LocalInventoryService.cs | |||
@@ -63,5 +63,10 @@ namespace OpenSim.Region.Communications.Local | |||
63 | { | 63 | { |
64 | this.AddItem(item); | 64 | this.AddItem(item); |
65 | } | 65 | } |
66 | |||
67 | public void DeleteInventoryItem(LLUUID userID, InventoryItemBase item) | ||
68 | { | ||
69 | this.deleteItem(item); | ||
70 | } | ||
66 | } | 71 | } |
67 | } | 72 | } |
diff --git a/OpenSim/Region/Communications/OGS1/OGS1InventoryService.cs b/OpenSim/Region/Communications/OGS1/OGS1InventoryService.cs index a98684e..70ab75e 100644 --- a/OpenSim/Region/Communications/OGS1/OGS1InventoryService.cs +++ b/OpenSim/Region/Communications/OGS1/OGS1InventoryService.cs | |||
@@ -29,5 +29,10 @@ namespace OpenSim.Region.Communications.OGS1 | |||
29 | { | 29 | { |
30 | 30 | ||
31 | } | 31 | } |
32 | |||
33 | public void DeleteInventoryItem(LLUUID userID, InventoryItemBase item) | ||
34 | { | ||
35 | |||
36 | } | ||
32 | } | 37 | } |
33 | } | 38 | } |
diff --git a/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs b/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs index 10bdd54..b901d23 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs | |||
@@ -34,6 +34,7 @@ using OpenSim.Framework.Interfaces; | |||
34 | using OpenSim.Framework.Types; | 34 | using OpenSim.Framework.Types; |
35 | using OpenSim.Framework.Communications.Caches; | 35 | using OpenSim.Framework.Communications.Caches; |
36 | using OpenSim.Framework.Data; | 36 | using OpenSim.Framework.Data; |
37 | using OpenSim.Framework.Utilities; | ||
37 | 38 | ||
38 | namespace OpenSim.Region.Environment.Scenes | 39 | namespace OpenSim.Region.Environment.Scenes |
39 | { | 40 | { |
@@ -209,23 +210,13 @@ namespace OpenSim.Region.Environment.Scenes | |||
209 | /// <summary> | 210 | /// <summary> |
210 | /// | 211 | /// |
211 | /// </summary> | 212 | /// </summary> |
212 | /// <param name="primAsset"></param> | ||
213 | /// <param name="pos"></param> | ||
214 | public void RezObject(AssetBase primAsset, LLVector3 pos) | ||
215 | { | ||
216 | |||
217 | } | ||
218 | |||
219 | /// <summary> | ||
220 | /// | ||
221 | /// </summary> | ||
222 | /// <param name="packet"></param> | 213 | /// <param name="packet"></param> |
223 | /// <param name="simClient"></param> | 214 | /// <param name="simClient"></param> |
224 | public void DeRezObject(Packet packet, IClientAPI simClient) | 215 | public void DeRezObject(Packet packet, IClientAPI remoteClient) |
225 | { | 216 | { |
226 | DeRezObjectPacket DeRezPacket = (DeRezObjectPacket)packet; | 217 | DeRezObjectPacket DeRezPacket = (DeRezObjectPacket)packet; |
227 | 218 | ||
228 | 219 | ||
229 | if (DeRezPacket.AgentBlock.DestinationID == LLUUID.Zero) | 220 | if (DeRezPacket.AgentBlock.DestinationID == LLUUID.Zero) |
230 | { | 221 | { |
231 | //currently following code not used (or don't know of any case of destination being zero | 222 | //currently following code not used (or don't know of any case of destination being zero |
@@ -246,17 +237,76 @@ namespace OpenSim.Region.Environment.Scenes | |||
246 | } | 237 | } |
247 | if (selectedEnt != null) | 238 | if (selectedEnt != null) |
248 | { | 239 | { |
249 | if (PermissionsMngr.CanDeRezObject(simClient.AgentId, selectedEnt.m_uuid)) | 240 | if (PermissionsMngr.CanDeRezObject(remoteClient.AgentId,((SceneObjectGroup)selectedEnt).UUID)) |
250 | { | 241 | { |
251 | List<ScenePresence> avatars = this.RequestAvatarList(); | 242 | string sceneObjectXml = ((SceneObjectGroup)selectedEnt).ToXmlString(); |
252 | foreach (ScenePresence avatar in avatars) | 243 | CachedUserInfo userInfo = commsManager.UserProfiles.GetUserDetails(remoteClient.AgentId); |
244 | if (userInfo != null) | ||
253 | { | 245 | { |
254 | avatar.ControllingClient.SendKillObject(this.m_regionHandle, selectedEnt.LocalId); | 246 | AssetBase asset = new AssetBase(); |
247 | asset.Name = ((SceneObjectGroup)selectedEnt).GetPartName(selectedEnt.LocalId); | ||
248 | asset.Description = ((SceneObjectGroup)selectedEnt).GetPartDescription(selectedEnt.LocalId); | ||
249 | asset.InvType = 6; | ||
250 | asset.Type = 6; | ||
251 | asset.FullID = LLUUID.Random(); | ||
252 | asset.Data = Helpers.StringToField(sceneObjectXml); | ||
253 | this.assetCache.AddAsset(asset); | ||
254 | |||
255 | |||
256 | InventoryItemBase item = new InventoryItemBase(); | ||
257 | item.avatarID = remoteClient.AgentId; | ||
258 | item.creatorsID = remoteClient.AgentId; | ||
259 | item.inventoryID = LLUUID.Random(); | ||
260 | item.assetID = asset.FullID; | ||
261 | item.inventoryDescription = asset.Description; | ||
262 | item.inventoryName = asset.Name; | ||
263 | item.assetType = asset.Type; | ||
264 | item.invType = asset.InvType; | ||
265 | item.parentFolderID = DeRezPacket.AgentBlock.DestinationID; | ||
266 | item.inventoryCurrentPermissions = 2147483647; | ||
267 | item.inventoryNextPermissions = 2147483647; | ||
268 | |||
269 | userInfo.AddItem(remoteClient.AgentId, item); | ||
270 | remoteClient.SendInventoryItemUpdate(item); | ||
255 | } | 271 | } |
256 | 272 | ||
273 | ((SceneObjectGroup)selectedEnt).DeleteGroup(); | ||
274 | |||
257 | lock (Entities) | 275 | lock (Entities) |
258 | { | 276 | { |
259 | Entities.Remove(selectedEnt.m_uuid); | 277 | Entities.Remove(((SceneObjectGroup) selectedEnt).UUID); |
278 | } | ||
279 | } | ||
280 | } | ||
281 | } | ||
282 | } | ||
283 | } | ||
284 | |||
285 | public void RezObject(IClientAPI remoteClient, LLUUID itemID, LLVector3 pos) | ||
286 | { | ||
287 | CachedUserInfo userInfo = commsManager.UserProfiles.GetUserDetails(remoteClient.AgentId); | ||
288 | if (userInfo != null) | ||
289 | { | ||
290 | if(userInfo.RootFolder != null) | ||
291 | { | ||
292 | InventoryItemBase item = userInfo.RootFolder.HasItem(itemID); | ||
293 | if (item != null) | ||
294 | { | ||
295 | AssetBase rezAsset = this.assetCache.GetAsset(item.assetID, false); | ||
296 | if (rezAsset != null) | ||
297 | { | ||
298 | this.AddRezObject(Util.FieldToString(rezAsset.Data), pos); | ||
299 | userInfo.DeleteItem(remoteClient.AgentId, item); | ||
300 | remoteClient.SendRemoveInventoryItem(itemID); | ||
301 | } | ||
302 | else | ||
303 | { | ||
304 | rezAsset = this.assetCache.GetAsset(item.assetID, false); | ||
305 | if (rezAsset != null) | ||
306 | { | ||
307 | this.AddRezObject(Util.FieldToString(rezAsset.Data), pos); | ||
308 | userInfo.DeleteItem(remoteClient.AgentId, item); | ||
309 | remoteClient.SendRemoveInventoryItem(itemID); | ||
260 | } | 310 | } |
261 | } | 311 | } |
262 | } | 312 | } |
@@ -264,6 +314,13 @@ namespace OpenSim.Region.Environment.Scenes | |||
264 | } | 314 | } |
265 | } | 315 | } |
266 | 316 | ||
317 | private void AddRezObject(string xmlData, LLVector3 pos) | ||
318 | { | ||
319 | SceneObjectGroup group = new SceneObjectGroup(this, this.m_regionHandle, xmlData); | ||
320 | this.AddEntity(group); | ||
321 | group.Pos = pos; | ||
322 | } | ||
323 | |||
267 | /// <summary> | 324 | /// <summary> |
268 | /// | 325 | /// |
269 | /// </summary> | 326 | /// </summary> |
@@ -301,11 +358,11 @@ namespace OpenSim.Region.Environment.Scenes | |||
301 | this.Entities.Add(copy.UUID, copy); | 358 | this.Entities.Add(copy.UUID, copy); |
302 | 359 | ||
303 | copy.ScheduleGroupForFullUpdate(); | 360 | copy.ScheduleGroupForFullUpdate(); |
304 | /* List<ScenePresence> avatars = this.RequestAvatarList(); | 361 | /* List<ScenePresence> avatars = this.RequestAvatarList(); |
305 | for (int i = 0; i < avatars.Count; i++) | 362 | for (int i = 0; i < avatars.Count; i++) |
306 | { | 363 | { |
307 | // copy.SendAllChildPrimsToClient(avatars[i].ControllingClient); | 364 | // copy.SendAllChildPrimsToClient(avatars[i].ControllingClient); |
308 | }*/ | 365 | }*/ |
309 | 366 | ||
310 | } | 367 | } |
311 | else | 368 | else |
@@ -620,7 +677,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
620 | if (hasPrim != false) | 677 | if (hasPrim != false) |
621 | { | 678 | { |
622 | ((SceneObjectGroup)ent).UpdateGroupRotation(pos, rot); | 679 | ((SceneObjectGroup)ent).UpdateGroupRotation(pos, rot); |
623 | // prim.UpdateGroupMouseRotation(pos, rot); | 680 | // prim.UpdateGroupMouseRotation(pos, rot); |
624 | break; | 681 | break; |
625 | } | 682 | } |
626 | } | 683 | } |
@@ -665,7 +722,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
665 | { | 722 | { |
666 | if (ent is SceneObjectGroup) | 723 | if (ent is SceneObjectGroup) |
667 | { | 724 | { |
668 | // prim = ((SceneObject)ent).HasChildPrim(localID); | 725 | // prim = ((SceneObject)ent).HasChildPrim(localID); |
669 | if (prim != null) | 726 | if (prim != null) |
670 | { | 727 | { |
671 | prim.UpdateSingleRotation(rot); | 728 | prim.UpdateSingleRotation(rot); |
@@ -692,7 +749,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
692 | if (hasPrim != false) | 749 | if (hasPrim != false) |
693 | { | 750 | { |
694 | ((SceneObjectGroup)ent).Resize(scale, localID); | 751 | ((SceneObjectGroup)ent).Resize(scale, localID); |
695 | // prim.ResizeGoup(scale); | 752 | // prim.ResizeGoup(scale); |
696 | break; | 753 | break; |
697 | } | 754 | } |
698 | } | 755 | } |
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index 378acf9..96bb97a 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs | |||
@@ -538,7 +538,10 @@ namespace OpenSim.Region.Environment.Scenes | |||
538 | 538 | ||
539 | public void AddEntity(SceneObjectGroup sceneObject) | 539 | public void AddEntity(SceneObjectGroup sceneObject) |
540 | { | 540 | { |
541 | Entities.Add(sceneObject.UUID, sceneObject); | 541 | if(!Entities.ContainsKey(sceneObject.UUID)) |
542 | { | ||
543 | Entities.Add(sceneObject.UUID, sceneObject); | ||
544 | } | ||
542 | } | 545 | } |
543 | 546 | ||
544 | public void RemoveEntity(SceneObjectGroup sceneObject) | 547 | public void RemoveEntity(SceneObjectGroup sceneObject) |
@@ -604,6 +607,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
604 | client.OnObjectDeselect += DeselectPrim; | 607 | client.OnObjectDeselect += DeselectPrim; |
605 | client.OnGrabUpdate += MoveObject; | 608 | client.OnGrabUpdate += MoveObject; |
606 | client.OnDeRezObject += DeRezObject; | 609 | client.OnDeRezObject += DeRezObject; |
610 | client.OnRezObject += RezObject; | ||
607 | client.OnNameFromUUIDRequest += commsManager.HandleUUIDNameRequest; | 611 | client.OnNameFromUUIDRequest += commsManager.HandleUUIDNameRequest; |
608 | client.OnObjectDescription += PrimDescription; | 612 | client.OnObjectDescription += PrimDescription; |
609 | client.OnObjectName += PrimName; | 613 | client.OnObjectName += PrimName; |
@@ -1114,7 +1118,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
1114 | this.assetCache.AddAsset(asset); | 1118 | this.assetCache.AddAsset(asset); |
1115 | 1119 | ||
1116 | item.assetID = asset.FullID; | 1120 | item.assetID = asset.FullID; |
1117 | userInfo.updateItem(remoteClient.AgentId, item); | 1121 | userInfo.UpdateItem(remoteClient.AgentId, item); |
1118 | 1122 | ||
1119 | // remoteClient.SendInventoryItemUpdate(item); | 1123 | // remoteClient.SendInventoryItemUpdate(item); |
1120 | 1124 | ||
diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs index 77d936d..73f199e 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs | |||
@@ -39,7 +39,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
39 | { | 39 | { |
40 | get { return m_rootPart.RotationOffset; } | 40 | get { return m_rootPart.RotationOffset; } |
41 | } | 41 | } |
42 | 42 | ||
43 | 43 | ||
44 | /// <summary> | 44 | /// <summary> |
45 | /// | 45 | /// |
@@ -108,6 +108,12 @@ namespace OpenSim.Region.Environment.Scenes | |||
108 | get { return m_rootPart.OwnerID; } | 108 | get { return m_rootPart.OwnerID; } |
109 | } | 109 | } |
110 | 110 | ||
111 | public string Text | ||
112 | { | ||
113 | get { return m_rootPart.Text; } | ||
114 | set { m_rootPart.Text = value; } | ||
115 | } | ||
116 | |||
111 | /// <summary> | 117 | /// <summary> |
112 | /// Added because the Parcel code seems to use it | 118 | /// Added because the Parcel code seems to use it |
113 | /// but not sure a object should have this | 119 | /// but not sure a object should have this |
@@ -143,19 +149,40 @@ namespace OpenSim.Region.Environment.Scenes | |||
143 | 149 | ||
144 | StringReader sr = new StringReader(xmlData); | 150 | StringReader sr = new StringReader(xmlData); |
145 | XmlTextReader reader = new XmlTextReader(sr); | 151 | XmlTextReader reader = new XmlTextReader(sr); |
152 | reader.Read(); | ||
146 | reader.ReadStartElement("SceneObjectGroup"); | 153 | reader.ReadStartElement("SceneObjectGroup"); |
147 | reader.ReadStartElement("RootPart"); | 154 | reader.ReadStartElement("RootPart"); |
148 | this.m_rootPart = SceneObjectPart.FromXml(reader); | 155 | this.m_rootPart = SceneObjectPart.FromXml(reader); |
149 | reader.ReadEndElement(); | 156 | reader.ReadEndElement(); |
150 | //TODO: read and create rest of the parts | 157 | |
151 | reader.ReadEndElement(); | 158 | while (reader.Read()) |
159 | { | ||
160 | switch (reader.NodeType) | ||
161 | { | ||
162 | case XmlNodeType.Element: | ||
163 | if (reader.Name == "Part") | ||
164 | { | ||
165 | reader.Read(); | ||
166 | SceneObjectPart Part = SceneObjectPart.FromXml(reader); | ||
167 | Part.LocalID = m_scene.PrimIDAllocate(); | ||
168 | this.AddPart(Part); | ||
169 | Part.RegionHandle = m_regionHandle; | ||
170 | } | ||
171 | break; | ||
172 | case XmlNodeType.EndElement: | ||
173 | break; | ||
174 | } | ||
175 | } | ||
152 | reader.Close(); | 176 | reader.Close(); |
153 | sr.Close(); | 177 | sr.Close(); |
154 | 178 | this.m_rootPart.SetParent(this); | |
155 | this.m_parts.Add(m_rootPart.UUID, m_rootPart); | 179 | this.m_parts.Add(m_rootPart.UUID, m_rootPart); |
156 | this.m_rootPart.LocalID = m_scene.PrimIDAllocate(); | 180 | this.m_rootPart.LocalID = m_scene.PrimIDAllocate(); |
181 | this.m_rootPart.ParentID = 0; | ||
157 | this.m_rootPart.RegionHandle = m_regionHandle; | 182 | this.m_rootPart.RegionHandle = m_regionHandle; |
183 | this.UpdateParentIDs(); | ||
158 | m_scene.EventManager.OnBackup += this.ProcessBackup; | 184 | m_scene.EventManager.OnBackup += this.ProcessBackup; |
185 | this.ScheduleGroupForFullUpdate(); | ||
159 | } | 186 | } |
160 | 187 | ||
161 | /// <summary> | 188 | /// <summary> |
@@ -192,6 +219,17 @@ namespace OpenSim.Region.Environment.Scenes | |||
192 | writer.WriteStartElement(String.Empty, "RootPart", String.Empty); | 219 | writer.WriteStartElement(String.Empty, "RootPart", String.Empty); |
193 | m_rootPart.ToXml(writer); | 220 | m_rootPart.ToXml(writer); |
194 | writer.WriteEndElement(); | 221 | writer.WriteEndElement(); |
222 | writer.WriteStartElement(String.Empty, "OtherParts", String.Empty); | ||
223 | foreach (SceneObjectPart part in this.m_parts.Values) | ||
224 | { | ||
225 | if (part.UUID != this.m_rootPart.UUID) | ||
226 | { | ||
227 | writer.WriteStartElement(String.Empty, "Part", String.Empty); | ||
228 | part.ToXml(writer); | ||
229 | writer.WriteEndElement(); | ||
230 | } | ||
231 | } | ||
232 | writer.WriteEndElement(); | ||
195 | writer.WriteEndElement(); | 233 | writer.WriteEndElement(); |
196 | writer.Close(); | 234 | writer.Close(); |
197 | // System.Console.WriteLine("prim: " + sw.ToString()); | 235 | // System.Console.WriteLine("prim: " + sw.ToString()); |
@@ -215,11 +253,11 @@ namespace OpenSim.Region.Environment.Scenes | |||
215 | dupe.m_regionHandle = this.m_regionHandle; | 253 | dupe.m_regionHandle = this.m_regionHandle; |
216 | 254 | ||
217 | dupe.CopyRootPart(this.m_rootPart); | 255 | dupe.CopyRootPart(this.m_rootPart); |
218 | 256 | ||
219 | List<SceneObjectPart> partList = new List<SceneObjectPart>(this.m_parts.Values); | 257 | List<SceneObjectPart> partList = new List<SceneObjectPart>(this.m_parts.Values); |
220 | foreach (SceneObjectPart part in partList) | 258 | foreach (SceneObjectPart part in partList) |
221 | { | 259 | { |
222 | if (part.UUID != this.m_rootPart.UUID) | 260 | if (part.UUID != this.m_rootPart.UUID) |
223 | { | 261 | { |
224 | dupe.CopyPart(part); | 262 | dupe.CopyPart(part); |
225 | } | 263 | } |
@@ -477,13 +515,6 @@ namespace OpenSim.Region.Environment.Scenes | |||
477 | } | 515 | } |
478 | } | 516 | } |
479 | 517 | ||
480 | public string Text | ||
481 | { | ||
482 | get { return m_rootPart.Text; } | ||
483 | set { m_rootPart.Text = value; } | ||
484 | } | ||
485 | |||
486 | |||
487 | public void SetPartText(string text, uint localID) | 518 | public void SetPartText(string text, uint localID) |
488 | { | 519 | { |
489 | SceneObjectPart part = this.GetChildPrim(localID); | 520 | SceneObjectPart part = this.GetChildPrim(localID); |
@@ -502,6 +533,26 @@ namespace OpenSim.Region.Environment.Scenes | |||
502 | } | 533 | } |
503 | } | 534 | } |
504 | 535 | ||
536 | public string GetPartName(uint localID) | ||
537 | { | ||
538 | SceneObjectPart part = this.GetChildPrim(localID); | ||
539 | if (part != null) | ||
540 | { | ||
541 | return part.PartName; | ||
542 | } | ||
543 | return ""; | ||
544 | } | ||
545 | |||
546 | public string GetPartDescription(uint localID) | ||
547 | { | ||
548 | SceneObjectPart part = this.GetChildPrim(localID); | ||
549 | if (part != null) | ||
550 | { | ||
551 | return part.Description; | ||
552 | } | ||
553 | return ""; | ||
554 | } | ||
555 | |||
505 | /// <summary> | 556 | /// <summary> |
506 | /// | 557 | /// |
507 | /// </summary> | 558 | /// </summary> |
@@ -598,7 +649,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
598 | SceneObjectPart part = this.GetChildPrim(localID); | 649 | SceneObjectPart part = this.GetChildPrim(localID); |
599 | if (part != null) | 650 | if (part != null) |
600 | { | 651 | { |
601 | if (part.UUID== this.m_rootPart.UUID) | 652 | if (part.UUID == this.m_rootPart.UUID) |
602 | { | 653 | { |
603 | this.UpdateRootPosition(pos); | 654 | this.UpdateRootPosition(pos); |
604 | } | 655 | } |
@@ -805,14 +856,14 @@ namespace OpenSim.Region.Environment.Scenes | |||
805 | 856 | ||
806 | public override void UpdateMovement() | 857 | public override void UpdateMovement() |
807 | { | 858 | { |
808 | foreach( SceneObjectPart part in m_parts.Values ) | 859 | foreach (SceneObjectPart part in m_parts.Values) |
809 | { | 860 | { |
810 | part.UpdateMovement(); | 861 | part.UpdateMovement(); |
811 | } | 862 | } |
812 | 863 | ||
813 | base.UpdateMovement(); | 864 | base.UpdateMovement(); |
814 | } | 865 | } |
815 | 866 | ||
816 | /// <summary> | 867 | /// <summary> |
817 | /// Added as a way for the storage provider to reset the scene, | 868 | /// Added as a way for the storage provider to reset the scene, |
818 | /// most likely a better way to do this sort of thing but for now... | 869 | /// most likely a better way to do this sort of thing but for now... |
@@ -857,8 +908,8 @@ namespace OpenSim.Region.Environment.Scenes | |||
857 | } | 908 | } |
858 | return null; | 909 | return null; |
859 | } | 910 | } |
860 | 911 | ||
861 | public void UpdateText( string text ) | 912 | public void UpdateText(string text) |
862 | { | 913 | { |
863 | m_rootPart.Text = text; | 914 | m_rootPart.Text = text; |
864 | m_rootPart.ScheduleTerseUpdate(); | 915 | m_rootPart.ScheduleTerseUpdate(); |
@@ -866,7 +917,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
866 | 917 | ||
867 | public void ObjectGrabHandler(uint localId, LLVector3 offsetPos, IClientAPI remoteClient) | 918 | public void ObjectGrabHandler(uint localId, LLVector3 offsetPos, IClientAPI remoteClient) |
868 | { | 919 | { |
869 | if( m_rootPart.LocalID == localId ) | 920 | if (m_rootPart.LocalID == localId) |
870 | { | 921 | { |
871 | OnGrabGroup(offsetPos, remoteClient); | 922 | OnGrabGroup(offsetPos, remoteClient); |
872 | } | 923 | } |
@@ -886,5 +937,18 @@ namespace OpenSim.Region.Environment.Scenes | |||
886 | { | 937 | { |
887 | 938 | ||
888 | } | 939 | } |
940 | |||
941 | public void DeleteGroup() | ||
942 | { | ||
943 | m_scene.EventManager.OnBackup -= this.ProcessBackup; | ||
944 | foreach (SceneObjectPart part in this.m_parts.Values) | ||
945 | { | ||
946 | List<ScenePresence> avatars = this.RequestSceneAvatars(); | ||
947 | for (int i = 0; i < avatars.Count; i++) | ||
948 | { | ||
949 | avatars[i].ControllingClient.SendKillObject(this.m_regionHandle, part.LocalID); | ||
950 | } | ||
951 | } | ||
952 | } | ||
889 | } | 953 | } |
890 | } | 954 | } |
diff --git a/OpenSim/Region/Examples/SimpleApp/MyNpcCharacter.cs b/OpenSim/Region/Examples/SimpleApp/MyNpcCharacter.cs index 8bd7496..25b62b8 100644 --- a/OpenSim/Region/Examples/SimpleApp/MyNpcCharacter.cs +++ b/OpenSim/Region/Examples/SimpleApp/MyNpcCharacter.cs | |||
@@ -153,6 +153,7 @@ namespace SimpleApp | |||
153 | public virtual void SendInventoryFolderDetails(LLUUID ownerID, LLUUID folderID, List<InventoryItemBase> items) { } | 153 | public virtual void SendInventoryFolderDetails(LLUUID ownerID, LLUUID folderID, List<InventoryItemBase> items) { } |
154 | public virtual void SendInventoryItemDetails(LLUUID ownerID, InventoryItemBase item) { } | 154 | public virtual void SendInventoryItemDetails(LLUUID ownerID, InventoryItemBase item) { } |
155 | public virtual void SendInventoryItemUpdate(InventoryItemBase Item) { } | 155 | public virtual void SendInventoryItemUpdate(InventoryItemBase Item) { } |
156 | public virtual void SendRemoveInventoryItem(LLUUID itemID) { } | ||
156 | public virtual void SendTaskInventory(LLUUID taskID, short serial, byte[] fileName) { } | 157 | public virtual void SendTaskInventory(LLUUID taskID, short serial, byte[] fileName) { } |
157 | public virtual void SendNameReply(LLUUID profileId, string firstname, string lastname) { } | 158 | public virtual void SendNameReply(LLUUID profileId, string firstname, string lastname) { } |
158 | 159 | ||