diff options
Diffstat (limited to 'Runtime/Audio/AudioDistortionFilter.cpp')
-rw-r--r-- | Runtime/Audio/AudioDistortionFilter.cpp | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/Runtime/Audio/AudioDistortionFilter.cpp b/Runtime/Audio/AudioDistortionFilter.cpp new file mode 100644 index 0000000..c59aa28 --- /dev/null +++ b/Runtime/Audio/AudioDistortionFilter.cpp @@ -0,0 +1,52 @@ +#include "UnityPrefix.h" +#include "AudioDistortionFilter.h" +#include "Runtime/Utilities/Utility.h" + +#if ENABLE_AUDIO_FMOD + +AudioDistortionFilter::AudioDistortionFilter (MemLabelId label, ObjectCreationMode mode) : +Super(label, mode), +m_DistortionLevel(0.5f) +{ + m_Type = FMOD_DSP_TYPE_DISTORTION; +} + +void AudioDistortionFilter::Reset() +{ + Super::Reset(); + m_DistortionLevel = 0.5f; +} + +AudioDistortionFilter::~AudioDistortionFilter() +{} + +void AudioDistortionFilter::AddToManager() +{ + Super::AddToManager(); +} + +void AudioDistortionFilter::CheckConsistency() +{ + Super::CheckConsistency(); + m_DistortionLevel = clamp(m_DistortionLevel,0.0f,1.0f); +} + +void AudioDistortionFilter::Update() +{ + if (m_DSP) + m_DSP->setParameter(FMOD_DSP_DISTORTION_LEVEL, m_DistortionLevel); +} + + +template<class TransferFunc> +void AudioDistortionFilter::Transfer (TransferFunc& transfer) +{ + Super::Transfer (transfer); + TRANSFER(m_DistortionLevel); +} + + +IMPLEMENT_CLASS (AudioDistortionFilter) +IMPLEMENT_OBJECT_SERIALIZE (AudioDistortionFilter) + +#endif
\ No newline at end of file |