TimelineClipGroup.cs 1.33 KB
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using UnityEngine.Timeline;

namespace UnityEditor.Timeline
{
    class TimelineClipGroup
    {
        readonly TimelineClip[] m_Clips;
        readonly TimelineClip m_LeftMostClip;
        readonly TimelineClip m_RightMostClip;

        public TimelineClip[] clips
        {
            get { return m_Clips; }
        }

        public double start
        {
            get { return m_LeftMostClip.start; }
            set
            {
                var offset = value - m_LeftMostClip.start;

                foreach (var clip in m_Clips)
                    clip.start += offset;
            }
        }

        public double end
        {
            get { return m_RightMostClip.end; }
        }

        public TimelineClipGroup(IEnumerable<TimelineClip> clips)
        {
            Debug.Assert(clips != null && clips.Any());

            m_Clips = clips.ToArray();
            m_LeftMostClip = null;
            m_RightMostClip = null;

            foreach (var clip in m_Clips)
            {
                if (m_LeftMostClip == null || clip.start < m_LeftMostClip.start)
                    m_LeftMostClip = clip;

                if (m_RightMostClip == null || clip.end > m_RightMostClip.end)
                    m_RightMostClip = clip;
            }
        }
    }
}