Divide Framework 0.1
A free and open-source 3D Framework under heavy development
Loading...
Searching...
No Matches
Divide::SFXDevice Class Referencefinal

#include <SFXDevice.h>

+ Inheritance diagram for Divide::SFXDevice:

Public Types

enum class  AudioAPI : U8 { FMOD , OpenAL , SDL , COUNT }
 
- Public Types inherited from Divide::AudioAPIWrapper
using MusicPlaylist = std::pair< U32, vector< Handle< AudioDescriptor > > >
 
using MusicPlaylists = hashMap< U32, MusicPlaylist >
 

Public Member Functions

 SFXDevice (PlatformContext &context)
 
 ~SFXDevice () override
 
ErrorCode initAudioAPI () override
 
void closeAudioAPI () override
 
void setAudioState (const AudioState &state) noexcept
 
AudioStategetActiveAudioState () noexcept
 
void idle ()
 
void playSound (Handle< AudioDescriptor > sound) override
 
void playMusic (Handle< AudioDescriptor > music) override
 
void pauseMusic () override
 
void stopMusic () override
 
void stopAllSounds () override
 
void setMusicVolume (I8 value) override
 
void setSoundVolume (I8 value) override
 
void addMusic (U32 playlistEntry, Handle< AudioDescriptor > music)
 
bool playMusic (U32 playlistEntry)
 
bool playMusic (const MusicPlaylist &playlist)
 
void dumpPlaylists ()
 
 PROPERTY_RW (AudioAPI, apiID, AudioAPI::COUNT)
 
- Public Member Functions inherited from Divide::AudioAPIWrapper
 AudioAPIWrapper (const Str< 64 > &name, PlatformContext &context)
 
- Public Member Functions inherited from Divide::PlatformContextComponent
 PlatformContextComponent (PlatformContext &context) noexcept
 
virtual ~PlatformContextComponent ()=default
 
PlatformContextcontext () noexcept
 
const PlatformContextcontext () const noexcept
 
- Public Member Functions inherited from Divide::NonCopyable
 NonCopyable (const NonCopyable &)=delete
 
NonCopyableoperator= (const NonCopyable &)=delete
 
 NonCopyable (NonCopyable &&)=default
 
NonCopyableoperator= (NonCopyable &&)=default
 
- Public Member Functions inherited from Divide::FrameListener
 FrameListener (const Str< 64 > &name, FrameListenerManager &parent, U32 callOrder)
 Either give it a name.
 
virtual ~FrameListener () override
 
bool operator< (FrameListener &that) const noexcept
 
- Public Member Functions inherited from Divide::GUIDWrapper
 GUIDWrapper () noexcept
 
 GUIDWrapper (const GUIDWrapper &old) noexcept
 
 GUIDWrapper (GUIDWrapper &&old) noexcept
 
virtual ~GUIDWrapper ()=default
 
FORCE_INLINE I64 getGUID () const noexcept
 
GUIDWrapperoperator= (const GUIDWrapper &old)=delete
 
GUIDWrapperoperator= (GUIDWrapper &&other)=delete
 

Protected Member Functions

void musicFinished () noexcept override
 
bool frameStarted (const FrameEvent &evt) override
 
- Protected Member Functions inherited from Divide::AudioAPIWrapper
virtual bool frameStarted (const FrameEvent &evt) override
 
virtual bool frameEnded (const FrameEvent &evt) noexcept override
 frameEnded is called after the buffers have been swapped
 
virtual ErrorCode initAudioAPI ()=0
 
virtual void closeAudioAPI ()=0
 
virtual void playSound (Handle< AudioDescriptor > sound)=0
 
virtual void playMusic (Handle< AudioDescriptor > music)=0
 
virtual void pauseMusic ()=0
 
virtual void stopMusic ()=0
 
virtual void stopAllSounds ()=0
 
virtual void setMusicVolume (I8 value)=0
 
virtual void setSoundVolume (I8 value)=0
 
virtual void musicFinished ()=0
 
- Protected Member Functions inherited from Divide::NonCopyable
 NonCopyable ()=default
 
 ~NonCopyable ()=default
 
- Protected Member Functions inherited from Divide::FrameListener
void setCallOrder (const U32 order) noexcept
 
virtual bool frameStarted (const FrameEvent &evt)
 
virtual bool framePreRender (const FrameEvent &evt)
 framePreRenderStarted is called when we need to start processing the visual aspect of a scene
 
virtual bool frameSceneRenderStarted (const FrameEvent &evt)
 frameSceneRenderStarted is called right before rendering the scene for the current player starts
 
virtual bool frameSceneRenderEnded (const FrameEvent &evt)
 frameSceneRenderEnded is called immediately after scene rendering for the current player has ended but before any blitting operations
 
virtual bool frameRenderingQueued (const FrameEvent &evt)
 
virtual bool framePostRender (const FrameEvent &evt)
 
virtual bool frameEnded (const FrameEvent &evt)
 frameEnded is called after the buffers have been swapped
 
 PROPERTY_R_IW (bool, enabled, false)
 
 PROPERTY_RW (Str< 64 >, name)
 

Protected Attributes

AudioState _state
 
MusicPlaylists _musicPlaylists
 
MusicPlaylist _currentPlaylist
 
- Protected Attributes inherited from Divide::PlatformContextComponent
PlatformContext_context
 
- Protected Attributes inherited from Divide::GUIDWrapper
const I64 _guid
 

Private Attributes

AudioAPIWrapper_uptr _api
 
std::atomic_bool _playNextInPlaylist
 

Friends

void musicFinishedHook () noexcept
 

Additional Inherited Members

- Static Public Member Functions inherited from Divide::GUIDWrapper
static I64 generateGUID () noexcept
 

Detailed Description

Definition at line 41 of file SFXDevice.h.

Member Enumeration Documentation

◆ AudioAPI

enum class Divide::SFXDevice::AudioAPI : U8
strong
Enumerator
FMOD 
OpenAL 
SDL 
COUNT 

Definition at line 43 of file SFXDevice.h.

Constructor & Destructor Documentation

◆ SFXDevice()

Divide::SFXDevice::SFXDevice ( PlatformContext context)
explicit

Definition at line 13 of file SFXDevice.cpp.

◆ ~SFXDevice()

Divide::SFXDevice::~SFXDevice ( )
override

Definition at line 21 of file SFXDevice.cpp.

Member Function Documentation

◆ addMusic()

void Divide::SFXDevice::addMusic ( U32  playlistEntry,
Handle< AudioDescriptor music 
)

Definition at line 90 of file SFXDevice.cpp.

◆ closeAudioAPI()

void Divide::SFXDevice::closeAudioAPI ( )
overridevirtual

Implements Divide::AudioAPIWrapper.

Definition at line 51 of file SFXDevice.cpp.

◆ dumpPlaylists()

void Divide::SFXDevice::dumpPlaylists ( )

Definition at line 157 of file SFXDevice.cpp.

◆ frameStarted()

bool Divide::SFXDevice::frameStarted ( const FrameEvent evt)
overrideprotectedvirtual

Adapter patern instead of pure interface for the same reason as the Ogre boys pointed out: Implement what you need without filling classes with dummy functions frameStarted is calld at the beggining of a new frame before processing the logic aspect of a scene

Reimplemented from Divide::AudioAPIWrapper.

Definition at line 65 of file SFXDevice.cpp.

◆ getActiveAudioState()

AudioState & Divide::SFXDevice::getActiveAudioState ( )
inlinenoexcept

Definition at line 58 of file SFXDevice.h.

◆ idle()

void Divide::SFXDevice::idle ( )

Definition at line 61 of file SFXDevice.cpp.

◆ initAudioAPI()

ErrorCode Divide::SFXDevice::initAudioAPI ( )
overridevirtual

Implements Divide::AudioAPIWrapper.

Definition at line 26 of file SFXDevice.cpp.

◆ musicFinished()

void Divide::SFXDevice::musicFinished ( )
overrideprotectedvirtualnoexcept

Implements Divide::AudioAPIWrapper.

Definition at line 153 of file SFXDevice.cpp.

◆ pauseMusic()

void Divide::SFXDevice::pauseMusic ( )
overridevirtual

Implements Divide::AudioAPIWrapper.

Definition at line 123 of file SFXDevice.cpp.

◆ playMusic() [1/3]

bool Divide::SFXDevice::playMusic ( const MusicPlaylist playlist)

Definition at line 105 of file SFXDevice.cpp.

◆ playMusic() [2/3]

void Divide::SFXDevice::playMusic ( Handle< AudioDescriptor music)
overridevirtual

Implements Divide::AudioAPIWrapper.

Definition at line 117 of file SFXDevice.cpp.

◆ playMusic() [3/3]

bool Divide::SFXDevice::playMusic ( U32  playlistEntry)

Definition at line 96 of file SFXDevice.cpp.

◆ playSound()

void Divide::SFXDevice::playSound ( Handle< AudioDescriptor sound)
overridevirtual

Implements Divide::AudioAPIWrapper.

Definition at line 82 of file SFXDevice.cpp.

◆ PROPERTY_RW()

Divide::SFXDevice::PROPERTY_RW ( AudioAPI  ,
apiID  ,
AudioAPI::COUNT   
)

◆ setAudioState()

void Divide::SFXDevice::setAudioState ( const AudioState state)
inlinenoexcept

Definition at line 57 of file SFXDevice.h.

◆ setMusicVolume()

void Divide::SFXDevice::setMusicVolume ( I8  value)
overridevirtual

Implements Divide::AudioAPIWrapper.

Definition at line 141 of file SFXDevice.cpp.

◆ setSoundVolume()

void Divide::SFXDevice::setSoundVolume ( I8  value)
overridevirtual

Implements Divide::AudioAPIWrapper.

Definition at line 147 of file SFXDevice.cpp.

◆ stopAllSounds()

void Divide::SFXDevice::stopAllSounds ( )
overridevirtual

Implements Divide::AudioAPIWrapper.

Definition at line 135 of file SFXDevice.cpp.

◆ stopMusic()

void Divide::SFXDevice::stopMusic ( )
overridevirtual

Implements Divide::AudioAPIWrapper.

Definition at line 129 of file SFXDevice.cpp.

Friends And Related Function Documentation

◆ musicFinishedHook

void musicFinishedHook ( )
friend

Definition at line 19 of file SDLWrapper.cpp.

Member Data Documentation

◆ _api

AudioAPIWrapper_uptr Divide::SFXDevice::_api
private

Definition at line 91 of file SFXDevice.h.

◆ _currentPlaylist

MusicPlaylist Divide::SFXDevice::_currentPlaylist
protected

Definition at line 88 of file SFXDevice.h.

◆ _musicPlaylists

MusicPlaylists Divide::SFXDevice::_musicPlaylists
protected

Definition at line 87 of file SFXDevice.h.

◆ _playNextInPlaylist

std::atomic_bool Divide::SFXDevice::_playNextInPlaylist
private

Definition at line 92 of file SFXDevice.h.

◆ _state

AudioState Divide::SFXDevice::_state
protected

Definition at line 85 of file SFXDevice.h.


The documentation for this class was generated from the following files: