88
99#include " AudioSource.hpp"
1010#include " OpenResources.hpp"
11+ #include " GameObject.hpp"
1112
1213sw::AudioSource::AudioSource (sw::GameObject &gameObject) :
1314sw::Component(gameObject),
14- m_source(-1 )
15+ m_source(-1 ),
16+ m_loop(false ),
17+ m_currentSample(0 .0f ),
18+ m_startPoint(0 .0f ),
19+ m_startLoopPoint(-1 ),
20+ m_endLoopPoint(-1 ),
21+ m_endPoint(-1 )
1522{
1623 alGenSources (1 , &m_source);
1724}
@@ -24,7 +31,9 @@ sw::AudioSource::~AudioSource() noexcept
2431
2532sw::AudioSource &sw::AudioSource::setAudio (std::string audio)
2633{
27- alSourcei (m_source, AL_BUFFER, sw::OpenResources::m_naudio[audio]->getBuffer ());
34+ auto audioFile = sw::OpenResources::m_naudio[audio];
35+ alSourcei (m_source, AL_BUFFER, audioFile->getBuffer ());
36+ m_endPoint = audioFile->getDuration ();
2837 return (*this );
2938}
3039
@@ -43,6 +52,7 @@ sw::AudioSource &sw::AudioSource::pause()
4352sw::AudioSource &sw::AudioSource::stop ()
4453{
4554 alSourceStop (m_source);
55+ setStartLoopPoint (m_startPoint);
4656 return (*this );
4757}
4858
@@ -56,4 +66,35 @@ sw::AudioSource &sw::AudioSource::setPitch(float pitch)
5666{
5767 alSourcef (m_source, AL_PITCH, pitch);
5868 return (*this );
69+ }
70+
71+ sw::AudioSource &sw::AudioSource::setLoop (bool loop)
72+ {
73+ m_loop = loop;
74+ alSourcei (m_source, AL_LOOPING, m_loop ? AL_TRUE : AL_FALSE);
75+ return (*this );
76+ }
77+
78+ sw::AudioSource &sw::AudioSource::setStartPoint (float second)
79+ {
80+ alSourcef (m_source, AL_SEC_OFFSET, second);
81+ return (*this );
82+ }
83+
84+ sw::AudioSource &sw::AudioSource::setStartLoopPoint (float second)
85+ {
86+ m_startLoopPoint = second;
87+ return (*this );
88+ }
89+
90+ sw::AudioSource &sw::AudioSource::setEndPoint (float second)
91+ {
92+ m_endPoint = second;
93+ return (*this );
94+ }
95+
96+ sw::AudioSource &sw::AudioSource::setEndLoopPoint (float second)
97+ {
98+ m_endLoopPoint = second;
99+ return (*this );
59100}
0 commit comments