15 #include <vlutil/vlConfig.h>
16 #include <vlutil/vlFilename.h>
17 #include <matrix/vlVector.h>
20 #include <boost/unordered_set.hpp>
34 class DtGeodeticCoord;
116 virtual bool initialize();
126 virtual bool reinitialize();
129 virtual bool reset();
136 virtual bool loadParametersFromFile(
const DtFilename&
filename);
143 virtual bool loadPhysicalWorldFile(
const DtFilename&
filename);
146 virtual void processParameters();
150 const DtFilename& physicalWorldFile()
const;
153 virtual bool parametersLoaded()
const;
158 virtual void addPreLoadParametersCallback(
160 virtual void removePreLoadParametersCallback(
167 virtual void addPostLoadParametersCallback(
169 virtual void removePostLoadParametersCallback(
192 virtual bool isValidState()
const;
219 virtual void geocentricToDatabase(
const DtDcm& in, DtDcm& out)
const;
222 virtual void geocentricToDatabase(
const DtVector& vIn,
const DtDcm& dIn,
232 virtual void databaseToGeocentric(
const DtDcm& in, DtDcm& out)
const;
235 virtual void databaseToGeocentric(
const DtVector& vIn,
const DtDcm& dIn,
242 virtual void databaseToGeodetic(
const DtVector& databasePosition, DtGeodeticCoord& geodeticPosition)
const;
245 virtual void databaseToGeodetic(
const DtVector& databasePosition,
DtVector& geodeticPosition)
const;
247 virtual void databaseToGeodetic(
const DtExtent& extent,
DtExtent& destExtent)
const;
250 virtual void geodeticToDatabase(
const DtExtent& extent,
DtExtent& destExtent)
const;
252 virtual void geodeticToDatabase(
const DtGeodeticCoord& geodeticPosition,
256 virtual void geodeticToDatabase(
const DtVector& geodeticPosition,
261 virtual void topoToDatabase(
const DtVector& databasePosition, DtDcm& topoToDatabase)
const;
264 virtual void databaseToTopo(
const DtVector& databasePosition, DtDcm& databaseToTopo)
const;
277 virtual double magneticNorth(
const DtVrfObject* obj);
281 virtual double magneticNorth(
const DtVector& point);
284 virtual double terrainHeight(
const DtPoint& databaseLocation,
313 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
314 virtual double terrainHeight(
double lat,
double lon,
bool* dataAvailable = 0,
315 bool overrideBlockingAssert =
false)
const;
316 virtual double terrainHeight(
const DtVector& databaseLocation,
317 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
321 virtual bool terrainHeight(
const DtPoint& databaseLocation,
double& height,
343 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
344 virtual bool terrainHeight(
double lat,
double lon,
double& height,
345 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
346 virtual bool terrainHeight(
const DtVector& databaseLocation,
double& height,
347 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
351 virtual bool terrainHeightAndSurface(
const DtPoint& databaseLocation,
388 double& height,
DtSurface& surface,
bool* dataAvailable = 0,
389 bool overrideBlockingAssert =
false)
const;
390 virtual bool terrainHeightAndSurface(
double lat,
double lon,
double& height,
391 DtSurface& surface,
bool* dataAvailable = 0,
392 bool overrideBlockingAssert =
false)
const;
393 virtual bool terrainHeightAndSurface(
const DtVector& databaseLocation,
394 double& height,
DtSurface& surface,
bool* dataAvailable = 0,
395 bool overrideBlockingAssert =
false)
const;
396 virtual bool terrainHeightAndSurface(
const DtVector& databaseLocation,
400 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
406 virtual bool terrainHeightAndSurfaceBelow(
const DtVector& databaseLocation,
407 double& heightAtLocation,
DtSurface& surfaceAtLocation,
408 bool* dataAvailable = 0,
409 bool overrideBlockingAssert =
false)
const;
412 virtual bool terrainHeightUnderWater(
const DtVector& databaseLocation,
474 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false);
478 virtual bool terrainSurface(
const DtPoint& databaseLocation,
509 DtSurface& surface,
bool* dataAvailable = 0,
510 bool overrideBlockingAssert =
false)
const;
511 virtual bool terrainSurface(
double lat,
double lon,
DtSurface& surface,
512 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
513 virtual bool terrainSurface(
const DtVector& databaseLocation,
514 DtSurface& surface,
bool* dataAvailable = 0,
515 bool overrideBlockingAssert =
false)
const;
518 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
519 virtual DtSurface terrainSurface(
double lat,
double lon,
520 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
522 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
555 virtual bool closestTerrainLocation(
const DtPoint& databaseLocation,
556 DtPoint& intersectionPoint,
bool* dataAvailable = 0,
557 bool overrideBlockingAssert =
false)
const;
561 virtual bool closestTerrainLocation(
double lat,
double lon,
562 DtPoint& intersectionPoint,
bool* dataAvailable = 0,
563 bool overrideBlockingAssert =
false)
const;
566 virtual bool closestTerrainLocation(
const DtVector& databaseLocation,
567 DtPoint& intersectionPoint,
bool* dataAvailable = 0,
568 bool overrideBlockingAssert =
false)
const;
572 virtual bool closestTerrainLocation(
const DtPoint& databaseLocation,
575 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
578 virtual bool closestTerrainLocation(
const DtPoint& databaseLocation,
581 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
585 virtual bool closestTerrainLocation(
double lat,
double lon,
588 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
591 virtual bool closestTerrainLocation(
const DtVector& databaseLocation,
594 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
624 virtual bool closestTerrainLocation(
const DtVector& curPosition,
626 bool overrideBlockingAssert =
false)
const;
658 virtual bool intersect(
const DtChord& chord,
DtPoint& intersectionPoint,
659 double& intersectionTime,
bool* dataAvailable = 0,
660 bool overrideBlockingAssert =
false)
const;
690 virtual bool intersect(
const DtChord& chord,
694 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
721 virtual bool allIntersectsAlongChord(
const DtChord& chord,
725 bool overrideBlockingAssert =
false)
const;
745 bool getVrfObjects(
DtChord& chord, std::list<const DtVrfObject*>& objects)
const;
748 std::list<const DtVrfObject*>& objects)
const;
783 virtual void groundClamp(
DtPoint& databaseCoord,
float const offset = 0,
784 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
803 virtual void groundClamp(
DtVector& databaseCoord,
float const offset = 0,
804 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
810 virtual void getVrfObjectsAlongChord(
const DtVector& databaseStart,
811 const DtVector& databaseEnd, std::list<const DtVrfObject*>& orderedList)
const;
827 virtual bool initializeSpatialVrfObjectOrganization();
852 static bool spatialOrganizationObjectFilterFcn(
const DtVrfObject* obj,
void* usr);
864 virtual bool processSpatialOrganizationObjectFilterFcn(
const DtVrfObject* obj);
867 static void querySpatialSubdivisionConfigurationCallback(
DtSimMessage* msg,
void* usr);
868 static void setSpatialSubdivisionConfigurationCallback(
DtSimMessage* msg,
void* usr);
871 static void requestSensorDomainsCallback(
DtSimMessage* msg,
void* usr);
872 virtual void sendSensorDomains();
876 virtual void processQuerySpatialSubdivisionConfiguration(
DtSimMessage* msg);
877 virtual void processSetSpatialSubdivisionConfiguration(
DtSimMessage* msg);
881 virtual bool useVrfObjectSpatialSub()
const;
882 virtual void setUseVrfObjectSpatialSub(
bool yesOrNo);
887 virtual bool isSpatialMgrResolutionUserSpecified()
const;
888 virtual void setSpatialMgrResolutionUserSpecified(
bool yesOrNo);
892 virtual unsigned int vrfObjectSpatialSubXResolution()
const;
893 virtual unsigned int vrfObjectSpatialSubYResolution()
const;
894 virtual unsigned int vrfObjectSpatialSubZResolution()
const;
901 virtual void setVrfObjectSpatialSubXResolution(
unsigned int newXResolution);
902 virtual void setVrfObjectSpatialSubYResolution(
unsigned int newYResolution);
903 virtual void setVrfObjectSpatialSubZResolution(
unsigned int newZResolution);
919 virtual void setSimManager(
DtSimManager* newSimManager);
974 virtual bool checkLineOfSight(
const DtVrfObject& viewingObject,
976 bool* terrainDataAvailable = 0,
977 const DtString& featureQueryName =
"default",
978 DtVector* intersectionPoint = 0)
const;
993 virtual bool checkLineOfSight(
const DtVrfObject& viewingObject,
995 bool* terrainDataAvailable = 0,
996 const DtString& featureQueryName =
"default",
997 DtVector* intersectionPoint = 0)
const;
1012 virtual bool checkLineOfSight(
const DtVector& databaseViewingPoint,
1013 const DtVrfObject& targetObject,
bool* terrainDataAvailable = 0,
1014 const DtString& featureQueryName =
"default",
1015 DtVector* intersectionPoint = 0)
const;
1027 virtual bool checkLineOfSightWithoutObjects(
1028 const DtVector& databaseViewingPoint,
1029 const DtVector& databaseTargetPoint,
1030 bool* terrainDataAvailable = 0,
1031 const DtString& featureQueryName =
"default",
1032 DtVector* intersectionPoint = 0)
const;
1053 virtual bool checkLineOfFire(
const DtVrfObject& viewingObject,
1055 const DtVector& databaseTargetPoint,
1056 bool* terrainDataAvailable = 0,
1057 double* normIntersectDistance = 0,
1060 int* ignoredForceType = 0)
const;
1063 virtual bool checkLineOfFire(
const DtVrfObject& viewingObject,
1065 bool* terrainDataAvailable = 0,
1066 double* normIntersectDistance = 0,
1069 int* ignoredForceType = 0)
const;
1072 virtual bool checkLineOfFire(
const DtVector& databaseViewingPoint,
1073 const DtVector& databaseTargetPoint,
1074 bool* terrainDataAvailable = 0,
1075 double* normIntersectDistance = 0,
1078 int* ignoredForceType = 0)
const;
1092 virtual bool checkLineOfFireWithoutObjects(
1093 const DtVector& databaseViewingPoint,
1094 const DtVector& databaseTargetPoint,
1095 bool* terrainDataAvailable = 0,
1096 double* normIntersectDistance = 0,
1098 DtVector* intersectingPoint = 0)
const;
1105 static void objectAboutToBeRemovedCb(
const DtVrfObject * vrfObject,
void * usr);
1107 virtual void expireDataLoadRequestsBeforeTime(
const double& time);
1112 virtual double thermoclinePermeability(
1122 return myLineOfSightTestsToPerform;
1129 const DtChord createWorldIntersectionChord(
const DtVector& databaseLocation)
const;
1148 virtual void removeLineOfSightTest(
const DtLosTestKey& testKey);
1163 virtual void addInitialLosChecks();
1171 virtual void setDefaultLineOfSightTestOrder(
1173 virtual void setLineOfSightTestOrder(
1180 virtual void performTest(
const DtLosTestKey& testToRun);
1197 static bool canBlockLineOfSight(
const DtVrfObject*
object,
void* usr);
1218 virtual bool checkVrfObjectsForLOS(
1223 virtual bool checkFeaturesForLOS(
1228 virtual bool checkTerrainForLOS(
1241 virtual bool intersectVrfObjects(
const DtVrfObject*
const primaryVrfObject,
1242 const DtVector& databaseStartPoint,
1248 const std::list<DtUUID>& ignoreList = std::list<DtUUID>(),
1249 int* ignoredForceType = 0)
const;
1255 virtual bool intersectVrfObjects(
const DtVrfObject*
const primaryVrfObject,
1260 const std::list<DtUUID>& ignoreList = std::list<DtUUID>(),
1261 int* ignoredForceType = 0)
const;
1266 virtual bool intersectsVrfObject(
const DtVrfObject& vrfObjectToTest,
1268 double& distToIntersect,
DtVector* surfaceNormal = 0)
const;
1271 virtual bool embarkedOnSameLowFidelityObject(
const DtVrfObject& primaryVrfObject,
1298 virtual void processObjectAboutToBeRemoved(
const DtVrfObject * vrfObject);
1302 virtual void performTerrainPreload();
1346 friend class IntersectVrfObjectFunctor;
virtual bool showInHelp() const
Definition: physicalWorld.h:1360
boost::shared_ptr< MAKVRinTerra::DtDynamicFeatureSet > myDynamicObjectFeatures
Definition: physicalWorld.h:1307
DtEnvironmentalStateManager * myEnvironmentalStateManager
Definition: physicalWorld.h:1331
NOTE: This entire class is deprecated, in favor of Dt3dChord.
Definition: chord.h:40
DtFilename myPhysicalWorldFile
Definition: physicalWorld.h:1335
DtVrfChordIntersectionRecord represents a list of DtChordIntersectRecords.
Definition: vrfChordIntersectRecordList.h:31
DtLineOfSightTestContainer myLineOfSightTestsToPerform
Definition: physicalWorld.h:1161
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:1152
DtSensorSignatureManager * mySensorSignatureManager
Definition: physicalWorld.h:1329
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:1120
DtVrfWorldMagneticModel * myWMM
Definition: physicalWorld.h:1317
DtSpatialVrfObjectManagerInterface * mySpatialVrfObjectManager
Definition: physicalWorld.h:1315
The DtSpatialVrfObjectManager is responsible for maintaining a spatial organization of all specified ...
Definition: spatialVrfObjectManager.h:34
*bool testInvariant() const
DtKeyedLineOfSightTestContainer myMasterLineOfSightTestContainer
Definition: physicalWorld.h:1156
bool mySpatialMgrResolutionUserSpecified
Definition: physicalWorld.h:1310
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:1344
Definition: surface.h:179
DtLineOfSightTestContainer::iterator DtLosTestIter
Definition: physicalWorld.h:1158
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:1134
std::list< DtVrfLineOfSightFunctorSP > DtLineOfSightTestContainer
Definition: physicalWorld.h:106
Definition: physicalWorld.h:1354
DtPhysicalWorldParams * myParameters
Parameters for this physical world.
Definition: physicalWorld.h:1327
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:1159
The DtPhysicalWorld is the primary interface to and manager of all of the "physical" aspects of the s...
Definition: physicalWorld.h:88
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:738
DtExpireOlderThanCommand * myExpireOlderThanCommand
Definition: physicalWorld.h:1339
system includes
Definition: consoleCommandManager.h:27
DtTerrainInterface allows access to common terrain calls without having to know the terrain implement...
Definition: terrainInterface.h:88
boost::shared_ptr< DtVrfCallbackQueue > mySoilTypeLookupQueue
Definition: physicalWorld.h:1341
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:1309
DtTerrainInterface * myTerrainInterface
Definition: physicalWorld.h:1306
class DtVrfObjectManager:
Definition: vrfObjectManager.h:202
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:1349
DtDynamicTerrainManager * myDynamicTerrainManager
Definition: physicalWorld.h:1333
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:1311
The simulation engine is controlled by a single,top-level class called the Simulation Manager...
Definition: simManager.h:103
DtNoArgumentCallbackList myPreLoadParametersCallbacks
Definition: physicalWorld.h:1343
Handles the environmental state of the simulation.
Definition: environmentalStateManager.h:46
DtManagedObjectListConstPtr mySpatiallyManagedVrfObjectList
Definition: physicalWorld.h:1319
DtMedium
Definition: surface.h:185
DtKeyedLineOfSightTestContainer::const_iterator DtMasterLosTestConstIter
Definition: physicalWorld.h:1154
voidpf uLong offset
Definition: ioapi.h:42
DtVrfObjectManager * myVrfObjectManager
Not owned, just used for reference.
Definition: physicalWorld.h:1324
DtTime myLastPreloadTerrainTime
Definition: physicalWorld.h:1337
Contains the interface to the world magnetic model.
Definition: vrfWorldMagneticModel.h:21
DtKeyedLineOfSightTestContainer::iterator DtMasterLosTestIter
Definition: physicalWorld.h:1153
DtSimManager * mySimManager
Not owned, just used for reference.
Definition: physicalWorld.h:1322
virtual bool execute(const DtString ¶meters)=0
Execute the command.
unsigned int myVrfObjectSpatialSubZResolution
Definition: physicalWorld.h:1313
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:1312