15 #include <vlutil/vlConfig.h>
16 #include <vlutil/vlFilename.h>
29 class DtGeodeticCoord;
110 virtual bool initialize();
120 virtual bool reinitialize();
123 virtual bool reset();
130 virtual bool loadParametersFromFile(
const DtFilename& filename);
137 virtual bool loadPhysicalWorldFile(
const DtFilename& filename);
140 virtual void processParameters();
144 const DtFilename& physicalWorldFile()
const;
147 virtual bool parametersLoaded()
const;
168 virtual bool isValidState()
const;
195 virtual void geocentricToDatabase(
const DtDcm& in, DtDcm& out)
const;
198 virtual void geocentricToDatabase(
const DtVector& vIn,
const DtDcm& dIn,
208 virtual void databaseToGeocentric(
const DtDcm& in, DtDcm& out)
const;
211 virtual void databaseToGeocentric(
const DtVector& vIn,
const DtDcm& dIn,
218 virtual void databaseToGeodetic(
const DtVector& databasePosition, DtGeodeticCoord& geodeticPosition)
const;
221 virtual void databaseToGeodetic(
const DtVector& databasePosition,
DtVector& geodeticPosition)
const;
223 virtual void databaseToGeodetic(
const DtExtent& extent,
DtExtent& destExtent)
const;
226 virtual void geodeticToDatabase(
const DtExtent& extent,
DtExtent& destExtent)
const;
228 virtual void geodeticToDatabase(
const DtGeodeticCoord& geodeticPosition,
232 virtual void geodeticToDatabase(
const DtVector& geodeticPosition,
237 virtual void topoToDatabase(
const DtVector& databasePosition, DtDcm& topoToDatabase)
const;
240 virtual void databaseToTopo(
const DtVector& databasePosition, DtDcm& databaseToTopo)
const;
280 virtual double terrainHeight(
const DtPoint& databaseLocation,
281 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
282 virtual double terrainHeight(
double lat,
double lon,
bool* dataAvailable = 0,
283 bool overrideBlockingAssert =
false)
const;
284 virtual double terrainHeight(
const DtVector& databaseLocation,
285 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
310 virtual bool terrainHeight(
const DtPoint& databaseLocation,
double& height,
311 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
312 virtual bool terrainHeight(
double lat,
double lon,
double& height,
313 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
314 virtual bool terrainHeight(
const DtVector& databaseLocation,
double& height,
315 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
355 virtual bool terrainHeightAndSurface(
const DtPoint& databaseLocation,
356 double& height,
DtSurface& surface,
bool* dataAvailable = 0,
357 bool overrideBlockingAssert =
false)
const;
358 virtual bool terrainHeightAndSurface(
double lat,
double lon,
double& height,
359 DtSurface& surface,
bool* dataAvailable = 0,
360 bool overrideBlockingAssert =
false)
const;
361 virtual bool terrainHeightAndSurface(
const DtVector& databaseLocation,
362 double& height,
DtSurface& surface,
bool* dataAvailable = 0,
363 bool overrideBlockingAssert =
false)
const;
364 virtual bool terrainHeightAndSurface(
const DtVector& databaseLocation,
368 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
402 virtual bool terrainSurface(
const DtPoint& databaseLocation,
403 DtSurface& surface,
bool* dataAvailable = 0,
404 bool overrideBlockingAssert =
false)
const;
405 virtual bool terrainSurface(
double lat,
double lon,
DtSurface& surface,
406 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
407 virtual bool terrainSurface(
const DtVector& databaseLocation,
408 DtSurface& surface,
bool* dataAvailable = 0,
409 bool overrideBlockingAssert =
false)
const;
412 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
413 virtual DtSurface terrainSurface(
double lat,
double lon,
414 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
416 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
449 virtual bool closestTerrainLocation(
const DtPoint& databaseLocation,
450 DtPoint& intersectionPoint,
bool* dataAvailable = 0,
451 bool overrideBlockingAssert =
false)
const;
455 virtual bool closestTerrainLocation(
double lat,
double lon,
456 DtPoint& intersectionPoint,
bool* dataAvailable = 0,
457 bool overrideBlockingAssert =
false)
const;
460 virtual bool closestTerrainLocation(
const DtVector& databaseLocation,
461 DtPoint& intersectionPoint,
bool* dataAvailable = 0,
462 bool overrideBlockingAssert =
false)
const;
466 virtual bool closestTerrainLocation(
const DtPoint& databaseLocation,
469 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
473 virtual bool closestTerrainLocation(
double lat,
double lon,
476 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
479 virtual bool closestTerrainLocation(
const DtVector& databaseLocation,
482 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
512 virtual bool closestTerrainLocation(
const DtVector& curPosition,
514 bool overrideBlockingAssert =
false)
const;
546 virtual bool intersect(
const DtChord& chord,
DtPoint& intersectionPoint,
547 double& intersectionTime,
bool* dataAvailable = 0,
548 bool overrideBlockingAssert =
false)
const;
578 virtual bool intersect(
const DtChord& chord,
582 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
595 bool getVrfObjects(
DtExtent& extent, std::set<DtVrfObject*>& objects);
596 bool getVrfObjects(
DtExtent& extent, std::set<const DtVrfObject*>& objects)
const;
600 std::set<DtVrfObject*>& objects);
603 std::set<const DtVrfObject*>& objects)
const;
605 bool getVrfObjects(
DtChord& chord, std::list<DtVrfObject*>& objects);
606 bool getVrfObjects(
DtChord& chord, std::list<const DtVrfObject*>& objects)
const;
609 std::list<DtVrfObject*>& objects);
611 std::list<const DtVrfObject*>& objects)
const;
646 virtual void groundClamp(
DtPoint& databaseCoord,
float const offset = 0,
647 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
666 virtual void groundClamp(
DtVector& databaseCoord,
float const offset = 0,
667 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
673 virtual void getVrfObjectsAlongChord(
const DtVector& databaseStart,
674 const DtVector& databaseEnd, std::list<const DtVrfObject*>& orderedList)
const;
690 virtual bool initializeSpatialVrfObjectOrganization();
715 static bool spatialOrganizationObjectFilterFcn(
const DtVrfObject* obj,
void* usr);
727 virtual bool processSpatialOrganizationObjectFilterFcn(
const DtVrfObject* obj);
730 static void querySpatialSubdivisionConfigurationCallback(
DtSimMessage* msg,
void* usr);
731 static void setSpatialSubdivisionConfigurationCallback(
DtSimMessage* msg,
void* usr);
735 virtual void processQuerySpatialSubdivisionConfiguration(
DtSimMessage* msg);
736 virtual void processSetSpatialSubdivisionConfiguration(
DtSimMessage* msg);
740 virtual bool useVrfObjectSpatialSub()
const;
741 virtual void setUseVrfObjectSpatialSub(
bool yesOrNo);
746 virtual bool isSpatialMgrResolutionUserSpecified()
const;
747 virtual void setSpatialMgrResolutionUserSpecified(
bool yesOrNo);
751 virtual unsigned int vrfObjectSpatialSubXResolution()
const;
752 virtual unsigned int vrfObjectSpatialSubYResolution()
const;
753 virtual unsigned int vrfObjectSpatialSubZResolution()
const;
760 virtual void setVrfObjectSpatialSubXResolution(
unsigned int newXResolution);
761 virtual void setVrfObjectSpatialSubYResolution(
unsigned int newYResolution);
762 virtual void setVrfObjectSpatialSubZResolution(
unsigned int newZResolution);
778 virtual void setSimManager(
DtSimManager* newSimManager);
818 virtual bool checkLineOfSight(
const DtVrfObject& viewingObject,
820 bool* terrainDataAvailable = 0)
const;
835 virtual bool checkLineOfSight(
const DtVrfObject& viewingObject,
837 bool* terrainDataAvailable = 0)
const;
852 virtual bool checkLineOfSight(
const DtVector& databaseViewingPoint,
853 const DtVrfObject& targetObject,
bool* terrainDataAvailable = 0)
const;
865 virtual bool checkLineOfSightWithoutObjects(
866 const DtVector& databaseViewingPoint,
867 const DtVector& databaseTargetPoint,
868 bool* terrainDataAvailable = 0);
876 static void objectAboutToBeRemovedCb(
DtVrfObject * vrfObject,
void * usr);
878 virtual void expireDataLoadRequestsBeforeTime(
const double& time);
900 virtual void addInitialLosChecks();
908 virtual void setDefaultLineOfSightTestOrder(
910 virtual void setLineOfSightTestOrder(
923 virtual void removeLineOfSightTest(
const DtLosTestKey& testKey);
929 virtual void performTest(
const DtLosTestKey& testToRun);
934 virtual void doNotPerformTest(
const DtLosTestKey& testToRun);
946 static bool canBlockLineOfSight(
const DtVrfObject*
object,
void* usr);
961 virtual bool checkVrfObjectsForLOS(
966 virtual bool checkFeaturesForLOS(
971 virtual bool checkTerrainForLOS(
977 virtual bool intersectVrfObjects(
const DtVrfObject*
const primaryVrfObject,
979 const DtVrfObject*
const secondaryVrfObject)
const;
984 virtual bool intersectsVrfObject(
const DtVrfObject& vrfObjectToTest,
986 double& distToIntersect)
const;
990 bool testInvariant()
const;
996 const DtChord createWorldIntersectionChord(
const DtVector& databaseLocation)
const;
1018 virtual void processObjectAboutToBeRemoved(
DtVrfObject * vrfObject);
1022 virtual void performTerrainPreload();
1058 friend class IntersectVrfObjectFunctor;