/// <summary> /// 前回のBPM変化から譜面時間を計算する /// </summary> public void InitializeStartTime(MusicTempoData beforeTempo) { // 前回のBPM変化からこのBPM変化までのカウント int diffCount = TotalPosition - beforeTempo.TotalPosition; int BaseTemp = diffCount * 24000; int divTemp = MusicConst.POSITION_FINENESS * beforeTempo.BpmLargeScaleValue; float measureCount = (float)diffCount / MusicConst.POSITION_FINENESS; float bpmTime = 24000f / beforeTempo.BpmLargeScaleValue; StartTime = beforeTempo.StartTime + measureCount * bpmTime; }
/// <summary> /// リスト内のテンポデータを初期化する /// </summary> public void PrecomputeTime() { // 初期化済みの場合は改めて初期化する必要はない if (isBpmInitialized) { return; } for (int index = 1; index < tempoDataList.Count; ++index) { MusicTempoData tempo = tempoDataList[index]; tempo.InitializeStartTime(tempoDataList[index - 1]); } }