From 0ef93af6cb7a72a985a3a9f9a479d42303442826 Mon Sep 17 00:00:00 2001 From: bonmas14 Date: Wed, 13 Aug 2025 01:10:22 +0300 Subject: It does work actually!!!!!!! --- RayRoom.NAudio/AudioOut.cs | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'RayRoom.NAudio/AudioOut.cs') diff --git a/RayRoom.NAudio/AudioOut.cs b/RayRoom.NAudio/AudioOut.cs index 79a3288..8702519 100644 --- a/RayRoom.NAudio/AudioOut.cs +++ b/RayRoom.NAudio/AudioOut.cs @@ -49,7 +49,7 @@ namespace RayRoom.NAudioEngine if (sources.ContainsKey(collision.source.Handler)) sources[collision.source.Handler].Add(collision); else - sources.Add(collision.source.Handler, new List(10) { collision }); + sources.Add(collision.source.Handler, new List(1) { collision }); foreach (var source in sources) { @@ -59,13 +59,20 @@ namespace RayRoom.NAudioEngine foreach (var collision in source.Value) { - int offsetSamples = settings.GetSamplesDelay(collision.distance) * 4; + int offsetSamples = settings.GetSamplesDelay(collision.distance) * 4; + + float strength = velocity * (collision.source.Loudness / (collision.distance * collision.distance)); + if (collision.collisions > 1) + { + strength /= collision.collisions - 1; + } + Parallel.For(0, count / 2, i => { if (collision.channel == 0) - leftBuffer[i + offsetSamples] += samples[i] * velocity * (collision.source.Loudness / MathF.Pow(collision.distance, 2)); + leftBuffer[i + offsetSamples] += samples[i] * strength; else - rightBuffer[i + offsetSamples] += samples[i] * velocity * (collision.source.Loudness / MathF.Pow(collision.distance, 2)); + rightBuffer[i + offsetSamples] += samples[i] * strength; }); } -- cgit v1.2.3-70-g09d2