15 #include <vlutil/vlConfig.h>
16 #include <vlutil/vlFilename.h>
17 #include <matrix/vlVector.h>
20 #include <boost/unordered_set.hpp>
37 class DtGeodeticCoord;
130 virtual bool initialize();
140 virtual bool reinitialize();
143 virtual bool reset();
150 virtual bool loadParametersFromFile(
const DtFilename&
filename);
157 virtual bool loadPhysicalWorldFile(
const DtFilename&
filename);
160 virtual void processParameters();
164 const DtFilename& physicalWorldFile()
const;
167 virtual bool parametersLoaded()
const;
172 virtual void addPreLoadParametersCallback(
174 virtual void removePreLoadParametersCallback(
181 virtual void addPostLoadParametersCallback(
183 virtual void removePostLoadParametersCallback(
206 virtual bool isValidState()
const;
234 virtual void geocentricToDatabase(
const DtDcm& in, DtDcm& out)
const;
237 virtual void geocentricToDatabase(
const DtVector& vIn,
const DtDcm& dIn,
247 virtual void databaseToGeocentric(
const DtDcm& in, DtDcm& out)
const;
250 virtual void databaseToGeocentric(
const DtVector& vIn,
const DtDcm& dIn,
257 virtual void databaseToGeodetic(
const DtVector& databasePosition, DtGeodeticCoord& geodeticPosition)
const;
260 virtual void databaseToGeodetic(
const DtVector& databasePosition,
DtVector& geodeticPosition)
const;
262 virtual void databaseToGeodetic(
const DtExtent& extent,
DtExtent& destExtent)
const;
265 virtual void geodeticToDatabase(
const DtExtent& extent,
DtExtent& destExtent)
const;
267 virtual void geodeticToDatabase(
const DtGeodeticCoord& geodeticPosition,
271 virtual void geodeticToDatabase(
const DtVector& geodeticPosition,
276 virtual void topoToDatabase(
const DtVector& databasePosition, DtDcm& topoToDatabase)
const;
279 virtual void databaseToTopo(
const DtVector& databasePosition, DtDcm& databaseToTopo)
const;
294 virtual double magneticNorth(
const DtSimObject* obj);
298 virtual double magneticNorth(
const DtVector& point);
331 virtual double terrainHeight(
const DtPoint& databaseLocation,
332 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
333 virtual double terrainHeight(
double lat,
double lon,
bool* dataAvailable = 0,
334 bool overrideBlockingAssert =
false)
const;
335 virtual double terrainHeight(
const DtVector& databaseLocation,
336 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
362 virtual bool terrainHeight(
const DtPoint& databaseLocation,
double& height,
363 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
364 virtual bool terrainHeight(
double lat,
double lon,
double& height,
365 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
366 virtual bool terrainHeight(
const DtVector& databaseLocation,
double& height,
367 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
409 virtual bool terrainHeightAndSurface(
const DtPoint& databaseLocation,
410 double& height,
DtSurface& surface,
bool* dataAvailable = 0,
411 bool overrideBlockingAssert =
false)
const;
412 virtual bool terrainHeightAndSurface(
double lat,
double lon,
double& height,
413 DtSurface& surface,
bool* dataAvailable = 0,
414 bool overrideBlockingAssert =
false)
const;
415 virtual bool terrainHeightAndSurface(
const DtVector& databaseLocation,
416 double& height,
DtSurface& surface,
bool* dataAvailable = 0,
417 bool overrideBlockingAssert =
false)
const;
418 virtual bool terrainHeightAndSurface(
const DtVector& databaseLocation,
422 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
429 virtual bool terrainHeightAndSurfaceBelow(
const DtVector& databaseLocation,
430 double& heightAtLocation,
DtSurface& surfaceAtLocation,
431 bool* dataAvailable = 0,
432 bool overrideBlockingAssert =
false)
const;
435 virtual bool terrainHeightUnderWater(
const DtVector& databaseLocation,
498 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false);
534 virtual bool terrainSurface(
const DtPoint& databaseLocation,
535 DtSurface& surface,
bool* dataAvailable = 0,
536 bool overrideBlockingAssert =
false)
const;
537 virtual bool terrainSurface(
double lat,
double lon,
DtSurface& surface,
538 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
539 virtual bool terrainSurface(
const DtVector& databaseLocation,
540 DtSurface& surface,
bool* dataAvailable = 0,
541 bool overrideBlockingAssert =
false)
const;
544 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
545 virtual DtSurface terrainSurface(
double lat,
double lon,
546 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
548 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
584 virtual bool closestTerrainLocation(
const DtPoint& databaseLocation,
586 DtPoint& intersectionPoint,
bool* dataAvailable = 0,
587 bool overrideBlockingAssert =
false)
const;
591 virtual bool closestTerrainLocation(
double lat,
double lon,
592 DtPoint& intersectionPoint,
bool* dataAvailable = 0,
593 bool overrideBlockingAssert =
false)
const;
596 virtual bool closestTerrainLocation(
const DtVector& databaseLocation,
597 DtPoint& intersectionPoint,
bool* dataAvailable = 0,
598 bool overrideBlockingAssert =
false)
const;
602 virtual bool closestTerrainLocation(
const DtPoint& databaseLocation,
605 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
608 virtual bool closestTerrainLocation(
const DtPoint& databaseLocation,
611 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
615 virtual bool closestTerrainLocation(
double lat,
double lon,
618 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
621 virtual bool closestTerrainLocation(
const DtVector& databaseLocation,
624 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
654 virtual bool closestTerrainLocation(
const DtVector& curPosition,
656 bool overrideBlockingAssert =
false)
const;
663 virtual bool intersect(
const DtChord& chord,
DtPoint& intersectionPoint,
694 double& intersectionTime,
bool* dataAvailable = 0,
695 bool overrideBlockingAssert =
false)
const;
725 virtual bool intersect(
const DtChord& chord,
729 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
757 virtual bool allIntersectsAlongChord(
const DtChord& chord,
761 bool overrideBlockingAssert =
false)
const;
785 virtual void groundClamp(
DtPoint& databaseCoord,
float const offset = 0,
786 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
805 virtual void groundClamp(
DtVector& databaseCoord,
float const offset = 0,
806 bool* dataAvailable = 0,
bool overrideBlockingAssert =
false)
const;
811 static void requestSensorDomainsCallback(
DtSimMessage* msg,
void* usr);
812 virtual void sendSensorDomains();
910 bool getVrfObjects(
const DtChord& chord, std::vector<const DtSimObject*>& objects)
const;
913 std::vector<const DtSimObject*>& objects)
const;
937 virtual void getVrfObjectsAlongChord(
const DtVector& databaseStart,
938 const DtVector& databaseEnd, std::vector<const DtSimObject*>& orderedList)
const;
954 virtual bool initializeSpatialVrfObjectOrganization();
979 static bool spatialOrganizationObjectFilterFcn(
const DtSimObject* obj,
void* usr);
991 virtual bool processSpatialOrganizationObjectFilterFcn(
const DtSimObject* obj);
995 static void querySpatialSubdivisionConfigurationCallback(
DtSimMessage* msg,
void* usr);
996 static void setSpatialSubdivisionConfigurationCallback(
DtSimMessage* msg,
void* usr);
1002 virtual void processQuerySpatialSubdivisionConfiguration(
DtSimMessage* msg);
1003 virtual void processSetSpatialSubdivisionConfiguration(
DtSimMessage* msg);
1008 virtual bool useVrfObjectSpatialSub()
const;
1009 virtual void setUseVrfObjectSpatialSub(
bool yesOrNo);
1015 virtual bool isSpatialMgrResolutionUserSpecified()
const;
1016 virtual void setSpatialMgrResolutionUserSpecified(
bool yesOrNo);
1021 virtual unsigned int vrfObjectSpatialSubXResolution()
const;
1022 virtual unsigned int vrfObjectSpatialSubYResolution()
const;
1023 virtual unsigned int vrfObjectSpatialSubZResolution()
const;
1030 virtual void setVrfObjectSpatialSubXResolution(
unsigned int newXResolution);
1031 virtual void setVrfObjectSpatialSubYResolution(
unsigned int newYResolution);
1032 virtual void setVrfObjectSpatialSubZResolution(
unsigned int newZResolution);
1109 virtual bool checkLineOfSight(
const DtSimObject& viewingObject,
1111 bool* terrainDataAvailable = 0,
1112 const DtString& featureQueryName =
"default",
1113 DtVector* intersectionPoint = 0)
const;
1128 virtual bool checkLineOfSight(
const DtSimObject& viewingObject,
1130 bool* terrainDataAvailable = 0,
1131 const DtString& featureQueryName =
"default",
1132 DtVector* intersectionPoint = 0)
const;
1147 virtual bool checkLineOfSight(
const DtVector& databaseViewingPoint,
1148 const DtSimObject& targetObject,
bool* terrainDataAvailable = 0,
1149 const DtString& featureQueryName =
"default",
1150 DtVector* intersectionPoint = 0)
const;
1163 virtual bool checkLineOfSightWithoutObjects(
1164 const DtVector& databaseViewingPoint,
1165 const DtVector& databaseTargetPoint,
1166 bool* terrainDataAvailable = 0,
1167 const DtString& featureQueryName =
"default",
1168 DtVector* intersectionPoint = 0)
const;
1189 virtual bool checkLineOfFire(
const DtSimObject& viewingObject,
1191 const DtVector& databaseTargetPoint,
1192 bool* terrainDataAvailable = 0,
1193 double* normIntersectDistance = 0,
1196 int* ignoredForceType = 0)
const;
1199 virtual bool checkLineOfFire(
const DtSimObject& viewingObject,
1201 bool* terrainDataAvailable = 0,
1202 double* normIntersectDistance = 0,
1205 int* ignoredForceType = 0)
const;
1208 virtual bool checkLineOfFire(
const DtVector& databaseViewingPoint,
1209 const DtVector& databaseTargetPoint,
1210 bool* terrainDataAvailable = 0,
1211 double* normIntersectDistance = 0,
1214 int* ignoredForceType = 0)
const;
1226 virtual bool checkLineOfFireWithoutObjects(
1227 const DtVector& databaseViewingPoint,
1228 const DtVector& databaseTargetPoint,
1229 bool* terrainDataAvailable = 0,
1230 double* normIntersectDistance = 0,
1232 DtVector* intersectingPoint = 0)
const;
1234 virtual void expireDataLoadRequestsBeforeTime(
const double& time);
1239 virtual double thermoclinePermeability(
1249 return myLineOfSightTestsToPerform;
1256 const DtChord createWorldIntersectionChord(
const DtVector& databaseLocation)
const;
1275 virtual void removeLineOfSightTest(
const DtLosTestKey& testKey);
1290 virtual void addInitialLosChecks();
1298 virtual void setDefaultLineOfSightTestOrder(
1300 virtual void setLineOfSightTestOrder(
1307 virtual void performTest(
const DtLosTestKey& testToRun);
1324 static bool canBlockLineOfSight(
const DtSimObject*
object,
void* usr);
1345 virtual bool checkVrfObjectsForLOS(
1350 virtual bool checkTerrainForLOS(
1363 virtual bool intersectVrfObjects(
const DtSimObject*
const primaryVrfObject,
1364 const DtVector& databaseStartPoint,
1370 const std::list<DtUUID>& ignoreList = std::list<DtUUID>(),
1371 int* ignoredForceType = 0)
const;
1377 virtual bool intersectVrfObjects(
const DtSimObject*
const primaryVrfObject,
1382 const std::list<DtUUID>& ignoreList = std::list<DtUUID>(),
1383 int* ignoredForceType = 0)
const;
1388 virtual bool intersectsVrfObject(
const DtSimObject& vrfObjectToTest,
1390 double& distToIntersect,
DtVector* surfaceNormal = 0)
const;
1393 virtual bool embarkedOnSameLowFidelityObject(
const DtSimObject& primaryVrfObject,
1401 bool testInvariant()
const;
1427 virtual void performTerrainPreload();
1472 friend class IntersectVrfObjectFunctor;
1479 const DtVector& databaseTargetPoint,
1480 bool* terrainDataAvailable = 0,
1481 double* normIntersectDistance = 0,
1484 int* ignoredForceType = 0)
const;
1488 bool* terrainDataAvailable = 0,
1489 double* normIntersectDistance = 0,
1492 int* ignoredForceType = 0)
const;
virtual bool showInHelp() const
Definition: physicalWorld.h:1512
boost::shared_ptr< MAKVRinTerra::DtDynamicFeatureSet > myDynamicObjectFeatures
Definition: physicalWorld.h:1432
DtEnvironmentalStateManager * myEnvironmentalStateManager
Definition: physicalWorld.h:1455
NOTE: This entire class is deprecated, in favor of Dt3dChord.
Definition: chord.h:40
class DtLocalObjectManager:
Definition: localObjectManager.h:151
DtFilename myPhysicalWorldFile
Definition: physicalWorld.h:1459
DtVrfChordIntersectionRecord represents a list of DtChordIntersectRecords. This is useful for followi...
Definition: vrfChordIntersectRecordList.h:31
DtLineOfSightTestContainer myLineOfSightTestsToPerform
Definition: physicalWorld.h:1288
std::map< DtLosTestKey, DtVrfLineOfSightFunctorSP > DtKeyedLineOfSightTestContainer
Definition: physicalWorld.h:1279
DtSensorSignatureManager * mySensorSignatureManager
Definition: physicalWorld.h:1453
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:20
const DtLineOfSightTestContainer & lineOfSightTestsToPerform() const
Definition: physicalWorld.h:1247
DtVrfWorldMagneticModel * myWMM
Definition: physicalWorld.h:1442
The DtSimObjectReference is a shared pointer that can be used amongst many object for access to the u...
Definition: simObjectReference.h:26
DtSpatialVrfObjectManagerInterface * mySpatialVrfObjectManager
Definition: physicalWorld.h:1440
The DtSpatialVrfObjectManager is responsible for maintaining a spatial organization of all specified ...
Definition: spatialVrfObjectManager.h:31
DtKeyedLineOfSightTestContainer myMasterLineOfSightTestContainer
Definition: physicalWorld.h:1283
bool mySpatialMgrResolutionUserSpecified
Definition: physicalWorld.h:1435
Simple asynchronous callback queue.
Definition: vrfCallbackQueue.h:32
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:903
DtNoArgumentCallbackList myPostLoadParametersCallbacks
Definition: physicalWorld.h:1468
Definition: surface.h:179
DtLineOfSightTestContainer::iterator DtLosTestIter
Definition: physicalWorld.h:1285
boost::signals2::scoped_connection mySimObjectDeletedConnection
Definition: physicalWorld.h:1470
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:1261
std::list< DtVrfLineOfSightFunctorSP > DtLineOfSightTestContainer
Definition: physicalWorld.h:120
Definition: physicalWorld.h:1506
DtPhysicalWorldParams * myParameters
Parameters for this physical world.
Definition: physicalWorld.h:1451
Contains the DtVrfObjectPredicate class declaration.
Definition: vrfObjectPredicate.h:20
DtLineOfSightTestContainer::const_iterator DtLosTestConstIter
Definition: physicalWorld.h:1286
The DtPhysicalWorld is the primary interface to and manager of all of the "physical" aspects of the s...
Definition: physicalWorld.h:102
Definition: coordSystem.h:54
DtLocalObjectManager * myObjectManager
Definition: physicalWorld.h:1448
Central manager for calculating apparent signatures in all the sensor domains. Apparent signatures ar...
Definition: sensorSignatureManager.h:41
#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. There is only one environmental state for the whole s...
Definition: dynamicTerrainManager.h:45
DtExpireOlderThanCommand * myExpireOlderThanCommand
Definition: physicalWorld.h:1463
system includes
Definition: consoleCommandManager.h:28
DtTerrainInterface allows access to common terrain calls without having to know the terrain implement...
Definition: terrainInterface.h:99
boost::shared_ptr< DtVrfCallbackQueue > mySoilTypeLookupQueue
Definition: physicalWorld.h:1465
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:43
Dynamic feature set object.
Definition: dynamicFeatureSet.h:24
bool myUseVrfObjectSpatialManager
Definition: physicalWorld.h:1434
DtSimulationServices * mySimulationServices
Not owned, just used for reference.
Definition: physicalWorld.h:1447
DtTerrainInterface * myTerrainInterface
Definition: physicalWorld.h:1431
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:90
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:42
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:1501
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:79
DtDynamicTerrainManager * myDynamicTerrainManager
Definition: physicalWorld.h:1457
DtBoost::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
unsigned int myVrfObjectSpatialSubXResolution
Definition: physicalWorld.h:1436
DtNoArgumentCallbackList myPreLoadParametersCallbacks
Definition: physicalWorld.h:1467
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:59
DtManagedObjectListConstPtr mySpatiallyManagedVrfObjectList
Definition: physicalWorld.h:1444
DtMedium
Definition: surface.h:185
DtKeyedLineOfSightTestContainer::const_iterator DtMasterLosTestConstIter
Definition: physicalWorld.h:1281
voidpf uLong offset
Definition: ioapi.h:42
DtTime myLastPreloadTerrainTime
Definition: physicalWorld.h:1461
Contains the interface to the world magnetic model.
Definition: vrfWorldMagneticModel.h:21
#define VRF4API_METHOD
Include this header file to allow for the definition/usage of the ability to mark something as deprec...
Definition: vrf4XAPI.h:22
DtKeyedLineOfSightTestContainer::iterator DtMasterLosTestIter
Definition: physicalWorld.h:1280
virtual bool execute(const DtString ¶meters)=0
Execute the command.
unsigned int myVrfObjectSpatialSubZResolution
Definition: physicalWorld.h:1438
DtIntersectionType
Definition: intersectionRecord.h:41
A locally simulated VRF object. Holds all internal and external data for the object, and provides access to both the current frame and next frame state data for the object. All current frame data is read-only, and next-frame data can be written to. No thread safety guarantees are made on this object during the simulation frame and it should only be accessed by the thread that is simulating the object.
Definition: localObject.h:86
DtBoost::shared_ptr< DtVrfLineOfSightFunctor > DtVrfLineOfSightFunctorSP
Typedefs for shared pointer to the Functors.
Definition: vrfLineOfSightFunctor.h:35
unsigned int myVrfObjectSpatialSubYResolution
Definition: physicalWorld.h:1437