public static Asset CreateAssetWrapper(AssetType type, UUID uuid, byte[] data)
        {
            Asset asset;

            switch (type)
            {
            case AssetType.Animation:
                asset = new AssetAnimation(uuid, data);
                break;

            case AssetType.Gesture:
                asset = new AssetGesture(uuid, data);
                break;

            case AssetType.Landmark:
                asset = new AssetLandmark(uuid, data);
                break;

            case AssetType.Bodypart:
                asset = new AssetBodypart(uuid, data);
                break;

            case AssetType.Clothing:
                asset = new AssetClothing(uuid, data);
                break;

            case AssetType.LSLBytecode:
                asset = new AssetScriptBinary(uuid, data);
                break;

            case AssetType.LSLText:
                asset = new AssetScriptText(uuid, data);
                break;

            case AssetType.Notecard:
                asset = new AssetNotecard(uuid, data);
                break;

            case AssetType.Sound:
                asset = new AssetSound(uuid, data);
                break;

            case AssetType.Texture:
                asset = new AssetTexture(uuid, data);
                break;

#if COGBOT_LIBOMV
            case AssetType.CallingCard:
                asset = new AssetCallingCard(uuid, data);
                break;
#endif
            default:
#if COGBOT_LIBOMV
                asset = new AssetMutable(type, uuid, data);
                Logger.Log("[OarFile] Not Implemented asset type " + type, Helpers.LogLevel.Error);
#else
                throw new NotImplementedException("Unimplemented asset type: " + type);
#endif
                break;
            }
            return(asset);
        }
 public bool UploadAssetData(bool storeLocal)
 {
     if (IsLocalScene)
     {
         ReplaceAll();
         RezRequested = true;
         NewID        = OldID;
         _NewItem     = OldItem;
         return(true);
     }
     if (CogbotHelpers.IsNullOrZero(NewID))
     {
         if (UseUploadKnown)
         {
             AssetUploaded.Reset();
             if (assetType == AssetType.Notecard)
             {
                 Inventory.RequestCreateItem(GetAssetUploadsFolder(), "" + OldID,
                                             Description, assetType, UUID.Zero,
                                             OpenMetaverse.InventoryType.Notecard,
                                             PermissionMask.All, UpdateInvItem);
             }
             else if (assetType == AssetType.Gesture)
             {
                 Inventory.RequestCreateItem(GetAssetUploadsFolder(), "" + OldID,
                                             Description, assetType, UUID.Zero,
                                             OpenMetaverse.InventoryType.Gesture,
                                             PermissionMask.All, UpdateInvItem);
                 // (gesture.Sequence)
             }
             else if (assetType == AssetType.LSLText)
             {
                 Inventory.RequestCreateItem(GetAssetUploadsFolder(), "" + OldID,
                                             Description, assetType, UUID.Zero,
                                             OpenMetaverse.InventoryType.LSL,
                                             PermissionMask.All, UpdateInvItem);
             }
             else if (assetType == AssetType.Landmark)
             {
                 var decodeME = new AssetLandmark(UUID.Zero, AssetData);
                 decodeME.Decode();
                 byte[] bytes = AssetData;
                 Inventory.RequestCreateItem(GetAssetUploadsFolder(), "" + OldID,
                                             "RegionID:" + decodeME.RegionID + ",Postion" + decodeME.Position +
                                             "," + DateTime.Now, assetType, UUID.Zero,
                                             OpenMetaverse.InventoryType.Landmark,
                                             PermissionMask.All, UpdateInvItem);
             }
             else if (assetType == AssetType.CallingCard)
             {
                 var decodeME = new AssetCallingCard(UUID.Zero, AssetData);
                 decodeME.Decode();
                 byte[] bytes = AssetData;
                 Inventory.RequestCreateItem(GetAssetUploadsFolder(), "" + OldID,
                                             "AvatarID:" + decodeME.AvatarID + "," + DateTime.Now,
                                             assetType, UUID.Zero,
                                             OpenMetaverse.InventoryType.CallingCard,
                                             PermissionMask.All, UpdateInvItem);
             }
             else
             {
                 Inventory.RequestCreateItemFromAsset(AssetData, "" + OldID, Description,
                                                      assetType, inventoryType,
                                                      GetAssetUploadsFolder(),
                                                      Permissions.FullPermissions,
                                                      InvItemCreated);
             }
             if (!AssetUploaded.WaitOne(10000))
             {
                 return(false);
             }
             return(true);
         }
         NewID = UUID.Combine(OldID, Importing.Client.Self.SecureSessionID);
         NewUUID2OBJECT[NewID] = this;
         Importing.Client.Assets.RequestUploadKnown(NewID, assetType, AssetData, storeLocal, OldID);
         RezRequested = true;
     }
     return(true);
 }