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; }
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; } } }
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; }
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(); }
public void Remove(BaseTrackBar trackBar) { foreach (FolderView f in _TreeView.Controls) { if ((BaseTrackBar)f.UserData == trackBar) { Remove(f); break; } } }
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); } } } }
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; }
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); } }
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++; } } }
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; } }
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(); }
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(); } } }
internal void EditCurve(BaseTrackBar trackBar) { _CurveTrackTreeView.Add(trackBar); }