forked from abcdls0905/engine
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathi_soundsystem.h
97 lines (62 loc) · 2.15 KB
/
i_soundsystem.h
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#pragma once
//音效实例句柄
typedef long SOUND_HANDLE;
//音效资源句柄
typedef long SOUNDRES_HANDLE;
typedef void(* CALLBACK_SOUND_EVENT)();
enum {
SOUND_MODE_DEFAULT,
SOUND_MODE_3D,
};
struct SOUND_VECTOR
{
float x; /* X co-ordinate in 3D space. */
float y; /* Y co-ordinate in 3D space. */
float z; /* Z co-ordinate in 3D space. */
SOUND_VECTOR()
{};
SOUND_VECTOR(float _x, float _y, float _z)
:x(_x), y(_y), z(_z)
{};
};
class ISoundEffect
{
protected:
bool m_isdel;
public:
ISoundEffect()
:m_isdel(false)
{}
virtual ~ISoundEffect()
{}
virtual void OnPlaying(SOUND_HANDLE id) = 0;
inline bool IsDel()const { return m_isdel; };
};
class ISoundSystem
{
public:
virtual void Init(int MaxChannel = 32) = 0;
virtual void Destroy() = 0;
virtual SOUNDRES_HANDLE LoadSound(const char* file, int mode = SOUND_MODE_DEFAULT) = 0;
virtual SOUND_HANDLE Play(const char* file, int mode, bool paused = false) = 0;
virtual SOUNDRES_HANDLE GetSoundRes(SOUND_HANDLE id) = 0;
virtual bool IsValid(SOUND_HANDLE id) = 0;
virtual unsigned int GetLength(SOUND_HANDLE id) = 0;
virtual void SetPosition(SOUND_HANDLE id, unsigned int pos) = 0;
virtual unsigned int GetPosition(SOUND_HANDLE id) = 0;
virtual void SetVolume(SOUND_HANDLE id, float volume) = 0;
virtual float GetVolume(SOUND_HANDLE id) = 0;
virtual void Set3DParam(SOUND_HANDLE id, const SOUND_VECTOR& pos, const SOUND_VECTOR& vel) = 0;
virtual void Set3DSetListener(const SOUND_VECTOR& pos, const SOUND_VECTOR& vel, const SOUND_VECTOR& forward, const SOUND_VECTOR& up) = 0;
virtual void Set3DMinMaxDistance(SOUND_HANDLE resid, float mindistance, float maxdistance) = 0;
virtual void Pause(SOUND_HANDLE id) = 0;
virtual bool IsPaused(SOUND_HANDLE id) = 0;
virtual void Resume(SOUND_HANDLE id) = 0;
virtual void Stop(SOUND_HANDLE id) = 0;
virtual bool IsPlaying(SOUND_HANDLE id) = 0;
virtual bool IsLoop(SOUND_HANDLE id) = 0;
virtual void SetLoop(SOUND_HANDLE id, bool loop) = 0;
virtual void OnFrame(float seconds) = 0;
virtual void AddSoundEffect(SOUND_HANDLE id, ISoundEffect* effect) = 0;
};
extern ISoundSystem* GetSoundSystem();