1
0
Fork 0

Josh BABCOCK:

"Here is a patch that allows marker beacon volume to be set via
/instrumentation/marker-beacon/volume."
This commit is contained in:
mfranz 2006-06-24 07:43:09 +00:00
parent 98c03f95e1
commit 095efc1fcf
2 changed files with 62 additions and 50 deletions

View file

@ -41,6 +41,7 @@ SG_USING_STD(string);
// Constructor // Constructor
FGMarkerBeacon::FGMarkerBeacon(SGPropertyNode *node) : FGMarkerBeacon::FGMarkerBeacon(SGPropertyNode *node) :
audio_vol(NULL),
need_update(true), need_update(true),
outer_blink(false), outer_blink(false),
middle_blink(false), middle_blink(false),
@ -105,6 +106,7 @@ FGMarkerBeacon::init ()
bus_power = fgGetNode("/systems/electrical/outputs/nav[0]", true); bus_power = fgGetNode("/systems/electrical/outputs/nav[0]", true);
power_btn = node->getChild("power-btn", 0, true); power_btn = node->getChild("power-btn", 0, true);
audio_btn = node->getChild("audio-btn", 0, true); audio_btn = node->getChild("audio-btn", 0, true);
audio_vol = node->getChild("volume", 0, true);
serviceable = node->getChild("serviceable", 0, true); serviceable = node->getChild("serviceable", 0, true);
power_btn->setBoolValue( true ); power_btn->setBoolValue( true );
@ -292,64 +294,73 @@ void FGMarkerBeacon::search()
globals->get_soundmgr()->stop( "outer-marker" ); globals->get_soundmgr()->stop( "outer-marker" );
globals->get_soundmgr()->stop( "middle-marker" ); globals->get_soundmgr()->stop( "middle-marker" );
globals->get_soundmgr()->stop( "inner-marker" ); globals->get_soundmgr()->stop( "inner-marker" );
} else if ( beacon_type == OUTER ) { } else {
string current_sound_name;
if ( beacon_type == OUTER ) {
outer_marker = true; outer_marker = true;
current_sound_name = "outer-marker";
// cout << "OUTER MARKER" << endl; // cout << "OUTER MARKER" << endl;
if ( last_beacon != OUTER ) { if ( last_beacon != OUTER ) {
if ( ! globals->get_soundmgr()->exists( "outer-marker" ) ) { if ( ! globals->get_soundmgr()->exists( current_sound_name ) ) {
SGSoundSample *sound = beacon.get_outer(); SGSoundSample *sound = beacon.get_outer();
if ( sound ) { if ( sound ) {
sound->set_volume( 0.3 ); globals->get_soundmgr()->add( sound, current_sound_name );
globals->get_soundmgr()->add( sound, "outer-marker" );
} }
} }
} }
if ( audio_btn->getBoolValue() ) { if ( audio_btn->getBoolValue() ) {
if ( !globals->get_soundmgr()->is_playing("outer-marker") ) { if ( !globals->get_soundmgr()->is_playing(current_sound_name) ) {
globals->get_soundmgr()->play_looped( "outer-marker" ); globals->get_soundmgr()->play_looped( current_sound_name );
} }
} else { } else {
globals->get_soundmgr()->stop( "outer-marker" ); globals->get_soundmgr()->stop( current_sound_name );
} }
} else if ( beacon_type == MIDDLE ) { } else if ( beacon_type == MIDDLE ) {
middle_marker = true; middle_marker = true;
current_sound_name = "middle-marker";
// cout << "MIDDLE MARKER" << endl; // cout << "MIDDLE MARKER" << endl;
if ( last_beacon != MIDDLE ) { if ( last_beacon != MIDDLE ) {
if ( ! globals->get_soundmgr()->exists( "middle-marker" ) ) { if ( ! globals->get_soundmgr()->exists( current_sound_name ) ) {
SGSoundSample *sound = beacon.get_middle(); SGSoundSample *sound = beacon.get_middle();
if ( sound ) { if ( sound ) {
sound->set_volume( 0.3 ); globals->get_soundmgr()->add( sound, current_sound_name );
globals->get_soundmgr()->add( sound, "middle-marker" );
} }
} }
} }
if ( audio_btn->getBoolValue() ) { if ( audio_btn->getBoolValue() ) {
if ( !globals->get_soundmgr()->is_playing("middle-marker") ) { if ( !globals->get_soundmgr()->is_playing(current_sound_name) ) {
globals->get_soundmgr()->play_looped( "middle-marker" ); globals->get_soundmgr()->play_looped( current_sound_name );
} }
} else { } else {
globals->get_soundmgr()->stop( "middle-marker" ); globals->get_soundmgr()->stop( current_sound_name );
} }
} else if ( beacon_type == INNER ) { } else if ( beacon_type == INNER ) {
inner_marker = true; inner_marker = true;
current_sound_name = "inner-marker";
// cout << "INNER MARKER" << endl; // cout << "INNER MARKER" << endl;
if ( last_beacon != INNER ) { if ( last_beacon != INNER ) {
if ( ! globals->get_soundmgr()->exists( "inner-marker" ) ) { if ( ! globals->get_soundmgr()->exists( current_sound_name ) ) {
SGSoundSample *sound = beacon.get_inner(); SGSoundSample *sound = beacon.get_inner();
if ( sound ) { if ( sound ) {
sound->set_volume( 0.3 ); globals->get_soundmgr()->add( sound, current_sound_name );
globals->get_soundmgr()->add( sound, "inner-marker" );
} }
} }
} }
if ( audio_btn->getBoolValue() ) { if ( audio_btn->getBoolValue() ) {
if ( !globals->get_soundmgr()->is_playing("inner-marker") ) { if ( !globals->get_soundmgr()->is_playing(current_sound_name) ) {
globals->get_soundmgr()->play_looped( "inner-marker" ); globals->get_soundmgr()->play_looped( current_sound_name );
} }
} else { } else {
globals->get_soundmgr()->stop( "inner-marker" ); globals->get_soundmgr()->stop( current_sound_name );
} }
} }
// cout << "VOLUME " << audio_vol->getDoubleValue() << endl;
SGSoundSample * mkr = globals->get_soundmgr()->find( current_sound_name );
if (mkr)
mkr->set_volume( audio_vol->getDoubleValue() );
}
if ( inrange ) { if ( inrange ) {
last_beacon = beacon_type; last_beacon = beacon_type;

View file

@ -52,6 +52,7 @@ class FGMarkerBeacon : public SGSubsystem
SGPropertyNode_ptr bus_power; SGPropertyNode_ptr bus_power;
SGPropertyNode_ptr power_btn; SGPropertyNode_ptr power_btn;
SGPropertyNode_ptr audio_btn; SGPropertyNode_ptr audio_btn;
SGPropertyNode_ptr audio_vol;
SGPropertyNode_ptr serviceable; SGPropertyNode_ptr serviceable;
SGPropertyNode_ptr sound_pause; SGPropertyNode_ptr sound_pause;