2007-09-09 23:22:14 +00:00
|
|
|
// groundradar.hxx - Background layer for the ATC radar.
|
|
|
|
//
|
2007-09-10 05:08:57 +00:00
|
|
|
// Copyright (C) 2007 Csaba Halasz.
|
2007-09-09 23:22:14 +00:00
|
|
|
//
|
|
|
|
// 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.
|
2008-06-01 18:08:01 +00:00
|
|
|
//
|
2007-09-09 23:22:14 +00:00
|
|
|
// 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.
|
|
|
|
|
|
|
|
|
|
|
|
#ifndef __INST_GROUNDRADAR_HXX
|
|
|
|
#define __INST_GROUNDRADAR_HXX
|
|
|
|
|
|
|
|
#include <osg/ref_ptr>
|
|
|
|
#include <osg/Geometry>
|
|
|
|
#include <simgear/props/props.hxx>
|
|
|
|
#include "od_gauge.hxx"
|
|
|
|
|
2008-08-14 18:13:39 +00:00
|
|
|
// forward decls
|
|
|
|
class FGRunway;
|
|
|
|
|
2007-09-09 23:22:14 +00:00
|
|
|
////////////////////////////////////////////////////////////////////////
|
|
|
|
// Built-in layer for the atc radar.
|
|
|
|
////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
class GroundRadar : public SGPropertyChangeListener, public FGODGauge
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
GroundRadar(SGPropertyNode* node);
|
|
|
|
virtual ~GroundRadar();
|
|
|
|
void updateTexture();
|
|
|
|
virtual void valueChanged(SGPropertyNode*);
|
|
|
|
|
|
|
|
protected:
|
2008-06-01 18:08:01 +00:00
|
|
|
void createTexture(const char* texture_name);
|
2008-08-14 18:13:39 +00:00
|
|
|
|
James Turner:
Convert FGRunway to be heap-based, and inherit FGPositioned. This is a large, ugly change, since FGRunway was essentially a plain struct, with no accessors or abstraction. This change adds various helpers and accessors to FGRunway, but doesn't change many places to use them - that will be a follow up series of patches. It's still a large patch, but outside of FGAirport and FGRunway, mostly mechanical search-and-replace.
An interesting part of this change is that reciprocal runways now exist as independent objects, rather than being created on the fly by the search methods. This simplifies some pieces of code that search for and iterate runways. For users who only want one 'end' of a runway, the new 'isReciprocal' predicate allows them to ignore the 'other' end. Current the only user of this is the 'ground-radar' ATC feature. If we had data on which runways are truly 'single-ended', it would now be trivial to use this in the airport loader to *not* create the reciprocal.
2008-09-11 08:38:09 +00:00
|
|
|
void addRunwayVertices(const FGRunway* aRunway, double aTowerLat, double aTowerLon, double aScale, osg::Vec3Array* aVertices);
|
2008-08-14 18:13:39 +00:00
|
|
|
|
2007-09-09 23:22:14 +00:00
|
|
|
osg::ref_ptr<osg::Geometry> _geom;
|
|
|
|
SGPropertyNode_ptr _airport_node;
|
2008-06-01 18:08:01 +00:00
|
|
|
SGPropertyNode_ptr _range_node;
|
2007-09-09 23:22:14 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
#endif // __INST_GROUNDRADAR_HXX
|