VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Classes | Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | Private Member Functions
makVrv::DtTaxiwaySignManager Class Reference
Inheritance diagram for makVrv::DtTaxiwaySignManager:
Inheritance graph
[legend]

Classes

class  DtDtgRunwayData
 
class  DtDtgSignData
 

Public Types

enum  RunwaySignType { SIDED_SINGLE, SIDED_DOUBLE }
 
enum  RunwaySignPlacement { PLACEMENT_LEFT, PLACEMENT_RIGHT }
 
typedef std::vector
< DtTaxiwaySignLetter
TaxiwaySignSide
 

Public Member Functions

virtual ~DtTaxiwaySignManager ()
 
 DtTaxiwaySignManager ()=delete
 
 DtTaxiwaySignManager (const DtTaxiwaySignManager &rhs)=delete
 
DtTaxiwaySignManageroperator= (const DtTaxiwaySignManager &rhs)=delete
 
virtual void slot_TaxiwaySignCreated (DtTaxiwaySignData &signData)
 
virtual void slot_TaxiwaySignDestroyed (DtTaxiwaySignData &signData)
 
virtual void slot_RunwayCreated (DtRunwayData &runwayData)
 
virtual void slot_RunwayDestroyed (DtRunwayData &runwayData)
 
virtual void determineSignTypeAndCreate (DtTaxiwaySignData &signData)
 
virtual std::size_t hashPos (DtVector &pos) const
 
virtual std::size_t hashRunwayData (DtRunwayData &data) const
 
virtual void setTaxiwayDesignator (DtOsgArticulatedModel *taxiwaySign, const std::string &atlasFileName, const std::string &text)
 
virtual void setTaxiwayDesignator (DtOsgArticulatedModel *taxiwaySign, const std::string &atlasFileName, DtTaxiwaySignManager::TaxiwaySignSide &frontSide, DtTaxiwaySignManager::TaxiwaySignSide &backSide)
 
virtual void setModelDefinitionForSize (unsigned int size, const std::string &modelDef)
 
virtual void clearModelDefinitionForSize (unsigned int size)
 
virtual void setDefaultModelDefinition (const std::string &modelDef)
 
virtual void setSignMaxSegments (unsigned int maxSegments)
 
virtual void setSignCharactersPerSegment (unsigned int charsPerSegment)
 
virtual void setTaxiwaySignUVOffsets (DtOsgArticulatedModel *taxiwaySign, TaxiwaySignSide &sign, unsigned int numChars)
 
virtual bool setMaxSignLimits (unsigned int &numSegments, unsigned int &numChars)
 
virtual void updateTaxiwaySignManager (const float budget)
 
virtual DtUniqueID createTaxiwaySign (DtTaxiwaySignData &signData, const DtVector &signLocation, TaxiwaySignSide &frontSide, TaxiwaySignSide &backSide, double heading, const std::string &groupName)
 
virtual void createRunwaySigns (DtRunwayData &runwayData, const RunwaySignType signType, const RunwaySignPlacement signPlacement)
 
virtual void createAndPlaceHalfwayRunwayDistanceSign (const DtRunwayData &runwayData, const double signWidthOffset, const RunwaySignPlacement signPlacement, DtUniqueID runwayID)
 
virtual void extractRunwayStartAndForward (const DtRunwayData &runwayData, DtVector &centerStartPoint, DtVector &forwardVector, const RunwaySignPlacement signPlacement)
 
virtual void generateSignLocationsAndStrings (std::vector< DtVector > &signLocations, std::vector< std::string > &signLabels, const double signSpacing, const double signOffset, RunwaySignType signType, const RunwaySignPlacement signPlacement, const DtRunwayData &runwayData)
 
virtual DtVector generateRightVectorAtPos (const DtVector &currPos, const double headingDeg)
 
virtual DtVector generateFrontVectorAtPos (const DtVector &currPos, const double headingDeg)
 
virtual void createAndPlaceRunwayDistanceSign (const DtVector &signLoc, const std::string &label, const RunwaySignPlacement signPlacement, const double heading, const unsigned int signSize, DtUniqueID runwayID)
 
virtual std::string generateSignLabel (unsigned int signNum)
 
virtual DtVector calcRunwayHalfwaySignPos (const double signOffset, const RunwaySignPlacement signPlacement, const DtRunwayData &runwayData)
 
virtual double offsetForDistanceSignSize (unsigned int size)
 
virtual DtVector geodeticToCig (const DtVector &pos) const
 
- Public Member Functions inherited from makVrv::DtVirtualBaseClass
 DtVirtualBaseClass ()
 
virtual ~DtVirtualBaseClass ()
 

Static Public Member Functions

static DtTaxiwaySignManagerinstance (DtDe &anIG)
 

Public Attributes

boost::signalslib::signal
< void(DtTaxiwaySignData &)> 
signal_TaxiwaySignDeleted
 
boost::signalslib::signal
< void(DtTaxiwaySignData &)> 
signal_TaxiwaySignCreated
 

Protected Member Functions

virtual void slot_coordinateSystemChanged ()
 
virtual std::string findRunwayForDtgSign (DtDtgSignData *signData)
 
virtual bool isRunwayClosestToSignSoFar (const DtDtgRunwayData &runway, DtDtgSignData &sign)
 
virtual bool isRunwayDtgHeadingCandidate (double signHeading, double runwayHeading)
 
virtual bool isCloser (DtDtgSignData &signData, const DtVector &runwayStart, const DtVector &runwayEnd)
 
virtual std::string pickRunwayNameForSignBasedOnHeading (const DtDtgRunwayData &runway, DtDtgSignData &sign)
 
 DtTaxiwaySignManager (DtDe &de)
 

Protected Attributes

DtDemyDe
 
DtSignalConnectionManager myConnections
 
DtTaxiwaySignParsermySignParser = nullptr
 
DtTextureAtlasIndexParsermyTaxiwaySignTextureAtlasParser = nullptr
 
tbb::concurrent_queue
< DtTaxiwaySignData
myTaxiSignCreateQueue
 
tbb::concurrent_queue
< DtTaxiwaySignData
myTaxiSignDeleteQueue
 
tbb::concurrent_queue
< DtRunwayData
myRunwayDataCreateQueue
 
tbb::concurrent_queue
< DtRunwayData
myRunwayDataDeleteQueue
 
std::multimap< std::string,
class DtDtgRunwayData
myRunways
 
std::unordered_map< DtUniqueID,
DtOsgArticulatedModel * > 
myTaxiwaySigns
 
std::unordered_map< DtUniqueID,
std::vector
< DtOsgArticulatedModel * > > 
myRunwaySigns
 
std::unordered_map< DtUniqueID,
DtSceneObject * > 
mySceneObjs
 
std::map< unsigned int,
std::string > 
myTaxiwaySignModelDefinitions
 
std::string myDefaultTaxiwaySignModelDefinition
 
unsigned int myTaxiwaySignModelMaxSegments
 
unsigned int myTaxiwaySignModelLettersPerSegment
 
std::map< DtUniqueID,
DtDtgSignData
myDtgSigns
 
std::multimap< std::size_t,
DtUniqueID
mySignLocatorMap
 
DtCoordinateSystemmyCoordinateSystem = nullptr
 

Private Member Functions

void destroy (DtTaxiwaySignData &signData)
 
void destroy (DtRunwayData &runwayData)
 

Member Typedef Documentation

Member Enumeration Documentation

Enumerator
SIDED_SINGLE 
SIDED_DOUBLE 
Enumerator
PLACEMENT_LEFT 
PLACEMENT_RIGHT 

Constructor & Destructor Documentation

virtual makVrv::DtTaxiwaySignManager::~DtTaxiwaySignManager ( )
virtual

DTOR.

makVrv::DtTaxiwaySignManager::DtTaxiwaySignManager ( )
delete

not allowed

makVrv::DtTaxiwaySignManager::DtTaxiwaySignManager ( const DtTaxiwaySignManager rhs)
delete

not allowed

makVrv::DtTaxiwaySignManager::DtTaxiwaySignManager ( DtDe de)
protected

Member Function Documentation

static DtTaxiwaySignManager& makVrv::DtTaxiwaySignManager::instance ( DtDe anIG)
static

Get an instance of the taxiway sign manager.

DtTaxiwaySignManager& makVrv::DtTaxiwaySignManager::operator= ( const DtTaxiwaySignManager rhs)
delete

not allowed

virtual void makVrv::DtTaxiwaySignManager::slot_TaxiwaySignCreated ( DtTaxiwaySignData signData)
virtual

Called when Aerodrome creates the Taxiway sign.

virtual void makVrv::DtTaxiwaySignManager::slot_TaxiwaySignDestroyed ( DtTaxiwaySignData signData)
virtual

Called when Aerodrome removes the Taxiway sign.

virtual void makVrv::DtTaxiwaySignManager::slot_RunwayCreated ( DtRunwayData runwayData)
virtual

Called when Aerodrome creates the runway so that we can add distance remaining signs.

virtual void makVrv::DtTaxiwaySignManager::slot_RunwayDestroyed ( DtRunwayData runwayData)
virtual

Called when Aerodrome removes the runway so that we can remove distance remaining signs.

virtual void makVrv::DtTaxiwaySignManager::determineSignTypeAndCreate ( DtTaxiwaySignData signData)
virtual

Determine if this is a taxiway sign or a Distance To Go (DTG) sign. Calls createTaxiwaySign for a taxiway sign; calls it TWICE for a Distance To Go sign (one for each facing direction).

virtual std::size_t makVrv::DtTaxiwaySignManager::hashPos ( DtVector &  pos) const
virtual

Convert position to identifier.

virtual std::size_t makVrv::DtTaxiwaySignManager::hashRunwayData ( DtRunwayData data) const
virtual

Convert runway verts to identifier.

virtual void makVrv::DtTaxiwaySignManager::setTaxiwayDesignator ( DtOsgArticulatedModel taxiwaySign,
const std::string &  atlasFileName,
const std::string &  text 
)
virtual

Take the sign text in Xplane format, parse it and apply it to the model.

virtual void makVrv::DtTaxiwaySignManager::setTaxiwayDesignator ( DtOsgArticulatedModel taxiwaySign,
const std::string &  atlasFileName,
DtTaxiwaySignManager::TaxiwaySignSide frontSide,
DtTaxiwaySignManager::TaxiwaySignSide backSide 
)
virtual

Alternate form of setTaxiwayDesignator that takes the frontside and backside sign data that has been parsed from the original xplane data. This form is called by void setTaxiwayDesignator(DtOsgArticulatedModel* taxiwaySign, const std::string& atlasFileName, const std::string& text)

virtual void makVrv::DtTaxiwaySignManager::setModelDefinitionForSize ( unsigned int  size,
const std::string &  modelDef 
)
virtual

What model definition goes with which sign size (size = 1,2,3,4,5) default is SignTaxiwaySize1, SignTaxiwaySize2,...

virtual void makVrv::DtTaxiwaySignManager::clearModelDefinitionForSize ( unsigned int  size)
virtual

Clear the default set of sign size model definition names that the DtTaxiwaySignManager uses, keeps default model definition.

virtual void makVrv::DtTaxiwaySignManager::setDefaultModelDefinition ( const std::string &  modelDef)
virtual

If we can't find a model for a particular size, what is the default.

virtual void makVrv::DtTaxiwaySignManager::setSignMaxSegments ( unsigned int  maxSegments)
virtual

The taxiway signs are based on 9 segments with 2 letters per segment However, other models might have more or less and more or less letters per segment How many segment are in the model used to represent the signs.

virtual void makVrv::DtTaxiwaySignManager::setSignCharactersPerSegment ( unsigned int  charsPerSegment)
virtual

How many characters are in each modeled sign segment.

virtual void makVrv::DtTaxiwaySignManager::setTaxiwaySignUVOffsets ( DtOsgArticulatedModel taxiwaySign,
TaxiwaySignSide sign,
unsigned int  numChars 
)
virtual

Set the uv offsets for each letter of the sign in the model using a dtxc file.

virtual bool makVrv::DtTaxiwaySignManager::setMaxSignLimits ( unsigned int numSegments,
unsigned int numChars 
)
virtual

Given the numebr of chars on the largest side of the sign clamp the number of chars and number of segments to fit the max the model can handle.

virtual void makVrv::DtTaxiwaySignManager::updateTaxiwaySignManager ( const float  budget)
virtual

Take element from the queue and made DtOsgArticulatedModels on the main thread (DtTaxiwaySignManager is part of osgEarth threads)

virtual DtUniqueID makVrv::DtTaxiwaySignManager::createTaxiwaySign ( DtTaxiwaySignData signData,
const DtVector &  signLocation,
TaxiwaySignSide frontSide,
TaxiwaySignSide backSide,
double  heading,
const std::string &  groupName 
)
virtual

Take information about the sign (size, letters, etc. and create and configure the model)

virtual void makVrv::DtTaxiwaySignManager::createRunwaySigns ( DtRunwayData runwayData,
const RunwaySignType  signType,
const RunwaySignPlacement  signPlacement 
)
virtual

Given a position and heading, place signs on either side of the runway.

virtual void makVrv::DtTaxiwaySignManager::createAndPlaceHalfwayRunwayDistanceSign ( const DtRunwayData runwayData,
const double  signWidthOffset,
const RunwaySignPlacement  signPlacement,
DtUniqueID  runwayID 
)
virtual
virtual void makVrv::DtTaxiwaySignManager::extractRunwayStartAndForward ( const DtRunwayData runwayData,
DtVector &  centerStartPoint,
DtVector &  forwardVector,
const RunwaySignPlacement  signPlacement 
)
virtual

Calculate the starting point and forward vector to step for placing signs on runways.

virtual void makVrv::DtTaxiwaySignManager::generateSignLocationsAndStrings ( std::vector< DtVector > &  signLocations,
std::vector< std::string > &  signLabels,
const double  signSpacing,
const double  signOffset,
RunwaySignType  signType,
const RunwaySignPlacement  signPlacement,
const DtRunwayData runwayData 
)
virtual

Calculate the sign locations and labels for a side of the runway.

virtual DtVector makVrv::DtTaxiwaySignManager::generateRightVectorAtPos ( const DtVector &  currPos,
const double  headingDeg 
)
virtual

Generate a right vector given a position and heading from north (in degrees)

virtual DtVector makVrv::DtTaxiwaySignManager::generateFrontVectorAtPos ( const DtVector &  currPos,
const double  headingDeg 
)
virtual

Generate a front vector given a position and heading from north (in degrees)

virtual void makVrv::DtTaxiwaySignManager::createAndPlaceRunwayDistanceSign ( const DtVector &  signLoc,
const std::string &  label,
const RunwaySignPlacement  signPlacement,
const double  heading,
const unsigned int  signSize,
DtUniqueID  runwayID 
)
virtual

Create a sign with a given label for a particular runway.

virtual std::string makVrv::DtTaxiwaySignManager::generateSignLabel ( unsigned int  signNum)
virtual

Generate runway distance signs label (ex. " 1" instead of "1" for nicer formatting on the sign.

virtual DtVector makVrv::DtTaxiwaySignManager::calcRunwayHalfwaySignPos ( const double  signOffset,
const RunwaySignPlacement  signPlacement,
const DtRunwayData runwayData 
)
virtual

Calculate the sign position for a half way marker.

virtual double makVrv::DtTaxiwaySignManager::offsetForDistanceSignSize ( unsigned int  size)
virtual

Calculate the offset from the side of the runway for the runway distance marker based on size (4 or 5)

virtual DtVector makVrv::DtTaxiwaySignManager::geodeticToCig ( const DtVector &  pos) const
virtual

Convert (lon,lat,elevation) -> database coordinates.

virtual void makVrv::DtTaxiwaySignManager::slot_coordinateSystemChanged ( )
protectedvirtual

slot for when the coordinate system changes

virtual std::string makVrv::DtTaxiwaySignManager::findRunwayForDtgSign ( DtDtgSignData signData)
protectedvirtual

Iterate over all the runways we have so far, and find the closest runway to it (with a correct heading) Called when a new DTG sign is discovered. If no candidate based on heading exists yet, and empty string is returned. Otherwise any runway with the right heading will be the closest 'so far'.

virtual bool makVrv::DtTaxiwaySignManager::isRunwayClosestToSignSoFar ( const DtDtgRunwayData runway,
DtDtgSignData sign 
)
protectedvirtual

Called each time a new runway is discovered with all DTG signs so far; and also called by findRunwayForDtgSign. DtDtgSignData is not const, as it calls isCloser(), which may change it.

virtual bool makVrv::DtTaxiwaySignManager::isRunwayDtgHeadingCandidate ( double  signHeading,
double  runwayHeading 
)
protectedvirtual

Compare a DTG sign heading to a runway heading to determine if the sign could possibly be on that runway. Called by isRunwayClosestToSignSoFar().

virtual bool makVrv::DtTaxiwaySignManager::isCloser ( DtDtgSignData signData,
const DtVector &  runwayStart,
const DtVector &  runwayEnd 
)
protectedvirtual

Determine if a sign is closer the the specified runway location than any other it may have found. DtDtgSignData is not const, since it's 'closest so far' data may be updated as a side effect.

virtual std::string makVrv::DtTaxiwaySignManager::pickRunwayNameForSignBasedOnHeading ( const DtDtgRunwayData runway,
DtDtgSignData sign 
)
protectedvirtual

Each physical runway has two names, one for each 'logical runway' direction. Determine, from the direction the DTG sign is facing, which runway name to use.

void makVrv::DtTaxiwaySignManager::destroy ( DtTaxiwaySignData signData)
private
void makVrv::DtTaxiwaySignManager::destroy ( DtRunwayData runwayData)
private

Member Data Documentation

boost::signalslib::signal<void ( DtTaxiwaySignData& )> makVrv::DtTaxiwaySignManager::signal_TaxiwaySignDeleted
boost::signalslib::signal<void ( DtTaxiwaySignData& )> makVrv::DtTaxiwaySignManager::signal_TaxiwaySignCreated
DtDe& makVrv::DtTaxiwaySignManager::myDe
protected
DtSignalConnectionManager makVrv::DtTaxiwaySignManager::myConnections
protected
DtTaxiwaySignParser* makVrv::DtTaxiwaySignManager::mySignParser = nullptr
protected
DtTextureAtlasIndexParser* makVrv::DtTaxiwaySignManager::myTaxiwaySignTextureAtlasParser = nullptr
protected
tbb::concurrent_queue<DtTaxiwaySignData> makVrv::DtTaxiwaySignManager::myTaxiSignCreateQueue
protected
tbb::concurrent_queue<DtTaxiwaySignData> makVrv::DtTaxiwaySignManager::myTaxiSignDeleteQueue
protected
tbb::concurrent_queue<DtRunwayData> makVrv::DtTaxiwaySignManager::myRunwayDataCreateQueue
protected
tbb::concurrent_queue<DtRunwayData> makVrv::DtTaxiwaySignManager::myRunwayDataDeleteQueue
protected
std::multimap<std::string, class DtDtgRunwayData> makVrv::DtTaxiwaySignManager::myRunways
protected
std::unordered_map<DtUniqueID, DtOsgArticulatedModel* > makVrv::DtTaxiwaySignManager::myTaxiwaySigns
protected
std::unordered_map<DtUniqueID, std::vector<DtOsgArticulatedModel*> > makVrv::DtTaxiwaySignManager::myRunwaySigns
protected
std::unordered_map<DtUniqueID, DtSceneObject* > makVrv::DtTaxiwaySignManager::mySceneObjs
protected
std::map<unsigned int, std::string> makVrv::DtTaxiwaySignManager::myTaxiwaySignModelDefinitions
protected
std::string makVrv::DtTaxiwaySignManager::myDefaultTaxiwaySignModelDefinition
protected
unsigned int makVrv::DtTaxiwaySignManager::myTaxiwaySignModelMaxSegments
protected
unsigned int makVrv::DtTaxiwaySignManager::myTaxiwaySignModelLettersPerSegment
protected
std::map<DtUniqueID, DtDtgSignData> makVrv::DtTaxiwaySignManager::myDtgSigns
protected
std::multimap<std::size_t, DtUniqueID> makVrv::DtTaxiwaySignManager::mySignLocatorMap
protected
DtCoordinateSystem* makVrv::DtTaxiwaySignManager::myCoordinateSystem = nullptr
protected

local clone of the system wide coordinate system. for thread safety.


The documentation for this class was generated from the following file:

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)