summaryrefslogtreecommitdiff
path: root/Library/PackageCache/com.unity.timeline@1.2.13/Editor/Items/MarkerItem.cs
blob: e62c3487d3e8d9863c654d176332ac11a6a97b08 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
using System;
using UnityEngine.Timeline;
using Object = UnityEngine.Object;

namespace UnityEditor.Timeline
{
    class MarkerItem : ITimelineItem
    {
        readonly IMarker m_Marker;

        public IMarker marker
        {
            get { return m_Marker; }
        }

        public MarkerItem(IMarker marker)
        {
            m_Marker = marker;
        }

        public TrackAsset parentTrack
        {
            get { return m_Marker.parent; }
            set {}
        }

        public double start
        {
            get { return m_Marker.time; }
            set { m_Marker.time = value; }
        }

        public double end
        {
            get { return m_Marker.time; }
        }

        public double duration
        {
            get { return 0.0; }
        }

        public bool IsCompatibleWithTrack(TrackAsset track)
        {
            return true;
        }

        public void PushUndo(string operation)
        {
            var m = m_Marker as Object;
            if (m != null)
            {
                TimelineUndo.PushUndo(m, operation);
            }
            else
            {
                TimelineUndo.PushUndo(m_Marker.parent, operation);
            }
        }

        public TimelineItemGUI gui
        {
            get { return ItemToItemGui.GetGuiForMarker(m_Marker); }
        }

        public void Delete()
        {
            MarkerModifier.DeleteMarker(m_Marker);
        }

        public ITimelineItem CloneTo(TrackAsset parent, double time)
        {
            var item = new MarkerItem(MarkerModifier.CloneMarkerToParent(m_Marker, parent));
            item.start = time;
            return item;
        }

        protected bool Equals(MarkerItem otherMarker)
        {
            return Equals(m_Marker, otherMarker.m_Marker);
        }

        public override int GetHashCode()
        {
            return (m_Marker != null ? m_Marker.GetHashCode() : 0);
        }

        public override string ToString()
        {
            return m_Marker.ToString();
        }

        public bool Equals(ITimelineItem other)
        {
            return Equals((object)other);
        }

        public override bool Equals(object obj)
        {
            if (ReferenceEquals(null, obj)) return false;
            if (ReferenceEquals(this, obj)) return true;
            var other = obj as MarkerItem;
            return other != null && Equals(other);
        }
    }
}