16 #ifndef __AUDIO_MANAGER_H__
17 #define __AUDIO_MANAGER_H__
19 #include "config_audio.h"
20 #include "audioSound.h"
22 #include "filterProperties.h"
23 #include "movieAudio.h"
24 #include "atomicAdjust.h"
32 enum SpeakerModeCategory {
66 virtual int getSpeakerSetup();
67 virtual void setSpeakerSetup(SpeakerModeCategory cat);
81 virtual void shutdown();
90 virtual bool is_valid() = 0;
93 virtual PT(
AudioSound) get_sound(
const string& file_name,
bool positional =
false,
int mode=SM_heuristic) = 0;
94 virtual PT(
AudioSound) get_sound(
MovieAudio *source,
bool positional =
false,
int mode=SM_heuristic) = 0;
103 virtual void uncache_sound(
const string& file_name) = 0;
104 virtual void clear_cache() = 0;
105 virtual void set_cache_limit(
unsigned int count) = 0;
106 virtual unsigned int get_cache_limit()
const = 0;
114 virtual void set_volume(PN_stdfloat volume) = 0;
115 virtual PN_stdfloat get_volume()
const = 0;
125 virtual void set_active(
bool flag) = 0;
126 virtual bool get_active()
const = 0;
135 virtual void set_concurrent_sound_limit(
unsigned int limit = 0) = 0;
136 virtual unsigned int get_concurrent_sound_limit()
const = 0;
144 virtual void reduce_sounds_playing_to(
unsigned int count) = 0;
149 virtual void stop_all_sounds() = 0;
153 virtual void update();
160 virtual void audio_3d_set_listener_attributes(PN_stdfloat px, PN_stdfloat py, PN_stdfloat pz,
161 PN_stdfloat vx, PN_stdfloat vy, PN_stdfloat vz,
162 PN_stdfloat fx, PN_stdfloat fy, PN_stdfloat fz,
163 PN_stdfloat ux, PN_stdfloat uy, PN_stdfloat uz);
164 virtual void audio_3d_get_listener_attributes(PN_stdfloat *px, PN_stdfloat *py, PN_stdfloat *pz,
165 PN_stdfloat *vx, PN_stdfloat *vy, PN_stdfloat *vz,
166 PN_stdfloat *fx, PN_stdfloat *fy, PN_stdfloat *fz,
167 PN_stdfloat *ux, PN_stdfloat *uy, PN_stdfloat *uz);
173 virtual void audio_3d_set_distance_factor(PN_stdfloat factor);
174 virtual PN_stdfloat audio_3d_get_distance_factor()
const;
179 virtual void audio_3d_set_doppler_factor(PN_stdfloat factor);
180 virtual PN_stdfloat audio_3d_get_doppler_factor()
const;
186 virtual void audio_3d_set_drop_off_factor(PN_stdfloat factor);
187 virtual PN_stdfloat audio_3d_get_drop_off_factor()
const;
191 virtual void output(ostream &out)
const;
192 virtual void write(ostream &out)
const;
198 static void register_AudioManager_creator(Create_AudioManager_proc* proc);
207 static Create_AudioManager_proc* _create_AudioManager;
208 AtomicAdjust::Pointer _null_sound;
216 static void init_type() {
217 TypedReferenceCount::init_type();
218 register_type(_type_handle,
"AudioManager",
219 TypedReferenceCount::get_class_type());
222 return get_class_type();
224 virtual TypeHandle force_init_type() {init_type();
return get_class_type();}
236 #include "audioManager.I"
This is the base class for all three-component vectors and points.
A base class for things which need to inherit from both TypedObject and from ReferenceCount.
Stores a configuration for a set of audio DSP filters.
The name of a file, such as a texture file or an Egg file.
TypeHandle is the identifier used to differentiate C++ class types.
A MovieAudio is actually any source that provides a sequence of audio samples.