예제 #1
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;
            }
예제 #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
    protected override void updateHeaderControl3(UnityEngine.Rect position)
    {
        CurveTrack track = TargetTrack.Behaviour as CurveTrack;

        if (track == null)
        {
            return;
        }

        Color temp = GUI.color;

        GUI.color = (track.TimelineItems.Length > 0) ? Color.green : Color.red;

        if (GUI.Button(position, string.Empty, TrackGroupControl.styles.AddIcon))
        {
            addNewCurveItem(track);
        }
        GUI.color = temp;
    }
예제 #4
0
    internal static CinemaActorClipCurve CreateActorClipCurve(CurveTrack track)
    {
        string     name = DirectorHelper.getCutsceneItemName(track.gameObject, CURVE_CLIP_NAME_DEFAULT, typeof(CinemaActorClipCurve));
        GameObject item = new GameObject(name);

        item.transform.parent = track.transform;
        CinemaActorClipCurve clip = item.AddComponent <CinemaActorClipCurve>();

        SortedDictionary <float, CinemaActorClipCurve> sortedItems = new SortedDictionary <float, CinemaActorClipCurve>();

        foreach (CinemaActorClipCurve c in track.TimelineItems)
        {
            sortedItems.Add(c.Firetime, c);
        }

        float latestTime = 0;
        float length     = DEFAULT_CURVE_LENGTH;

        foreach (CinemaActorClipCurve c in sortedItems.Values)
        {
            if (latestTime >= c.Firetime)
            {
                latestTime = Mathf.Max(latestTime, c.Firetime + c.Duration);
            }
            else
            {
                length = c.Firetime - latestTime;
                break;
            }
        }

        clip.Firetime = latestTime;
        clip.Duration = length;

        return(clip);
    }
예제 #5
0
    protected override void showBodyContextMenu(Event evt)
    {
        CurveTrack itemTrack = TargetTrack.Behaviour as CurveTrack;

        if (itemTrack == null)
        {
            return;
        }

        Behaviour b = DirectorCopyPaste.Peek();

        PasteContext pasteContext = new PasteContext(evt.mousePosition, itemTrack);
        GenericMenu  createMenu   = new GenericMenu();

        if (b != null && DirectorHelper.IsTrackItemValidForTrack(b, itemTrack))
        {
            createMenu.AddItem(new GUIContent("Paste"), false, pasteItem, pasteContext);
        }
        else
        {
            createMenu.AddDisabledItem(new GUIContent("Paste"));
        }
        createMenu.ShowAsContext();
    }
예제 #6
0
 private void addNewCurveItem(CurveTrack track)
 {
     Undo.RegisterCreatedObjectUndo(CutsceneItemFactory.CreateActorClipCurve(track), "Created Actor Clip Curve");
 }
예제 #7
0
 public PasteContext(Vector2 mousePosition, CurveTrack track)
 {
     this.mousePosition = mousePosition;
     this.track         = track;
 }