43 #define DEFAULT_VELOCITY 340 53 c = (
a->x*
b->x) + (
a->y*
b->y) + (
a->z*
b->z);
54 TRACE(
"(%f,%f,%f) * (%f,%f,%f) = %f)\n",
a->x,
a->y,
a->z,
b->x,
b->y,
63 c.x = (
a->y*
b->z) - (
a->z*
b->y);
64 c.y = (
a->z*
b->x) - (
a->x*
b->z);
65 c.z = (
a->x*
b->y) - (
a->y*
b->x);
66 TRACE(
"(%f,%f,%f) x (%f,%f,%f) = (%f,%f,%f)\n",
a->x,
a->y,
a->z,
b->x,
b->y,
76 TRACE(
"|(%f,%f,%f)| = %f\n",
a->x,
a->y,
a->z,
l);
100 cos = product/(la*lb);
102 TRACE(
"angle between (%f,%f,%f) and (%f,%f,%f) = %f radians (%f degrees)\n",
a->x,
a->y,
a->z,
b->x,
119 TRACE(
"A (%f,%f,%f), B (%f,%f,%f), AB = (%f,%f,%f)\n",
a->x,
a->y,
a->z,
b->x,
b->y,
120 b->z,
c.x,
c.y,
c.z);
131 TRACE(
"length projection of (%f,%f,%f) on (%f,%f,%f) = %f\n",
a->x,
a->y,
a->z,
p->x,
153 D3DVALUE flFreq, flBufferVel, flListenerVel;
164 TRACE(
"3D processing disabled\n");
169 TRACE(
"Normal 3D processing mode\n");
175 TRACE(
"Head-relative 3D processing mode\n");
195 if (flDistance < dsb->ds3db_ds3db.flMinDistance)
206 TRACE(
"conning: cones not set\n");
218 if (dwOutsideConeAngle == dwInsideConeAngle)
219 ++dwOutsideConeAngle;
222 if (flAngle < dwInsideConeAngle)
223 flAngle = dwInsideConeAngle;
225 if (flAngle > dwOutsideConeAngle)
226 flAngle = dwOutsideConeAngle;
230 TRACE(
"conning: Angle = %f deg; InsideConeAngle(/2) = %d deg; OutsideConeAngle(/2) = %d deg; ConeOutsideVolume = %d => adjusting volume to %f\n",
250 TRACE(
"panning: Angle = %f rad, lPan = %d\n", flAngle, dsb->
volpan.
lPan);
257 TRACE(
"doppler: Buffer and Listener don't have velocities\n");
272 TRACE(
"doppler: Buffer velocity (component) = %lf, Listener velocity (component) = %lf => Doppler shift: %ld Hz -> %lf Hz\n", flBufferVel, flListenerVel,
295 TRACE(
"(%p)\n",ds3dl);
357 if (lpDs3dBuffer ==
NULL) {
358 WARN(
"invalid parameter: lpDs3dBuffer == NULL\n");
362 if (lpDs3dBuffer->
dwSize <
sizeof(*lpDs3dBuffer)) {
363 WARN(
"invalid parameter: lpDs3dBuffer->dwSize = %d\n",lpDs3dBuffer->
dwSize);
367 TRACE(
"returning: all parameters\n");
368 *lpDs3dBuffer =
This->dsb->ds3db_ds3db;
378 TRACE(
"returning: Inside Cone Angle = %d degrees; Outside Cone Angle = %d degrees\n",
379 This->dsb->ds3db_ds3db.dwInsideConeAngle,
This->dsb->ds3db_ds3db.dwOutsideConeAngle);
380 *lpdwInsideConeAngle =
This->dsb->ds3db_ds3db.dwInsideConeAngle;
381 *lpdwOutsideConeAngle =
This->dsb->ds3db_ds3db.dwOutsideConeAngle;
390 TRACE(
"returning: Cone Orientation vector = (%f,%f,%f)\n",
391 This->dsb->ds3db_ds3db.vConeOrientation.x,
392 This->dsb->ds3db_ds3db.vConeOrientation.y,
393 This->dsb->ds3db_ds3db.vConeOrientation.z);
394 *lpvConeOrientation =
This->dsb->ds3db_ds3db.vConeOrientation;
400 LPLONG lplConeOutsideVolume)
403 TRACE(
"returning: Cone Outside Volume = %d\n",
This->dsb->ds3db_ds3db.lConeOutsideVolume);
404 *lplConeOutsideVolume =
This->dsb->ds3db_ds3db.lConeOutsideVolume;
413 TRACE(
"returning: Max Distance = %f\n",
This->dsb->ds3db_ds3db.flMaxDistance);
414 *lpfMaxDistance =
This->dsb->ds3db_ds3db.flMaxDistance;
423 TRACE(
"returning: Min Distance = %f\n",
This->dsb->ds3db_ds3db.flMinDistance);
424 *lpfMinDistance =
This->dsb->ds3db_ds3db.flMinDistance;
433 TRACE(
"returning: Mode = %d\n",
This->dsb->ds3db_ds3db.dwMode);
434 *lpdwMode =
This->dsb->ds3db_ds3db.dwMode;
443 TRACE(
"returning: Position vector = (%f,%f,%f)\n",
444 This->dsb->ds3db_ds3db.vPosition.x,
445 This->dsb->ds3db_ds3db.vPosition.y,
446 This->dsb->ds3db_ds3db.vPosition.z);
447 *lpvPosition =
This->dsb->ds3db_ds3db.vPosition;
456 TRACE(
"returning: Velocity vector = (%f,%f,%f)\n",
457 This->dsb->ds3db_ds3db.vVelocity.x,
458 This->dsb->ds3db_ds3db.vVelocity.y,
459 This->dsb->ds3db_ds3db.vVelocity.z);
460 *lpvVelocity =
This->dsb->ds3db_ds3db.vVelocity;
471 TRACE(
"(%p,%p,%x)\n",iface,lpcDs3dBuffer,dwApply);
473 if (lpcDs3dBuffer ==
NULL) {
474 WARN(
"invalid parameter: lpcDs3dBuffer == NULL\n");
479 WARN(
"invalid parameter: lpcDs3dBuffer->dwSize = %d\n", lpcDs3dBuffer->
dwSize);
483 TRACE(
"setting: all parameters; dwApply = %d\n", dwApply);
484 This->dsb->ds3db_ds3db = *lpcDs3dBuffer;
490 This->dsb->ds3db_need_recalc =
TRUE;
498 DWORD dwInsideConeAngle,
499 DWORD dwOutsideConeAngle,
503 TRACE(
"setting: Inside Cone Angle = %d; Outside Cone Angle = %d; dwApply = %d\n",
504 dwInsideConeAngle, dwOutsideConeAngle, dwApply);
505 This->dsb->ds3db_ds3db.dwInsideConeAngle = dwInsideConeAngle;
506 This->dsb->ds3db_ds3db.dwOutsideConeAngle = dwOutsideConeAngle;
511 This->dsb->ds3db_need_recalc =
TRUE;
521 TRACE(
"setting: Cone Orientation vector = (%f,%f,%f); dwApply = %d\n",
x,
y,
z, dwApply);
522 This->dsb->ds3db_ds3db.vConeOrientation.x =
x;
523 This->dsb->ds3db_ds3db.vConeOrientation.y =
y;
524 This->dsb->ds3db_ds3db.vConeOrientation.z =
z;
530 This->dsb->ds3db_need_recalc =
TRUE;
536 LONG lConeOutsideVolume,
540 TRACE(
"setting: ConeOutsideVolume = %d; dwApply = %d\n", lConeOutsideVolume, dwApply);
541 This->dsb->ds3db_ds3db.lConeOutsideVolume = lConeOutsideVolume;
547 This->dsb->ds3db_need_recalc =
TRUE;
557 TRACE(
"setting: MaxDistance = %f; dwApply = %d\n", fMaxDistance, dwApply);
558 This->dsb->ds3db_ds3db.flMaxDistance = fMaxDistance;
564 This->dsb->ds3db_need_recalc =
TRUE;
574 TRACE(
"setting: MinDistance = %f; dwApply = %d\n", fMinDistance, dwApply);
575 This->dsb->ds3db_ds3db.flMinDistance = fMinDistance;
581 This->dsb->ds3db_need_recalc =
TRUE;
591 TRACE(
"setting: Mode = %d; dwApply = %d\n", dwMode, dwApply);
592 This->dsb->ds3db_ds3db.dwMode = dwMode;
598 This->dsb->ds3db_need_recalc =
TRUE;
608 TRACE(
"setting: Position vector = (%f,%f,%f); dwApply = %d\n",
x,
y,
z, dwApply);
609 This->dsb->ds3db_ds3db.vPosition.x =
x;
610 This->dsb->ds3db_ds3db.vPosition.y =
y;
611 This->dsb->ds3db_ds3db.vPosition.z =
z;
617 This->dsb->ds3db_need_recalc =
TRUE;
627 TRACE(
"setting: Velocity vector = (%f,%f,%f); dwApply = %d\n",
x,
y,
z, dwApply);
628 This->dsb->ds3db_ds3db.vVelocity.x =
x;
629 This->dsb->ds3db_ds3db.vVelocity.y =
y;
630 This->dsb->ds3db_ds3db.vVelocity.z =
z;
636 This->dsb->ds3db_need_recalc =
TRUE;
640 static const IDirectSound3DBufferVtbl
ds3dbvt =
672 TRACE(
"(%p,%p)\n",dsb,pds3db);
677 WARN(
"out of memory\n");
712 TRACE(
"(%p)\n",pds3db);
732 WARN(
"invalid parameter\n");
746 *ppobj = &
This->device->primary->IDirectSoundBuffer8_iface;
775 This->device->listener = 0;
792 if (lpDS3DL ==
NULL) {
793 WARN(
"invalid parameter: lpDS3DL == NULL\n");
797 if (lpDS3DL->
dwSize <
sizeof(*lpDS3DL)) {
798 WARN(
"invalid parameter: lpDS3DL->dwSize = %d\n",lpDS3DL->
dwSize);
802 TRACE(
"returning: all parameters\n");
803 *lpDS3DL =
This->device->ds3dl;
812 TRACE(
"returning: Distance Factor = %f\n",
This->device->ds3dl.flDistanceFactor);
813 *lpfDistanceFactor =
This->device->ds3dl.flDistanceFactor;
822 TRACE(
"returning: Doppler Factor = %f\n",
This->device->ds3dl.flDopplerFactor);
823 *lpfDopplerFactor =
This->device->ds3dl.flDopplerFactor;
833 TRACE(
"returning: OrientFront vector = (%f,%f,%f); OrientTop vector = (%f,%f,%f)\n",
This->device->ds3dl.vOrientFront.x,
834 This->device->ds3dl.vOrientFront.y,
This->device->ds3dl.vOrientFront.z,
This->device->ds3dl.vOrientTop.x,
This->device->ds3dl.vOrientTop.y,
835 This->device->ds3dl.vOrientTop.z);
836 *lpvOrientFront =
This->device->ds3dl.vOrientFront;
837 *lpvOrientTop =
This->device->ds3dl.vOrientTop;
846 TRACE(
"returning: Position vector = (%f,%f,%f)\n",
This->device->ds3dl.vPosition.x,
This->device->ds3dl.vPosition.y,
This->device->ds3dl.vPosition.z);
847 *lpvPosition =
This->device->ds3dl.vPosition;
856 TRACE(
"returning: RolloffFactor = %f\n",
This->device->ds3dl.flRolloffFactor);
857 *lpfRolloffFactor =
This->device->ds3dl.flRolloffFactor;
866 TRACE(
"returning: Velocity vector = (%f,%f,%f)\n",
This->device->ds3dl.vVelocity.x,
This->device->ds3dl.vVelocity.y,
This->device->ds3dl.vVelocity.z);
867 *lpvVelocity =
This->device->ds3dl.vVelocity;
877 TRACE(
"setting: all parameters; dwApply = %d\n", dwApply);
878 This->device->ds3dl = *lpcDS3DL;
884 This->device->ds3dl_need_recalc =
TRUE;
894 TRACE(
"setting: Distance Factor = %f; dwApply = %d\n", fDistanceFactor, dwApply);
895 This->device->ds3dl.flDistanceFactor = fDistanceFactor;
901 This->device->ds3dl_need_recalc =
TRUE;
911 TRACE(
"setting: Doppler Factor = %f; dwApply = %d\n", fDopplerFactor, dwApply);
912 This->device->ds3dl.flDopplerFactor = fDopplerFactor;
918 This->device->ds3dl_need_recalc =
TRUE;
929 TRACE(
"setting: Front vector = (%f,%f,%f); Top vector = (%f,%f,%f); dwApply = %d\n",
930 xFront, yFront, zFront, xTop, yTop, zTop, dwApply);
931 This->device->ds3dl.vOrientFront.x = xFront;
932 This->device->ds3dl.vOrientFront.y = yFront;
933 This->device->ds3dl.vOrientFront.z = zFront;
934 This->device->ds3dl.vOrientTop.x = xTop;
935 This->device->ds3dl.vOrientTop.y = yTop;
936 This->device->ds3dl.vOrientTop.z = zTop;
942 This->device->ds3dl_need_recalc =
TRUE;
952 TRACE(
"setting: Position vector = (%f,%f,%f); dwApply = %d\n",
x,
y,
z, dwApply);
953 This->device->ds3dl.vPosition.x =
x;
954 This->device->ds3dl.vPosition.y =
y;
955 This->device->ds3dl.vPosition.z =
z;
961 This->device->ds3dl_need_recalc =
TRUE;
971 TRACE(
"setting: Rolloff Factor = %f; dwApply = %d\n", fRolloffFactor, dwApply);
972 This->device->ds3dl.flRolloffFactor = fRolloffFactor;
978 This->device->ds3dl_need_recalc =
TRUE;
988 TRACE(
"setting: Velocity vector = (%f,%f,%f); dwApply = %d\n",
x,
y,
z, dwApply);
989 This->device->ds3dl.vVelocity.x =
x;
990 This->device->ds3dl.vVelocity.y =
y;
991 This->device->ds3dl.vVelocity.z =
z;
997 This->device->ds3dl_need_recalc =
TRUE;
1044 WARN(
"out of memory\n");
static HRESULT WINAPI IDirectSound3DListenerImpl_CommitDeferredSettings(LPDIRECTSOUND3DLISTENER iface)
static HRESULT WINAPI IDirectSound3DListenerImpl_GetAllParameter(LPDIRECTSOUND3DLISTENER iface, LPDS3DLISTENER lpDS3DL)
struct IDirectSoundBuffer8 * LPDIRECTSOUNDBUFFER8
_STLP_DECLSPEC complex< float > _STLP_CALL sqrt(const complex< float > &)
static HRESULT WINAPI IDirectSound3DBufferImpl_GetConeAngles(LPDIRECTSOUND3DBUFFER iface, LPDWORD lpdwInsideConeAngle, LPDWORD lpdwOutsideConeAngle)
static ULONG WINAPI IDirectSound3DBufferImpl_AddRef(LPDIRECTSOUND3DBUFFER iface)
IDirectSoundBufferImpl * dsb
struct _DS3DBUFFER DS3DBUFFER
static HRESULT WINAPI IDirectSound3DBufferImpl_SetMode(LPDIRECTSOUND3DBUFFER iface, DWORD dwMode, DWORD dwApply)
static HRESULT WINAPI IDirectSound3DBufferImpl_SetConeOutsideVolume(LPDIRECTSOUND3DBUFFER iface, LONG lConeOutsideVolume, DWORD dwApply)
static HRESULT WINAPI IDirectSound3DBufferImpl_GetConeOutsideVolume(LPDIRECTSOUND3DBUFFER iface, LPLONG lplConeOutsideVolume)
static HRESULT WINAPI IDirectSound3DBufferImpl_SetMaxDistance(LPDIRECTSOUND3DBUFFER iface, D3DVALUE fMaxDistance, DWORD dwApply)
static HRESULT WINAPI IDirectSound3DListenerImpl_GetDopplerFactor(LPDIRECTSOUND3DLISTENER iface, LPD3DVALUE lpfDopplerFactor)
static HRESULT WINAPI IDirectSound3DListenerImpl_SetDopplerFactor(LPDIRECTSOUND3DLISTENER iface, D3DVALUE fDopplerFactor, DWORD dwApply)
static HRESULT WINAPI IDirectSound3DListenerImpl_QueryInterface(LPDIRECTSOUND3DLISTENER iface, REFIID riid, LPVOID *ppobj)
static void DSOUND_Mix3DBuffer(IDirectSoundBufferImpl *dsb)
#define IDirectSoundBuffer8_AddRef(p)
#define DS3D_DEFAULTMINDISTANCE
GLint GLint GLint GLint GLint x
IDirectSoundBufferImpl ** buffers
const IDirectSound3DListenerVtbl * lpVtbl
static HRESULT WINAPI IDirectSound3DBufferImpl_GetMode(LPDIRECTSOUND3DBUFFER iface, LPDWORD lpdwMode)
static D3DVALUE ProjectVector(const D3DVECTOR *a, const D3DVECTOR *p)
static HRESULT WINAPI IDirectSound3DBufferImpl_GetMinDistance(LPDIRECTSOUND3DBUFFER iface, LPD3DVALUE lpfMinDistance)
HRESULT IDirectSound3DBufferImpl_Destroy(IDirectSound3DBufferImpl *pds3db)
static HRESULT WINAPI IDirectSound3DListenerImpl_SetAllParameters(LPDIRECTSOUND3DLISTENER iface, LPCDS3DLISTENER lpcDS3DL, DWORD dwApply)
static HRESULT WINAPI IDirectSound3DListenerImpl_SetDistanceFactor(LPDIRECTSOUND3DLISTENER iface, D3DVALUE fDistanceFactor, DWORD dwApply)
#define DS3D_DEFAULTDISTANCEFACTOR
const IDirectSound3DBufferVtbl * lpVtbl
static HRESULT WINAPI IDirectSound3DBufferImpl_SetVelocity(LPDIRECTSOUND3DBUFFER iface, D3DVALUE x, D3DVALUE y, D3DVALUE z, DWORD dwApply)
static D3DVALUE AngleBetweenVectorsDeg(const D3DVECTOR *a, const D3DVECTOR *b)
static HRESULT WINAPI IDirectSound3DBufferImpl_GetVelocity(LPDIRECTSOUND3DBUFFER iface, LPD3DVECTOR lpvVelocity)
#define DS3D_DEFAULTMAXDISTANCE
#define IDirectSound3DListener_AddRef(p)
valarray< _Tp > acos(const valarray< _Tp > &__x)
DirectSoundDevice * device
#define DSERR_OUTOFMEMORY
static HRESULT WINAPI IDirectSound3DBufferImpl_GetAllParameters(LPDIRECTSOUND3DBUFFER iface, LPDS3DBUFFER lpDs3dBuffer)
#define DSERR_INVALIDPARAM
#define IDirectSoundBuffer_QueryInterface(p, a, b)
static const IDirectSound3DBufferVtbl ds3dbvt
void DSOUND_RecalcFormat(IDirectSoundBufferImpl *dsb) DECLSPEC_HIDDEN
static HRESULT WINAPI IDirectSound3DBufferImpl_SetMinDistance(LPDIRECTSOUND3DBUFFER iface, D3DVALUE fMinDistance, DWORD dwApply)
D3DVALUE flDistanceFactor
static D3DVECTOR VectorProduct(const D3DVECTOR *a, const D3DVECTOR *b)
static HRESULT WINAPI IDirectSound3DBufferImpl_SetAllParameters(LPDIRECTSOUND3DBUFFER iface, LPCDS3DBUFFER lpcDs3dBuffer, DWORD dwApply)
_STLP_DECLSPEC complex< float > _STLP_CALL cos(const complex< float > &)
#define DS3D_DEFAULTROLLOFFFACTOR
struct _DS3DLISTENER DS3DLISTENER
static ULONG WINAPI IDirectSound3DListenerImpl_Release(LPDIRECTSOUND3DLISTENER iface)
D3DVECTOR vConeOrientation
static HRESULT WINAPI IDirectSound3DListenerImpl_SetVelocity(LPDIRECTSOUND3DLISTENER iface, D3DVALUE x, D3DVALUE y, D3DVALUE z, DWORD dwApply)
static HRESULT WINAPI IDirectSound3DListenerImpl_GetDistanceFactor(LPDIRECTSOUND3DLISTENER iface, LPD3DVALUE lpfDistanceFactor)
static ULONG WINAPI IDirectSound3DListenerImpl_AddRef(LPDIRECTSOUND3DLISTENER iface)
GLboolean GLboolean GLboolean b
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
static D3DVALUE ScalarProduct(const D3DVECTOR *a, const D3DVECTOR *b)
static HRESULT WINAPI IDirectSound3DListenerImpl_SetRolloffFactor(LPDIRECTSOUND3DLISTENER iface, D3DVALUE fRolloffFactor, DWORD dwApply)
static D3DVALUE RadToDeg(D3DVALUE angle)
_STLP_DECLSPEC complex< float > _STLP_CALL log10(const complex< float > &)
static HRESULT WINAPI IDirectSound3DBufferImpl_SetConeAngles(LPDIRECTSOUND3DBUFFER iface, DWORD dwInsideConeAngle, DWORD dwOutsideConeAngle, DWORD dwApply)
#define DS3DMODE_HEADRELATIVE
struct IDirectSound3DListener * LPDIRECTSOUND3DLISTENER
#define InterlockedDecrement
static HRESULT WINAPI IDirectSound3DBufferImpl_SetPosition(LPDIRECTSOUND3DBUFFER iface, D3DVALUE x, D3DVALUE y, D3DVALUE z, DWORD dwApply)
void DSOUND_MixToTemporary(const IDirectSoundBufferImpl *dsb, DWORD writepos, DWORD mixlen, BOOL inmixer) DECLSPEC_HIDDEN
#define DS3D_DEFAULTDOPPLERFACTOR
static void DSOUND_ChangeListener(IDirectSound3DListenerImpl *ds3dl)
DirectSoundDevice * device
HRESULT IDirectSound3DListenerImpl_Create(DirectSoundDevice *device, IDirectSound3DListenerImpl **ppdsl)
#define DS3D_DEFAULTCONEANGLE
static HRESULT WINAPI IDirectSound3DBufferImpl_GetConeOrientation(LPDIRECTSOUND3DBUFFER iface, LPD3DVECTOR lpvConeOrientation)
#define InterlockedIncrement
void secondarybuffer_destroy(IDirectSoundBufferImpl *This)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
#define DS3D_DEFAULTCONEOUTSIDEVOLUME
void primarybuffer_destroy(IDirectSoundBufferImpl *This) DECLSPEC_HIDDEN
struct IDirectSound3DBuffer * LPDIRECTSOUND3DBUFFER
BOOL WINAPI IsEqualGUID(REFGUID rguid1, REFGUID rguid2)
static D3DVECTOR VectorBetweenTwoPoints(const D3DVECTOR *a, const D3DVECTOR *b)
GLint GLint GLint GLint GLint GLint y
static HRESULT WINAPI IDirectSound3DListenerImpl_GetRolloffFactor(LPDIRECTSOUND3DLISTENER iface, LPD3DVALUE lpfRolloffFactor)
static HRESULT WINAPI IDirectSound3DListenerImpl_GetVelocity(LPDIRECTSOUND3DLISTENER iface, LPD3DVECTOR lpvVelocity)
static HRESULT WINAPI IDirectSound3DBufferImpl_QueryInterface(LPDIRECTSOUND3DBUFFER iface, REFIID riid, LPVOID *ppobj)
static HRESULT WINAPI IDirectSound3DBufferImpl_GetMaxDistance(LPDIRECTSOUND3DBUFFER iface, LPD3DVALUE lpfMaxDistance)
static HRESULT WINAPI IDirectSound3DListenerImpl_SetOrientation(LPDIRECTSOUND3DLISTENER iface, D3DVALUE xFront, D3DVALUE yFront, D3DVALUE zFront, D3DVALUE xTop, D3DVALUE yTop, D3DVALUE zTop, DWORD dwApply)
void DSOUND_Calc3DBuffer(IDirectSoundBufferImpl *dsb)
GLboolean GLboolean GLboolean GLboolean a
static ULONG WINAPI IDirectSound3DBufferImpl_Release(LPDIRECTSOUND3DBUFFER iface)
static const IDirectSound3DListenerVtbl ds3dlvt
#define DSBCAPS_MUTE3DATMAXDISTANCE
HRESULT IDirectSound3DBufferImpl_Create(IDirectSoundBufferImpl *dsb, IDirectSound3DBufferImpl **pds3db)
static SERVICE_STATUS status
#define HeapFree(x, y, z)
static HRESULT WINAPI IDirectSound3DListenerImpl_GetOrientation(LPDIRECTSOUND3DLISTENER iface, LPD3DVECTOR lpvOrientFront, LPD3DVECTOR lpvOrientTop)
static HRESULT WINAPI IDirectSound3DListenerImpl_GetPosition(LPDIRECTSOUND3DLISTENER iface, LPD3DVECTOR lpvPosition)
void DSOUND_RecalcVolPan(PDSVOLUMEPAN volpan) DECLSPEC_HIDDEN
static D3DVALUE VectorMagnitude(const D3DVECTOR *a)
static HRESULT WINAPI IDirectSound3DBufferImpl_GetPosition(LPDIRECTSOUND3DBUFFER iface, LPD3DVECTOR lpvPosition)
static HRESULT WINAPI IDirectSound3DBufferImpl_SetConeOrientation(LPDIRECTSOUND3DBUFFER iface, D3DVALUE x, D3DVALUE y, D3DVALUE z, DWORD dwApply)
static HRESULT WINAPI IDirectSound3DListenerImpl_SetPosition(LPDIRECTSOUND3DLISTENER iface, D3DVALUE x, D3DVALUE y, D3DVALUE z, DWORD dwApply)
static D3DVALUE AngleBetweenVectorsRad(const D3DVECTOR *a, const D3DVECTOR *b)