60 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
//-----------------------------------------------------------------------------
 | 
						|
// Torque Game Engine
 | 
						|
// Copyright (C) GarageGames.com, Inc.
 | 
						|
//-----------------------------------------------------------------------------
 | 
						|
 | 
						|
#ifndef _AMBIENTAUDIOMANAGER_H_
 | 
						|
#define _AMBIENTAUDIOMANAGER_H_
 | 
						|
 | 
						|
#ifndef _AUDIOEMITTER_H_
 | 
						|
#include "game/audioEmitter.h"
 | 
						|
#endif
 | 
						|
 | 
						|
class InteriorInstance;
 | 
						|
 | 
						|
/// The AmbientAudioManager manages varying the properties of audio emitters
 | 
						|
/// based on the player's position.
 | 
						|
///
 | 
						|
/// It not only provides a notion of "outside"-ness and "inside"-ness to Torque's
 | 
						|
/// sound library, but it also varies sounds based on the powered status of interiors,
 | 
						|
/// and plays the PowerUp/PowerDown sounds as needed.
 | 
						|
///
 | 
						|
/// AudioEmitters automatically add themselves to the AmbientAudioManager, see
 | 
						|
/// AudioEmitter::onAdd() and AudioEmitter::onRemove(). update() is called in
 | 
						|
/// clientProcess(), and gAmbientAudioManager stores the global reference to the
 | 
						|
/// AmbientAudioManager.
 | 
						|
class AmbientAudioManager
 | 
						|
{
 | 
						|
 | 
						|
   private:
 | 
						|
      F32                              mOutsideScale;    ///< 0:inside -> 1:outside
 | 
						|
      Vector<AudioEmitter*>            mEmitters;
 | 
						|
      SimObjectPtr<InteriorInstance>   mInteriorInstance;
 | 
						|
 | 
						|
      SimObjectPtr<AudioEnvironment>   mCurrentEnvironment;
 | 
						|
      F32                              mEnvironmentScale;
 | 
						|
 | 
						|
      AUDIOHANDLE                      mInteriorAudioHandle;
 | 
						|
      AUDIOHANDLE                      mPowerAudioHandle;
 | 
						|
      bool                             mLastAlarmState;
 | 
						|
 | 
						|
      bool getOutsideScale(F32 *, InteriorInstance **);
 | 
						|
      void updateEnvironment();
 | 
						|
      void updateEmitter(AudioEmitter *);
 | 
						|
      void stopInteriorAudio();
 | 
						|
 | 
						|
   public:
 | 
						|
      SimObjectPtr<AudioProfile>       mPowerUpProfile;
 | 
						|
      SimObjectPtr<AudioProfile>       mPowerDownProfile;
 | 
						|
 | 
						|
      AmbientAudioManager();
 | 
						|
 | 
						|
      void addEmitter(AudioEmitter*);
 | 
						|
      void removeEmitter(AudioEmitter*);
 | 
						|
      void update();
 | 
						|
};
 | 
						|
 | 
						|
extern AmbientAudioManager gAmbientAudioManager;
 | 
						|
 | 
						|
#endif
 |