From c6b34d2322960682e024e67783982ddc1f43880c Mon Sep 17 00:00:00 2001 From: TheNoiselessNoise Date: Fri, 7 Aug 2026 07:47:23 +0200 Subject: [PATCH] audio_sound_positioning - fix SetSoundPosition and panning --- examples/audio/audio_sound_positioning.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/examples/audio/audio_sound_positioning.c b/examples/audio/audio_sound_positioning.c index 41ea4cb74..762ed05b1 100644 --- a/examples/audio/audio_sound_positioning.c +++ b/examples/audio/audio_sound_positioning.c @@ -116,14 +116,21 @@ static void SetSoundPosition(Camera listener, Sound sound, Vector3 position, flo // Calculate normalized vectors for spatial positioning Vector3 normalizedDirection = Vector3Normalize(direction); Vector3 forward = Vector3Normalize(Vector3Subtract(listener.target, listener.position)); - Vector3 right = Vector3Normalize(Vector3CrossProduct(listener.up, forward)); + Vector3 right = Vector3Normalize(Vector3CrossProduct(forward, listener.up)); // Reduce volume for sounds behind the listener float dotProduct = Vector3DotProduct(forward, normalizedDirection); if (dotProduct < 0.0f) attenuation *= (1.0f + dotProduct*0.5f); // Set stereo panning based on sound position relative to listener - float pan = 0.5f + 0.5f*Vector3DotProduct(normalizedDirection, right); + float pan = 0; + if (RAYLIB_VERSION_MAJOR >= 6) { + // -1.0 - 1.0 + pan = Clamp(Vector3DotProduct(normalizedDirection, right), -1.0f, 1.0f); + } else { + // 0.0 - 1.0 + pan = 0.5f + 0.5f*Vector3DotProduct(normalizedDirection, right); + } // Apply final sound properties SetSoundVolume(sound, attenuation);