Пример #1
0
 private static void Rescale(FTimeline timeline, float scaleFactor)
 {
     foreach (FTrack track in timeline.Tracks)
     {
         Rescale(track, scaleFactor);
     }
 }
Пример #2
0
        private static void Rescale(FTimeline timeline, float scaleFactor)
        {
            List <FTrack> tracks = timeline.GetTracks();

            foreach (FTrack track in tracks)
            {
                Rescale(track, scaleFactor);
            }
        }
Пример #3
0
        protected override void Init(FObject obj)
        {
            _timeline = (FTimeline)obj;

            _trackEditors.Clear();

            List <FTrack> tracks = _timeline.GetTracks();

            for (int i = 0; i < tracks.Count; ++i)
            {
                FTrack       track       = tracks[i];
                FTrackEditor trackEditor = _sequenceEditor.GetEditor <FTrackEditor>(track);
                trackEditor.Init(track, this);
                _trackEditors.Add(trackEditor);
            }
        }
Пример #4
0
        void AddTimeline()
        {
            Undo.IncrementCurrentGroup();
            UnityEngine.Object[] objsToSave = new UnityEngine.Object[] { SequenceEditor, SequenceEditor.GetSequence() };
            Undo.RecordObjects(objsToSave, string.Empty);

            GameObject timelineGO = new GameObject("TimeLine");
            FTimeline  timeline   = timelineGO.AddComponent <Flux.FTimeline>();

            //timeline.SetOwner(((GameObject)obj).transform);
            SequenceEditor.GetSequence().Add(timeline);

            Undo.RegisterCompleteObjectUndo(objsToSave, string.Empty);
            Undo.RegisterCreatedObjectUndo(timeline.gameObject, "create Timeline");
            Undo.CollapseUndoOperations(Undo.GetCurrentGroup());
        }
Пример #5
0
        public override void Init(FObject obj, FEditor owner)
        {
            base.Init(obj, owner);

            Editors.Clear();

            List <FTimeline> timelines = Container.Timelines;

            for (int i = 0; i < timelines.Count; ++i)
            {
                FTimeline       timeline       = timelines[i];
                FTimelineEditor timelineEditor = SequenceEditor.GetEditor <FTimelineEditor>(timeline);
                timelineEditor.Init(timeline, this);
                Editors.Add(timelineEditor);
            }

            _icon = new GUIContent(FUtility.GetFluxTexture("Folder.png"));

//			_contentOffset = new Vector2(8, HeaderHeight);
        }
Пример #6
0
        void OnGUI()
        {
#if FLUX_PROFILE
            Profiler.BeginSample("Flux OnGUI");
#endif
            if (_sequenceEditor == null)
            {
                return;
            }

            Rect currentWindowRect = position;
            currentWindowRect.x = 0;
            currentWindowRect.y = 0;

            if (currentWindowRect != _windowRect)
            {
                RebuildLayout();
            }

            if (Event.current.type == EventType.Ignore)
            {
                EditorGUIUtility.hotControl = 0;
            }

            GTimelineEditor sequence = _sequenceEditor.GetSequence();

            if (sequence == null)
            {
                ShowNotification(new GUIContent("Select Or Create Sequence"));
            }
            else if (Event.current.isKey)
            {
                if (Event.current.keyCode == KeyCode.Space)
                {
                    if (Event.current.type == EventType.KeyUp)
                    {
                        if (_sequenceEditor.IsPlaying)
                        {
                            if (Event.current.shift)
                            {
                                Stop();
                            }
                            else
                            {
                                Pause();
                            }
                        }
                        else
                        {
                            Play(Event.current.shift);
                        }


                        Repaint();
                    }
                    Event.current.Use();
                }

                if (Event.current.type == EventType.KeyDown && Event.current.keyCode == KeyCode.Return)
                {
                    EditorGUIUtility.keyboardControl = 0;
                    Event.current.Use();
                    Repaint();
                }
            }


            // header
            _windowHeader.OnGUI();

            if (sequence == null)
            {
                return;
            }

            // toolbar
            _toolbar.OnGUI();

            switch (Event.current.type)
            {
            case EventType.KeyDown:
                if (Event.current.keyCode == KeyCode.Backspace || Event.current.keyCode == KeyCode.Delete)
                {
                    _sequenceEditor.DestroyEvents(_sequenceEditor._selectedEvents);
                    Event.current.Use();
                }
                else if (Event.current.keyCode == KeyCode.K && _sequenceEditor.GetSequence().GetCurrentFrame() >= 0)
                {
                    _sequenceEditor.AddEvent(_sequenceEditor.GetSequence().GetCurrentFrame());
                    Event.current.Use();
                }
                break;

            case EventType.MouseDown:
                break;

            case EventType.MouseUp:
                break;
            }

            if (Event.current.type == EventType.ValidateCommand)
            {
                Repaint();
            }

            _sequenceEditor.OnGUI();


            // because of a bug with windows editor, we have to not catch right button
            // otherwise ContextClick doesn't get called
            if (Event.current.type == EventType.MouseUp && Event.current.button != 1)
            {
                Event.current.Use();
            }

            // handle drag & drop
            if (Event.current.type == EventType.DragUpdated)
            {
                if (_windowRect.Contains(Event.current.mousePosition))
                {
                    DragAndDrop.visualMode = DragAndDropVisualMode.Link;
                    Event.current.Use();
                }
            }
            else if (Event.current.type == EventType.DragPerform)
            {
                if (_windowRect.Contains(Event.current.mousePosition))
                {
                    foreach (UnityEngine.Object obj in DragAndDrop.objectReferences)
                    {
                        if (!(obj is GameObject))
                        {
                            continue;
                        }

                        PrefabType prefabType = PrefabUtility.GetPrefabType(obj);
                        if (prefabType == PrefabType.ModelPrefab || prefabType == PrefabType.Prefab)
                        {
                            continue;
                        }

                        Undo.IncrementCurrentGroup();
                        UnityEngine.Object[] objsToSave = new UnityEngine.Object[] { sequence, this };

                        Undo.RegisterCompleteObjectUndo(objsToSave, string.Empty);

                        GameObject timelineGO = new GameObject(obj.name);

                        FTimeline timeline = timelineGO.AddComponent <Flux.FTimeline>();
                        timeline.SetOwner(((GameObject)obj).transform);
                        sequence.Add(timeline);

                        Undo.RegisterCompleteObjectUndo(objsToSave, string.Empty);
                        Undo.RegisterCreatedObjectUndo(timeline.gameObject, "create Timeline");
                        Undo.CollapseUndoOperations(Undo.GetCurrentGroup());
                    }
                    RemoveNotification();
                    Event.current.Use();
                    DragAndDrop.AcceptDrag();
                    Refresh();
                    EditorGUIUtility.ExitGUI();
                }
            }

            if (Event.current.type == EventType.Repaint)
            {
                Handles.DrawLine(new Vector3(_windowHeaderRect.xMin, _windowHeaderRect.yMax, 0), new Vector3(_windowHeaderRect.xMax - GTimelineEditor.RIGHT_BORDER, _windowHeaderRect.yMax, 0));
            }
#if FLUX_PROFILE
            Profiler.EndSample();
#endif
        }
Пример #7
0
        public void OpenSequence(FSequence sequence)
        {
#if FLUX_DEBUG
            Debug.Log("Opening sequence: " + sequence);
#endif
            if (sequence == null)
            {
                Debug.LogError("sequence == null");
                if (!object.Equals(sequence, null))
                {
                    sequence = (FSequence)EditorUtility.InstanceIDToObject(sequence.GetInstanceID());
                }
            }

            bool sequenceChanged = _sequence != sequence && (object.Equals(_sequence, null) || object.Equals(sequence, null) || _sequence.GetInstanceID() != sequence.GetInstanceID());

//			Debug.Log ("selected sequence! Changed? " + sequenceChanged );

            if (sequenceChanged)
            {
                if (_sequence != null)
                {
                    Stop();
                }
                _editorCache.Clear();
                _selectedEvents.Clear();
                _selectedTracks.Clear();
            }
            else
            {
                _editorCache.Refresh();
            }


            if (sequence != null)
            {
//				_sequenceInstanceID = sequence.GetInstanceID();
                if (_viewRange.Length == 0)
                {
                    _viewRange = new FrameRange(0, sequence.Length);
                }

                if (!EditorApplication.isPlaying)
                {
                    sequence.Rebuild();
                }

                List <FTimeline> timelines = sequence.GetTimelines();

                _timelineEditors.Clear();

                for (int i = 0; i < timelines.Count; ++i)
                {
                    FTimeline       timeline       = timelines[i];
                    FTimelineEditor timelineEditor = GetEditor <FTimelineEditor>(timeline);
                    timelineEditor.Init(timeline, this);
                    _timelineEditors.Add(timelineEditor);
                }

                if (_viewRange.Length == 0)
                {
                    _viewRange = new FrameRange(0, sequence.Length);
                }
            }
            else
            {
//				_sequenceInstanceID = int.MinValue;
            }

            _sequence = sequence;

            Repaint();
        }
Пример #8
0
 public override void RefreshRuntimeObject()
 {
     _timeline = (FTimeline)EditorUtility.InstanceIDToObject(_timeline.GetInstanceID());
 }