diff --git a/ADOFAIRenderer.csproj b/ADOFAIRenderer.csproj index 0b30887..372ef26 100644 --- a/ADOFAIRenderer.csproj +++ b/ADOFAIRenderer.csproj @@ -105,25 +105,8 @@ - - - - - - all - runtime; build; native; contentfiles; analyzers - true - - - - - - - - - diff --git a/Util/OfflineAudioMixer.cs b/Util/OfflineAudioMixer.cs index 7beda48..85eefd6 100644 --- a/Util/OfflineAudioMixer.cs +++ b/Util/OfflineAudioMixer.cs @@ -327,8 +327,15 @@ namespace ADOFAIRenderer.Util for (int s = 0; s < samplesNeeded; s++) { double sampleTime = frameStartTime + (double)s / _targetSampleRate; - double elapsed = sampleTime - ev.StartTime; + // If it is a looping sound and has reached or exceeded its end time, stop playing. + if (ev.EndTime >= 0 && sampleTime >= ev.EndTime) + { + isSoundFinished = true; + break; + } + + double elapsed = sampleTime - ev.StartTime; if (elapsed < 0) continue; // Sound hasn't started yet double soundTime = elapsed * ev.Pitch; @@ -340,15 +347,9 @@ namespace ADOFAIRenderer.Util isSoundFinished = true; break; } - else // Looping - { - if (sampleTime >= ev.EndTime) - { - isSoundFinished = true; - break; - } - soundTime %= clipData.Duration; - } + + // Looping + soundTime %= clipData.Duration; } // Linear interpolation for pitch shifting in the mixer loop @@ -368,8 +369,8 @@ namespace ADOFAIRenderer.Util } } - // Clean up finished one-shot sounds - if (isSoundFinished && ev.EndTime < 0) + // Clean up finished sound events (both one-shot and looping) + if (isSoundFinished) { ActiveEvents.RemoveAt(i); } diff --git a/obfuscar.xml b/obfuscar.xml deleted file mode 100644 index bbae929..0000000 --- a/obfuscar.xml +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file