SFML logo
  • Main Page
  • Namespaces
  • Classes
  • Files
  • File List

Listener.cpp

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  ::