/*********************************************************************************\ |SVE 3D Sound Header File |Author: Sabarish Babu |Version: 1.1 |Date: 06/03/08 |Added: More functions to manipulate sound attributes, combined functions to make | interface cleaner..... | | \*********************************************************************************/ #include #include "alut.h" #include "al.h" #include #include #ifdef __cplusplus extern "C" { #endif #ifndef BOOL #define BOOL unsigned int #endif #ifndef TRUE #define ((unsigned int)1) #endif #ifndef FALSE #define ((unsigned int)0) #endif #define MAX_SOURCES 4000 #define MAX_BUFFERS 4000 typedef struct SVE_3DSound_Struct { char* filename; ALuint source_num; ALuint buffer_num; ALuint index; ALfloat pitch; ALfloat gain; ALfloat position[3]; ALfloat velocity[3]; ALuint islooping; ALfloat cone_outer_angle; ALfloat cone_inner_angle; ALfloat cone_outer_gain; SVE_object boundobject; ALboolean rel_source; ALfloat min_gain; ALfloat max_gain; ALfloat max_distance; ALfloat ref_distance; ALfloat rolloff; ALfloat direction[3]; }SVE_3DSound_Struct; typedef SVE_3DSound_Struct* SVE_3DSound; typedef struct SVE_3DListener_Struct { ALfloat position[3]; ALfloat velocity[3]; ALfloat gain; ALfloat orientation[6]; }SVE_3DListener_Struct; typedef struct SVE_3DListener_Struct* SVE_3DListener; struct SVE_3DSound_State_Struct { ALuint NUM_SOURCES; ALuint NUM_BUFFERS; ALuint buffer[MAX_BUFFERS]; ALuint source[MAX_SOURCES]; SVE_3DSound SVE_3DSound_array[MAX_SOURCES]; SVE_3DListener SVE_3DListener; ALboolean sound_flag; }SVE_3DSound_State_Struct; struct SVE_3DSound_State_Struct* SVE_3DSound_State; BOOL SVE_check3DSoundPlaying(SVE_3DSound sound); void SVE_init3DSound(int* argc, char **argv); void SVE_set3DSoundBuffers(); SVE_3DSound SVE_create3DSound(char* filename, ALboolean islooping); void SVE_create3DListener(); void SVE_update3DListener(SVE_state state); void SVE_set3DListenerPos(float x, float y, float z); void SVE_set3DListenerOri(float atx, float aty, float atz, float topx, float topy, float topz); void SVE_set3DSoundPos(float x, float y, float z, SVE_3DSound sound); void SVE_set3DSoundVelocity(float x, float y, float z, SVE_3DSound sound); void SVE_set3DSoundPitch(float x, SVE_3DSound sound); void SVE_set3DSoundDistances(float ref_distance, float max_distance, SVE_3DSound sound); void SVE_set3DSoundDistancesSab(ALfloat ref_distance, ALfloat max_distance, ALfloat rolloff_val, SVE_3DSound sound); void SVE_set3DSoundAngles(float innerangle, float outerangle, float outergain, SVE_3DSound sound); void SVE_makeRelativeSource(ALboolean ifrelative, SVE_3DSound sound); void SVE_bind3DSoundToObject(SVE_object object, SVE_3DSound sound); void SVE_set3DSoundGain(float x, SVE_3DSound sound); void SVE_close3DSound(); void SVE_display3DSoundError(); void SVE_3DSoundPlay(SVE_3DSound sound); void SVE_3DSoundStop(SVE_3DSound sound); void SVE_3DSoundPause(SVE_3DSound sound); #ifdef __cplusplus } #endif