hi guys..
i need help in this code... look what i need.
i tried chatGPT but i fails to express her what i need. it messed up all.
using ScriptPortal.Vegas; using System; using System.Collections.Generic; using System.Windows.Forms; public class EntryPoint { public void FromVegas(Vegas vegas) { try { // Ensure there are tracks in the project if (vegas.Project.Tracks.Count == 0) return; Timecode currentPosition = Timecode.FromMilliseconds(0); bool isFirstEvent = true; // Dictionary to store events by track Dictionary<Track, List<TrackEvent>> trackEventGroups = new Dictionary<Track, List<TrackEvent>>(); // Populate the dictionary with selected events grouped by track foreach (Track track in vegas.Project.Tracks) { List<TrackEvent> selectedEventsInTrack = new List<TrackEvent>(); foreach (TrackEvent trackEvent in track.Events) { if (trackEvent.Selected) { selectedEventsInTrack.Add(trackEvent); } } if (selectedEventsInTrack.Count > 0) { trackEventGroups[track] = selectedEventsInTrack; } } // Process each track group foreach (var trackGroup in trackEventGroups) { Track track = trackGroup.Key; List<TrackEvent> eventsInGroup = trackGroup.Value; // Sort events in the track by start time for (int i = 0; i < eventsInGroup.Count - 1; i++) { for (int j = i + 1; j < eventsInGroup.Count; j++) { if (eventsInGroup[i].Start.CompareTo(eventsInGroup[j].Start) > 0) { // Swap events TrackEvent temp = eventsInGroup[i]; eventsInGroup[i] = eventsInGroup[j]; eventsInGroup[j] = temp; } } } // Move entire groups to close gaps foreach (TrackEvent trackEvent in eventsInGroup) { if (isFirstEvent) { currentPosition = trackEvent.Start + trackEvent.Length; isFirstEvent = false; } else { Timecode gapDuration = trackEvent.Start - currentPosition; if (gapDuration > Timecode.FromMilliseconds(0)) { // Move the whole group if needed Timecode moveOffset = currentPosition - trackEvent.Start; foreach (TrackEvent groupEvent in eventsInGroup) { groupEvent.Start += moveOffset; } } currentPosition = trackEvent.Start + trackEvent.Length; } } } // Check for overlapping events in all tracks and adjust if necessary foreach (Track track in vegas.Project.Tracks) { foreach (TrackEvent trackEvent in track.Events) { foreach (TrackEvent otherEvent in track.Events) { if (trackEvent != otherEvent && trackEvent.Start < otherEvent.End && trackEvent.End > otherEvent.Start) { // Adjust event to avoid overlap trackEvent.Start = otherEvent.End; } } } } } catch (Exception ex) { MessageBox.Show("An error occurred while closing gaps in track: " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } } }