3 This file is part of libmspal
4 Copyright © 2008-2009 Mikko Rasa, Mikkosoft Productions
5 Distributed under the LGPL
23 alDeleteSources(1, &id);
26 void Source::attribute(ALenum attr, int v)
28 alSourcei(id, attr, v);
31 void Source::attribute(ALenum attr, float v)
33 alSourcef(id, attr, v);
36 void Source::attribute(ALenum attr, float v0, float v1, float v2)
38 alSource3f(id, attr, v0, v1, v2);
41 void Source::attribute(ALenum attr, const float *v)
43 alSourcefv(id, attr, v);
46 void Source::get_attribute(ALenum attr, int *v) const
48 alGetSourcei(id, attr, v);
51 void Source::get_attribute(ALenum attr, float *v) const
53 alGetSourcef(id, attr, v);
56 SourceState Source::get_state() const
59 get_attribute(AL_SOURCE_STATE, &state);
60 return static_cast<SourceState>(state);
63 void Source::set_position(float x, float y, float z)
65 attribute(AL_POSITION, x, y, z);
68 void Source::set_looping(bool l)
70 attribute(AL_LOOPING, l);
73 void Source::set_gain(float g)
75 attribute(AL_GAIN, g);
78 void Source::set_rolloff_factor(float f)
80 attribute(AL_ROLLOFF_FACTOR, f);
83 void Source::set_buffer(const Buffer &buffer)
85 attribute(AL_BUFFER, static_cast<int>(buffer.get_id()));
88 void Source::queue_buffers(const vector<const Buffer *> &buffers)
91 ids.reserve(buffers.size());
92 for(vector<const Buffer *>::const_iterator i=buffers.begin(); i!=buffers.end(); ++i)
93 ids.push_back((*i)->get_id());
94 alSourceQueueBuffers(id, ids.size(), &ids.front());
97 void Source::queue_buffer(const Buffer &buffer)
99 uint bid=buffer.get_id();
100 alSourceQueueBuffers(id, 1, &bid);
103 void Source::unqueue_buffers(const vector<const Buffer *> &buffers)
106 ids.reserve(buffers.size());
107 for(vector<const Buffer *>::const_iterator i=buffers.begin(); i!=buffers.end(); ++i)
108 ids.push_back((*i)->get_id());
109 alSourceUnqueueBuffers(id, ids.size(), &ids.front());
112 void Source::unqueue_buffer(const Buffer &buffer)
114 uint bid=buffer.get_id();
115 alSourceUnqueueBuffers(id, 1, &bid);
118 void Source::clear_buffers()
120 attribute(AL_BUFFER, AL_NONE);
123 unsigned Source::get_buffers_queued() const
126 get_attribute(AL_BUFFERS_QUEUED, &n);
130 unsigned Source::get_buffers_processed() const
133 get_attribute(AL_BUFFERS_PROCESSED, &n);
152 void Source::rewind()