mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-07-14 08:04:40 +00:00
Engine directory for ticket #1
This commit is contained in:
parent
352279af7a
commit
7dbfe6994d
3795 changed files with 1363358 additions and 0 deletions
142
Engine/source/sfx/dsound/sfxDSDevice.h
Normal file
142
Engine/source/sfx/dsound/sfxDSDevice.h
Normal file
|
|
@ -0,0 +1,142 @@
|
|||
//-----------------------------------------------------------------------------
|
||||
// Copyright (c) 2012 GarageGames, LLC
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to
|
||||
// deal in the Software without restriction, including without limitation the
|
||||
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||
// sell copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in
|
||||
// all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
// IN THE SOFTWARE.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
#ifndef _SFXDSDEVICE_H_
|
||||
#define _SFXDSDEVICE_H_
|
||||
|
||||
#ifndef _STRINGFUNCTIONS_H_
|
||||
# include "core/strings/stringFunctions.h"
|
||||
#endif
|
||||
#ifndef _SFXDEVICE_H_
|
||||
#include "sfx/sfxDevice.h"
|
||||
#endif
|
||||
#ifndef _SFXDSVOICE_H_
|
||||
#include "sfx/dsound/sfxDSVoice.h"
|
||||
#endif
|
||||
#ifndef OS_DLIBRARY_H
|
||||
#include "platform/platformDlibrary.h"
|
||||
#endif
|
||||
|
||||
#include <dsound.h>
|
||||
|
||||
// Typedefs
|
||||
#define DS_FUNCTION(fn_name, fn_return, fn_args) \
|
||||
typedef fn_return (WINAPI *DSFNPTR##fn_name##)##fn_args##;
|
||||
#include "sfx/dsound/dsFunctions.h"
|
||||
#undef DS_FUNCTION
|
||||
|
||||
// Function table
|
||||
struct DSoundFNTable
|
||||
{
|
||||
DSoundFNTable() : isLoaded( false ) {};
|
||||
bool isLoaded;
|
||||
DLibraryRef dllRef;
|
||||
|
||||
#define DS_FUNCTION(fn_name, fn_return, fn_args) \
|
||||
DSFNPTR##fn_name fn_name;
|
||||
#include "sfx/dsound/dsFunctions.h"
|
||||
#undef DS_FUNCTION
|
||||
};
|
||||
|
||||
|
||||
/// Helper for asserting on dsound HRESULTS.
|
||||
inline void DSAssert( HRESULT hr, const char *info )
|
||||
{
|
||||
#ifdef TORQUE_DEBUG
|
||||
|
||||
if( FAILED( hr ) )
|
||||
{
|
||||
char buf[256];
|
||||
dSprintf( buf, 256, "Error code: %x\n%s", hr, info );
|
||||
AssertFatal( false, buf );
|
||||
}
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
/// The DirectSound device implementation exposes a couple
|
||||
/// of settings to script that you should be aware of:
|
||||
///
|
||||
/// $DirectSound::dopplerFactor - This controls the scale of
|
||||
/// the doppler effect. Valid factors are 0.0 to 10.0 and it
|
||||
/// defaults to 0.75.
|
||||
///
|
||||
/// $DirectSound::distanceFactor - This sets the unit conversion
|
||||
/// for
|
||||
///
|
||||
/// $DirectSound::rolloffFactor - ;
|
||||
///
|
||||
///
|
||||
class SFXDSDevice : public SFXDevice
|
||||
{
|
||||
typedef SFXDevice Parent;
|
||||
|
||||
friend class SFXDSVoice;
|
||||
friend class SFXDSProvider; // _init
|
||||
|
||||
public:
|
||||
|
||||
//explicit SFXDSDevice();
|
||||
|
||||
SFXDSDevice( SFXProvider* provider,
|
||||
DSoundFNTable *dsFnTbl,
|
||||
GUID* guid,
|
||||
String name,
|
||||
bool useHardware,
|
||||
S32 maxBuffers );
|
||||
|
||||
virtual ~SFXDSDevice();
|
||||
|
||||
protected:
|
||||
|
||||
IDirectSound8 *mDSound;
|
||||
|
||||
IDirectSound3DListener8 *mListener;
|
||||
|
||||
IDirectSoundBuffer *mPrimaryBuffer;
|
||||
|
||||
DSoundFNTable *mDSoundTbl;
|
||||
|
||||
DSCAPS mCaps;
|
||||
|
||||
GUID* mGUID;
|
||||
|
||||
bool _init();
|
||||
|
||||
/// Called from SFXDSVoice to commit any deferred
|
||||
/// settings before playback begins.
|
||||
void _commitDeferred();
|
||||
|
||||
public:
|
||||
|
||||
// SFXDevice
|
||||
virtual SFXBuffer* createBuffer( const ThreadSafeRef< SFXStream >& stream, SFXDescription* description );
|
||||
virtual SFXVoice* createVoice( bool is3D, SFXBuffer *buffer );
|
||||
virtual void update();
|
||||
virtual void setListener( U32 index, const SFXListenerProperties& listener );
|
||||
virtual void setDistanceModel( SFXDistanceModel mode );
|
||||
virtual void setDopplerFactor( F32 factor );
|
||||
virtual void setRolloffFactor( F32 factor );
|
||||
};
|
||||
|
||||
#endif // _SFXDSDEVICE_H_
|
||||
Loading…
Add table
Add a link
Reference in a new issue