mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-02 09:52:27 -04:00
whee
This commit is contained in:
parent
bf0c865d0b
commit
fe6ae687a2
@ -270,24 +270,10 @@ AudioTraits::PlayerClass* LinuxSample::get_player(void) const {
|
||||
return LinuxSamplePlayer::get_instance();
|
||||
}
|
||||
|
||||
// REFCOUNT
|
||||
/*
|
||||
AudioTraits::DeleteSoundFunc* LinuxSample::get_destroy(void) const {
|
||||
return LinuxSample::destroy;
|
||||
}
|
||||
*/
|
||||
|
||||
AudioTraits::DeletePlayingFunc* LinuxSample::get_delstate(void) const {
|
||||
return LinuxSamplePlaying::destroy;
|
||||
}
|
||||
|
||||
// REFCOUNT
|
||||
/*
|
||||
void LinuxSample::destroy(AudioTraits::SoundClass* sound) {
|
||||
delete sound;
|
||||
}
|
||||
*/
|
||||
|
||||
LinuxSample* LinuxSample::load_raw(byte* data, unsigned long size) {
|
||||
LinuxSample* ret = new LinuxSample(data, size);
|
||||
return ret;
|
||||
@ -308,24 +294,10 @@ AudioTraits::PlayerClass* LinuxMusic::get_player(void) const {
|
||||
return LinuxMusicPlayer::get_instance();
|
||||
}
|
||||
|
||||
// REFCOUNT
|
||||
/*
|
||||
AudioTraits::DeleteSoundFunc* LinuxMusic::get_destroy(void) const {
|
||||
return LinuxMusic::destroy;
|
||||
}
|
||||
*/
|
||||
|
||||
AudioTraits::DeletePlayingFunc* LinuxMusic::get_delstate(void) const {
|
||||
return LinuxMusicPlaying::destroy;
|
||||
}
|
||||
|
||||
// REFCOUNT
|
||||
/*
|
||||
void LinuxMusic::destroy(AudioTraits::SoundClass* music) {
|
||||
delete music;
|
||||
}
|
||||
*/
|
||||
|
||||
LinuxSamplePlaying::~LinuxSamplePlaying(void) {
|
||||
}
|
||||
|
||||
@ -358,9 +330,18 @@ LinuxSamplePlayer::~LinuxSamplePlayer(void) {
|
||||
}
|
||||
|
||||
void LinuxSamplePlayer::play_sound(AudioTraits::SoundClass*,
|
||||
AudioTraits::PlayingClass* playing) {
|
||||
AudioTraits::PlayingClass* playing,
|
||||
float start_time) {
|
||||
initialize();
|
||||
LinuxSamplePlaying* lplaying = (LinuxSamplePlaying*)playing;
|
||||
unsigned long l = lplaying->get_data()->get_size();
|
||||
float factor = ((float)l) / (audio_mix_freq * 2. * sample_size);
|
||||
factor = start_time / factor;
|
||||
if (factor > 1.)
|
||||
factor = 1.;
|
||||
unsigned long p = (unsigned long)(l * factor);
|
||||
p = ( p >> 2 ) << 2; // zero the last 2 bits
|
||||
lplaying->get_data()->reset(p);
|
||||
buffers.insert(lplaying->get_data());
|
||||
}
|
||||
|
||||
@ -387,7 +368,7 @@ LinuxMusicPlayer::~LinuxMusicPlayer(void) {
|
||||
}
|
||||
|
||||
void LinuxMusicPlayer::play_sound(AudioTraits::SoundClass*,
|
||||
AudioTraits::PlayingClass*) {
|
||||
AudioTraits::PlayingClass*, float) {
|
||||
initialize();
|
||||
}
|
||||
|
||||
|
@ -51,9 +51,9 @@ public:
|
||||
INLINE unsigned long get_size(void) const {
|
||||
return _size;
|
||||
}
|
||||
INLINE void reset(void) {
|
||||
INLINE void reset(unsigned long p = 0) {
|
||||
_done = false;
|
||||
_pos = 0;
|
||||
_pos = p;
|
||||
}
|
||||
};
|
||||
|
||||
@ -70,9 +70,6 @@ public:
|
||||
virtual float length(void) const;
|
||||
virtual AudioTraits::PlayingClass* get_state(void) const;
|
||||
virtual AudioTraits::PlayerClass* get_player(void) const;
|
||||
// REFCOUNT
|
||||
// virtual AudioTraits::DeleteSoundFunc* get_destroy(void) const;
|
||||
// static void destroy(AudioTraits::SoundClass*);
|
||||
virtual AudioTraits::DeletePlayingFunc* get_delstate(void) const;
|
||||
public:
|
||||
// used by the loader
|
||||
@ -90,9 +87,6 @@ public:
|
||||
virtual float length(void) const;
|
||||
virtual AudioTraits::PlayingClass* get_state(void) const;
|
||||
virtual AudioTraits::PlayerClass* get_player(void) const;
|
||||
// REFCOUNT
|
||||
// virtual AudioTraits::DeleteSoundFunc* get_destroy(void) const;
|
||||
// static void destroy(AudioTraits::SoundClass*);
|
||||
virtual AudioTraits::DeletePlayingFunc* get_delstate(void) const;
|
||||
};
|
||||
|
||||
@ -123,7 +117,7 @@ public:
|
||||
virtual ~LinuxSamplePlayer(void);
|
||||
|
||||
virtual void play_sound(AudioTraits::SoundClass*,
|
||||
AudioTraits::PlayingClass*);
|
||||
AudioTraits::PlayingClass*, float);
|
||||
virtual void stop_sound(AudioTraits::SoundClass*,
|
||||
AudioTraits::PlayingClass*);
|
||||
virtual void set_volume(AudioTraits::PlayingClass*, float);
|
||||
@ -140,7 +134,7 @@ public:
|
||||
virtual ~LinuxMusicPlayer(void);
|
||||
|
||||
virtual void play_sound(AudioTraits::SoundClass*,
|
||||
AudioTraits::PlayingClass*);
|
||||
AudioTraits::PlayingClass*, float);
|
||||
virtual void stop_sound(AudioTraits::SoundClass*,
|
||||
AudioTraits::PlayingClass*);
|
||||
virtual void set_volume(AudioTraits::PlayingClass*, float);
|
||||
|
@ -8,9 +8,9 @@
|
||||
// Access: Public, Static
|
||||
// Description: Play some audio
|
||||
////////////////////////////////////////////////////////////////////
|
||||
INLINE void AudioManager::play(AudioSound* sound) {
|
||||
INLINE void AudioManager::play(AudioSound* sound, float start_time) {
|
||||
if (audio_is_active)
|
||||
get_ptr()->ns_play(sound);
|
||||
get_ptr()->ns_play(sound, start_time);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
@ -84,10 +84,11 @@ AudioManager* AudioManager::get_ptr(void) {
|
||||
// Access: Private
|
||||
// Description: get the player off the sound, and start it playing
|
||||
////////////////////////////////////////////////////////////////////
|
||||
void AudioManager::ns_play(AudioSound* sound) {
|
||||
void AudioManager::ns_play(AudioSound* sound, float start_time) {
|
||||
if (sound->status() == AudioSound::PLAYING)
|
||||
this->ns_stop(sound);
|
||||
sound->get_player()->play_sound(sound->get_sound(), sound->get_state());
|
||||
sound->get_player()->play_sound(sound->get_sound(), sound->get_state(),
|
||||
start_time);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
@ -18,7 +18,7 @@ class EXPCL_PANDA AudioManager {
|
||||
private:
|
||||
INLINE AudioManager(void);
|
||||
|
||||
void ns_play(AudioSound*);
|
||||
void ns_play(AudioSound*, float);
|
||||
void ns_stop(AudioSound*);
|
||||
void ns_set_loop(AudioSound*, bool);
|
||||
bool ns_get_loop(AudioSound*);
|
||||
@ -47,7 +47,7 @@ public:
|
||||
static void set_shutdown_func(ShutdownFunc*);
|
||||
|
||||
PUBLISHED:
|
||||
INLINE static void play(AudioSound*);
|
||||
INLINE static void play(AudioSound*, float = 0.);
|
||||
INLINE static void stop(AudioSound*);
|
||||
INLINE static void set_loop(AudioSound*, bool);
|
||||
INLINE static bool get_loop(AudioSound*);
|
||||
|
@ -145,13 +145,6 @@ AudioTraits::PlayerClass* MikModSample::get_player(void) const {
|
||||
return MikModSamplePlayer::get_instance();
|
||||
}
|
||||
|
||||
// REFCOUNT
|
||||
/*
|
||||
AudioTraits::DeleteSoundFunc* MikModSample::get_destroy(void) const {
|
||||
return MikModSample::destroy;
|
||||
}
|
||||
*/
|
||||
|
||||
AudioTraits::DeletePlayingFunc* MikModSample::get_delstate(void) const {
|
||||
return MikModSamplePlaying::destroy;
|
||||
}
|
||||
@ -167,13 +160,6 @@ MikModSample* MikModSample::load_wav(Filename filename) {
|
||||
return new MikModSample(sample);
|
||||
}
|
||||
|
||||
// REFCOUNT
|
||||
/*
|
||||
void MikModSample::destroy(AudioTraits::SoundClass* sample) {
|
||||
delete sample;
|
||||
}
|
||||
*/
|
||||
|
||||
SAMPLE* MikModSample::get_sample(void) {
|
||||
return _sample;
|
||||
}
|
||||
@ -200,24 +186,10 @@ AudioTraits::PlayerClass* MikModMusic::get_player(void) const {
|
||||
return MikModFmsynthPlayer::get_instance();
|
||||
}
|
||||
|
||||
// REFCOUNT
|
||||
/*
|
||||
AudioTraits::DeleteSoundFunc* MikModMusic::get_destroy(void) const {
|
||||
return MikModMusic::destroy;
|
||||
}
|
||||
*/
|
||||
|
||||
AudioTraits::DeletePlayingFunc* MikModMusic::get_delstate(void) const {
|
||||
return MikModMusicPlaying::destroy;
|
||||
}
|
||||
|
||||
// REFCOUNT
|
||||
/*
|
||||
void MikModMusic::destroy(AudioTraits::SoundClass* music) {
|
||||
delete music;
|
||||
}
|
||||
*/
|
||||
|
||||
MikModMidi::MikModMidi(void) {
|
||||
}
|
||||
|
||||
@ -241,24 +213,10 @@ AudioTraits::PlayerClass* MikModMidi::get_player(void) const {
|
||||
return MikModMidiPlayer::get_instance();
|
||||
}
|
||||
|
||||
// REFCOUNT
|
||||
/*
|
||||
AudioTraits::DeleteSoundFunc* MikModMidi::get_destroy(void) const {
|
||||
return MikModMidi::destroy;
|
||||
}
|
||||
*/
|
||||
|
||||
AudioTraits::DeletePlayingFunc* MikModMidi::get_delstate(void) const {
|
||||
return MikModMidiPlaying::destroy;
|
||||
}
|
||||
|
||||
// REFCOUNT
|
||||
/*
|
||||
void MikModMidi::destroy(AudioTraits::SoundClass* music) {
|
||||
delete music;
|
||||
}
|
||||
*/
|
||||
|
||||
MikModSamplePlaying::MikModSamplePlaying(AudioTraits::SoundClass* s)
|
||||
: AudioTraits::PlayingClass(s) {
|
||||
}
|
||||
@ -322,7 +280,8 @@ MikModSamplePlayer::~MikModSamplePlayer(void) {
|
||||
}
|
||||
|
||||
void MikModSamplePlayer::play_sound(AudioTraits::SoundClass* sample,
|
||||
AudioTraits::PlayingClass* playing) {
|
||||
AudioTraits::PlayingClass* playing,
|
||||
float) {
|
||||
if (!have_initialized)
|
||||
initialize();
|
||||
if (!MikMod_Active()) {
|
||||
@ -372,7 +331,7 @@ MikModFmsynthPlayer::~MikModFmsynthPlayer(void) {
|
||||
}
|
||||
|
||||
void MikModFmsynthPlayer::play_sound(AudioTraits::SoundClass*,
|
||||
AudioTraits::PlayingClass*) {
|
||||
AudioTraits::PlayingClass*, float) {
|
||||
audio_cat->error() << "trying to play a sample with a MikModFmsynthPlayer"
|
||||
<< endl;
|
||||
}
|
||||
@ -401,7 +360,7 @@ MikModMidiPlayer::~MikModMidiPlayer(void) {
|
||||
}
|
||||
|
||||
void MikModMidiPlayer::play_sound(AudioTraits::SoundClass*,
|
||||
AudioTraits::PlayingClass*) {
|
||||
AudioTraits::PlayingClass*, float) {
|
||||
audio_cat->error() << "trying to play a sample with a MikModMidiPlayer"
|
||||
<< endl;
|
||||
}
|
||||
|
@ -27,14 +27,10 @@ public:
|
||||
virtual float length(void) const;
|
||||
virtual AudioTraits::PlayingClass* get_state(void) const;
|
||||
virtual AudioTraits::PlayerClass* get_player(void) const;
|
||||
// REFCOUNT
|
||||
// virtual AudioTraits::DeleteSoundFunc* get_destroy(void) const;
|
||||
virtual AudioTraits::DeletePlayingFunc* get_delstate(void) const;
|
||||
public:
|
||||
// used by the readers
|
||||
static MikModSample* load_wav(Filename);
|
||||
// REFCOUNT
|
||||
// static void destroy(AudioTraits::SoundClass*);
|
||||
// used by the players
|
||||
virtual SAMPLE* get_sample(void);
|
||||
virtual int get_freq(void);
|
||||
@ -50,9 +46,6 @@ public:
|
||||
virtual float length(void) const;
|
||||
virtual AudioTraits::PlayingClass* get_state(void) const;
|
||||
virtual AudioTraits::PlayerClass* get_player(void) const;
|
||||
// REFCOUNT
|
||||
// virtual AudioTraits::DeleteSoundFunc* get_destroy(void) const;
|
||||
// static void destroy(AudioTraits::SoundClass*);
|
||||
virtual AudioTraits::DeletePlayingFunc* get_delstate(void) const;
|
||||
};
|
||||
|
||||
@ -65,9 +58,6 @@ public:
|
||||
virtual float length(void) const;
|
||||
virtual AudioTraits::PlayingClass* get_state(void) const;
|
||||
virtual AudioTraits::PlayerClass* get_player(void) const;
|
||||
// REFCOUNT
|
||||
// virtual AudioTraits::DeleteSoundFunc* get_destroy(void) const;
|
||||
// static void destroy(AudioTraits::SoundClass*);
|
||||
virtual AudioTraits::DeletePlayingFunc* get_delstate(void) const;
|
||||
public:
|
||||
// used by the readers
|
||||
@ -112,7 +102,7 @@ public:
|
||||
virtual ~MikModSamplePlayer(void);
|
||||
|
||||
virtual void play_sound(AudioTraits::SoundClass*,
|
||||
AudioTraits::PlayingClass*);
|
||||
AudioTraits::PlayingClass*, float);
|
||||
virtual void stop_sound(AudioTraits::SoundClass*,
|
||||
AudioTraits::PlayingClass*);
|
||||
virtual void set_volume(AudioTraits::PlayingClass*, float);
|
||||
@ -129,7 +119,7 @@ public:
|
||||
virtual ~MikModFmsynthPlayer(void);
|
||||
|
||||
virtual void play_sound(AudioTraits::SoundClass*,
|
||||
AudioTraits::PlayingClass*);
|
||||
AudioTraits::PlayingClass*, float);
|
||||
virtual void stop_sound(AudioTraits::SoundClass*,
|
||||
AudioTraits::PlayingClass*);
|
||||
virtual void set_volume(AudioTraits::PlayingClass*, float);
|
||||
@ -146,7 +136,7 @@ public:
|
||||
virtual ~MikModMidiPlayer(void);
|
||||
|
||||
virtual void play_sound(AudioTraits::SoundClass*,
|
||||
AudioTraits::PlayingClass*);
|
||||
AudioTraits::PlayingClass*, float);
|
||||
virtual void stop_sound(AudioTraits::SoundClass*,
|
||||
AudioTraits::PlayingClass*);
|
||||
virtual void set_volume(AudioTraits::PlayingClass*, float);
|
||||
|
@ -41,24 +41,11 @@ AudioTraits::PlayerClass* NullSound::get_player(void) const {
|
||||
return new NullPlayer();
|
||||
}
|
||||
|
||||
// REFCOUNT
|
||||
/*
|
||||
AudioTraits::DeleteSoundFunc* NullSound::get_destroy(void) const {
|
||||
return NullSound::destroy;
|
||||
}
|
||||
*/
|
||||
|
||||
AudioTraits::DeletePlayingFunc* NullSound::get_delstate(void) const {
|
||||
return NullPlaying::destroy;
|
||||
}
|
||||
|
||||
// REFCOUNT
|
||||
/*
|
||||
void NullSound::destroy(AudioTraits::SoundClass* sound) {
|
||||
delete sound;
|
||||
}
|
||||
*/
|
||||
|
||||
NullPlaying::~NullPlaying(void) {
|
||||
}
|
||||
|
||||
@ -76,7 +63,7 @@ NullPlayer::~NullPlayer(void) {
|
||||
}
|
||||
|
||||
void NullPlayer::play_sound(AudioTraits::SoundClass*,
|
||||
AudioTraits::PlayingClass*) {
|
||||
AudioTraits::PlayingClass*, float) {
|
||||
if (audio_cat->is_debug())
|
||||
audio_cat->debug() << "in play sound in Null audio driver" << endl;
|
||||
}
|
||||
|
@ -21,9 +21,6 @@ public:
|
||||
virtual float length(void) const;
|
||||
virtual AudioTraits::PlayingClass* get_state(void) const;
|
||||
virtual AudioTraits::PlayerClass* get_player(void) const;
|
||||
// REFCOUNT
|
||||
// virtual AudioTraits::DeleteSoundFunc* get_destroy(void) const;
|
||||
// static void destroy(AudioTraits::SoundClass*);
|
||||
virtual AudioTraits::DeletePlayingFunc* get_delstate(void) const;
|
||||
};
|
||||
|
||||
@ -42,7 +39,7 @@ public:
|
||||
virtual ~NullPlayer(void);
|
||||
|
||||
virtual void play_sound(AudioTraits::SoundClass*,
|
||||
AudioTraits::PlayingClass*);
|
||||
AudioTraits::PlayingClass*, float);
|
||||
virtual void stop_sound(AudioTraits::SoundClass*,
|
||||
AudioTraits::PlayingClass*);
|
||||
virtual void set_volume(AudioTraits::PlayingClass*, float);
|
||||
|
@ -24,15 +24,6 @@ AudioTraits::PlayerClass* AudioTraits::SoundClass::get_player(void) const {
|
||||
return (AudioTraits::PlayerClass*)0L;
|
||||
}
|
||||
|
||||
// REFCOUNT
|
||||
/*
|
||||
AudioTraits::DeleteSoundFunc*
|
||||
AudioTraits::SoundClass::get_destroy(void) const {
|
||||
audio_cat->error() << "In abstract SoundClass::get_destroy!" << endl;
|
||||
return (AudioTraits::DeleteSoundFunc*)0L;
|
||||
}
|
||||
*/
|
||||
|
||||
AudioTraits::DeletePlayingFunc*
|
||||
AudioTraits::SoundClass::get_delstate(void) const {
|
||||
audio_cat->error() << "In abstract SoundClass::get_delstate!" << endl;
|
||||
@ -52,7 +43,7 @@ AudioTraits::PlayerClass::~PlayerClass(void) {
|
||||
}
|
||||
|
||||
void AudioTraits::PlayerClass::play_sound(AudioTraits::SoundClass*,
|
||||
AudioTraits::PlayingClass*) {
|
||||
AudioTraits::PlayingClass*, float) {
|
||||
audio_cat->error() << "In abstract PlayerClass::play_sound!" << endl;
|
||||
}
|
||||
|
||||
|
@ -26,8 +26,6 @@ public:
|
||||
virtual float length(void) const = 0;
|
||||
virtual PlayingClass* get_state(void) const = 0;
|
||||
virtual PlayerClass* get_player(void) const = 0;
|
||||
// REFCOUNT
|
||||
// virtual DeleteSoundFunc* get_destroy(void) const = 0;
|
||||
virtual DeletePlayingFunc* get_delstate(void) const = 0;
|
||||
};
|
||||
class EXPCL_PANDA PlayingClass {
|
||||
@ -46,7 +44,7 @@ public:
|
||||
PlayerClass(void) {}
|
||||
virtual ~PlayerClass(void);
|
||||
|
||||
virtual void play_sound(SoundClass*, PlayingClass*) = 0;
|
||||
virtual void play_sound(SoundClass*, PlayingClass*, float) = 0;
|
||||
virtual void stop_sound(SoundClass*, PlayingClass*) = 0;
|
||||
virtual void set_volume(PlayingClass*, float) = 0;
|
||||
};
|
||||
|
@ -7,6 +7,14 @@ INLINE WinSample::WinSample(void) : AudioTraits::SoundClass(), _data(NULL),
|
||||
_len(0) {
|
||||
}
|
||||
|
||||
INLINE DWORD WinSample::get_length(void) const {
|
||||
return _len;
|
||||
}
|
||||
|
||||
INLINE WAVEFORMATEX WinSample::get_format(void) const {
|
||||
return _info;
|
||||
}
|
||||
|
||||
INLINE WinMusic::WinMusic(void) : AudioTraits::SoundClass(),
|
||||
_performance(NULL), _music(NULL),
|
||||
_buffer(NULL), _synth(NULL) {
|
||||
|
@ -183,10 +183,9 @@ WinSample::~WinSample(void) {
|
||||
}
|
||||
|
||||
float WinSample::length(void) const {
|
||||
// DO THIS
|
||||
if (audio_cat->is_debug())
|
||||
audio_cat->debug() << "winsample length called" << endl;
|
||||
return 0.;
|
||||
return _len / (audio_mix_freq * 2. * 2.);
|
||||
}
|
||||
|
||||
AudioTraits::PlayingClass* WinSample::get_state(void) const {
|
||||
@ -801,7 +800,7 @@ WinSamplePlayer::~WinSamplePlayer(void) {
|
||||
}
|
||||
|
||||
void WinSamplePlayer::play_sound(AudioTraits::SoundClass* sample,
|
||||
AudioTraits::PlayingClass* play) {
|
||||
AudioTraits::PlayingClass* play, float start_time) {
|
||||
if (audio_cat->is_debug())
|
||||
audio_cat->debug() << "in winsampleplayer play_sound" << endl;
|
||||
initialize();
|
||||
@ -812,6 +811,15 @@ void WinSamplePlayer::play_sound(AudioTraits::SoundClass* sample,
|
||||
LPDIRECTSOUNDBUFFER chan = wplay->get_channel();
|
||||
if (chan) {
|
||||
chan->Stop();
|
||||
DWORD l = wsample->get_length();
|
||||
WAVEFORMATEX f = wsample->get_format();
|
||||
float factor = ((float)l) / wsample->get_format().nAvgBytesPerSec;
|
||||
factor = start_time / factor;
|
||||
if (factor > 1.)
|
||||
factor = 1.;
|
||||
DWORD p = (DWORD)(l * factor);
|
||||
p = (p >> 2) << 2; // zero the last 2 bits
|
||||
chan->SetCurrentPosition(p);
|
||||
HRESULT result = chan->Play(0, 0, 0);
|
||||
if (FAILED(result))
|
||||
audio_cat->error() << "sample play failed" << endl;
|
||||
@ -864,7 +872,7 @@ WinMusicPlayer::~WinMusicPlayer(void) {
|
||||
}
|
||||
|
||||
void WinMusicPlayer::play_sound(AudioTraits::SoundClass* music,
|
||||
AudioTraits::PlayingClass*) {
|
||||
AudioTraits::PlayingClass*, float) {
|
||||
if (audio_cat->is_debug())
|
||||
audio_cat->debug() << "in WinMusicPlayer::play_sound()" << endl;
|
||||
initialize();
|
||||
|
@ -30,14 +30,14 @@ public:
|
||||
virtual float length(void) const;
|
||||
virtual AudioTraits::PlayingClass* get_state(void) const;
|
||||
virtual AudioTraits::PlayerClass* get_player(void) const;
|
||||
// REFCOUNT
|
||||
// virtual AudioTraits::DeleteSoundFunc* get_destroy(void) const;
|
||||
virtual AudioTraits::DeletePlayingFunc* get_delstate(void) const;
|
||||
|
||||
// used by play_sound
|
||||
INLINE DWORD get_length(void) const;
|
||||
INLINE WAVEFORMATEX get_format(void) const;
|
||||
public:
|
||||
static WinSample* load_wav(Filename);
|
||||
static WinSample* load_raw(unsigned char*, unsigned long);
|
||||
// REFCOUNT
|
||||
// static void destroy(AudioTraits::SoundClass*);
|
||||
};
|
||||
|
||||
class EXPCL_PANDA WinMusic : public AudioTraits::SoundClass {
|
||||
@ -46,8 +46,6 @@ private:
|
||||
IDirectMusicSegment* _music;
|
||||
IDirectSoundBuffer* _buffer;
|
||||
IDirectMusicPort* _synth;
|
||||
// BYTE* _data;
|
||||
// DWORD _len;
|
||||
|
||||
void init(void);
|
||||
public:
|
||||
@ -57,9 +55,6 @@ public:
|
||||
virtual float length(void) const;
|
||||
virtual AudioTraits::PlayingClass* get_state(void) const;
|
||||
virtual AudioTraits::PlayerClass* get_player(void) const;
|
||||
// REFCOUNT
|
||||
// virtual AudioTraits::DeleteSoundFunc* get_destroy(void) const;
|
||||
// static void destroy(AudioTraits::SoundClass*);
|
||||
virtual AudioTraits::DeletePlayingFunc* get_delstate(void) const;
|
||||
// these are used by the loaders
|
||||
static WinMusic* load_midi(Filename);
|
||||
@ -101,7 +96,7 @@ public:
|
||||
virtual ~WinSamplePlayer(void);
|
||||
|
||||
virtual void play_sound(AudioTraits::SoundClass*,
|
||||
AudioTraits::PlayingClass*);
|
||||
AudioTraits::PlayingClass*, float);
|
||||
virtual void stop_sound(AudioTraits::SoundClass*,
|
||||
AudioTraits::PlayingClass*);
|
||||
virtual void set_volume(AudioTraits::PlayingClass*, float);
|
||||
@ -118,7 +113,7 @@ public:
|
||||
virtual ~WinMusicPlayer(void);
|
||||
|
||||
virtual void play_sound(AudioTraits::SoundClass*,
|
||||
AudioTraits::PlayingClass*);
|
||||
AudioTraits::PlayingClass*, float);
|
||||
virtual void stop_sound(AudioTraits::SoundClass*,
|
||||
AudioTraits::PlayingClass*);
|
||||
virtual void set_volume(AudioTraits::PlayingClass*, float);
|
||||
|
Loading…
x
Reference in New Issue
Block a user