Mountain  1.0.0
Simple C++ 2D Game Framework
audio_source.hpp
1 #pragma once
2 
3 #include "Mountain/core.hpp"
4 
5 #include <Maths/vector2.hpp>
6 
7 #include "Mountain/resource/audio_track.hpp"
8 #include "Mountain/scene/component/component.hpp"
9 
10 namespace Mountain
11 {
12  class AudioSource : public Component
13  {
14  public:
15  Pointer<AudioTrack> audioTrack;
16 
17  MOUNTAIN_API AudioSource();
18 
19  MOUNTAIN_API ~AudioSource() override;
20 
21  DELETE_COPY_MOVE_OPERATIONS(AudioSource)
22 
23  MOUNTAIN_API void Added() override;
24 
25  MOUNTAIN_API void Update() override;
26 
27  MOUNTAIN_API void Play();
28 
29  MOUNTAIN_API void Play(AudioTrack& track);
30 
31  MOUNTAIN_API void SetBuffer(const AudioBuffer* buffer);
32 
33  MOUNTAIN_API float_t GetVolume() const;
34 
35  MOUNTAIN_API void SetVolume(float_t newVolume);
36 
37  MOUNTAIN_API float_t GetPitch() const;
38 
39  MOUNTAIN_API void SetPitch(float_t newPitch);
40 
41  MOUNTAIN_API bool_t GetLooping() const;
42 
43  MOUNTAIN_API void SetLooping(bool_t newLooping);
44 
45  private:
46  uint32_t m_Handle = 0;
47 
49  float_t m_Volume = 1.f;
50 
52  float_t m_Pitch = 1.f;
53 
54  bool_t m_Looping = false;
55 
56  bool_t m_PlayOnAdded = true;
57 
58  Vector2 m_LastPosition;
59  };
60 }
Represents a behavior that can be attached to an Entity.
Definition: component.hpp:10
MOUNTAIN_API void Update() override
Updates the component.
Custom Mountain smart pointer. Represents both a std::shared_ptr and a std::weak_ptr.
MOUNTAIN_API void Added() override
Called when the component is added to an Entity.
Contains all declarations of the Mountain Framework.
Definition: audio.hpp:22