using Sony.Vegas; using System; using System.IO; using System.Linq; namespace VegasToTempoBlasterPlugin { public class ProjectUsefulInfo { private readonly string _takeName; private readonly Vegas _vegas; public string TakeName { get { return _takeName; } } public AudioTrack Track { get; private set; } public AudioEvent Event { get; private set; } public Take Take { get; private set; } public bool HasAllInfo { get { return (null != Track) && (null != Event) && (null != Take); } } public ProjectUsefulInfo(Vegas vegas, string wavePath) { _takeName = Path.GetFileNameWithoutExtension(wavePath); _vegas = vegas; Update(); } public void Update() { var audioTracks = _vegas.Project.Tracks .Where(trackCur => trackCur.MediaType == MediaType.Audio) .Cast(); foreach (var audioTrack in audioTracks) { var audioEvents = audioTrack.Events .Where(audioEventCur => audioEventCur.MediaType == MediaType.Audio) .Cast(); foreach (var audioEvent in audioEvents) { var audioTake = audioEvent.Takes .FirstOrDefault(audioTakeCur => audioTakeCur.Name.Equals(TakeName, StringComparison.CurrentCultureIgnoreCase)); if (null != audioTake) { Track = audioTrack; Event = audioEvent; Take = audioTake; return; } } } Track = null; Event = null; Take = null; } } }