public MarkerAnnotation AddMarker(Type type, float timeInSeconds) { MarkerAnnotation marker = MarkerAnnotation.Create(type, timeInSeconds); AddMarker(marker); return(marker); }
public static MarkerAnnotation Create <T>(T payload, float timeInSeconds) where T : struct { MarkerAnnotation marker = Create(typeof(T), timeInSeconds); marker.payload.SetValue(payload); return(marker); }
void OnMarkerRemoved(MarkerAnnotation marker) { var markerTimelineElement = GetMarkerElements().FirstOrDefault(me => me.marker == marker); if (markerTimelineElement != null) { markerTimelineElement.RemoveFromHierarchy(); } m_Owner.SelectionContainer.Remove(marker); }
void OnMarkerAdded(MarkerAnnotation marker) { var markerElement = GetMarkerElements().FirstOrDefault(me => me.marker == marker); if (markerElement != null) { return; } CreateMarkerElement(marker); }
public void AddMarker(MarkerAnnotation marker) { if (!Valid) { return; } Undo.RecordObject(m_Asset, $"Add {TagAttribute.GetDescription(marker.payload.Type)}"); markers.Add(marker); MarkerAdded?.Invoke(marker); NotifyChanged(); }
public void RemoveMarker(MarkerAnnotation marker) { int index = markers.IndexOf(marker); if (index >= 0) { Undo.RecordObject(m_Asset, $"Remove {MarkerAttribute.GetDescription(marker.GetType())}"); MarkerRemoved?.Invoke(marker); marker.Dispose(); markers.RemoveAt(index); NotifyChanged(); } }
MarkerElement CreateMarkerElement(MarkerAnnotation marker) { var me = new MarkerElement(marker, this); AddElement(me); me.Reposition(); if (m_Owner.SelectionContainer.m_Markers.Contains(marker) && !m_Owner.SelectionContainer.m_FullClipSelection) { MarkerElement.SelectMarkerElement(me, m_Owner.SelectionContainer.Count > 1); } me.MarkerElementDragged += OnMarkerElementDragged; me.Selected += OnMarkerSelected; return(me); }
public MarkerElement(MarkerAnnotation marker, MarkerTrack track) : base(track) { m_Track = track; this.marker = marker; focusable = true; m_Content = new VisualElement(); m_Content.AddToClassList(k_MarkerStyleClass); m_BackgroundColor = AnnotationAttribute.GetColor(marker.payload.Type); var background = m_BackgroundColor; background.a = k_BackgroundAlpha; m_Content.style.backgroundColor = background; Add(m_Content); SetupManipulators(m_Content); m_ManipulateLabel = new Label(); m_ManipulateLabel.AddToClassList("markerManipulateLabel"); m_ManipulateLabel.style.visibility = Visibility.Hidden; Add(m_ManipulateLabel); style.position = Position.Absolute; style.minHeight = 22; style.maxWidth = 1; marker.Changed += Reposition; if (panel != null) { SetupTimelineGuideline(panel.visualTree); } else { RegisterCallback <AttachToPanelEvent>(OnAttachToPanel); } RegisterCallback <DetachFromPanelEvent>(OnDetachFromPanel); }
public MarkerEditor(MarkerAnnotation marker, TaggedAnimationClip clip) { m_Clip = clip; m_Marker = marker; UIElementsUtils.ApplyStyleSheet(BuilderWindow.k_Stylesheet, this); UIElementsUtils.CloneTemplateInto("Inspectors/MarkerEditor.uxml", this); AddToClassList("drawerElement"); var deleteButton = this.Q <Button>("deleteButton"); deleteButton.clickable.clicked += () => { RemoveMarker(m_Marker); }; if (!marker.payload.ValidPayloadType) { var contents = this.Q <VisualElement>(classes: "arrayEntryContents"); contents.Clear(); var unknownLabel = new Label { text = MarkerAttribute.k_UnknownMarkerType }; unknownLabel.AddToClassList(AnnotationsEditor.k_UnknownAnnotationType); contents.Add(unknownLabel); return; } TextField typeLabel = this.Q <TextField>(); typeLabel.value = MarkerAttribute.GetDescription(m_Marker.payload.Type); typeLabel.SetEnabled(false); var timeField = this.Q <TimeField>("timeInSeconds"); timeField.Init(m_Clip, marker.timeInSeconds); timeField.TimeChanged += newTime => { if (!EqualityComparer <float> .Default.Equals(m_Marker.timeInSeconds, newTime)) { Undo.RecordObject(m_Clip.Asset, "Change marker time"); m_Marker.timeInSeconds = newTime; m_Marker.NotifyChanged(); clip.Asset.MarkDirty(); } }; m_Marker.Changed += UpdateTime; m_PayloadInspector = UnityEditor.Editor.CreateEditor(m_Marker.payload.ScriptableObject) as GenericStructInspector; m_PayloadInspector.StructModified += () => { m_Marker.payload.Serialize(); m_Clip.Asset.MarkDirty(); }; VisualElement inspectorElement = m_PayloadInspector.CreateInspectorGUI() ?? new IMGUIContainer(m_PayloadInspector.OnInspectorGUI); var inspectorContainer = this.Q <VisualElement>("payloadInspector"); inspectorContainer.Add(inspectorElement); RegisterCallback <DetachFromPanelEvent>(OnDetachFromPanel); m_Clip.Asset.AssetWasDeserialized += UpdateTime; }
void RemoveMarker(MarkerAnnotation marker) { m_Clip.RemoveMarker(marker); }
void ShowMarkerTrack(MarkerAnnotation ma) { ForceGutterTrackDisplay?.Invoke(m_MarkerTrack); }