/// <summary> /// The constructor with parameters. /// </summary> /// <param name="chart">The associated chart.</param> /// <param name="eventLine">The current event line.</param> public Section(Chart chart, EventLine eventLine) { _chart = chart; _synchTrack = chart.FindCurrentSynch(eventLine.Tick); _guid = Guid.NewGuid(); _eventLine = eventLine; }
/// <summary> /// Clones and copies the current reference. /// </summary> /// <returns>SynchTrack</returns> public SynchTrack Clone() { SynchTrack synchTrack = new SynchTrack(Chart); synchTrack._tick = _tick; synchTrack._measures = _measures; synchTrack._beatsPerMinute = _beatsPerMinute; return(synchTrack); }
/// <summary> /// The constructor with parameters. /// </summary> /// <param name="chart">The parent chart.</param> /// <param name="eventLine">The associated event line.</param> /// <param name="keyParent">The key aprent associated to this event.</param> public NoteEvent(Chart chart, EventLine eventLine, string keyParent) { _chart = chart; _keyParent = keyParent; _synchTrack = chart.FindCurrentSynch(eventLine.Tick); _eventLine = eventLine; _highestFret = eventLine.Index; _buttonIndexes = new bool[5]; CheckNoteIndex(); _guid = Guid.NewGuid(); }
/// <summary> /// Calculates and converts a tick to a time in microseconds relative to a desired synch track. /// </summary> /// <param name="synchTrack">The synch track to be relative to.</param> /// <param name="Tick">The current tick to convert.</param> /// <returns>long</returns> public long CalculateTickToTimeRelative(SynchTrack synchTrack, long Tick) { long microseconds; if (synchTrack.BeatsPerMinute == 0) { microseconds = 0; } else { microseconds = 60000000000 / synchTrack.BeatsPerMinute; } return(Tick_to_Time(Tick - synchTrack.Tick, microseconds, Resolution) + synchTrack.TrueTime); }
/// <summary> /// Processes all synch tracks. /// </summary> internal static SynchTrack[] ProcessSynchTracks(IEnumerator enumerator, Chart chart) { string currentLine; SynchTrack[] synchTracks; SynchTrack synchTrack; SynchTrack previousSynchTrack; long previousBPM = 0; long MicroBeatsPerMinute; List <SynchTrack> synchTracksList = new List <SynchTrack>(); // Create default synch tracks for later use. synchTrack = new SynchTrack(chart); previousSynchTrack = synchTrack.Clone(); // Move to next line and check if there is there a next line. while ((enumerator.MoveNext()) && (enumerator.Current != null)) { // Assign next line as currentLine. currentLine = string.Empty; currentLine = enumerator.Current as string; // If line is not empty, continue. if (!currentLine.Equals(string.Empty)) { if (currentLine.Contains("}")) { break; } else if (!currentLine.Contains("{")) { // Clone and process the previous synch track. synchTrack = previousSynchTrack.Clone(); synchTrack.ProcessLine(currentLine); // If the beats per minute have changed, re-assign the latest version. if (previousSynchTrack.BeatsPerMinute != previousBPM) { previousBPM = previousSynchTrack.BeatsPerMinute; } if (previousBPM == 0) { MicroBeatsPerMinute = 0; } else { MicroBeatsPerMinute = 60000000000 / previousBPM; } synchTrack._time = Chart.Tick_to_Time( synchTrack.Tick - previousSynchTrack.Tick, MicroBeatsPerMinute, chart.Resolution) + previousSynchTrack.TrueTime; if (synchTracksList.Count == 0) { synchTracksList.Add(synchTrack); } if (previousSynchTrack.Tick == synchTrack.Tick) { previousSynchTrack.ProcessLine(currentLine); } else { synchTracksList.Add(synchTrack); previousSynchTrack = synchTrack; } } } } synchTracks = new SynchTrack[synchTracksList.Count]; synchTracksList.CopyTo(synchTracks); return(synchTracks); }