aboutsummaryrefslogtreecommitdiff
path: root/RayRoom.NAudio
diff options
context:
space:
mode:
authorbonmas14 <bonmas14@gmail.com>2025-08-13 01:10:22 +0300
committerbonmas14 <bonmas14@gmail.com>2025-08-13 01:10:22 +0300
commit0ef93af6cb7a72a985a3a9f9a479d42303442826 (patch)
tree2fb35db7bdf403342e9a97a36cd764b8c7f07af6 /RayRoom.NAudio
parent79d8da74ac98166ec9e9dae7eff820cd9842edb3 (diff)
downloadRayRoom-master.tar.gz
RayRoom-master.zip
It does work actually!!!!!!!master
Diffstat (limited to 'RayRoom.NAudio')
-rw-r--r--RayRoom.NAudio/AudioOut.cs15
1 files changed, 11 insertions, 4 deletions
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<AudioSourceCollision>(10) { collision });
+ sources.Add(collision.source.Handler, new List<AudioSourceCollision>(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;
});
}