| using System; | |
| using UnityEngine; | |
| namespace UnityEditor.Timeline | |
| { | |
| struct Range | |
| { | |
| public double start; | |
| public double end; | |
| public double length { get { return end - start; } } | |
| public static Range Union(Range lhs, Range rhs) | |
| { | |
| return new Range | |
| { | |
| start = Math.Min(lhs.start, rhs.start), | |
| end = Math.Max(lhs.end, rhs.end) | |
| }; | |
| } | |
| public static Range Intersection(Range lhs, Range rhs) | |
| { | |
| var s = Math.Max(lhs.start, rhs.start); | |
| var e = Math.Min(lhs.end, rhs.end); | |
| if (s > e) | |
| { | |
| // No intersection returns a 0-length range from 0 to 0 | |
| return new Range(); | |
| } | |
| return new Range | |
| { | |
| start = s, | |
| end = e | |
| }; | |
| } | |
| public override string ToString() | |
| { | |
| return ToString("F3"); | |
| } | |
| public string ToString(string format) | |
| { | |
| return UnityString.Format("({0}, {1})", start.ToString(format), end.ToString(format)); | |
| } | |
| } | |
| } | |