Esempio n. 1
0
 private void SaveAnimation()
 {
     AnimationWriter.MakeAnimation(AnimationSavePath, AnimationName, UseQuerternion, ref _capturedMotion);
     _capturedMotion.Clear();
 }
    void OnGUI()
    {
        /*
         * Documentation area
         */
        GUILayout.BeginArea(animInfoRect);

        GUILayout.BeginVertical();
        GUILayout.Label(TC.get("Animation.Documentation"));
        GUILayout.Space(5);
        documentationTextContent = GUILayout.TextField(documentationTextContent);
        GUILayout.EndVertical();

        GUILayout.BeginVertical();
        useTransitonFlag = GUILayout.Toggle(useTransitonFlag, TC.get("Animation.UseTransitions"));
        if (useTransitonFlag != useTransitonFlagLast)
        {
            OnUseTransitonFlagLastChanged(useTransitonFlag);
        }
        slidesAnimationFlag = GUILayout.Toggle(slidesAnimationFlag, TC.get("Animation.Slides"));
        if (slidesAnimationFlag != slidesAnimationFlagLast)
        {
            OnSlidesAnimationFlagLastChanged(slidesAnimationFlag);
        }
        GUILayout.EndVertical();

        GUILayout.EndArea();

        /*
         * Transition panel
         */
        GUILayout.BeginArea(timelineRect);
        scrollPosition = GUILayout.BeginScrollView(scrollPosition, GUILayout.ExpandWidth(true), GUILayout.ExpandHeight(false), GUILayout.MaxHeight(0.25f * windowWidth));
        GUI.skin       = noBackgroundSkin;
        GUILayout.BeginHorizontal();
        for (int i = 0; i < workingAnimation.getFrames().Count; i++)
        {
            GUILayout.BeginHorizontal();
            if (selectedFrame == i)
            {
                GUI.skin = selectedFrameSkin;
            }

            if (
                GUILayout.Button(
                    workingAnimation.getFrames()[i].getImage(false, false, global::Animation.ENGINE).texture, GUILayout.MaxHeight(0.2f * windowHeight), GUILayout.MaxWidth(0.2f * windowWidth)))
            {
                OnFrameSelectionChanged(i);
            }
            GUI.skin = noBackgroundSkin;
            GUILayout.EndHorizontal();
        }
        GUI.skin = defaultSkin;
        GUILayout.EndHorizontal();
        GUILayout.EndScrollView();
        GUILayout.EndArea();


        /*
         * Transition button panel
         */
        GUILayout.BeginArea(timelineButtonsRect);
        GUILayout.BeginHorizontal();
        GUI.skin = noBackgroundSkin;
        if (GUILayout.Button(moveLeft))
        {
            workingAnimation.moveLeft(selectedFrame);
        }
        if (GUILayout.Button(clearImg))
        {
            if (selectedFrame >= 0)
            {
                workingAnimation.removeFrame(selectedFrame);
                selectedFrame--;
            }
        }
        if (GUILayout.Button(addTexture))
        {
            workingAnimation.addFrame(selectedFrame, null);
        }
        if (GUILayout.Button(duplicateImg))
        {
            workingAnimation.addFrame(selectedFrame, workingAnimation.getFrame(selectedFrame));
        }
        if (GUILayout.Button(moveRight))
        {
            workingAnimation.moveRight(selectedFrame);
        }
        GUI.skin = defaultSkin;
        GUILayout.EndHorizontal();
        GUILayout.EndArea();


        /*
         * Frame info panel
         */
        GUILayout.BeginArea(frameInfoRect);

        GUILayout.BeginHorizontal();
        GUILayout.Label(TC.get("Animation.Duration"));
        animationDurationString = GUILayout.TextField(animationDurationString);
        animationDurationString = (Regex.Match(animationDurationString, "^[0-9]{1,4}$").Success
            ? animationDurationString
            : animationDurationStringLast);
        if (!animationDurationString.Equals(animationDurationStringLast))
        {
            OnFrameDurationChanged(animationDurationString);
        }
        GUILayout.Space(5);
        GUILayout.EndHorizontal();

        GUILayout.BeginHorizontal();
        GUILayout.Label(TC.get("Animation.Image"));
        GUILayout.Box(imagePath, GUILayout.MinWidth(0.3f * windowWidth));
        if (GUILayout.Button(TC.get("Buttons.Select")))
        {
            ImageFileOpenDialog imageDialog =
                (ImageFileOpenDialog)ScriptableObject.CreateInstance(typeof(ImageFileOpenDialog));
            imageDialog.Init(this, BaseFileOpenDialog.FileType.FRAME_IMAGE);
        }
        GUILayout.EndHorizontal();

        GUILayout.BeginHorizontal();
        GUILayout.Label(TC.get("Animation.Sound"));
        GUILayout.Space(5);
        if (GUILayout.Button(clearImg))
        {
        }
        GUILayout.Box(soundPath, GUILayout.MinWidth(0.3f * windowWidth));
        if (GUILayout.Button(TC.get("Buttons.Select")))
        {
            MusicFileOpenDialog musicDialog =
                (MusicFileOpenDialog)ScriptableObject.CreateInstance(typeof(MusicFileOpenDialog));
            musicDialog.Init(this, BaseFileOpenDialog.FileType.FRAME_MUSIC);
        }
        GUILayout.EndHorizontal();
        GUILayout.Space(20);
        GUILayout.BeginHorizontal();
        GUILayout.Label(TC.get("NextScene.Transition") + " " + TC.get("Animation.Duration"));
        transitionDurationString = GUILayout.TextField(transitionDurationString);
        transitionDurationString = (Regex.Match(transitionDurationString, "^[0-9]{1,4}$").Success
            ? transitionDurationString
            : transitionDurationStringLast);
        if (!transitionDurationString.Equals(transitionDurationStringLast))
        {
            OnTransitionDurationChanged(transitionDurationString);
        }
        GUILayout.EndHorizontal();
        GUILayout.EndArea();


        GUILayout.BeginArea(buttonRect);
        GUILayout.BeginHorizontal();
        if (GUILayout.Button("OK"))
        {
            AnimationWriter.writeAnimation(cutscenePath, workingAnimation);
            reference.OnDialogOk("", this);
            this.Close();
        }
        if (GUILayout.Button(TC.get("GeneralText.Cancel")))
        {
            reference.OnDialogCanceled();
            this.Close();
        }
        GUILayout.EndHorizontal();
        GUILayout.EndArea();
    }