JD2022-TU1/main/tools/thirdparty/Vegas/VegasToTempoBlasterPlugin/ProjectUsefulInfo.cs

65 lines
1.8 KiB
C#

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<AudioTrack>();
foreach (var audioTrack in audioTracks)
{
var audioEvents = audioTrack.Events
.Where(audioEventCur => audioEventCur.MediaType == MediaType.Audio)
.Cast<AudioEvent>();
foreach (var audioEvent in audioEvents)
{
var audioTake = audioEvent.Takes
.FirstOrDefault<Take>(audioTakeCur => audioTakeCur.Name.Equals(TakeName, StringComparison.CurrentCultureIgnoreCase));
if (null != audioTake)
{
Track = audioTrack;
Event = audioEvent;
Take = audioTake;
return;
}
}
}
Track = null;
Event = null;
Take = null;
}
}
}