00001 00002 // 00003 // Copyright (c) 2006 Audiokinetic Inc. / All Rights Reserved 00004 // 00006 00010 00011 #ifndef _AK_SOUNDFRAME_SF_H 00012 #define _AK_SOUNDFRAME_SF_H 00013 00014 #include <wtypes.h> 00015 00016 #include "SFObjects.h" 00017 #include <AK/SoundEngine/Common/AkTypes.h> 00018 #include <AK/SoundEngine/Common/AkSoundEngine.h> 00019 00020 struct IDataObject; // OLE data object interface 00021 00025 #define MAX_MONITORING_MSG_SIZE 256 00026 00027 namespace AK 00028 { 00030 namespace SoundFrame 00031 { 00036 class ISoundFrame : public ISFRefCount 00037 { 00038 public: 00045 virtual bool Connect( 00046 DWORD in_dwProcessID = 0 00047 ) = 0; 00048 00051 virtual bool IsConnected() const = 0; 00052 00055 00056 00057 00066 virtual const WCHAR * GetCurrentProjectName() const = 0; 00067 00076 virtual GUID GetCurrentProjectID() const = 0; 00077 00086 virtual const WCHAR * GetCurrentProjectOriginalRoot() const = 0; 00087 00089 00092 00093 00107 virtual bool PlayEvents( 00108 const AkUniqueID * in_pEvents, 00109 long in_cEvents, 00110 AkGameObjectID in_gameObjectID = IGameObject::s_WwiseGameObject 00111 ) = 0; 00112 00126 virtual bool PlayEvents( 00127 LPCWSTR * in_pszEvents, 00128 long in_cEvents, 00129 AkGameObjectID in_gameObjectID = IGameObject::s_WwiseGameObject 00130 ) = 0; 00131 00137 virtual bool ExecuteActionOnEvent( 00138 AkUniqueID in_eventID, 00139 AK::SoundEngine::AkActionOnEventType in_ActionType, 00140 AkGameObjectID in_gameObjectID = AK_INVALID_GAME_OBJECT, 00141 AkTimeMs in_uTransitionDuration = 0, 00142 AkCurveInterpolation in_eFadeCurve = AkCurveInterpolation_Linear 00143 ) = 0; 00144 00149 virtual bool SeekOnEvent( 00150 AkUniqueID in_eventID, 00151 AkGameObjectID in_gameObjectID, 00152 AkTimeMs in_iPosition, 00153 bool in_bSeekToNearestMarker = false, 00154 AkPlayingID in_PlayingID = AK_INVALID_PLAYING_ID 00155 ) = 0; 00156 00161 virtual bool SeekOnEvent( 00162 AkUniqueID in_eventID, 00163 AkGameObjectID in_gameObjectID, 00164 AkReal32 in_fPercent, 00165 bool in_bSeekToNearestMarker = false, 00166 AkPlayingID in_PlayingID = AK_INVALID_PLAYING_ID 00167 ) = 0; 00168 00179 virtual bool SetPlayBackMode( 00180 bool in_bPlayback 00181 ) const = 0; 00182 00185 virtual bool GetCurrentState( 00186 AkStateGroupID in_stateGroupID, 00187 IState** out_ppCurrentState 00188 ) const = 0; 00189 00192 virtual bool GetCurrentState( 00193 LPCWSTR in_szStateGroupName, 00194 IState** out_ppCurrentState 00195 ) const = 0; 00196 00202 virtual bool SetCurrentState( 00203 AkStateGroupID in_stateGroupID, 00204 AkStateID in_currentStateID 00205 ) = 0; 00206 00212 virtual bool SetCurrentState( 00213 LPCWSTR in_szStateGroupName, 00214 LPCWSTR in_szCurrentStateName 00215 ) = 0; 00216 00219 virtual bool GetCurrentSwitch( 00220 AkSwitchGroupID in_switchGroupID, 00221 ISwitch** out_ppCurrentSwitch, 00222 AkGameObjectID in_gameObjectID = IGameObject::s_WwiseGameObject 00223 ) const = 0; 00224 00227 virtual bool GetCurrentSwitch( 00228 LPCWSTR in_szSwitchGroupName, 00229 ISwitch** out_ppCurrentSwitch, 00230 AkGameObjectID in_gameObjectID = IGameObject::s_WwiseGameObject 00231 ) const = 0; 00232 00238 virtual bool SetCurrentSwitch( 00239 AkSwitchGroupID in_switchGroupID, 00240 AkSwitchStateID in_currentSwitchID, 00241 AkGameObjectID in_gameObjectID = IGameObject::s_WwiseGameObject 00242 ) = 0; 00243 00249 virtual bool SetCurrentSwitch( 00250 LPCWSTR in_szSwitchGroupName, 00251 LPCWSTR in_szCurrentSwitchName, 00252 AkGameObjectID in_gameObjectID = IGameObject::s_WwiseGameObject 00253 ) = 0; 00254 00263 virtual bool RegisterGameObject( 00264 AkGameObjectID in_gameObjectID, 00265 LPCWSTR in_szGameObjectName = L"" 00266 ) = 0; 00267 00276 virtual bool UnregisterGameObject( 00277 AkGameObjectID in_gameObjectID 00278 ) = 0; 00279 00285 virtual bool SetRTPCValue( 00286 AkRtpcID in_gameParameterID, 00287 AkRtpcValue in_value, 00288 AkGameObjectID in_gameObjectID = IGameObject::s_WwiseGameObject 00289 ) = 0; 00290 00297 virtual bool SetRTPCValue( 00298 LPCWSTR in_szGameParameterName, 00299 AkRtpcValue in_value, 00300 AkGameObjectID in_gameObjectID = IGameObject::s_WwiseGameObject 00301 ) = 0; 00302 00309 virtual bool ResetRTPCValue( 00310 AkRtpcID in_gameParameterID, 00311 AkGameObjectID in_gameObjectID = IGameObject::s_WwiseGameObject 00312 ) = 0; 00313 00320 virtual bool ResetRTPCValue( 00321 LPCWSTR in_szGameParameterName, 00322 AkGameObjectID in_gameObjectID = IGameObject::s_WwiseGameObject 00323 ) = 0; 00324 00330 virtual bool PostTrigger( 00331 AkTriggerID in_triggerID, 00332 AkGameObjectID in_gameObjectID = IGameObject::s_WwiseGameObject 00333 ) = 0; 00334 00340 virtual bool PostTrigger( 00341 LPCWSTR in_szTriggerName, 00342 AkGameObjectID in_gameObjectID = IGameObject::s_WwiseGameObject 00343 ) = 0; 00344 00350 virtual bool SetActiveListeners( 00351 AkGameObjectID in_gameObjectID, 00352 AkUInt32 in_uiListenerMask 00353 ) = 0; 00354 00361 virtual bool SetAttenuationScalingFactor( 00362 AkGameObjectID in_GameObjectID, 00363 AkReal32 in_fAttenuationScalingFactor 00364 ) = 0; 00365 00371 virtual bool SetPosition( 00372 AkGameObjectID in_gameObjectID, 00373 const AkSoundPosition& in_rPosition 00374 ) = 0; 00375 00381 virtual bool SetListenerPosition( 00382 const AkListenerPosition& in_rPosition, 00383 AkUInt32 in_uiIndex = 0 00384 ) = 0; 00385 00392 virtual bool SetMultiplePositions( 00393 AkGameObjectID in_GameObjectID, 00394 const AkSoundPosition * in_pPositions, 00395 AkUInt16 in_NumPositions, 00396 AK::SoundEngine::MultiPositionType in_eMultiPositionType = AK::SoundEngine::MultiPositionType_MultiDirections 00397 ) = 0; 00398 00404 virtual bool SetListenerScalingFactor( 00405 AkUInt32 in_uiIndex, 00406 AkReal32 in_fAttenuationScalingFactor 00407 ) = 0; 00408 00415 virtual bool SetListenerSpatialization( 00416 AkUInt32 in_uiIndex, 00417 bool in_bSpatialized, 00418 AkChannelConfig in_channelConfig, 00419 AkReal32 * in_pVolumeOffsets = NULL 00420 ) = 0; 00421 00429 virtual bool SetGameObjectAuxSendValues( 00430 AkGameObjectID in_gameObjectID, 00431 AkAuxSendValue* in_aAuxSendValues, 00432 00433 00434 AkUInt32 in_uNumSendValues 00435 00436 ) = 0; 00437 00445 virtual bool SetGameObjectOutputBusVolume( 00446 AkGameObjectID in_gameObjectID, 00447 AkReal32 in_fControlValue 00448 00449 ) = 0; 00450 00457 virtual bool SetObjectObstructionAndOcclusion( 00458 AkGameObjectID in_ObjectID, 00459 AkUInt32 in_uListener, 00460 AkReal32 in_fObstructionLevel, 00461 AkReal32 in_fOcclusionLevel 00462 ) = 0; 00463 00470 virtual bool PostMsgMonitor( 00471 LPCWSTR in_pszMessage 00472 00473 ) = 0; 00474 00477 virtual bool StopAll( 00478 AkGameObjectID in_GameObjID = AK_INVALID_GAME_OBJECT 00479 ) = 0; 00480 00484 virtual bool StopPlayingID( 00485 AkPlayingID in_playingID, 00486 AkTimeMs in_uTransitionDuration = 0, 00487 AkCurveInterpolation in_eFadeCurve = AkCurveInterpolation_Linear 00488 ) = 0; 00489 00491 00494 00495 00498 00499 00502 virtual bool GetEventList( 00503 IEventList ** out_ppEventList 00504 ) const = 0; 00505 00508 virtual bool GetEvent( 00509 AkUniqueID in_eventID, 00510 IEvent ** out_ppEvent 00511 ) const = 0; 00512 00515 virtual bool GetEvent( 00516 LPCWSTR in_pszEvent, 00517 IEvent ** out_ppEvent 00518 ) const = 0; 00519 00522 virtual bool GetEvents( 00523 const AkUniqueID * in_pEvents, 00524 long in_cEvents, 00525 IEventList ** out_ppEventList 00526 ) const = 0; 00527 00530 virtual bool GetEvents( 00531 LPCWSTR * in_pszEvents, 00532 long in_cEvents, 00533 IEventList ** out_ppEventList 00534 ) const = 0; 00535 00537 00540 00541 00544 virtual bool GetDialogueEventList( 00545 IDialogueEventList ** out_ppDialogueEventList 00546 ) const = 0; 00547 00550 virtual bool GetDialogueEvent( 00551 AkUniqueID in_dialogueEventID, 00552 IDialogueEvent ** out_ppDialogueEvent 00553 ) const = 0; 00554 00557 virtual bool GetDialogueEvent( 00558 LPCWSTR in_pszDialogueEvent, 00559 IDialogueEvent ** out_ppDialogueEvent 00560 ) const = 0; 00561 00564 virtual bool GetDialogueEvents( 00565 const AkUniqueID * in_pDialogueEvents, 00566 long in_cDialogueEvents, 00567 IDialogueEventList ** out_ppDialogueEventList 00568 ) const = 0; 00569 00572 virtual bool GetDialogueEvents( 00573 LPCWSTR * in_pszDialogueEvents, 00574 long in_cDialogueEvents, 00575 IDialogueEventList ** out_ppDialogueEventList 00576 ) const = 0; 00577 00579 00582 00583 00586 virtual bool GetSoundObject( 00587 AkUniqueID in_soundObjectID, 00588 ISoundObject ** out_ppSoundObject 00589 ) const = 0; 00590 00593 virtual bool GetSoundObjects( 00594 const AkUniqueID * in_pSoundObjects, 00595 long in_cSoundObjects, 00596 ISoundObjectList ** out_ppSoundObjectList 00597 ) const = 0; 00598 00600 00603 00604 00607 virtual bool GetStateGroupList( 00608 IStateGroupList ** out_ppStateGroupList 00609 ) const = 0; 00610 00613 virtual bool GetStateGroup( 00614 AkUniqueID in_stateGroupID, 00615 IStateGroup ** out_ppStateGroup 00616 ) const = 0; 00617 00620 virtual bool GetStateGroup( 00621 LPCWSTR in_pszStateGroup, 00622 IStateGroup ** out_ppStateGroup 00623 ) const = 0; 00624 00627 virtual bool GetStateGroups( 00628 const AkUniqueID * in_pStateGroups, 00629 long in_cStateGroups, 00630 IStateGroupList ** out_ppStateGroupList 00631 ) const = 0; 00632 00635 virtual bool GetStateGroups( 00636 LPCWSTR * in_pszStateGroups, 00637 long in_cStateGroups, 00638 IStateGroupList ** out_ppStateGroupList 00639 ) const = 0; 00640 00642 00645 00646 00649 virtual bool GetSwitchGroupList( 00650 ISwitchGroupList ** out_ppSwitchGroupList 00651 ) const = 0; 00652 00655 virtual bool GetSwitchGroup( 00656 AkUniqueID in_switchGroupID, 00657 ISwitchGroup ** out_ppSwitchGroup 00658 ) const = 0; 00659 00662 virtual bool GetSwitchGroup( 00663 LPCWSTR in_pszSwitchGroup, 00664 ISwitchGroup ** out_ppSwitchGroup 00665 ) const = 0; 00666 00669 virtual bool GetSwitchGroups( 00670 const AkUniqueID * in_pSwitchGroups, 00671 long in_cSwitchGroups, 00672 ISwitchGroupList ** out_ppSwitchGroupList 00673 ) const = 0; 00674 00677 virtual bool GetSwitchGroups( 00678 LPCWSTR * in_pszSwitchGroups, 00679 long in_cSwitchGroups, 00680 ISwitchGroupList ** out_ppSwitchGroupList 00681 ) const = 0; 00682 00684 00691 00692 00695 virtual bool GetGameParameterList( 00696 IGameParameterList ** out_ppGameParameterList 00697 ) const = 0; 00698 00701 virtual bool GetGameParameter( 00702 AkUniqueID in_gameParameterID, 00703 IGameParameter ** out_ppGameParameter 00704 ) const = 0; 00705 00708 virtual bool GetGameParameter( 00709 LPCWSTR in_pszGameParameter, 00710 IGameParameter ** out_ppGameParameter 00711 ) const = 0; 00712 00715 virtual bool GetGameParameters( 00716 const AkUniqueID * in_pGameParameters, 00717 long in_cGameParameters, 00718 IGameParameterList ** out_ppGameParameterList 00719 ) const = 0; 00720 00723 virtual bool GetGameParameters( 00724 LPCWSTR * in_pszGameParameters, 00725 long in_cGameParameters, 00726 IGameParameterList ** out_ppGameParameterList 00727 ) const = 0; 00728 00730 00733 virtual bool GetConversionSettingsList( 00734 IConversionSettingsList ** out_ppConversionSettingsList 00735 ) const = 0; 00736 00739 00740 00743 virtual bool GetTriggerList( 00744 ITriggerList ** out_ppTriggerList 00745 ) const = 0; 00746 00749 virtual bool GetTrigger( 00750 AkUniqueID in_triggerID, 00751 ITrigger ** out_ppTrigger 00752 ) const = 0; 00753 00756 virtual bool GetTrigger( 00757 LPCWSTR in_pszTrigger, 00758 ITrigger ** out_ppTrigger 00759 ) const = 0; 00760 00763 virtual bool GetTriggers( 00764 const AkUniqueID * in_pTriggers, 00765 long in_cTriggers, 00766 ITriggerList ** out_ppTriggerList 00767 ) const = 0; 00768 00771 virtual bool GetTriggers( 00772 LPCWSTR * in_pszTriggers, 00773 long in_cTriggers, 00774 ITriggerList ** out_ppTriggerList 00775 ) const = 0; 00776 00778 00787 00788 00791 virtual bool GetArgument( 00792 AkUniqueID in_ArgumentID, 00793 IArgument ** out_ppArgument 00794 ) const = 0; 00795 00798 virtual bool GetArguments( 00799 const AkUniqueID * in_pArguments, 00800 long in_cArguments, 00801 IArgumentList ** out_ppArgumentList 00802 ) const = 0; 00803 00805 00808 00809 00812 virtual bool GetAuxBusList( 00813 IAuxBusList ** out_ppAuxBusList 00814 ) const = 0; 00815 00818 virtual bool GetAuxBus( 00819 AkUniqueID in_AuxBusID, 00820 IAuxBus ** out_ppAuxBus 00821 ) const = 0; 00822 00825 virtual bool GetAuxBus( 00826 LPCWSTR in_pszAuxBus, 00827 IAuxBus ** out_ppAuxBus 00828 ) const = 0; 00829 00832 virtual bool GetAuxBus( 00833 const AkUniqueID * in_pAuxBus, 00834 long in_cAuxBus, 00835 IAuxBusList ** out_ppAuxBusList 00836 ) const = 0; 00837 00840 virtual bool GetAuxBus( 00841 LPCWSTR * in_pszAuxBus, 00842 long in_cAuxBus, 00843 IAuxBusList ** out_ppAuxBusList 00844 ) const = 0; 00845 00847 00850 00851 00854 virtual bool GetSoundBank( 00855 AkUniqueID in_SoundBankID, 00856 ISoundBank ** out_ppArgument 00857 ) const = 0; 00858 00861 virtual bool GetSoundBankList( 00862 ISoundBankList ** out_ppSoundBankList 00863 ) const = 0; 00864 00866 00869 00870 00881 virtual bool GetGameObjectList( 00882 IGameObjectList ** out_ppGameObjectList 00883 ) const = 0; 00884 00886 00889 00890 00893 virtual bool GetEventOriginalFileList( 00894 LPCWSTR in_pszEvent, 00895 IOriginalFileList ** out_ppOriginalFileList 00896 ) const = 0; 00897 00900 virtual bool GetDialogueEventOriginalFileList( 00901 LPCWSTR in_pszDialogueEvent, 00902 IOriginalFileList ** out_ppOriginalFileList 00903 ) const = 0; 00904 00906 00909 00910 00914 virtual bool EventHasVoiceContent( 00915 LPCWSTR in_pszEvent 00916 ) const = 0; 00917 00921 virtual bool DialogueEventHasVoiceContent( 00922 LPCWSTR in_pszDialogueEvent 00923 ) const = 0; 00924 00926 00928 00931 00932 00936 virtual bool ListenAttenuation( 00937 const AkUniqueID * in_pSoundObjects, 00938 long in_cSoundObjects 00939 ) = 0; 00940 00942 00945 00946 00948 enum DnDType 00949 { 00950 TypeUnknown = 0, 00951 TypeEvent = 1, 00952 TypeStates = 2, 00953 TypeSwitches = 3, 00954 TypeGameParameters = 4, 00955 TypeTriggers = 5, 00956 TypeAuxBus = 6, 00957 TypeDialogueEvent = 7, 00958 TypeSoundBank = 8 00959 }; 00960 00963 virtual DnDType GetDnDType( 00964 IDataObject * in_pDataObject 00965 ) = 0; 00966 00969 virtual bool ProcessEventDnD( 00970 IDataObject * in_pDataObject, 00971 IEventList ** out_ppEventList 00972 ) = 0; 00973 00976 virtual bool ProcessStateGroupDnD( 00977 IDataObject * in_pDataObject, 00978 IStateGroupList ** out_ppStateGroupList 00979 ) = 0; 00980 00983 virtual bool ProcessSwitchGroupDnD( 00984 IDataObject * in_pDataObject, 00985 ISwitchGroupList ** out_ppSwitchGroupList 00986 ) = 0; 00987 00990 virtual bool ProcessGameParameterDnD( 00991 IDataObject * in_pDataObject, 00992 IGameParameterList ** out_ppGameParameterList 00993 ) = 0; 00994 00997 virtual bool ProcessTriggerDnD( 00998 IDataObject * in_pDataObject, 00999 ITriggerList ** out_ppTriggerList 01000 ) = 0; 01001 01004 virtual bool ProcessAuxBusDnD( 01005 IDataObject * in_pDataObject, 01006 IAuxBusList ** out_ppAuxBusList 01007 ) = 0; 01008 01011 virtual bool ProcessDialogueEventDnD( 01012 IDataObject * in_pDataObject, 01013 IDialogueEventList ** out_ppDialogueEventList 01014 ) = 0; 01015 01018 virtual bool ProcessSoundBankDnD( 01019 IDataObject * in_pDataObject, 01020 ISoundBankList ** out_ppSoundBankList 01021 ) = 0; 01022 01024 01027 01028 01033 virtual bool ProcessDefinitionFiles( 01034 LPCWSTR * in_pszPaths, 01035 long in_cFiles 01036 ) = 0; 01037 01042 virtual bool GenerateSoundBanks( 01043 LPCWSTR * in_pszBanks, 01044 long in_cBanks, 01045 LPCWSTR * in_pszPlatforms, 01046 long in_cPlatforms, 01047 LPCWSTR * in_pszLanguages, 01048 long in_cLanguages 01049 ) = 0; 01050 01052 01057 virtual bool ConvertExternalSources( 01058 LPCWSTR * in_pszPlatforms, 01059 long in_cPlatforms, 01060 LPCWSTR * in_pszFileSourcesInput, 01061 long in_cFileSourcesInput, 01062 LPCWSTR * in_pszFileSourcesOutput, 01063 long in_cFileSourcesOutput 01064 ) = 0; 01065 01067 enum ShowLocation 01068 { 01069 ShowLocation_Editor = 1, 01070 ShowLocation_MultiEditor, 01071 ShowLocation_ListView, 01072 ShowLocation_ReferenceView, 01073 ShowLocation_SchematicView, 01074 ShowLocation_ProjectExplorer0, 01075 ShowLocation_ProjectExplorer1, 01076 ShowLocation_ProjectExplorer2, 01077 ShowLocation_ProjectExplorer3, 01078 ShowLocation_ProjectExplorer4, 01079 ShowLocation_Transport 01080 }; 01081 01084 virtual bool ShowWwiseObject( 01085 const GUID* in_pGuids, 01086 long in_cGuids, 01087 ShowLocation in_eLocation 01088 ) = 0; 01089 01091 01094 01095 01101 virtual bool GetAkUniqueID( 01102 const GUID& in_guid, 01103 AkUniqueID& out_uniqueID 01104 ) const = 0; 01105 01108 virtual bool GetWwiseObjectPath( 01109 const AK::SoundFrame::ISFObject* in_pObject, 01110 const AK::SoundFrame::ISFObject* in_pParent, 01111 LPWSTR out_szBuffer, 01112 long in_lLength 01113 ) const = 0; 01114 01116 }; 01117 01121 class IClient 01122 { 01123 public: 01125 enum Notif 01126 { 01127 Notif_Added, 01128 Notif_Removed, 01129 Notif_Changed, 01130 Notif_Reset, 01131 Notif_Push 01132 }; 01133 01135 virtual void OnConnect( 01136 bool in_bConnect 01137 ) = 0; 01138 01140 virtual void OnEventNotif( 01141 Notif in_eNotif, 01142 AkUniqueID in_eventID 01143 ) = 0; 01144 01149 virtual void OnDialogueEventNotif( 01150 Notif in_eNotif, 01151 AkUniqueID in_dialogueEventID 01152 ) = 0; 01153 01155 virtual void OnSoundObjectNotif( 01156 Notif in_eNotif, 01157 AkUniqueID in_soundObjectID 01158 ) = 0; 01159 01165 virtual void OnStatesNotif( 01166 Notif in_eNotif, 01167 AkUniqueID in_stateGroupID 01168 ) = 0; 01169 01178 virtual void OnSwitchesNotif( 01179 Notif in_eNotif, 01180 AkUniqueID in_switchGroupID 01181 ) = 0; 01182 01184 virtual void OnGameParametersNotif( 01185 Notif in_eNotif, 01186 AkUniqueID in_gameParameterID 01187 ) = 0; 01188 01190 virtual void OnTriggersNotif( 01191 Notif in_eNotif, 01192 AkUniqueID in_triggerID 01193 ) = 0; 01194 01200 virtual void OnArgumentsNotif( 01201 Notif in_eNotif, 01202 AkUniqueID in_argumentID 01203 ) = 0; 01204 01206 virtual void OnAuxBusNotif( 01207 Notif in_eNotif, 01208 AkUniqueID in_AuxBusID 01209 ) = 0; 01210 01212 virtual void OnSoundBankNotif( 01213 Notif in_eNotif, 01214 AkUniqueID in_AuxBusID 01215 ) = 0; 01216 01225 virtual void OnGameObjectsNotif( 01226 Notif in_eNotif, 01227 AkGameObjectID in_gameObjectID 01228 ) = 0; 01229 }; 01230 01233 bool Create( 01234 IClient * in_pClient, 01235 ISoundFrame ** out_ppSoundFrame 01236 ); 01237 } 01238 } 01239 01240 #endif // _AK_SOUNDFRAME_SF_H
Questions? Problems? Need more info? Contact us, and we can help!
Visit our Support pageRegister your project and we'll help you get started with no strings attached!
Get started with Wwise