28 #include <matrix/vlVector.h>
29 #include <vlutil/vlConfig.h>
30 #include <vlutil/vlFilename.h>
45 class DtGeodeticCoord;
140 virtual bool initialize();
150 virtual bool reinitialize();
153 virtual bool reset();
160 virtual bool loadParametersFromFile(
const DtFilename&
filename);
167 virtual bool loadPhysicalWorldFile(
const DtFilename&
filename);
170 virtual void processParameters();
174 const DtFilename& physicalWorldFile()
const;
177 virtual bool parametersLoaded()
const;
182 virtual void addPreLoadParametersCallback(
184 virtual void removePreLoadParametersCallback(
191 virtual void addPostLoadParametersCallback(
193 virtual void removePostLoadParametersCallback(
216 virtual bool isValidState()
const;
241 virtual void geocentricToDatabase(
const DtVector& in, DtVector& out)
const;
244 virtual void geocentricToDatabase(
const DtDcm& in, DtDcm& out)
const;
247 virtual void geocentricToDatabase(
const DtVector& vIn,
const DtDcm& dIn,
248 DtVector& vOut, DtDcm& dOut)
const;
254 virtual void databaseToGeocentric(
const DtVector& in, DtVector& out)
const;
257 virtual void databaseToGeocentric(
const DtDcm& in, DtDcm& out)
const;
260 virtual void databaseToGeocentric(
const DtVector& vIn,
const DtDcm& dIn,
261 DtVector& vOut, DtDcm& dOut)
const;
267 virtual void databaseToGeodetic(
const DtVector& databasePosition, DtGeodeticCoord& geodeticPosition)
const;
270 virtual void databaseToGeodetic(
const DtVector& databasePosition, DtVector& geodeticPosition)
const;
272 virtual void databaseToGeodetic(
const DtExtent& extent,
DtExtent& destExtent)
const;
275 virtual void geodeticToDatabase(
const DtExtent& extent,
DtExtent& destExtent)
const;
277 virtual void geodeticToDatabase(
const DtGeodeticCoord& geodeticPosition,
278 DtVector& databasePosition)
const;
281 virtual void geodeticToDatabase(
const DtVector& geodeticPosition,
282 DtVector& databasePosition)
const;
286 virtual void topoToDatabase(
const DtVector& databasePosition, DtDcm& topoToDatabase)
const;
289 virtual void databaseToTopo(
const DtVector& databasePosition, DtDcm& databaseToTopo)
const;
299 virtual DtVector down(
const DtVector& databasePosition)
const;
304 virtual double magneticNorth(
const DtSimObject* obj);
308 virtual double magneticNorth(
const DtVector& point);
331 virtual double terrainHeight(
const DtPoint& databaseLocation,
336 virtual double terrainHeight(
const DtVector& databaseLocation,
354 virtual bool terrainHeight(
const DtPoint& databaseLocation,
double& height,
356 virtual bool terrainHeight(
double lat,
double lon,
double& height,
358 virtual bool terrainHeight(
const DtVector& databaseLocation,
double& height,
393 virtual bool terrainHeightAndSurface(
const DtPoint& databaseLocation,
395 virtual bool terrainHeightAndSurface(
double lat,
double lon,
double& height,
397 virtual bool terrainHeightAndSurface(
const DtVector& databaseLocation,
399 virtual bool terrainHeightAndSurface(
const DtVector& databaseLocation,
408 virtual bool terrainHeightAndSurfaceBelow(
const DtVector& databaseLocation,
409 double& heightAtLocation,
DtSurface& surfaceAtLocation,
413 virtual bool terrainHeightUnderWater(
const DtVector& databaseLocation,
467 double& groundHeight,
DtSurface& groundSurface, DtVector& groundNormal,
496 virtual bool terrainSurface(
const DtPoint& databaseLocation,
498 virtual bool terrainSurface(
double lat,
double lon,
DtSurface& surface,
500 virtual bool terrainSurface(
const DtVector& databaseLocation,
DtSurface& surfaceAtLocation,
528 virtual bool closestTerrainLocation(
const DtPoint& databaseLocation,
534 virtual bool closestTerrainLocation(
double lat,
double lon,
538 virtual bool closestTerrainLocation(
const DtVector& databaseLocation,
543 virtual bool closestTerrainLocation(
const DtPoint& databaseLocation,
549 virtual bool closestTerrainLocation(
double lat,
double lon,
554 virtual bool closestTerrainLocation(
const DtVector& databaseLocation,
577 virtual bool closestTerrainLocation(
const DtVector& curPosition,
586 virtual bool intersect(
const DtChord& chord,
DtPoint& intersectionPoint,
630 virtual bool intersect(
const DtChord& chord,
649 virtual bool allIntersectsAlongChord(
const DtChord& chord,
667 virtual void groundClamp(
DtPoint& databaseCoord,
float const offset,
678 virtual void groundClamp(DtVector& databaseCoord,
float const offset,
683 static void requestSensorDomainsCallback(
DtSimMessage* msg,
void* usr);
684 virtual void sendSensorDomains();
782 bool getVrfObjects(
const DtChord& chord, std::vector<const DtSimObject*>& objects)
const;
785 std::vector<const DtSimObject*>& objects)
const;
809 virtual void getVrfObjectsAlongChord(
const DtVector& databaseStart,
810 const DtVector& databaseEnd, std::vector<const DtSimObject*>& orderedList)
const;
826 virtual bool initializeSpatialVrfObjectOrganization();
851 static bool spatialOrganizationObjectFilterFcn(
const DtSimObject* obj,
void* usr);
863 virtual bool processSpatialOrganizationObjectFilterFcn(
const DtSimObject* obj);
867 static void querySpatialSubdivisionConfigurationCallback(
DtSimMessage* msg,
void* usr);
868 static void setSpatialSubdivisionConfigurationCallback(
DtSimMessage* msg,
void* usr);
874 virtual void processQuerySpatialSubdivisionConfiguration(
DtSimMessage* msg);
875 virtual void processSetSpatialSubdivisionConfiguration(
DtSimMessage* msg);
880 virtual bool useVrfObjectSpatialSub()
const;
881 virtual void setUseVrfObjectSpatialSub(
bool yesOrNo);
887 virtual bool isSpatialMgrResolutionUserSpecified()
const;
888 virtual void setSpatialMgrResolutionUserSpecified(
bool yesOrNo);
893 virtual unsigned int vrfObjectSpatialSubXResolution()
const;
894 virtual unsigned int vrfObjectSpatialSubYResolution()
const;
895 virtual unsigned int vrfObjectSpatialSubZResolution()
const;
902 virtual void setVrfObjectSpatialSubXResolution(
unsigned int newXResolution);
903 virtual void setVrfObjectSpatialSubYResolution(
unsigned int newYResolution);
904 virtual void setVrfObjectSpatialSubZResolution(
unsigned int newZResolution);
970 DtVector* intersectionPoint =
nullptr;
993 virtual bool checkLineOfSight(
const DtSimObject& viewingObject,
994 const DtVector& databaseViewingPoint,
const DtSimObject& targetObject,
995 bool* terrainDataAvailable = 0,
1011 virtual bool checkLineOfSight(
const DtSimObject& viewingObject,
1012 const DtVector& databaseViewingPoint,
const DtVector& databaseTargetPoint,
1013 bool* terrainDataAvailable = 0,
1029 virtual bool checkLineOfSight(
const DtVector& databaseViewingPoint,
1030 const DtSimObject& targetObject,
bool* terrainDataAvailable = 0,
1051 virtual bool checkLineOfFire(
const DtSimObject& viewingObject,
1052 const DtVector& databaseViewingPoint,
const DtSimObject& targetObject,
1053 const DtVector& databaseTargetPoint,
1054 bool* terrainDataAvailable = 0,
1055 double* normIntersectDistance = 0,
1057 DtVector* intersectingPoint = 0,
1058 int* ignoredForceType = 0)
const;
1061 virtual bool checkLineOfFire(
const DtSimObject& viewingObject,
1062 const DtVector& databaseViewingPoint,
const DtVector& databaseTargetPoint,
1063 bool* terrainDataAvailable = 0,
1064 double* normIntersectDistance = 0,
1066 DtVector* intersectingPoint = 0,
1067 int* ignoredForceType = 0)
const;
1070 virtual bool checkLineOfFire(
const DtVector& databaseViewingPoint,
1071 const DtVector& databaseTargetPoint,
1072 bool* terrainDataAvailable = 0,
1073 double* normIntersectDistance = 0,
1075 DtVector* intersectingPoint = 0,
1076 int* ignoredForceType = 0)
const;
1088 virtual bool checkLineOfFireWithoutObjects(
1089 const DtVector& databaseViewingPoint,
1090 const DtVector& databaseTargetPoint,
1091 bool* terrainDataAvailable = 0,
1092 double* normIntersectDistance = 0,
1094 DtVector* intersectingPoint = 0)
const;
1096 virtual void expireDataLoadRequestsBeforeTime(
const double& time);
1101 virtual double thermoclinePermeability(
1111 return myLineOfSightTestsToPerform;
1118 const DtChord createWorldIntersectionChord(
const DtVector& databaseLocation)
const;
1137 virtual void removeLineOfSightTest(
const DtLosTestKey& testKey);
1152 virtual void addInitialLosChecks();
1160 virtual void setDefaultLineOfSightTestOrder(
1162 virtual void setLineOfSightTestOrder(
1169 virtual void performTest(
const DtLosTestKey& testToRun);
1186 static bool canBlockLineOfSight(
const DtSimObject*
object,
void* usr);
1192 virtual DtVector localLineOfSightTestLocation(
const DtSimObject&
object)
const;
1207 virtual bool checkVrfObjectsForLOS(
1212 virtual bool checkTerrainForLOS(
1243 virtual bool intersectVrfObjects(
const DtSimObject*
const primaryVrfObject,
1244 const DtVector& databaseStartPoint,
1246 const DtVector& databaseEndPoint,
1249 DtVector* intersectNormal = 0,
1250 const std::list<DtUUID>& ignoreList = std::list<DtUUID>(),
1251 int* ignoredForceType = 0,
1252 const std::list<DtEntityType>& ignoredEntityTypes = std::list<DtEntityType>())
const;
1258 virtual bool intersectVrfObjects(
const DtSimObject*
const primaryVrfObject,
1259 const DtVector& databaseStartPoint,
const DtVector& databaseEndPoint,
1262 DtVector* intersectNormal = 0,
1263 const std::list<DtUUID>& ignoreList = std::list<DtUUID>(),
1264 int* ignoredForceType = 0,
1265 const std::list<DtEntityType>& ignoredEntityTypes = std::list<DtEntityType>())
const;
1270 virtual bool intersectsVrfObject(
const DtSimObject& vrfObjectToTest,
1271 const DtVector& databaseStartPoint,
const DtVector& databaseEndPoint,
1272 double& distToIntersect, DtVector* surfaceNormal = 0)
const;
1275 virtual bool embarkedOnSameLowFidelityObject(
const DtSimObject& primaryVrfObject,
1309 virtual void intersectEntityBvPlanes(
const DtChord& losChord,
1310 const DtSimObject* blockingObj,
const bool isObserverBlocked,
1311 const DtVector& targetLocation,
1312 double& interxTime, DtVector& interxNormal)
const;
1316 bool testInvariant()
const;
1342 virtual void performTerrainPreload();
1344 const std::list<DtEntityType>& entityTypesIgnoredForLosChecks()
const;
1389 friend class IntersectVrfObjectFunctor;
1398 const DtVector& databaseViewingPoint,
const DtLocalObject& targetObject,
1399 const DtVector& databaseTargetPoint,
1400 bool* terrainDataAvailable = 0,
1401 double* normIntersectDistance = 0,
1403 DtVector* intersectingPoint = 0,
1404 int* ignoredForceType = 0)
const;
1407 const DtVector& databaseViewingPoint,
const DtVector& databaseTargetPoint,
1408 bool* terrainDataAvailable = 0,
1409 double* normIntersectDistance = 0,
1411 DtVector* intersectingPoint = 0,
1412 int* ignoredForceType = 0)
const;
DtEnvironmentalStateManager * myEnvironmentalStateManager
Definition: physicalWorld.h:1372
NOTE: This entire class is deprecated, in favor of Dt3dChord.
Definition: chord.h:40
class DtLocalObjectManager:
Definition: localObjectManager.h:157
Optional parameters which can be passed into the various checkLineOfSight functions.
Definition: physicalWorld.h:961
DtFilename myPhysicalWorldFile
Definition: physicalWorld.h:1376
DtVrfChordIntersectionRecord represents a list of DtChordIntersectRecords. This is useful for followi...
Definition: vrfChordIntersectRecordList.h:31
DtLineOfSightTestContainer myLineOfSightTestsToPerform
Definition: physicalWorld.h:1150
std::map< DtLosTestKey, DtVrfLineOfSightFunctorSP > DtKeyedLineOfSightTestContainer
Definition: physicalWorld.h:1141
DtSensorSignatureManager * mySensorSignatureManager
Definition: physicalWorld.h:1370
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:155
Contains the DtFilterFunctionPredicate class declaration.
Definition: filterFunctionPredicate.h:20
const DtLineOfSightTestContainer & lineOfSightTestsToPerform() const
Definition: physicalWorld.h:1109
DtVrfWorldMagneticModel * myWMM
Definition: physicalWorld.h:1359
DtSpatialVrfObjectManagerInterface * mySpatialVrfObjectManager
Definition: physicalWorld.h:1357
The DtSpatialVrfObjectManager is responsible for maintaining a spatial organization of all specified ...
Definition: spatialVrfObjectManager.h:31
DtKeyedLineOfSightTestContainer myMasterLineOfSightTestContainer
Definition: physicalWorld.h:1145
bool mySpatialMgrResolutionUserSpecified
Definition: physicalWorld.h:1352
Simple asynchronous callback queue.
Definition: vrfCallbackQueue.h:29
std::shared_ptr< const DtManagedObjectList > DtManagedObjectListConstPtr
Typedef for a shared pointer to a const DtOrgViewManagedObjectList. These lists are used within VR-Fo...
Definition: managedObjectList.h:35
The DtExtent represents an axis-aligned 3d bounding box.
Definition: extent.h:43
std::vector< const DtSimObject * > DtVrfConstObjectUniqueContainer
Used to get the relevant DtSimObjects from the object manager. If a primitive is specified, the function returns a container of DtSimObjects that is guaranteed to contain at least all the DtSimObjects that intersect the specified geometric primitive.
Definition: physicalWorld.h:775
DtNoArgumentCallbackList myPostLoadParametersCallbacks
Definition: physicalWorld.h:1385
Definition: surface.h:181
DtLineOfSightTestContainer::iterator DtLosTestIter
Definition: physicalWorld.h:1147
boost::signals2::scoped_connection mySimObjectDeletedConnection
Definition: physicalWorld.h:1387
virtual DtString help(const DtString ¶meters)
Definition: consoleCommandManager.h:37
DtString DtLosTestKey
The following typedefs, functions, and other code are all related to the Line Of Sight calculations...
Definition: physicalWorld.h:1123
DtCheckLineOfSightOptions()
Definition: physicalWorld.h:963
std::list< DtVrfLineOfSightFunctorSP > DtLineOfSightTestContainer
Definition: physicalWorld.h:130
virtual bool showInHelp() const override
Definition: physicalWorld.h:1432
Definition: physicalWorld.h:1426
DtPhysicalWorldParams * myParameters
Parameters for this physical world.
Definition: physicalWorld.h:1368
Contains the DtVrfObjectPredicate class declaration.
Definition: vrfObjectPredicate.h:20
DtCheckLineOfSightOptions(DtTerrainCategoryMask mask)
Convenience constructor when only setting the mask to a specific value.
Definition: physicalWorld.h:965
DtTerrainIntersectOptions Passed to terrain intersect functions to modify how intersect acts...
Definition: terrainIntersectOptions.h:22
DtLineOfSightTestContainer::const_iterator DtLosTestConstIter
Definition: physicalWorld.h:1148
The DtPhysicalWorld is the primary interface to and manager of all of the "physical" aspects of the s...
Definition: physicalWorld.h:112
Definition: coordSystem.h:54
DtLocalObjectManager * myObjectManager
Definition: physicalWorld.h:1365
Central manager for calculating apparent signatures in all the sensor domains. Apparent signatures ar...
Definition: sensorSignatureManager.h:42
#define DT_DLL_vrfobjcore
This file is used to determine how to build.
Definition: vrfobjcoreDefines.h:24
std::list< DtEntityType > myEntityTypesIgnoredForLosChecks
Cached version of data from parameters in a format to pass to LOS checks.
Definition: physicalWorld.h:1392
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:151
Handles the any dynamic changes to the terrain. There is only one environmental state for the whole s...
Definition: dynamicTerrainManager.h:97
DtExpireOlderThanCommand * myExpireOlderThanCommand
Definition: physicalWorld.h:1380
system includes
Definition: consoleCommandManager.h:28
DtTerrainInterface allows access to common terrain calls without having to know the terrain implement...
Definition: terrainInterface.h:93
The DtVrfLineOfSightCheckParams class is used to configure the line of sight queries.
Definition: vrfLineOfSightCheckParams.h:30
std::shared_ptr< MAKVRinTerra::DtDynamicFeatureSet > myDynamicObjectFeatures
Definition: physicalWorld.h:1349
Terrain which represents buildings and other structures. There should be terrain skin under these...
Definition: rwTerrainCategoryMask.h:23
std::shared_ptr< DtVrfLineOfSightFunctor > DtVrfLineOfSightFunctorSP
Typedefs for shared pointer to the Functors.
Definition: vrfLineOfSightFunctor.h:35
Abstract interface for a spatial object manager.
Definition: spatialVrfObjectManager.h:43
Dynamic feature set object.
Definition: dynamicFeatureSet.h:24
bool myUseVrfObjectSpatialManager
Definition: physicalWorld.h:1351
DtSimulationServices * mySimulationServices
Not owned, just used for reference.
Definition: physicalWorld.h:1364
DtTerrainInterface * myTerrainInterface
Definition: physicalWorld.h:1348
Readable-writable class holding all parameters for to configure the DtPhysicalWorld.
Definition: physicalWorldParams.h:26
Central access point of all non-object-specific the services and managers that are available for use ...
Definition: simulationServices.h:96
Definition: vrfChordIntersectionRecord.h:19
This class is the central access point for all current-frame state of all objects in the simulation i...
Definition: simObjectManager.h:32
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...
const DtFilename & physicalWorldFile() const
Returns the value of the last file loaded.
Definition: physicalWorld.h:1421
Represents a single simulation object in the exercise. Object may be VRF simulation, or non-VRF simulated, and may be simulated by the local sim engine, or by a remote sim engine. Only public (external) state of the object is available. All data is read-only. All access to data of the object is thread safe within the simulation frame.
Definition: simObject.h:80
DtDynamicTerrainManager * myDynamicTerrainManager
Definition: physicalWorld.h:1374
std::shared_ptr< DtVrfCallbackQueue > mySoilTypeLookupQueue
Definition: physicalWorld.h:1382
unsigned int DtTerrainCategoryMask
This bitmask is made using DtTerrainCategory values.
Definition: rwTerrainCategoryMask.h:27
unsigned int myVrfObjectSpatialSubXResolution
Definition: physicalWorld.h:1353
DtNoArgumentCallbackList myPreLoadParametersCallbacks
Definition: physicalWorld.h:1384
Maintains the environmental state of the simulation, such as time of day, illumination, and various aspects of the weather. All access to this data from any behavior or dynamics model should be made to this class.
Definition: environmentalStateManager.h:67
DtManagedObjectListConstPtr mySpatiallyManagedVrfObjectList
Definition: physicalWorld.h:1361
DtMedium
Definition: surface.h:187
DtKeyedLineOfSightTestContainer::const_iterator DtMasterLosTestConstIter
Definition: physicalWorld.h:1143
voidpf uLong offset
Definition: ioapi.h:42
DtTime myLastPreloadTerrainTime
Definition: physicalWorld.h:1378
Contains the interface to the world magnetic model.
Definition: vrfWorldMagneticModel.h:23
#define VRF4API_METHOD
Include this header file to allow for the definition/usage of the ability to mark something as deprec...
Definition: vrf4XAPI.h:23
DtKeyedLineOfSightTestContainer::iterator DtMasterLosTestIter
Definition: physicalWorld.h:1142
virtual bool execute(const DtString ¶meters)=0
Execute the command.
DtTerrainIntersectStatus Contains information about status of "data available" when an intersection c...
Definition: terrainIntersectStatus.h:23
unsigned int myVrfObjectSpatialSubZResolution
Definition: physicalWorld.h:1355
A locally simulated VRF object.
Definition: localObject.h:98
unsigned int myVrfObjectSpatialSubYResolution
Definition: physicalWorld.h:1354