DtBuoyBeaconFeatureBuilder implements a DtStreamedFeatureCreator for buoys. It reads configuration files found in appData/importConfig that it uses to build a model definition based on a pattern, attribute values, and the configuration data read. It then creates a DtBuoyOrBeaconFacade using the model definition that it generates.
|
| | DtBuoyBeaconFeatureBuilder (DtDe &de, const std::string ®istrantName, DtBuoyBeaconModelStringParser &parser, DtTextureAtlasIndexParser &atlasParser, const std::string &featureClass) |
| |
| virtual void | determineStationaryHeight (DtVector &buoyOrBeaconPos, double modelHeightAboveOrigin) |
| |
| std::string | buildModelDefinition (const std::string &markerName) |
| |
| void | build2DModelDefinitions (const std::string &markerName, std::string &modelDef2dUnlighted, std::string &modelDef2dLighted) |
| |
| std::string | parseAndBuild (const std::string &markerStr) |
| |
| virtual void | createAndAddBuoy (DtUniqueID elementId, const std::string &modelDefName, const std::string &modelDef2dUnlighted, std::string &modelDef2dLighted, const std::string &buoyName, const DtVector &vPosition, const std::string &designator) |
| |
| int | s57SeasonDateToDayInYear (const std::string &seasonDate) |
| |
| int | calcCurrentDayOfTheYear () |
| |
| virtual void | setBuoyTextureOffset (DtArticulatedModelAgent *model, const std::string &atlasFileName, const std::string &key) |
| |
| virtual void | setBuoyDesignator (DtArticulatedModelAgent *model, const std::string &atlasFileName, const std::string &designator) |
| |
| void | slot_featureToBeDeleted (const std::string &resgistrant, DtUniqueID featureId) |
| |
| void | slot_dateChanged () |
| |
| virtual void | slot_coordinateSystemChanged () |
| |
|
| void | readModelDefParam (const DtModelDefinition &modelDef, const std::string ¶mName, bool &resultOut) |
| |
| void | readModelDefParam (const DtModelDefinition &modelDef, const std::string ¶mName, float &resultOut) |
| |
| void | readModelDefParam (const DtModelDefinition &modelDef, const std::string ¶mName, std::string &resultOut) |
| |
| virtual makVrv::DtBuoyBeaconFeatureBuilder::~DtBuoyBeaconFeatureBuilder |
( |
| ) |
|
|
virtual |
CTOR.
- Parameters
-
| sceneInterface | needs to be provided to the constructor of the DtBuoyOrBeaconFacade that may be created |
| parser | is used to parse an encode marker name string and generate a model definition based on its contents |
| DtUniqueID makVrv::DtBuoyBeaconFeatureBuilder::create |
( |
DtDe & |
de, |
|
|
const std::string & |
registrantName, |
|
|
const std::string & |
featureStyleName, |
|
|
const std::string & |
strFeatureName, |
|
|
const DtVector & |
vPosition, |
|
|
double |
scale, |
|
|
DtVector |
minBound, |
|
|
DtVector |
maxBound |
|
) |
| |
|
virtual |
Create a feature (a DtBuoyOrBeaconFacade for now)
- Parameters
-
| registrantName | is the name that was provided to the DtStreamedFeatureManager when the DtStreamedFeatureCreator was registered |
| styleName | is the name provided in the .osgEarth style block specified for this feature. |
| strFeatureName | is the markerName returned by osgEarth for the feature from a marker: specification |
| vPosition | is the position of the feature |
| scale | is any scale factor provided from an osgEarth marker-scale: specification |
| minBound | is the min x,y,z of the feature bound |
| maxBound | is the max x,y,z of the feature bound |
- Returns
- A uniqueId that will be used to identify the feature created when it comes time to delete it. returns 0 if no feature is created.
Implements makVrv::DtStreamedFeatureCreator.
| virtual void makVrv::DtBuoyBeaconFeatureBuilder::determineStationaryHeight |
( |
DtVector & |
buoyOrBeaconPos, |
|
|
double |
modelHeightAboveOrigin |
|
) |
| |
|
protectedvirtual |
This method is used to determine the height (z value, or altitude for geocentric) at which the model origin is placed for non-buoyant navigation features. IF the model definition provides a non-zero modelHeightAboveOrigin and IF their is a non-zero height attribute for the feature, then these will be used to determine an origin that will place the feature with the top of the model at the correct height. If these are not provided, an intersector going from 50km up to 50km down is used to find a point on the terrain to place the origin of the object. If the intersector does not return a result, then the altitude of the original position provided to this method is used (the osgEarth-provided altitude for the feature); but osgEarth altitude clamping won't take ocean into consideration, in which case, this location could be below sea level. So finally, if the intersector altitude or osgEarth altiude IS below sea level, then sea level is used instead. Note that if a light is later attached to the object and it has a height attribute (and the model definition provides a modelHeightAboveOrigin) this height will be overridden by that action.
| std::string makVrv::DtBuoyBeaconFeatureBuilder::buildModelDefinition |
( |
const std::string & |
markerName | ) |
|
|
protected |
buildModelDefinition is the entry point for turning a string found as a marker name in a CustomFeatureNode feature request into a model definition. It first checks to see if there are any special characters in the string that would indicate that it needs to be parsed. If not, it just returns the string (minus the path that is usually included as part of a marker name). If parsing is required, it calls parseAndBuild().
| void makVrv::DtBuoyBeaconFeatureBuilder::build2DModelDefinitions |
( |
const std::string & |
markerName, |
|
|
std::string & |
modelDef2dUnlighted, |
|
|
std::string & |
modelDef2dLighted |
|
) |
| |
|
protected |
| std::string makVrv::DtBuoyBeaconFeatureBuilder::parseAndBuild |
( |
const std::string & |
markerStr | ) |
|
|
protected |
parseAndBuild() uses the DtBuoyBeaconModelStringParser to break a marker name string into its component pieces; pattern and attribute/value pairs. Once it has the attribute value pairs decoded, it checks for an object name (OBJNAM) parameter value. If it exists, it checks the object name will be looked up in he parser's name to model definition map. If any entry is found, that model definition will be used. Otherwise substitution is performed on the pattern based on the attribute values found and the generated model definition is returned
| virtual void makVrv::DtBuoyBeaconFeatureBuilder::createAndAddBuoy |
( |
DtUniqueID |
elementId, |
|
|
const std::string & |
modelDefName, |
|
|
const std::string & |
modelDef2dUnlighted, |
|
|
std::string & |
modelDef2dLighted, |
|
|
const std::string & |
buoyName, |
|
|
const DtVector & |
vPosition, |
|
|
const std::string & |
designator |
|
) |
| |
|
protectedvirtual |
| int makVrv::DtBuoyBeaconFeatureBuilder::s57SeasonDateToDayInYear |
( |
const std::string & |
seasonDate | ) |
|
|
protected |
Convert an s57 seasonal date string (form is --MMDD or --MM) to a day
of the year, from 0 (Jan 1) to 364 (or 365 on a leap year). Returns -1 if string is not valid
| int makVrv::DtBuoyBeaconFeatureBuilder::calcCurrentDayOfTheYear |
( |
| ) |
|
|
protected |
Returns the day of the year for whatever date our calendar is currently set for, from 0 (Jan 1) to 364 (or 365 on a leap year).
| static bool makVrv::DtBuoyBeaconFeatureBuilder::checkSeasonalState |
( |
int |
seasonStart, |
|
|
int |
seasonEnd, |
|
|
int |
currentDay |
|
) |
| |
|
staticprotected |
Check to see if the current date is within the season seasonStart / seasonEnd.
| virtual void makVrv::DtBuoyBeaconFeatureBuilder::setBuoyTextureOffset |
( |
DtArticulatedModelAgent * |
model, |
|
|
const std::string & |
atlasFileName, |
|
|
const std::string & |
key |
|
) |
| |
|
protectedvirtual |
Use the parsed buoy data with the buoy texture atlas to set the buoy color (ex. Red, Green, etc.)
| virtual void makVrv::DtBuoyBeaconFeatureBuilder::setBuoyDesignator |
( |
DtArticulatedModelAgent * |
model, |
|
|
const std::string & |
atlasFileName, |
|
|
const std::string & |
designator |
|
) |
| |
|
protectedvirtual |
Set the designator for the buoy, 3 character max (ex. 'CF','123','A')
| void makVrv::DtBuoyBeaconFeatureBuilder::slot_featureToBeDeleted |
( |
const std::string & |
resgistrant, |
|
|
DtUniqueID |
featureId |
|
) |
| |
|
protected |
Callback for signal from the streamed feature manager that a buoy has paged out.
| void makVrv::DtBuoyBeaconFeatureBuilder::slot_dateChanged |
( |
| ) |
|
|
protected |
Callback for signal from shared state signaler that the date has changed. Look through the list of seasonal buoys to see if any need to be created or destroyed.
| void makVrv::DtBuoyBeaconFeatureBuilder::readModelDefParam |
( |
const DtModelDefinition & |
modelDef, |
|
|
const std::string & |
paramName, |
|
|
bool & |
resultOut |
|
) |
| |
|
protected |
| void makVrv::DtBuoyBeaconFeatureBuilder::readModelDefParam |
( |
const DtModelDefinition & |
modelDef, |
|
|
const std::string & |
paramName, |
|
|
float & |
resultOut |
|
) |
| |
|
protected |
| void makVrv::DtBuoyBeaconFeatureBuilder::readModelDefParam |
( |
const DtModelDefinition & |
modelDef, |
|
|
const std::string & |
paramName, |
|
|
std::string & |
resultOut |
|
) |
| |
|
protected |
| virtual void makVrv::DtBuoyBeaconFeatureBuilder::slot_coordinateSystemChanged |
( |
| ) |
|
|
protectedvirtual |
slot for when the coordinate system changes
| friend makVrv::DtBuoyBeaconFeatureBuilder::DtBuoyBeaconFeatureBuilderCreator |
| DtDe& makVrv::DtBuoyBeaconFeatureBuilder::myDe |
|
protected |
| std::string makVrv::DtBuoyBeaconFeatureBuilder::myBuoyName |
|
protected |
std::string myAtlasTextureName;
| std::string makVrv::DtBuoyBeaconFeatureBuilder::myFeatureClass |
|
protected |
| std::string makVrv::DtBuoyBeaconFeatureBuilder::myRegistrantName |
|
protected |
| int makVrv::DtBuoyBeaconFeatureBuilder::myCurrentDayOfTheYear |
|
protected |
| DtIntersector* makVrv::DtBuoyBeaconFeatureBuilder::myIntersector = nullptr |
|
protected |
local clone of the current system wide coordinate system converter. for thread safety.
The documentation for this class was generated from the following file: