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;
640static 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");
_STLP_DECLSPEC complex< float > _STLP_CALL cos(const complex< float > &)
_STLP_DECLSPEC complex< float > _STLP_CALL sqrt(const complex< float > &)
valarray< _Tp > acos(const valarray< _Tp > &__x)
#define InterlockedIncrement
#define InterlockedDecrement
void secondarybuffer_destroy(IDirectSoundBufferImpl *This)
#define HeapFree(x, y, z)
#define DSBCAPS_MUTE3DATMAXDISTANCE
#define DS3D_DEFAULTCONEANGLE
struct IDirectSound3DBuffer * LPDIRECTSOUND3DBUFFER
#define DSERR_OUTOFMEMORY
struct IDirectSound3DListener * LPDIRECTSOUND3DLISTENER
#define DS3D_DEFAULTMINDISTANCE
#define DS3D_DEFAULTROLLOFFFACTOR
#define DS3DMODE_HEADRELATIVE
#define DSERR_INVALIDPARAM
#define IDirectSoundBuffer8_AddRef(p)
#define DS3D_DEFAULTCONEOUTSIDEVOLUME
struct IDirectSoundBuffer8 * LPDIRECTSOUNDBUFFER8
struct _DS3DBUFFER DS3DBUFFER
#define IDirectSound3DListener_AddRef(p)
#define DS3D_DEFAULTDOPPLERFACTOR
#define IDirectSoundBuffer_QueryInterface(p, a, b)
#define DS3D_DEFAULTMAXDISTANCE
struct _DS3DLISTENER DS3DLISTENER
#define DS3D_DEFAULTDISTANCEFACTOR
void DSOUND_MixToTemporary(const IDirectSoundBufferImpl *dsb, DWORD writepos, DWORD mixlen, BOOL inmixer) DECLSPEC_HIDDEN
void DSOUND_RecalcVolPan(PDSVOLUMEPAN volpan) DECLSPEC_HIDDEN
void DSOUND_RecalcFormat(IDirectSoundBufferImpl *dsb) DECLSPEC_HIDDEN
void primarybuffer_destroy(IDirectSoundBufferImpl *This) DECLSPEC_HIDDEN
GLint GLint GLint GLint GLint x
GLint GLint GLint GLint GLint GLint y
GLboolean GLboolean GLboolean b
GLboolean GLboolean GLboolean GLboolean a
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 IsEqualGUID(rguid1, rguid2)
static HRESULT WINAPI IDirectSound3DBufferImpl_SetAllParameters(LPDIRECTSOUND3DBUFFER iface, LPCDS3DBUFFER lpcDs3dBuffer, DWORD dwApply)
static HRESULT WINAPI IDirectSound3DBufferImpl_SetMaxDistance(LPDIRECTSOUND3DBUFFER iface, D3DVALUE fMaxDistance, DWORD dwApply)
static HRESULT WINAPI IDirectSound3DBufferImpl_GetMaxDistance(LPDIRECTSOUND3DBUFFER iface, LPD3DVALUE lpfMaxDistance)
static HRESULT WINAPI IDirectSound3DListenerImpl_SetAllParameters(LPDIRECTSOUND3DLISTENER iface, LPCDS3DLISTENER lpcDS3DL, DWORD dwApply)
static HRESULT WINAPI IDirectSound3DListenerImpl_SetDistanceFactor(LPDIRECTSOUND3DLISTENER iface, D3DVALUE fDistanceFactor, DWORD dwApply)
static HRESULT WINAPI IDirectSound3DListenerImpl_QueryInterface(LPDIRECTSOUND3DLISTENER iface, REFIID riid, LPVOID *ppobj)
static HRESULT WINAPI IDirectSound3DListenerImpl_SetDopplerFactor(LPDIRECTSOUND3DLISTENER iface, D3DVALUE fDopplerFactor, DWORD dwApply)
static D3DVALUE AngleBetweenVectorsDeg(const D3DVECTOR *a, const D3DVECTOR *b)
static ULONG WINAPI IDirectSound3DBufferImpl_AddRef(LPDIRECTSOUND3DBUFFER iface)
static HRESULT WINAPI IDirectSound3DListenerImpl_GetOrientation(LPDIRECTSOUND3DLISTENER iface, LPD3DVECTOR lpvOrientFront, LPD3DVECTOR lpvOrientTop)
static HRESULT WINAPI IDirectSound3DListenerImpl_GetPosition(LPDIRECTSOUND3DLISTENER iface, LPD3DVECTOR lpvPosition)
static HRESULT WINAPI IDirectSound3DBufferImpl_GetMinDistance(LPDIRECTSOUND3DBUFFER iface, LPD3DVALUE lpfMinDistance)
static HRESULT WINAPI IDirectSound3DListenerImpl_GetVelocity(LPDIRECTSOUND3DLISTENER iface, LPD3DVECTOR lpvVelocity)
static HRESULT WINAPI IDirectSound3DBufferImpl_GetMode(LPDIRECTSOUND3DBUFFER iface, LPDWORD lpdwMode)
static HRESULT WINAPI IDirectSound3DBufferImpl_QueryInterface(LPDIRECTSOUND3DBUFFER iface, REFIID riid, LPVOID *ppobj)
static HRESULT WINAPI IDirectSound3DListenerImpl_GetDistanceFactor(LPDIRECTSOUND3DLISTENER iface, LPD3DVALUE lpfDistanceFactor)
static HRESULT WINAPI IDirectSound3DBufferImpl_SetVelocity(LPDIRECTSOUND3DBUFFER iface, D3DVALUE x, D3DVALUE y, D3DVALUE z, DWORD dwApply)
static void DSOUND_ChangeListener(IDirectSound3DListenerImpl *ds3dl)
static D3DVALUE AngleBetweenVectorsRad(const D3DVECTOR *a, const D3DVECTOR *b)
static ULONG WINAPI IDirectSound3DListenerImpl_Release(LPDIRECTSOUND3DLISTENER iface)
static HRESULT WINAPI IDirectSound3DBufferImpl_SetConeOutsideVolume(LPDIRECTSOUND3DBUFFER iface, LONG lConeOutsideVolume, DWORD dwApply)
static D3DVECTOR VectorBetweenTwoPoints(const D3DVECTOR *a, const D3DVECTOR *b)
static HRESULT WINAPI IDirectSound3DBufferImpl_SetMinDistance(LPDIRECTSOUND3DBUFFER iface, D3DVALUE fMinDistance, DWORD dwApply)
static D3DVECTOR VectorProduct(const D3DVECTOR *a, const D3DVECTOR *b)
static HRESULT WINAPI IDirectSound3DBufferImpl_GetConeOutsideVolume(LPDIRECTSOUND3DBUFFER iface, LPLONG lplConeOutsideVolume)
static HRESULT WINAPI IDirectSound3DBufferImpl_SetMode(LPDIRECTSOUND3DBUFFER iface, DWORD dwMode, DWORD dwApply)
static const IDirectSound3DListenerVtbl ds3dlvt
void DSOUND_Calc3DBuffer(IDirectSoundBufferImpl *dsb)
static HRESULT WINAPI IDirectSound3DListenerImpl_SetPosition(LPDIRECTSOUND3DLISTENER iface, D3DVALUE x, D3DVALUE y, D3DVALUE z, DWORD dwApply)
static HRESULT WINAPI IDirectSound3DListenerImpl_CommitDeferredSettings(LPDIRECTSOUND3DLISTENER iface)
static HRESULT WINAPI IDirectSound3DBufferImpl_SetConeAngles(LPDIRECTSOUND3DBUFFER iface, DWORD dwInsideConeAngle, DWORD dwOutsideConeAngle, DWORD dwApply)
static D3DVALUE RadToDeg(D3DVALUE angle)
static const IDirectSound3DBufferVtbl ds3dbvt
static HRESULT WINAPI IDirectSound3DBufferImpl_GetPosition(LPDIRECTSOUND3DBUFFER iface, LPD3DVECTOR lpvPosition)
static HRESULT WINAPI IDirectSound3DBufferImpl_GetConeOrientation(LPDIRECTSOUND3DBUFFER iface, LPD3DVECTOR lpvConeOrientation)
static D3DVALUE VectorMagnitude(const D3DVECTOR *a)
static HRESULT WINAPI IDirectSound3DListenerImpl_SetOrientation(LPDIRECTSOUND3DLISTENER iface, D3DVALUE xFront, D3DVALUE yFront, D3DVALUE zFront, D3DVALUE xTop, D3DVALUE yTop, D3DVALUE zTop, DWORD dwApply)
static D3DVALUE ScalarProduct(const D3DVECTOR *a, const D3DVECTOR *b)
static HRESULT WINAPI IDirectSound3DBufferImpl_GetAllParameters(LPDIRECTSOUND3DBUFFER iface, LPDS3DBUFFER lpDs3dBuffer)
static ULONG WINAPI IDirectSound3DListenerImpl_AddRef(LPDIRECTSOUND3DLISTENER iface)
static HRESULT WINAPI IDirectSound3DBufferImpl_GetConeAngles(LPDIRECTSOUND3DBUFFER iface, LPDWORD lpdwInsideConeAngle, LPDWORD lpdwOutsideConeAngle)
HRESULT IDirectSound3DBufferImpl_Destroy(IDirectSound3DBufferImpl *pds3db)
static HRESULT WINAPI IDirectSound3DListenerImpl_GetDopplerFactor(LPDIRECTSOUND3DLISTENER iface, LPD3DVALUE lpfDopplerFactor)
static HRESULT WINAPI IDirectSound3DListenerImpl_GetRolloffFactor(LPDIRECTSOUND3DLISTENER iface, LPD3DVALUE lpfRolloffFactor)
static HRESULT WINAPI IDirectSound3DBufferImpl_GetVelocity(LPDIRECTSOUND3DBUFFER iface, LPD3DVECTOR lpvVelocity)
static void DSOUND_Mix3DBuffer(IDirectSoundBufferImpl *dsb)
static HRESULT WINAPI IDirectSound3DListenerImpl_SetRolloffFactor(LPDIRECTSOUND3DLISTENER iface, D3DVALUE fRolloffFactor, DWORD dwApply)
static HRESULT WINAPI IDirectSound3DListenerImpl_GetAllParameter(LPDIRECTSOUND3DLISTENER iface, LPDS3DLISTENER lpDS3DL)
static HRESULT WINAPI IDirectSound3DBufferImpl_SetPosition(LPDIRECTSOUND3DBUFFER iface, D3DVALUE x, D3DVALUE y, D3DVALUE z, DWORD dwApply)
static HRESULT WINAPI IDirectSound3DListenerImpl_SetVelocity(LPDIRECTSOUND3DLISTENER iface, D3DVALUE x, D3DVALUE y, D3DVALUE z, DWORD dwApply)
static HRESULT WINAPI IDirectSound3DBufferImpl_SetConeOrientation(LPDIRECTSOUND3DBUFFER iface, D3DVALUE x, D3DVALUE y, D3DVALUE z, DWORD dwApply)
static D3DVALUE ProjectVector(const D3DVECTOR *a, const D3DVECTOR *p)
HRESULT IDirectSound3DBufferImpl_Create(IDirectSoundBufferImpl *dsb, IDirectSound3DBufferImpl **pds3db)
static ULONG WINAPI IDirectSound3DBufferImpl_Release(LPDIRECTSOUND3DBUFFER iface)
HRESULT IDirectSound3DListenerImpl_Create(DirectSoundDevice *device, IDirectSound3DListenerImpl **ppdsl)
IDirectSoundBufferImpl ** buffers
IDirectSoundBufferImpl * dsb
const IDirectSound3DBufferVtbl * lpVtbl
DirectSoundDevice * device
const IDirectSound3DListenerVtbl * lpVtbl
DirectSoundDevice * device
D3DVECTOR vConeOrientation
D3DVALUE flDistanceFactor