55 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
		
		
			
		
	
	
			55 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
|  | 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; | ||
|  |             } | ||
|  |         } | ||
|  |     } | ||
|  | } |