| #include "rive/audio_event.hpp" | |
| #include "rive/assets/audio_asset.hpp" | |
| #include "rive/audio/audio_engine.hpp" | |
| #include "rive/audio/audio_sound.hpp" | |
| #include "rive/artboard.hpp" | |
| using namespace rive; | |
| void AudioEvent::trigger(const CallbackData& value) | |
| { | |
| Super::trigger(value); | |
| #ifdef WITH_RIVE_AUDIO | |
| auto audioAsset = (AudioAsset*)m_fileAsset; | |
| if (audioAsset == nullptr) | |
| { | |
| return; | |
| } | |
| auto audioSource = audioAsset->audioSource(); | |
| if (audioSource == nullptr) | |
| { | |
| return; | |
| } | |
| auto engine = | |
| #ifdef EXTERNAL_RIVE_AUDIO_ENGINE | |
| artboard()->audioEngine() != nullptr ? artboard()->audioEngine() : | |
| #endif | |
| AudioEngine::RuntimeEngine(); | |
| engine->play(audioSource, engine->timeInFrames(), 0, 0); | |
| #endif | |
| } | |
| StatusCode AudioEvent::import(ImportStack& importStack) | |
| { | |
| auto result = registerReferencer(importStack); | |
| if (result != StatusCode::Ok) | |
| { | |
| return result; | |
| } | |
| return Super::import(importStack); | |
| } | |
| void AudioEvent::setAsset(FileAsset* asset) | |
| { | |
| if (asset->is<AudioAsset>()) | |
| { | |
| FileAssetReferencer::setAsset(asset); | |
| } | |
| } | |
| Core* AudioEvent::clone() const | |
| { | |
| AudioEvent* twin = AudioEventBase::clone()->as<AudioEvent>(); | |
| if (m_fileAsset != nullptr) | |
| { | |
| twin->setAsset(m_fileAsset); | |
| } | |
| return twin; | |
| } | |
| uint32_t AudioEvent::assetId() { return AudioEventBase::assetId(); } |