Пример #1
0
        ToolbarButton CreateContentExpandButton()
        {
            var button = new ToolbarButton {
                Highlightable = false, Padding = new Thickness(5)
            };

            button.Texture = IconPool.GetTexture("Timeline.plus");
            button.AddChangeWatcher(
                () => boneData.ChildrenExpanded,
                i => button.Texture = IconPool.GetTexture(i ? "Timeline.minus" : "Timeline.plus")
                );
            button.AddChangeWatcher(
                () => boneData.HaveChildren,
                i => button.Visible = i);
            button.Clicked         += () => {
                using (Document.Current.History.BeginTransaction()) {
                    Core.Operations.SetProperty.Perform(boneData, nameof(BoneRow.ChildrenExpanded), !boneData.ChildrenExpanded);
                    if (button.Input.IsKeyPressed(Key.Control))
                    {
                        ExpandChildrenRecursively(
                            boneData.Bone,
                            boneData.Bone.Parent.AsWidget.Nodes.OfType <Bone>().ToList(),
                            boneData.ChildrenExpanded);
                    }
                    if (boneData.ChildrenExpanded)
                    {
                        Timeline.Instance.EnsureRowChildsVisible(row);
                    }
                    Document.Current.History.CommitTransaction();
                }
            };
            return(button);
        }
Пример #2
0
        private ToolbarButton CreateFrameProgressionButton()
        {
            var button = new ToolbarButton(IconPool.GetTexture("Timeline.FrameProgression"))
            {
                Tooltip = "Frame progression mode"
            };

            button.AddChangeWatcher(() => CoreUserPreferences.ShowFrameProgression, i => button.Checked = i);
            button.Clicked += () => CoreUserPreferences.ShowFrameProgression = !CoreUserPreferences.ShowFrameProgression;
            button.AddChangeWatcher(() => Document.Current.Animation.IsCompound, v => button.Visible = !v);
            return(button);
        }
Пример #3
0
        private ToolbarButton CreateTimelineCursorLockButton()
        {
            var button = new ToolbarButton(IconPool.GetTexture("Timeline.TimelineCursorLock"))
            {
                Tooltip = "Lock timeline cursor"
            };

            button.AddChangeWatcher(() => CoreUserPreferences.LockTimelineCursor, i => button.Checked = i);
            button.Clicked += () => CoreUserPreferences.LockTimelineCursor = !CoreUserPreferences.LockTimelineCursor;
            button.AddChangeWatcher(() => Document.Current.Animation.IsCompound, v => button.Visible = !v);
            return(button);
        }
Пример #4
0
        ToolbarButton CreateAutoKeyframesButton()
        {
            var button = new ToolbarButton(IconPool.GetTexture("Timeline.Key"))
            {
                Tooltip = "Automatic keyframes"
            };

            button.AddChangeWatcher(() => CoreUserPreferences.AutoKeyframes, i => button.Checked = i);
            button.Clicked += () => CoreUserPreferences.AutoKeyframes = !CoreUserPreferences.AutoKeyframes;
            button.Components.Add(new DocumentationComponent("AutomaticKeyframes"));
            button.AddChangeWatcher(() => Document.Current.Animation.IsCompound, v => button.Visible = !v);
            return(button);
        }
Пример #5
0
        ToolbarButton CreateAnimationStretchButton()
        {
            var button = new ToolbarButton(IconPool.GetTexture("Timeline.AnimationStretch"))
            {
                Tooltip = "Animation stretch mode"
            };

            button.AddChangeWatcher(() => UserPreferences.AnimationStretchMode, i => button.Checked = i);
            button.Clicked += () => UserPreferences.AnimationStretchMode = !UserPreferences.AnimationStretchMode;
            button.Components.Add(new DocumentationComponent("AnimationStretch.md"));
            button.AddChangeWatcher(() => Document.Current.Animation.IsCompound, v => button.Visible = !v);
            return(button);
        }
Пример #6
0
        ToolbarButton CreateCurveEditorButton()
        {
            var button = new ToolbarButton(IconPool.GetTexture("Timeline.Curve"))
            {
                Tooltip = "Edit curves"
            };

            button.AddChangeWatcher(() => UserPreferences.EditCurves, i => button.Checked = i);
            button.Clicked += () => UserPreferences.EditCurves = !UserPreferences.EditCurves;
            button.Components.Add(new DocumentationComponent("EditCurves"));
            button.AddChangeWatcher(() => Document.Current.Animation.IsCompound, v => button.Visible = !v);
            return(button);
        }
Пример #7
0
        ToolbarButton CreateApplyZeroPoseButton()
        {
            var button = new ToolbarButton(IconPool.GetTexture("Timeline.ApplyZeroPose"))
            {
                Tooltip = "Apply zero pose"
            };

            button.AddTransactionClickHandler(() => {
                Core.Operations.SetProperty.Perform(Document.Current.Animation, nameof(Animation.ApplyZeroPose), !Document.Current.Animation.ApplyZeroPose);
            });
            button.AddChangeWatcher(() => Document.Current.Animation.ApplyZeroPose, i => button.Checked = i);
            button.Components.Add(new DocumentationComponent("ApplyZeroPose"));
            button.AddChangeWatcher(() => !Document.Current.Animation.IsLegacy && !Document.Current.Animation.IsCompound, v => button.Visible = v);
            return(button);
        }
Пример #8
0
        ToolbarButton CreateEyeButton()
        {
            var button = new ToolbarButton(IconPool.GetTexture("Timeline.Eye"))
            {
                Tooltip = "Show widgets"
            };

            button.AddTransactionClickHandler(() => {
                var nodes      = !RootWidget.Input.IsKeyPressed(Key.Shift) ? Document.Current.Container.Nodes.ToList() : Document.Current.SelectedNodes().ToList();
                var visibility = NodeVisibility.Hidden;
                if (nodes.All(i => i.EditorState().Visibility == NodeVisibility.Hidden))
                {
                    visibility = NodeVisibility.Shown;
                }
                else if (nodes.All(i => i.EditorState().Visibility == NodeVisibility.Shown))
                {
                    visibility = NodeVisibility.Default;
                }
                foreach (var node in nodes)
                {
                    Core.Operations.SetProperty.Perform(node.EditorState(), nameof(NodeEditorState.Visibility), visibility);
                }
            });
            button.Components.Add(new DocumentationComponent("ShowWidgets"));
            button.AddChangeWatcher(() => Document.Current.Animation.IsCompound, v => button.Visible = !v);
            return(button);
        }
Пример #9
0
        ToolbarButton CreateLockAnimationButton()
        {
            var button = new ToolbarButton {
                Highlightable = false
            };

            button.AddChangeWatcher(
                () => GetAnimationState(nodeData.Node),
                i => {
                var texture = "Timeline.Empty";
                if (i == AnimationState.Enabled)
                {
                    texture = "Timeline.AnimationEnabled";
                }
                else if (i == AnimationState.PartiallyEnabled)
                {
                    texture = "Timeline.AnimationPartiallyEnabled";
                }
                else if (i == AnimationState.Disabled)
                {
                    texture = "Timeline.AnimationDisabled";
                }
                button.Texture = IconPool.GetTexture(texture);
            }
                );
            button.Clicked += () => {
                var enabled = GetAnimationState(nodeData.Node) == AnimationState.Enabled;
                foreach (var a in nodeData.Node.Animators)
                {
                    Core.Operations.SetProperty.Perform(a, nameof(IAnimator.Enabled), !enabled);
                }
            };
            return(button);
        }
Пример #10
0
        ToolbarButton CreateExpandButton()
        {
            var button = new ToolbarButton {
                Highlightable = false, Padding = new Thickness(5)
            };

            button.Texture = IconPool.GetTexture("Timeline.minus");
            button.AddChangeWatcher(
                () => folder.Expanded,
                i => button.Texture = IconPool.GetTexture(i ? "Timeline.minus" : "Timeline.plus")
                );
            button.AddChangeWatcher(
                () => folder.Items.Count != 0,
                i => button.Visible = folder.Items.Count != 0
                );
            button.AddTransactionClickHandler(ExpandOrCollapse);
            return(button);
        }
Пример #11
0
        ToolbarButton CreateExpandButton()
        {
            var button = new ToolbarButton {
                Highlightable = false, Padding = new Thickness(5)
            };

            button.Texture = IconPool.GetTexture("Timeline.minus");
            button.AddChangeWatcher(
                () => folder.Expanded,
                i => button.Texture = IconPool.GetTexture(i ? "Timeline.minus" : "Timeline.plus")
                );
            button.AddChangeWatcher(
                () => folder.Items.Count != 0,
                i => button.Visible = folder.Items.Count != 0
                );
            button.Clicked += () => Core.Operations.SetProperty.Perform(folder, nameof(Folder.Expanded), !folder.Expanded);
            return(button);
        }
Пример #12
0
        ToolbarButton CreateAnimationModeButton()
        {
            var button = new ToolbarButton(IconPool.GetTexture("Timeline.AnimationMode"))
            {
                Tip = "Animation mode"
            };

            button.AddChangeWatcher(() => UserPreferences.AnimationMode, i => button.Checked = i);
            button.Clicked += () => UserPreferences.AnimationMode = !UserPreferences.AnimationMode;
            return(button);
        }
Пример #13
0
        ToolbarButton CreateAutoKeyframesButton()
        {
            var button = new ToolbarButton(IconPool.GetTexture("Timeline.Key"))
            {
                Tip = "Automatic keyframes"
            };

            button.AddChangeWatcher(() => CoreUserPreferences.AutoKeyframes, i => button.Checked = i);
            button.Clicked += () => CoreUserPreferences.AutoKeyframes = !CoreUserPreferences.AutoKeyframes;
            return(button);
        }
Пример #14
0
        ToolbarButton CreateCurveEditorButton()
        {
            var button = new ToolbarButton(IconPool.GetTexture("Timeline.Curve"))
            {
                Tip = "Edit curves"
            };

            button.AddChangeWatcher(() => UserPreferences.EditCurves, i => button.Checked = i);
            button.Clicked += () => UserPreferences.EditCurves = !UserPreferences.EditCurves;
            return(button);
        }
Пример #15
0
        ToolbarButton CreateExpandButton()
        {
            var button = new ToolbarButton {
                LayoutCell = new LayoutCell(Alignment.Center)
            };
            var s = propRow.Animator.EditorState();

            button.AddChangeWatcher(() => s.CurvesShown,
                                    i => button.Texture = IconPool.GetTexture(i ? "Timeline.Expanded" : "Timeline.Collapsed"));
            button.Clicked += () => Core.Operations.SetProperty.Perform(s, nameof(AnimatorEditorState.CurvesShown), !s.CurvesShown);
            return(button);
        }
Пример #16
0
        ToolbarButton CreateAnimationModeButton()
        {
            var button = new ToolbarButton(IconPool.GetTexture("Timeline.AnimationMode"))
            {
                Tooltip = "Animation mode"
            };

            button.AddChangeWatcher(() => CoreUserPreferences.AnimationMode, i => button.Checked = i);
            button.Clicked += () => CoreUserPreferences.AnimationMode = !CoreUserPreferences.AnimationMode;
            button.Components.Add(new DocumentationComponent("AnimationMode"));
            return(button);
        }
Пример #17
0
        private ToolbarButton CreateSlowMotionButton()
        {
            var button = new ToolbarButton(IconPool.GetTexture("Timeline.SlowMotionMode"))
            {
                Tooltip = "Slow motion mode (~)"
            };

            button.AddChangeWatcher(() => UserPreferences.SlowMotionMode, i => button.Checked = i);
            button.Clicked += () => UserPreferences.SlowMotionMode = !UserPreferences.SlowMotionMode;
            button.Components.Add(new DocumentationComponent("SlowMotionMode.md"));
            return(button);
        }
Пример #18
0
        ToolbarButton CreateExitButton()
        {
            var button = new ToolbarButton(IconPool.GetTexture("Timeline.ExitContainer"))
            {
                Tooltip = "Exit current container (backspace)"
            };

            button.AddTransactionClickHandler(Core.Operations.LeaveNode.Perform);
            button.Updating += _ => button.Enabled = Core.Operations.LeaveNode.IsAllowed();
            button.Components.Add(new DocumentationComponent("ExitContainer"));
            button.AddChangeWatcher(() => Document.Current.Animation.IsCompound, v => button.Visible = !v);
            return(button);
        }
Пример #19
0
        ToolbarButton CreateLockButton()
        {
            var button = new ToolbarButton {
                Highlightable = false
            };

            button.AddChangeWatcher(
                () => trackRow.Locked,
                i => button.Texture = IconPool.GetTexture(i ? "Timeline.Lock" : "Timeline.Dot")
                );
            button.AddTransactionClickHandler(() => Core.Operations.SetProperty.Perform(trackRow, nameof(AnimationTrackRow.Locked), !trackRow.Locked));
            return(button);
        }
Пример #20
0
        ToolbarButton CreateLockButton()
        {
            var button = new ToolbarButton {
                Highlightable = false
            };

            button.AddChangeWatcher(
                () => nodeData.Locked,
                i => button.Texture = IconPool.GetTexture(i ? "Timeline.Lock" : "Timeline.Dot")
                );
            button.Clicked += () => Core.Operations.SetProperty.Perform(nodeData, nameof(NodeRow.Locked), !nodeData.Locked);
            return(button);
        }
Пример #21
0
        ToolbarButton CreateExpandButton()
        {
            var button = new ToolbarButton {
                Highlightable = false, Padding = new Thickness(5)
            };

            button.Texture = IconPool.GetTexture("Timeline.minus");
            button.AddChangeWatcher(
                () => folder.Expanded,
                i => button.Texture = IconPool.GetTexture(i ? "Timeline.minus" : "Timeline.plus")
                );
            button.AddChangeWatcher(
                () => folder.Items.Count != 0,
                i => button.Visible = folder.Items.Count != 0
                );
            button.AddTransactionClickHandler(() => {
                Core.Operations.SetProperty.Perform(folder, nameof(Folder.Expanded), !folder.Expanded);
                if (folder.Expanded)
                {
                    Timeline.Instance.EnsureRowChildsVisible(row);
                }
            });
            return(button);
        }
Пример #22
0
        ToolbarButton CreateLockAnimationButton()
        {
            var button = new ToolbarButton {
                Highlightable = false
            };

            button.AddChangeWatcher(
                () => propRow.Animator.Enabled,
                i => button.Texture = IconPool.GetTexture(i ? "Timeline.AnimationEnabled" : "Timeline.AnimationDisabled")
                );
            button.AddTransactionClickHandler(() => {
                Core.Operations.SetProperty.Perform(propRow.Animator, nameof(IAnimator.Enabled), !propRow.Animator.Enabled);
            });
            return(button);
        }
Пример #23
0
        private static Widget CreateAnimeshStateButton(AnimeshTools.ModificationState state, Command command, string text)
        {
            var tb = new ToolbarButton(text)
            {
                Highlightable = true,
                Tooltip       = command.Text,
            };

            tb.AddChangeWatcher(() => AnimeshTools.State, s => tb.Checked = s == state);
            tb.Clicked += () => {
                if (!tb.Checked)
                {
                    command.Issue();
                }
            };
            return(tb);
        }
Пример #24
0
        ToolbarButton CreateFolderButton()
        {
            var button = new ToolbarButton(IconPool.GetTexture("Tools.NewFolder"))
            {
                Tooltip = "Create folder"
            };

            button.AddTransactionClickHandler(() => {
                var folder = new Folder {
                    Id = "Folder"
                };
                Core.Operations.InsertFolderItem.Perform(folder);
                Core.Operations.ClearRowSelection.Perform();
                Core.Operations.SelectRow.Perform(Document.Current.GetRowForObject(folder));
            });
            button.Components.Add(new DocumentationComponent("CreateFolder"));
            button.AddChangeWatcher(() => Document.Current.Animation.IsCompound, v => button.Visible = !v);
            return(button);
        }
Пример #25
0
        ToolbarButton CreateLockButton()
        {
            var button = new ToolbarButton(IconPool.GetTexture("Timeline.Lock"))
            {
                Tooltip = "Lock widgets"
            };

            button.AddTransactionClickHandler(() => {
                var nodes  = !RootWidget.Input.IsKeyPressed(Key.Shift) ? Document.Current.Container.Nodes.ToList() : Document.Current.SelectedNodes().ToList();
                var locked = nodes.All(i => !i.EditorState().Locked);
                foreach (var node in nodes)
                {
                    Core.Operations.SetProperty.Perform(node.EditorState(), nameof(NodeEditorState.Locked), locked);
                }
            });
            button.Components.Add(new DocumentationComponent("LockWidgets"));
            button.AddChangeWatcher(() => Document.Current.Animation.IsCompound, v => button.Visible = !v);
            return(button);
        }
Пример #26
0
        ToolbarButton CreateLockAnimationButton()
        {
            var button = new ToolbarButton(IconPool.GetTexture("Timeline.AnimationEnabled"))
            {
                Tooltip = "Lock animation"
            };

            button.AddTransactionClickHandler(() => {
                var nodes  = !RootWidget.Input.IsKeyPressed(Key.Shift) ? Document.Current.Container.Nodes.ToList() : Document.Current.SelectedNodes().ToList();
                var enable = !nodes.All(IsAnimationEnabled);
                foreach (var node in nodes)
                {
                    foreach (var animator in node.Animators)
                    {
                        Core.Operations.SetProperty.Perform(animator, nameof(IAnimator.Enabled), enable);
                    }
                }
            });
            button.Components.Add(new DocumentationComponent("LockAnimation"));
            button.AddChangeWatcher(() => Document.Current.Animation.IsCompound, v => button.Visible = !v);
            return(button);
        }
Пример #27
0
        ToolbarButton CreateEyeButton()
        {
            var button = new ToolbarButton {
                Highlightable = false
            };

            button.AddChangeWatcher(() => trackRow.Visibility, i => {
                var texture = "Timeline.Dot";
                if (i == AnimationTrackVisibility.Shown)
                {
                    texture = "Timeline.Eye";
                }
                else if (i == AnimationTrackVisibility.Hidden)
                {
                    texture = "Timeline.Cross";
                }
                button.Texture = IconPool.GetTexture(texture);
            });
            button.AddTransactionClickHandler(
                () => Core.Operations.SetProperty.Perform(trackRow, nameof(AnimationTrackRow.Visibility), (AnimationTrackVisibility)(((int)trackRow.Visibility + 1) % 3))
                );
            return(button);
        }
Пример #28
0
        ToolbarButton CreateEyeButton()
        {
            var button = new ToolbarButton {
                Highlightable = false
            };

            button.AddChangeWatcher(() => nodeData.Visibility, i => {
                var texture = "Timeline.Dot";
                if (i == NodeVisibility.Shown)
                {
                    texture = "Timeline.Eye";
                }
                else if (i == NodeVisibility.Hidden)
                {
                    texture = "Timeline.Cross";
                }
                button.Texture = IconPool.GetTexture(texture);
            });
            button.Clicked += () => {
                Core.Operations.SetProperty.Perform(nodeData, nameof(NodeRow.Visibility), (NodeVisibility)(((int)nodeData.Visibility + 1) % 3));
            };
            return(button);
        }