Exemplo n.º 1
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);
        }
Exemplo n.º 2
0
            public RulerRowView(Ruler ruler, Action onDelete, Action onEdit)
            {
                ThemedDeleteButton deleteButton;
                ThemedSimpleText   label;

                Layout          = new HBoxLayout();
                Nodes.Add(label = new ThemedSimpleText {
                    Padding = new Thickness {
                        Left = 10
                    },
                });
                this.AddChangeWatcher(() => ruler.Name, (name) => label.Text = name);
                Nodes.Add(new Widget());
                Nodes.Add(editButton = new ToolbarButton()
                {
                    Anchors       = Anchors.Right,
                    LayoutCell    = new LayoutCell(Alignment.LeftTop),
                    Texture       = IconPool.GetTexture("Tools.Edit"),
                    Highlightable = false,
                });
                Nodes.Add(deleteButton = new ThemedDeleteButton {
                    Anchors    = Anchors.Right,
                    LayoutCell = new LayoutCell(Alignment.LeftTop)
                });
                deleteButton.Clicked = onDelete;
                editButton.Clicked   = onEdit;
                MinMaxHeight         = RowHeight;
            }
    void SpawnIcon()
    {
        if (!searching && IconPool.PoolAvailable())
        {
            StartCoroutine(FindSpawnPoint());
        }

        if (pickedSpawnPosition != Vector3.zero && IconPool.PoolAvailable())
        {
            GameObject icon = IconPool.GetAvailableObject();
            icon.GetComponent <InteractableIcon>().Reset();

            icon.transform.position = pickedSpawnPosition;

            IconSnapToGrid iconSnap = icon.GetComponent <IconSnapToGrid>();
            iconSnap.Init();
            if (!iconSnap.TrySnapIcon())
            {
                IconPool.ReturnGameObjectToPool(iconSnap.gameObject);
            }

            icon = null;
            StopAllCoroutines();
            searching           = false;
            pickedSpawnPosition = Vector3.zero;
        }
    }
Exemplo n.º 4
0
 public KeyframeButton()
 {
     foreach (var v in Enum.GetValues(typeof(KeyFunction)))
     {
         fillTextures.Add(IconPool.GetTexture("Inspector." + iconNames[(int)v] + "Fill"));
         outlineTextures.Add(IconPool.GetTexture("Inspector." + iconNames[(int)v] + "Outline"));
     }
     Nodes.Clear();
     Size  = MinMaxSize = new Vector2(22, 22);
     image = new Image {
         Size = Size, Shader = ShaderId.Silhuette, Texture = new SerializableTexture(), Color = Theme.Colors.WhiteBackground
     };
     fillImage = new Image {
         Size = Size, Visible = false
     };
     outlintImage = new Image {
         Size = Size, Visible = false
     };
     Nodes.Add(outlintImage);
     Nodes.Add(fillImage);
     Nodes.Add(image);
     Layout             = new StackLayout();
     this.PostPresenter = new WidgetBoundsPresenter(ColorTheme.Current.Inspector.BorderAroundKeyframeColorbox);
     Awoke += Awake;
 }
Exemplo n.º 5
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);
        }
Exemplo n.º 6
0
 private Widget CreateUpButton()
 {
     return(new ToolbarButton(IconPool.GetTexture("Filesystem.ArrowUp"))
     {
         Clicked = () => { view.GoUp(); }
     });
 }
Exemplo n.º 7
0
 public Rulerbar()
 {
     RootWidget = new Widget {
         Id            = nameof(Rulerbar),
         MinMaxHeight  = Metrics.ToolbarHeight,
         HitTestTarget = true
     };
     RootWidget.CompoundPresenter.Add(new SyncDelegatePresenter <Widget>(Render));
     RootWidget.LateTasks.Add(
         new KeyPressHandler(Key.Mouse0DoubleClick, RootWidget_DoubleClick),
         new KeyPressHandler(Key.Mouse1, (input, key) => new ContextMenu().Show())
         );
     RootWidget.AddChangeWatcher(() => Document.Current.AnimationFrame, (value) => {
         var markers = Document.Current.Animation.Markers;
         int i       = markers.FindIndex(m => m.Frame == value);
         if (i >= 0)
         {
             upperMarker = markers[i];
         }
     });
     RootWidget.AddChangeWatcher(() => Document.Current.Container, (value) => {
         upperMarker = null;
     });
     warningIcon = IconPool.GetTexture("Inspector.Warning");
 }
Exemplo n.º 8
0
 private Widget CreateGoForwardButton()
 {
     return(new ToolbarButton(IconPool.GetTexture("Filesystem.ArrowRight"))
     {
         Clicked = () => view.GoForward(),
     });
 }
Exemplo n.º 9
0
 private Widget CreateGotoCurrentProjectDirectoryButton()
 {
     return(new ToolbarButton(IconPool.GetTexture("Filesystem.Home"))
     {
         Clicked = () => { view.GoTo(Project.Current.AssetsDirectory); }
     });
 }
Exemplo n.º 10
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);
        }
Exemplo n.º 11
0
 private Widget CreateCloseButton()
 {
     return(new ToolbarButton(IconPool.GetTexture("Filesystem.Close"))
     {
         Clicked = () => {
             view.Close();
         }
     });
 }
Exemplo n.º 12
0
 private Widget CreateGoBackwardButton()
 {
     return(new ToolbarButton(IconPool.GetTexture("Filesystem.ArrowLeft"))
     {
         Clicked = () => {
             view.ScrollView.SetFocus();
             view.GoBackward();
         },
     });
 }
Exemplo n.º 13
0
        ToolbarButton CreateEnterButton()
        {
            var button = new ToolbarButton {
                Texture       = IconPool.GetTexture("Timeline.EnterContainer"),
                Highlightable = false
            };

            button.Clicked += () => Core.Operations.EnterNode.Perform(nodeData.Node);
            return(button);
        }
Exemplo n.º 14
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);
        }
Exemplo n.º 15
0
        ToolbarButton CreateExitButton()
        {
            var button = new ToolbarButton(IconPool.GetTexture("Timeline.ExitContainer"))
            {
                Tip = "Exit current container (backspace)"
            };

            button.Clicked  += Core.Operations.LeaveNode.Perform;
            button.Updating += _ => button.Enabled = Core.Operations.LeaveNode.IsAllowed();
            return(button);
        }
Exemplo n.º 16
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);
        }
Exemplo n.º 17
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);
        }
Exemplo n.º 18
0
        private Widget CreateSplitVButton()
        {
            ToolbarButton b = null;

            return(b = new ToolbarButton(IconPool.GetTexture("Filesystem.SplitV"))
            {
                Clicked = () => {
                    view.Split(SplitterType.Vertical);
                }
            });
        }
Exemplo n.º 19
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);
        }
Exemplo n.º 20
0
        ToolbarButton CreateExitButton()
        {
            var button = new ToolbarButton(IconPool.GetTexture("Timeline.ExitContainer"))
            {
                Tip = "Exit current container (backspace)"
            };

            button.AddTransactionClickHandler(Core.Operations.LeaveNode.Perform);
            button.Updating += _ => button.Enabled = Core.Operations.LeaveNode.IsAllowed();
            button.Components.Add(new DocumentationComponent("ExitContainer"));
            return(button);
        }
Exemplo n.º 21
0
        public RollFolderView(Row row)
        {
            this.row = row;
            folder   = row.Components.Get <FolderRow>().Folder;
            label    = new ThemedSimpleText();
            editBox  = new ThemedEditBox {
                LayoutCell = new LayoutCell(Alignment.Center, stretchX: float.MaxValue)
            };
            nodeIcon = new Image(IconPool.GetTexture("Tools.NewFolder"))
            {
                HitTestTarget = true,
                MinMaxSize    = new Vector2(16, 16)
            };
            expandButton = CreateExpandButton();
            var expandButtonContainer = new Widget {
                Layout = new StackLayout {
                    IgnoreHidden = false
                },
                LayoutCell = new LayoutCell(Alignment.Center),
                Visible    = true,
                Nodes      = { expandButton }
            };

            eyeButton  = CreateEyeButton();
            lockButton = CreateLockButton();
            widget     = new Widget {
                Padding = new Thickness {
                    Left = 4, Right = 2
                },
                MinHeight = TimelineMetrics.DefaultRowHeight,
                Layout    = new HBoxLayout {
                    DefaultCell = new DefaultLayoutCell(Alignment.Center)
                },
                HitTestTarget = true,
                Nodes         =
                {
                    (spacer = new Widget()),
                    expandButtonContainer,
                    nodeIcon,
                    Spacer.HSpacer(3),
                    label,
                    editBox,
                    new Widget(),
                    eyeButton,
                    lockButton,
                },
            };
            widget.Components.Add(new AwakeBehavior());
            label.AddChangeWatcher(() => folder.Id, s => label.Text = folder.Id);
            widget.CompoundPresenter.Push(new SyncDelegatePresenter <Widget>(RenderBackground));
            editBox.Visible = false;
            widget.Tasks.Add(HandleDobleClickTask());
        }
Exemplo n.º 22
0
 public PathArrowButton(Func <string, bool> openPath, string path = null) : base()
 {
     this.path      = path;
     this.openPath  = openPath;
     MinMaxHeight   = 20;
     Presenter      = new PathButtonPresenter();
     base.Presenter = Presenter;
     if (path == null)
     {
         Updating += (float delta) => {
             var prevState = State;
             if (Expanded)
             {
                 State = PathBarButtonState.Press;
             }
             else
             {
                 if (IsMouseOverThisOrDescendant())
                 {
                     if (WasClicked())
                     {
                         State = PathBarButtonState.Press;
                     }
                     else
                     {
                         State = PathBarButtonState.Hover;
                     }
                 }
                 else
                 {
                     State = PathBarButtonState.Normal;
                 }
             }
             if (prevState != State)
             {
                 Presenter.SetState(State);
             }
         };
     }
     Gestures.Add(new ClickGesture(0, FlipState));
     Layout         = new HBoxLayout();
     MinMaxSize     = new Vector2(11, 20);
     Nodes.Add(icon = new Image {
         LayoutCell = new LayoutCell {
             Alignment = new Alignment {
                 X = HAlignment.Center, Y = VAlignment.Center
             }
         },
         MinMaxSize = new Vector2(11, 6),
         Texture    = IconPool.GetTexture("Filesystem.PathSeparatorCollapsed")
     });
     Expanded = false;
 }
Exemplo n.º 23
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);
        }
Exemplo n.º 24
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);
        }
Exemplo n.º 25
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);
        }
Exemplo n.º 26
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);
        }
Exemplo n.º 27
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);
        }
Exemplo n.º 28
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);
        }
Exemplo n.º 29
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);
        }
Exemplo n.º 30
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);
        }