void Assets_OnAssetReceived(AssetDownload transfer, Asset asset) { if (InvokeRequired) { BeginInvoke(new MethodInvoker(delegate() { Assets_OnAssetReceived(transfer, asset); })); return; } if (!transfer.Success) { tlblStatus.Text = "Download failed"; return; } tlblStatus.Text = "OK"; tbtnPlay.Enabled = true; gestureAsset = (AssetGesture)asset; if (gestureAsset.Decode()) { for (int i = 0; i < gestureAsset.Sequence.Count; i++) { rtbInfo.AppendText(gestureAsset.Sequence[i].ToString().Trim() + Environment.NewLine); } } }
protected override string GuessAssetName() { if (Item != null) { return(Item.Name); } String s = ""; if (_ServerAsset == null) { return(null); } Decode(ServerAsset); AssetGesture gestureAsset = GetGesture(); for (int i = 0; i < gestureAsset.Sequence.Count; i++) { s += (gestureAsset.Sequence[i].ToString().Trim() + Environment.NewLine); } if (!string.IsNullOrEmpty(s)) { return(s); } AssetGesture S = (AssetGesture)ServerAsset; AssetData = S.AssetData; return(UnknownName); }
private void tbtnReupload_Click(object sender, EventArgs e) { AssetGesture gestureAsset = GetGesture(); GridClient client = WorldObjects.GridMaster.client; InventoryItem gesture = Item; UpdateStatus("Creating new item..."); client.Inventory.RequestCreateItem(gesture.ParentUUID, "Copy of " + gesture.Name, gesture.Description, AssetType.Gesture, UUID.Random(), InventoryType.Gesture, PermissionMask.All, delegate(bool success, InventoryItem item) { if (success) { UpdateStatus("Uploading data..."); client.Inventory.RequestUploadGestureAsset(gestureAsset.AssetData, item.UUID, delegate(bool assetSuccess, string status, UUID itemID, UUID assetID) { if (assetSuccess) { gesture.AssetUUID = assetID; UpdateStatus("OK"); } else { UpdateStatus("Asset failed"); } } ); } else { UpdateStatus("Inv. failed"); } } ); }
protected override List <SimAsset> GetParts() { AssetGesture gestureAsset = GetGesture(); // StringBuilder sb = new StringBuilder(); //sb.Append("2\n"); if (gestureAsset == null) { return(null); } Name = gestureAsset.Trigger; //sb.Append(TriggerKey + "\n"); //sb.Append(TriggerKeyMask + "\n"); //sb.Append(Trigger + "\n"); Name = gestureAsset.ReplaceWith;//sb.Append(ReplaceWith + "\n"); List <GestureStep> Sequence = gestureAsset.Sequence; int count = 0; if (Sequence != null) { count = Sequence.Count; } List <SimAsset> parts = new List <SimAsset>(count); //sb.Append(count + "\n"); _Length = 0; for (int i = 0; i < count; i++) { GestureStep step = Sequence[i]; // sb.Append((int)step.GestureStepType + "\n"); SimAsset asset; switch (step.GestureStepType) { case GestureStepType.EOF: goto Finish; case GestureStepType.Animation: GestureStepAnimation animstep = (GestureStepAnimation)step; asset = SimAssetStore.FindOrCreateAsset(animstep.ID, AssetType.Animation); asset.Name = animstep.Name; if (animstep.AnimationStart) { parts.Add(asset); // sb.Append("0\n"); _Length += asset.Length; } else { // sb.Append("1\n"); } break; case GestureStepType.Sound: GestureStepSound soundstep = (GestureStepSound)step; asset = SimAssetStore.FindOrCreateAsset(soundstep.ID, AssetType.Sound); asset.Name = soundstep.Name; parts.Add(asset); _Length += asset.Length; break; case GestureStepType.Chat: GestureStepChat chatstep = (GestureStepChat)step; Name = chatstep.Text; //sb.Append(chatstep.Text + "\n"); //sb.Append("0\n"); _Length += 10; break; case GestureStepType.Wait: GestureStepWait waitstep = (GestureStepWait)step; //sb.AppendFormat("{0:0.000000}\n", waitstep.WaitTime); int waitflags = 0; if (waitstep.WaitForTime) { waitflags |= 0x01; _Length += waitstep.WaitTime; } if (waitstep.WaitForAnimation) { waitflags |= 0x02; _Length += 10; } //sb.Append(waitflags + "\n"); break; } } Finish: if (parts.Count == 1) { SimAsset A = parts[0]; if (A is SimAnimation) { AnimationGestures[A.AssetID] = this; if (A.Item == null) { A.Item = Item; } } } return(parts); }
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); }