00001 00002 // 00003 // SFML - Simple and Fast Multimedia Library 00004 // Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com) 00005 // 00006 // This software is provided 'as-is', without any express or implied warranty. 00007 // In no event will the authors be held liable for any damages arising from the use of this software. 00008 // 00009 // Permission is granted to anyone to use this software for any purpose, 00010 // including commercial applications, and to alter it and redistribute it freely, 00011 // subject to the following restrictions: 00012 // 00013 // 1. The origin of this software must not be misrepresented; 00014 // you must not claim that you wrote the original software. 00015 // If you use this software in a product, an acknowledgment 00016 // in the product documentation would be appreciated but is not required. 00017 // 00018 // 2. Altered source versions must be plainly marked as such, 00019 // and must not be misrepresented as being the original software. 00020 // 00021 // 3. This notice may not be removed or altered from any source distribution. 00022 // 00024 00026 // Headers 00028 #include <SFML/Audio/Listener.hpp> 00029 #include <SFML/Audio/ALCheck.hpp> 00030 00031 00032 namespace sf 00033 { 00035 void Listener::SetGlobalVolume(float volume) 00036 { 00037 priv::EnsureALInit(); 00038 00039 ALCheck(alListenerf(AL_GAIN, volume * 0.01f)); 00040 } 00041 00042 00044 float Listener::GetGlobalVolume() 00045 { 00046 priv::EnsureALInit(); 00047 00048 float volume = 0.f; 00049 ALCheck(alGetListenerf(AL_GAIN, &volume)); 00050 00051 return volume; 00052 } 00053 00054 00056 void Listener::SetPosition(float x, float y, float z) 00057 { 00058 priv::EnsureALInit(); 00059 00060 ALCheck(alListener3f(AL_POSITION, x, y, z)); 00061 } 00062 00063 00065 void Listener::SetPosition(const Vector3f& position) 00066 { 00067 SetPosition(position.x, position.y, position.z); 00068 } 00069 00070 00072 Vector3f Listener::GetPosition() 00073 { 00074 priv::EnsureALInit(); 00075 00076 Vector3f position; 00077 ALCheck(alGetListener3f(AL_POSITION, &position.x, &position.y, &position.z)); 00078 00079 return position; 00080 } 00081 00082 00084 void Listener::SetDirection(float x, float y, float z) 00085 { 00086 priv::EnsureALInit(); 00087 00088 float orientation[] = {x, y, z, 0.f, 1.f, 0.f}; 00089 ALCheck(alListenerfv(AL_ORIENTATION, orientation)); 00090 } 00091 00092 00094 void Listener::SetDirection(const Vector3f& direction) 00095 { 00096 SetDirection(direction.x, direction.y, direction.z); 00097 } 00098 00099 00101 Vector3f Listener::GetDirection() 00102 { 00103 priv::EnsureALInit(); 00104 00105 float orientation[6]; 00106 ALCheck(alGetListenerfv(AL_ORIENTATION, orientation)); 00107 00108 return Vector3f(orientation[0], orientation[1], orientation[2]); 00109 } 00110 00111 } // namespace sf
:: Copyright © 2007-2008 Laurent Gomila, all rights reserved :: Documentation generated by doxygen 1.5.2 ::