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(); }