include/AK/SoundEngine/Common/AkDynamicSequence.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef _AK_SOUNDENGINE_AKDYNAMICSEQUENCE_H
00029 #define _AK_SOUNDENGINE_AKDYNAMICSEQUENCE_H
00030
00031 #include <AK/SoundEngine/Common/AkSoundEngine.h>
00032 #include <AK/Tools/Common/AkArray.h>
00033
00034 class AkExternalSourceArray;
00035
00036 namespace AK
00037 {
00038 namespace SoundEngine
00039 {
00042 namespace DynamicSequence
00043 {
00049 class PlaylistItem
00050 {
00051 public:
00052 PlaylistItem();
00053 PlaylistItem(const PlaylistItem& in_rCopy);
00054 ~PlaylistItem();
00055
00056 PlaylistItem& operator=(const PlaylistItem& in_rCopy);
00057 bool operator==(const PlaylistItem& in_rCopy)
00058 {
00059 AKASSERT(pExternalSrcs == NULL);
00060 return audioNodeID == in_rCopy.audioNodeID &&
00061 msDelay == in_rCopy.msDelay &&
00062 pCustomInfo == in_rCopy.pCustomInfo;
00063 };
00064
00068 AKRESULT SetExternalSources(AkUInt32 in_nExternalSrc, AkExternalSourceInfo* in_pExternalSrc);
00069
00071 AkExternalSourceArray* GetExternalSources(){return pExternalSrcs;}
00072
00073 AkUniqueID audioNodeID;
00074 AkTimeMs msDelay;
00075 void * pCustomInfo;
00076
00077 private:
00078 AkExternalSourceArray *pExternalSrcs;
00079 };
00080
00085 class Playlist
00086 : public AkArray<PlaylistItem, const PlaylistItem&, ArrayPoolDefault, 4>
00087 {
00088 public:
00091 AkForceInline AKRESULT Enqueue(
00092 AkUniqueID in_audioNodeID,
00093 AkTimeMs in_msDelay = 0,
00094 void * in_pCustomInfo = NULL,
00095 AkUInt32 in_cExternals = 0,
00096 AkExternalSourceInfo *in_pExternalSources = NULL
00097 )
00098 {
00099 PlaylistItem * pItem = AddLast();
00100 if ( !pItem )
00101 return AK_Fail;
00102
00103 pItem->audioNodeID = in_audioNodeID;
00104 pItem->msDelay = in_msDelay;
00105 pItem->pCustomInfo = in_pCustomInfo;
00106 return pItem->SetExternalSources(in_cExternals, in_pExternalSources);
00107 }
00108 };
00109
00130 enum DynamicSequenceType
00131 {
00132 DynamicSequenceType_SampleAccurate,
00133 DynamicSequenceType_NormalTransition
00134 };
00135
00141 AK_EXTERNAPIFUNC( AkPlayingID, Open )(
00142 AkGameObjectID in_gameObjectID,
00143 AkUInt32 in_uFlags = 0,
00144 AkCallbackFunc in_pfnCallback = NULL,
00145 void* in_pCookie = NULL,
00146 DynamicSequenceType in_eDynamicSequenceType = DynamicSequenceType_SampleAccurate
00147 );
00148
00151 AK_EXTERNAPIFUNC( AKRESULT, Close )(
00152 AkPlayingID in_playingID
00153 );
00154
00156 AK_EXTERNAPIFUNC( AKRESULT, Play )(
00157 AkPlayingID in_playingID,
00158 AkTimeMs in_uTransitionDuration = 0,
00159 AkCurveInterpolation in_eFadeCurve = AkCurveInterpolation_Linear
00160 );
00161
00164 AK_EXTERNAPIFUNC( AKRESULT, Pause )(
00165 AkPlayingID in_playingID,
00166 AkTimeMs in_uTransitionDuration = 0,
00167 AkCurveInterpolation in_eFadeCurve = AkCurveInterpolation_Linear
00168 );
00169
00171 AK_EXTERNAPIFUNC( AKRESULT, Resume )(
00172 AkPlayingID in_playingID,
00173 AkTimeMs in_uTransitionDuration = 0,
00174 AkCurveInterpolation in_eFadeCurve = AkCurveInterpolation_Linear
00175 );
00176
00180 AK_EXTERNAPIFUNC( AKRESULT, Stop )(
00181 AkPlayingID in_playingID,
00182 AkTimeMs in_uTransitionDuration = 0,
00183 AkCurveInterpolation in_eFadeCurve = AkCurveInterpolation_Linear
00184 );
00185
00187 AK_EXTERNAPIFUNC( AKRESULT, Break )(
00188 AkPlayingID in_playingID
00189 );
00190
00192 AK_EXTERNAPIFUNC(AKRESULT, GetPauseTimes)(
00193 AkPlayingID in_playingID,
00194 AkUInt32 &out_uTime,
00195 AkUInt32 &out_uDuration
00196 );
00197
00200 AK_EXTERNAPIFUNC(AKRESULT, GetPlayingItem)(
00201 AkPlayingID in_playingID,
00202 AkUniqueID & out_audioNodeID,
00203 void *& out_pCustomInfo
00204 );
00205
00210 AK_EXTERNAPIFUNC( Playlist *, LockPlaylist )(
00211 AkPlayingID in_playingID
00212 );
00213
00217 AK_EXTERNAPIFUNC( AKRESULT, UnlockPlaylist )(
00218 AkPlayingID in_playingID
00219 );
00220 }
00221 }
00222 }
00223
00224 #endif // _AK_SOUNDENGINE_AKDYNAMICSEQUENCE_H
介绍一下自己的项目。我们会竭力为您提供帮助。
来注册自己的项目,我们帮您快速入门,不带任何附加条件!
开始 Wwise 之旅