1
0
Fork 0
flightgear/src/Sound/fg_fx.hxx
James Turner 1a3daf39a0 ATC volume and settings passed to the group
Note sure this is strictly the correct place to do this, but it’s
where we do it for avionics, so following for now.
2019-06-06 10:03:40 +01:00

84 lines
2.3 KiB
C++

// fg_fx.hxx -- Sound effect management class
//
// Started by David Megginson, October 2001
// (Reuses some code from main.cxx, probably by Curtis Olson)
//
// Copyright (C) 2001 Curtis L. Olson - http://www.flightgear.org/~curt
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License as
// published by the Free Software Foundation; either version 2 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful, but
// WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
// $Id$
#ifndef __FGFX_HXX
#define __FGFX_HXX 1
#include <simgear/compiler.h>
#include <vector>
#include <simgear/structure/subsystem_mgr.hxx>
#include <simgear/props/props.hxx>
#include <simgear/sound/sample_group.hxx>
class SGXmlSound;
/**
* Generator for FlightGear model sound effects.
*
* This module uses a FGSampleGroup class to generate sound effects based
* on current flight conditions. The sound manager must be initialized
* before this object is.
*
* This module will load and play a set of sound effects defined in an
* xml file and tie them to various property states.
*/
class FGFX : public SGSampleGroup
{
public:
FGFX ( const std::string &refname, SGPropertyNode *props = 0 );
virtual ~FGFX ();
void init ();
void reinit ();
void update (double dt) override;
void unbind();
private:
bool _active;
bool _is_aimodel;
SGSharedPtr<SGSampleGroup> _avionics;
SGSharedPtr<SGSampleGroup> _atc;
std::vector<SGXmlSound *> _sound;
SGPropertyNode_ptr _props;
SGPropertyNode_ptr _enabled;
SGPropertyNode_ptr _volume;
SGPropertyNode_ptr _avionics_enabled;
SGPropertyNode_ptr _avionics_volume;
SGPropertyNode_ptr _avionics_ext;
SGPropertyNode_ptr _internal;
SGPropertyNode_ptr _atc_enabled;
SGPropertyNode_ptr _atc_volume;
SGPropertyNode_ptr _atc_ext;
};
#endif
// end of fg_fx.hxx