// Check the AnimOperator class for the different supported operator types.
        // This sample simply deletes the frames after the currently selected clip.
        public override bool OnFrameGroupInspectorGUI(tk2dSpriteAnimationClip selectedClip,
                                                      List <ClipEditor.FrameGroup> frameGroups,
                                                      TimelineEditor.State state)
        {
            // WrapMode.Single is a special case - you are only allowed to have one frame in a "Single" clip.
            // If you don't handle this, tk2d will truncate the list when it is Committed.
            if (selectedClip.wrapMode == tk2dSpriteAnimationClip.WrapMode.Single)
            {
                return(false);
            }

            // Keep track of changes.
            // In a lot of cases, a simple bool will suffice. This is used later to
            // tell the system that something has changed.
            bool changed = false;

            GUILayout.BeginHorizontal();
            if (GUILayout.Button("Ins <-", EditorStyles.miniButton))
            {
                frameGroups.Insert(state.selectedFrame,
                                   AnimOperatorUtil.NewFrameGroup(frameGroups, state.selectedFrame));
                // Make sure state is valid after performing your operation.
                // For instance, if the selected frame is deleted, ensure it isn't selected any more.
                state.selectedFrame++;
                changed = true;
            }
            if (GUILayout.Button("Ins ->", EditorStyles.miniButton))
            {
                frameGroups.Insert(state.selectedFrame + 1,
                                   AnimOperatorUtil.NewFrameGroup(frameGroups, state.selectedFrame));
                changed = true;
            }
            GUILayout.EndHorizontal();

            // Tell the caller what has changed
            operations = changed ? AnimEditOperations.ClipContentChanged : AnimEditOperations.None;
            return(changed);
        }
Beispiel #2
0
 // Drawn in the frame group inspector GUI for the selected clip.
 // Return true when data has changed.
 public virtual bool OnFrameGroupInspectorGUI(tk2dSpriteAnimationClip selectedClip, List <ClipEditor.FrameGroup> frameGroups, TimelineEditor.State state)
 {
     return(false);
 }
Beispiel #3
0
        public override bool OnFrameGroupInspectorGUI(tk2dSpriteAnimationClip selectedClip, List <ClipEditor.FrameGroup> frameGroups, TimelineEditor.State state)
        {
            if (selectedClip.wrapMode == tk2dSpriteAnimationClip.WrapMode.Single)
            {
                return(false);
            }

            bool changed = false;

            GUILayout.BeginHorizontal();
            if (GUILayout.Button("Autofill 9..1", EditorStyles.miniButton) && AutoFill(frameGroups, state.selectedFrame, true))
            {
                changed = true;
            }
            if (GUILayout.Button("Autofill 1..9", EditorStyles.miniButton) && AutoFill(frameGroups, state.selectedFrame, false))
            {
                changed = true;
            }
            GUILayout.EndHorizontal();

            operations = changed ? AnimEditOperations.ClipContentChanged : AnimEditOperations.None;
            return(changed);
        }
Beispiel #4
0
        public override bool OnFrameGroupInspectorGUI(tk2dSpriteAnimationClip selectedClip, List <ClipEditor.FrameGroup> frameGroups, TimelineEditor.State state)
        {
            if (selectedClip.wrapMode == tk2dSpriteAnimationClip.WrapMode.Single)
            {
                return(false);
            }

            bool changed = false;

            GUILayout.BeginHorizontal();
            if (GUILayout.Button("Insert <", EditorStyles.miniButton))
            {
                frameGroups.Insert(state.selectedFrame, AnimOperatorUtil.NewFrameGroup(frameGroups, state.selectedFrame));
                state.selectedFrame++;
                changed = true;
            }
            if (GUILayout.Button("Insert >", EditorStyles.miniButton))
            {
                frameGroups.Insert(state.selectedFrame + 1, AnimOperatorUtil.NewFrameGroup(frameGroups, state.selectedFrame));
                changed = true;
            }
            GUILayout.EndHorizontal();

            operations = changed ? AnimEditOperations.ClipContentChanged : AnimEditOperations.None;
            return(changed);
        }
Beispiel #5
0
        public override bool OnFrameGroupInspectorGUI(tk2dSpriteAnimationClip selectedClip, List <ClipEditor.FrameGroup> frameGroups, TimelineEditor.State state)
        {
            bool changed = false;

            if (frameGroups.Count > 1)
            {
                GUILayout.Space(16);
                if (GUILayout.Button("Delete", EditorStyles.miniButton))
                {
                    frameGroups.RemoveAt(state.selectedFrame);
                    state.selectedFrame = -1;
                    changed             = true;
                }
                GUILayout.BeginHorizontal();
                if (GUILayout.Button("Delete <", EditorStyles.miniButton))
                {
                    frameGroups.RemoveRange(0, state.selectedFrame); changed = true; state.selectedFrame = 0;
                }
                if (GUILayout.Button("Delete >", EditorStyles.miniButton))
                {
                    frameGroups.RemoveRange(state.selectedFrame + 1, frameGroups.Count - 1 - state.selectedFrame); changed = true; state.selectedFrame = frameGroups.Count - 1;
                }
                GUILayout.EndHorizontal();
            }
            operations = changed ? AnimEditOperations.ClipContentChanged : AnimEditOperations.None;
            return(changed);
        }
Beispiel #6
0
        public override bool OnClipInspectorGUI(tk2dSpriteAnimationClip selectedClip, List <ClipEditor.FrameGroup> frameGroups, TimelineEditor.State state)
        {
            GUILayout.BeginHorizontal();

            bool changed = false;

            if (GUILayout.Button("Reverse", EditorStyles.miniButton))
            {
                frameGroups.Reverse();
                operations          = AnimEditOperations.ClipContentChanged;
                state.selectedFrame = (state.selectedFrame == -1) ? state.selectedFrame : (frameGroups.Count - 1 - state.selectedFrame);
                changed             = true;
            }
            GUIContent addTriggerContent = new GUIContent("Trigger", "You can also add a trigger by double clicking on the trigger area");

            if (GUILayout.Button(addTriggerContent, EditorStyles.miniButton))
            {
                for (int i = 0; i < selectedClip.frames.Length; ++i)
                {
                    if (!selectedClip.frames[i].triggerEvent)
                    {
                        selectedClip.frames[i].triggerEvent = true;
                        state.selectedTrigger = i;
                        break;
                    }
                }
                changed = true;
            }
            if (selectedClip.wrapMode != tk2dSpriteAnimationClip.WrapMode.Single)
            {
                bool newTextToggle = GUILayout.Toggle(textToggle, "Text", EditorStyles.miniButton);
                if (newTextToggle != textToggle)
                {
                    if (newTextToggle == true)
                    {
                        textNames = BuildTextSpriteList(frameGroups);
                        if (textNames.Length == 0)
                        {
                            newTextToggle = false;
                        }
                    }
                    textToggle = newTextToggle;
                }
            }
            GUILayout.EndHorizontal();

            if (textToggle)
            {
                textNames = GUILayout.TextArea(textNames, GUILayout.ExpandWidth(true));
                GUILayout.BeginHorizontal();
                GUILayout.FlexibleSpace();
                if (GUILayout.Button("Process"))
                {
                    if (ProcessSpriteImport(frameGroups, textNames))
                    {
                        textNames                  = "";
                        textToggle                 = false;
                        state.selectedFrame        = -1;
                        changed                    = true;
                        GUIUtility.keyboardControl = 0;
                    }
                }
                GUILayout.EndHorizontal();
            }

            return(changed);
        }