1 // fgfx.hxx -- Sound effect management class
3 // Started by David Megginson, October 2001
4 // (Reuses some code from main.cxx, probably by Curtis Olson)
6 // Copyright (C) 2001 Curtis L. Olson - curt@flightgear.org
8 // This program is free software; you can redistribute it and/or
9 // modify it under the terms of the GNU General Public License as
10 // published by the Free Software Foundation; either version 2 of the
11 // License, or (at your option) any later version.
13 // This program is distributed in the hope that it will be useful, but
14 // WITHOUT ANY WARRANTY; without even the implied warranty of
15 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 // General Public License for more details.
18 // You should have received a copy of the GNU General Public License
19 // along with this program; if not, write to the Free Software
20 // Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
31 #include <simgear/compiler.h>
32 #include <Main/fgfs.hxx>
33 #include <Main/globals.hxx>
35 #include "soundmgr.hxx"
39 * Generator for FlightGear sound effects.
41 * This module uses FGSoundMgr to generate sound effects based
42 * on current flight conditions. The sound manager must be initialized
43 * before this object is.
45 class FGFX : public FGSubsystem
51 MAX_ENGINES = 2, // TODO: increase later
60 virtual void unbind ();
61 virtual void update ();
65 void set_playing (const char * soundName, bool state = true);
67 double _old_flap_position;
69 bool _gear_on_ground[MAX_GEAR];
72 FGSimpleSound * _engine[MAX_ENGINES];
73 FGSimpleSound * _crank[MAX_ENGINES];
74 FGSimpleSound * _wind;
75 FGSimpleSound * _stall;
76 FGSimpleSound * _rumble;
79 FGSimpleSound * _flaps;
80 FGSimpleSound * _squeal;
81 FGSimpleSound * _click;
83 // Cached property nodes.
84 const SGPropertyNode * _engine_running_prop[MAX_ENGINES];
85 const SGPropertyNode * _engine_cranking_prop[MAX_ENGINES];
86 const SGPropertyNode * _stall_warning_prop;
87 const SGPropertyNode * _flaps_prop;