diff options
Diffstat (limited to '')
8 files changed, 201 insertions, 65 deletions
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 | ||