1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
#include "AmbientSound.h"
#include "../../ILevelHandler.h"
#include "../Player.h"
namespace Jazz2::Actors::Environment
{
AmbientSound::AmbientSound()
{
}
AmbientSound::~AmbientSound()
{
// TODO: Fade-out
if (_sound != nullptr) {
_sound->stop();
_sound = nullptr;
}
}
void AmbientSound::Preload(const ActorActivationDetails& details)
{
PreloadMetadataAsync("Common/AmbientSound"_s);
}
Task<bool> AmbientSound::OnActivatedAsync(const ActorActivationDetails& details)
{
// TODO: Implement Fade:1|Sine:1
_sfx = details.Params[0];
_gain = 0.2f * (details.Params[1] / 255.0f);
SetState(ActorState::ForceDisableCollisions, true);
SetState(ActorState::CanBeFrozen | ActorState::CollideWithTileset | ActorState::CollideWithSolidObjects | ActorState::CollideWithOtherActors | ActorState::ApplyGravitation, false);
async_await RequestMetadataAsync("Common/AmbientSound"_s);
switch (_sfx) {
case 0: _sound = PlaySfx("AmbientWind"_s, _gain); break;
case 1: _sound = PlaySfx("AmbientFire"_s, _gain); break;
case 2: _sound = PlaySfx("AmbientScienceNoise"_s, _gain); break;
}
// TODO: Fade-in
if (_sound != nullptr) {
_sound->setLooping(true);
}
async_return true;
}
}
|