mirror of
https://github.com/DrBeef/Raze.git
synced 2024-11-16 17:31:27 +00:00
90 lines
3 KiB
C++
90 lines
3 KiB
C++
|
#ifndef __mixer_hpp__
|
||
|
#define __mixer_hpp__
|
||
|
|
||
|
#include "waveformfile.hpp"
|
||
|
|
||
|
class JFAudMixerChannel {
|
||
|
private:
|
||
|
protected:
|
||
|
void (*stopcallback)(int);
|
||
|
int stopcallbackid;
|
||
|
public:
|
||
|
typedef enum {
|
||
|
FilterNearest = 0,
|
||
|
FilterLinear = 1,
|
||
|
Filter4Point = 2,
|
||
|
} Filter;
|
||
|
|
||
|
typedef enum {
|
||
|
DistanceModelInverse = 0,
|
||
|
DistanceModelLinear = 1,
|
||
|
} DistanceModel;
|
||
|
|
||
|
JFAudMixerChannel();
|
||
|
virtual ~JFAudMixerChannel();
|
||
|
|
||
|
virtual bool SetMedia(WaveformFile *) = 0;
|
||
|
// The waveform file becomes the property of the channel
|
||
|
// if it was successfully attached, and should be deleted
|
||
|
// in the destructor or if another file is attached.
|
||
|
virtual bool SetStopCallback( void (*cb)(int), int id);
|
||
|
// If this function is passed a non-NULL cb, the function will be
|
||
|
// called passing 'id' when the sound stops playing.
|
||
|
virtual bool SetFilter(Filter which);
|
||
|
virtual bool SetDistanceModel(DistanceModel which);
|
||
|
|
||
|
virtual bool Play(void) = 0;
|
||
|
virtual bool Pause(void) = 0;
|
||
|
virtual bool Update(void) = 0;
|
||
|
virtual bool IsPlaying(void) const = 0;
|
||
|
virtual bool IsPaused(void) const = 0;
|
||
|
virtual bool IsStopped(void) const = 0;
|
||
|
|
||
|
virtual bool SetGain(float gain) = 0;
|
||
|
virtual bool SetPitch(float pitch) = 0;
|
||
|
virtual bool SetPosition(float x, float y, float z) = 0;
|
||
|
virtual bool SetVelocity(float x, float y, float z) = 0;
|
||
|
virtual bool SetDirection(float x, float y, float z) = 0;
|
||
|
virtual bool SetRefDist(float refdist) = 0;
|
||
|
virtual bool SetMaxDist(float maxdist) = 0;
|
||
|
virtual bool SetRolloff(float rolloff) = 0;
|
||
|
virtual bool SetLoop(bool onf) = 0;
|
||
|
virtual bool SetFollowListener(bool onf) = 0;
|
||
|
|
||
|
virtual float GetGain(void) const = 0;
|
||
|
virtual float GetPitch(void) const = 0;
|
||
|
virtual void GetPosition(float *x, float *y, float *z) const = 0;
|
||
|
virtual void GetVelocity(float *x, float *y, float *z) const = 0;
|
||
|
virtual void GetDirection(float *x, float *y, float *z) const = 0;
|
||
|
virtual float GetRefDist(void) const = 0;
|
||
|
virtual float GetMaxDist(void) const = 0;
|
||
|
virtual float GetRolloff(void) const = 0;
|
||
|
virtual bool GetLoop(void) const = 0;
|
||
|
virtual bool GetFollowListener(void) const = 0;
|
||
|
};
|
||
|
|
||
|
class JFAudMixer {
|
||
|
private:
|
||
|
protected:
|
||
|
public:
|
||
|
JFAudMixer() { }
|
||
|
virtual ~JFAudMixer() { }
|
||
|
|
||
|
virtual JFAudMixerChannel *AcquireChannel(void) = 0;
|
||
|
virtual bool ReleaseChannel(JFAudMixerChannel *) = 0;
|
||
|
|
||
|
virtual bool Update() = 0;
|
||
|
|
||
|
virtual bool SetListenerPosition(float x, float y, float z) = 0;
|
||
|
virtual bool SetListenerOrientation(float atx, float aty, float atz, float upx, float upy, float upz) = 0;
|
||
|
virtual bool SetListenerVelocity(float x, float y, float z) = 0;
|
||
|
virtual bool SetListenerGain(float gain) = 0;
|
||
|
|
||
|
virtual void GetListenerPosition(float *x, float *y, float *z) const = 0;
|
||
|
virtual void GetListenerOrientation(float *atx, float *aty, float *atz, float *upx, float *upy, float *upz) const = 0;
|
||
|
virtual void GetListenerVelocity(float *x, float *y, float *z) const = 0;
|
||
|
virtual float GetListenerGain(void) const = 0;
|
||
|
};
|
||
|
|
||
|
#endif
|