From ad0f915c88633d2eff715abb145e4bb3d230ce8d Mon Sep 17 00:00:00 2001 From: Martin Jonasson Date: Fri, 3 Jan 2014 16:31:49 +0100 Subject: [PATCH] Pans the sound along a semi circle in front of the listener instead of moving just sideways. This makes it possible to pan a sound slightly to one side, as opposed to the earlier all-or-nothing behavior. --- project/src/sound/openal/OpenALSound.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/project/src/sound/openal/OpenALSound.cpp b/project/src/sound/openal/OpenALSound.cpp index 02b2b15d5..3adc89eca 100644 --- a/project/src/sound/openal/OpenALSound.cpp +++ b/project/src/sound/openal/OpenALSound.cpp @@ -1,5 +1,6 @@ #include "OpenALSound.h" +#include namespace lime { @@ -45,7 +46,8 @@ namespace lime // set some basic source prefs alSourcef(mSourceID, AL_PITCH, 1.0f); alSourcef(mSourceID, AL_GAIN, inTransform.volume); - alSource3f(mSourceID, AL_POSITION, inTransform.pan * 1, 0, 0); + alSource3f(mSourceID, AL_POSITION, (float) cos((inTransform.pan - 1) * (1.5707)), 0, (float) sin((inTransform.pan + 1) * (1.5707))); + // TODO: not right! //if (inLoops>1) //alSourcei(mSourceID, AL_LOOPING, AL_TRUE); @@ -139,7 +141,7 @@ namespace lime // set some basic source prefs alSourcef(mSourceID, AL_PITCH, 1.0f); alSourcef(mSourceID, AL_GAIN, inTransform.volume); - alSource3f(mSourceID, AL_POSITION, inTransform.pan * 1, 0, 0); + alSource3f(mSourceID, AL_POSITION, (float) cos((inTransform.pan - 1) * (1.5707)), 0, (float) sin((inTransform.pan + 1) * (1.5707))); alSourcePlay(mSourceID); } @@ -1153,7 +1155,7 @@ namespace lime if (!mSuspend) { alSourcef(source, AL_GAIN, inTransform.volume); - alSource3f(source, AL_POSITION, inTransform.pan * 1, 0, 0); + alSource3f(source, AL_POSITION, (float) cos((inTransform.pan - 1) * (1.5707)), 0, (float) sin((inTransform.pan + 1) * (1.5707))); } }