1 2 #ifndef FMOD_WRAP_H 3 #define FMOD_WRAP_H 4 5 #ifndef NO_FMOD 6 7 #if !defined(_WIN32) || defined(_MSC_VER) 8 // Use the real C++ interface if it's supported on this platform. 9 #include "fmod.hpp" 10 #else 11 // Use a wrapper C++ interface for non-Microsoft compilers on Windows. 12 13 #include "fmod.h" 14 15 // Create fake definitions for these structs so they can be subclassed. 16 struct FMOD_SYSTEM {}; 17 struct FMOD_SOUND {}; 18 struct FMOD_CHANNEL {}; 19 struct FMOD_CHANNELGROUP {}; 20 struct FMOD_SOUNDGROUP {}; 21 struct FMOD_REVERB {}; 22 struct FMOD_DSP {}; 23 struct FMOD_DSPCONNECTION {}; 24 struct FMOD_POLYGON {}; 25 struct FMOD_GEOMETRY {}; 26 struct FMOD_SYNCPOINT {}; 27 /* 28 Constant and defines 29 */ 30 31 /* 32 FMOD Namespace 33 */ 34 35 namespace FMOD 36 { 37 38 class System; 39 class Sound; 40 class Channel; 41 class ChannelGroup; 42 class SoundGroup; 43 class Reverb; 44 class DSP; 45 class DSPConnection; 46 class Geometry; 47 48 /* 49 FMOD global system functions (optional). 50 */ 51 inline FMOD_RESULT Memory_Initialize(void *poolmem, int poollen, FMOD_MEMORY_ALLOCCALLBACK useralloc, FMOD_MEMORY_REALLOCCALLBACK userrealloc, FMOD_MEMORY_FREECALLBACK userfree, FMOD_MEMORY_TYPE memtypeflags = (FMOD_MEMORY_NORMAL | FMOD_MEMORY_XBOX360_PHYSICAL)) { return FMOD_Memory_Initialize(poolmem, poollen, useralloc, userrealloc, userfree, memtypeflags); } 52 //inline FMOD_RESULT Memory_GetStats(int *currentalloced, int *maxalloced) { return FMOD_Memory_GetStats(currentalloced, maxalloced); } Debug_SetLevel(FMOD_DEBUGLEVEL level)53 inline FMOD_RESULT Debug_SetLevel(FMOD_DEBUGLEVEL level) { return FMOD_Debug_SetLevel(level); } Debug_GetLevel(FMOD_DEBUGLEVEL * level)54 inline FMOD_RESULT Debug_GetLevel(FMOD_DEBUGLEVEL *level) { return FMOD_Debug_GetLevel(level); } File_SetDiskBusy(int busy)55 inline FMOD_RESULT File_SetDiskBusy(int busy) { return FMOD_File_SetDiskBusy(busy); } File_GetDiskBusy(int * busy)56 inline FMOD_RESULT File_GetDiskBusy(int *busy) { return FMOD_File_GetDiskBusy(busy); } 57 58 /* 59 FMOD System factory functions. 60 */ System_Create(System ** system)61 inline FMOD_RESULT System_Create(System **system) { return FMOD_System_Create((FMOD_SYSTEM **)system); } 62 63 /* 64 'System' API 65 */ 66 67 class System : FMOD_SYSTEM 68 { 69 private: 70 71 System(); /* Constructor made private so user cannot statically instance a System class. 72 System_Create must be used. */ 73 public: 74 release()75 FMOD_RESULT release () { return FMOD_System_Release(this); } 76 77 // Pre-init functions. setOutput(FMOD_OUTPUTTYPE output)78 FMOD_RESULT setOutput (FMOD_OUTPUTTYPE output) { return FMOD_System_SetOutput(this, output); } getOutput(FMOD_OUTPUTTYPE * output)79 FMOD_RESULT getOutput (FMOD_OUTPUTTYPE *output) { return FMOD_System_GetOutput(this, output); } getNumDrivers(int * numdrivers)80 FMOD_RESULT getNumDrivers (int *numdrivers) { return FMOD_System_GetNumDrivers(this, numdrivers); } getDriverInfo(int id,char * name,int namelen,FMOD_GUID * guid)81 FMOD_RESULT getDriverInfo (int id, char *name, int namelen, FMOD_GUID *guid) { return FMOD_System_GetDriverInfo(this, id, name, namelen, guid); } getDriverCaps(int id,FMOD_CAPS * caps,int * minfrequency,int * maxfrequency,FMOD_SPEAKERMODE * controlpanelspeakermode)82 FMOD_RESULT getDriverCaps (int id, FMOD_CAPS *caps, int *minfrequency, int *maxfrequency, FMOD_SPEAKERMODE *controlpanelspeakermode) { return FMOD_System_GetDriverCaps(this, id, caps, minfrequency, maxfrequency, controlpanelspeakermode); } setDriver(int driver)83 FMOD_RESULT setDriver (int driver) { return FMOD_System_SetDriver(this, driver); } getDriver(int * driver)84 FMOD_RESULT getDriver (int *driver) { return FMOD_System_GetDriver(this, driver); } setHardwareChannels(int min2d,int max2d,int min3d,int max3d)85 FMOD_RESULT setHardwareChannels (int min2d, int max2d, int min3d, int max3d) { return FMOD_System_SetHardwareChannels(this, min2d, max2d, min3d, max3d); } setSoftwareChannels(int numsoftwarechannels)86 FMOD_RESULT setSoftwareChannels (int numsoftwarechannels) { return FMOD_System_SetSoftwareChannels(this, numsoftwarechannels); } getSoftwareChannels(int * numsoftwarechannels)87 FMOD_RESULT getSoftwareChannels (int *numsoftwarechannels) { return FMOD_System_GetSoftwareChannels(this, numsoftwarechannels); } setSoftwareFormat(int samplerate,FMOD_SOUND_FORMAT format,int numoutputchannels,int maxinputchannels,FMOD_DSP_RESAMPLER resamplemethod)88 FMOD_RESULT setSoftwareFormat (int samplerate, FMOD_SOUND_FORMAT format, int numoutputchannels, int maxinputchannels, FMOD_DSP_RESAMPLER resamplemethod) { return FMOD_System_SetSoftwareFormat(this, samplerate, format, numoutputchannels, maxinputchannels, resamplemethod); } getSoftwareFormat(int * samplerate,FMOD_SOUND_FORMAT * format,int * numoutputchannels,int * maxinputchannels,FMOD_DSP_RESAMPLER * resamplemethod,int * bits)89 FMOD_RESULT getSoftwareFormat (int *samplerate, FMOD_SOUND_FORMAT *format, int *numoutputchannels, int *maxinputchannels, FMOD_DSP_RESAMPLER *resamplemethod, int *bits) { return FMOD_System_GetSoftwareFormat(this, samplerate, format, numoutputchannels, maxinputchannels, resamplemethod, bits); } setDSPBufferSize(unsigned int bufferlength,int numbuffers)90 FMOD_RESULT setDSPBufferSize (unsigned int bufferlength, int numbuffers) { return FMOD_System_SetDSPBufferSize(this, bufferlength, numbuffers); } getDSPBufferSize(unsigned int * bufferlength,int * numbuffers)91 FMOD_RESULT getDSPBufferSize (unsigned int *bufferlength, int *numbuffers) { return FMOD_System_GetDSPBufferSize(this, bufferlength, numbuffers); } setFileSystem(FMOD_FILE_OPENCALLBACK useropen,FMOD_FILE_CLOSECALLBACK userclose,FMOD_FILE_READCALLBACK userread,FMOD_FILE_SEEKCALLBACK userseek,int blockalign)92 FMOD_RESULT setFileSystem (FMOD_FILE_OPENCALLBACK useropen, FMOD_FILE_CLOSECALLBACK userclose, FMOD_FILE_READCALLBACK userread, FMOD_FILE_SEEKCALLBACK userseek, int blockalign) { return FMOD_System_SetFileSystem(this, useropen, userclose, userread, userseek, blockalign); } attachFileSystem(FMOD_FILE_OPENCALLBACK useropen,FMOD_FILE_CLOSECALLBACK userclose,FMOD_FILE_READCALLBACK userread,FMOD_FILE_SEEKCALLBACK userseek)93 FMOD_RESULT attachFileSystem (FMOD_FILE_OPENCALLBACK useropen, FMOD_FILE_CLOSECALLBACK userclose, FMOD_FILE_READCALLBACK userread, FMOD_FILE_SEEKCALLBACK userseek) { return FMOD_System_AttachFileSystem(this, useropen, userclose, userread, userseek); } setAdvancedSettings(FMOD_ADVANCEDSETTINGS * settings)94 FMOD_RESULT setAdvancedSettings (FMOD_ADVANCEDSETTINGS *settings) { return FMOD_System_SetAdvancedSettings(this, settings); } getAdvancedSettings(FMOD_ADVANCEDSETTINGS * settings)95 FMOD_RESULT getAdvancedSettings (FMOD_ADVANCEDSETTINGS *settings) { return FMOD_System_GetAdvancedSettings(this, settings); } setSpeakerMode(FMOD_SPEAKERMODE speakermode)96 FMOD_RESULT setSpeakerMode (FMOD_SPEAKERMODE speakermode) { return FMOD_System_SetSpeakerMode(this, speakermode); } getSpeakerMode(FMOD_SPEAKERMODE * speakermode)97 FMOD_RESULT getSpeakerMode (FMOD_SPEAKERMODE *speakermode) { return FMOD_System_GetSpeakerMode(this, speakermode); } setCallback(FMOD_SYSTEM_CALLBACK callback)98 FMOD_RESULT setCallback (FMOD_SYSTEM_CALLBACK callback) { return FMOD_System_SetCallback(this, callback); } 99 100 // Plug-in support setPluginPath(const char * path)101 FMOD_RESULT setPluginPath (const char *path) { return FMOD_System_SetPluginPath(this, path); } 102 FMOD_RESULT loadPlugin (const char *filename, unsigned int *handle, unsigned int priority = 0) { return FMOD_System_LoadPlugin(this, filename, handle, priority); } unloadPlugin(unsigned int handle)103 FMOD_RESULT unloadPlugin (unsigned int handle) { return FMOD_System_UnloadPlugin(this, handle); } getNumPlugins(FMOD_PLUGINTYPE plugintype,int * numplugins)104 FMOD_RESULT getNumPlugins (FMOD_PLUGINTYPE plugintype, int *numplugins) { return FMOD_System_GetNumPlugins(this, plugintype, numplugins); } getPluginHandle(FMOD_PLUGINTYPE plugintype,int index,unsigned int * handle)105 FMOD_RESULT getPluginHandle (FMOD_PLUGINTYPE plugintype, int index, unsigned int *handle) { return FMOD_System_GetPluginHandle(this, plugintype, index, handle); } getPluginInfo(unsigned int handle,FMOD_PLUGINTYPE * plugintype,char * name,int namelen,unsigned int * version)106 FMOD_RESULT getPluginInfo (unsigned int handle, FMOD_PLUGINTYPE *plugintype, char *name, int namelen, unsigned int *version) { return FMOD_System_GetPluginInfo(this, handle, plugintype, name, namelen, version); } setOutputByPlugin(unsigned int handle)107 FMOD_RESULT setOutputByPlugin (unsigned int handle) { return FMOD_System_SetOutputByPlugin(this, handle); } getOutputByPlugin(unsigned int * handle)108 FMOD_RESULT getOutputByPlugin (unsigned int *handle) { return FMOD_System_GetOutputByPlugin(this, handle); } 109 FMOD_RESULT createCodec (FMOD_CODEC_DESCRIPTION *description, unsigned int priority = 0) { return FMOD_System_CreateCodec(this, description, priority); } 110 111 // Init/Close init(int maxchannels,FMOD_INITFLAGS flags,void * extradriverdata)112 FMOD_RESULT init (int maxchannels, FMOD_INITFLAGS flags, void *extradriverdata) { return FMOD_System_Init(this, maxchannels, flags, extradriverdata); } close()113 FMOD_RESULT close () { return FMOD_System_Close(this); } 114 115 // General post-init system functions update()116 FMOD_RESULT update () /* IMPORTANT! CALL THIS ONCE PER FRAME! */ { return FMOD_System_Update(this); } 117 set3DSettings(float dopplerscale,float distancefactor,float rolloffscale)118 FMOD_RESULT set3DSettings (float dopplerscale, float distancefactor, float rolloffscale) { return FMOD_System_Set3DSettings(this, dopplerscale, distancefactor, rolloffscale); } get3DSettings(float * dopplerscale,float * distancefactor,float * rolloffscale)119 FMOD_RESULT get3DSettings (float *dopplerscale, float *distancefactor, float *rolloffscale) { return FMOD_System_Get3DSettings(this, dopplerscale, distancefactor, rolloffscale); } set3DNumListeners(int numlisteners)120 FMOD_RESULT set3DNumListeners (int numlisteners) { return FMOD_System_Set3DNumListeners(this, numlisteners); } get3DNumListeners(int * numlisteners)121 FMOD_RESULT get3DNumListeners (int *numlisteners) { return FMOD_System_Get3DNumListeners(this, numlisteners); } set3DListenerAttributes(int listener,const FMOD_VECTOR * pos,const FMOD_VECTOR * vel,const FMOD_VECTOR * forward,const FMOD_VECTOR * up)122 FMOD_RESULT set3DListenerAttributes(int listener, const FMOD_VECTOR *pos, const FMOD_VECTOR *vel, const FMOD_VECTOR *forward, const FMOD_VECTOR *up) { return FMOD_System_Set3DListenerAttributes(this, listener, pos, vel, forward, up); } get3DListenerAttributes(int listener,FMOD_VECTOR * pos,FMOD_VECTOR * vel,FMOD_VECTOR * forward,FMOD_VECTOR * up)123 FMOD_RESULT get3DListenerAttributes(int listener, FMOD_VECTOR *pos, FMOD_VECTOR *vel, FMOD_VECTOR *forward, FMOD_VECTOR *up) { return FMOD_System_Get3DListenerAttributes(this, listener, pos, vel, forward, up); } set3DRolloffCallback(FMOD_3D_ROLLOFFCALLBACK callback)124 FMOD_RESULT set3DRolloffCallback (FMOD_3D_ROLLOFFCALLBACK callback) { return FMOD_System_Set3DRolloffCallback(this, callback); } set3DSpeakerPosition(FMOD_SPEAKER speaker,float x,float y,bool active)125 FMOD_RESULT set3DSpeakerPosition (FMOD_SPEAKER speaker, float x, float y, bool active) { return FMOD_System_Set3DSpeakerPosition(this, speaker, x, y, active); } get3DSpeakerPosition(FMOD_SPEAKER speaker,float * x,float * y,bool * active)126 FMOD_RESULT get3DSpeakerPosition (FMOD_SPEAKER speaker, float *x, float *y, bool *active) { FMOD_BOOL b; FMOD_RESULT res = FMOD_System_Get3DSpeakerPosition(this, speaker, x, y, &b); *active = b; return res; } 127 setStreamBufferSize(unsigned int filebuffersize,FMOD_TIMEUNIT filebuffersizetype)128 FMOD_RESULT setStreamBufferSize (unsigned int filebuffersize, FMOD_TIMEUNIT filebuffersizetype) { return FMOD_System_SetStreamBufferSize(this, filebuffersize, filebuffersizetype); } getStreamBufferSize(unsigned int * filebuffersize,FMOD_TIMEUNIT * filebuffersizetype)129 FMOD_RESULT getStreamBufferSize (unsigned int *filebuffersize, FMOD_TIMEUNIT *filebuffersizetype) { return FMOD_System_GetStreamBufferSize(this, filebuffersize, filebuffersizetype); } 130 131 // System information functions. getVersion(unsigned int * version)132 FMOD_RESULT getVersion (unsigned int *version) { return FMOD_System_GetVersion(this, version); } getOutputHandle(void ** handle)133 FMOD_RESULT getOutputHandle (void **handle) { return FMOD_System_GetOutputHandle(this, handle); } getChannelsPlaying(int * channels)134 FMOD_RESULT getChannelsPlaying (int *channels) { return FMOD_System_GetChannelsPlaying(this, channels); } getHardwareChannels(int * num2d,int * num3d,int * total)135 FMOD_RESULT getHardwareChannels (int *num2d, int *num3d, int *total) { return FMOD_System_GetHardwareChannels(this, num2d, num3d, total); } 136 #if FMOD_VERSION < 0x42501 getCPUUsage(float * dsp,float * stream,float * update,float * total)137 FMOD_RESULT getCPUUsage (float *dsp, float *stream, float *update, float *total) { return FMOD_System_GetCPUUsage(this, dsp, stream, update, total); } 138 #else getCPUUsage(float * dsp,float * stream,float * geometry,float * update,float * total)139 FMOD_RESULT getCPUUsage (float *dsp, float *stream, float *geometry, float *update, float *total) { return FMOD_System_GetCPUUsage(this, dsp, stream, geometry, update, total); } 140 #endif getSoundRAM(int * currentalloced,int * maxalloced,int * total)141 FMOD_RESULT getSoundRAM (int *currentalloced, int *maxalloced, int *total) { return FMOD_System_GetSoundRAM(this, currentalloced, maxalloced, total); } getNumCDROMDrives(int * numdrives)142 FMOD_RESULT getNumCDROMDrives (int *numdrives) { return FMOD_System_GetNumCDROMDrives(this, numdrives); } getCDROMDriveName(int drive,char * drivename,int drivenamelen,char * scsiname,int scsinamelen,char * devicename,int devicenamelen)143 FMOD_RESULT getCDROMDriveName (int drive, char *drivename, int drivenamelen, char *scsiname, int scsinamelen, char *devicename, int devicenamelen) { return FMOD_System_GetCDROMDriveName(this, drive, drivename, drivenamelen, scsiname, scsinamelen, devicename, devicenamelen); } getSpectrum(float * spectrumarray,int numvalues,int channeloffset,FMOD_DSP_FFT_WINDOW windowtype)144 FMOD_RESULT getSpectrum (float *spectrumarray, int numvalues, int channeloffset, FMOD_DSP_FFT_WINDOW windowtype) { return FMOD_System_GetSpectrum(this, spectrumarray, numvalues, channeloffset, windowtype); } getWaveData(float * wavearray,int numvalues,int channeloffset)145 FMOD_RESULT getWaveData (float *wavearray, int numvalues, int channeloffset) { return FMOD_System_GetWaveData(this, wavearray, numvalues, channeloffset); } 146 147 // Sound/DSP/Channel/FX creation and retrieval. createSound(const char * name_or_data,FMOD_MODE mode,FMOD_CREATESOUNDEXINFO * exinfo,Sound ** sound)148 FMOD_RESULT createSound (const char *name_or_data, FMOD_MODE mode, FMOD_CREATESOUNDEXINFO *exinfo, Sound **sound) { return FMOD_System_CreateSound(this, name_or_data, mode, exinfo, (FMOD_SOUND **)sound); } createStream(const char * name_or_data,FMOD_MODE mode,FMOD_CREATESOUNDEXINFO * exinfo,Sound ** sound)149 FMOD_RESULT createStream (const char *name_or_data, FMOD_MODE mode, FMOD_CREATESOUNDEXINFO *exinfo, Sound **sound) { return FMOD_System_CreateStream(this, name_or_data, mode, exinfo, (FMOD_SOUND **)sound); } createDSP(FMOD_DSP_DESCRIPTION * description,DSP ** dsp)150 FMOD_RESULT createDSP (FMOD_DSP_DESCRIPTION *description, DSP **dsp) { return FMOD_System_CreateDSP(this, description, (FMOD_DSP **)dsp); } createDSPByType(FMOD_DSP_TYPE type,DSP ** dsp)151 FMOD_RESULT createDSPByType (FMOD_DSP_TYPE type, DSP **dsp) { return FMOD_System_CreateDSPByType(this, type, (FMOD_DSP **)dsp); } createChannelGroup(const char * name,ChannelGroup ** channelgroup)152 FMOD_RESULT createChannelGroup (const char *name, ChannelGroup **channelgroup) { return FMOD_System_CreateChannelGroup(this, name, (FMOD_CHANNELGROUP **)channelgroup); } createSoundGroup(const char * name,SoundGroup ** soundgroup)153 FMOD_RESULT createSoundGroup (const char *name, SoundGroup **soundgroup) { return FMOD_System_CreateSoundGroup(this, name, (FMOD_SOUNDGROUP **)soundgroup); } createReverb(Reverb ** reverb)154 FMOD_RESULT createReverb (Reverb **reverb) { return FMOD_System_CreateReverb(this, (FMOD_REVERB **)reverb); } 155 playSound(FMOD_CHANNELINDEX channelid,Sound * sound,bool paused,Channel ** channel)156 FMOD_RESULT playSound (FMOD_CHANNELINDEX channelid, Sound *sound, bool paused, Channel **channel) { return FMOD_System_PlaySound(this, channelid, (FMOD_SOUND *)sound, paused, (FMOD_CHANNEL **)channel); } playDSP(FMOD_CHANNELINDEX channelid,DSP * dsp,bool paused,Channel ** channel)157 FMOD_RESULT playDSP (FMOD_CHANNELINDEX channelid, DSP *dsp, bool paused, Channel **channel) { return FMOD_System_PlayDSP(this, channelid, (FMOD_DSP *)dsp, paused, (FMOD_CHANNEL **)channel); } getChannel(int channelid,Channel ** channel)158 FMOD_RESULT getChannel (int channelid, Channel **channel) { return FMOD_System_GetChannel(this, channelid, (FMOD_CHANNEL **)channel); } getMasterChannelGroup(ChannelGroup ** channelgroup)159 FMOD_RESULT getMasterChannelGroup (ChannelGroup **channelgroup) { return FMOD_System_GetMasterChannelGroup(this, (FMOD_CHANNELGROUP **)channelgroup); } getMasterSoundGroup(SoundGroup ** soundgroup)160 FMOD_RESULT getMasterSoundGroup (SoundGroup **soundgroup) { return FMOD_System_GetMasterSoundGroup(this, (FMOD_SOUNDGROUP **)soundgroup); } 161 162 // Reverb API setReverbProperties(const FMOD_REVERB_PROPERTIES * prop)163 FMOD_RESULT setReverbProperties (const FMOD_REVERB_PROPERTIES *prop) { return FMOD_System_SetReverbProperties(this, prop); } getReverbProperties(FMOD_REVERB_PROPERTIES * prop)164 FMOD_RESULT getReverbProperties (FMOD_REVERB_PROPERTIES *prop) { return FMOD_System_GetReverbProperties(this, prop); } setReverbAmbientProperties(FMOD_REVERB_PROPERTIES * prop)165 FMOD_RESULT setReverbAmbientProperties(FMOD_REVERB_PROPERTIES *prop) { return FMOD_System_SetReverbAmbientProperties(this, prop); } getReverbAmbientProperties(FMOD_REVERB_PROPERTIES * prop)166 FMOD_RESULT getReverbAmbientProperties(FMOD_REVERB_PROPERTIES *prop) { return FMOD_System_GetReverbAmbientProperties(this, prop); } 167 168 // System level DSP access. getDSPHead(DSP ** dsp)169 FMOD_RESULT getDSPHead (DSP **dsp) { return FMOD_System_GetDSPHead(this, (FMOD_DSP **)dsp); } addDSP(DSP * dsp,DSPConnection ** connection)170 FMOD_RESULT addDSP (DSP *dsp, DSPConnection **connection) { return FMOD_System_AddDSP(this, (FMOD_DSP *)dsp, (FMOD_DSPCONNECTION**)dsp); } lockDSP()171 FMOD_RESULT lockDSP () { return FMOD_System_LockDSP(this); } unlockDSP()172 FMOD_RESULT unlockDSP () { return FMOD_System_UnlockDSP(this); } getDSPClock(unsigned int * hi,unsigned int * lo)173 FMOD_RESULT getDSPClock (unsigned int *hi, unsigned int *lo) { return FMOD_System_GetDSPClock(this, hi, lo); } 174 175 // Recording API. getRecordNumDrivers(int * numdrivers)176 FMOD_RESULT getRecordNumDrivers (int *numdrivers) { return FMOD_System_GetRecordNumDrivers(this, numdrivers); } getRecordDriverInfo(int id,char * name,int namelen,FMOD_GUID * guid)177 FMOD_RESULT getRecordDriverInfo (int id, char *name, int namelen, FMOD_GUID *guid) { return FMOD_System_GetRecordDriverInfo(this, id, name, namelen, guid); } getRecordDriverCaps(int id,FMOD_CAPS * caps,int * minfrequency,int * maxfrequency)178 FMOD_RESULT getRecordDriverCaps (int id, FMOD_CAPS *caps, int *minfrequency, int *maxfrequency) { return FMOD_System_GetRecordDriverCaps(this, id, caps, minfrequency, maxfrequency); } getRecordPosition(int id,unsigned int * position)179 FMOD_RESULT getRecordPosition (int id, unsigned int *position) { return FMOD_System_GetRecordPosition(this, id, position); } 180 recordStart(int id,Sound * sound,bool loop)181 FMOD_RESULT recordStart (int id, Sound *sound, bool loop) { return FMOD_System_RecordStart(this, id, (FMOD_SOUND *)sound, loop); } recordStop(int id)182 FMOD_RESULT recordStop (int id) { return FMOD_System_RecordStop(this, id); } isRecording(int id,bool * recording)183 FMOD_RESULT isRecording (int id, bool *recording) { FMOD_BOOL b; FMOD_RESULT res = FMOD_System_IsRecording(this, id, &b); *recording = b; return res; } 184 185 // Geometry API. createGeometry(int maxpolygons,int maxvertices,Geometry ** geometry)186 FMOD_RESULT createGeometry (int maxpolygons, int maxvertices, Geometry **geometry) { return FMOD_System_CreateGeometry(this, maxpolygons, maxvertices, (FMOD_GEOMETRY **)geometry); } setGeometrySettings(float maxworldsize)187 FMOD_RESULT setGeometrySettings (float maxworldsize) { return FMOD_System_SetGeometrySettings(this, maxworldsize); } getGeometrySettings(float * maxworldsize)188 FMOD_RESULT getGeometrySettings (float *maxworldsize) { return FMOD_System_GetGeometrySettings(this, maxworldsize); } loadGeometry(const void * data,int datasize,Geometry ** geometry)189 FMOD_RESULT loadGeometry (const void *data, int datasize, Geometry **geometry) { return FMOD_System_LoadGeometry(this, data, datasize, (FMOD_GEOMETRY **)geometry); } 190 191 // Network functions. setNetworkProxy(const char * proxy)192 FMOD_RESULT setNetworkProxy (const char *proxy) { return FMOD_System_SetNetworkProxy(this, proxy); } getNetworkProxy(char * proxy,int proxylen)193 FMOD_RESULT getNetworkProxy (char *proxy, int proxylen) { return FMOD_System_GetNetworkProxy(this, proxy, proxylen); } setNetworkTimeout(int timeout)194 FMOD_RESULT setNetworkTimeout (int timeout) { return FMOD_System_SetNetworkTimeout(this, timeout); } getNetworkTimeout(int * timeout)195 FMOD_RESULT getNetworkTimeout (int *timeout) { return FMOD_System_GetNetworkTimeout(this, timeout); } 196 197 // Userdata set/get. setUserData(void * userdata)198 FMOD_RESULT setUserData (void *userdata) { return FMOD_System_SetUserData(this, userdata); } getUserData(void ** userdata)199 FMOD_RESULT getUserData (void **userdata) { return FMOD_System_GetUserData(this, userdata); } 200 getMemoryInfo(unsigned int memorybits,unsigned int event_memorybits,unsigned int * memoryused,unsigned int * memoryused_array)201 FMOD_RESULT getMemoryInfo (unsigned int memorybits, unsigned int event_memorybits, unsigned int *memoryused, unsigned int *memoryused_array) { return FMOD_System_GetMemoryInfo(this, memorybits, event_memorybits, memoryused, memoryused_array); } 202 }; 203 204 /* 205 'Sound' API 206 */ 207 class Sound : FMOD_SOUND 208 { 209 private: 210 211 Sound(); /* Constructor made private so user cannot statically instance a Sound class. 212 Appropriate Sound creation or retrieval function must be used. */ 213 public: 214 release()215 FMOD_RESULT release () { return FMOD_Sound_Release(this); } getSystemObject(System ** system)216 FMOD_RESULT getSystemObject (System **system) { return FMOD_Sound_GetSystemObject(this, (FMOD_SYSTEM **)system); } 217 218 // Standard sound manipulation functions. lock(unsigned int offset,unsigned int length,void ** ptr1,void ** ptr2,unsigned int * len1,unsigned int * len2)219 FMOD_RESULT lock (unsigned int offset, unsigned int length, void **ptr1, void **ptr2, unsigned int *len1, unsigned int *len2) { return FMOD_Sound_Lock(this, offset, length, ptr1, ptr2, len1, len2); } unlock(void * ptr1,void * ptr2,unsigned int len1,unsigned int len2)220 FMOD_RESULT unlock (void *ptr1, void *ptr2, unsigned int len1, unsigned int len2) { return FMOD_Sound_Unlock(this, ptr1, ptr2, len1, len2); } setDefaults(float frequency,float volume,float pan,int priority)221 FMOD_RESULT setDefaults (float frequency, float volume, float pan, int priority) { return FMOD_Sound_SetDefaults(this, frequency, volume, pan, priority); } getDefaults(float * frequency,float * volume,float * pan,int * priority)222 FMOD_RESULT getDefaults (float *frequency, float *volume, float *pan, int *priority) { return FMOD_Sound_GetDefaults(this, frequency, volume, pan, priority); } setVariations(float frequencyvar,float volumevar,float panvar)223 FMOD_RESULT setVariations (float frequencyvar, float volumevar, float panvar) { return FMOD_Sound_SetVariations(this, frequencyvar, volumevar, panvar); } getVariations(float * frequencyvar,float * volumevar,float * panvar)224 FMOD_RESULT getVariations (float *frequencyvar, float *volumevar, float *panvar) { return FMOD_Sound_GetVariations(this, frequencyvar, volumevar, panvar); } set3DMinMaxDistance(float min,float max)225 FMOD_RESULT set3DMinMaxDistance (float min, float max) { return FMOD_Sound_Set3DMinMaxDistance(this, min, max); } get3DMinMaxDistance(float * min,float * max)226 FMOD_RESULT get3DMinMaxDistance (float *min, float *max) { return FMOD_Sound_Get3DMinMaxDistance(this, min, max); } set3DConeSettings(float insideconeangle,float outsideconeangle,float outsidevolume)227 FMOD_RESULT set3DConeSettings (float insideconeangle, float outsideconeangle, float outsidevolume) { return FMOD_Sound_Set3DConeSettings(this, insideconeangle, outsideconeangle, outsidevolume); } get3DConeSettings(float * insideconeangle,float * outsideconeangle,float * outsidevolume)228 FMOD_RESULT get3DConeSettings (float *insideconeangle, float *outsideconeangle, float *outsidevolume) { return FMOD_Sound_Get3DConeSettings(this, insideconeangle, outsideconeangle, outsidevolume); } set3DCustomRolloff(FMOD_VECTOR * points,int numpoints)229 FMOD_RESULT set3DCustomRolloff (FMOD_VECTOR *points, int numpoints) { return FMOD_Sound_Set3DCustomRolloff(this, points, numpoints); } get3DCustomRolloff(FMOD_VECTOR ** points,int * numpoints)230 FMOD_RESULT get3DCustomRolloff (FMOD_VECTOR **points, int *numpoints) { return FMOD_Sound_Get3DCustomRolloff(this, points, numpoints); } setSubSound(int index,Sound * subsound)231 FMOD_RESULT setSubSound (int index, Sound *subsound) { return FMOD_Sound_SetSubSound(this, index, subsound); } getSubSound(int index,Sound ** subsound)232 FMOD_RESULT getSubSound (int index, Sound **subsound) { return FMOD_Sound_GetSubSound(this, index, (FMOD_SOUND **)subsound); } setSubSoundSentence(int * subsoundlist,int numsubsounds)233 FMOD_RESULT setSubSoundSentence (int *subsoundlist, int numsubsounds) { return FMOD_Sound_SetSubSoundSentence(this, subsoundlist, numsubsounds); } getName(char * name,int namelen)234 FMOD_RESULT getName (char *name, int namelen) { return FMOD_Sound_GetName(this, name, namelen); } getLength(unsigned int * length,FMOD_TIMEUNIT lengthtype)235 FMOD_RESULT getLength (unsigned int *length, FMOD_TIMEUNIT lengthtype) { return FMOD_Sound_GetLength(this, length, lengthtype); } getFormat(FMOD_SOUND_TYPE * type,FMOD_SOUND_FORMAT * format,int * channels,int * bits)236 FMOD_RESULT getFormat (FMOD_SOUND_TYPE *type, FMOD_SOUND_FORMAT *format, int *channels, int *bits) { return FMOD_Sound_GetFormat(this, type, format, channels, bits); } getNumSubSounds(int * numsubsounds)237 FMOD_RESULT getNumSubSounds (int *numsubsounds) { return FMOD_Sound_GetNumSubSounds(this, numsubsounds); } getNumTags(int * numtags,int * numtagsupdated)238 FMOD_RESULT getNumTags (int *numtags, int *numtagsupdated) { return FMOD_Sound_GetNumTags(this, numtags, numtagsupdated); } getTag(const char * name,int index,FMOD_TAG * tag)239 FMOD_RESULT getTag (const char *name, int index, FMOD_TAG *tag) { return FMOD_Sound_GetTag(this, name, index, tag); } getOpenState(FMOD_OPENSTATE * openstate,unsigned int * percentbuffered,bool * starving)240 FMOD_RESULT getOpenState (FMOD_OPENSTATE *openstate, unsigned int *percentbuffered, bool *starving) { FMOD_BOOL b; FMOD_RESULT res = FMOD_Sound_GetOpenState(this, openstate, percentbuffered, &b); *starving = b; return res; } readData(void * buffer,unsigned int lenbytes,unsigned int * read)241 FMOD_RESULT readData (void *buffer, unsigned int lenbytes, unsigned int *read) { return FMOD_Sound_ReadData(this, buffer, lenbytes, read); } seekData(unsigned int pcm)242 FMOD_RESULT seekData (unsigned int pcm) { return FMOD_Sound_SeekData(this, pcm); } 243 setSoundGroup(SoundGroup * soundgroup)244 FMOD_RESULT setSoundGroup (SoundGroup *soundgroup) { return FMOD_Sound_SetSoundGroup(this, (FMOD_SOUNDGROUP *)soundgroup); } getSoundGroup(SoundGroup ** soundgroup)245 FMOD_RESULT getSoundGroup (SoundGroup **soundgroup) { return FMOD_Sound_GetSoundGroup(this, (FMOD_SOUNDGROUP **)soundgroup); } 246 247 // Synchronization point API. These points can come from markers embedded in wav files, and can also generate channel callbacks. getNumSyncPoints(int * numsyncpoints)248 FMOD_RESULT getNumSyncPoints (int *numsyncpoints) { return FMOD_Sound_GetNumSyncPoints(this, numsyncpoints); } getSyncPoint(int index,FMOD_SYNCPOINT ** point)249 FMOD_RESULT getSyncPoint (int index, FMOD_SYNCPOINT **point) { return FMOD_Sound_GetSyncPoint(this, index, point); } getSyncPointInfo(FMOD_SYNCPOINT * point,char * name,int namelen,unsigned int * offset,FMOD_TIMEUNIT offsettype)250 FMOD_RESULT getSyncPointInfo (FMOD_SYNCPOINT *point, char *name, int namelen, unsigned int *offset, FMOD_TIMEUNIT offsettype) { return FMOD_Sound_GetSyncPointInfo(this, point, name, namelen, offset, offsettype); } addSyncPoint(unsigned int offset,FMOD_TIMEUNIT offsettype,const char * name,FMOD_SYNCPOINT ** point)251 FMOD_RESULT addSyncPoint (unsigned int offset, FMOD_TIMEUNIT offsettype, const char *name, FMOD_SYNCPOINT **point) { return FMOD_Sound_AddSyncPoint(this, offset, offsettype, name, point); } deleteSyncPoint(FMOD_SYNCPOINT * point)252 FMOD_RESULT deleteSyncPoint (FMOD_SYNCPOINT *point) { return FMOD_Sound_DeleteSyncPoint(this, point); } 253 254 // Functions also in Channel class but here they are the 'default' to save having to change it in Channel all the time. setMode(FMOD_MODE mode)255 FMOD_RESULT setMode (FMOD_MODE mode) { return FMOD_Sound_SetMode(this, mode); } getMode(FMOD_MODE * mode)256 FMOD_RESULT getMode (FMOD_MODE *mode) { return FMOD_Sound_GetMode(this, mode); } setLoopCount(int loopcount)257 FMOD_RESULT setLoopCount (int loopcount) { return FMOD_Sound_SetLoopCount(this, loopcount); } getLoopCount(int * loopcount)258 FMOD_RESULT getLoopCount (int *loopcount) { return FMOD_Sound_GetLoopCount(this, loopcount); } setLoopPoints(unsigned int loopstart,FMOD_TIMEUNIT loopstarttype,unsigned int loopend,FMOD_TIMEUNIT loopendtype)259 FMOD_RESULT setLoopPoints (unsigned int loopstart, FMOD_TIMEUNIT loopstarttype, unsigned int loopend, FMOD_TIMEUNIT loopendtype) { return FMOD_Sound_SetLoopPoints(this, loopstart, loopstarttype, loopend, loopendtype); } getLoopPoints(unsigned int * loopstart,FMOD_TIMEUNIT loopstarttype,unsigned int * loopend,FMOD_TIMEUNIT loopendtype)260 FMOD_RESULT getLoopPoints (unsigned int *loopstart, FMOD_TIMEUNIT loopstarttype, unsigned int *loopend, FMOD_TIMEUNIT loopendtype) { return FMOD_Sound_GetLoopPoints(this, loopstart, loopstarttype, loopend, loopendtype); } 261 262 // Userdata set/get. setUserData(void * userdata)263 FMOD_RESULT setUserData (void *userdata) { return FMOD_Sound_SetUserData(this, userdata); } getUserData(void ** userdata)264 FMOD_RESULT getUserData (void **userdata) { return FMOD_Sound_GetUserData(this, userdata); } 265 getMemoryInfo(unsigned int memorybits,unsigned int event_memorybits,unsigned int * memoryused,unsigned int * memoryused_array)266 FMOD_RESULT getMemoryInfo (unsigned int memorybits, unsigned int event_memorybits, unsigned int *memoryused, unsigned int *memoryused_array) { return FMOD_Sound_GetMemoryInfo(this, memorybits, event_memorybits, memoryused, memoryused_array); } 267 }; 268 269 /* 270 'Channel' API. 271 */ 272 class Channel : FMOD_CHANNEL 273 { 274 private: 275 276 Channel(); /* Constructor made private so user cannot statically instance a Channel class. 277 Appropriate Channel creation or retrieval function must be used. */ 278 public: 279 getSystemObject(System ** system)280 FMOD_RESULT getSystemObject (System **system) { return FMOD_Channel_GetSystemObject(this, (FMOD_SYSTEM **)system); } 281 stop()282 FMOD_RESULT stop () { return FMOD_Channel_Stop(this); } setPaused(bool paused)283 FMOD_RESULT setPaused (bool paused) { return FMOD_Channel_SetPaused(this, paused); } getPaused(bool * paused)284 FMOD_RESULT getPaused (bool *paused) { FMOD_BOOL b; FMOD_RESULT res = FMOD_Channel_GetPaused(this, &b); *paused = b; return res; } setVolume(float volume)285 FMOD_RESULT setVolume (float volume) { return FMOD_Channel_SetVolume(this, volume); } getVolume(float * volume)286 FMOD_RESULT getVolume (float *volume) { return FMOD_Channel_GetVolume(this, volume); } setFrequency(float frequency)287 FMOD_RESULT setFrequency (float frequency) { return FMOD_Channel_SetFrequency(this, frequency); } getFrequency(float * frequency)288 FMOD_RESULT getFrequency (float *frequency) { return FMOD_Channel_GetFrequency(this, frequency); } setPan(float pan)289 FMOD_RESULT setPan (float pan) { return FMOD_Channel_SetPan(this, pan); } getPan(float * pan)290 FMOD_RESULT getPan (float *pan) { return FMOD_Channel_GetPan(this, pan); } setDelay(FMOD_DELAYTYPE delaytype,unsigned int delayhi,unsigned int delaylo)291 FMOD_RESULT setDelay (FMOD_DELAYTYPE delaytype, unsigned int delayhi, unsigned int delaylo) { return FMOD_Channel_SetDelay(this, delaytype, delayhi, delaylo); } getDelay(FMOD_DELAYTYPE delaytype,unsigned int * delayhi,unsigned int * delaylo)292 FMOD_RESULT getDelay (FMOD_DELAYTYPE delaytype, unsigned int *delayhi, unsigned int *delaylo) { return FMOD_Channel_GetDelay(this, delaytype, delayhi, delaylo); } setSpeakerMix(float frontleft,float frontright,float center,float lfe,float backleft,float backright,float sideleft,float sideright)293 FMOD_RESULT setSpeakerMix (float frontleft, float frontright, float center, float lfe, float backleft, float backright, float sideleft, float sideright) { return FMOD_Channel_SetSpeakerMix(this, frontleft, frontright, center, lfe, backleft, backright, sideleft, sideright); } getSpeakerMix(float * frontleft,float * frontright,float * center,float * lfe,float * backleft,float * backright,float * sideleft,float * sideright)294 FMOD_RESULT getSpeakerMix (float *frontleft, float *frontright, float *center, float *lfe, float *backleft, float *backright, float *sideleft, float *sideright) { return FMOD_Channel_GetSpeakerMix(this, frontleft, frontright, center, lfe, backleft, backright, sideleft, sideright); } setSpeakerLevels(FMOD_SPEAKER speaker,float * levels,int numlevels)295 FMOD_RESULT setSpeakerLevels (FMOD_SPEAKER speaker, float *levels, int numlevels) { return FMOD_Channel_SetSpeakerLevels(this, speaker, levels, numlevels); } getSpeakerLevels(FMOD_SPEAKER speaker,float * levels,int numlevels)296 FMOD_RESULT getSpeakerLevels (FMOD_SPEAKER speaker, float *levels, int numlevels) { return FMOD_Channel_GetSpeakerLevels(this, speaker, levels, numlevels); } setInputChannelMix(float * levels,int numlevels)297 FMOD_RESULT setInputChannelMix (float *levels, int numlevels) { return FMOD_Channel_SetInputChannelMix(this, levels, numlevels); } getInputChannelMix(float * levels,int numlevels)298 FMOD_RESULT getInputChannelMix (float *levels, int numlevels) { return FMOD_Channel_GetInputChannelMix(this, levels, numlevels); } setMute(bool mute)299 FMOD_RESULT setMute (bool mute) { return FMOD_Channel_SetMute(this, mute); } getMute(bool * mute)300 FMOD_RESULT getMute (bool *mute) { FMOD_BOOL b; FMOD_RESULT res = FMOD_Channel_GetMute(this, &b); *mute = b; return res; } setPriority(int priority)301 FMOD_RESULT setPriority (int priority) { return FMOD_Channel_SetPriority(this, priority); } getPriority(int * priority)302 FMOD_RESULT getPriority (int *priority) { return FMOD_Channel_GetPriority(this, priority); } setPosition(unsigned int position,FMOD_TIMEUNIT postype)303 FMOD_RESULT setPosition (unsigned int position, FMOD_TIMEUNIT postype) { return FMOD_Channel_SetPosition(this, position, postype); } getPosition(unsigned int * position,FMOD_TIMEUNIT postype)304 FMOD_RESULT getPosition (unsigned int *position, FMOD_TIMEUNIT postype) { return FMOD_Channel_GetPosition(this, position, postype); } setReverbProperties(const FMOD_REVERB_CHANNELPROPERTIES * prop)305 FMOD_RESULT setReverbProperties (const FMOD_REVERB_CHANNELPROPERTIES *prop) { return FMOD_Channel_SetReverbProperties(this, prop); } getReverbProperties(FMOD_REVERB_CHANNELPROPERTIES * prop)306 FMOD_RESULT getReverbProperties (FMOD_REVERB_CHANNELPROPERTIES *prop) { return FMOD_Channel_GetReverbProperties(this, prop); } 307 setChannelGroup(ChannelGroup * channelgroup)308 FMOD_RESULT setChannelGroup (ChannelGroup *channelgroup) { return FMOD_Channel_SetChannelGroup(this, (FMOD_CHANNELGROUP *)channelgroup); } getChannelGroup(ChannelGroup ** channelgroup)309 FMOD_RESULT getChannelGroup (ChannelGroup **channelgroup) { return FMOD_Channel_GetChannelGroup(this, (FMOD_CHANNELGROUP **)channelgroup); } setCallback(FMOD_CHANNEL_CALLBACK callback)310 FMOD_RESULT setCallback (FMOD_CHANNEL_CALLBACK callback) { return FMOD_Channel_SetCallback(this, callback); } setLowPassGain(float gain)311 FMOD_RESULT setLowPassGain (float gain) { return FMOD_Channel_SetLowPassGain(this, gain); } getLowPassGain(float * gain)312 FMOD_RESULT getLowPassGain (float *gain) { return FMOD_Channel_GetLowPassGain(this, gain); } 313 314 // 3D functionality. set3DAttributes(const FMOD_VECTOR * pos,const FMOD_VECTOR * vel)315 FMOD_RESULT set3DAttributes (const FMOD_VECTOR *pos, const FMOD_VECTOR *vel) { return FMOD_Channel_Set3DAttributes(this, pos, vel); } get3DAttributes(FMOD_VECTOR * pos,FMOD_VECTOR * vel)316 FMOD_RESULT get3DAttributes (FMOD_VECTOR *pos, FMOD_VECTOR *vel) { return FMOD_Channel_Get3DAttributes(this, pos, vel); } set3DMinMaxDistance(float mindistance,float maxdistance)317 FMOD_RESULT set3DMinMaxDistance (float mindistance, float maxdistance) { return FMOD_Channel_Set3DMinMaxDistance(this, mindistance, maxdistance); } get3DMinMaxDistance(float * mindistance,float * maxdistance)318 FMOD_RESULT get3DMinMaxDistance (float *mindistance, float *maxdistance) { return FMOD_Channel_Get3DMinMaxDistance(this, mindistance, maxdistance); } set3DConeSettings(float insideconeangle,float outsideconeangle,float outsidevolume)319 FMOD_RESULT set3DConeSettings (float insideconeangle, float outsideconeangle, float outsidevolume) { return FMOD_Channel_Set3DConeSettings(this, insideconeangle, outsideconeangle, outsidevolume); } get3DConeSettings(float * insideconeangle,float * outsideconeangle,float * outsidevolume)320 FMOD_RESULT get3DConeSettings (float *insideconeangle, float *outsideconeangle, float *outsidevolume) { return FMOD_Channel_Get3DConeSettings(this, insideconeangle, outsideconeangle, outsidevolume); } set3DConeOrientation(FMOD_VECTOR * orientation)321 FMOD_RESULT set3DConeOrientation (FMOD_VECTOR *orientation) { return FMOD_Channel_Set3DConeOrientation(this, orientation); } get3DConeOrientation(FMOD_VECTOR * orientation)322 FMOD_RESULT get3DConeOrientation (FMOD_VECTOR *orientation) { return FMOD_Channel_Get3DConeOrientation(this, orientation); } set3DCustomRolloff(FMOD_VECTOR * points,int numpoints)323 FMOD_RESULT set3DCustomRolloff (FMOD_VECTOR *points, int numpoints) { return FMOD_Channel_Set3DCustomRolloff(this, points, numpoints); } get3DCustomRolloff(FMOD_VECTOR ** points,int * numpoints)324 FMOD_RESULT get3DCustomRolloff (FMOD_VECTOR **points, int *numpoints) { return FMOD_Channel_Get3DCustomRolloff(this, points, numpoints); } set3DOcclusion(float directocclusion,float reverbocclusion)325 FMOD_RESULT set3DOcclusion (float directocclusion, float reverbocclusion) { return FMOD_Channel_Set3DOcclusion(this, directocclusion, reverbocclusion); } get3DOcclusion(float * directocclusion,float * reverbocclusion)326 FMOD_RESULT get3DOcclusion (float *directocclusion, float *reverbocclusion) { return FMOD_Channel_Get3DOcclusion(this, directocclusion, reverbocclusion); } set3DSpread(float angle)327 FMOD_RESULT set3DSpread (float angle) { return FMOD_Channel_Set3DSpread(this, angle); } get3DSpread(float * angle)328 FMOD_RESULT get3DSpread (float *angle) { return FMOD_Channel_Get3DSpread(this, angle); } set3DPanLevel(float level)329 FMOD_RESULT set3DPanLevel (float level) { return FMOD_Channel_Set3DPanLevel(this, level); } get3DPanLevel(float * level)330 FMOD_RESULT get3DPanLevel (float *level) { return FMOD_Channel_Get3DPanLevel(this, level); } set3DDopplerLevel(float level)331 FMOD_RESULT set3DDopplerLevel (float level) { return FMOD_Channel_Set3DDopplerLevel(this, level); } get3DDopplerLevel(float * level)332 FMOD_RESULT get3DDopplerLevel (float *level) { return FMOD_Channel_Get3DDopplerLevel(this, level); } 333 334 // DSP functionality only for channels playing sounds created with FMOD_SOFTWARE. getDSPHead(DSP ** dsp)335 FMOD_RESULT getDSPHead (DSP **dsp) { return FMOD_Channel_GetDSPHead(this, (FMOD_DSP **)dsp); } addDSP(DSP * dsp,DSPConnection ** connection)336 FMOD_RESULT addDSP (DSP *dsp, DSPConnection **connection) { return FMOD_Channel_AddDSP(this, (FMOD_DSP *)dsp, (FMOD_DSPCONNECTION **)connection); } 337 338 // Information only functions. isPlaying(bool * isplaying)339 FMOD_RESULT isPlaying (bool *isplaying) { FMOD_BOOL b; FMOD_RESULT res = FMOD_Channel_IsPlaying(this, &b); *isplaying = b; return res; } isVirtual(bool * isvirtual)340 FMOD_RESULT isVirtual (bool *isvirtual) { FMOD_BOOL b; FMOD_RESULT res = FMOD_Channel_IsVirtual(this, &b); *isvirtual = b; return res; } getAudibility(float * audibility)341 FMOD_RESULT getAudibility (float *audibility) { return FMOD_Channel_GetAudibility(this, audibility); } getCurrentSound(Sound ** sound)342 FMOD_RESULT getCurrentSound (Sound **sound) { return FMOD_Channel_GetCurrentSound(this, (FMOD_SOUND **)sound); } getSpectrum(float * spectrumarray,int numvalues,int channeloffset,FMOD_DSP_FFT_WINDOW windowtype)343 FMOD_RESULT getSpectrum (float *spectrumarray, int numvalues, int channeloffset, FMOD_DSP_FFT_WINDOW windowtype) { return FMOD_Channel_GetSpectrum(this, spectrumarray, numvalues, channeloffset, windowtype); } getWaveData(float * wavearray,int numvalues,int channeloffset)344 FMOD_RESULT getWaveData (float *wavearray, int numvalues, int channeloffset) { return FMOD_Channel_GetWaveData(this, wavearray, numvalues, channeloffset); } getIndex(int * index)345 FMOD_RESULT getIndex (int *index) { return FMOD_Channel_GetIndex(this, index); } 346 347 // Functions also found in Sound class but here they can be set per channel. setMode(FMOD_MODE mode)348 FMOD_RESULT setMode (FMOD_MODE mode) { return FMOD_Channel_SetMode(this, mode); } getMode(FMOD_MODE * mode)349 FMOD_RESULT getMode (FMOD_MODE *mode) { return FMOD_Channel_GetMode(this, mode); } setLoopCount(int loopcount)350 FMOD_RESULT setLoopCount (int loopcount) { return FMOD_Channel_SetLoopCount(this, loopcount); } getLoopCount(int * loopcount)351 FMOD_RESULT getLoopCount (int *loopcount) { return FMOD_Channel_GetLoopCount(this, loopcount); } setLoopPoints(unsigned int loopstart,FMOD_TIMEUNIT loopstarttype,unsigned int loopend,FMOD_TIMEUNIT loopendtype)352 FMOD_RESULT setLoopPoints (unsigned int loopstart, FMOD_TIMEUNIT loopstarttype, unsigned int loopend, FMOD_TIMEUNIT loopendtype) { return FMOD_Channel_SetLoopPoints(this, loopstart, loopstarttype, loopend, loopendtype); } getLoopPoints(unsigned int * loopstart,FMOD_TIMEUNIT loopstarttype,unsigned int * loopend,FMOD_TIMEUNIT loopendtype)353 FMOD_RESULT getLoopPoints (unsigned int *loopstart, FMOD_TIMEUNIT loopstarttype, unsigned int *loopend, FMOD_TIMEUNIT loopendtype) { return FMOD_Channel_GetLoopPoints(this, loopstart, loopstarttype, loopend, loopendtype); } 354 355 // Userdata set/get. setUserData(void * userdata)356 FMOD_RESULT setUserData (void *userdata) { return FMOD_Channel_SetUserData(this, userdata); } getUserData(void ** userdata)357 FMOD_RESULT getUserData (void **userdata) { return FMOD_Channel_GetUserData(this, userdata); } 358 getMemoryInfo(unsigned int memorybits,unsigned int event_memorybits,unsigned int * memoryused,unsigned int * memoryused_array)359 FMOD_RESULT getMemoryInfo (unsigned int memorybits, unsigned int event_memorybits, unsigned int *memoryused, unsigned int *memoryused_array) { return FMOD_Channel_GetMemoryInfo(this, memorybits, event_memorybits, memoryused, memoryused_array); } 360 }; 361 362 /* 363 'ChannelGroup' API 364 */ 365 class ChannelGroup : FMOD_CHANNELGROUP 366 { 367 private: 368 369 ChannelGroup(); /* Constructor made private so user cannot statically instance a ChannelGroup class. 370 Appropriate ChannelGroup creation or retrieval function must be used. */ 371 public: 372 release()373 FMOD_RESULT release () { return FMOD_ChannelGroup_Release(this); } getSystemObject(System ** system)374 FMOD_RESULT getSystemObject (System **system) { return FMOD_ChannelGroup_GetSystemObject(this, (FMOD_SYSTEM **)system); } 375 376 // Channelgroup scale values. (changes attributes relative to the channels, doesn't overwrite them) setVolume(float volume)377 FMOD_RESULT setVolume (float volume) { return FMOD_ChannelGroup_SetVolume(this, volume); } getVolume(float * volume)378 FMOD_RESULT getVolume (float *volume) { return FMOD_ChannelGroup_GetVolume(this, volume); } setPitch(float pitch)379 FMOD_RESULT setPitch (float pitch) { return FMOD_ChannelGroup_SetPitch(this, pitch); } getPitch(float * pitch)380 FMOD_RESULT getPitch (float *pitch) { return FMOD_ChannelGroup_GetPitch(this, pitch); } set3DOcclusion(float directocclusion,float reverbocclusion)381 FMOD_RESULT set3DOcclusion (float directocclusion, float reverbocclusion) { return FMOD_ChannelGroup_Set3DOcclusion(this, directocclusion, reverbocclusion); } get3DOcclusion(float * directocclusion,float * reverbocclusion)382 FMOD_RESULT get3DOcclusion (float *directocclusion, float *reverbocclusion) { return FMOD_ChannelGroup_Get3DOcclusion(this, directocclusion, reverbocclusion); } setPaused(bool paused)383 FMOD_RESULT setPaused (bool paused) { return FMOD_ChannelGroup_SetPaused(this, paused); } getPaused(bool * paused)384 FMOD_RESULT getPaused (bool *paused) { FMOD_BOOL b; FMOD_RESULT res = FMOD_ChannelGroup_GetPaused(this, &b); *paused = b; return res; } setMute(bool mute)385 FMOD_RESULT setMute (bool mute) { return FMOD_ChannelGroup_SetMute(this, mute); } getMute(bool * mute)386 FMOD_RESULT getMute (bool *mute) { FMOD_BOOL b; FMOD_RESULT res = FMOD_ChannelGroup_GetMute(this, &b); *mute = b; return res; } 387 388 // Channelgroup override values. (recursively overwrites whatever settings the channels had) stop()389 FMOD_RESULT stop () { return FMOD_ChannelGroup_Stop(this); } overrideVolume(float volume)390 FMOD_RESULT overrideVolume (float volume) { return FMOD_ChannelGroup_OverrideVolume(this, volume); } overrideFrequency(float frequency)391 FMOD_RESULT overrideFrequency (float frequency) { return FMOD_ChannelGroup_OverrideFrequency(this, frequency); } overridePan(float pan)392 FMOD_RESULT overridePan (float pan) { return FMOD_ChannelGroup_OverridePan(this, pan); } overrideReverbProperties(const FMOD_REVERB_CHANNELPROPERTIES * prop)393 FMOD_RESULT overrideReverbProperties(const FMOD_REVERB_CHANNELPROPERTIES *prop) { return FMOD_ChannelGroup_OverrideReverbProperties(this, prop); } override3DAttributes(const FMOD_VECTOR * pos,const FMOD_VECTOR * vel)394 FMOD_RESULT override3DAttributes (const FMOD_VECTOR *pos, const FMOD_VECTOR *vel) { return FMOD_ChannelGroup_Override3DAttributes(this, pos, vel); } overrideSpeakerMix(float frontleft,float frontright,float center,float lfe,float backleft,float backright,float sideleft,float sideright)395 FMOD_RESULT overrideSpeakerMix (float frontleft, float frontright, float center, float lfe, float backleft, float backright, float sideleft, float sideright) { return FMOD_ChannelGroup_OverrideSpeakerMix(this, frontleft, frontright, center, lfe, backleft, backright, sideleft, sideright); } 396 397 // Nested channel groups. addGroup(ChannelGroup * group)398 FMOD_RESULT addGroup (ChannelGroup *group) { return FMOD_ChannelGroup_AddGroup(this, group); } getNumGroups(int * numgroups)399 FMOD_RESULT getNumGroups (int *numgroups) { return FMOD_ChannelGroup_GetNumGroups(this, numgroups); } getGroup(int index,ChannelGroup ** group)400 FMOD_RESULT getGroup (int index, ChannelGroup **group) { return FMOD_ChannelGroup_GetGroup(this, index, (FMOD_CHANNELGROUP **)group); } getParentGroup(ChannelGroup ** group)401 FMOD_RESULT getParentGroup (ChannelGroup **group) { return FMOD_ChannelGroup_GetParentGroup(this, (FMOD_CHANNELGROUP **)group); } 402 403 // DSP functionality only for channel groups playing sounds created with FMOD_SOFTWARE. getDSPHead(DSP ** dsp)404 FMOD_RESULT getDSPHead (DSP **dsp) { return FMOD_ChannelGroup_GetDSPHead(this, (FMOD_DSP **)dsp); } addDSP(DSP * dsp,DSPConnection ** connection)405 FMOD_RESULT addDSP (DSP *dsp, DSPConnection **connection) { return FMOD_ChannelGroup_AddDSP(this, (FMOD_DSP *)dsp, (FMOD_DSPCONNECTION **)connection); } 406 407 // Information only functions. getName(char * name,int namelen)408 FMOD_RESULT getName (char *name, int namelen) { return FMOD_ChannelGroup_GetName(this, name, namelen); } getNumChannels(int * numchannels)409 FMOD_RESULT getNumChannels (int *numchannels) { return FMOD_ChannelGroup_GetNumChannels(this, numchannels); } getChannel(int index,Channel ** channel)410 FMOD_RESULT getChannel (int index, Channel **channel) { return FMOD_ChannelGroup_GetChannel(this, index, (FMOD_CHANNEL **)channel); } getSpectrum(float * spectrumarray,int numvalues,int channeloffset,FMOD_DSP_FFT_WINDOW windowtype)411 FMOD_RESULT getSpectrum (float *spectrumarray, int numvalues, int channeloffset, FMOD_DSP_FFT_WINDOW windowtype) { return FMOD_ChannelGroup_GetSpectrum(this, spectrumarray, numvalues, channeloffset, windowtype); } getWaveData(float * wavearray,int numvalues,int channeloffset)412 FMOD_RESULT getWaveData (float *wavearray, int numvalues, int channeloffset) { return FMOD_ChannelGroup_GetWaveData(this, wavearray, numvalues, channeloffset) ;} 413 414 // Userdata set/get. setUserData(void * userdata)415 FMOD_RESULT setUserData (void *userdata) { return FMOD_ChannelGroup_SetUserData(this, userdata); } getUserData(void ** userdata)416 FMOD_RESULT getUserData (void **userdata) { return FMOD_ChannelGroup_GetUserData(this, userdata); } 417 getMemoryInfo(unsigned int memorybits,unsigned int event_memorybits,unsigned int * memoryused,unsigned int * memoryused_array)418 FMOD_RESULT getMemoryInfo (unsigned int memorybits, unsigned int event_memorybits, unsigned int *memoryused, unsigned int *memoryused_array) { return FMOD_ChannelGroup_GetMemoryInfo(this, memorybits, event_memorybits, memoryused, memoryused_array); } 419 }; 420 421 /* 422 'SoundGroup' API 423 */ 424 class SoundGroup : FMOD_SOUNDGROUP 425 { 426 private: 427 428 SoundGroup(); /* Constructor made private so user cannot statically instance a SoundGroup class. 429 Appropriate SoundGroup creation or retrieval function must be used. */ 430 public: 431 release()432 FMOD_RESULT release () { return FMOD_SoundGroup_Release(this); } getSystemObject(System ** system)433 FMOD_RESULT getSystemObject (System **system) { return FMOD_SoundGroup_GetSystemObject(this, (FMOD_SYSTEM **)system); } 434 435 // SoundGroup control functions. setMaxAudible(int maxaudible)436 FMOD_RESULT setMaxAudible (int maxaudible) { return FMOD_SoundGroup_SetMaxAudible(this, maxaudible); } getMaxAudible(int * maxaudible)437 FMOD_RESULT getMaxAudible (int *maxaudible) { return FMOD_SoundGroup_GetMaxAudible(this, maxaudible); } setMaxAudibleBehavior(FMOD_SOUNDGROUP_BEHAVIOR behavior)438 FMOD_RESULT setMaxAudibleBehavior (FMOD_SOUNDGROUP_BEHAVIOR behavior) { return FMOD_SoundGroup_SetMaxAudibleBehavior(this, behavior); } getMaxAudibleBehavior(FMOD_SOUNDGROUP_BEHAVIOR * behavior)439 FMOD_RESULT getMaxAudibleBehavior (FMOD_SOUNDGROUP_BEHAVIOR *behavior) { return FMOD_SoundGroup_GetMaxAudibleBehavior(this, behavior); } setMuteFadeSpeed(float speed)440 FMOD_RESULT setMuteFadeSpeed (float speed) { return FMOD_SoundGroup_SetMuteFadeSpeed(this, speed); } getMuteFadeSpeed(float * speed)441 FMOD_RESULT getMuteFadeSpeed (float *speed) { return FMOD_SoundGroup_GetMuteFadeSpeed(this, speed); } setVolume(float volume)442 FMOD_RESULT setVolume (float volume) { return FMOD_SoundGroup_SetVolume(this, volume); } getVolume(float * volume)443 FMOD_RESULT getVolume (float *volume) { return FMOD_SoundGroup_GetVolume(this, volume); } stop()444 FMOD_RESULT stop () { return FMOD_SoundGroup_Stop(this); } 445 446 // Information only functions. getName(char * name,int namelen)447 FMOD_RESULT getName (char *name, int namelen) { return FMOD_SoundGroup_GetName(this, name, namelen); } getNumSounds(int * numsounds)448 FMOD_RESULT getNumSounds (int *numsounds) { return FMOD_SoundGroup_GetNumSounds(this, numsounds); } getSound(int index,Sound ** sound)449 FMOD_RESULT getSound (int index, Sound **sound) { return FMOD_SoundGroup_GetSound(this, index, (FMOD_SOUND **)sound); } getNumPlaying(int * numplaying)450 FMOD_RESULT getNumPlaying (int *numplaying) { return FMOD_SoundGroup_GetNumPlaying(this, numplaying); } 451 452 // Userdata set/get. setUserData(void * userdata)453 FMOD_RESULT setUserData (void *userdata) { return FMOD_SoundGroup_SetUserData(this, userdata); } getUserData(void ** userdata)454 FMOD_RESULT getUserData (void **userdata) { return FMOD_SoundGroup_GetUserData(this, userdata); } 455 getMemoryInfo(unsigned int memorybits,unsigned int event_memorybits,unsigned int * memoryused,unsigned int * memoryused_array)456 FMOD_RESULT getMemoryInfo (unsigned int memorybits, unsigned int event_memorybits, unsigned int *memoryused, unsigned int *memoryused_array) { return FMOD_SoundGroup_GetMemoryInfo(this, memorybits, event_memorybits, memoryused, memoryused_array); } 457 }; 458 459 /* 460 'DSP' API 461 */ 462 class DSP : FMOD_DSP 463 { 464 private: 465 466 DSP(); /* Constructor made private so user cannot statically instance a DSP class. 467 Appropriate DSP creation or retrieval function must be used. */ 468 public: 469 release()470 FMOD_RESULT release () { return FMOD_DSP_Release(this); } getSystemObject(System ** system)471 FMOD_RESULT getSystemObject (System **system) { return FMOD_DSP_GetSystemObject(this, (FMOD_SYSTEM **)system); } 472 473 // Connection / disconnection / input and output enumeration. addInput(DSP * target,DSPConnection ** connection)474 FMOD_RESULT addInput (DSP *target, DSPConnection **connection) { return FMOD_DSP_AddInput(this, target, (FMOD_DSPCONNECTION **)connection); } disconnectFrom(DSP * target)475 FMOD_RESULT disconnectFrom (DSP *target) { return FMOD_DSP_DisconnectFrom(this, target); } disconnectAll(bool inputs,bool outputs)476 FMOD_RESULT disconnectAll (bool inputs, bool outputs) { return FMOD_DSP_DisconnectAll(this, inputs, outputs); } remove()477 FMOD_RESULT remove () { return FMOD_DSP_Remove(this); } getNumInputs(int * numinputs)478 FMOD_RESULT getNumInputs (int *numinputs) { return FMOD_DSP_GetNumInputs(this, numinputs); } getNumOutputs(int * numoutputs)479 FMOD_RESULT getNumOutputs (int *numoutputs) { return FMOD_DSP_GetNumOutputs(this, numoutputs); } getInput(int index,DSP ** input,DSPConnection ** inputconnection)480 FMOD_RESULT getInput (int index, DSP **input, DSPConnection **inputconnection) { return FMOD_DSP_GetInput(this, index, (FMOD_DSP **)input, (FMOD_DSPCONNECTION **)inputconnection); } getOutput(int index,DSP ** output,DSPConnection ** outputconnection)481 FMOD_RESULT getOutput (int index, DSP **output, DSPConnection **outputconnection) { return FMOD_DSP_GetOutput(this, index, (FMOD_DSP **)output, (FMOD_DSPCONNECTION **)outputconnection); } 482 483 // DSP unit control. setActive(bool active)484 FMOD_RESULT setActive (bool active) { return FMOD_DSP_SetActive(this, active); } getActive(bool * active)485 FMOD_RESULT getActive (bool *active) { FMOD_BOOL b; FMOD_RESULT res = FMOD_DSP_GetActive(this, &b); *active = b; return res; } setBypass(bool bypass)486 FMOD_RESULT setBypass (bool bypass) { return FMOD_DSP_SetBypass(this, bypass); } getBypass(bool * bypass)487 FMOD_RESULT getBypass (bool *bypass) { FMOD_BOOL b; FMOD_RESULT res = FMOD_DSP_GetBypass(this, &b); *bypass = b; return res; } setSpeakerActive(FMOD_SPEAKER speaker,bool active)488 FMOD_RESULT setSpeakerActive (FMOD_SPEAKER speaker, bool active) { return FMOD_DSP_SetSpeakerActive(this, speaker, active); } getSpeakerActive(FMOD_SPEAKER speaker,bool * active)489 FMOD_RESULT getSpeakerActive (FMOD_SPEAKER speaker, bool *active) { FMOD_BOOL b; FMOD_RESULT res = FMOD_DSP_GetSpeakerActive(this, speaker, &b); *active = b; return res; } reset()490 FMOD_RESULT reset () { return FMOD_DSP_Reset(this); } 491 492 // DSP parameter control. setParameter(int index,float value)493 FMOD_RESULT setParameter (int index, float value) { return FMOD_DSP_SetParameter(this, index, value); } getParameter(int index,float * value,char * valuestr,int valuestrlen)494 FMOD_RESULT getParameter (int index, float *value, char *valuestr, int valuestrlen) { return FMOD_DSP_GetParameter(this, index, value, valuestr, valuestrlen); } getNumParameters(int * numparams)495 FMOD_RESULT getNumParameters (int *numparams) { return FMOD_DSP_GetNumParameters(this, numparams); } getParameterInfo(int index,char * name,char * label,char * description,int descriptionlen,float * min,float * max)496 FMOD_RESULT getParameterInfo (int index, char *name, char *label, char *description, int descriptionlen, float *min, float *max) { return FMOD_DSP_GetParameterInfo(this, index, name, label, description, descriptionlen, min, max); } showConfigDialog(void * hwnd,bool show)497 FMOD_RESULT showConfigDialog (void *hwnd, bool show) { return FMOD_DSP_ShowConfigDialog(this, hwnd, show); } 498 499 // DSP attributes. getInfo(char * name,unsigned int * version,int * channels,int * configwidth,int * configheight)500 FMOD_RESULT getInfo (char *name, unsigned int *version, int *channels, int *configwidth, int *configheight) { return FMOD_DSP_GetInfo(this, name, version, channels, configwidth, configheight); } getType(FMOD_DSP_TYPE * type)501 FMOD_RESULT getType (FMOD_DSP_TYPE *type) { return FMOD_DSP_GetType(this, type); } setDefaults(float frequency,float volume,float pan,int priority)502 FMOD_RESULT setDefaults (float frequency, float volume, float pan, int priority) { return FMOD_DSP_SetDefaults(this, frequency, volume, pan, priority); } getDefaults(float * frequency,float * volume,float * pan,int * priority)503 FMOD_RESULT getDefaults (float *frequency, float *volume, float *pan, int *priority) { return FMOD_DSP_GetDefaults(this, frequency, volume, pan, priority) ;} 504 505 // Userdata set/get. setUserData(void * userdata)506 FMOD_RESULT setUserData (void *userdata) { return FMOD_DSP_SetUserData(this, userdata); } getUserData(void ** userdata)507 FMOD_RESULT getUserData (void **userdata) { return FMOD_DSP_GetUserData(this, userdata); } 508 getMemoryInfo(unsigned int memorybits,unsigned int event_memorybits,unsigned int * memoryused,unsigned int * memoryused_array)509 FMOD_RESULT getMemoryInfo (unsigned int memorybits, unsigned int event_memorybits, unsigned int *memoryused, unsigned int *memoryused_array) { return FMOD_DSP_GetMemoryInfo(this, memorybits, event_memorybits, memoryused, memoryused_array); } 510 }; 511 512 513 /* 514 'DSPConnection' API 515 */ 516 class DSPConnection : FMOD_DSPCONNECTION 517 { 518 private: 519 520 DSPConnection(); /* Constructor made private so user cannot statically instance a DSPConnection class. 521 Appropriate DSPConnection creation or retrieval function must be used. */ 522 523 public: 524 getInput(DSP ** input)525 FMOD_RESULT getInput (DSP **input) { return FMOD_DSPConnection_GetInput(this, (FMOD_DSP **)input); } getOutput(DSP ** output)526 FMOD_RESULT getOutput (DSP **output) { return FMOD_DSPConnection_GetOutput(this, (FMOD_DSP **)output); } setMix(float volume)527 FMOD_RESULT setMix (float volume) { return FMOD_DSPConnection_SetMix(this, volume); } getMix(float * volume)528 FMOD_RESULT getMix (float *volume) { return FMOD_DSPConnection_GetMix(this, volume); } setLevels(FMOD_SPEAKER speaker,float * levels,int numlevels)529 FMOD_RESULT setLevels (FMOD_SPEAKER speaker, float *levels, int numlevels) { return FMOD_DSPConnection_SetLevels(this, speaker, levels, numlevels); } getLevels(FMOD_SPEAKER speaker,float * levels,int numlevels)530 FMOD_RESULT getLevels (FMOD_SPEAKER speaker, float *levels, int numlevels) { return FMOD_DSPConnection_GetLevels(this, speaker, levels, numlevels); } 531 532 // Userdata set/get. setUserData(void * userdata)533 FMOD_RESULT setUserData (void *userdata) { return FMOD_DSPConnection_SetUserData(this, userdata); } getUserData(void ** userdata)534 FMOD_RESULT getUserData (void **userdata) { return FMOD_DSPConnection_GetUserData(this, userdata); } 535 getMemoryInfo(unsigned int memorybits,unsigned int event_memorybits,unsigned int * memoryused,unsigned int * memoryused_array)536 FMOD_RESULT getMemoryInfo (unsigned int memorybits, unsigned int event_memorybits, unsigned int *memoryused, unsigned int *memoryused_array) { return FMOD_DSPConnection_GetMemoryInfo(this, memorybits, event_memorybits, memoryused, memoryused_array); } 537 }; 538 539 540 /* 541 'Geometry' API 542 */ 543 class Geometry : FMOD_GEOMETRY 544 { 545 private: 546 547 Geometry(); /* Constructor made private so user cannot statically instance a Geometry class. 548 Appropriate Geometry creation or retrieval function must be used. */ 549 550 public: 551 release()552 FMOD_RESULT release () { return FMOD_Geometry_Release(this); } 553 554 // Polygon manipulation. addPolygon(float directocclusion,float reverbocclusion,bool doublesided,int numvertices,const FMOD_VECTOR * vertices,int * polygonindex)555 FMOD_RESULT addPolygon (float directocclusion, float reverbocclusion, bool doublesided, int numvertices, const FMOD_VECTOR *vertices, int *polygonindex) { return FMOD_Geometry_AddPolygon(this, directocclusion, reverbocclusion, doublesided, numvertices, vertices, polygonindex); } getNumPolygons(int * numpolygons)556 FMOD_RESULT getNumPolygons (int *numpolygons) { return FMOD_Geometry_GetNumPolygons(this, numpolygons); } getMaxPolygons(int * maxpolygons,int * maxvertices)557 FMOD_RESULT getMaxPolygons (int *maxpolygons, int *maxvertices) { return FMOD_Geometry_GetMaxPolygons(this, maxpolygons, maxvertices); } getPolygonNumVertices(int index,int * numvertices)558 FMOD_RESULT getPolygonNumVertices (int index, int *numvertices) { return FMOD_Geometry_GetPolygonNumVertices(this, index, numvertices); } setPolygonVertex(int index,int vertexindex,const FMOD_VECTOR * vertex)559 FMOD_RESULT setPolygonVertex (int index, int vertexindex, const FMOD_VECTOR *vertex) { return FMOD_Geometry_SetPolygonVertex(this, index, vertexindex, vertex); } getPolygonVertex(int index,int vertexindex,FMOD_VECTOR * vertex)560 FMOD_RESULT getPolygonVertex (int index, int vertexindex, FMOD_VECTOR *vertex) { return FMOD_Geometry_GetPolygonVertex(this, index, vertexindex, vertex); } setPolygonAttributes(int index,float directocclusion,float reverbocclusion,bool doublesided)561 FMOD_RESULT setPolygonAttributes (int index, float directocclusion, float reverbocclusion, bool doublesided) { return FMOD_Geometry_SetPolygonAttributes(this, index, directocclusion, reverbocclusion, doublesided); } getPolygonAttributes(int index,float * directocclusion,float * reverbocclusion,bool * doublesided)562 FMOD_RESULT getPolygonAttributes (int index, float *directocclusion, float *reverbocclusion, bool *doublesided) { FMOD_BOOL b; FMOD_RESULT res = FMOD_Geometry_GetPolygonAttributes(this, index, directocclusion, reverbocclusion, &b); *doublesided = b; return res; } 563 564 // Object manipulation. setActive(bool active)565 FMOD_RESULT setActive (bool active) { return FMOD_Geometry_SetActive(this, active); } getActive(bool * active)566 FMOD_RESULT getActive (bool *active) { FMOD_BOOL b; FMOD_RESULT res = FMOD_Geometry_GetActive(this, &b); *active = b; return res; } setRotation(const FMOD_VECTOR * forward,const FMOD_VECTOR * up)567 FMOD_RESULT setRotation (const FMOD_VECTOR *forward, const FMOD_VECTOR *up) { return FMOD_Geometry_SetRotation(this, forward, up); } getRotation(FMOD_VECTOR * forward,FMOD_VECTOR * up)568 FMOD_RESULT getRotation (FMOD_VECTOR *forward, FMOD_VECTOR *up) { return FMOD_Geometry_GetRotation(this, forward, up); } setPosition(const FMOD_VECTOR * position)569 FMOD_RESULT setPosition (const FMOD_VECTOR *position) { return FMOD_Geometry_SetPosition(this, position); } getPosition(FMOD_VECTOR * position)570 FMOD_RESULT getPosition (FMOD_VECTOR *position) { return FMOD_Geometry_GetPosition(this, position); } setScale(const FMOD_VECTOR * scale)571 FMOD_RESULT setScale (const FMOD_VECTOR *scale) { return FMOD_Geometry_SetScale(this, scale); } getScale(FMOD_VECTOR * scale)572 FMOD_RESULT getScale (FMOD_VECTOR *scale) { return FMOD_Geometry_GetScale(this, scale); } save(void * data,int * datasize)573 FMOD_RESULT save (void *data, int *datasize) { return FMOD_Geometry_Save(this, data, datasize); } 574 575 // Userdata set/get. setUserData(void * userdata)576 FMOD_RESULT setUserData (void *userdata) { return FMOD_Geometry_SetUserData(this, userdata); } getUserData(void ** userdata)577