Пример #1
0
    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
    }
Пример #2
0
    public EditAnimation DuplicateAnimation(EditAnimation animation)
    {
        var newAnim = animation.Duplicate();

        animations.Add(newAnim);
        return(newAnim);
    }
Пример #3
0
 public void DeleteAnimation(EditAnimation animation)
 {
     foreach (var behavior in behaviors)
     {
         behavior.DeleteAnimation(animation);
     }
     animations.Remove(animation);
 }
Пример #4
0
    public void ReplaceAnimation(EditAnimation oldAnimation, EditAnimation newAnimation)
    {
        foreach (var behavior in behaviors)
        {
            behavior.ReplaceAnimation(oldAnimation, newAnimation);
        }
        int oldAnimIndex = animations.IndexOf(oldAnimation);

        animations[oldAnimIndex] = newAnimation;
    }
Пример #5
0
    void Hide(bool result, EditAnimation animation)
    {
        foreach (var uipattern in patterns)
        {
            DestroyPatternToken(uipattern);
        }
        patterns.Clear();

        gameObject.SetActive(false);
        closeAction?.Invoke(result, animation);
        closeAction = null;
    }
Пример #6
0
    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);
            }
    }
Пример #7
0
        /// <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);
            }
        }
Пример #8
0
 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);
    }
Пример #10
0
    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);
        }
    }
Пример #11
0
    /// <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;
    }
Пример #12
0
    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);
    }
Пример #13
0
 // Start is called before the first frame update
 void Awake()
 {
     editAnimation = new EditAnimation(m_animator);
 }