예제 #1
0
        internal TrackTreeViewItem(Track track, BaseTrackBar trackBar)
        {
            this.Track    = track;
            this.TrackBar = trackBar;
            this.TrackBar.TreeViewItem = this;
            this.Height = TrackBar.Height;

            this.ColumnDefinitions.Add(1, GridUnitType.Star);
            this.ColumnDefinitions.Add(14, GridUnitType.Pixel);


            this._Background = new UI.Rectangle()
            {
                Column = 0, ColumnSpan = 20, Margin = new Thickness(0, 1)
            };
            this._ContentBox = new Box()
            {
                Column = 0
            };

            this.Controls.Add(_Background);
            this.Controls.Add(_ContentBox);


            this.Properties = CreateProperties();
            this._ContentBox.Content.image = GetIcon();
            this._Background.Color         = track.Color;
            this._ContentBox.Content.text  = Track.gameObject.name;
        }
예제 #2
0
        public void Add(BaseTrackBar trackBar)
        {
            // avoid edit same trackBar twice
            foreach (FolderView folder in _TreeView.Controls)
            {
                if ((BaseTrackBar)folder.UserData == trackBar)
                {
                    return;
                }
            }

            Curve.CurveEditor.EditCurveInfo[] curves = Curve.CurveEditor.GetCurves(trackBar.Track);
            if (curves != null && curves.Length > 0)
            {
                trackBar.IsEditingCurves = true;
                FolderView folder = new FolderView();
                folder.UserData             = trackBar;
                folder.Foldout.Content.text = trackBar.Track.gameObject.name;
                folder.Foldout.IsOpen       = true;
                folder.ContextMenu          = new CurveGroupContextMenu(this);

                int keyTypeValue = 1;
                foreach (var c in curves)
                {
                    CurveTrack             track = _CurveEditor.AddCurve(c.GetCurve(), c.Attribute.Color);
                    CurveTrackTreeViewItem item  = new CurveTrackTreeViewItem(c.Attribute.Name, track, trackBar, (KeyType)keyTypeValue);
                    folder.Controls.Add(item);
                    _TreeView.Controls.Add(folder);
                    keyTypeValue *= 2;
                }
            }
        }
예제 #3
0
            public CurveTrackTreeViewItem(string name, CurveTrack curveTrack, BaseTrackBar trackBar, KeyType keyType)
            {
                this.CurveTrack = curveTrack;
                this.TrackBar   = trackBar;
                this.KeyType    = keyType;


                this.ColumnDefinitions.Add(22, GridUnitType.Pixel);
                this.ColumnDefinitions.Add(1, GridUnitType.Star);
                this.ColumnDefinitions.Add(20, GridUnitType.Pixel);

                _TbVisible = new Skill.Editor.UI.ToggleButton()
                {
                    Column = 0, IsChecked = TrackBar.Visibility == Skill.Framework.UI.Visibility.Visible, Margin = new Thickness(2, 0, 0, 0)
                };
                _LblName = new Label()
                {
                    Column = 1, Text = name
                };

                this.Controls.Add(_TbVisible);
                this.Controls.Add(_LblName);

                _TbVisible.Changed += _TbVisible_Changed;
            }
예제 #4
0
        protected override void Render()
        {
            if (!_RefreshStyle)
            {
                _BtnClear.Style            = Skill.Editor.Resources.Styles.ToolbarButton;
                _BtnClear.Content.image    = UnityEditor.EditorGUIUtility.FindTexture("d_winbtn_win_close");
                _BtnAddKey.Style           = Skill.Editor.Resources.Styles.ToolbarButton;
                _BtnAddKey.Content.image   = UnityEditor.EditorGUIUtility.FindTexture("d_Animation.AddKeyframe");
                _Title.Style               = Skill.Editor.Resources.Styles.Header;
                _TreeView.Background.Style = Skill.Editor.Resources.Styles.BackgroundShadow;
                _RefreshStyle              = true;
            }

            // update name if changed by user
            foreach (FolderView folder in _TreeView.Controls)
            {
                BaseTrackBar trackBar = (BaseTrackBar)(folder.UserData);
                if (!trackBar.Track.IsDestroyed)
                {
                    folder.Foldout.Content.text = trackBar.Track.gameObject.name;
                }
            }

            base.Render();
        }
예제 #5
0
 public void Remove(BaseTrackBar trackBar)
 {
     foreach (FolderView f in _TreeView.Controls)
     {
         if ((BaseTrackBar)f.UserData == trackBar)
         {
             Remove(f);
             break;
         }
     }
 }
예제 #6
0
 private IEnumerable <BaseTrackBar> TrackBars()
 {
     foreach (var c in _TimeLine.View.Controls)
     {
         if (c is BaseTrackBar)
         {
             BaseTrackBar tb = (BaseTrackBar)c;
             if (!tb.Track.IsDestroyed)
             {
                 yield return(tb);
             }
         }
     }
 }
예제 #7
0
 public KeyView(BaseTrackBar trackBar)
     : base(trackBar)
 {
     this.Margin = new Skill.Framework.UI.Thickness(0, 2);
     _Drag       = new TimeLineEventDragDumb(this)
     {
         Row = 0, Column = 0, RowSpan = 100, ColumnSpan = 100
     };
     if (_DragStyle == null)
     {
         _DragStyle = new GUIStyle();
     }
     _Drag.Style = _DragStyle;
     Controls.Add(_Drag);
     base.WantsMouseEvents = true;
 }
예제 #8
0
        private void Remove(FolderView group)
        {
            BaseTrackBar trackBar = group.UserData as BaseTrackBar;

            if (trackBar != null)
            {
                trackBar.IsEditingCurves = false;
                foreach (CurveTrackTreeViewItem item in group.Controls)
                {
                    _CurveEditor.RemoveCurve(item.CurveTrack);
                }

                trackBar.UserData = null;
                _TreeView.Controls.Remove(group);
            }
        }
예제 #9
0
        public void RemoveDestroyed()
        {
            int index = 0;

            while (index < _TreeView.Controls.Count)
            {
                FolderView   fv       = (FolderView)_TreeView.Controls[index];
                BaseTrackBar trackBar = (BaseTrackBar)fv.UserData;
                if (trackBar.Track.IsDestroyed)
                {
                    Remove(fv);
                }
                else
                {
                    index++;
                }
            }
        }
예제 #10
0
        private void CreateTrack(TrackTreeViewGroup parent, TrackType type)
        {
            if (_Editor.Matinee != null)
            {
                GameObject   newObj   = new GameObject(string.Format("New{0}Track", type.ToString()));
                Track        newTrack = CreateNewTrack(newObj, type);
                BaseTrackBar bar      = CreateNewTrackBar(newTrack);

                _Editor.TimeLine.View.Controls.Add(bar);
                TrackTreeViewItem newItem = new TrackTreeViewItem(newTrack, bar);
                newItem.ContextMenu = _TrackItemContextMenu;

                newObj.transform.parent = parent.Group.transform;
                parent.Controls.Add(newItem);
                parent.Foldout.IsOpen = true;

                newObj.transform.localPosition = Vector3.zero;
                newObj.transform.localRotation = Quaternion.identity;
            }
        }
예제 #11
0
        public void RemoveAll(bool clearIsEditingCurves)
        {
            foreach (FolderView group in _TreeView.Controls)
            {
                BaseTrackBar trackBar = group.UserData as BaseTrackBar;
                if (trackBar != null)
                {
                    if (clearIsEditingCurves)
                    {
                        trackBar.IsEditingCurves = false;
                    }
                    foreach (CurveTrackTreeViewItem item in group.Controls)
                    {
                        _CurveEditor.RemoveCurve(item.CurveTrack);
                    }

                    trackBar.UserData = null;
                }
            }
            _TreeView.Controls.Clear();
        }
예제 #12
0
        private void Refresh(Transform transform, Skill.Framework.UI.Panel panel)
        {
            List <TrackGroup> groupList = new List <TrackGroup>();
            List <Track>      trackList = new List <Track>();

            int childCount = transform.childCount;

            // first check for any new group or track
            for (int childIndex = 0; childIndex < childCount; childIndex++)
            {
                Transform  childT = transform.GetChild(childIndex);
                TrackGroup group  = childT.GetComponent <TrackGroup>();
                if (group != null && !group.IsDestroyed)
                {
                    groupList.Add(group);

                    TrackTreeViewGroup groupItem = null;
                    foreach (var item in panel.Controls)
                    {
                        if (item is TrackTreeViewGroup)
                        {
                            if (((TrackTreeViewGroup)item).Group == group)
                            {
                                groupItem = (TrackTreeViewGroup)item;
                                break;
                            }
                        }
                    }

                    if (groupItem == null)
                    {
                        groupItem = new TrackTreeViewGroup(group);
                        groupItem.Foldout.Content.text = groupItem.Group.gameObject.name;
                        groupItem.ContextMenu          = _TrackGroupContextMenu;
                        panel.Controls.Add(groupItem);
                    }
                    //else
                    //groupItem.Refresh();
                    Refresh(groupItem.Group.transform, groupItem);

                    continue;
                }

                // if group not exist look for track
                Track track = childT.GetComponent <Track>();
                if (track != null && !track.IsDestroyed)
                {
                    trackList.Add(track);
                    TrackTreeViewItem trackItem = null;
                    foreach (var item in panel.Controls)
                    {
                        if (item is TrackTreeViewItem)
                        {
                            if (((TrackTreeViewItem)item).Track == track)
                            {
                                trackItem = (TrackTreeViewItem)item;
                                break;
                            }
                        }
                    }

                    if (trackItem == null)
                    {
                        BaseTrackBar bar = CreateNewTrackBar(track);
                        _Editor.TimeLine.View.Controls.Add(bar);
                        trackItem             = new TrackTreeViewItem(track, bar);
                        trackItem.ContextMenu = _TrackItemContextMenu;
                        panel.Controls.Add(trackItem);
                    }
                }
            }

            // now check for any deleted group or track
            int index = 0;

            while (index < panel.Controls.Count)
            {
                var item = panel.Controls[index];
                if (item is TrackTreeViewGroup)
                {
                    TrackGroup group = ((TrackTreeViewGroup)item).Group;
                    if (!groupList.Contains(group))
                    {
                        RemoveTracks((TrackTreeViewGroup)item);
                        panel.Controls.Remove(item);
                        continue;
                    }
                }
                else if (item is TrackTreeViewItem)
                {
                    Track track = ((TrackTreeViewItem)item).Track;
                    if (!trackList.Contains(track))
                    {
                        panel.Controls.Remove(item);
                        _Editor.TimeLine.View.Controls.Remove(((TrackTreeViewItem)item).TrackBar);
                        continue;
                    }
                }

                index++;
            }

            foreach (var item in Controls)
            {
                if (item is TrackTreeViewItem)
                {
                    ((TrackTreeViewItem)item).Refresh();
                }
            }
        }
예제 #13
0
 internal void EditCurve(BaseTrackBar trackBar)
 {
     _CurveTrackTreeView.Add(trackBar);
 }