示例#1
0
        public CurveTrack AddCurve(AnimationCurve animationCurve, Color color)
        {
            CurveTrack track = _CurveView.AddCurve(animationCurve, color);

            track.Changed += Track_Changed;
            return(track);
        }
示例#2
0
        public CurveKey(CurveTrack track, int index)
        {
            this.Track = track;
            this.Index = index;

            _DragThumb = new CurveKeyDragThumb(this)
            {
                Style = new GUIStyle(), Position = new Rect(0, 0, Size, Size)
            };
            this.Controls.Add(_DragThumb);
            _DragThumb.MouseDown += _DragThumb_MouseDown;

            if (Index > 0)
            {
                _HandleLeft = new TangentHandleLeft(this)
                {
                    Visibility = Skill.Framework.UI.Visibility.Hidden
                };
                this.Controls.Add(_HandleLeft);
            }

            if (Index < Curve.length - 1)
            {
                _HandleRight = new TangentHandleRight(this)
                {
                    Visibility = Skill.Framework.UI.Visibility.Hidden
                };
                this.Controls.Add(_HandleRight);
            }
        }
示例#3
0
            public CurveTrackTreeViewItem(CurveTrack track, CurveEditor.EditCurveInfo info)
            {
                this.Track = track;
                this.Info  = info;

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

                _TbVisible = new Skill.Editor.UI.ToggleButton()
                {
                    Column = 0, IsChecked = track.Visibility == Skill.Framework.UI.Visibility.Visible
                };
                _LblName = new Label()
                {
                    Column = 1, Text = info.Attribute.Name
                };
                _CFColor = new Skill.Editor.UI.ColorField()
                {
                    Column = 2, Color = track.Color
                };

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

                _TbVisible.Changed    += _TbVisible_Changed;
                _CFColor.ColorChanged += _CFColor_ColorChanged;
            }
示例#4
0
        void _MnuAddKey_Click(object sender, System.EventArgs e)
        {
            CurveTrack track = Owner as CurveTrack;
            float      time  = track.GetTime(Position.x, false);

            track.AddKey(time);
        }
示例#5
0
 public void RemoveCurve(CurveTrack track)
 {
     if (track != null)
     {
         track.Changed -= Track_Changed;
         _CurveView.Controls.Remove(track);
     }
 }
示例#6
0
        public CurveTrack AddCurve(AnimationCurve curve, Color color)
        {
            CurveTrack t = new CurveTrack(this, curve)
            {
                Color = color
            };

            Controls.Add(t);
            _MultiSelector.BringToFront();
            return(t);
        }
示例#7
0
 IEnumerator IEnumerable.GetEnumerator()
 {
     foreach (var c in this.Controls)
     {
         if (c is CurveTrack)
         {
             CurveTrack track = (CurveTrack)c;
             foreach (CurveKey ck in track.Controls)
             {
                 yield return(ck);
             }
         }
     }
 }
示例#8
0
        public override void FrameAll()
        {
            _MinValue = -1.0f;
            _MaxValue = 1.0f;
            if (Controls.Count > 1) // because of _MultiSelector
            {
                bool found = false;

                foreach (var c in Controls)
                {
                    if (c is CurveTrack)
                    {
                        CurveTrack ct = (CurveTrack)c;
                        if (ct.Visibility == Framework.UI.Visibility.Visible && ct.Curve.length > 1)
                        {
                            if (!found)
                            {
                                found     = true;
                                _MinValue = float.MaxValue;
                                _MaxValue = float.MinValue;
                            }

                            float ctMinValue, ctMaxValue;
                            ct.GetValueBounds(out ctMinValue, out ctMaxValue);

                            if (_MinValue > ctMinValue)
                            {
                                _MinValue = ctMinValue;
                            }
                            if (_MaxValue < ctMaxValue)
                            {
                                _MaxValue = ctMaxValue;
                            }
                        }
                    }
                }

                double delta = _MaxValue - _MinValue;
                _MinValue -= delta * 0.05f;
                _MaxValue += delta * 0.05f;
            }

            _MinVisibleValue = _MinValue;
            _MaxVisibleValue = _MaxValue;
            base.FrameAll();
        }
示例#9
0
        private void AddCurves(Component component)
        {
            CurveEditor.EditCurveInfo[] curves = CurveEditor.GetCurves(component);
            if (curves != null && curves.Length > 0)
            {
                FolderView folder = new FolderView();
                folder.Foldout.Content.text = component.GetType().Name;
                folder.Foldout.IsOpen       = true;

                foreach (var c in curves)
                {
                    CurveTrack             track = _CurveEditor.AddCurve(c.GetCurve(), c.Attribute.Color);
                    CurveTrackTreeViewItem item  = new CurveTrackTreeViewItem(track, c);
                    folder.Controls.Add(item);
                }

                _CurveTreeView.Controls.Add(folder);
            }
        }
示例#10
0
        protected override void GetTimeBounds(out double minTime, out double maxTime)
        {
            minTime = 0.0f;
            maxTime = 1.0f;
            if (Controls.Count > 1) // because of _MultiSelector
            {
                bool found = false;
                foreach (var c in Controls)
                {
                    if (c is CurveTrack && c.Visibility == Skill.Framework.UI.Visibility.Visible)
                    {
                        CurveTrack ct = (CurveTrack)c;
                        if (ct.Curve.length > 1)
                        {
                            if (!found)
                            {
                                minTime = float.MaxValue;
                                maxTime = float.MinValue;
                                found   = true;
                            }

                            float ctMinTime, ctMaxTime;
                            ct.GetTimeBounds(out ctMinTime, out ctMaxTime);

                            if (maxTime < ctMaxTime)
                            {
                                maxTime = ctMaxTime;
                            }
                            if (minTime > ctMinTime)
                            {
                                minTime = ctMinTime;
                            }
                        }
                    }
                }
            }
            if (maxTime - minTime < 0.1f)
            {
                maxTime = minTime + 0.1f;
            }
        }