mirror of
https://git.do.srb2.org/KartKrew/Kart-Public.git
synced 2024-11-17 18:21:40 +00:00
107 lines
3.2 KiB
C
107 lines
3.2 KiB
C
|
// Emacs style mode select -*- C++ -*-
|
||
|
//-----------------------------------------------------------------------------
|
||
|
//
|
||
|
// Copyright (C) 2001 by DooM Legacy Team.
|
||
|
//
|
||
|
// This program is free software; you can redistribute it and/or
|
||
|
// modify it under the terms of the GNU General Public License
|
||
|
// as published by the Free Software Foundation; either version 2
|
||
|
// of the License, or (at your option) any later version.
|
||
|
//
|
||
|
// This program is distributed in the hope that it will be useful,
|
||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
|
// GNU General Public License for more details.
|
||
|
//
|
||
|
//-----------------------------------------------------------------------------
|
||
|
/// \file
|
||
|
/// \brief High-level functions of hardware 3D sound
|
||
|
|
||
|
#ifndef __HW3_SOUND_H__
|
||
|
#define __HW3_SOUND_H__
|
||
|
|
||
|
#ifdef HW3SOUND
|
||
|
#include "hws_data.h"
|
||
|
//#include "../s_sound.h"
|
||
|
//#include "../p_mobj.h"
|
||
|
|
||
|
// Default sound mode (original stereo mode)
|
||
|
enum
|
||
|
{
|
||
|
HWS_DEFAULT_MODE = 0,
|
||
|
HWS_DS3D,
|
||
|
HWS_OTHER,
|
||
|
HWS_FMOD3D,
|
||
|
HWS_OPENAL,
|
||
|
};
|
||
|
|
||
|
typedef enum
|
||
|
{
|
||
|
CT_NORMAL = 0,
|
||
|
CT_ATTACK,
|
||
|
CT_SCREAM,
|
||
|
CT_AMBIENT,
|
||
|
} channel_type_t;
|
||
|
|
||
|
extern INT32 hws_mode; // Current sound mode
|
||
|
|
||
|
#if defined (HW3DS) || defined (DOXYGEN)
|
||
|
INT32 HW3S_Init(I_Error_t FatalErrorFunction, snddev_t *snd_dev);
|
||
|
#endif
|
||
|
void HW3S_Shutdown(void);
|
||
|
INT32 HW3S_GetVersion(void);
|
||
|
|
||
|
// Common case - start 3D or 2D source
|
||
|
void HW3S_StartSound(const void *origin, sfxenum_t sfx_id);
|
||
|
|
||
|
// Special cases of 3D sources
|
||
|
void S_StartAmbientSound(sfxenum_t sfx_id, INT32 volume);
|
||
|
void S_StartAttackSound(const void *origin, sfxenum_t sfx_id);
|
||
|
void S_StartScreamSound(const void *origin, sfxenum_t sfx_id);
|
||
|
|
||
|
// Starts 3D sound with specified parameters
|
||
|
// origin - for object movement tracking. NULL are possible value (no movement tracking)
|
||
|
// source_parm - 3D source parameters (position etc.)
|
||
|
// cone_parm - 3D source cone parameters. NULL are possible value (default cone will be used)
|
||
|
// channel -
|
||
|
// sfx_id - sfx id
|
||
|
// vol - sound volume
|
||
|
// pitch - sound pitching value
|
||
|
// Returns: - sound id
|
||
|
INT32 HW3S_I_StartSound(const void *origin, source3D_data_t *source_parm, channel_type_t channel, sfxenum_t sfx_id, INT32 vol, INT32 pitch, INT32 sep);
|
||
|
void HW3S_StopSoundByID(void *origin, sfxenum_t sfx_id);
|
||
|
void HW3S_StopSoundByNum(sfxenum_t sfxnum);
|
||
|
void HW3S_StopSound(void *origin);
|
||
|
void HW3S_StopSounds(void);
|
||
|
|
||
|
void HW3S_BeginFrameUpdate(void);
|
||
|
void HW3S_EndFrameUpdate(void);
|
||
|
|
||
|
void HW3S_UpdateSources(void);
|
||
|
|
||
|
void HW3S_SetSfxVolume(INT32 volume);
|
||
|
|
||
|
// Utility functions
|
||
|
INT32 HW3S_SoundIsPlaying(INT32 handle);
|
||
|
void HW3S_SetSourcesNum(void);
|
||
|
|
||
|
INT32 HW3S_OriginPlaying(void *origin);
|
||
|
INT32 HW3S_IdPlaying(sfxenum_t id);
|
||
|
INT32 HW3S_SoundPlaying(void *origin, sfxenum_t id);
|
||
|
|
||
|
void *HW3S_GetSfx(sfxinfo_t *sfx);
|
||
|
void HW3S_FreeSfx(sfxinfo_t *sfx);
|
||
|
|
||
|
#else // HW3SOUND
|
||
|
|
||
|
//#define S_StartAmbientSound(i,v) S_StartSoundAtVolume(NULL, i, v)
|
||
|
#define S_StartAttackSound S_StartSound
|
||
|
#define S_StartScreamSound S_StartSound
|
||
|
|
||
|
#endif // HW3SOUND
|
||
|
|
||
|
INT32 S_AdjustSoundParams(const mobj_t *listener, const mobj_t *source,
|
||
|
INT32 *vol, INT32 *sep, INT32 *pitch, sfxinfo_t *sfxinfo);
|
||
|
|
||
|
#endif // __HW3_SOUND_H__
|