diff --git a/Programs/Simian/Extensions/AuthFreeForAll.cs b/Programs/Simian/Extensions/AuthFreeForAll.cs index f2c1eff1..706e4615 100644 --- a/Programs/Simian/Extensions/AuthFreeForAll.cs +++ b/Programs/Simian/Extensions/AuthFreeForAll.cs @@ -83,6 +83,10 @@ namespace Simian.Extensions UUID skinItem = server.Inventory.CreateItem(agent.AgentID, "Default Skin", "Default Skin", InventoryType.Wearable, AssetType.Clothing, skinAsset, defaultOutfitFolder, PermissionMask.All, PermissionMask.All, agent.AgentID, agent.AgentID, UUID.Random(), 0); + UUID eyesAsset = new UUID("78d20332-9b07-44a2-bf74-3b368605f4b5"); + UUID eyesItem = server.Inventory.CreateItem(agent.AgentID, "Default Eyes", "Default Eyes", + InventoryType.Wearable, AssetType.Bodypart, eyesAsset, defaultOutfitFolder, + PermissionMask.All, PermissionMask.All, agent.AgentID, agent.AgentID, UUID.Random(), 0); agent.HairAsset = hairAsset; agent.HairItem = hairItem; @@ -94,6 +98,8 @@ namespace Simian.Extensions agent.ShirtItem = shirtItem; agent.SkinAsset = skinAsset; agent.SkinItem = skinItem; + agent.EyesAsset = eyesAsset; + agent.EyesItem = eyesItem; server.Accounts.AddAccount(agent); diff --git a/Programs/examples/TestClient/Commands/Inventory/DownloadCommand.cs b/Programs/examples/TestClient/Commands/Inventory/DownloadCommand.cs new file mode 100644 index 00000000..2fb82247 --- /dev/null +++ b/Programs/examples/TestClient/Commands/Inventory/DownloadCommand.cs @@ -0,0 +1,90 @@ +using System; +using System.IO; +using System.Threading; +using OpenMetaverse; + +namespace OpenMetaverse.TestClient +{ + public class DownloadCommand : Command + { + UUID AssetID; + AssetType assetType; + AutoResetEvent DownloadHandle = new AutoResetEvent(false); + bool Success; + + public DownloadCommand(TestClient testClient) + { + Name = "download"; + Description = "Downloads the specified asset. Usage: download [uuid] [assetType]"; + Category = CommandCategory.Inventory; + + testClient.Assets.OnAssetReceived += new AssetManager.AssetReceivedCallback(Assets_OnAssetReceived); + } + + public override string Execute(string[] args, UUID fromAgentID) + { + if (args.Length != 2) + return "Usage: download [uuid] [assetType]"; + + Success = false; + AssetID = UUID.Zero; + assetType = AssetType.Unknown; + DownloadHandle.Reset(); + + if (UUID.TryParse(args[0], out AssetID)) + { + int typeInt; + if (Int32.TryParse(args[1], out typeInt) && typeInt >= 0 && typeInt <= 22) + { + assetType = (AssetType)typeInt; + + // Start the asset download + Client.Assets.RequestAsset(AssetID, assetType, true); + + if (DownloadHandle.WaitOne(120 * 1000, false)) + { + if (Success) + return String.Format("Saved {0}.{1}", AssetID, assetType.ToString().ToLower()); + else + return String.Format("Failed to download asset {0}, perhaps {1} is the incorrect asset type?", + AssetID, assetType); + } + else + { + return "Timed out waiting for texture download"; + } + } + else + { + return "Usage: download [uuid] [assetType]"; + } + } + else + { + return "Usage: download [uuid] [assetType]"; + } + } + + private void Assets_OnAssetReceived(AssetDownload transfer, Asset asset) + { + if (transfer.AssetID == AssetID) + { + if (transfer.Success) + { + try + { + File.WriteAllBytes(String.Format("{0}.{1}", AssetID, + assetType.ToString().ToLower()), asset.AssetData); + Success = true; + } + catch (Exception ex) + { + Logger.Log(ex.Message, Helpers.LogLevel.Error, ex); + } + } + + DownloadHandle.Set(); + } + } + } +} diff --git a/Programs/examples/TestClient/Commands/Inventory/ExportOutfitCommand.cs b/Programs/examples/TestClient/Commands/Inventory/ExportOutfitCommand.cs deleted file mode 100644 index fcbf67b9..00000000 --- a/Programs/examples/TestClient/Commands/Inventory/ExportOutfitCommand.cs +++ /dev/null @@ -1,59 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using OpenMetaverse; -using OpenMetaverse.Packets; - -namespace OpenMetaverse.TestClient -{ - public class ExportOutfitCommand : Command - { - public ExportOutfitCommand(TestClient testClient) - { - Name = "exportoutfit"; - Description = "Exports an avatars outfit to an xml file. Usage: exportoutfit [avataruuid] outputfile.xml"; - Category = CommandCategory.Inventory; - } - - public override string Execute(string[] args, UUID fromAgentID) - { - UUID id; - string path; - - if (args.Length == 1) - { - id = Client.Self.AgentID; - path = args[0]; - } - else if (args.Length == 2) - { - if (!UUID.TryParse(args[0], out id)) - return "Usage: exportoutfit [avataruuid] outputfile.xml"; - path = args[1]; - } - else - return "Usage: exportoutfit [avataruuid] outputfile.xml"; - - lock (Client.Appearances) - { - if (Client.Appearances.ContainsKey(id)) - { - try - { - File.WriteAllText(path, Packet.ToXmlString(Client.Appearances[id])); - } - catch (Exception e) - { - return e.ToString(); - } - - return "Exported appearance for avatar " + id.ToString() + " to " + args[1]; - } - else - { - return "Couldn't find an appearance for avatar " + id.ToString(); - } - } - } - } -} \ No newline at end of file diff --git a/Programs/examples/TestClient/Commands/Inventory/ImportOutfitCommand.cs b/Programs/examples/TestClient/Commands/Inventory/ImportOutfitCommand.cs deleted file mode 100644 index 5cbe9507..00000000 --- a/Programs/examples/TestClient/Commands/Inventory/ImportOutfitCommand.cs +++ /dev/null @@ -1,68 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using OpenMetaverse; -using OpenMetaverse.Packets; - -namespace OpenMetaverse.TestClient -{ - public class ImportOutfitCommand : Command - { - //private uint SerialNum = 1; - - public ImportOutfitCommand(TestClient testClient) - { - Name = "importoutfit"; - Description = "Imports an appearance from an xml file. Usage: importoutfit inputfile.xml"; - Category = CommandCategory.Inventory; - } - - public override string Execute(string[] args, UUID fromAgentID) - { - if (args.Length != 1) - return "Usage: importoutfit inputfile.xml"; - - return "LLSD packet import is under construction"; - - //try - //{ - // Packet packet = Packet.FromXmlString((File.ReadAllText(args[0]))); - // if (packet.Type != PacketType.AvatarAppearance) - // return "Deserialized a " + packet.Type + " packet instead of an AvatarAppearance packet"; - // AvatarAppearancePacket appearance = (AvatarAppearancePacket)packet; - - // AgentSetAppearancePacket set = new AgentSetAppearancePacket(); - - // set.AgentData.AgentID = Client.Self.AgentID; - // set.AgentData.SessionID = Client.Self.SessionID; - // set.AgentData.SerialNum = SerialNum++; - - // // HACK: Weak hack to calculate size - // float AV_Height_Range = 2.025506f - 1.50856f; - // float AV_Height = 1.50856f + (((float)appearance.VisualParam[25].ParamValue / 255.0f) * AV_Height_Range); - // set.AgentData.Size = new Vector3(0.45f, 0.6f, AV_Height); - - // set.ObjectData.TextureEntry = appearance.ObjectData.TextureEntry; - // set.VisualParam = new AgentSetAppearancePacket.VisualParamBlock[appearance.VisualParam.Length]; - - // int i = 0; - // foreach (AvatarAppearancePacket.VisualParamBlock block in appearance.VisualParam) - // { - // set.VisualParam[i] = new AgentSetAppearancePacket.VisualParamBlock(); - // set.VisualParam[i].ParamValue = block.ParamValue; - // i++; - // } - - // set.WearableData = new AgentSetAppearancePacket.WearableDataBlock[0]; - - // Client.Network.SendPacket(set); - //} - //catch (Exception) - //{ - // return "Failed to import the appearance XML file, maybe it doesn't exist or is in the wrong format?"; - //} - - //return "Imported " + args[0] + " and sent an AgentSetAppearance packet"; - } - } -} diff --git a/Programs/examples/TestClient/Commands/Inventory/ListContentsCommand.cs b/Programs/examples/TestClient/Commands/Inventory/ListContentsCommand.cs index 1fb2391e..73cda4c7 100644 --- a/Programs/examples/TestClient/Commands/Inventory/ListContentsCommand.cs +++ b/Programs/examples/TestClient/Commands/Inventory/ListContentsCommand.cs @@ -56,6 +56,8 @@ namespace OpenMetaverse.TestClient.Commands.Inventory.Shell displayString += PermMaskString(item.Permissions.EveryoneMask); displayString += " " + item.UUID; displayString += " " + item.Name; + displayString += nl; + displayString += " AssetID: " + item.AssetUUID; } } else diff --git a/Programs/examples/TestClient/Commands/Prims/DownloadTextureCommand.cs b/Programs/examples/TestClient/Commands/Prims/DownloadTextureCommand.cs index 8ce58db9..d4994678 100644 --- a/Programs/examples/TestClient/Commands/Prims/DownloadTextureCommand.cs +++ b/Programs/examples/TestClient/Commands/Prims/DownloadTextureCommand.cs @@ -16,7 +16,7 @@ namespace OpenMetaverse.TestClient { Name = "downloadtexture"; Description = "Downloads the specified texture. " + - "Usage: downloadtexture [texture-uuid]"; + "Usage: downloadtexture [texture-uuid] [discardlevel]"; Category = CommandCategory.Inventory; testClient.Assets.OnImageReceiveProgress += new AssetManager.ImageReceiveProgressCallback(Assets_OnImageReceiveProgress); diff --git a/bin/SimianData/default_eyes-6522e74d-1660-4e7f-b601-6f48c1659a78.jp2 b/bin/SimianData/default_eyes-6522e74d-1660-4e7f-b601-6f48c1659a78.jp2 new file mode 100644 index 00000000..4e99f3ec Binary files /dev/null and b/bin/SimianData/default_eyes-6522e74d-1660-4e7f-b601-6f48c1659a78.jp2 differ diff --git a/bin/SimianData/default_eyes-78d20332-9b07-44a2-bf74-3b368605f4b5.bodypart b/bin/SimianData/default_eyes-78d20332-9b07-44a2-bf74-3b368605f4b5.bodypart new file mode 100644 index 00000000..044b025b --- /dev/null +++ b/bin/SimianData/default_eyes-78d20332-9b07-44a2-bf74-3b368605f4b5.bodypart @@ -0,0 +1,26 @@ +LLWearable version 22 +Default Eyes + + permissions 0 + { + base_mask 7fffffff + owner_mask 7fffffff + group_mask 7fffffff + everyone_mask 7fffffff + next_owner_mask 7fffffff + creator_id 00000000-0000-0000-0000-000000000000 + owner_id 00000000-0000-0000-0000-000000000000 + last_owner_id 00000000-0000-0000-0000-000000000000 + group_id 00000000-0000-0000-0000-000000000000 + } + sale_info 0 + { + sale_type not + sale_price 10 + } +type 3 +parameters 2 +98 .02 +99 .04 +textures 1 +3 6522e74d-1660-4e7f-b601-6f48c1659a78 diff --git a/bin/SimianData/default_hair-dc675529-7ba5-4976-b91d-dcb9e5e36188.bodypart b/bin/SimianData/default_hair-dc675529-7ba5-4976-b91d-dcb9e5e36188.bodypart index 48a66c5f..be120465 100644 --- a/bin/SimianData/default_hair-dc675529-7ba5-4976-b91d-dcb9e5e36188.bodypart +++ b/bin/SimianData/default_hair-dc675529-7ba5-4976-b91d-dcb9e5e36188.bodypart @@ -8,9 +8,9 @@ Default Hair group_mask 7fffffff everyone_mask 7fffffff next_owner_mask 7fffffff - creator_id 00000000-0000-0000-0000-000000000001 - owner_id 00000000-0000-0000-0000-000000000001 - last_owner_id 00000000-0000-0000-0000-000000000001 + creator_id 00000000-0000-0000-0000-000000000000 + owner_id 00000000-0000-0000-0000-000000000000 + last_owner_id 00000000-0000-0000-0000-000000000000 group_id 00000000-0000-0000-0000-000000000000 } sale_info 0 diff --git a/bin/SimianData/default_pants-3e8ee2d6-4f21-4a55-832d-77daa505edff.clothing b/bin/SimianData/default_pants-3e8ee2d6-4f21-4a55-832d-77daa505edff.clothing index d0e0b573..1c5224dd 100644 --- a/bin/SimianData/default_pants-3e8ee2d6-4f21-4a55-832d-77daa505edff.clothing +++ b/bin/SimianData/default_pants-3e8ee2d6-4f21-4a55-832d-77daa505edff.clothing @@ -1,5 +1,5 @@ LLWearable version 22 -New Pants +Default Pants permissions 0 { @@ -8,9 +8,9 @@ New Pants group_mask 7fffffff everyone_mask 7fffffff next_owner_mask 7fffffff - creator_id 00000000-0000-0000-0000-000000000001 - owner_id 00000000-0000-0000-0000-000000000001 - last_owner_id 00000000-0000-0000-0000-000000000001 + creator_id 00000000-0000-0000-0000-000000000000 + owner_id 00000000-0000-0000-0000-000000000000 + last_owner_id 00000000-0000-0000-0000-000000000000 group_id 00000000-0000-0000-0000-000000000000 } sale_info 0 @@ -30,4 +30,4 @@ parameters 9 816 0 869 0 textures 1 -2 5748decc-f629-461c-9a36-a35a221fe21f +2 54a55781-afa8-a64d-cc69-6d63e6da76fb diff --git a/bin/SimianData/default_pants-54a55781-afa8-a64d-cc69-6d63e6da76fb.jp2 b/bin/SimianData/default_pants-54a55781-afa8-a64d-cc69-6d63e6da76fb.jp2 new file mode 100644 index 00000000..9916748b Binary files /dev/null and b/bin/SimianData/default_pants-54a55781-afa8-a64d-cc69-6d63e6da76fb.jp2 differ diff --git a/bin/SimianData/default_shape-530a2614-052e-49a2-af0e-534bb3c05af0.bodypart b/bin/SimianData/default_shape-530a2614-052e-49a2-af0e-534bb3c05af0.bodypart index f77b2871..6b4e8590 100644 --- a/bin/SimianData/default_shape-530a2614-052e-49a2-af0e-534bb3c05af0.bodypart +++ b/bin/SimianData/default_shape-530a2614-052e-49a2-af0e-534bb3c05af0.bodypart @@ -8,9 +8,9 @@ Default Shape group_mask 7fffffff everyone_mask 7fffffff next_owner_mask 7fffffff - creator_id 00000000-0000-0000-0000-000000000001 - owner_id 00000000-0000-0000-0000-000000000001 - last_owner_id 00000000-0000-0000-0000-000000000001 + creator_id 00000000-0000-0000-0000-000000000000 + owner_id 00000000-0000-0000-0000-000000000000 + last_owner_id 00000000-0000-0000-0000-000000000000 group_id 00000000-0000-0000-0000-000000000000 } sale_info 0 diff --git a/bin/SimianData/default_shirt-6a714f37-fe53-4230-b46f-8db384465981.clothing b/bin/SimianData/default_shirt-6a714f37-fe53-4230-b46f-8db384465981.clothing index 351ee9c4..c185211b 100644 --- a/bin/SimianData/default_shirt-6a714f37-fe53-4230-b46f-8db384465981.clothing +++ b/bin/SimianData/default_shirt-6a714f37-fe53-4230-b46f-8db384465981.clothing @@ -8,9 +8,9 @@ Default Shirt group_mask 7fffffff everyone_mask 7fffffff next_owner_mask 7fffffff - creator_id 00000000-0000-0000-0000-000000000001 - owner_id 00000000-0000-0000-0000-000000000001 - last_owner_id 00000000-0000-0000-0000-000000000001 + creator_id 00000000-0000-0000-0000-000000000000 + owner_id 00000000-0000-0000-0000-000000000000 + last_owner_id 00000000-0000-0000-0000-000000000000 group_id 00000000-0000-0000-0000-000000000000 } sale_info 0 @@ -31,4 +31,4 @@ parameters 10 840 0 868 0 textures 1 -1 5748decc-f629-461c-9a36-a35a221fe21f +1 ec108661-ac4b-6006-f23f-220ba96c15a8 diff --git a/bin/SimianData/default_shirt-ec108661-ac4b-6006-f23f-220ba96c15a8.jp2 b/bin/SimianData/default_shirt-ec108661-ac4b-6006-f23f-220ba96c15a8.jp2 new file mode 100644 index 00000000..b115ec28 Binary files /dev/null and b/bin/SimianData/default_shirt-ec108661-ac4b-6006-f23f-220ba96c15a8.jp2 differ diff --git a/bin/SimianData/default_skin-5f787f25-f761-4a35-9764-6418ee4774c4.bodypart b/bin/SimianData/default_skin-5f787f25-f761-4a35-9764-6418ee4774c4.bodypart index 48971153..d46b332f 100644 --- a/bin/SimianData/default_skin-5f787f25-f761-4a35-9764-6418ee4774c4.bodypart +++ b/bin/SimianData/default_skin-5f787f25-f761-4a35-9764-6418ee4774c4.bodypart @@ -8,9 +8,9 @@ Default Skin group_mask 7fffffff everyone_mask 7fffffff next_owner_mask 7fffffff - creator_id 00000000-0000-0000-0000-000000000001 - owner_id 00000000-0000-0000-0000-000000000001 - last_owner_id 00000000-0000-0000-0000-000000000001 + creator_id 00000000-0000-0000-0000-000000000000 + owner_id 00000000-0000-0000-0000-000000000000 + last_owner_id 00000000-0000-0000-0000-000000000000 group_id 00000000-0000-0000-0000-000000000000 } sale_info 0 @@ -21,28 +21,28 @@ Default Skin type 1 parameters 26 108 0 -110 0 -111 0 -116 0 -117 1 +110 .07 +111 1 +116 .32 +117 .49 150 0 162 0 163 0 165 0 -700 .01 -701 .5 -702 .26 +700 0 +701 0 +702 0 703 0 704 0 -705 .5 -706 .6 +705 1 +706 .2 707 0 708 0 709 0 710 0 -711 .5 +711 .29 712 0 -713 .7 +713 .2 714 0 715 0 775 0