Plasma Engine  2.0
Loading...
Searching...
No Matches
AudioMiddleware.h
1#pragma once
2
3#include <AudioSystemPlugin/AudioSystemPluginDLL.h>
4
5#include <AudioSystemPlugin/Core/AudioSystemData.h>
6
7#include <Foundation/IO/OpenDdlReader.h>
8#include <Foundation/IO/OpenDdlUtils.h>
9#include <Foundation/Time/Time.h>
10
13class PL_AUDIOSYSTEMPLUGIN_DLL plAudioMiddleware
14{
15public:
16 // Audio Middleware Interface
17
18 virtual ~plAudioMiddleware() = default;
19
23
27 virtual plResult Startup() = 0;
28
31 virtual void Update(plTime delta) = 0;
32
36 virtual plResult Shutdown() = 0;
37
42 virtual plResult Release() = 0;
43
46 virtual plResult StopAllSounds() = 0;
47
54 virtual plResult AddEntity(plAudioSystemEntityData* pEntityData, const char* szEntityName) = 0;
55
59 virtual plResult ResetEntity(plAudioSystemEntityData* pEntityData) = 0;
60
65
72
78
83 virtual plResult LoadTrigger(plAudioSystemEntityData* pEntityData, const plAudioSystemTriggerData* pTriggerData, plAudioSystemEventData* pEventData) = 0;
84
90 virtual plResult ActivateTrigger(plAudioSystemEntityData* pEntityData, const plAudioSystemTriggerData* pTriggerData, plAudioSystemEventData* pEventData) = 0;
91
97 virtual plResult UnloadTrigger(plAudioSystemEntityData* pEntityData, const plAudioSystemTriggerData* pTriggerData) = 0;
98
103 virtual plResult StopEvent(plAudioSystemEntityData* pEntityData, const plAudioSystemEventData* pEventData) = 0;
104
109
115 virtual plResult SetRtpc(plAudioSystemEntityData* pEntityData, const plAudioSystemRtpcData* pRtpcData, float fValue) = 0;
116
121 virtual plResult ResetRtpc(plAudioSystemEntityData* pEntityData, const plAudioSystemRtpcData* pRtpcData) = 0;
122
127 virtual plResult SetSwitchState(plAudioSystemEntityData* pEntityData, const plAudioSystemSwitchStateData* pSwitchStateData) = 0;
128
134 virtual plResult SetObstructionAndOcclusion(plAudioSystemEntityData* pEntityData, float fObstruction, float fOcclusion) = 0;
135
141 virtual plResult SetEnvironmentAmount(plAudioSystemEntityData* pEntityData, const plAudioSystemEnvironmentData* pEnvironmentData, float fAmount) = 0;
142
149 virtual plResult AddListener(plAudioSystemListenerData* pListenerData, const char* szListenerName) = 0;
150
155
161
167
171 virtual plResult LoadBank(plAudioSystemBankData* pBankData) = 0;
172
177
184 virtual plAudioSystemEntityData* CreateWorldEntity(plAudioSystemDataID uiEntityId) = 0;
185
189 virtual plAudioSystemEntityData* CreateEntityData(plAudioSystemDataID uiEntityId) = 0;
190
195
199 virtual plAudioSystemListenerData* CreateListenerData(plAudioSystemDataID uiListenerId) = 0;
200
205
209 virtual plAudioSystemEventData* CreateEventData(plAudioSystemDataID uiEventId) = 0;
210
215
220
225
230
235
240
245
249 virtual plResult SetLanguage(const char* szLanguage) = 0;
250
254 [[nodiscard]] virtual const char* GetMiddlewareName() const = 0;
255
258 [[nodiscard]] virtual float GetMasterGain() const = 0;
259
262 [[nodiscard]] virtual bool GetMute() const = 0;
263
266 virtual void OnMasterGainChange(float fGain) = 0;
267
270 virtual void OnMuteChange(bool bMute) = 0;
271
273 virtual void OnLoseFocus() = 0;
274
276 virtual void OnGainFocus() = 0;
277};
The Audio Middleware Interface. This interface should be implemented by the ATL middleware to communi...
Definition AudioMiddleware.h:14
virtual plResult DestroySwitchStateData(plAudioSystemSwitchStateData *pSwitchStateData)=0
Destroys an audio switch state and release memory.
virtual plResult SetObstructionAndOcclusion(plAudioSystemEntityData *pEntityData, float fObstruction, float fOcclusion)=0
Sets the obstruction and occlusion values on an entity.
virtual plResult Shutdown()=0
Deinitializes and stop the audio middleware.
virtual plResult SetEnvironmentAmount(plAudioSystemEntityData *pEntityData, const plAudioSystemEnvironmentData *pEnvironmentData, float fAmount)=0
Sets the amount of an audio environment effect associated on an entity.
virtual plResult DestroyEventData(plAudioSystemEventData *pEventData)=0
Destroys an audio event and release memory.
virtual plResult RemoveListener(plAudioSystemListenerData *pListenerData)=0
Remove/unregister a listener from the audio middleware. This action disable the possibility to update...
virtual plResult SetEntityTransform(plAudioSystemEntityData *pEntityData, const plAudioSystemTransform &Transform)=0
Sets the global position (world position) of an entity.
virtual plAudioSystemListenerData * CreateListenerData(plAudioSystemDataID uiListenerId)=0
Creates an audio listener that is attached to a game object.
virtual plResult SetLanguage(const char *szLanguage)=0
Sets the language used by the audio middleware.
virtual plResult ResetEventData(plAudioSystemEventData *pEventData)=0
Resets the audio event state, so it can safely recycled in the pool.
virtual plResult SetListenerTransform(plAudioSystemListenerData *pListenerData, const plAudioSystemTransform &Transform)=0
Sets the global transform (wold position and orientation) of a listener.
virtual plResult Startup()=0
Initializes the audio middleware.
virtual plResult DestroyEntityData(plAudioSystemEntityData *pEntityData)=0
Destroys an audio entity and release memory.
virtual bool GetMute() const =0
Gets the audio middleware's muted state.
virtual plResult SetSwitchState(plAudioSystemEntityData *pEntityData, const plAudioSystemSwitchStateData *pSwitchStateData)=0
Sets an audio switch to the specified state on an entity.
virtual plResult ResetEntity(plAudioSystemEntityData *pEntityData)=0
Resets an entity state.
virtual plAudioSystemEntityData * CreateEntityData(plAudioSystemDataID uiEntityId)=0
Creates an audio entity that is attached to a game object.
virtual plResult DestroyRtpcData(plAudioSystemRtpcData *pRtpcData)=0
Destroys an audio rtpc and release memory.
virtual plAudioSystemEventData * CreateEventData(plAudioSystemDataID uiEventId)=0
Creates an audio event that is attached to a game object.
virtual plResult ResetRtpc(plAudioSystemEntityData *pEntityData, const plAudioSystemRtpcData *pRtpcData)=0
Resets an audio RTPC to the default value on an entity.
virtual void OnLoseFocus()=0
Called each time the game application window loses focus.
virtual plResult StopAllEvents(plAudioSystemEntityData *pEntityData)=0
Stops all events active on the given entity.
virtual plResult DestroyListenerData(plAudioSystemListenerData *pListenerData)=0
Destroys an audio listener and release memory.
virtual void OnMuteChange(bool bMute)=0
Called when the audio middleware should toggle the muted state. \paarm bMute The muted state.
virtual plAudioSystemEntityData * CreateWorldEntity(plAudioSystemDataID uiEntityId)=0
Creates a world entity. This is a special entity used by non-spatial sounds. The engine will take car...
virtual plResult StopEvent(plAudioSystemEntityData *pEntityData, const plAudioSystemEventData *pEventData)=0
Stops an event on the given entity.
virtual plResult UnloadBank(plAudioSystemBankData *pBankData)=0
Unloads a bank file.
virtual plResult AddListener(plAudioSystemListenerData *pListenerData, const char *szListenerName)=0
Add/register a listener in the audio middleware. This is needed to let the middleware know where to r...
virtual plResult LoadTrigger(plAudioSystemEntityData *pEntityData, const plAudioSystemTriggerData *pTriggerData, plAudioSystemEventData *pEventData)=0
Loads a trigger for a further activation. All the data and media needed by the trigger will be loaded...
virtual plResult StopAllSounds()=0
Stops all the sounds actually played by the audio middleware.
virtual plResult ResetListener(plAudioSystemListenerData *pListenerData)=0
Resets a listener state.
virtual plResult SetRtpc(plAudioSystemEntityData *pEntityData, const plAudioSystemRtpcData *pRtpcData, float fValue)=0
Sets an audio RTPC to the specified value on an entity.
virtual plResult ActivateTrigger(plAudioSystemEntityData *pEntityData, const plAudioSystemTriggerData *pTriggerData, plAudioSystemEventData *pEventData)=0
Triggers an event on an entity. A trigger is everything which can affect the state of an event.
virtual plResult UnloadTrigger(plAudioSystemEntityData *pEntityData, const plAudioSystemTriggerData *pTriggerData)=0
Unload the trigger. This is called when the trigger and all data loaded during LoadTrigger need to be...
virtual void OnGainFocus()=0
Called each time the game application window gains focus.
virtual plResult AddEntity(plAudioSystemEntityData *pEntityData, const char *szEntityName)=0
Add/register an entity in the audio middleware. This is needed in order to provide transformation val...
virtual void OnMasterGainChange(float fGain)=0
Called each time the master gain value change.
virtual plResult UpdateEntity(plAudioSystemEntityData *pEntityData)=0
Updates an entity state.
virtual const char * GetMiddlewareName() const =0
Gets the audio middleware implementation name. e.g. "FMOD", "Wwise", "Amplitude", etc.
virtual float GetMasterGain() const =0
Gets the audio middleware's master gain.
virtual plResult DestroyEnvironmentData(plAudioSystemEnvironmentData *pEnvironmentData)=0
Destroys an audio environment effect and release memory.
virtual plResult Release()=0
Destroys all the resources allocated by the audio middleware. This is usually called after Shutdown.
virtual plResult DestroyBank(plAudioSystemBankData *pBankData)=0
Destroys an audio bank and release memory.
virtual plResult DestroyTriggerData(plAudioSystemTriggerData *pTriggerData)=0
Destroys an audio trigger and release memory.
virtual plResult LoadBank(plAudioSystemBankData *pBankData)=0
Loads a bank file.
virtual plResult RemoveEntity(plAudioSystemEntityData *pEntityData)=0
Remove/unregister an entity from the audio middleware. This action disable the possibility to execute...
virtual plResult LoadConfiguration(const plOpenDdlReaderElement &reader)=0
Loads the middleware-specif configuration from the ATL config file.
virtual void Update(plTime delta)=0
Updates the audio middleware.
Base class for an audio middleware bank file.
Definition AudioSystemData.h:224
Base class for an audio middleware entity.
Definition AudioSystemData.h:153
Base class for an audio middleware environment.
Definition AudioSystemData.h:198
Base class for an audio middleware event.
Definition AudioSystemData.h:207
Base class for an audio middleware listener.
Definition AudioSystemData.h:162
Base class for an audio middleware RTPC.
Definition AudioSystemData.h:180
Base class for an audio middleware switch state.
Definition AudioSystemData.h:189
Base class for an audio middleware trigger.
Definition AudioSystemData.h:171
Represents a single 'object' in a DDL document, e.g. either a custom type or a primitives list.
Definition OpenDdlReader.h:11
Stores the transformation data for an audio entity.
Definition AudioSystemData.h:17
Default enum for returning failure or success, instead of using a bool.
Definition Types.h:54
The time class encapsulates a double value storing the time in seconds.
Definition Time.h:12