diff options
author | MW | 2007-07-11 17:47:25 +0000 |
---|---|---|
committer | MW | 2007-07-11 17:47:25 +0000 |
commit | 2ceff87a02d9862497d1d8fa965851ae2d9c9b1b (patch) | |
tree | 47cbd7a3fe7678c9ac2d56ace21ea4ebf8f628ef /OpenSim/Region | |
parent | updated libsecondlife.dll to a 1.18 version (from the libsecondlife aditi bra... (diff) | |
download | opensim-SC-2ceff87a02d9862497d1d8fa965851ae2d9c9b1b.zip opensim-SC-2ceff87a02d9862497d1d8fa965851ae2d9c9b1b.tar.gz opensim-SC-2ceff87a02d9862497d1d8fa965851ae2d9c9b1b.tar.bz2 opensim-SC-2ceff87a02d9862497d1d8fa965851ae2d9c9b1b.tar.xz |
More work on UserProfile and inventory cache (still currently not enabled).
Asset uploading over CAPS now works, and although inventory isn't really working yet, this should now at least enables texturing of prims.
Diffstat (limited to 'OpenSim/Region')
-rw-r--r-- | OpenSim/Region/Caches/CachedUserInfo.cs | 20 | ||||
-rw-r--r-- | OpenSim/Region/Caches/InventoryFolder.cs | 51 | ||||
-rw-r--r-- | OpenSim/Region/Caches/UserProfileCache.cs | 75 | ||||
-rw-r--r-- | OpenSim/Region/Capabilities/Caps.cs | 20 | ||||
-rw-r--r-- | OpenSim/Region/Capabilities/LLSDCapsDetails.cs | 2 | ||||
-rw-r--r-- | OpenSim/Region/ClientStack/Assets/InventoryCache.cs | 1 | ||||
-rw-r--r-- | OpenSim/Region/ClientStack/ClientView.API.cs | 122 |
7 files changed, 113 insertions, 178 deletions
diff --git a/OpenSim/Region/Caches/CachedUserInfo.cs b/OpenSim/Region/Caches/CachedUserInfo.cs deleted file mode 100644 index 08a7848..0000000 --- a/OpenSim/Region/Caches/CachedUserInfo.cs +++ /dev/null | |||
@@ -1,20 +0,0 @@ | |||
1 | using System; | ||
2 | using System.Collections.Generic; | ||
3 | using System.Text; | ||
4 | using OpenSim.Framework.Data; | ||
5 | using libsecondlife; | ||
6 | |||
7 | namespace OpenSim.Region.Caches | ||
8 | { | ||
9 | public class CachedUserInfo | ||
10 | { | ||
11 | public UserProfileData UserProfile; | ||
12 | //public Dictionary<LLUUID, InventoryFolder> Folders = new Dictionary<LLUUID, InventoryFolder>(); | ||
13 | public InventoryFolder RootFolder; | ||
14 | |||
15 | public CachedUserInfo() | ||
16 | { | ||
17 | |||
18 | } | ||
19 | } | ||
20 | } | ||
diff --git a/OpenSim/Region/Caches/InventoryFolder.cs b/OpenSim/Region/Caches/InventoryFolder.cs deleted file mode 100644 index 364a184..0000000 --- a/OpenSim/Region/Caches/InventoryFolder.cs +++ /dev/null | |||
@@ -1,51 +0,0 @@ | |||
1 | using System; | ||
2 | using System.Collections.Generic; | ||
3 | using System.Text; | ||
4 | using libsecondlife; | ||
5 | using OpenSim.Framework.Data; | ||
6 | |||
7 | namespace OpenSim.Region.Caches | ||
8 | { | ||
9 | public class InventoryFolder : InventoryFolderBase | ||
10 | { | ||
11 | public Dictionary<LLUUID, InventoryFolder> SubFolders = new Dictionary<LLUUID, InventoryFolder>(); | ||
12 | public Dictionary<LLUUID, InventoryItemBase> Items = new Dictionary<LLUUID, InventoryItemBase>(); | ||
13 | |||
14 | public InventoryFolder() | ||
15 | { | ||
16 | } | ||
17 | |||
18 | public InventoryFolder HasSubFolder(LLUUID folderID) | ||
19 | { | ||
20 | InventoryFolder returnFolder = null; | ||
21 | if (this.SubFolders.ContainsKey(folderID)) | ||
22 | { | ||
23 | returnFolder = this.SubFolders[folderID]; | ||
24 | } | ||
25 | else | ||
26 | { | ||
27 | foreach (InventoryFolder folder in this.SubFolders.Values) | ||
28 | { | ||
29 | returnFolder = folder.HasSubFolder(folderID); | ||
30 | if (returnFolder != null) | ||
31 | { | ||
32 | break; | ||
33 | } | ||
34 | } | ||
35 | } | ||
36 | return returnFolder; | ||
37 | } | ||
38 | |||
39 | public InventoryFolder CreateNewSubFolder(LLUUID folderID, string folderName, ushort type) | ||
40 | { | ||
41 | InventoryFolder subFold = new InventoryFolder(); | ||
42 | subFold.name = folderName; | ||
43 | subFold.folderID = folderID; | ||
44 | subFold.type = type; | ||
45 | subFold.parentID = this.folderID; | ||
46 | subFold.agentID = this.agentID; | ||
47 | this.SubFolders.Add(subFold.folderID, subFold); | ||
48 | return subFold; | ||
49 | } | ||
50 | } | ||
51 | } | ||
diff --git a/OpenSim/Region/Caches/UserProfileCache.cs b/OpenSim/Region/Caches/UserProfileCache.cs deleted file mode 100644 index 0717e55..0000000 --- a/OpenSim/Region/Caches/UserProfileCache.cs +++ /dev/null | |||
@@ -1,75 +0,0 @@ | |||
1 | using System; | ||
2 | using System.Collections.Generic; | ||
3 | using System.Text; | ||
4 | using libsecondlife; | ||
5 | using OpenSim.Framework.Data; | ||
6 | |||
7 | namespace OpenSim.Region.Caches | ||
8 | { | ||
9 | public class UserProfileCache | ||
10 | { | ||
11 | public Dictionary<LLUUID, CachedUserInfo> UserProfiles = new Dictionary<LLUUID, CachedUserInfo>(); | ||
12 | |||
13 | public UserProfileCache() | ||
14 | { | ||
15 | |||
16 | } | ||
17 | |||
18 | /// <summary> | ||
19 | /// A new user has moved into a region in this instance | ||
20 | /// so get info from servers | ||
21 | /// </summary> | ||
22 | /// <param name="userID"></param> | ||
23 | public void AddNewUser(LLUUID userID) | ||
24 | { | ||
25 | |||
26 | } | ||
27 | |||
28 | /// <summary> | ||
29 | /// A user has left this instance | ||
30 | /// so make sure servers have been updated | ||
31 | /// Then remove cached info | ||
32 | /// </summary> | ||
33 | /// <param name="userID"></param> | ||
34 | public void UserLogOut(LLUUID userID) | ||
35 | { | ||
36 | |||
37 | } | ||
38 | |||
39 | /// <summary> | ||
40 | /// Request the user profile from User server | ||
41 | /// </summary> | ||
42 | /// <param name="userID"></param> | ||
43 | private void RequestUserProfileForUser(LLUUID userID) | ||
44 | { | ||
45 | |||
46 | } | ||
47 | |||
48 | /// <summary> | ||
49 | /// Request Iventory Info from Inventory server | ||
50 | /// </summary> | ||
51 | /// <param name="userID"></param> | ||
52 | private void RequestInventoryForUser(LLUUID userID) | ||
53 | { | ||
54 | |||
55 | } | ||
56 | |||
57 | /// <summary> | ||
58 | /// Make sure UserProfile is updated on user server | ||
59 | /// </summary> | ||
60 | /// <param name="userID"></param> | ||
61 | private void UpdateUserProfileToServer(LLUUID userID) | ||
62 | { | ||
63 | |||
64 | } | ||
65 | |||
66 | /// <summary> | ||
67 | /// Update Inventory data to Inventory server | ||
68 | /// </summary> | ||
69 | /// <param name="userID"></param> | ||
70 | private void UpdateInventoryToServer(LLUUID userID) | ||
71 | { | ||
72 | |||
73 | } | ||
74 | } | ||
75 | } | ||
diff --git a/OpenSim/Region/Capabilities/Caps.cs b/OpenSim/Region/Capabilities/Caps.cs index 6068076..db8df9b 100644 --- a/OpenSim/Region/Capabilities/Caps.cs +++ b/OpenSim/Region/Capabilities/Caps.cs | |||
@@ -29,6 +29,7 @@ using System; | |||
29 | using System.Collections; | 29 | using System.Collections; |
30 | using System.Collections.Generic; | 30 | using System.Collections.Generic; |
31 | using System.Text; | 31 | using System.Text; |
32 | using System.IO; | ||
32 | using libsecondlife; | 33 | using libsecondlife; |
33 | using OpenSim.Framework.Servers; | 34 | using OpenSim.Framework.Servers; |
34 | using OpenSim.Framework.Types; | 35 | using OpenSim.Framework.Types; |
@@ -118,7 +119,7 @@ namespace OpenSim.Region.Capabilities | |||
118 | string capsBaseUrl = "http://" + m_httpListenerHostName + ":" + m_httpListenPort.ToString() + "/CAPS/" + m_capsObjectPath; | 119 | string capsBaseUrl = "http://" + m_httpListenerHostName + ":" + m_httpListenPort.ToString() + "/CAPS/" + m_capsObjectPath; |
119 | 120 | ||
120 | caps.MapLayer = capsBaseUrl + m_mapLayerPath; | 121 | caps.MapLayer = capsBaseUrl + m_mapLayerPath; |
121 | // caps.NewFileAgentInventory = capsBaseUrl + m_newInventory; | 122 | caps.NewFileAgentInventory = capsBaseUrl + m_newInventory; |
122 | 123 | ||
123 | return caps; | 124 | return caps; |
124 | } | 125 | } |
@@ -253,10 +254,12 @@ namespace OpenSim.Region.Capabilities | |||
253 | LLUUID newInvItem = LLUUID.Random(); | 254 | LLUUID newInvItem = LLUUID.Random(); |
254 | string uploaderPath = Util.RandomClass.Next(5000, 8000).ToString("0000"); | 255 | string uploaderPath = Util.RandomClass.Next(5000, 8000).ToString("0000"); |
255 | AssetUploader uploader = new AssetUploader(newAsset, newInvItem, uploaderPath, this.httpListener); | 256 | AssetUploader uploader = new AssetUploader(newAsset, newInvItem, uploaderPath, this.httpListener); |
257 | |||
258 | string capsBase = "/CAPS/" + m_capsObjectPath; | ||
259 | httpListener.AddStreamHandler(new BinaryStreamHandler("POST", capsBase + uploaderPath, uploader.uploaderCaps)); | ||
256 | 260 | ||
257 | AddLegacyCapsHandler( httpListener, uploaderPath, uploader.uploaderCaps); | 261 | |
258 | 262 | string uploaderURL = "http://" + m_httpListenerHostName + ":" + m_httpListenPort.ToString() + "/CAPS/" + m_capsObjectPath +uploaderPath; | |
259 | string uploaderURL = "http://" + m_httpListenerHostName + ":" + m_httpListenPort.ToString() + "/CAPS/" + uploaderPath; | ||
260 | //Console.WriteLine("uploader url is " + uploaderURL); | 263 | //Console.WriteLine("uploader url is " + uploaderURL); |
261 | res += "<llsd><map>"; | 264 | res += "<llsd><map>"; |
262 | res += "<key>uploader</key><string>" + uploaderURL + "</string>"; | 265 | res += "<key>uploader</key><string>" + uploaderURL + "</string>"; |
@@ -303,10 +306,10 @@ namespace OpenSim.Region.Capabilities | |||
303 | 306 | ||
304 | } | 307 | } |
305 | 308 | ||
306 | public string uploaderCaps(string request, string path, string param) | 309 | public string uploaderCaps(byte[] data, string path, string param) |
307 | { | 310 | { |
308 | Encoding _enc = Encoding.UTF8; | 311 | //Encoding _enc = Encoding.UTF8; |
309 | byte[] data = _enc.GetBytes(request); | 312 | //byte[] data = _enc.GetBytes(request); |
310 | //Console.WriteLine("recieved upload " + Util.FieldToString(data)); | 313 | //Console.WriteLine("recieved upload " + Util.FieldToString(data)); |
311 | LLUUID inv = this.inventoryItemID; | 314 | LLUUID inv = this.inventoryItemID; |
312 | string res = ""; | 315 | string res = ""; |
@@ -324,7 +327,8 @@ namespace OpenSim.Region.Capabilities | |||
324 | OnUpLoad(newAssetID, inv, data); | 327 | OnUpLoad(newAssetID, inv, data); |
325 | } | 328 | } |
326 | 329 | ||
327 | /*FileStream fs = File.Create("upload.jp2"); | 330 | /* |
331 | FileStream fs = File.Create("upload.jp2"); | ||
328 | BinaryWriter bw = new BinaryWriter(fs); | 332 | BinaryWriter bw = new BinaryWriter(fs); |
329 | bw.Write(data); | 333 | bw.Write(data); |
330 | bw.Close(); | 334 | bw.Close(); |
diff --git a/OpenSim/Region/Capabilities/LLSDCapsDetails.cs b/OpenSim/Region/Capabilities/LLSDCapsDetails.cs index 1f8b242..1522559 100644 --- a/OpenSim/Region/Capabilities/LLSDCapsDetails.cs +++ b/OpenSim/Region/Capabilities/LLSDCapsDetails.cs | |||
@@ -4,7 +4,7 @@ namespace OpenSim.Region.Capabilities | |||
4 | public class LLSDCapsDetails | 4 | public class LLSDCapsDetails |
5 | { | 5 | { |
6 | public string MapLayer = ""; | 6 | public string MapLayer = ""; |
7 | //public string NewFileAgentInventory = ""; | 7 | public string NewFileAgentInventory = ""; |
8 | //public string EventQueueGet = ""; | 8 | //public string EventQueueGet = ""; |
9 | 9 | ||
10 | public LLSDCapsDetails() | 10 | public LLSDCapsDetails() |
diff --git a/OpenSim/Region/ClientStack/Assets/InventoryCache.cs b/OpenSim/Region/ClientStack/Assets/InventoryCache.cs index 082c0d0..e2cfa46 100644 --- a/OpenSim/Region/ClientStack/Assets/InventoryCache.cs +++ b/OpenSim/Region/ClientStack/Assets/InventoryCache.cs | |||
@@ -196,6 +196,7 @@ namespace OpenSim.Assets | |||
196 | 196 | ||
197 | public void FetchInventoryDescendents(ClientView userInfo, FetchInventoryDescendentsPacket FetchDescend) | 197 | public void FetchInventoryDescendents(ClientView userInfo, FetchInventoryDescendentsPacket FetchDescend) |
198 | { | 198 | { |
199 | |||
199 | if (this._agentsInventory.ContainsKey(userInfo.AgentID)) | 200 | if (this._agentsInventory.ContainsKey(userInfo.AgentID)) |
200 | { | 201 | { |
201 | AgentInventory agentInventory = this._agentsInventory[userInfo.AgentID]; | 202 | AgentInventory agentInventory = this._agentsInventory[userInfo.AgentID]; |
diff --git a/OpenSim/Region/ClientStack/ClientView.API.cs b/OpenSim/Region/ClientStack/ClientView.API.cs index 225e906..d5b6b52 100644 --- a/OpenSim/Region/ClientStack/ClientView.API.cs +++ b/OpenSim/Region/ClientStack/ClientView.API.cs | |||
@@ -35,6 +35,7 @@ using libsecondlife.Packets; | |||
35 | using OpenSim.Framework.Console; | 35 | using OpenSim.Framework.Console; |
36 | using OpenSim.Framework.Interfaces; | 36 | using OpenSim.Framework.Interfaces; |
37 | using OpenSim.Framework.Types; | 37 | using OpenSim.Framework.Types; |
38 | using OpenSim.Framework.Data; | ||
38 | 39 | ||
39 | namespace OpenSim.Region.ClientStack | 40 | namespace OpenSim.Region.ClientStack |
40 | { | 41 | { |
@@ -76,7 +77,7 @@ namespace OpenSim.Region.ClientStack | |||
76 | public event GenericCall6 OnRemoveAvatar; | 77 | public event GenericCall6 OnRemoveAvatar; |
77 | public event RequestMapBlocks OnRequestMapBlocks; | 78 | public event RequestMapBlocks OnRequestMapBlocks; |
78 | public event TeleportLocationRequest OnTeleportLocationRequest; | 79 | public event TeleportLocationRequest OnTeleportLocationRequest; |
79 | 80 | ||
80 | public event UUIDNameRequest OnNameFromUUIDRequest; | 81 | public event UUIDNameRequest OnNameFromUUIDRequest; |
81 | 82 | ||
82 | public event ParcelPropertiesRequest OnParcelPropertiesRequest; | 83 | public event ParcelPropertiesRequest OnParcelPropertiesRequest; |
@@ -188,7 +189,7 @@ namespace OpenSim.Region.ClientStack | |||
188 | mov.Data.RegionHandle = regInfo.RegionHandle; | 189 | mov.Data.RegionHandle = regInfo.RegionHandle; |
189 | mov.Data.Timestamp = 1172750370; // TODO - dynamicalise this | 190 | mov.Data.Timestamp = 1172750370; // TODO - dynamicalise this |
190 | 191 | ||
191 | if ((pos.X == 0) && (pos.Y == 0) && (pos.Z == 0)) | 192 | if ((pos.X == 0) && (pos.Y == 0) && (pos.Z == 0)) |
192 | { | 193 | { |
193 | mov.Data.Position = this.startpos; | 194 | mov.Data.Position = this.startpos; |
194 | } | 195 | } |
@@ -325,11 +326,11 @@ namespace OpenSim.Region.ClientStack | |||
325 | /// <param name="neighbourHandle"></param> | 326 | /// <param name="neighbourHandle"></param> |
326 | /// <param name="neighbourIP"></param> | 327 | /// <param name="neighbourIP"></param> |
327 | /// <param name="neighbourPort"></param> | 328 | /// <param name="neighbourPort"></param> |
328 | public void InformClientOfNeighbour(ulong neighbourHandle, IPEndPoint neighbourEndPoint ) | 329 | public void InformClientOfNeighbour(ulong neighbourHandle, IPEndPoint neighbourEndPoint) |
329 | { | 330 | { |
330 | IPAddress neighbourIP = neighbourEndPoint.Address; | 331 | IPAddress neighbourIP = neighbourEndPoint.Address; |
331 | ushort neighbourPort = (ushort) neighbourEndPoint.Port; | 332 | ushort neighbourPort = (ushort)neighbourEndPoint.Port; |
332 | 333 | ||
333 | EnableSimulatorPacket enablesimpacket = new EnableSimulatorPacket(); | 334 | EnableSimulatorPacket enablesimpacket = new EnableSimulatorPacket(); |
334 | enablesimpacket.SimulatorInfo = new EnableSimulatorPacket.SimulatorInfoBlock(); | 335 | enablesimpacket.SimulatorInfo = new EnableSimulatorPacket.SimulatorInfoBlock(); |
335 | enablesimpacket.SimulatorInfo.Handle = neighbourHandle; | 336 | enablesimpacket.SimulatorInfo.Handle = neighbourHandle; |
@@ -405,7 +406,7 @@ namespace OpenSim.Region.ClientStack | |||
405 | mapReply.Data[i].Name = _enc.GetBytes(mapBlocks[i].Name); | 406 | mapReply.Data[i].Name = _enc.GetBytes(mapBlocks[i].Name); |
406 | mapReply.Data[i].RegionFlags = mapBlocks[i].RegionFlags; | 407 | mapReply.Data[i].RegionFlags = mapBlocks[i].RegionFlags; |
407 | mapReply.Data[i].Access = mapBlocks[i].Access; | 408 | mapReply.Data[i].Access = mapBlocks[i].Access; |
408 | mapReply.Data[i].Agents = mapBlocks[i].Agents; | 409 | mapReply.Data[i].Agents = mapBlocks[i].Agents; |
409 | } | 410 | } |
410 | this.OutPacket(mapReply); | 411 | this.OutPacket(mapReply); |
411 | } | 412 | } |
@@ -421,7 +422,7 @@ namespace OpenSim.Region.ClientStack | |||
421 | OutPacket(tpLocal); | 422 | OutPacket(tpLocal); |
422 | } | 423 | } |
423 | 424 | ||
424 | public void SendRegionTeleport(ulong regionHandle, byte simAccess, IPEndPoint newRegionEndPoint, uint locationID, uint flags) | 425 | public void SendRegionTeleport(ulong regionHandle, byte simAccess, IPEndPoint newRegionEndPoint, uint locationID, uint flags) |
425 | { | 426 | { |
426 | TeleportFinishPacket teleport = new TeleportFinishPacket(); | 427 | TeleportFinishPacket teleport = new TeleportFinishPacket(); |
427 | teleport.Info.AgentID = this.AgentID; | 428 | teleport.Info.AgentID = this.AgentID; |
@@ -439,7 +440,7 @@ namespace OpenSim.Region.ClientStack | |||
439 | teleport.Info.SimIP = ip; | 440 | teleport.Info.SimIP = ip; |
440 | teleport.Info.SimPort = (ushort)newRegionEndPoint.Port; | 441 | teleport.Info.SimPort = (ushort)newRegionEndPoint.Port; |
441 | teleport.Info.LocationID = 4; | 442 | teleport.Info.LocationID = 4; |
442 | teleport.Info.TeleportFlags = 1 << 4; | 443 | teleport.Info.TeleportFlags = 1 << 4; |
443 | OutPacket(teleport); | 444 | OutPacket(teleport); |
444 | } | 445 | } |
445 | 446 | ||
@@ -492,6 +493,81 @@ namespace OpenSim.Region.ClientStack | |||
492 | OutPacket(kill); | 493 | OutPacket(kill); |
493 | } | 494 | } |
494 | 495 | ||
496 | public void SendInventoryFolderDetails(LLUUID ownerID, LLUUID folderID, List<InventoryItemBase> items) | ||
497 | { | ||
498 | Encoding enc = Encoding.ASCII; | ||
499 | uint FULL_MASK_PERMISSIONS = 2147483647; | ||
500 | InventoryDescendentsPacket descend = new InventoryDescendentsPacket(); | ||
501 | descend.AgentData.AgentID = this.AgentId; | ||
502 | descend.AgentData.OwnerID = ownerID; | ||
503 | descend.AgentData.FolderID = folderID; | ||
504 | descend.AgentData.Descendents = items.Count; | ||
505 | descend.AgentData.Version = 0; | ||
506 | descend.ItemData = new InventoryDescendentsPacket.ItemDataBlock[items.Count]; | ||
507 | int i = 0; | ||
508 | foreach (InventoryItemBase item in items) | ||
509 | { | ||
510 | descend.ItemData[i] = new InventoryDescendentsPacket.ItemDataBlock(); | ||
511 | descend.ItemData[i].ItemID = item.inventoryID; | ||
512 | descend.ItemData[i].AssetID = item.assetID; | ||
513 | descend.ItemData[i].CreatorID = item.creatorsID; | ||
514 | descend.ItemData[i].BaseMask = FULL_MASK_PERMISSIONS; | ||
515 | descend.ItemData[i].CreationDate = 1000; | ||
516 | descend.ItemData[i].Description = enc.GetBytes(item.inventoryDescription+ "\0"); | ||
517 | descend.ItemData[i].EveryoneMask = FULL_MASK_PERMISSIONS; | ||
518 | descend.ItemData[i].Flags = 1; | ||
519 | descend.ItemData[i].FolderID = item.parentFolderID; | ||
520 | descend.ItemData[i].GroupID = new LLUUID("00000000-0000-0000-0000-000000000000"); | ||
521 | descend.ItemData[i].GroupMask = FULL_MASK_PERMISSIONS; | ||
522 | descend.ItemData[i].InvType = (sbyte)item.type; | ||
523 | descend.ItemData[i].Name = enc.GetBytes(item.inventoryName+ "\0"); | ||
524 | descend.ItemData[i].NextOwnerMask = FULL_MASK_PERMISSIONS; | ||
525 | descend.ItemData[i].OwnerID = item.avatarID; | ||
526 | descend.ItemData[i].OwnerMask = FULL_MASK_PERMISSIONS; | ||
527 | descend.ItemData[i].SalePrice = 0; | ||
528 | descend.ItemData[i].SaleType = 0; | ||
529 | descend.ItemData[i].Type = (sbyte)item.type; | ||
530 | descend.ItemData[i].CRC = Helpers.InventoryCRC(1000, 0, descend.ItemData[i].InvType, descend.ItemData[i].Type, descend.ItemData[i].AssetID, descend.ItemData[i].GroupID, 100,descend.ItemData[i].OwnerID, descend.ItemData[i].CreatorID, descend.ItemData[i].ItemID, descend.ItemData[i].FolderID, FULL_MASK_PERMISSIONS, 1, FULL_MASK_PERMISSIONS, FULL_MASK_PERMISSIONS, FULL_MASK_PERMISSIONS); | ||
531 | |||
532 | i++; | ||
533 | } | ||
534 | |||
535 | this.OutPacket(descend); | ||
536 | |||
537 | } | ||
538 | |||
539 | public void SendInventoryItemDetails(LLUUID ownerID, LLUUID folderID, InventoryItemBase item) | ||
540 | { | ||
541 | Encoding enc = Encoding.ASCII; | ||
542 | uint FULL_MASK_PERMISSIONS = 2147483647; | ||
543 | FetchInventoryReplyPacket inventoryReply = new FetchInventoryReplyPacket(); | ||
544 | inventoryReply.AgentData.AgentID = this.AgentId; | ||
545 | inventoryReply.InventoryData = new FetchInventoryReplyPacket.InventoryDataBlock[1]; | ||
546 | inventoryReply.InventoryData[0] = new FetchInventoryReplyPacket.InventoryDataBlock(); | ||
547 | inventoryReply.InventoryData[0].ItemID = item.inventoryID; | ||
548 | inventoryReply.InventoryData[0].AssetID = item.assetID; | ||
549 | inventoryReply.InventoryData[0].CreatorID = item.creatorsID; | ||
550 | inventoryReply.InventoryData[0].BaseMask = FULL_MASK_PERMISSIONS; | ||
551 | inventoryReply.InventoryData[0].CreationDate = (int)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds; | ||
552 | inventoryReply.InventoryData[0].Description = enc.GetBytes(item.inventoryDescription + "\0"); | ||
553 | inventoryReply.InventoryData[0].EveryoneMask = FULL_MASK_PERMISSIONS; | ||
554 | inventoryReply.InventoryData[0].Flags = 0; | ||
555 | inventoryReply.InventoryData[0].FolderID = item.parentFolderID; | ||
556 | inventoryReply.InventoryData[0].GroupID = new LLUUID("00000000-0000-0000-0000-000000000000"); | ||
557 | inventoryReply.InventoryData[0].GroupMask = FULL_MASK_PERMISSIONS; | ||
558 | inventoryReply.InventoryData[0].InvType = (sbyte)item.type; | ||
559 | inventoryReply.InventoryData[0].Name = enc.GetBytes(item.inventoryName + "\0"); | ||
560 | inventoryReply.InventoryData[0].NextOwnerMask = FULL_MASK_PERMISSIONS; | ||
561 | inventoryReply.InventoryData[0].OwnerID = item.avatarID; | ||
562 | inventoryReply.InventoryData[0].OwnerMask = FULL_MASK_PERMISSIONS; | ||
563 | inventoryReply.InventoryData[0].SalePrice = 0; | ||
564 | inventoryReply.InventoryData[0].SaleType = 0; | ||
565 | inventoryReply.InventoryData[0].Type = (sbyte)item.type; | ||
566 | inventoryReply.InventoryData[0].CRC = Helpers.InventoryCRC(1000, 0, inventoryReply.InventoryData[0].InvType, inventoryReply.InventoryData[0].Type, inventoryReply.InventoryData[0].AssetID, inventoryReply.InventoryData[0].GroupID, 100, inventoryReply.InventoryData[0].OwnerID, inventoryReply.InventoryData[0].CreatorID, inventoryReply.InventoryData[0].ItemID, inventoryReply.InventoryData[0].FolderID, FULL_MASK_PERMISSIONS, 1, FULL_MASK_PERMISSIONS, FULL_MASK_PERMISSIONS, FULL_MASK_PERMISSIONS); | ||
567 | |||
568 | this.OutPacket(inventoryReply); | ||
569 | } | ||
570 | |||
495 | 571 | ||
496 | #region Appearance/ Wearables Methods | 572 | #region Appearance/ Wearables Methods |
497 | 573 | ||
@@ -545,20 +621,20 @@ namespace OpenSim.Region.ClientStack | |||
545 | OutPacket(avp); | 621 | OutPacket(avp); |
546 | } | 622 | } |
547 | 623 | ||
548 | public void SendAnimation(LLUUID animID, int seq, LLUUID sourceAgentId) | 624 | public void SendAnimation(LLUUID animID, int seq, LLUUID sourceAgentId) |
549 | { | 625 | { |
550 | AvatarAnimationPacket ani = new AvatarAnimationPacket(); | 626 | AvatarAnimationPacket ani = new AvatarAnimationPacket(); |
551 | ani.AnimationSourceList = new AvatarAnimationPacket.AnimationSourceListBlock[1]; | 627 | ani.AnimationSourceList = new AvatarAnimationPacket.AnimationSourceListBlock[1]; |
552 | ani.AnimationSourceList[0] = new AvatarAnimationPacket.AnimationSourceListBlock(); | 628 | ani.AnimationSourceList[0] = new AvatarAnimationPacket.AnimationSourceListBlock(); |
553 | ani.AnimationSourceList[0].ObjectID = sourceAgentId; | 629 | ani.AnimationSourceList[0].ObjectID = sourceAgentId; |
554 | ani.Sender = new AvatarAnimationPacket.SenderBlock(); | 630 | ani.Sender = new AvatarAnimationPacket.SenderBlock(); |
555 | ani.Sender.ID = sourceAgentId; | 631 | ani.Sender.ID = sourceAgentId; |
556 | ani.AnimationList = new AvatarAnimationPacket.AnimationListBlock[1]; | 632 | ani.AnimationList = new AvatarAnimationPacket.AnimationListBlock[1]; |
557 | ani.AnimationList[0] = new AvatarAnimationPacket.AnimationListBlock(); | 633 | ani.AnimationList[0] = new AvatarAnimationPacket.AnimationListBlock(); |
558 | ani.AnimationList[0].AnimID = animID; | 634 | ani.AnimationList[0].AnimID = animID; |
559 | ani.AnimationList[0].AnimSequenceID = seq; | 635 | ani.AnimationList[0].AnimSequenceID = seq; |
560 | this.OutPacket(ani); | 636 | this.OutPacket(ani); |
561 | } | 637 | } |
562 | 638 | ||
563 | #endregion | 639 | #endregion |
564 | 640 | ||
@@ -674,7 +750,7 @@ namespace OpenSim.Region.ClientStack | |||
674 | /// </summary> | 750 | /// </summary> |
675 | /// <param name="primData"></param> | 751 | /// <param name="primData"></param> |
676 | /// <param name="pos"></param> | 752 | /// <param name="pos"></param> |
677 | public void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimData primData, LLVector3 pos, LLUUID textureID , uint flags) | 753 | public void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimData primData, LLVector3 pos, LLUUID textureID, uint flags) |
678 | { | 754 | { |
679 | ObjectUpdatePacket outPacket = new ObjectUpdatePacket(); | 755 | ObjectUpdatePacket outPacket = new ObjectUpdatePacket(); |
680 | outPacket.RegionData.RegionHandle = regionHandle; | 756 | outPacket.RegionData.RegionHandle = regionHandle; |