00001 00002 // 00003 // Copyright (c) 2006 Audiokinetic Inc. / All Rights Reserved 00004 // 00006 00007 #ifndef _AK_SOUNDENGINE_AKDYNAMICSEQUENCE_H 00008 #define _AK_SOUNDENGINE_AKDYNAMICSEQUENCE_H 00009 00010 #include <AK/SoundEngine/Common/AkSoundEngine.h> 00011 #include <AK/Tools/Common/AkArray.h> 00012 00013 class AkExternalSourceArray; 00014 00015 namespace AK 00016 { 00017 namespace SoundEngine 00018 { 00021 namespace DynamicSequence 00022 { 00028 class PlaylistItem 00029 { 00030 public: 00031 PlaylistItem(); 00032 PlaylistItem(const PlaylistItem& in_rCopy); 00033 ~PlaylistItem(); 00034 00035 PlaylistItem& operator=(const PlaylistItem& in_rCopy); 00036 bool operator==(const PlaylistItem& in_rCopy) 00037 { 00038 AKASSERT(pExternalSrcs == NULL); 00039 return audioNodeID == in_rCopy.audioNodeID && 00040 msDelay == in_rCopy.msDelay && 00041 pCustomInfo == in_rCopy.pCustomInfo; 00042 }; 00043 00047 AKRESULT SetExternalSources(AkUInt32 in_nExternalSrc, AkExternalSourceInfo* in_pExternalSrc); 00048 00050 AkExternalSourceArray* GetExternalSources(){return pExternalSrcs;} 00051 00052 AkUniqueID audioNodeID; 00053 AkTimeMs msDelay; 00054 void * pCustomInfo; 00055 00056 private: 00057 AkExternalSourceArray *pExternalSrcs; 00058 }; 00059 00064 class Playlist 00065 : public AkArray<PlaylistItem, const PlaylistItem&, ArrayPoolDefault, 4> 00066 { 00067 public: 00070 AkForceInline AKRESULT Enqueue( 00071 AkUniqueID in_audioNodeID, 00072 AkTimeMs in_msDelay = 0, 00073 void * in_pCustomInfo = NULL, 00074 AkUInt32 in_cExternals = 0, 00075 AkExternalSourceInfo *in_pExternalSources = NULL 00076 ) 00077 { 00078 PlaylistItem * pItem = AddLast(); 00079 if ( !pItem ) 00080 return AK_Fail; 00081 00082 pItem->audioNodeID = in_audioNodeID; 00083 pItem->msDelay = in_msDelay; 00084 pItem->pCustomInfo = in_pCustomInfo; 00085 return pItem->SetExternalSources(in_cExternals, in_pExternalSources); 00086 } 00087 }; 00088 00109 enum DynamicSequenceType 00110 { 00111 DynamicSequenceType_SampleAccurate, 00112 DynamicSequenceType_NormalTransition 00113 }; 00114 00120 AK_EXTERNAPIFUNC( AkPlayingID, Open )( 00121 AkGameObjectID in_gameObjectID, 00122 AkUInt32 in_uFlags = 0, 00123 AkCallbackFunc in_pfnCallback = NULL, 00124 void* in_pCookie = NULL, 00125 DynamicSequenceType in_eDynamicSequenceType = DynamicSequenceType_SampleAccurate 00126 ); 00127 00130 AK_EXTERNAPIFUNC( AKRESULT, Close )( 00131 AkPlayingID in_playingID 00132 ); 00133 00135 AK_EXTERNAPIFUNC( AKRESULT, Play )( 00136 AkPlayingID in_playingID, 00137 AkTimeMs in_uTransitionDuration = 0, 00138 AkCurveInterpolation in_eFadeCurve = AkCurveInterpolation_Linear 00139 ); 00140 00143 AK_EXTERNAPIFUNC( AKRESULT, Pause )( 00144 AkPlayingID in_playingID, 00145 AkTimeMs in_uTransitionDuration = 0, 00146 AkCurveInterpolation in_eFadeCurve = AkCurveInterpolation_Linear 00147 ); 00148 00150 AK_EXTERNAPIFUNC( AKRESULT, Resume )( 00151 AkPlayingID in_playingID, 00152 AkTimeMs in_uTransitionDuration = 0, 00153 AkCurveInterpolation in_eFadeCurve = AkCurveInterpolation_Linear 00154 ); 00155 00159 AK_EXTERNAPIFUNC( AKRESULT, Stop )( 00160 AkPlayingID in_playingID, 00161 AkTimeMs in_uTransitionDuration = 0, 00162 AkCurveInterpolation in_eFadeCurve = AkCurveInterpolation_Linear 00163 ); 00164 00166 AK_EXTERNAPIFUNC( AKRESULT, Break )( 00167 AkPlayingID in_playingID 00168 ); 00169 00174 AK_EXTERNAPIFUNC( Playlist *, LockPlaylist )( 00175 AkPlayingID in_playingID 00176 ); 00177 00181 AK_EXTERNAPIFUNC( AKRESULT, UnlockPlaylist )( 00182 AkPlayingID in_playingID 00183 ); 00184 } 00185 } 00186 } 00187 00188 #endif // _AK_SOUNDENGINE_AKDYNAMICSEQUENCE_H
Des questions ? Des problèmes ? Besoin de plus d'informations ? Contactez-nous, nous pouvons vous aider !
Visitez notre page d'AideEnregistrez votre projet et nous vous aiderons à démarrer sans aucune obligation !
Partir du bon pied avec Wwise