VR-Forces 4.6 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
physicalWorld.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2014 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
10 
11 #pragma once
12 
14 #include <geometry/point.h>
15 #include <vlutil/vlConfig.h>
16 #include <vlutil/vlFilename.h>
17 #include <matrix/vlVector.h>
18 #include <list>
19 #include <map>
20 #include <boost/unordered_set.hpp>
26 #include "features/areaFeature.h"
28 #include "geometry/surface.h"
29 
30 class DtSimManager;
31 
32 class DtFilename;
33 class DtGeodeticCoord;
34 class Coordinate_System;
35 class DtVrfObjectManager;
39 class DtExtent;
40 class DtChord;
41 class DtSurface;
42 
43 class DtPoint;
44 
46 
47 class DtVrfObject;
48 class DtDcm;
51 class DtSimMessage;
56 
58 class DtVrfCallbackQueue;
59 
88 {
89 public:
90 
92  DtPhysicalWorld(DtSimManager* simManager);
93 
95  virtual ~DtPhysicalWorld();
96 
97 private:
99  DtPhysicalWorld(const DtPhysicalWorld& orig);
100 
102  DtPhysicalWorld& operator=(const DtPhysicalWorld& orig);
103 
104 public:
105  typedef std::list<DtVrfLineOfSightFunctorSP> DtLineOfSightTestContainer;
106 
115  virtual bool initialize();
116 
125  virtual bool reinitialize();
126 
128  virtual bool reset();
129 
135  virtual bool loadParametersFromFile(const DtFilename& filename);
136 
142  virtual bool loadPhysicalWorldFile(const DtFilename& filename);
143 
145  virtual void processParameters();
146 
149  const DtFilename& physicalWorldFile() const;
150 
152  virtual bool parametersLoaded() const;
153 
156 
157  virtual void addPreLoadParametersCallback(
159  virtual void removePreLoadParametersCallback(
162 
165 
166  virtual void addPostLoadParametersCallback(
168  virtual void removePostLoadParametersCallback(
171 
191  virtual bool isValidState() const;
192 
198  virtual void tick();
199 
200 
204 
210 
211  virtual Coordinate_System* coordinateSystem();
212  virtual const Coordinate_System* coordinateSystem() const;
213 
215  virtual void geocentricToDatabase(const DtVector& in, DtVector& out) const;
216 
218  virtual void geocentricToDatabase(const DtDcm& in, DtDcm& out) const;
219 
221  virtual void geocentricToDatabase(const DtVector& vIn, const DtDcm& dIn,
222  DtVector& vOut, DtDcm& dOut) const;
223 
225  virtual void geocentricToDatabase(const DtExtent& in, DtExtent& out) const;
226 
228  virtual void databaseToGeocentric(const DtVector& in, DtVector& out) const;
229 
231  virtual void databaseToGeocentric(const DtDcm& in, DtDcm& out) const;
232 
234  virtual void databaseToGeocentric(const DtVector& vIn, const DtDcm& dIn,
235  DtVector& vOut, DtDcm& dOut) const;
236 
238  virtual void databaseToGeocentric(const DtExtent& in, DtExtent& out) const;
239 
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;
247 
249  virtual void geodeticToDatabase(const DtExtent& extent, DtExtent& destExtent) const;
251  virtual void geodeticToDatabase(const DtGeodeticCoord& geodeticPosition,
252  DtVector& databasePosition) const;
255  virtual void geodeticToDatabase(const DtVector& geodeticPosition,
256  DtVector& databasePosition) const;
257 
260  virtual void topoToDatabase(const DtVector& databasePosition, DtDcm& topoToDatabase) const;
263  virtual void databaseToTopo(const DtVector& databasePosition, DtDcm& databaseToTopo) const;
264 
272  virtual DtVector down(const DtVector& databasePosition) const;
273 
275 
276 
277 
278 
279 
280 
281 
282 
283 
284 
285 
286 
287 
288 
289 
290 
291 
292 
293 
294 
295 
296 
297 
298 
299 
300 
301 
302 
303  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;
310 
312 
313 
314 
315 
316 
317 
318 
319 
320 
321 
322 
323 
324 
325 
326 
327 
328 
329 
330 
331 
332 
333  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;
340 
342 
343 
344 
345 
346 
347 
348 
349 
350 
351 
352 
353 
354 
355 
356 
357 
358 
359 
360 
361 
362 
363 
364 
365 
366 
367 
368 
369 
370 
371 
372 
373 
374 
375 
376 
377 
378  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,
388  double& heightAtLocation, DtVrfChordIntersectionRecord& intersectionRec,
391  bool* dataAvailable = 0, bool overrideBlockingAssert = false) const;
393 
397  virtual bool terrainHeightAndSurfaceBelow(const DtVector& databaseLocation,
398  double& heightAtLocation, DtSurface& surfaceAtLocation,
399  bool* dataAvailable = 0,
400  bool overrideBlockingAssert = false) const;
401 
403 
404 
405 
406 
407 
408 
409 
410 
411 
412 
413 
414 
415 
416 
417 
418 
419 
420 
421 
422 
423 
424 
425 
426 
427 
428 
429 
430 
431 
432 
433 
434 
435 
436 
437 
438 
439 
440 
441 
442 
443 
444 
445 
446 
447 
448 
449 
450 
451 
452 
453 
454 
455 
456 
457 
458 
459 
460 
461 
462  virtual bool terrainHeightUnderWater(const DtVector& databaseLocation,
463  double& groundHeight, DtSurface& groundSurface, DtVector& groundNormal,
464  double& waterHeight, DtSurface::DtMedium & topSurfaceMedium,
465  bool* dataAvailable = 0, bool overrideBlockingAssert = false);
467 
469 
470 
471 
472 
473 
474 
475 
476 
477 
478 
479 
480 
481 
482 
483 
484 
485 
486 
487 
488 
489 
490 
491 
492 
493 
494 
495 
496 
497 
498 
499  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;
507 
508  virtual DtSurface terrainSurface(const DtPoint& databaseLocation,
509  bool* dataAvailable = 0, bool overrideBlockingAssert = false) const;
510  virtual DtSurface terrainSurface(double lat, double lon,
511  bool* dataAvailable = 0, bool overrideBlockingAssert = false) const;
512  virtual DtSurface terrainSurface(const DtVector& databaseLocation,
513  bool* dataAvailable = 0, bool overrideBlockingAssert = false) const;
515 
546  virtual bool closestTerrainLocation(const DtPoint& databaseLocation,
547  DtPoint& intersectionPoint, bool* dataAvailable = 0,
548  bool overrideBlockingAssert = false) const;
549 
552  virtual bool closestTerrainLocation(double lat, double lon,
553  DtPoint& intersectionPoint, bool* dataAvailable = 0,
554  bool overrideBlockingAssert = false) const;
555 
557  virtual bool closestTerrainLocation(const DtVector& databaseLocation,
558  DtPoint& intersectionPoint, bool* dataAvailable = 0,
559  bool overrideBlockingAssert = false) const;
560 
563  virtual bool closestTerrainLocation(const DtPoint& databaseLocation,
566  bool* dataAvailable = 0, bool overrideBlockingAssert = false) const;
567 
569  virtual bool closestTerrainLocation(const DtPoint& databaseLocation,
570  DtVrfChordIntersectionRecord& record, const DtString& vectorFeatureLookup,
572  bool* dataAvailable = 0, bool overrideBlockingAssert = false) const;
573 
576  virtual bool closestTerrainLocation(double lat, double lon,
579  bool* dataAvailable = 0, bool overrideBlockingAssert = false) const;
580 
582  virtual bool closestTerrainLocation(const DtVector& databaseLocation,
585  bool* dataAvailable = 0, bool overrideBlockingAssert = false) const;
586 
615  virtual bool closestTerrainLocation(const DtVector& curPosition,
616  DtVector& intersection, bool ignoreWater, bool* dataAvailable = 0,
617  bool overrideBlockingAssert = false) const;
618 
649  virtual bool intersect(const DtChord& chord, DtPoint& intersectionPoint,
650  double& intersectionTime, bool* dataAvailable = 0,
651  bool overrideBlockingAssert = false) const;
652 
681  virtual bool intersect(const DtChord& chord,
685  bool* dataAvailable = 0, bool overrideBlockingAssert = false) const;
686 
712  virtual bool allIntersectsAlongChord(const DtChord& chord,
715  DtIntersectionRecord::INT_ALL_DATA, bool* dataAvailable = 0,
716  bool overrideBlockingAssert = false) const;
717 
719 
720 
721 
722 
723 
724 
725 
726 
727 
728 
729  typedef boost::unordered_set<DtVrfObject*> DtVrfObjectUniqueContainer;
730  typedef boost::unordered_set<const DtVrfObject*> DtVrfConstObjectUniqueContainer;
731 
732  bool getVrfObjects(DtExtent& extent, DtVrfObjectUniqueContainer& objects);
733  bool getVrfObjects(DtExtent& extent, DtVrfConstObjectUniqueContainer& objects) const;
734 
735 
736  bool getVrfObjects(DtVrfObjectPredicate& predicate, DtExtent& extent,
737  DtVrfObjectUniqueContainer& objects);
738 
739  bool getVrfObjects(DtVrfObjectPredicate& predicate, DtExtent& extent,
740  DtVrfConstObjectUniqueContainer& objects) const;
741 
742  bool getVrfObjects(DtChord& chord, std::list<DtVrfObject*>& objects);
743  bool getVrfObjects(DtChord& chord, std::list<const DtVrfObject*>& objects) const;
744 
745  bool getVrfObjects(DtVrfObjectPredicate& predicate, DtChord& chord,
746  std::list<DtVrfObject*>& objects);
747  bool getVrfObjects(DtVrfObjectPredicate& predicate, DtChord& chord,
748  std::list<const DtVrfObject*>& objects) const;
750 
752 
753 
754 
755 
756 
757 
758 
759 
760 
761 
762  void visitVrfObjects(const DtExtent& extent, class DtSpatialSelectionFunctor& callback) const;
763  void visitVrfObjects(const DtChord& chord, class DtSpatialSelectionFunctor& callback) const;
765 
783  virtual void groundClamp(DtPoint& databaseCoord, float const offset = 0,
784  bool* dataAvailable = 0, bool overrideBlockingAssert = false) const;
785 
803  virtual void groundClamp(DtVector& databaseCoord, float const offset = 0,
804  bool* dataAvailable = 0, bool overrideBlockingAssert = false) const;
805 
810  virtual void getVrfObjectsAlongChord(const DtVector& databaseStart,
811  const DtVector& databaseEnd, std::list<const DtVrfObject*>& orderedList) const;
812 
820  virtual DtManagedObjectListConstPtr getSpatiallyManagedVrfObjectList();
821 
827  virtual bool initializeSpatialVrfObjectOrganization();
828 
840  virtual void calcSpatialMgrResolution(const DtManagedObjectListConstPtr& vrfObjList);
841 
848  virtual DtFilterFunctionPredicate getSpatialOrganizationPredicate();
849 
852  static bool spatialOrganizationObjectFilterFcn(const DtVrfObject* obj, void* usr);
853 
864  virtual bool processSpatialOrganizationObjectFilterFcn(const DtVrfObject* obj);
865 
867  static void querySpatialSubdivisionConfigurationCallback(DtSimMessage* msg, void* usr);
868  static void setSpatialSubdivisionConfigurationCallback(DtSimMessage* msg, void* usr);
869 
871  static void requestSensorDomainsCallback(DtSimMessage* msg, void* usr);
872  virtual void sendSensorDomains();
873 
876  virtual void processQuerySpatialSubdivisionConfiguration(DtSimMessage* msg);
877  virtual void processSetSpatialSubdivisionConfiguration(DtSimMessage* msg);
878 
881  virtual bool useVrfObjectSpatialSub() const;
882  virtual void setUseVrfObjectSpatialSub(bool yesOrNo);
883 
884 
887  virtual bool isSpatialMgrResolutionUserSpecified() const;
888  virtual void setSpatialMgrResolutionUserSpecified(bool yesOrNo);
889 
892  virtual unsigned int vrfObjectSpatialSubXResolution() const;
893  virtual unsigned int vrfObjectSpatialSubYResolution() const;
894  virtual unsigned int vrfObjectSpatialSubZResolution() const;
896 
901  virtual void setVrfObjectSpatialSubXResolution(unsigned int newXResolution);
902  virtual void setVrfObjectSpatialSubYResolution(unsigned int newYResolution);
903  virtual void setVrfObjectSpatialSubZResolution(unsigned int newZResolution);
905 
907 
909  virtual DtTerrainInterface* terrainInterface();
911  virtual const DtTerrainInterface* terrainInterface() const;
912 
915  virtual void setTerrainInterface(DtTerrainInterface* newTerrainDatabase);
916 
917  virtual DtSimManager* simManager();
918  virtual const DtSimManager* simManager() const;
919  virtual void setSimManager(DtSimManager* newSimManager);
920 
921  virtual DtVrfObjectManager* objectManager();
922  virtual const DtVrfObjectManager* objectManager() const;
923  virtual void setVrfObjectManager(DtVrfObjectManager* newObjectMgr);
924 
925 
926  virtual DtEnvironmentalStateManager * environmentalStateManager();
927  virtual const DtEnvironmentalStateManager * environmentalStateManager() const;
928  virtual void setEnvironmentalStateManager(DtEnvironmentalStateManager * manager);
929 
930 
932  virtual DtDynamicTerrainManager * dynamicTerrainManager();
933  virtual const DtDynamicTerrainManager * dynamicTerrainManager() const;
934  virtual void setDynamicTerrainManager(DtDynamicTerrainManager* manager);
935 
938  virtual MAKVRinTerra::DtDynamicFeatureSet* dynamicObjectFeatures() const;
939 
941 
942  virtual DtPhysicalWorldParams* parameters();
943  virtual const DtPhysicalWorldParams* parameters() const;
944 
945 
949 
950  virtual DtSensorSignatureManager* sensorSignatureManager();
951  virtual const DtSensorSignatureManager* sensorSignatureManager() const;
952 
953 
974  virtual bool checkLineOfSight(const DtVrfObject& viewingObject,
975  const DtVector& databaseViewingPoint, const DtVrfObject& targetObject,
976  bool* terrainDataAvailable = 0,
977  const DtString& featureQueryName = "default",
978  DtVector* intersectionPoint = 0) const;
979 
993  virtual bool checkLineOfSight(const DtVrfObject& viewingObject,
994  const DtVector& databaseViewingPoint, const DtVector& databaseTargetPoint,
995  bool* terrainDataAvailable = 0,
996  const DtString& featureQueryName = "default",
997  DtVector* intersectionPoint = 0) const;
998 
1012  virtual bool checkLineOfSight(const DtVector& databaseViewingPoint,
1013  const DtVrfObject& targetObject, bool* terrainDataAvailable = 0,
1014  const DtString& featureQueryName = "default",
1015  DtVector* intersectionPoint = 0) const;
1016 
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);
1033 
1034 
1051  virtual bool checkLineOfFire(const DtVrfObject& viewingObject,
1052  const DtVector& databaseViewingPoint, const DtVrfObject& targetObject,
1053  const DtVector& databaseTargetPoint,
1054  bool* terrainDataAvailable = 0,
1055  double* normIntersectDistance = 0,
1056  DtVrfObject** intersectObject = 0,
1057  DtVector* intersectingPoint = 0);
1058 
1060  virtual bool checkLineOfFire(const DtVrfObject& viewingObject,
1061  const DtVector& databaseViewingPoint, const DtVector& databaseTargetPoint,
1062  bool* terrainDataAvailable = 0,
1063  double* normIntersectDistance = 0,
1064  DtVrfObject** intersectionObject = 0,
1065  DtVector* intersectingPoint = 0);
1066 
1068  virtual bool checkLineOfFire(const DtVector& databaseViewingPoint,
1069  const DtVector& databaseTargetPoint,
1070  bool* terrainDataAvailable = 0,
1071  double* normIntersectDistance = 0,
1072  DtVrfObject** intersectionObject = 0,
1073  DtVector* intersectingPoint = 0);
1074 
1087  virtual bool checkLineOfFireWithoutObjects(
1088  const DtVector& databaseViewingPoint,
1089  const DtVector& databaseTargetPoint,
1090  bool* terrainDataAvailable = 0,
1091  double* normIntersectDistance = 0,
1092  DtVrfObject** intersectionObject = 0,
1093  DtVector* intersectingPoint = 0);
1094 
1100  static void objectAboutToBeRemovedCb(DtVrfObject * vrfObject, void * usr);
1101 
1102  virtual void expireDataLoadRequestsBeforeTime(const double& time);
1103 
1107  virtual double thermoclinePermeability(
1108  const DtPoint& startPoint, const DtPoint& endPoint) const;
1109 
1112  virtual bool checkLineOfSight(const DtLineOfSightTestContainer& losTests,
1113  DtVrfLineOfSightCheckParams& losCheckParams) const;
1114 
1115  const DtLineOfSightTestContainer& lineOfSightTestsToPerform() const
1116  {
1117  return myLineOfSightTestsToPerform;
1118  }
1119 
1124  const DtChord createWorldIntersectionChord(const DtVector& databaseLocation) const;
1125 
1126 protected:
1127 
1128 
1133 
1134  typedef std::map<DtLosTestKey, DtVrfLineOfSightFunctorSP> DtKeyedLineOfSightTestContainer;
1135  typedef DtKeyedLineOfSightTestContainer::iterator DtMasterLosTestIter;
1136  typedef DtKeyedLineOfSightTestContainer::const_iterator DtMasterLosTestConstIter;
1137 
1139 
1140  typedef DtLineOfSightTestContainer::iterator DtLosTestIter;
1141  typedef DtLineOfSightTestContainer::const_iterator DtLosTestConstIter;
1142 
1144 
1145  virtual void addInitialLosChecks();
1146 
1152 
1153  virtual void setDefaultLineOfSightTestOrder(
1154  const DtRwNLengthStringVector& lineOfSightTestsAndOrder);
1155  virtual void setLineOfSightTestOrder(
1156  const DtRwNLengthStringVector& lineOfSightTestsAndOrder);
1157 
1158 
1164  virtual void addLineOfSightTest(const DtLosTestKey&, DtVrfLineOfSightFunctorSP losTest);
1165 
1168  virtual void removeLineOfSightTest(const DtLosTestKey& testKey);
1169 
1174  virtual void performTest(const DtLosTestKey& testToRun);
1175 
1179  virtual void doNotPerformTest(const DtLosTestKey& testToRun);
1180 
1184  virtual void doNotPerformTest(DtVrfLineOfSightFunctorSP losTest);
1185 
1186 
1191  static bool canBlockLineOfSight(const DtVrfObject* object, void* usr);
1192 
1197  virtual DtVector localLineOfSightTestLocation(const DtVrfObject& object) const;
1198 
1209 
1212  virtual bool checkVrfObjectsForLOS(
1213  const DtVrfLineOfSightCheckParams& losCheckParams) const;
1214 
1217  virtual bool checkFeaturesForLOS(
1218  const DtVrfLineOfSightCheckParams& losCheckParams) const;
1219 
1222  virtual bool checkTerrainForLOS(
1223  const DtVrfLineOfSightCheckParams& losCheckParams) const;
1225 
1226 public:
1235  virtual bool intersectVrfObjects(const DtVrfObject* const primaryVrfObject,
1236  const DtVector& databaseStartPoint,
1237  const DtVrfObject* const secondaryVrfObject,
1238  const DtVector& databaseEndPoint,
1239  double& interxTime,
1240  DtVrfObject** intersectedObject = 0,
1241  DtVector* intersectNormal = 0,
1242  const std::list<DtUUID>& ignoreList = std::list<DtUUID>()) const;
1243 
1248  virtual bool intersectVrfObjects(const DtVrfObject* const primaryVrfObject,
1249  const DtVector& databaseStartPoint, const DtVector& databaseEndPoint,
1250  double& interxTime,
1251  DtVrfObject** intersectedObject = 0,
1252  DtVector* intersectNormal = 0,
1253  const std::list<DtUUID>& ignoreList = std::list<DtUUID>()) const;
1254 
1258  virtual bool intersectsVrfObject(const DtVrfObject& vrfObjectToTest,
1259  const DtVector& databaseStartPoint, const DtVector& databaseEndPoint,
1260  double& distToIntersect, DtVector* surfaceNormal = 0) const;
1261 
1263  virtual bool embarkedOnSameLowFidelityObject(const DtVrfObject& primaryVrfObject,
1264  const DtVrfObject& secondaryVrfObject) const;
1265 
1266 protected:
1267 
1268  bool testInvariant() const;
1269 
1272  virtual DtSpatialVrfObjectManagerInterface* spatialVrfObjectManager();
1273  virtual const DtSpatialVrfObjectManagerInterface* spatialVrfObjectManager() const;
1274  virtual void setSpatialVrfObjectManager(DtSpatialVrfObjectManagerInterface* newSpatialVrfObjectMgr);
1275 
1279  virtual DtPhysicalWorldParams* createParameters();
1280 
1283  virtual DtSensorSignatureManager* createSensorSignatureManager();
1284 
1290  virtual void processObjectAboutToBeRemoved(DtVrfObject * vrfObject);
1291 
1294  virtual void performTerrainPreload();
1295 
1296 protected:
1297 
1299  boost::shared_ptr<MAKVRinTerra::DtDynamicFeatureSet> myDynamicObjectFeatures;
1300 
1306 
1308 
1310 
1315 
1318 
1320 
1322 
1324 
1326 
1328 
1330 
1331  boost::shared_ptr<DtVrfCallbackQueue> mySoilTypeLookupQueue;
1332 
1335 
1336  friend class IntersectVrfObjectFunctor;
1337 };
1338 
1339 inline const DtFilename& DtPhysicalWorld::physicalWorldFile() const
1340 {
1341  return myPhysicalWorldFile;
1342 }
1343 
1345 {
1346 public:
1347  DtExpireOlderThanCommand(DtPhysicalWorld* physicalWorld);
1348  virtual bool execute(const DtString& parameters);
1349  virtual DtString help(const DtString& parameters);
1350  virtual bool showInHelp() const { return true; };
1351 protected:
1352  DtPhysicalWorld* myPhysicalWorld;
1353 };

Document ID: Generated on Thu Apr 12 03:15:37 EDT 2018 from SVN revision 187986
Copyright © 2005-2018 VT MÄK. All Rights Reserved (www.mak.com)