15 #include <vlutil/vlConfig.h>
16 #include <vlutil/vlFilename.h>
17 #include <matrix/vlVector.h>
20 #include <boost/unordered_set.hpp>
33 class DtGeodeticCoord;
115 virtual bool initialize();
125 virtual bool reinitialize();
128 virtual bool reset();
135 virtual bool loadParametersFromFile(
const DtFilename&
filename);
142 virtual bool loadPhysicalWorldFile(
const DtFilename&
filename);
145 virtual void processParameters();
149 const DtFilename& physicalWorldFile()
const;
152 virtual bool parametersLoaded()
const;
157 virtual void addPreLoadParametersCallback(
159 virtual void removePreLoadParametersCallback(
166 virtual void addPostLoadParametersCallback(
168 virtual void removePostLoadParametersCallback(
191 virtual bool isValidState()
const;
218 virtual void geocentricToDatabase(
const DtDcm& in, DtDcm& out)
const;
221 virtual void geocentricToDatabase(
const DtVector& vIn,
const DtDcm& dIn,
231 virtual void databaseToGeocentric(
const DtDcm& in, DtDcm& out)
const;
234 virtual void databaseToGeocentric(
const DtVector& vIn,
const DtDcm& dIn,
241 virtual void databaseToGeodetic(
const DtVector& databasePosition, DtGeodeticCoord& geodeticPosition)
const;
244 virtual void databaseToGeodetic(
const DtVector& databasePosition,
DtVector& geodeticPosition)
const;
246 virtual void databaseToGeodetic(
const DtExtent& extent,
DtExtent& destExtent)
const;
249 virtual void geodeticToDatabase(
const DtExtent& extent,
DtExtent& destExtent)
const;
251 virtual void geodeticToDatabase(
const DtGeodeticCoord& geodeticPosition,
255 virtual void geodeticToDatabase(
const DtVector& geodeticPosition,
260 virtual void topoToDatabase(
const DtVector& databasePosition, DtDcm& topoToDatabase)
const;
263 virtual void databaseToTopo(
const DtVector& databasePosition, DtDcm& databaseToTopo)
const;
275 virtual double terrainHeight(
const DtPoint& databaseLocation,
304 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
305 virtual double terrainHeight(
double lat,
double lon,
bool* dataAvailable = 0,
306 bool overrideBlockingAssert =
false)
const;
307 virtual double terrainHeight(
const DtVector& databaseLocation,
308 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
312 virtual bool terrainHeight(
const DtPoint& databaseLocation,
double& height,
334 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
335 virtual bool terrainHeight(
double lat,
double lon,
double& height,
336 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
337 virtual bool terrainHeight(
const DtVector& databaseLocation,
double& height,
338 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
342 virtual bool terrainHeightAndSurface(
const DtPoint& databaseLocation,
379 double& height,
DtSurface& surface,
bool* dataAvailable = 0,
380 bool overrideBlockingAssert =
false)
const;
381 virtual bool terrainHeightAndSurface(
double lat,
double lon,
double& height,
382 DtSurface& surface,
bool* dataAvailable = 0,
383 bool overrideBlockingAssert =
false)
const;
384 virtual bool terrainHeightAndSurface(
const DtVector& databaseLocation,
385 double& height,
DtSurface& surface,
bool* dataAvailable = 0,
386 bool overrideBlockingAssert =
false)
const;
387 virtual bool terrainHeightAndSurface(
const DtVector& databaseLocation,
391 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
397 virtual bool terrainHeightAndSurfaceBelow(
const DtVector& databaseLocation,
398 double& heightAtLocation,
DtSurface& surfaceAtLocation,
399 bool* dataAvailable = 0,
400 bool overrideBlockingAssert =
false)
const;
403 virtual bool terrainHeightUnderWater(
const DtVector& databaseLocation,
465 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false);
469 virtual bool terrainSurface(
const DtPoint& databaseLocation,
500 DtSurface& surface,
bool* dataAvailable = 0,
501 bool overrideBlockingAssert =
false)
const;
502 virtual bool terrainSurface(
double lat,
double lon,
DtSurface& surface,
503 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
504 virtual bool terrainSurface(
const DtVector& databaseLocation,
505 DtSurface& surface,
bool* dataAvailable = 0,
506 bool overrideBlockingAssert =
false)
const;
509 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
510 virtual DtSurface terrainSurface(
double lat,
double lon,
511 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
513 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
546 virtual bool closestTerrainLocation(
const DtPoint& databaseLocation,
547 DtPoint& intersectionPoint,
bool* dataAvailable = 0,
548 bool overrideBlockingAssert =
false)
const;
552 virtual bool closestTerrainLocation(
double lat,
double lon,
553 DtPoint& intersectionPoint,
bool* dataAvailable = 0,
554 bool overrideBlockingAssert =
false)
const;
557 virtual bool closestTerrainLocation(
const DtVector& databaseLocation,
558 DtPoint& intersectionPoint,
bool* dataAvailable = 0,
559 bool overrideBlockingAssert =
false)
const;
563 virtual bool closestTerrainLocation(
const DtPoint& databaseLocation,
566 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
569 virtual bool closestTerrainLocation(
const DtPoint& databaseLocation,
572 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
576 virtual bool closestTerrainLocation(
double lat,
double lon,
579 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
582 virtual bool closestTerrainLocation(
const DtVector& databaseLocation,
585 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
615 virtual bool closestTerrainLocation(
const DtVector& curPosition,
617 bool overrideBlockingAssert =
false)
const;
649 virtual bool intersect(
const DtChord& chord,
DtPoint& intersectionPoint,
650 double& intersectionTime,
bool* dataAvailable = 0,
651 bool overrideBlockingAssert =
false)
const;
681 virtual bool intersect(
const DtChord& chord,
685 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
712 virtual bool allIntersectsAlongChord(
const DtChord& chord,
716 bool overrideBlockingAssert =
false)
const;
736 bool getVrfObjects(
DtChord& chord, std::list<const DtVrfObject*>& objects)
const;
739 std::list<const DtVrfObject*>& objects)
const;
774 virtual void groundClamp(
DtPoint& databaseCoord,
float const offset = 0,
775 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
794 virtual void groundClamp(
DtVector& databaseCoord,
float const offset = 0,
795 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
801 virtual void getVrfObjectsAlongChord(
const DtVector& databaseStart,
802 const DtVector& databaseEnd, std::list<const DtVrfObject*>& orderedList)
const;
818 virtual bool initializeSpatialVrfObjectOrganization();
843 static bool spatialOrganizationObjectFilterFcn(
const DtVrfObject* obj,
void* usr);
855 virtual bool processSpatialOrganizationObjectFilterFcn(
const DtVrfObject* obj);
858 static void querySpatialSubdivisionConfigurationCallback(
DtSimMessage* msg,
void* usr);
859 static void setSpatialSubdivisionConfigurationCallback(
DtSimMessage* msg,
void* usr);
862 static void requestSensorDomainsCallback(
DtSimMessage* msg,
void* usr);
863 virtual void sendSensorDomains();
867 virtual void processQuerySpatialSubdivisionConfiguration(
DtSimMessage* msg);
868 virtual void processSetSpatialSubdivisionConfiguration(
DtSimMessage* msg);
872 virtual bool useVrfObjectSpatialSub()
const;
873 virtual void setUseVrfObjectSpatialSub(
bool yesOrNo);
878 virtual bool isSpatialMgrResolutionUserSpecified()
const;
879 virtual void setSpatialMgrResolutionUserSpecified(
bool yesOrNo);
883 virtual unsigned int vrfObjectSpatialSubXResolution()
const;
884 virtual unsigned int vrfObjectSpatialSubYResolution()
const;
885 virtual unsigned int vrfObjectSpatialSubZResolution()
const;
892 virtual void setVrfObjectSpatialSubXResolution(
unsigned int newXResolution);
893 virtual void setVrfObjectSpatialSubYResolution(
unsigned int newYResolution);
894 virtual void setVrfObjectSpatialSubZResolution(
unsigned int newZResolution);
910 virtual void setSimManager(
DtSimManager* newSimManager);
965 virtual bool checkLineOfSight(
const DtVrfObject& viewingObject,
967 bool* terrainDataAvailable = 0,
968 const DtString& featureQueryName =
"default",
969 DtVector* intersectionPoint = 0)
const;
984 virtual bool checkLineOfSight(
const DtVrfObject& viewingObject,
986 bool* terrainDataAvailable = 0,
987 const DtString& featureQueryName =
"default",
988 DtVector* intersectionPoint = 0)
const;
1003 virtual bool checkLineOfSight(
const DtVector& databaseViewingPoint,
1004 const DtVrfObject& targetObject,
bool* terrainDataAvailable = 0,
1005 const DtString& featureQueryName =
"default",
1006 DtVector* intersectionPoint = 0)
const;
1018 virtual bool checkLineOfSightWithoutObjects(
1019 const DtVector& databaseViewingPoint,
1020 const DtVector& databaseTargetPoint,
1021 bool* terrainDataAvailable = 0,
1022 const DtString& featureQueryName =
"default",
1023 DtVector* intersectionPoint = 0)
const;
1044 virtual bool checkLineOfFire(
const DtVrfObject& viewingObject,
1046 const DtVector& databaseTargetPoint,
1047 bool* terrainDataAvailable = 0,
1048 double* normIntersectDistance = 0,
1051 int* ignoredForceType = 0)
const;
1054 virtual bool checkLineOfFire(
const DtVrfObject& viewingObject,
1056 bool* terrainDataAvailable = 0,
1057 double* normIntersectDistance = 0,
1060 int* ignoredForceType = 0)
const;
1063 virtual bool checkLineOfFire(
const DtVector& databaseViewingPoint,
1064 const DtVector& databaseTargetPoint,
1065 bool* terrainDataAvailable = 0,
1066 double* normIntersectDistance = 0,
1069 int* ignoredForceType = 0)
const;
1083 virtual bool checkLineOfFireWithoutObjects(
1084 const DtVector& databaseViewingPoint,
1085 const DtVector& databaseTargetPoint,
1086 bool* terrainDataAvailable = 0,
1087 double* normIntersectDistance = 0,
1089 DtVector* intersectingPoint = 0)
const;
1096 static void objectAboutToBeRemovedCb(
const DtVrfObject * vrfObject,
void * usr);
1098 virtual void expireDataLoadRequestsBeforeTime(
const double& time);
1103 virtual double thermoclinePermeability(
1113 return myLineOfSightTestsToPerform;
1120 const DtChord createWorldIntersectionChord(
const DtVector& databaseLocation)
const;
1139 virtual void removeLineOfSightTest(
const DtLosTestKey& testKey);
1154 virtual void addInitialLosChecks();
1162 virtual void setDefaultLineOfSightTestOrder(
1164 virtual void setLineOfSightTestOrder(
1171 virtual void performTest(
const DtLosTestKey& testToRun);
1188 static bool canBlockLineOfSight(
const DtVrfObject*
object,
void* usr);
1209 virtual bool checkVrfObjectsForLOS(
1214 virtual bool checkFeaturesForLOS(
1219 virtual bool checkTerrainForLOS(
1232 virtual bool intersectVrfObjects(
const DtVrfObject*
const primaryVrfObject,
1233 const DtVector& databaseStartPoint,
1239 const std::list<DtUUID>& ignoreList = std::list<DtUUID>(),
1240 int* ignoredForceType = 0)
const;
1246 virtual bool intersectVrfObjects(
const DtVrfObject*
const primaryVrfObject,
1251 const std::list<DtUUID>& ignoreList = std::list<DtUUID>(),
1252 int* ignoredForceType = 0)
const;
1257 virtual bool intersectsVrfObject(
const DtVrfObject& vrfObjectToTest,
1259 double& distToIntersect,
DtVector* surfaceNormal = 0)
const;
1262 virtual bool embarkedOnSameLowFidelityObject(
const DtVrfObject& primaryVrfObject,
1289 virtual void processObjectAboutToBeRemoved(
const DtVrfObject * vrfObject);
1293 virtual void performTerrainPreload();
1335 friend class IntersectVrfObjectFunctor;
virtual bool showInHelp() const
Definition: physicalWorld.h:1349
boost::shared_ptr< MAKVRinTerra::DtDynamicFeatureSet > myDynamicObjectFeatures
Definition: physicalWorld.h:1298
DtEnvironmentalStateManager * myEnvironmentalStateManager
Definition: physicalWorld.h:1320
NOTE: This entire class is deprecated, in favor of Dt3dChord.
Definition: chord.h:40
DtFilename myPhysicalWorldFile
Definition: physicalWorld.h:1324
DtVrfChordIntersectionRecord represents a list of DtChordIntersectRecords.
Definition: vrfChordIntersectRecordList.h:31
DtLineOfSightTestContainer myLineOfSightTestsToPerform
Definition: physicalWorld.h:1152
DtVrfObject is used to represent any type of simulated object (entities, aggregate, control objects) in a VR-Forces application.
Definition: vrfObject.h:215
std::map< DtLosTestKey, DtVrfLineOfSightFunctorSP > DtKeyedLineOfSightTestContainer
Definition: physicalWorld.h:1143
DtSensorSignatureManager * mySensorSignatureManager
Definition: physicalWorld.h:1318
DtRwNLengthStringVector is a named, readable/writable vector of strings of arbitrary length...
Definition: rwNLengthStringVector.h:28
void(* DtCallbackFunctionType)(void *)
The function signature of the callback function.
Definition: noArgumentCallbackList.h:156
Contains the DtFilterFunctionPredicate class declaration.
Definition: filterFunctionPredicate.h:23
const DtLineOfSightTestContainer & lineOfSightTestsToPerform() const
Definition: physicalWorld.h:1111
DtSpatialVrfObjectManagerInterface * mySpatialVrfObjectManager
Definition: physicalWorld.h:1306
The DtSpatialVrfObjectManager is responsible for maintaining a spatial organization of all specified ...
Definition: spatialVrfObjectManager.h:34
*bool testInvariant() const
DtKeyedLineOfSightTestContainer myMasterLineOfSightTestContainer
Definition: physicalWorld.h:1147
bool mySpatialMgrResolutionUserSpecified
Definition: physicalWorld.h:1301
Simple asynchronous callback queue.
Definition: vrfCallbackQueue.h:32
The DtExtent represents an axis-aligned 3d bounding box.
Definition: extent.h:43
DtNoArgumentCallbackList myPostLoadParametersCallbacks
Definition: physicalWorld.h:1333
Definition: surface.h:179
DtLineOfSightTestContainer::iterator DtLosTestIter
Definition: physicalWorld.h:1149
virtual DtString help(const DtString ¶meters)
Definition: consoleCommandManager.h:36
DtString DtLosTestKey
The following typedefs, functions, and other code are all related to the Line Of Sight calculations...
Definition: physicalWorld.h:1125
std::list< DtVrfLineOfSightFunctorSP > DtLineOfSightTestContainer
Definition: physicalWorld.h:105
Definition: physicalWorld.h:1343
DtPhysicalWorldParams * myParameters
Parameters for this physical world.
Definition: physicalWorld.h:1316
Instances of DtVrfObjectPredicate are used to evaluate a condition, given a DtVrfObject as an argumen...
Definition: vrfObjectPredicate.h:21
DtLineOfSightTestContainer::const_iterator DtLosTestConstIter
Definition: physicalWorld.h:1150
The DtPhysicalWorld is the primary interface to and manager of all of the "physical" aspects of the s...
Definition: physicalWorld.h:87
Definition: coordSystem.h:54
Central manager for calculating apparent signatures of entities from various viewpoints.
Definition: sensorSignatureManager.h:35
#define DT_DLL_vrfobjcore
This file is used to determine how to build.
Definition: vrfobjcoreDefines.h:24
File: simMsg.h.
Definition: simMessage.h:35
This class works just as DtCalllbackTable, but manages callbacks that have no arguments, and therefore don't fit in the template defined by DtCallbackList.
Definition: noArgumentCallbackList.h:152
Handles the any dynamic changes to the terrain.
Definition: dynamicTerrainManager.h:38
boost::unordered_set< const DtVrfObject * > DtVrfConstObjectUniqueContainer
Set of functions used to get the relevant DtVrfObjects from the object manager.
Definition: physicalWorld.h:729
DtExpireOlderThanCommand * myExpireOlderThanCommand
Definition: physicalWorld.h:1328
system includes
Definition: consoleCommandManager.h:27
DtTerrainInterface allows access to common terrain calls without having to know the terrain implement...
Definition: terrainInterface.h:84
boost::shared_ptr< DtVrfCallbackQueue > mySoilTypeLookupQueue
Definition: physicalWorld.h:1330
The DtVrfLineOfSightCheckParams class is used to configure the line of sight queries.
Definition: vrfLineOfSightCheckParams.h:27
Abstract interface for a spatial object manager.
Definition: spatialVrfObjectManager.h:46
Dynamic feature set object.
Definition: dynamicFeatureSet.h:24
bool myUseVrfObjectSpatialManager
Definition: physicalWorld.h:1300
DtTerrainInterface * myTerrainInterface
Definition: physicalWorld.h:1297
class DtVrfObjectManager:
Definition: vrfObjectManager.h:201
Readable-writable class holding all parameters for to configure the DtPhysicalWorld.
Definition: physicalWorldParams.h:26
Definition: vrfChordIntersectionRecord.h:19
DT_DLL_vrfutil bool intersection(const DtRailSegment *currentSegment, const DtRailSegment *nextSegment)
Given two segments, determine if where they meet is an intersection or just a bend in the road...
Definition: intersectionRecord.h:60
const DtFilename & physicalWorldFile() const
Returns the value of the last file loaded.
Definition: physicalWorld.h:1338
DtDynamicTerrainManager * myDynamicTerrainManager
Definition: physicalWorld.h:1322
DtBoost::shared_ptr< const DtManagedObjectList > DtManagedObjectListConstPtr
Typedef for a shared pointer to a const DtOrgViewManagedObjectList.
Definition: managedObjectList.h:31
unsigned int myVrfObjectSpatialSubXResolution
Definition: physicalWorld.h:1302
The simulation engine is controlled by a single,top-level class called the Simulation Manager...
Definition: simManager.h:102
DtNoArgumentCallbackList myPreLoadParametersCallbacks
Definition: physicalWorld.h:1332
Handles the environmental state of the simulation.
Definition: environmentalStateManager.h:41
DtManagedObjectListConstPtr mySpatiallyManagedVrfObjectList
Definition: physicalWorld.h:1308
DtMedium
Definition: surface.h:185
DtKeyedLineOfSightTestContainer::const_iterator DtMasterLosTestConstIter
Definition: physicalWorld.h:1145
voidpf uLong offset
Definition: ioapi.h:42
DtVrfObjectManager * myVrfObjectManager
Not owned, just used for reference.
Definition: physicalWorld.h:1313
DtTime myLastPreloadTerrainTime
Definition: physicalWorld.h:1326
DtKeyedLineOfSightTestContainer::iterator DtMasterLosTestIter
Definition: physicalWorld.h:1144
DtSimManager * mySimManager
Not owned, just used for reference.
Definition: physicalWorld.h:1311
virtual bool execute(const DtString ¶meters)=0
Execute the command.
unsigned int myVrfObjectSpatialSubZResolution
Definition: physicalWorld.h:1304
DtIntersectionType
Definition: intersectionRecord.h:41
DtBoost::shared_ptr< DtVrfLineOfSightFunctor > DtVrfLineOfSightFunctorSP
Typedefs for shared pointer to the Functors.
Definition: vrfLineOfSightFunctor.h:35
unsigned int myVrfObjectSpatialSubYResolution
Definition: physicalWorld.h:1303