"L. Spiro Engine"

F:/My Projects/LSEngine/Modules/LSSoundLib/Src/SoundCore/LSSSoundManagerEx.h

00001 
00018 #ifndef __LSS_CORESOUNDMANAGER_H__
00019 #define __LSS_CORESOUNDMANAGER_H__
00020 
00021 #include "../LSSSoundLib.h"
00022 #include "../Ogg/LSSOggStreamingSoundSourceStreamer.h"
00023 #include "../SoundComponents/LSSStaticSoundSource2d.h"
00024 #include "../SoundComponents/LSSStaticSoundSource3d.h"
00025 #include "../SoundComponentsEx/LSSSoundBufferEx.h"
00026 #include "../Wave/LSSWaveStreamingSoundSourceStreamer.h"
00027 #include "LSSSoundManager.h"
00028 //#include "LSESfxData.h"
00029 #include "Search/LSSTDSearch.h"
00030 #include "Vector/LSMVector2.h"
00031 
00032 namespace lss {
00033 
00042         class CSoundManagerEx : public CSoundManager {
00043         public :
00044                 // == Various constructors.
00045                 LSE_CALLCTOR                                                                    CSoundManagerEx();
00046                 virtual LSE_CALLCTOR                                                    ~CSoundManagerEx();
00047 
00048 
00049                 // == Functions.
00057                 virtual LSVOID LSE_CALL                                                 SetAllocator( CAllocator * _paAllocator );
00058                 
00066                 LSUINT32 LSE_CALL                                                               CreateBuffer( const LSCHAR * _pcFile );
00067 
00074                 LSUINT32 LSE_CALL                                                               FindBufferByPath( const LSCHAR * _pwcPath ) const;
00075 
00084                 LSCHAR * LSE_CALL                                                               GetBufferPathById( LSUINT32 _ui32Id, LSCHAR * _pcRet ) const;
00085 
00103                 CStaticSoundSource3d * LSE_CALL                                 Create3dStaticSoundSourceAndLock( const CVector3 &_vPos,
00104                         LSREAL _fGain = LSM_ONE,
00105                         LSREAL _fMaxDistance = static_cast<LSREAL>(256.0),
00106                         const LSCHAR * _pcFile = NULL,
00107                         LSUINT32 _ui32Id = 0UL );
00108                 
00123                 CStaticSoundSource2d * LSE_CALL                                 Create2dStaticSoundSourceAndLock( const CVector2 &_vPos,
00124                         LSREAL _fGain = LSM_ONE,
00125                         const LSCHAR * _pcFile = NULL );
00126                 
00138                 /*LSUINT32 LSE_CALL                                                             Play3dSound( LSUINT32 _ui32SfxId,
00139                         const CVector3 &_vPos,
00140                         LSREAL _fGain = LSM_ONE,
00141                         LSREAL _fMaxDistance = static_cast<LSREAL>(256.0) );*/
00142 
00153                 /*LSUINT32 LSE_CALL                                                             Play2dSound( LSUINT32 _ui32SfxId,
00154                         const CVector2 &_vPos,
00155                         LSREAL _fGain = LSM_ONE );*/
00156 
00164                 //LSUINT32 LSE_CALL                                                             RegisterSfx( const LSE_SFX_DATA &_sdData );
00165 
00172                 //LSBOOL LSE_CALL                                                               UnRegisterSfx( LSUINT32 _ui32Id );
00173 
00180                 LSBOOL LSE_CALL                                                                 RegisterWaveForStream( const LSCHAR * _pcFile );
00181 
00188                 LSBOOL LSE_CALL                                                                 RegisterOggForStream( const LSCHAR * _pcFile );
00189 
00196                 LSBOOL LSE_CALL                                                                 RegisterSoundForStream( const LSCHAR * _pcFile );
00197 
00206                 CStreamingSoundSource * LSE_CALL                                Create2dStreamSoundSourceAndLock( const LSCHAR * _pcName, const CVector2 &_vPos, LSREAL _fGain = LSM_ONE );
00207 
00222                 LSUINT32 LSE_CALL                                                               Play2dStreamEx( const LSCHAR * _pcName,
00223                         const CVector2 &_vPos = CVector2( LSM_ZERO, LSM_ZERO ),
00224                         LSREAL _fGain = LSM_ONE,
00225                         LSUINT32 _ui32Loop = CSoundSource::LSS_LM_INFINITE,
00226                         LSBOOL _bOnlyPlayIfNotPlaying = true,
00227                         LSBOOL _bClearAllStreamsIfPlayed = true );
00228 
00236                 LSUINT32 LSE_CALL                                                               SoundIsStreaming( const LSCHAR * _pcName ) const;
00237 
00243                 LSVOID LSE_CALL                                                                 ClearAllStreamsExcept( LSUINT32 _ui32Id );
00244 
00248                 virtual LSVOID LSE_CALL                                                 ResetAllSounds();
00249 
00254                 virtual LSVOID LSE_CALL                                                 SoftReset();
00255 
00256         protected :
00257                 // == Types.
00258                 // SFX data.  When the user wants to register a sound-effect for easy playing later.
00259                 // We extend LSE_SFX_DATA to add an ID that we can use to look up the data.
00260                 typedef struct LSE_CORE_SFX_DATA {
00261                         // The unique ID of for this data.
00262                         LSUINT32                                                                        ui32Id;
00263                         
00264                         // The ID of the buffer or 0 if not loaded.
00265                         LSUINT32                                                                        ui32BufferId;
00266                         
00267                         // The data.
00268                         //LSE_SFX_DATA                                                          sdData;
00269                 } * LPLSE_CORE_SFX_DATA, * LPCLSE_CORE_SFX_DATA;
00270 
00271 
00272                 // == Members.
00273                 // The SFX data registered with the system.  Sorted by ID.
00274                 CVectorPoD<LSE_CORE_SFX_DATA>                                   m_csdSfxData;
00275                 
00279                 static LSUINT32                                                                 m_ui32SfxId;
00280 
00281 
00282                 // == Functions.
00297                 virtual CSoundBuffer * LSE_CALL                                 NewBuffer( const LSUINT8 * _pui8Data, LSUINT32 _ui32Length,
00298                         LSUINT32 _ui32Freq, LSUINT32 _ui32Bits, LSUINT32 _ui32Channels, LSBOOL _bRetain, LSUINTPTR _uiptrUserData ) const;
00299 
00305                 virtual LSVOID LSE_CALL                                                 DeleteBuffer( CSoundBuffer * &_psbBuffer ) const;
00306 
00314                 virtual CSoundSource * LSE_CALL                                 NewSoundSource( LSS_SOUND_SOURCE _ssType, LSUINT32 _ui32Id ) const;
00315 
00321                 virtual LSVOID LSE_CALL                                                 DeleteSource( CSoundSource * &_pssSource ) const;
00322 
00328                 virtual LSVOID LSE_CALL                                                 DeleteStreamer( IStreamingSoundSourceStreamer * _pssssSteamer );
00329 
00330                 // Find SFX data by ID fast.  Returns NULL if not found.
00331                 //const LSE_CORE_SFX_DATA * LSE_CALL                            FindSfxData( LSUINT32 _ui32Id ) const;
00332 
00334                 //static LSINT32 LSE_CCALL                                              SfxCompare( LSVOID * _pvContext,
00335                 //      const LSUINT32 * _pui32Left, const LSE_CORE_SFX_DATA * _pcsdRight );
00336 
00337 
00338         private :
00339                 typedef CSoundManager                                                   Parent;
00340 
00341 
00342                 // == Functions.
00350                 /*LSBOOL LSE_CALL                                                                       PlayStaticSource( CSoundSource * _pssSource,
00351                         const LSE_CORE_SFX_DATA * _pcsdData );*/
00352         };
00353 
00354 }       // namespace lss
00355 
00356 #endif  // __LSS_CORESOUNDMANAGER_H__
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator