Fix Audio Mixer Cleanup Issue

This commit is contained in:
copecone committed 2026-07-07 15:10:37 +09:00
1 parent 8f1712b5ae
commit 092a6e37c7
3 files changed
+13 -78

No files matched your search

-17
View File
@@ -105,25 +105,8 @@
<None Remove="Bundle\OSX\shaders" />
<EmbeddedResource Include="Bundle\OSX\shaders" />
</ItemGroup>
<ItemGroup>
<Content Include="obfuscar.xml" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="FFmpeg.AutoGen" Version="8.1.0" />
<PackageReference Include="Obfuscar" Version="2.2.49">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
<GeneratePathProperty>true</GeneratePathProperty>
</PackageReference>
</ItemGroup>
<Target Name="Obfuscate" AfterTargets="AfterBuild" Condition="'$(Configuration)'=='Release'">
<Exec Command="&quot;$(Obfuscar)&quot; obfuscar.xml" EnvironmentVariables="ADOFAI_PATH=$(ADOFAI_PATH)" />
<Copy SourceFiles="$(TargetDir)obfuscated\$(TargetName).dll" DestinationFolder="$(TargetDir)" OverwriteReadOnlyFiles="true" />
<Copy SourceFiles="$(TargetDir)obfuscated\$(TargetName).pdb" DestinationFolder="$(TargetDir)" OverwriteReadOnlyFiles="true" Condition="Exists('$(TargetDir)obfuscated\$(TargetName).pdb')" />
<Message Text="Obfuscating project and replacing original binaries..." Importance="high" />
</Target>
</Project>
+13 -12
View File
@@ -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);
}
-49
View File
@@ -1,49 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Obfuscator>
<Var name="InPath" value="./bin/Release/netstandard2.1" />
<Var name="OutPath" value="./bin/Release/netstandard2.1/obfuscated" />
<Var name="KeepPublicApi" value="false" />
<Var name="HidePrivateApi" value="true" />
<Var name="RenameProperties" value="true" />
<Var name="RenameEvents" value="true" />
<Var name="RenameFields" value="true" />
<Var name="UseUnicodeNames" value="false" />
<Var name="EmbedManifests" value="true" />
<Var name="Use=rename" value="true" />
<Var name="Use=controlflow" value="true" />
<!-- Environment variable passed from MSBuild -->
<Var name="ADOFAI_PATH" value="%ADOFAI_PATH%" />
<!-- Dependency search paths -->
<AssemblySearchPath path="$(ADOFAI_PATH)\A Dance of Fire and Ice_Data\Managed" />
<AssemblySearchPath path="$(ADOFAI_PATH)\MelonLoader\net35" />
<AssemblySearchPath path="$(InPath)" />
<Module file="$(InPath)\ADOFAIRenderer.dll">
<!-- MelonLoader Entrypoint -->
<SkipType name="ADOFAIRenderer.RenderMod" />
<!-- Harmony 패치 메서드 중 매개변수 주입(__instance, __result 등)을 사용하는 필수 메서드만 보존하고, 매개변수가 없는 나머지 메서드와 클래스명은 난독화 -->
<SkipMethod type="ADOFAIRenderer.Patch.*" rx=".*" />
<!-- Skip Unity MonoBehaviour lifecycle methods -->
<SkipMethod type="ADOFAIRenderer.Core.*" rx="^(?:Awake|Start|Update|LateUpdate|OnDestroy)$" />
<SkipMethod type="ADOFAIRenderer.UI.*" rx="^(?:Awake|Start|Update|LateUpdate|OnDestroy)$" />
<SkipMethod type="ADOFAIRenderer.Util.*" rx="^(?:Awake|Start|Update|LateUpdate|OnDestroy)$" />
<!-- Skip Enums bound to UI dropdowns -->
<SkipType name="ADOFAIRenderer.Util.FFmpeg.Codec" skipFields="true" />
<SkipType name="ADOFAIRenderer.Util.FFmpeg.RateControlMode" skipFields="true" />
<!-- Skip UI-associated types (MonoBehaviours loaded from scene/prefabs or bound to UI Toolkit dataSource) -->
<SkipType name="ADOFAIRenderer.UI.RenderConfigUIManager" skipFields="true" />
<!-- Skip Preset & Config types for JSON serialization -->
<SkipType name="ADOFAIRenderer.Data.RenderPreset" skipFields="true" skipProperties="true" />
<SkipType name="ADOFAIRenderer.Data.RenderConfig" skipFields="true" skipProperties="true" />
<SkipType name="ADOFAIRenderer.Data.EncodingConfig" skipFields="true" skipProperties="true" />
</Module>
</Obfuscator>