in this pic.
i select these two events
i want a script which can just shuffle these both events positions like below pic
means below event move to above track and vice versa.
i created this one with ChatGPT guidance. but not working
using ScriptPortal.Vegas; using System; using System.Collections.Generic; using System.Windows.Forms; public class EntryPoint { public void FromVegas(Vegas vegas) { // Ensure exactly two video events are selected List<TrackEvent> selectedEvents = new List<TrackEvent>(); foreach (Track track in vegas.Project.Tracks) { foreach (TrackEvent trackEvent in track.Events) { if (trackEvent.Selected && trackEvent.IsVideo()) { selectedEvents.Add(trackEvent); } } } if (selectedEvents.Count != 2) { MessageBox.Show("Please select exactly two video events."); return; } // Ensure the selected events are on different tracks and have the same length TrackEvent event1 = selectedEvents[0]; TrackEvent event2 = selectedEvents[1]; if (event1.Track == event2.Track) { MessageBox.Show("Selected events must be on different tracks."); return; } if (event1.Length != event2.Length) { MessageBox.Show("Selected events must be of the same length."); return; } // Swap the events by moving them to the other event's timecode SwapEvents(event1, event2); } private void SwapEvents(TrackEvent event1, TrackEvent event2) { // Capture initial properties Timecode start1 = event1.Start; Timecode start2 = event2.Start; Track track1 = event1.Track; Track track2 = event2.Track; // Add a new event at start2 for event1's media TrackEvent newEvent1 = DuplicateEvent(event1, track2, start2); track2.Events.Add(newEvent1); // Add a new event at start1 for event2's media TrackEvent newEvent2 = DuplicateEvent(event2, track1, start1); track1.Events.Add(newEvent2); // Remove original events track1.Events.Remove(event1); track2.Events.Remove(event2); } private TrackEvent DuplicateEvent(TrackEvent originalEvent, Track targetTrack, Timecode startTime) { // Create a new event VideoEvent newEvent = new VideoEvent(startTime, originalEvent.Length); // Copy takes from original event to new event foreach (Take take in originalEvent.Takes) { newEvent.AddTake(take.Media); } // Add the new event to the target track targetTrack.Events.Add(newEvent); return newEvent; } }
@jetdv pls help.