public void ExportPattern(EditAnimation animation) { void FileSelected(string filePath) { // Save the pattern to JSON AppDataSet.Instance.ExportAnimation(animation, filePath); } #if UNITY_EDITOR FileSelected(UnityEditor.EditorUtility.SaveFilePanel("Export pattern to json", "", animation.name, "json")); #elif UNITY_STANDALONE_WIN // Set filters (optional) // It is sufficient to set the filters just once (instead of each time before showing the file browser dialog), // if all the dialogs will be using the same filters FileBrowser.SetFilters(true, new FileBrowser.Filter("JSON", ".json")); // Set default filter that is selected when the dialog is shown (optional) // Returns true if the default filter is set successfully // In this case, set Images filter as the default filter FileBrowser.SetDefaultFilter(".json"); FileBrowser.ShowSaveDialog((paths) => FileSelected(paths[0]), null, FileBrowser.PickMode.Files, false, null, null, "Save JSON", "Select"); #else ////NativeGallery.GetImageFromGallery(FileSelected, "Select Pattern JSON"); //NativeFilePicker.PickFile( FileSelected, new string[] { NativeFilePicker.ConvertExtensionToFileType( "json" ) }); #endif }
public EditAnimation DuplicateAnimation(EditAnimation animation) { var newAnim = animation.Duplicate(); animations.Add(newAnim); return(newAnim); }
public void DeleteAnimation(EditAnimation animation) { foreach (var behavior in behaviors) { behavior.DeleteAnimation(animation); } animations.Remove(animation); }
public void ReplaceAnimation(EditAnimation oldAnimation, EditAnimation newAnimation) { foreach (var behavior in behaviors) { behavior.ReplaceAnimation(oldAnimation, newAnimation); } int oldAnimIndex = animations.IndexOf(oldAnimation); animations[oldAnimIndex] = newAnimation; }
void Hide(bool result, EditAnimation animation) { foreach (var uipattern in patterns) { DestroyPatternToken(uipattern); } patterns.Clear(); gameObject.SetActive(false); closeAction?.Invoke(result, animation); closeAction = null; }
public void ExportAnimation(EditAnimation animation, string jsonFilePath) { var editSet = ExtractEditSetForAnimation(animation); var serializer = CreateSerializer(); using (StreamWriter sw = new StreamWriter(jsonFilePath)) using (JsonWriter writer = new JsonTextWriter(sw)) { writer.Formatting = Formatting.Indented; serializer.Serialize(writer, editSet); } }
/// <summary> /// /// </summary> /// <param name="ftdat"></param> /// <param name="ajdat"></param> /// <param name="editAnim"></param> public static void EditFighterAnimations(string ftdat, string ajdat, EditAnimation editAnim) { FighterAJManager manager = new FighterAJManager(File.ReadAllBytes(ajdat)); foreach (var symbol in manager.GetAnimationSymbols()) { if (symbol.Contains("Taro")) { continue; } var ftFile = new HSDRawFile(manager.GetAnimationData(symbol)); if (ftFile[symbol] != null) { var ft = ftFile[symbol].Data as HSD_FigaTree; editAnim(ft, symbol); ftFile[symbol].Data = ft; using (MemoryStream stream = new MemoryStream()) { ftFile.Save(stream); manager.SetAnimation(symbol, stream.ToArray()); } } } var newAJFile = manager.RebuildAJFile(manager.GetAnimationSymbols().ToArray(), true); HSDRawFile ftfile = new HSDRawFile(ftdat); if (ftfile.Roots[0].Data is SBM_FighterData data) { var sa = data.FighterActionTable.Commands; foreach (var action in sa) { if (action.SymbolName != null && !string.IsNullOrEmpty(action.SymbolName.Value)) { var sizeOffset = manager.GetOffsetSize(action.SymbolName.Value); action.AnimationOffset = sizeOffset.Item1; action.AnimationSize = sizeOffset.Item2; } } data.FighterActionTable.Commands = sa; ftfile.TrimData(); ftfile.Save(ftdat); File.WriteAllBytes(ajdat, newAJFile); } }
void SetAnimation(EditAnimation newAnimation) { if (newAnimation != null) { dieRenderer.SetAuto(true); dieRenderer.SetAnimation(newAnimation); animationNameText.text = newAnimation.name; } else { dieRenderer.ClearAnimations(); dieRenderer.SetAuto(false); animationNameText.text = "- Please select a Pattern -"; } }
public void Setup(EditAnimation anim) { this.editAnimation = anim; this.dieRenderer = DiceRendererManager.Instance.CreateDiceRenderer(anim.defaultPreviewSettings.design); if (dieRenderer != null) { animRenderImage.texture = dieRenderer.renderTexture; } animNameText.text = anim.name; dieRenderer.SetAuto(true); dieRenderer.SetAnimation(anim); dieRenderer.Play(true); SetSelected(false); }
protected override void SetupControls(string name, System.Func <object> getterFunc, System.Action <object> setterAction, IEnumerable <object> attributes = null) { EditAnimation initialAnim = (EditAnimation)getterFunc(); // Set name nameText.text = name; var design = DesignAndColor.V5_Grey; if (initialAnim != null) { design = initialAnim.defaultPreviewSettings.design; } this.dieRenderer = DiceRendererManager.Instance.CreateDiceRenderer(design, 160); if (dieRenderer != null) { animationRender.texture = dieRenderer.renderTexture; } selectAnimationButton.onClick.AddListener(() => PixelsApp.Instance.ShowAnimationPicker("Select Animation", (EditAnimation)getterFunc.Invoke(), (res, newAnim) => { if (res) { SetAnimation(newAnim); setterAction?.Invoke((EditAnimation)newAnim); } })); // Set animation name field if (initialAnim != null) { dieRenderer.SetAnimation(initialAnim); dieRenderer.Play(true); animationNameText.text = initialAnim.name; dieRenderer.SetAuto(true); } else { dieRenderer.SetAuto(false); } }
/// <summary> /// Invoke the color picker /// </sumary> public void Show(string title, EditAnimation previousAnimation, System.Action <bool, EditAnimation> closeAction) { if (isShown) { Debug.LogWarning("Previous Animation picker still active"); ForceHide(); } foreach (var editAnim in AppDataSet.Instance.animations) { // New pattern var newPatternUI = CreatePatternToken(editAnim); newPatternUI.SetSelected(editAnim == previousAnimation); patterns.Add(newPatternUI); } gameObject.SetActive(true); currentAnimation = previousAnimation; titleText.text = title; this.closeAction = closeAction; }
public EditDataSet ExtractEditSetForAnimation(EditAnimation animation) { EditDataSet ret = new EditDataSet(); ret.animations.Add(animation); foreach (var pattern in patterns) { bool asRGB = false; if (animation.DependsOnPattern(pattern, out asRGB)) { if (asRGB) { ret.rgbPatterns.Add(pattern); } else { ret.patterns.Add(pattern); } } } return(ret); }
// Start is called before the first frame update void Awake() { editAnimation = new EditAnimation(m_animator); }