I'm trying to replace a Media object. I managed to get this working in a script, but the exact same code doesn't seem to work for an extension.
This is my code for the script:
using ScriptPortal.Vegas; namespace VegasProMediaReplacer { public class EntryPoint { private const string VideosLocation = "C:/Users/Niels Meijer/Videos/"; public void FromVegas(Vegas vegas) { Media oldMedia = null; foreach(Media m in vegas.Project.MediaPool) { oldMedia = m; } Media newMedia = new Media(VideosLocation + "newVideo.mp4"); oldMedia.ReplaceWith(newMedia); } } }
And my code for the extension:
using ScriptPortal.Vegas; using System; using System.Collections; using System.Windows.Forms; namespace VegasProMediaReplacer { public class Class1 : ICustomCommandModule { private const string PicturesLocation = "C:/Users/Niels Meijer/Pictures/"; private const string VideosLocation = "C:/Users/Niels Meijer/Videos/"; private Vegas _vegas; public ICollection GetCustomCommands() { CustomCommand command = new CustomCommand(CommandCategory.Tools, "Test"); command.DisplayName = "Test"; command.Invoked += OnCommand; return new CustomCommand[] { command }; } public void InitializeModule(Vegas vegas) { _vegas = vegas; } private void OnCommand(object sender, EventArgs args) { Media oldMedia = null; foreach(Media m in _vegas.Project.MediaPool) { oldMedia = m; } Media newMedia = new Media(VideosLocation + "newVideo.mp4"); try { oldMedia.ReplaceWith(newMedia); } catch(Exception e) { string text = e.Message + "\n" + e.StackTrace; MessageBox.Show(text); Clipboard.SetText(text); } } } }
I know this only grabs the last Media item, but this was just a test to see if I could get it to work. Media is also never null, I've made sure it actually grabs a Media object.
When running the extension I get the following log from the try/catch:
Catastrophic failure (Exception from HRESULT: 0x8000FFFF (E_UNEXPECTED)) at ScriptPortal.Vegas.IMediaCOM.Replace(UInt32 mediaID, UInt32 otherID) at ScriptPortal.Vegas.Media.ReplaceWith(Media other) at VegasProMediaReplacer.Class1.OnCommand(Object sender, EventArgs args) in D:\Projects\VegasProMediaReplacer\VegasProMediaReplacer\Class1.cs:line 40
Is there anything I'm missing here/doing wrong, or does this just not work for extensions?
Thanks,
Niels