16 alDeleteSources(1, &id);
19 void Source::attribute(ALenum attr, int v)
21 alSourcei(id, attr, v);
24 void Source::attribute(ALenum attr, float v)
26 alSourcef(id, attr, v);
29 void Source::attribute(ALenum attr, float v0, float v1, float v2)
31 alSource3f(id, attr, v0, v1, v2);
34 void Source::attribute(ALenum attr, const float *v)
36 alSourcefv(id, attr, v);
39 void Source::get_attribute(ALenum attr, int *v) const
41 alGetSourcei(id, attr, v);
44 void Source::get_attribute(ALenum attr, float *v) const
46 alGetSourcef(id, attr, v);
49 SourceState Source::get_state() const
52 get_attribute(AL_SOURCE_STATE, &state);
53 return static_cast<SourceState>(state);
56 void Source::set_position(float x, float y, float z)
58 attribute(AL_POSITION, x, y, z);
61 void Source::set_looping(bool l)
63 attribute(AL_LOOPING, l);
66 void Source::set_gain(float g)
68 attribute(AL_GAIN, g);
71 void Source::set_rolloff_factor(float f)
73 attribute(AL_ROLLOFF_FACTOR, f);
76 void Source::set_buffer(const Buffer &buffer)
78 attribute(AL_BUFFER, static_cast<int>(buffer.get_id()));
81 void Source::queue_buffers(const vector<const Buffer *> &buffers)
84 ids.reserve(buffers.size());
85 for(vector<const Buffer *>::const_iterator i=buffers.begin(); i!=buffers.end(); ++i)
86 ids.push_back((*i)->get_id());
87 alSourceQueueBuffers(id, ids.size(), &ids.front());
90 void Source::queue_buffer(const Buffer &buffer)
92 uint bid = buffer.get_id();
93 alSourceQueueBuffers(id, 1, &bid);
96 void Source::unqueue_buffers(const vector<const Buffer *> &buffers)
99 ids.reserve(buffers.size());
100 for(vector<const Buffer *>::const_iterator i=buffers.begin(); i!=buffers.end(); ++i)
101 ids.push_back((*i)->get_id());
102 alSourceUnqueueBuffers(id, ids.size(), &ids.front());
105 void Source::unqueue_buffer(const Buffer &buffer)
107 uint bid = buffer.get_id();
108 alSourceUnqueueBuffers(id, 1, &bid);
111 void Source::clear_buffers()
113 attribute(AL_BUFFER, AL_NONE);
116 unsigned Source::get_buffers_queued() const
119 get_attribute(AL_BUFFERS_QUEUED, &n);
123 unsigned Source::get_buffers_processed() const
126 get_attribute(AL_BUFFERS_PROCESSED, &n);
145 void Source::rewind()