/// <summary> /// Get the Asset data for an item, must be used when requesting a Notecard /// </summary> /// <remarks>It is the responsibility of the calling party to retrieve the asset data from the request object when it is compelte.</remarks> /// <param name="item"></param> public AssetRequestDownload RequestInventoryAsset(InventoryItem item) { if (!(item is InventoryWearable)) { if ((item.OwnerMask & (uint)AssetPermission.Copy) == 0) { throw new AssetPermissionException(item, slClient, "Asset data refused, Copy permission needed."); } if ((item.OwnerMask & (uint)AssetPermission.Modify) == 0 && (item.Type == 10)) { throw new AssetPermissionException(item, slClient, "Asset data refused, Modify permission needed for scripts."); } } LLUUID TransferID = LLUUID.Random(); AssetRequestDownload request = new AssetRequestDownload(slClient.Assets, TransferID, item.AssetID); request.UpdateLastPacketTime(); // last time we recevied a packet for this request htDownloadRequests[TransferID] = request; // prep packet based on asset type Packet packet; switch (item.Type) { case 5: //Shirt case 13: //Bodyshape packet = AssetPacketHelpers.TransferRequestDirect(slClient.Network.SessionID, slClient.Network.AgentID, TransferID, item.AssetID, item.Type); break; default: packet = AssetPacketHelpers.TransferRequest(slClient.Network.SessionID, slClient.Network.AgentID, TransferID, item); break; } // Send packet slClient.Network.SendPacket(packet); #if DEBUG_PACKETS slClient.Log(packet.ToString(), Helpers.LogLevel.Info); #endif return(request); }
/// <summary> /// Get the Asset data for an item, must be used when requesting a Notecard /// </summary> /// <param name="item"></param> public void GetInventoryAsset(InventoryItem item) { LLUUID TransferID = LLUUID.Random(); AssetRequestDownload request = new AssetRequestDownload(TransferID); request.Size = int.MaxValue; // Number of bytes expected request.Received = 0; // Number of bytes received request.UpdateLastPacketTime(); // last time we recevied a packet for this request htDownloadRequests[TransferID] = request; // prep packet based on asset type Packet packet; switch (item.Type) { case 5: //Shirt case 13: //Bodyshape packet = AssetPacketHelpers.TransferRequestDirect(slClient.Network.SessionID, slClient.Network.AgentID, TransferID, item.AssetID, item.Type); break; default: packet = AssetPacketHelpers.TransferRequest(slClient.Network.SessionID, slClient.Network.AgentID, TransferID, item); break; } // Send packet slClient.Network.SendPacket(packet); #if DEBUG_PACKETS slClient.DebugLog(packet); #endif request.Completed.WaitOne(); item.SetAssetData(request.AssetData); }
/// <summary> /// Get the Asset data for an item /// </summary> /// <param name="item"></param> public void GetInventoryAsset(InventoryItem item) { LLUUID TransferID = LLUUID.GenerateUUID(); AssetRequestDownload request = new AssetRequestDownload(TransferID); request.Size = int.MaxValue; // Number of bytes expected request.Received = 0; // Number of bytes received request.UpdateLastPacketTime(); // last time we recevied a packet for this request htDownloadRequests[TransferID] = request; Packet packet = AssetPacketHelpers.TransferRequest(slClient.Network.SessionID, slClient.Network.AgentID, TransferID, item); slClient.Network.SendPacket(packet); #if DEBUG_PACKETS Console.WriteLine(packet); #endif request.Completed.WaitOne(); item.SetAssetData(request.AssetData); }