Wwise SDK 2015.1.9
버전
menu_open
link
include/AK/SoundEngine/Common/AkTypes.h
Go to the documentation of this file.00001 00002 // 00003 // Copyright (c) 2006 Audiokinetic Inc. / All Rights Reserved 00004 // 00006 00007 // AkTypes.h 00008 00011 00012 #ifndef _AK_DATA_TYPES_H_ 00013 #define _AK_DATA_TYPES_H_ 00014 00015 // Platform-specific section. 00016 //---------------------------------------------------------------------------------------------------- 00017 #include <AK/AkPlatforms.h> 00018 00019 00020 //---------------------------------------------------------------------------------------------------- 00021 00022 #include <AK/SoundEngine/Common/AkSoundEngineExport.h> 00023 00024 #ifndef NULL 00025 #ifdef __cplusplus 00026 #define NULL 0 00027 #else 00028 #define NULL ((void *)0) 00029 #endif 00030 #endif 00031 00032 typedef AkUInt32 AkUniqueID; 00033 typedef AkUInt32 AkStateID; 00034 typedef AkUInt32 AkStateGroupID; 00035 typedef AkUInt32 AkPlayingID; 00036 typedef AkInt32 AkTimeMs; 00037 typedef AkReal32 AkPitchValue; 00038 typedef AkReal32 AkVolumeValue; 00039 typedef AkUIntPtr AkGameObjectID; 00040 typedef AkReal32 AkLPFType; 00041 typedef AkInt32 AkMemPoolId; 00042 typedef AkUInt32 AkPluginID; 00043 typedef AkUInt32 AkCodecID; 00044 typedef AkUInt32 AkAuxBusID; 00045 typedef AkInt16 AkPluginParamID; 00046 typedef AkInt8 AkPriority; 00047 typedef AkUInt16 AkDataCompID; 00048 typedef AkUInt16 AkDataTypeID; 00049 typedef AkUInt8 AkDataInterleaveID; 00050 typedef AkUInt32 AkSwitchGroupID; 00051 typedef AkUInt32 AkSwitchStateID; 00052 typedef AkUInt32 AkRtpcID; 00053 typedef AkReal32 AkRtpcValue; 00054 typedef AkUInt32 AkBankID; 00055 typedef AkUInt32 AkFileID; 00056 typedef AkUInt32 AkDeviceID; 00057 typedef AkUInt32 AkTriggerID; 00058 typedef AkUInt32 AkArgumentValueID; 00059 typedef AkUInt32 AkChannelMask; 00060 typedef AkUInt32 AkModulatorID; 00061 00062 // Constants. 00063 static const AkPluginID AK_INVALID_PLUGINID = (AkPluginID)-1; 00064 static const AkGameObjectID AK_INVALID_GAME_OBJECT = (AkGameObjectID)-1; 00065 static const AkUniqueID AK_INVALID_UNIQUE_ID = 0; 00066 static const AkRtpcID AK_INVALID_RTPC_ID = AK_INVALID_UNIQUE_ID; 00067 static const AkUInt32 AK_INVALID_LISTENER_INDEX = (AkUInt32)-1; 00068 static const AkPlayingID AK_INVALID_PLAYING_ID = AK_INVALID_UNIQUE_ID; 00069 static const AkUInt32 AK_DEFAULT_SWITCH_STATE = 0; 00070 static const AkMemPoolId AK_INVALID_POOL_ID = -1; 00071 static const AkMemPoolId AK_DEFAULT_POOL_ID = -1; 00072 static const AkAuxBusID AK_INVALID_AUX_ID = AK_INVALID_UNIQUE_ID; 00073 static const AkFileID AK_INVALID_FILE_ID = (AkFileID)-1; 00074 static const AkDeviceID AK_INVALID_DEVICE_ID = (AkDeviceID)-1; 00075 static const AkBankID AK_INVALID_BANK_ID = AK_INVALID_UNIQUE_ID; 00076 static const AkArgumentValueID AK_FALLBACK_ARGUMENTVALUE_ID = 0; 00077 static const AkChannelMask AK_INVALID_CHANNELMASK = 0; 00078 static const AkUInt32 AK_INVALID_OUTPUT_DEVICE_ID = AK_INVALID_UNIQUE_ID; 00079 00080 // Priority. 00081 static const AkPriority AK_DEFAULT_PRIORITY = 50; 00082 static const AkPriority AK_MIN_PRIORITY = 0; 00083 static const AkPriority AK_MAX_PRIORITY = 100; 00084 00085 // Default bank I/O settings. 00086 static const AkPriority AK_DEFAULT_BANK_IO_PRIORITY = AK_DEFAULT_PRIORITY; 00087 static const AkReal32 AK_DEFAULT_BANK_THROUGHPUT = 1*1024*1024/1000.f; 00088 00089 // Bank version 00090 static const AkUInt32 AK_SOUNDBANK_VERSION = 113; 00091 00092 // Legacy: define fixed maximum number of channels for platforms that don't support 7.1 (and above). 00093 #if defined(AK_71AUDIO) 00094 #define AK_STANDARD_MAX_NUM_CHANNELS (8) ///< Platform supports at least 7.1 00095 #elif defined(AK_LFECENTER) && defined(AK_REARCHANNELS) 00096 #define AK_VOICE_MAX_NUM_CHANNELS (6) ///< Platform supports up to 5.1 configuration. 00097 #define AK_STANDARD_MAX_NUM_CHANNELS (AK_VOICE_MAX_NUM_CHANNELS) ///< Platform supports 5.1 00098 #elif defined(AK_REARCHANNELS) 00099 #ifdef AK_WII 00100 #define AK_VOICE_MAX_NUM_CHANNELS (2) ///< Platform supports up to stereo configuration. 00101 #else 00102 #define AK_VOICE_MAX_NUM_CHANNELS (4) ///< Platform supports up to 4.0 configuration. 00103 #endif 00104 #else 00105 #define AK_VOICE_MAX_NUM_CHANNELS (2) ///< Platform supports up to stereo configuration. 00106 #define AK_STANDARD_MAX_NUM_CHANNELS (AK_VOICE_MAX_NUM_CHANNELS) ///< Platform supports stereo. 00107 #endif 00108 00110 enum AKRESULT 00111 { 00112 AK_NotImplemented = 0, 00113 AK_Success = 1, 00114 AK_Fail = 2, 00115 AK_PartialSuccess = 3, 00116 AK_NotCompatible = 4, 00117 AK_AlreadyConnected = 5, 00118 AK_NameNotSet = 6, 00119 AK_InvalidFile = 7, 00120 AK_AudioFileHeaderTooLarge = 8, 00121 AK_MaxReached = 9, 00122 AK_InputsInUsed = 10, 00123 AK_OutputsInUsed = 11, 00124 AK_InvalidName = 12, 00125 AK_NameAlreadyInUse = 13, 00126 AK_InvalidID = 14, 00127 AK_IDNotFound = 15, 00128 AK_InvalidInstanceID = 16, 00129 AK_NoMoreData = 17, 00130 AK_NoSourceAvailable = 18, 00131 AK_StateGroupAlreadyExists = 19, 00132 AK_InvalidStateGroup = 20, 00133 AK_ChildAlreadyHasAParent = 21, 00134 AK_InvalidLanguage = 22, 00135 AK_CannotAddItseflAsAChild = 23, 00136 //AK_TransitionNotFound = 24, ///< The transition is not in the list. 00137 //AK_TransitionNotStartable = 25, ///< Start allowed in the Running and Done states. 00138 //AK_TransitionNotRemovable = 26, ///< Must not be in the Computing state. 00139 //AK_UsersListFull = 27, ///< No one can be added any more, could be AK_MaxReached. 00140 //AK_UserAlreadyInList = 28, ///< This user is already there. 00141 AK_UserNotInList = 29, 00142 AK_NoTransitionPoint = 30, 00143 AK_InvalidParameter = 31, 00144 AK_ParameterAdjusted = 32, 00145 AK_IsA3DSound = 33, 00146 AK_NotA3DSound = 34, 00147 AK_ElementAlreadyInList = 35, 00148 AK_PathNotFound = 36, 00149 AK_PathNoVertices = 37, 00150 AK_PathNotRunning = 38, 00151 AK_PathNotPaused = 39, 00152 AK_PathNodeAlreadyInList = 40, 00153 AK_PathNodeNotInList = 41, 00154 AK_VoiceNotFound = 42, 00155 AK_DataNeeded = 43, 00156 AK_NoDataNeeded = 44, 00157 AK_DataReady = 45, 00158 AK_NoDataReady = 46, 00159 AK_NoMoreSlotAvailable = 47, 00160 AK_SlotNotFound = 48, 00161 AK_ProcessingOnly = 49, 00162 AK_MemoryLeak = 50, 00163 AK_CorruptedBlockList = 51, 00164 AK_InsufficientMemory = 52, 00165 AK_Cancelled = 53, 00166 AK_UnknownBankID = 54, 00167 AK_IsProcessing = 55, 00168 AK_BankReadError = 56, 00169 AK_InvalidSwitchType = 57, 00170 AK_VoiceDone = 58, 00171 AK_UnknownEnvironment = 59, 00172 AK_EnvironmentInUse = 60, 00173 AK_UnknownObject = 61, 00174 AK_NoConversionNeeded = 62, 00175 AK_FormatNotReady = 63, 00176 AK_WrongBankVersion = 64, 00177 AK_DataReadyNoProcess = 65, 00178 AK_FileNotFound = 66, 00179 AK_DeviceNotReady = 67, 00180 AK_CouldNotCreateSecBuffer = 68, 00181 AK_BankAlreadyLoaded = 69, 00182 AK_RenderedFX = 71, 00183 AK_ProcessNeeded = 72, 00184 AK_ProcessDone = 73, 00185 AK_MemManagerNotInitialized = 74, 00186 AK_StreamMgrNotInitialized = 75, 00187 AK_SSEInstructionsNotSupported = 76, 00188 AK_Busy = 77, 00189 AK_UnsupportedChannelConfig = 78, 00190 AK_PluginMediaNotAvailable = 79, 00191 AK_MustBeVirtualized = 80, 00192 AK_CommandTooLarge = 81, 00193 AK_RejectedByFilter = 82, 00194 AK_InvalidCustomPlatformName= 83, 00195 AK_DLLCannotLoad = 84, 00196 }; 00197 00199 enum AkGroupType 00200 { 00201 // should stay set as Switch = 0 and State = 1 00202 AkGroupType_Switch = 0, 00203 AkGroupType_State = 1 00204 }; 00205 00212 struct AkExternalSourceInfo 00213 { 00214 AkUInt32 iExternalSrcCookie; 00215 AkCodecID idCodec; 00216 AkOSChar * szFile; 00217 void* pInMemory; 00218 AkUInt32 uiMemorySize; 00219 AkFileID idFile; 00220 00222 AkExternalSourceInfo() 00223 : iExternalSrcCookie( 0 ) 00224 , idCodec( 0 ) 00225 , szFile( 0 ) 00226 , pInMemory( 0 ) 00227 , uiMemorySize( 0 ) 00228 , idFile( 0 ) {} 00229 00231 AkExternalSourceInfo( 00232 void* in_pInMemory, 00233 AkUInt32 in_uiMemorySize, 00234 AkUInt32 in_iExternalSrcCookie, 00235 AkCodecID in_idCodec 00236 ) 00237 : iExternalSrcCookie( in_iExternalSrcCookie ) 00238 , idCodec( in_idCodec ) 00239 , szFile( 0 ) 00240 , pInMemory( in_pInMemory ) 00241 , uiMemorySize( in_uiMemorySize ) 00242 , idFile( 0 ) {} 00243 00245 AkExternalSourceInfo( 00246 AkOSChar * in_pszFileName, 00247 AkUInt32 in_iExternalSrcCookie, 00248 AkCodecID in_idCodec 00249 ) 00250 : iExternalSrcCookie( in_iExternalSrcCookie ) 00251 , idCodec( in_idCodec ) 00252 , szFile( in_pszFileName ) 00253 , pInMemory( 0 ) 00254 , uiMemorySize( 0 ) 00255 , idFile( 0 ) {} 00256 00258 AkExternalSourceInfo( 00259 AkFileID in_idFile, 00260 AkUInt32 in_iExternalSrcCookie, 00261 AkCodecID in_idCodec 00262 ) 00263 : iExternalSrcCookie( in_iExternalSrcCookie ) 00264 , idCodec( in_idCodec ) 00265 , szFile( 0 ) 00266 , pInMemory( 0 ) 00267 , uiMemorySize( 0 ) 00268 , idFile( in_idFile ) {} 00269 }; 00270 00272 enum AkConnectionType 00273 { 00274 ConnectionType_Direct = 0x0, 00275 ConnectionType_GameDefSend = 0x1, 00276 ConnectionType_UserDefSend = 0x2, 00277 ConnectionType_CrossDeviceSend = 0x4 00278 }; 00279 00281 struct AkVector 00282 { 00283 AkReal32 X; 00284 AkReal32 Y; 00285 AkReal32 Z; 00286 }; 00287 00289 struct AkSoundPosition 00290 { 00291 AkVector Position; 00292 AkVector Orientation; 00293 }; 00294 00296 struct AkListenerPosition 00297 { 00298 AkVector OrientationFront; 00299 AkVector OrientationTop; 00300 AkVector Position; 00301 }; 00302 00304 struct AkPolarCoord 00305 { 00306 AkReal32 r; 00307 AkReal32 theta; 00308 }; 00309 00311 struct AkSphericalCoord : public AkPolarCoord 00312 { 00313 AkReal32 phi; 00314 }; 00315 00319 class AkEmitterListenerPair : public AkSphericalCoord 00320 { 00321 public: 00323 AkEmitterListenerPair() 00324 : fEmitterAngle( 0.f ) 00325 , fDryMixGain( 1.f ) 00326 , fGameDefAuxMixGain( 1.f ) 00327 , fUserDefAuxMixGain( 1.f ) 00328 , m_uListenerMask( 0 ) 00329 { 00330 r = 0; 00331 theta = 0; 00332 phi = 0; 00333 } 00335 ~AkEmitterListenerPair() {} 00336 00338 inline AkReal32 Distance() const { return r; } 00339 00341 inline AkReal32 Azimuth() const { return theta; } 00342 00344 inline AkReal32 Elevation() const { return phi; } 00345 00348 inline AkReal32 EmitterAngle() const { return fEmitterAngle; } 00349 00351 inline AkReal32 GetGainForConnectionType(AkConnectionType in_eType) const 00352 { 00353 AkConnectionType eType = (AkConnectionType)(in_eType & ~ConnectionType_CrossDeviceSend); 00354 if (eType == ConnectionType_Direct) 00355 return fDryMixGain; 00356 else if (eType == ConnectionType_GameDefSend) 00357 return fGameDefAuxMixGain; 00358 else 00359 return fUserDefAuxMixGain; 00360 } 00361 00363 inline AkUInt32 ListenerMask() const { return m_uListenerMask; } 00364 00365 // Get listener index of first listener assigned to this emitter-listener pair. 00367 inline AkUInt8 ListenerIdx() const 00368 { 00369 AkUInt8 uListenerIdx = 0; 00370 AkUInt8 uListenerMask = m_uListenerMask; 00371 while ( !( uListenerMask & 0x01 ) ) 00372 { 00373 uListenerMask >>= 1; 00374 ++uListenerIdx; 00375 } 00376 return uListenerIdx; 00377 } 00378 00379 AkReal32 fEmitterAngle; 00380 AkReal32 fDryMixGain; 00381 AkReal32 fGameDefAuxMixGain; 00382 AkReal32 fUserDefAuxMixGain; 00383 protected: 00384 AkUInt8 m_uListenerMask; 00385 }; 00386 00388 struct AkListener 00389 { 00390 AkListener() 00391 : fScalingFactor( 1.0f ) 00392 , bSpatialized( true ) 00393 {} 00394 AkListenerPosition position; 00395 AkReal32 fScalingFactor; 00396 bool bSpatialized; 00397 }; 00398 00400 enum AkCurveInterpolation 00401 { 00402 //DONT GO BEYOND 15! (see below for details) 00403 //Curves from 0 to LastFadeCurve NEED TO BE A MIRROR IMAGE AROUND LINEAR (eg. Log3 is the inverse of Exp3) 00404 AkCurveInterpolation_Log3 = 0, 00405 AkCurveInterpolation_Sine = 1, 00406 AkCurveInterpolation_Log1 = 2, 00407 AkCurveInterpolation_InvSCurve = 3, 00408 AkCurveInterpolation_Linear = 4, 00409 AkCurveInterpolation_SCurve = 5, 00410 AkCurveInterpolation_Exp1 = 6, 00411 AkCurveInterpolation_SineRecip = 7, 00412 AkCurveInterpolation_Exp3 = 8, 00413 AkCurveInterpolation_LastFadeCurve = 8, 00414 AkCurveInterpolation_Constant = 9 00415 //DONT GO BEYOND 15! The value is stored on 5 bits, 00416 //but we can use only 4 bits for the actual values, keeping 00417 //the 5th bit at 0 to void problems when the value is 00418 //expanded to 32 bits. 00419 }; 00420 #define AKCURVEINTERPOLATION_NUM_STORAGE_BIT 5 ///< Internal storage restriction, for internal use only. 00421 00422 #ifndef AK_MAX_AUX_PER_OBJ 00423 #define AK_MAX_AUX_PER_OBJ (4) ///< Maximum number of environments in which a single game object may be located at a given time. 00424 00425 // This define is there to Limit the number of Aux per sound that can be processed. 00426 // This value must be >= AK_MAX_AUX_PER_OBJ and >= AK_NUM_AUX_SEND_PER_OBJ (4) 00427 #define AK_MAX_AUX_SUPPORTED (AK_MAX_AUX_PER_OBJ + 4) 00428 #else 00429 // This define is there to Limit the number of Aux per sound that can be processed. 00430 // This value must be >= AK_MAX_AUX_PER_OBJ and >= AK_MAX_AUX_PER_NODE 00431 #define AK_MAX_AUX_SUPPORTED AK_MAX_AUX_PER_OBJ 00432 00433 #endif 00434 00435 #define AK_NUM_LISTENERS (8) ///< Number of listeners that can be used. 00436 #define AK_LISTENERS_MASK_ALL (0xFFFFFFFF) ///< All listeners. 00437 00439 struct AkAuxSendValue 00440 { 00441 AkAuxBusID auxBusID; 00442 AkReal32 fControlValue; 00443 }; 00444 00446 struct AkRamp 00447 { 00448 AkRamp() : fPrev( 1.f ), fNext( 1.f ) {} 00449 AkRamp( AkReal32 in_fPrev, AkReal32 in_fNext ) : fPrev( in_fPrev ), fNext( in_fNext ) {} 00450 AkRamp & operator*=(const AkRamp& in_rRhs) { fPrev *= in_rRhs.fPrev; fNext *= in_rRhs.fNext; return *this; } 00451 00452 AkReal32 fPrev; 00453 AkReal32 fNext; 00454 }; 00455 inline AkRamp operator*(const AkRamp& in_rLhs, const AkRamp& in_rRhs) 00456 { 00457 AkRamp result(in_rLhs); 00458 result *= in_rRhs; 00459 return result; 00460 } 00461 00462 #ifndef AK_MEMPOOLATTRIBUTES 00463 00472 enum AkMemPoolAttributes 00473 { 00474 AkNoAlloc = 0, 00475 AkMalloc = 1, 00476 AkAllocMask = AkNoAlloc | AkMalloc, 00477 00478 AkFixedSizeBlocksMode = 1<<3, 00479 AkBlockMgmtMask = AkFixedSizeBlocksMode 00480 }; 00481 #define AK_MEMPOOLATTRIBUTES 00482 00483 #endif 00484 00485 namespace AK 00486 { 00494 AK_EXTERNFUNC( void *, AllocHook )( 00495 size_t in_size 00496 ); 00497 00504 AK_EXTERNFUNC( void, FreeHook )( 00505 void * in_pMemAddress 00506 ); 00507 } 00508 00509 // --------------------------------------------------------------- 00510 // Languages 00511 // --------------------------------------------------------------- 00512 #define AK_MAX_LANGUAGE_NAME_SIZE (32) 00513 00514 // --------------------------------------------------------------- 00515 // File Type ID Definitions 00516 // --------------------------------------------------------------- 00517 00518 // These correspond to IDs specified in the conversion plug-ins' XML 00519 // files. Audio sources persist them to "remember" their format. 00520 // DO NOT CHANGE THEM without talking to someone in charge of persistence! 00521 00522 // Vendor ID. 00523 #define AKCOMPANYID_AUDIOKINETIC (0) ///< Audiokinetic inc. 00524 #define AKCOMPANYID_AUDIOKINETIC_EXTERNAL (1) ///< Audiokinetic inc. 00525 #define AKCOMPANYID_MCDSP (256) ///< McDSP 00526 #define AKCOMPANYID_WAVEARTS (257) ///< WaveArts 00527 #define AKCOMPANYID_PHONETICARTS (258) ///< Phonetic Arts 00528 #define AKCOMPANYID_IZOTOPE (259) ///< iZotope 00529 #define AKCOMPANYID_GENAUDIO (260) ///< GenAudio 00530 #define AKCOMPANYID_CRANKCASEAUDIO (261) ///< Crankcase Audio 00531 #define AKCOMPANYID_IOSONO (262) ///< IOSONO 00532 #define AKCOMPANYID_AUROTECHNOLOGIES (263) ///< Auro Technologies 00533 #define AKCOMPANYID_DOLBY (264) ///< Dolby 00534 00535 // File/encoding types of Audiokinetic. 00536 #define AKCODECID_BANK (0) ///< Bank encoding 00537 #define AKCODECID_PCM (1) ///< PCM encoding 00538 #define AKCODECID_ADPCM (2) ///< ADPCM encoding 00539 #define AKCODECID_XMA (3) ///< XMA encoding 00540 #define AKCODECID_VORBIS (4) ///< Vorbis encoding 00541 #define AKCODECID_WIIADPCM (5) ///< ADPCM encoding on the Wii 00542 #define AKCODECID_PCMEX (7) ///< Standard PCM WAV file parser for Wwise Authoring 00543 #define AKCODECID_EXTERNAL_SOURCE (8) ///< External Source (unknown encoding) 00544 #define AKCODECID_XWMA (9) ///< xWMA encoding 00545 #define AKCODECID_AAC (10) ///< AAC encoding (only available on Apple devices) -- see AkAACFactory.h 00546 #define AKCODECID_FILE_PACKAGE (11) ///< File package files generated by the File Packager utility. 00547 #define AKCODECID_ATRAC9 (12) ///< ATRAC-9 encoding 00548 #define AKCODECID_VAG (13) ///< VAG/HE-VAG encoding 00549 #define AKCODECID_PROFILERCAPTURE (14) ///< Profiler capture file (.prof) as written through AK::SoundEngine::StartProfilerCapture 00550 #define AKCODECID_ANALYSISFILE (15) ///< Analysis file 00551 #define AKCODECID_MIDI (16) ///< MIDI file 00552 00553 //The following are internally defined 00554 #define AK_WAVE_FORMAT_VAG 0xFFFB 00555 #define AK_WAVE_FORMAT_AT9 0xFFFC 00556 #define AK_WAVE_FORMAT_VORBIS 0xFFFF 00557 #define AK_WAVE_FORMAT_AAC 0xAAC0 00558 00559 class IAkSoftwareCodec; 00561 AK_CALLBACK( IAkSoftwareCodec*, AkCreateFileSourceCallback )( void* in_pCtx ); 00563 AK_CALLBACK( IAkSoftwareCodec*, AkCreateBankSourceCallback )( void* in_pCtx ); 00564 00565 //----------------------------------------------------------------------------- 00566 // Positioning 00567 //----------------------------------------------------------------------------- 00568 00569 namespace AK 00570 { 00571 namespace SoundEngine 00572 { 00577 enum MultiPositionType 00578 { 00579 MultiPositionType_SingleSource, 00580 MultiPositionType_MultiSources, 00581 MultiPositionType_MultiDirections 00582 }; 00583 } 00584 } 00585 00587 #define PANNER_NUM_STORAGE_BITS 2 00588 enum AkPannerType 00589 { 00590 Ak2D = 0, 00591 Ak3D = 1 00592 }; 00593 00594 #define POSSOURCE_NUM_STORAGE_BITS 2 00595 enum AkPositionSourceType 00596 { 00597 AkUserDef = 0, 00598 AkGameDef = 1 00599 }; 00600 00602 enum AkPanningRule 00603 { 00604 AkPanningRule_Speakers = 0, 00605 AkPanningRule_Headphones = 1 00606 }; 00607 00609 enum AkBusType 00610 { 00611 AkBusType_Master = 0x01, 00612 AkBusType_Primary = 0x02 00613 }; 00614 00615 #define AK_MAX_BITS_METERING_FLAGS (5) // Keep in sync with AkMeteringFlags. 00616 00618 enum AkMeteringFlags 00619 { 00620 AK_NoMetering = 0, 00621 AK_EnableBusMeter_Peak = 1 << 0, 00622 AK_EnableBusMeter_TruePeak = 1 << 1, 00623 AK_EnableBusMeter_RMS = 1 << 2, 00624 // 1 << 3 is reserved. 00625 AK_EnableBusMeter_KPower = 1 << 4 00626 }; 00627 00629 // Wwise ID system 00631 enum AkNodeType 00632 { 00633 AkNodeType_Default, 00634 AkNodeType_Bus 00635 }; 00636 00637 struct WwiseObjectIDext 00638 { 00639 public: 00640 00641 bool operator == ( const WwiseObjectIDext& in_rOther ) const 00642 { 00643 return in_rOther.id == id && in_rOther.bIsBus == bIsBus; 00644 } 00645 00646 AkNodeType GetType() 00647 { 00648 return bIsBus ? AkNodeType_Bus : AkNodeType_Default; 00649 } 00650 00651 AkUniqueID id; 00652 bool bIsBus; 00653 }; 00654 00655 struct WwiseObjectID : public WwiseObjectIDext 00656 { 00657 WwiseObjectID() 00658 { 00659 id = AK_INVALID_UNIQUE_ID; 00660 bIsBus = false; 00661 } 00662 00663 WwiseObjectID( AkUniqueID in_ID ) 00664 { 00665 id = in_ID; 00666 bIsBus = false; 00667 } 00668 00669 WwiseObjectID( AkUniqueID in_ID, bool in_bIsBus ) 00670 { 00671 id = in_ID; 00672 bIsBus = in_bIsBus; 00673 } 00674 00675 WwiseObjectID( AkUniqueID in_ID, AkNodeType in_eNodeType ) 00676 { 00677 id = in_ID; 00678 bIsBus = in_eNodeType == AkNodeType_Bus; 00679 } 00680 }; 00681 00682 #ifndef __SPU__ 00683 00684 namespace AkFileParser 00685 { 00686 #pragma pack(push, 1) 00687 00688 struct EnvelopePoint 00689 { 00690 AkUInt32 uPosition; 00691 AkUInt16 uAttenuation; 00692 }; 00693 #pragma pack(pop) 00694 } 00695 #endif // !__SPU__ 00696 00697 #ifndef AK_OS_STRUCT_ALIGN 00698 #define AK_OS_STRUCT_ALIGN 4 ///< OS Structures need to be aligned at 4 bytes. 00699 #endif 00700 00701 #ifndef AK_UNALIGNED 00702 #define AK_UNALIGNED ///< Refers to the __unaligned compilation flag available on some platforms. Note that so far, on the tested platform this should always be placed before the pointer symbol *. 00703 #endif 00704 00705 #ifndef AK_ASYNC_OPEN_DEFAULT 00706 #define AK_ASYNC_OPEN_DEFAULT (false) ///< Refers to asynchronous file opening in default low-level IO. 00707 #endif 00708 00709 #ifndef AK_COMM_DEFAULT_DISCOVERY_PORT 00710 #define AK_COMM_DEFAULT_DISCOVERY_PORT 24024 ///< Default discovery port for most platforms using IP sockets for communication. 00711 #endif 00712 00713 #ifndef AK_CAPTURE_TYPE_FLOAT 00714 typedef AkInt16 AkCaptureType; 00715 #endif 00716 00717 #if defined(AK_CPU_X86_64) || defined(AK_CPU_ARM_64) 00718 #define AK_POINTER_64 00719 #endif // #if defined(AK_CPU_X86_64) || defined(AK_CPU_ARM_64) 00720 00721 #if !defined(AkRegister) 00722 #define AkRegister register 00723 #endif 00724 00725 #endif //_AK_DATA_TYPES_H_
이 페이지가 도움이 되었나요?
작업하는 프로젝트에 대해 알려주세요. 언제든지 도와드릴 준비가 되어 있습니다.
프로젝트를 등록하세요. 아무런 조건이나 의무 사항 없이 빠른 시작을 도와드리겠습니다.
Wwise를 시작해 보세요