X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flistener.cpp;h=00751488f2b44e464cfde234ddc8a4033b73d4b3;hb=6cc0f1735a00e8f9eb80ff0c9468fb67205f6d20;hp=04fc36844a2784495e7522fdf06a88c59b586acf;hpb=35ea5cc8d1eb8c806885d27441548f630e7b1266;p=libs%2Fal.git diff --git a/source/listener.cpp b/source/listener.cpp index 04fc368..0075148 100644 --- a/source/listener.cpp +++ b/source/listener.cpp @@ -1,38 +1,53 @@ -/* $Id$ - -This file is part of libmspal -Copyright © 2008 Mikko Rasa, Mikkosoft Productions -Diestributed under the LGPL -*/ - #include "listener.h" namespace Msp { namespace AL { -void Listener::attribute(ALenum attr, float v) +Listener::Listener() { - alListenerf(attr, v); + orientation[0] = 0; + orientation[1] = 0; + orientation[2] = -1; + orientation[3] = 0; + orientation[4] = 1; + orientation[5] = 0; } -void Listener::attribute(ALenum attr, float v0, float v1, float v2) +Listener &Listener::instance() { - alListener3f(attr, v0, v1, v2); + static Listener listener; + return listener; } -void Listener::attribute(ALenum attr, const float *v) +void Listener::set_position(float x, float y, float z) { - alListenerfv(attr, v); + alListener3f(AL_POSITION, x, y, z); } -void Listener::set_position(float x, float y, float z) +void Listener::set_forward_direction(float x, float y, float z) +{ + orientation[0] = x; + orientation[1] = y; + orientation[2] = z; + alListenerfv(AL_ORIENTATION, orientation); +} + +void Listener::set_up_direction(float x, float y, float z) +{ + orientation[3] = x; + orientation[4] = y; + orientation[5] = z; + alListenerfv(AL_ORIENTATION, orientation); +} + +void Listener::set_velocity(float x, float y, float z) { - attribute(AL_POSITION, x, y, z); + alListener3f(AL_VELOCITY, x, y, z); } void Listener::set_gain(float g) { - attribute(AL_GAIN, g); + alListenerf(AL_GAIN, g); } } // namespace AL