3#include <AudioSystemPlugin/AudioSystemPluginDLL.h>
5#include <AudioSystemPlugin/Components/AudioSystemComponent.h>
6#include <AudioSystemPlugin/Core/AudioSystemData.h>
10constexpr plUInt32 k_MaxOcclusionRaysCount = 32;
24 struct ObstructionOcclusionValue
33 [[nodiscard]]
float GetValue()
const;
39 void SetTarget(
float fTarget,
bool bReset =
false);
45 void Update(
float fSmoothFactor = -1.0f);
49 void Reset(
float fInitialValue = 0.0f);
52 struct ObstructionOcclusionState
57 plUInt8 m_uiNextRayIndex{0};
59 ObstructionOcclusionValue m_ObstructionValue;
60 ObstructionOcclusionValue m_OcclusionValue;
66 void RemoveObstructionOcclusionState(plUInt32 uiIndex);
67 [[nodiscard]]
const ObstructionOcclusionState& GetObstructionOcclusionState(plUInt32 uiIndex)
const {
return m_ObstructionOcclusionStates[uiIndex]; }
93 void OnActivated()
override;
95 void OnDeactivated()
override;
97 void SerializeComponent(
plWorldWriter& stream)
const override;
103 void plAudioSystemComponentIsAbstract()
override {}
113 void SetOcclusionCollisionLayer(plUInt8 uiCollisionLayer);
125 void SetPlayTrigger(
plString sName);
128 [[nodiscard]]
const plString& GetPlayTrigger()
const;
134 void SetStopTrigger(
plString sName);
137 [[nodiscard]]
const plString& GetStopTrigger()
const;
145 [[nodiscard]]
bool IsLoading()
const;
149 [[nodiscard]]
bool IsReady()
const;
153 [[nodiscard]]
bool IsStarting()
const;
157 [[nodiscard]]
bool IsPlaying()
const;
162 [[nodiscard]]
bool IsStopping()
const;
166 [[nodiscard]]
bool IsStopped()
const;
170 [[nodiscard]]
bool IsUnloading()
const;
176 void Play(
bool bSync =
false);
181 void Stop(
bool bSync =
false);
184 void LoadPlayTrigger(
bool bSync);
185 void LoadStopTrigger(
bool bSync,
bool bDeinit);
186 void UnloadPlayTrigger(
bool bSync,
bool bDeinit =
false);
187 void UnloadStopTrigger(
bool bSync,
bool bDeinit =
false);
189 void UpdateOcclusion();
192 void StopInternal(
bool bSync =
false,
bool bDeinit =
false);
196 plAudioSystemDataID m_uiPlayEventId = 0;
197 plAudioSystemDataID m_uiStopEventId = 0;
203 plUInt8 m_uiOcclusionCollisionLayer;
204 plUInt32 m_uiObstructionOcclusionStateIndex;
207 bool m_bPlayOnActivate;
209 bool m_bPlayTriggerLoaded{
false};
210 bool m_bStopTriggerLoaded{
false};
212 bool m_bHasPlayedOnActivate{
false};
214 bool m_bCanPlay{
false};
Base class for audio system components that depends on an audio proxy component.
Definition AudioSystemComponent.h:46
Audio System Component that triggers an audio event.
Definition AudioTriggerComponent.h:86
plUInt8 GetOcclusionCollisionLayer() const
Gets the current occlusion collision layer.
Definition AudioTriggerComponent.h:116
Definition AudioTriggerComponent.h:13
Definition ComponentManager.h:88
Definition DynamicArray.h:81
Definition PhysicsWorldModule.h:109
Wraps a C-style array, which has a fixed size at compile-time, with a more convenient interface.
Definition StaticArray.h:13
A world encapsulates a scene graph of game objects and various component managers and their component...
Definition World.h:22
virtual void OnSimulationStarted()
This method is called at the start of the next world update when the world is simulated....
Definition WorldModule.h:105
virtual void Initialize()
This method is called after the constructor. A derived type can override this method to do initializa...
Definition WorldModule.h:98
virtual void Deinitialize()
This method is called before the destructor. A derived type can override this method to do deinitiali...
Definition WorldModule.h:101
Reads a world description from a stream. Allows to instantiate that world multiple times in different...
Definition WorldReader.h:47
Stores an entire plWorld in a stream.
Definition WorldWriter.h:13
A custom enum implementation that allows to define the underlying storage type to control its memory ...
Definition Enum.h:37
Definition WorldModule.h:33