Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //=============================================================================
- // TriggeredAmbSound.
- // A sound source which can be triggered on or off.
- //=============================================================================
- class TriggeredAmbSound expands AmbientSound;
- var() float TurnOnTime; // Time sound takes to change from off to on
- var() float TurnOffTime; // Time sound takes to change from on to off
- var() bool bInitiallyOn; // Whether it's initially on
- var() float RemainOnTime; // How long the TriggerPound effect lasts
- var float InitialSoundVolume; // Initial volume
- var Sound InitialAmbientSound; // Initial sound
- var float Alpha;
- var bool bNextOn;
- var Actor SavedTrigger;
- var float PoundTime;
- event BeginPlay()
- {
- InitialSoundVolume = SoundVolume;
- InitialAmbientSound = AmbientSound;
- bNextOn = bInitiallyOn;
- if (bInitiallyOn)
- Alpha = 1;
- else
- Alpha = 0;
- }
- event Tick(float DeltaTime)
- {
- if (bNextOn)
- {
- Alpha += DeltaTime / FMax(TurnOnTime, DeltaTime);
- if (Alpha >= 1)
- {
- Alpha = 1;
- Disable('Tick');
- if (SavedTrigger != none)
- SavedTrigger.EndEvent();
- }
- }
- else
- {
- Alpha -= DeltaTime / FMax(TurnOffTime, DeltaTime);
- if (Alpha <= 0)
- {
- Alpha = 0;
- Disable('Tick');
- if (SavedTrigger != none)
- SavedTrigger.EndEvent();
- }
- }
- UpdateAmbientSound();
- }
- // Trigger turns the sound on
- state() TriggerTurnsOn
- {
- event Trigger(Actor A, Pawn EventInstigator)
- {
- if (SavedTrigger != none)
- SavedTrigger.EndEvent();
- SavedTrigger = A;
- if (SavedTrigger != none)
- SavedTrigger.BeginEvent();
- bNextOn = true;
- Enable('Tick');
- }
- }
- // Trigger turns the sound off
- state() TriggerTurnsOff
- {
- event Trigger(Actor A, Pawn EventInstigator)
- {
- if (SavedTrigger != none)
- SavedTrigger.EndEvent();
- SavedTrigger = A;
- if (SavedTrigger != none)
- SavedTrigger.BeginEvent();
- bNextOn = false;
- Enable('Tick');
- }
- }
- // Trigger toggles the sound
- state() TriggerToggle
- {
- event Trigger(Actor A, Pawn EventInstigator)
- {
- if (SavedTrigger != none)
- SavedTrigger.EndEvent();
- SavedTrigger = A;
- if (SavedTrigger != none)
- SavedTrigger.BeginEvent();
- bNextOn = !bNextOn;
- Enable('Tick');
- }
- }
- // Trigger controls the sound
- state() TriggerControl
- {
- event Trigger(Actor A, Pawn EventInstigator)
- {
- if (SavedTrigger != none)
- SavedTrigger.EndEvent();
- SavedTrigger = A;
- if (SavedTrigger != none)
- SavedTrigger.BeginEvent();
- bNextOn = !bInitiallyOn;
- Enable('Tick');
- }
- event UnTrigger(Actor A, Pawn EventInstigator)
- {
- if (SavedTrigger != none)
- SavedTrigger.EndEvent();
- SavedTrigger = A;
- if (SavedTrigger != none)
- SavedTrigger.BeginEvent();
- bNextOn = bInitiallyOn;
- Enable('Tick');
- }
- }
- state() TriggerPound
- {
- event Timer()
- {
- if (RemainOnTime > 0 && PoundTime >= RemainOnTime)
- return;
- bNextOn = !bNextOn;
- if (bNextOn)
- {
- PoundTime += TurnOnTime;
- SetTimer(TurnOnTime, false);
- }
- else
- {
- PoundTime += TurnOffTime;
- SetTimer(TurnOffTime, false);
- }
- }
- event Trigger(Actor A, Pawn EventInstigator)
- {
- if (SavedTrigger != none)
- SavedTrigger.EndEvent();
- SavedTrigger = A;
- if (SavedTrigger != none)
- SavedTrigger.BeginEvent();
- bNextOn = !bInitiallyOn;
- // how much time will pass till reversal
- if (bNextOn)
- PoundTime = TurnOnTime;
- else
- PoundTime = TurnOffTime;
- SetTimer(PoundTime, false); // wake up when it's time to reverse
- Enable('Tick');
- }
- function Reset()
- {
- SetTimer(0, false);
- global.Reset();
- }
- }
- // Reset the sound
- function Reset()
- {
- if (bInitiallyOn)
- {
- Alpha = 1;
- bNextOn = true;
- }
- else
- {
- Alpha = 0;
- bNextOn = false;
- }
- UpdateAmbientSound();
- }
- function UpdateAmbientSound()
- {
- SoundVolume = Alpha * InitialSoundVolume;
- if (SoundVolume > 0)
- AmbientSound = InitialAmbientSound;
- else
- AmbientSound = none;
- }
- defaultproperties
- {
- bNoDelete=True
- bStatic=False
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement