private static void Rescale(FTimeline timeline, float scaleFactor) { foreach (FTrack track in timeline.Tracks) { Rescale(track, scaleFactor); } }
private static void Rescale(FTimeline timeline, float scaleFactor) { List <FTrack> tracks = timeline.GetTracks(); foreach (FTrack track in tracks) { Rescale(track, scaleFactor); } }
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); } }
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()); }
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); }
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 }
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(); }
public override void RefreshRuntimeObject() { _timeline = (FTimeline)EditorUtility.InstanceIDToObject(_timeline.GetInstanceID()); }