summaryrefslogtreecommitdiff
path: root/Runtime/Interfaces/IAudio.h
blob: f8d1760e10b396c4ddd8d3a6627f3611cdfc42a2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#pragma once

#include "Runtime/BaseClasses/BaseObject.h"
#include "Runtime/Audio/correct_fmod_includer.h"

class Object;
class MovieTexture;
class WWW;
class AudioClip;
struct AudioStats;
namespace FMOD { class DSP; }
class AudioCustomFilter;
class MonoBehaviour;

class IAudio
{
public:
	virtual void SetPause( bool pause ) = 0;
	virtual void FixedUpdate() = 0;
	virtual void Update() = 0;

	virtual void StopVideoTextures() = 0;
	virtual void UpdateVideoTextures() = 0;
	virtual void PauseVideoTextures() = 0;

#if ENABLE_WWW
#if ENABLE_MOVIES
	virtual MovieTexture* CreateMovieTextureFromWWW(WWW& www) = 0;
#endif
	virtual AudioClip* CreateAudioClipFromWWW(WWW& www, bool threeD, bool stream, FMOD_SOUND_TYPE audioType) = 0;
	virtual AudioClip* CreateAudioClipOGGFromWWW(WWW& www) = 0;	
#endif
	
	virtual bool IsFormatSupportedByPlatform(const char* type) = 0;

#if ENABLE_AUDIO_FMOD
	virtual FMOD::DSP* GetOrCreateDSPFromCustomFilter(AudioCustomFilter* filter) = 0;
	virtual AudioCustomFilter* CreateAudioCustomFilter(MonoBehaviour* mb) = 0;
	virtual FMOD::DSP* GetDSPFromAudioCustomFilter(AudioCustomFilter* filter) = 0;
	virtual void SetBypassOnDSP(FMOD::DSP* dsp, bool state) = 0;
#endif

#if ENABLE_PROFILER
	virtual void GetProfilerStats(AudioStats& stats) = 0;
#endif
	virtual void AudioManagerAwakeFromLoad(AwakeFromLoadMode mode) = 0;
};

IAudio* CreateAudioModule();


IAudio* EXPORT_COREMODULE GetIAudio();
void EXPORT_COREMODULE SetIAudio(IAudio* physics);