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);
}
}
}
