VR-Forces 4.10 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
vrfObject.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2020 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
6 #pragma once
7 
11 
19 #include "geometry/extent.h"
21 
23 #include <readerWriter/rwString.h>
25 #include "vrfutil/rwUUID.h"
27 #include <readerWriter/rwBoolean.h>
29 #include "readerWriter/rwVector.h"
31 #include "vl/globalObjectDesignator.h"
32 #include <vlpi/entityIdentifier.h>
33 
35 #include <vl/hostStructs.h>
36 #include <vlpi/appearance.h>
37 #include <vlutil/vlList.h>
38 #include <matrix/geodeticCoord.h>
39 
40 #include <boost/smart_ptr/shared_ptr.hpp>
41 #include <tbb/spin_mutex.h>
42 #include <tbb/spin_rw_mutex.h>
43 
49 class DtStateRepository;
52 class DtVrfObjectMessage;
53 class DtVrfObjectManager;
54 class DtSimManager;
56 class DtSimTaskManager;
57 class DtSimRadio;
63 class DtReflectedEntity;
66 class DtVrfObject;
69 class Coordinate_System;
70 class DtAttachedTerrain;
71 class DtReflectedObject;
72 class DtPhysicalWorld;
73 class DtObjectConsole;
74 class DtSetDataManager;
77 class DtSettingsObject;
84 class DtCriticalSection;
87 
90 typedef void (*DtVrfObjectCallbackFunction)(const DtVrfObject* obj, void* userData);
91 
94 {
97 };
98 
100 
102 {
104  {
114  };
115 
118 };
119 
121 
122 class DtVrfObject;
123 struct DtImportScenarioData;
124 
128 {
129 public:
130 
132  : mySimObject(simObject)
133  {
134 
135  }
136 
137  virtual const DtVrfObject* object() const { return mySimObject; }
138  virtual bool objectValid() { return mySimObject != NULL; }
139  virtual void invalidateObject() { mySimObject = NULL; }
140 
141 protected:
142 
144 };
145 
146 typedef boost::shared_ptr<DtVrfObjectDeletionTracker> DtVrfObjectDeletionHandle;
147 
153 {
154 public:
156  DtRwVrfObjectName(const DtString& name, DtReaderWriterRegistry* const parentRegistry);
157  DtRwVrfObjectName(const DtSymbolString& name, DtReaderWriterRegistry* const parentRegistry);
158 
160 
161  virtual void setVrfObject(DtVrfObject*);
162 
163  virtual DtlObjPtr getData(DtlObjPtr args, const SearchPaths& searchPaths,
164  const DtVariableBindingsList& variableBindings);
165 
166 protected:
168 };
169 
173 {
174 public:
175  DtVrfObjectUUID(const DtString& name, DtReaderWriterRegistry* const parentRegistry);
176  DtVrfObjectUUID(const DtSymbolString& name, DtReaderWriterRegistry* const parentRegistry);
177 
179 
180  virtual void setVrfObject(DtVrfObject*);
181 
183  virtual void setRecreateUUIDOnLoad(bool);
184 
186  virtual void setResolved(bool);
187 
188  virtual DtlObjPtr getData(DtlObjPtr args, const SearchPaths& searchPaths,
189  const DtVariableBindingsList& variableBindings);
190 
191 protected:
193  virtual void noRwValueSpecified();
194 
195 protected:
199 };
200 
216 #ifdef DtObjectDebugger_Enable
217  , public DtObjectDebugger<DtVrfObject>
218 #endif
219 {
220 public:
222  {
223  MarkingText = 1,
228  SubordinateOfForceLevel
229  };
230 
234  typedef std::pair<DtVrfObjectCallbackFunction, void*> DtVrfObjectCallbackDataPair;
235  typedef std::pair<const DtVrfObject*, DtVrfObjectCallbackDataPair> DtVrfObjectCallbackDataPair2;
237 
238  typedef std::list<DtLuaScriptInterfaceExtension::CreatorUserPair> ScriptInterfaceExtensions;
239 
240 protected:
241 
243  DtVrfObject();
244 
245 public:
246 
247  DtVrfObject(
248  const DtObjectType & objectType,
249  DtVrfObjectManager* vrfObjectManager,
250  bool createLocalObject = true,
251  bool publishLocalObject = true,
252  const DtEntityIdentifier& objectIdentifier = DtEntityIdentifier::nullId(),
253  const DtGlobalObjectDesignator* globalId = 0,
254  DtReflectedObject* reflectedObject = 0,
255  const DtString & objectName = DtString::nullString(),
256  const DtString & objectLabel = DtString::nullString(),
257  DtForceType forceType = DtForceOther,
258  const DtList* vertices = 0,
259  const DtTaitBryan* orientation = 0,
260  bool projection = false,
261  bool closedFigure = false,
262  const DtAppearance& appearance = DtAppearance::nullAppearance(),
263  const DtString & readerWriterName = "vrf-object",
264  DtReaderWriterRegistry* parentRegistry = 0,
265  const DtUUID& uuid = DtUUID::nullUUID(),
266  bool connectToRadioNetowrk = true);
267 
269  virtual ~DtVrfObject();
270 
273  static void enableSingleObjectMode();
275  static bool singleObjectModeActive();
276 
281  virtual bool create(bool createNetworkInterface = true);
282 
285  virtual bool finalizeObjectCreation();
286 
288  virtual void finalizeObjectRead();
289 
292  virtual void setSimulationCapable(bool);
293  virtual bool simulationCapable() const;
294 
298  virtual void prepareForReinitialization();
299 
301  virtual void canBeHandedOff();
302 
305  virtual void createCommunicationsInterface();
306 
309  virtual void createCommunicationsInterface(const DtRadioDescriptorList& descList);
310 
313  virtual void createSetDataManager();
314 
317  virtual int vrfSessionId() const;
318 
321  virtual bool init();
322 
324 
328  virtual void tick();
329 
330  virtual void startTick();
331  virtual void tickComponents();
332  virtual void endTick();
333 
335  virtual void tickPublisherOnly();
336 
338  virtual bool hasGuiKeyword(const DtString&) const;
339 
344  virtual bool createRepository(DtVrfObjectParameters* parameterEntry);
345  virtual bool createTaskManager();
346  virtual bool createScriptInterfaceHandler();
347  virtual bool createComponentManager();
350  virtual bool createVrfObjectPlanManager();
351  virtual bool createRadio();
352  virtual bool createNavigationInterfaceManager();
353 
355  virtual bool initializeComponentManager();
356 
359  virtual void setNavigationEnabled(bool);
360  virtual bool navigationEnabled() const;
361 
365  virtual void addToPotentialLuaScripts(int);
366  virtual int potentialLuaScripts() const;
367 
369  virtual int scenarioRunId() const;
370 
372  virtual double timeOfDay() const;
373 
375  virtual double dateAndTimeOfDay() const;
376 
378  virtual DtSharedVrfObjectReference sharedReference();
379  virtual DtSharedVrfObjectReference sharedReference() const;
380 
383  virtual double illumination() const;
384 
387  virtual double expectedIllumination(double dateAndTimeOfDay) const;
388 
390  virtual MAKVRinTerra::DtFeatureGeometry featureGeometry() const;
391 
393  virtual void updateIllumination() const;
394 
396  virtual void setRangeRingsParametersPublisherTickRange(double d);
397 
399  virtual void createAndInitializeRangeRingsParameterPublisher();
400 
403  virtual bool needsIlluminationUpdate() const;
404 
408  virtual bool isOnTopOf(const DtVrfObject*, bool checkSupportPoints = false) const;
409  virtual bool isOnTopOf(const DtVrfObject*, double d, bool checkSupportPoints = false) const;
410 
412  virtual bool isSimulationObject() const;
413  virtual bool isEntity() const;
414  virtual bool isUnit() const;
415 
417  virtual bool intersect(const DtChord&, DtVrfChordIntersectionRecord* record = 0) const;
418 
420  virtual bool checkAndDisembarkIfEmbarked(const DtVector& localPosition);
421 
424  virtual bool checkIfMoveOntoEmbarked(const DtVector& localPosition, DtVrfObject*& hit, const std::list<DtUUID>& additionalIgnore = std::list<DtUUID>());
425 
427  virtual bool hasHighFidelityObjectGeometryModel() const;
428 
430  virtual bool isEmbeddedInTerrain() const;
431 
433  virtual bool isGlobalPlan() const;
434 
436  virtual const DtSimManager* simManager() const;
437  virtual DtSimManager* simManager();
438 
440  virtual DtSimTaskManager* taskManager() const;
441  virtual DtScriptInterfaceHandler* scriptInterfaceHandler() const;
442  virtual DtSimComponentManager* componentManager();
443  virtual const DtSimComponentManager* componentManager() const;
444  virtual DtVrfObjectPlanManager* vrfObjectPlanManager() const;
445  virtual DtSimRadio* radio() const;
446 
447  virtual DtVrfObjectStateRepository* vrfState() const;
448 
459  virtual DtExtent extent() const;
460 
465  virtual DtExtent roughExtent() const;
466 
468  const DtVrfObjectParameters* parameterEntry() const;
469 
472  const DtMovingObjectParameters* movingObjectParameterEntry() const;
473 
478  virtual void expandExtent(DtExtent& extent) const;
479 
483  virtual void sendVrfObjectCreated(unsigned long requestId = 0, bool requestCreated = true);
484 
486  virtual void setupFromMessageContent(DtIfModifyVrfObject* ifModVrfObject);
487 
490  virtual void setIsVrfSimulatedObject(bool b);
491 
492  virtual bool isVrfSimulatedObject() const;
493  virtual bool isVrfSimulated() const
494  {
495  return isVrfSimulatedObject();
496  }
497 
505  virtual bool isSimulatingComponents() const;
506 
508  virtual void save(std::string&);
509 
511  virtual void putSelf(std::string& fp, int indentLevel = 0, bool writeUnspecified = true,
512  const DtFilename& path = DtReaderWriter::appPath());
513 
515  virtual void getSelf(DtlObjPtr args, const DtReaderWriter::SearchPaths& searchPaths,
516  const DtVariableBindingsList& variableBindings);
517 
518  virtual bool validNameLength(const DtString& name) const;
519 
527  virtual bool setMarkingText(const DtString & name, bool rename = true);
528 
542  virtual void addVrfObjectChangedCallback(
543  DtVrfObjectCallbackFunction function, void* userData) const;
544  virtual void removeVrfObjectChangedCallback(
545  DtVrfObjectCallbackFunction function, void* userData) const;
546 
548  virtual void addNavigationInterfaceChangedCallback(
549  DtVrfObjectCallbackFunction function, void* userData) const;
550  virtual void removeNavigationInterfaceChangedCallback(
551  DtVrfObjectCallbackFunction function, void* userData) const;
552 
559  virtual void addVerticesChangedCallback(
560  DtVrfObjectCallbackFunction function, void* userData) const;
561  virtual void removeVerticesChangedCallback(
562  DtVrfObjectCallbackFunction function, void* userData) const;
564 
568  virtual void addObjectDataChangedCallback(DtVrfObjectDataChangeCallbackList::DtCallbackFunctionType, void*) const;
569  virtual void removeObjectDataChangedCallback(DtVrfObjectDataChangeCallbackList::DtCallbackFunctionType, void*) const;
570  virtual void invokeObjectDataChangedCallbacks(ChangeFlag);
572 
578  virtual void addRelativeVerticesChangedCallback(
579  DtVrfObjectCallbackFunction function, void* userData) const;
580  virtual void removeRelativeVerticesChangedCallback(
581  DtVrfObjectCallbackFunction function, void* userData) const;
583 
586  virtual void addVrfObjectPredicateCallback(
588  const DtVrfObjectPredicate& predicate, DtTime evaluationPeriod = 0,
589  void* userData = 0) const;
590  virtual void removeVrfObjectPredicateCallback(
592  const DtVrfObjectPredicate& predicate, DtTime evaluationPeriod = 0,
593  void* userData = 0) const;
594 
597  virtual int predicateCallbackCount() const;
598 
603  virtual void invokeVrfObjectPredicateCallbacks();
604 
607  virtual void setCoordinateSystem(const Coordinate_System* coordinateSystem);
608 
609  virtual const DtVrfObjectManager* simObjectManager() const;
610  virtual DtVrfObjectManager* simObjectManager();
611  virtual void setSimObjectManager(DtVrfObjectManager* simObjectManager);
612 
613  virtual bool createNetInterface();
614 
619  virtual void setGlobalId(const DtGlobalObjectDesignator & id);
620  virtual const DtGlobalObjectDesignator & globalId() const;
621 
624  virtual const DtString & globalIdString() const;
625 
630  virtual bool baseSetMarkingText(const DtString & name);
631  virtual const DtString& markingText() const;
632 
637  virtual const DtString& objectName() const;
638 
641  virtual void addNameAlias(const DtString& name);
642 
645  virtual void unregisterAliases();
646 
648  virtual void setUUID(const DtUUID&);
649 
651  virtual const DtUUID& uuid() const;
652 
654  virtual const DtString & objectLabel() const;
655  virtual void setObjectLabel(const DtString & objectLabel);
656 
658  virtual DtForceType forceType() const;
659  virtual void setForceType(DtForceType f);
660 
662  virtual void setIsSubordinateOfForceLevel(bool);
663  virtual bool isSubordinateOfForceLevel() const;
664 
666  virtual const DtString & overlayParent() const;
667  virtual void setOverlayParent(const DtString & overlayParent);
668 
670  virtual DtStateRepository* netState();
671  virtual const DtStateRepository* netState() const;
672 
674  virtual DtSimObjectNetInterface* netInterface();
675  virtual const DtSimObjectNetInterface* netInterface() const;
676  virtual void setNetInterface(DtSimObjectNetInterface* netInterface);
677 
679  virtual void setObjectIdentifier(const DtEntityIdentifier & objectId);
680  virtual const DtEntityIdentifier & objectIdentifier() const;
681 
684  virtual const DtString & objectIdentifierString() const;
685 
688  virtual bool isLocal() const;
689 
693 
694  virtual void setPublishObject(bool publishObject);
695  virtual bool publishObject() const;
697 
699  virtual DtString type() const;
700 
701  virtual DtString objectClassType() const;
702  virtual void setObjectClassType(const DtString & objectClassType);
703 
706  virtual void clearVerticesChangedCallbacks();
707 
710  virtual void clearRelativeVerticesChangedCallbacks();
711 
714  virtual void clearPredicateCallbacks();
715 
716  static void addSimObjectCreatorFcn(const DtString & type,
718 
723  static DtSimObjectFactory* factory();
724  static void setFactory(DtSimObjectFactory* factory);
725 
726  virtual DtSimObjectStateRepository* simState();
727  virtual const DtSimObjectStateRepository* simState() const;
728  virtual void setSimState(DtVrfObjectStateRepository* simState);
729 
730  void setEntityType(const DtEntityType & entityType);
731  const DtEntityType & entityType() const;
732 
733  void setDestroyed(bool destroyed);
734  bool isDestroyed() const;
735 
747  virtual void place(const DtVector& location, bool* dataAvailable = 0,
748  bool requireAllData = false);
749 
761  virtual void place(const DtReal heading, bool* dataAvailable = 0,
762  bool requireAllData = false);
763 
776  virtual void place(const DtVector& location, const DtReal heading,
777  bool* dataAvailable = 0, bool requireAllData = false);
778 
779  const DtString & echelonIdString() const;
780 
781  virtual DtSharedVrfObjectReference leadEntity() const;
782 
783  virtual DtSharedVrfObjectReference firstSubordinate() const;
784 
785  virtual DtSharedVrfObjectReference lastSubordinate() const;
786 
788  virtual DtSharedVrfObjectReference firstHealthySubordinate() const;
789 
790  virtual void echelonIdChanged() {}
791 
792  virtual const DtObjectId & objectId() const;
793  virtual const DtObjectType& objectType() const;
794 
796  virtual bool isEmbarked() const;
797 
800  virtual DtVector locationRelativeTo(const DtVector&, const DtVrfObject* relativeTo) const;
801 
804  virtual DtVector velocityRelativeTo(const DtVector&, const DtVrfObject* relativeTo) const;
805 
808  virtual DtVector accelerationRelativeTo(const DtVector&, const DtVrfObject* relativeTo) const;
809 
812  virtual DtTaitBryan orientationRelativeTo(const DtTaitBryan&, const DtVrfObject* relativeTo) const;
813 
815  virtual DtSharedVrfObjectReference embarkedOn() const;
816 
819  virtual bool isEmbarkedOn(const DtUUID& parent) const;
820 
821  DtAttachedTerrain* terrainAttachedTo();
822  const DtAttachedTerrain* terrainAttachedTo() const;
823 
824  virtual const DtPhysicalWorld* physicalWorld() const;
825  virtual DtPhysicalWorld* physicalWorld();
826 
828  void setAboutToBeRemoved(bool);
829  bool aboutToBeRemoved() const;
830 
833  virtual DtOutputStream& objectConsoleDebug(const DtString& channel = "") const;
834  virtual DtOutputStream& objectConsoleVerbose(const DtString& channel = "") const;
835  virtual DtOutputStream& objectConsoleInfo(const DtString& channel = "") const;
836  virtual DtOutputStream& objectConsoleWarn(const DtString& channel = "") const;
837  virtual DtOutputStream& objectConsoleError(const DtString& channel = "") const;
839 
842  virtual DtObjectConsole* objectConsole();
843  virtual const DtObjectConsole* objectConsole() const;
845 
850  virtual DtSetDataManager* setDataManager();
851  virtual const DtSetDataManager* setDataManager() const;
852 
857  virtual DtVrfObjectCommunicationInterface* communicationInterface();
858  virtual const DtVrfObjectCommunicationInterface* communicationInterface() const;
859 
863  const DtVrfObjectNavInterface* navInterface() const;
864  DtVrfObjectNavInterface* navInterface();
865 
869  virtual DtVrfObjectTerrainPreloadManager* terrainPreloadManager();
870 
873  DtVrfObjectSubComponentTypes* vrfSubComponentTypes() const;
874 
877  virtual void duplicateVrfSubComponentTypes();
878 
880  virtual void restoreDuplicatedVrfSubComponentTypes();
881 
884  virtual bool hasPlan() const;
885 
887  virtual bool executingPlan() const;
888 
890  virtual bool isCurrentlyTasked() const;
891 
893  virtual bool isEllipsoid() const;
894 
900  virtual void addPostInitFromParamsCallback(DtVrfObjectCallbackFunction fcn,
901  void* usr) const;
902  virtual void removePostInitFromParamsCallback(DtVrfObjectCallbackFunction fcn,
903  void* usr) const;
905 
910  virtual DtU8 getNextEmitterSystemId();
911 
913  static void setDefaultNotifyLevel(DtNotifyLevelType level);
915  static DtNotifyLevelType defaultNotifyLevel();
916 
920  virtual void addScriptExtension(DtLuaScriptInterfaceExtension::CreatorFcn extension, void* usr);
922  virtual void removeScriptExtension(DtLuaScriptInterfaceExtension::CreatorFcn extension, void* usr);
924  virtual const ScriptInterfaceExtensions& scriptExtensions() const;
925 
928  virtual void regenerateUUIDForImport();
929 
931  virtual std::string archiveState();
932 
938 
942  virtual bool convertToRemoteObject(DtString& error);
943 
947  virtual bool convertToLocalObject(DtString& error, const std::string& archivedState = "");
949 
954  bool awaitingHandoffCompletion() const;
955 
958  virtual void completeHandoff(DtReflectedObject*);
960 
965  virtual bool prepareForHandoff();
966 
967  virtual void addHandoffCallbackFunction(DtVrfObjectHandoffCallbackList::DtCallbackFunctionType, void*) const;
968  virtual void removeHandoffCallbackFunction(DtVrfObjectHandoffCallbackList::DtCallbackFunctionType, void*) const;
969  virtual void invokeObjectHandoffCallbacks(DtVrfObjectHandoffData::HandoffFlag);
971 
972 public:
973 
976  static DtVrfObject* creator(
977  const DtObjectType& objectType,
978  DtVrfObjectManager* simObjectManager,
979  bool createLocalObject = true,
980  bool publishLocalObject = true,
981  const DtEntityIdentifier& objectIdentifier = DtEntityIdentifier::nullId(),
982  const DtGlobalObjectDesignator* globalId = 0,
983  DtReflectedObject* reflectedObject = 0,
984  const DtString & objectName = DtString::nullString(),
985  const DtString & objectLabel = DtString::nullString(),
986  DtForceType forceType = DtForceOther,
987  const DtList* vertices = 0,
988  const DtTaitBryan* orientation = 0,
989  bool projection = false,
990  bool closedFigure = false,
991  const DtAppearance& appearance = DtAppearance::nullAppearance(),
992  const DtString & readerWriterName = DtString::nullString(),
993  DtReaderWriterRegistry* parentRegistry = 0,
994  const DtUUID& uuid = DtUUID::nullUUID(),
995  bool connectToRadioNetowrk = true);
996 
998  static DtVrfObject* createObject(
999  const DtObjectType& objectType,
1000  DtVrfObjectManager* vrfObjectManager,
1001  const DtString & classType,
1002  bool createLocalObject = true,
1003  bool publishLocalObject = true,
1004  const DtEntityIdentifier& objectIdentifier = DtEntityIdentifier::nullId(),
1005  const DtGlobalObjectDesignator* globalId = 0,
1006  DtReflectedObject* reflectedObject = 0,
1007  const DtString & objectName = DtString::nullString(),
1008  const DtString & objectLabel = DtString::nullString(),
1009  DtForceType forceType = DtForceOther,
1010  const DtList* vertices = 0,
1011  const DtTaitBryan* orientation = 0,
1012  bool projection = false,
1013  bool closedFigure = false,
1014  const DtAppearance& appearance = DtAppearance::nullAppearance(),
1015  const DtString & readerWriterName = DtString::nullString(),
1016  DtReaderWriterRegistry* parentRegistry = 0,
1017  const DtUUID& initialUUID = DtUUID::nullUUID(),
1018  bool connectToRadioNetowrk = true);
1019 
1021  static DtVrfObject* createObject(
1022  const DtObjectType & objectType,
1023  DtVrfObjectManager* vrfObjectManager,
1024  const DtString & classType,
1025  bool createLocalObject = true,
1026  bool publishLocalObject = true,
1027  const DtEntityIdentifier& objectIdentifier = DtEntityIdentifier::nullId(),
1028  const DtGlobalObjectDesignator* globalId = 0,
1029  DtReflectedObject* reflectedObject = 0,
1030  const DtString & objectName = DtString::nullString(),
1031  const DtString & objectLabel = DtString::nullString(),
1032  DtForceType forceType = DtForceOther,
1033  const DtVector& location = DtVector::zero(),
1034  const DtTaitBryan* orientation = 0,
1035  bool projection = false,
1036  bool closedFigure = false,
1037  const DtAppearance& appearance = DtAppearance::nullAppearance(),
1038  const DtString & readerWriterName = DtString::nullString(),
1039  DtReaderWriterRegistry* parentRegistry = 0,
1040  const DtUUID& uuid = DtUUID::nullUUID(),
1041  bool connectToRadioNetowrk = true);
1042 
1044  static DtVrfObject* createAndInit(
1045  DtVrfObjectManager* vrfObjectManager, DtlObjPtr mtlStream);
1046 
1050  static DtVrfObject* createAndInitForSimulationObjectGroup(
1051  DtVrfObjectManager* vrfObjectManager, DtlObjPtr mtlStream, int flags, int force, const DtVector& geocentricOffsetLocation,
1052  double offsetRotation = 0.);
1053 
1057  static void verticesChangedCallback(const DtVrfObject* obj,
1058  DtVrfObjectPredicateEvaluator* predicateEval, void* userData);
1059 
1061  static void relativeVerticesChangedCallback(const DtVrfObject* obj,
1062  DtVrfObjectPredicateEvaluator* predicateEval, void* userData);
1063 
1067  static void postInitFromParamsCallback(DtVrfObjectStateRepository& stateRepository, void* usr);
1068 
1071 
1072  static void readDRThresholdSettingsCallback(
1073  const DtSettingsObject* settings, void* usr);
1074  virtual void processReadDRThresholdSettings(const DtSettingsObject* settings);
1076 
1078  virtual void addedToObjectManager();
1079 
1081 
1082  virtual void addObjectAboutToBeRemovedCallback(
1084  virtual void removeObjectAboutToBeRemovedCallback(
1086  virtual void invokeVrfObjectAboutToBeRemovedCallbacks();
1088 
1090 
1091  virtual void addObjectModifiedViaMessageCallback(
1093  virtual void removeObjectModifiedViaMessageCallback(
1095  virtual void invokeObjectModifiedViaMessageCallback();
1097 
1100 
1101  virtual void addNewSensorContactCallback(
1103  virtual void removeNewSensorContactCallback(
1105  virtual void invokeNewSensorContactCallbacks();
1107 
1109 
1110  virtual void addSetLocationCompleteCallback(
1112  virtual void removeSetLocationCompleteCallback(
1114  virtual void invokeSetLocationCompleteCallbacks();
1116 
1118  virtual DtVrfUnderwaterAcoustics* underwaterAcoustics();
1119 
1120  virtual DtVrfObjectDeletionHandle objectDeletionHandle() const;
1121 
1123  virtual void updateTerrainEmbeddedGeometry(bool force = false);
1124 
1125 protected:
1126 
1128  DtVrfObject(const DtVrfObject& orig);
1129 
1131  DtVrfObject& operator=(const DtVrfObject& orig);
1132 
1134  virtual bool initializeNetInterface();
1135 
1137  virtual void setupStateRepository();
1138 
1140  virtual bool setupNetInterface();
1141 
1143  void emptyVertexList();
1144 
1146  void copyVertexList(const DtList& orig);
1147 
1150  virtual void validateObjectType();
1151 
1153  virtual void processPostInitFromParamsCallback(DtVrfObjectCallbackFunction fcn, void* usr) const;
1154 
1157  virtual void initializeCommunicationInterfaceCallbacks();
1158  static void setOverlayLayerTaskCallback(const DtVrfObjectMessage* msg, void* usr);
1159  virtual void processSetOverlayLayerTask(const DtVrfObjectMessage* msg);
1160 
1163  virtual void updateBoundingVolumeBasedOnPosture();
1164 
1166  virtual DtExtent computeExtent() const;
1167 
1169  virtual void initializeObjectGeometryModel();
1170 
1172  virtual void cleanupItemsNeededForHandoff();
1173 
1175  virtual bool recreateItemsNeededForHandoff();
1176 
1177 protected:
1178  mutable DtExtent myExtent;
1179  mutable bool myExtentInvalid;
1180 
1182 
1184 
1187 
1190 
1194 
1197 
1199 
1201 
1203 
1205 
1210 
1214 
1218  DtForceType myForceType;
1219  DtList myVertices;
1220  DtTaitBryan myOrientation;
1223  DtAppearance myAppearance;
1224 
1227 
1229 
1235 
1245 
1251  mutable std::list< boost::shared_ptr<DtVrfObjectPredicateCallbackInfo> > myPredicateCallbackList;
1252  mutable tbb::spin_mutex myPredicateCallbackListMutex;
1253 
1257 
1260 
1262 
1266 
1269 
1272 
1277 
1279 
1282 
1284 
1286 
1288 
1290 
1292 
1294 
1296 
1301 
1303 
1305 
1306  mutable double myIlluminationValue;
1311  mutable tbb::spin_rw_mutex myIlluminationMutex;
1312 
1314 
1316  std::set<DtString> myNameAliasList;
1318  mutable bool myWarnedObjectName;
1321 
1325 
1329 
1333 };
1334 
1336 {
1337  myAboutToBeRemoved = b;
1338 }
1339 
1341 {
1342  return myAboutToBeRemoved;
1343 }
1344 
UUID is a unique ID wrapper class.
Definition: rwUUID.h:222
bool myAwaitingHandoffCompletion
Definition: vrfObject.h:1332
DtReflectedObject * myReflectedObject
Passed into constructor - held only to pass into create() function for virtual construction.
Definition: vrfObject.h:1217
Instances of DtVrfObjectParameters are the readable/writeable objects that contain the information ne...
Definition: vrfObjectParameters.h:59
Definition: scriptInterfaceHandler.h:19
Specialized version of the DtRwUUID – creates a new UUID if one is not specified in the file...
Definition: vrfObject.h:172
NOTE: This entire class is deprecated, in favor of Dt3dChord.
Definition: chord.h:40
Definition: vrfObject.h:113
DtVrfUnderwaterAcoustics * myVrfUnderwaterAcoustics
Definition: vrfObject.h:1278
DtRwString myOverlayParent
Definition: vrfObject.h:1193
Definition: vrfUnderwaterAcoustics.h:26
virtual DtlObjPtr getData(DtlObjPtr args, const DtReaderWriter::SearchPaths &searchPaths, const DtVariableBindingsList &variableBindings)
Definition: attachedTerrain.h:42
bool myMutableIlluminationCalculatedThisTick
Tracks whether illumination has been calculated this tick or not. Only calculate it once for performa...
Definition: vrfObject.h:1310
Definition: vrfObjectNavInterface.h:18
std::pair< const DtVrfObject *, DtVrfObjectCallbackDataPair > DtVrfObjectCallbackDataPair2
Definition: vrfObject.h:235
DtVrfObject is used to represent any type of simulated object (entities, aggregate, control objects) in a VR-Forces application.
Definition: vrfObject.h:215
DtVrfObjectCallbackList myNavigationInterfaceChangedCallbackList
List of functions to call when the navigation interface has changed.
Definition: vrfObject.h:1259
Definition: symbolString.h:20
static DtSimObjectFactory * theFactory
Definition: vrfObject.h:1183
DtRwObjectType myObjectType
passed in to constructor, held for SR construction
Definition: vrfObject.h:1189
Definition: navInterfaceManager.h:18
DtVrfObjectUUID myUUID
Definition: vrfObject.h:1315
DtVrfObjectCallbackList myObjectModifiedViaMessage
Definition: vrfObject.h:1276
virtual bool isVrfSimulated() const
Definition: vrfObject.h:493
DtRwEntityIdentifier myObjectIdentifier
Definition: vrfObject.h:1185
virtual bool objectValid()
Definition: vrfObject.h:138
ChangeFlag
Definition: vrfObject.h:221
DtRwVector myOvlTargetLocation
Definition: vrfObject.h:1240
Definition: reflectedExtAggregate.h:35
class DtSimRadio:
Definition: simRadio.h:25
DtSimObjectNetInterface * myNetInterface
Definition: vrfObject.h:1202
class DtRwObjectType:
Definition: rwObjectType.h:18
DtVrfObjectParameters * myParameterEntry
Definition: vrfObject.h:1299
DtTime myLastTerrainEmbeddedGeometryUpdateTime
Definition: vrfObject.h:1328
class DtObstacleAreaCompatilibility:
Definition: obstacleAreaCompatilibility.h:21
tbb::spin_rw_mutex myIlluminationMutex
Definition: vrfObject.h:1311
Definition: vrfObject.h:225
DtRwVrfObjectName myMarkingText
Definition: vrfObject.h:1191
DT_DLL_VRVCORE DtTaitBryan level(const DtCoordinateSystem &cs, const DtVector &localOrigin, double topoHeading)
Returns a level orientation with the topographic heading.
std::set< DtString > myNameAliasList
Definition: vrfObject.h:1316
Description: This class will look at parameter and state data to publish range rings (via the object ...
Definition: rangeRingsParametersPublisher.h:26
Allows manipulating a terrain object.
Definition: terrainImplementation.h:141
Definition: vrfObject.h:227
DtScriptInterfaceHandler * myScriptInterfaceHandler
Definition: vrfObject.h:1231
Contains the DtLclVerticesNotEqualPredicate class declaration.
Definition: lclVerticesNotEqualPredicate.h:24
DtCallbackList< DtVrfObjectHandoffData & > DtVrfObjectHandoffCallbackList
Definition: vrfObject.h:120
DtU8 myNextEmitterSystemId
Definition: vrfObject.h:1291
DtExtent myExtent
Definition: vrfObject.h:1178
int changedFlag
Definition: vrfObject.h:96
DtRwVector myOvlStartPoint
Definition: vrfObject.h:1241
DtRwBoolean myOvlObstacleIsBreached
Definition: vrfObject.h:1244
virtual void * userData() const
Definition: readerWriter.h:85
Description: Readable, Writable DtString Variable substitutions are done on this object when it is re...
Definition: rwString.h:20
#define DT_DEFINE_OBJECT_DEBUGGER_NAME(type)
Definition: objectCounter.h:265
*virtual const DtObjectType & objectType() const
Default on in debug, off in release.
Definition: objectCounter.h:31
DtVrfObject * myParent
Definition: vrfObject.h:198
The DtSimObjectStateRepository is an abstract base class (ABC) for all state repositories.
Definition: simObjectStateRepository.h:46
Structure that is used during scenario import to determine what to do with the import data...
Definition: vrfObjectManager.h:135
DtVrfObjectCallbackList myRelativeVerticesChangedCallbackList
List of functions to call when some object data has changed.
Definition: vrfObject.h:1265
DtGeodeticCoord myLastIlluminationPosition
Definition: vrfObject.h:1308
Definition: readerWriterRegistry.h:39
DtVrfObjectCallbackList myAboutToBeRemovedCallbackList
Definition: vrfObject.h:1273
DtVrfObject *(* DtSimObjectCreatorFcn)(const DtObjectType &objectType, DtVrfObjectManager *simObjectManager, bool createLocalObject, bool publishLocalObject, const DtEntityIdentifier &objectIdentifier, const DtGlobalObjectDesignator *globalId, DtReflectedObject *reflectedObject, const DtString &objectName, const DtString &objectLabel, DtForceType forceType, const DtList *vertices, const DtTaitBryan *orientation, bool projection, bool closedFigure, const DtAppearance &appearance, const DtString &readerWriterName, DtReaderWriterRegistry *registry, const DtUUID &initialUUID, bool connectToRadioNet)
Definition: simObjectFactory.h:40
The DtExtent represents an axis-aligned 3d bounding box.
Definition: extent.h:43
DtSimManager * mySimManager
Definition: vrfObject.h:1228
std::list< DtLuaScriptInterfaceExtension::CreatorUserPair > ScriptInterfaceExtensions
Definition: vrfObject.h:238
void(* DtVrfObjectPredicateCallbackFunction)(const DtVrfObject *obj, DtVrfObjectPredicateEvaluator *predicateEval, void *userData)
Callback function that takes a DtVrfObject*, a pointer to the DtVrfObjectPredicateEvaluator that caus...
Definition: vrfObjectPredicateCallbackInfo.h:22
DtVrfObject * myParent
Definition: vrfObject.h:167
Definition: vrfObject.h:226
Description: This repository holds all information that is common to all the forms of all entity/aggr...
Definition: vrfObjectStateRepository.h:87
DtTaitBryan myOrientation
Definition: vrfObject.h:1220
DtRangeRingsParametersPublisher * myRangeRingsParametersPublisher
This object will manage range rings from state and parameter data.
Definition: vrfObject.h:1298
DtSimRadio * myRadio
Definition: vrfObject.h:1232
DtVrfObjectCommunicationInterface * myCommunicationInterface
Definition: vrfObject.h:1287
File: rwEntityIdentifier.h.
Definition: rwEntityIdentifier.h:23
DtNavInterfaceManager * myNavInterfaceManager
Definition: vrfObject.h:1289
DtSharedVrfObjectReference mySharedReference
Definition: vrfObject.h:1317
Definition: settingsObject.h:27
DtAppearance myAppearance
Definition: vrfObject.h:1223
DtSharedVrfObjectReference class will allocate an empty DtVrfObjectReference if one is not assigned s...
Definition: vrfObjectReference.h:102
Definition: vrfObject.h:224
const bool myConnectToRadioNetwork
Definition: vrfObject.h:1320
Description: Readable, Writable uuid string.
Definition: rwUUID.h:419
bool aboutToBeRemoved() const
Definition: vrfObject.h:1340
class DtIfModifyVrfObject:
Definition: ifModifyVrfObject.h:50
Definition: objectType.h:27
virtual void echelonIdChanged()
Definition: vrfObject.h:790
bool myIsVrfSimulatedObject
Returns true if this is a vrf simulated object.
Definition: vrfObject.h:1213
List of DtRadioDescriptor subclasses that can be read from a RW type file.
Definition: radioDescriptorList.h:27
DtMovingObjectParameters * myMovingObject
Definition: vrfObject.h:1300
Instances of DtVrfObjectPredicate are used to evaluate a condition, given a DtVrfObject as an argumen...
Definition: vrfObjectPredicate.h:21
Definition: rwVector.h:23
static DtReaderWriterFactory * factory()
const DtVrfObject * mySimObject
Definition: vrfObject.h:143
DtGlobalObjectDesignator myGlobalId
Definition: vrfObject.h:1195
static const DtUUID & nullUUID()
DtVrfObjectSubComponentTypes.
Definition: vrfObjectSubComponentTypes.h:25
DtVrfObjectCallbackList myVerticesChangedCallbackList
List of DtSimObjectCallbackFunction&#39;s, to be invoked when the object&#39;s position changes.
Definition: vrfObject.h:1256
DtRwVector myOvlEndPoint
Definition: vrfObject.h:1242
bool myExtentInvalid
lazy per-tick cache of extent
Definition: vrfObject.h:1179
bool myAboutToBeRemoved
Set to true if this object is about to be removed from the object manager list.
Definition: vrfObject.h:1281
This class represents the console for an individual object.
Definition: objectConsole.h:41
The DtPhysicalWorld is the primary interface to and manager of all of the &quot;physical&quot; aspects of the s...
Definition: physicalWorld.h:88
virtual void invalidateObject()
Definition: vrfObject.h:139
Definition: coordSystem.h:54
class DtVrfObjectPredicateCallbackInfo:
Definition: vrfObjectPredicateCallbackInfo.h:32
DtLocalVertexList myOvlVertices
The following member data are backward compatible reading of ovl files No accessors/mutators provided...
Definition: vrfObject.h:1239
#define DT_DLL_vrfobjcore
This file is used to determine how to build.
Definition: vrfobjcoreDefines.h:24
DtVrfObject * object
Definition: vrfObject.h:116
virtual void noRwValueSpecified()
What to do if no reader/writer value is specified when restoring from file.
HandoffFlag
Definition: vrfObject.h:103
std::list< const DtRwVariableBindings * > DtVariableBindingsList
Definition: readerWriterRegistry.h:29
bool myWarnedObjectName
Definition: vrfObject.h:1318
DtVrfObjectDeletionTracker(const DtVrfObject *simObject)
Definition: vrfObject.h:131
DtVrfObjectDeletionHandle myObjectDeletionHandle
Definition: vrfObject.h:1313
double myLastTimeIlluminationCalculated
Definition: vrfObject.h:1307
std::vector< DtFilename > SearchPaths
Definition: readerWriter.h:92
DtObstacleAreaCompatilibility myOvlObstacleArea
Definition: vrfObject.h:1243
bool myDuplicatedSubComponents
Definition: vrfObject.h:1331
DtVrfObjectHandoffCallbackList myObjectHandoffCallbackList
List of callbacks that will be invoked at points during object handoff.
Definition: vrfObject.h:1271
The moving-object-param parameter type is used for objects that are capable of movement, such as individual entities and aggregates.
Definition: movingObjectParameters.h:33
DtRwUUID & operator=(const DtRwUUID &orig)
bool myCreateLocalObject
isLocal() used to check simulation address against object identifier to see if this was a local objec...
Definition: vrfObject.h:1209
DtObjectConsole * myObjectConsole
Definition: vrfObject.h:1283
bool myProjection
Definition: vrfObject.h:1221
boost::shared_ptr< DtVrfObjectDeletionTracker > DtVrfObjectDeletionHandle
Definition: vrfObject.h:146
DtSetDataManager * mySetDataManager
Definition: vrfObject.h:1285
Definition: vrfObject.h:93
DtTerrainGeometryHandle * myTerrainEmbeddedGeometry
If the geometry for this object is embedded in the terrain this handle allows control.
Definition: vrfObject.h:1327
DtList myVertices
Definition: vrfObject.h:1219
The base class for all messages to/from a specific DtVrfObject.
Definition: vrfObjectMessage.h:30
bool myResolved
Definition: vrfObject.h:197
virtual void getSelf(DtlObjPtr args, const DtReaderWriter::SearchPaths &searchPaths=SearchPaths(), const DtVariableBindingsList &variableBindings=nullVariableReference())
Top level to read itself from an input stream.
Definition: asyncJobServer.h:39
bool myRecreateOnLoad
Definition: vrfObject.h:196
class DtVrfObjectPlanManager:
Definition: vrfObjectPlanManager.h:33
virtual void putSelf(std::string &fp, int indentLevel=0, bool writeUnspecified=false, const DtFilename &path=DtFilename::nullFilename())
Top level call to write itself to file.
double myLastWeatherHeading
Definition: vrfObject.h:1330
bool mySimulationCapable
Definition: vrfObject.h:1319
DtString myMutableGlobalIdStringCache
Definition: vrfObject.h:1196
class DtVrfObjectManager:
Definition: vrfObjectManager.h:202
This manager is on a per-DtVrfObject level, and is responsible for knowing what terrain areas an obje...
Definition: vrfObjectTerrainPreloadManager.h:36
Class Description: DtSimTaskManager manages the bookkeeping associated with starting, completing, clearing, and skipping tasks.
Definition: simTaskManager.h:54
virtual const DtVrfObject * object() const
Definition: vrfObject.h:137
DtVrfObjectSubComponentTypes * mySubComponentTypes
Used in create().
Definition: vrfObject.h:1226
The DtSimComponentManager is the top level class within a DtVrfObject which owns and manages all the ...
Definition: simComponentManager.h:39
DtVrfObjectCallbackList mySetLocationCompleteCallbackList
Definition: vrfObject.h:1274
DtLuaScriptInterfaceExtension *(* CreatorFcn)(void *usr)
Prototype for DtLuaScriptInterfaceExtension creator function.
Definition: luaScriptInterfaceExtension.h:34
Class Description: DtSimObjectNetInterface.
Definition: simObjectNetInterface.h:37
Definition: vrfChordIntersectionRecord.h:19
class DtVrfObjectPredicateEvaluator:
Definition: vrfObjectPredicateEvaluator.h:18
double myIlluminationValue
Definition: vrfObject.h:1306
Description: Readable, Writable bool.
Definition: rwBoolean.h:26
The central class of a DtVrfObject for all communications to and from the object. ...
Definition: vrfObjectCommunicationInterface.h:45
This class manages the distribution of DtSetDataRequests within a single DtVrfObject.
Definition: setDataManager.h:37
DtVrfObjectStateRepository * mySimState
Definition: vrfObject.h:1200
DtCallbackList< const DtVrfObjectCallbackData & > DtVrfObjectDataChangeCallbackList
Definition: vrfObject.h:99
DtVrfObjectPlanManager * myVrfObjectPlanManager
Definition: vrfObject.h:1234
Contains the declaration of the DtExtent class.
DtSimTaskManager * myTaskManager
Definition: vrfObject.h:1230
DtLuaScriptInterfaceExtension.
HandoffFlag handoffFlag
Definition: vrfObject.h:117
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
DtRwString myObjectClassType
Definition: vrfObject.h:1181
DtSimComponentManager * myComponentManager
Definition: vrfObject.h:1233
The simulation engine is controlled by a single,top-level class called the Simulation Manager...
Definition: simManager.h:103
std::list< boost::shared_ptr< DtVrfObjectPredicateCallbackInfo > > myPredicateCallbackList
List of predicate function callbacks.
Definition: vrfObject.h:1251
DtVrfObjectManager * mySimObjectManager
Definition: vrfObject.h:1198
ScriptInterfaceExtensions myScriptInterfaceExtensions
Definition: vrfObject.h:1295
const DtReaderWriter & operator=(const DtReaderWriter &orig)
assignment operator
DtCallbackList< const DtVrfObject * > DtVrfObjectCallbackList
Definition: vrfObject.h:92
class DtIfVrfObjectCreated:
Definition: ifVrfObjectCreated.h:32
virtual DtlObjPtr getData(DtlObjPtr args, const SearchPaths &searchPaths, const DtVariableBindingsList &variableBindings)
void(* DtCallbackFunctionType)(const DtVrfObjectCallbackData &, void *)
The function signature of the callback function.
Definition: noArgumentCallbackList.h:95
DtForceType myForceType
Definition: vrfObject.h:1218
If the flag is Prepare, and you do not wish this object to be handed off, set the flag to Abort...
Definition: vrfObject.h:107
void setAboutToBeRemoved(bool)
Set to true when object is about to be removed.
Definition: vrfObject.h:1335
DtVrfObjectDataChangeCallbackList myObjectDataChangedCallbackList
List of callback functions to call when object data has changed.
Definition: vrfObject.h:1268
static int theDefaultNotifyLevel
Definition: vrfObject.h:1302
std::pair< DtVrfObjectCallbackFunction, void * > DtVrfObjectCallbackDataPair
Definitions of container types used in the postInitFromParameters callback mechanism.
Definition: vrfObject.h:234
DtVrfObjectTerrainPreloadManager * myTerrainPreloadManager
Definition: vrfObject.h:1293
Specialized version of DtRwString.
Definition: vrfObject.h:152
class DtLocalVertexList:
Definition: localVertexList.h:20
int myPotentialLuaScripts
Definition: vrfObject.h:1304
void(* DtVrfObjectCallbackFunction)(const DtVrfObject *obj, void *userData)
Callback function that takes a DtVrfObject* and a pointer to user-defined data.
Definition: vrfObject.h:90
RAII manager object for accessing paralle tick functionality.
Definition: parallelTickManager.h:324
DtVrfObjectCallbackList myNewSensorContactCallbackList
Definition: vrfObject.h:1275
Definition: vrfObject.h:112
Definition: vrfObject.h:101
class DtSimObjectFactory:
Definition: simObjectFactory.h:68
Represents a feature geometry.
Definition: featureGeometry.h:35
DtAttachedTerrain myObjectGeometryModel
The object geometry that this object can use to see if it intersects with a higher level fidelity mod...
Definition: vrfObject.h:1324
File: rwVector.h.
static const DtFilename & appPath()
Gets the current working directory.
bool myClosedFigure
Definition: vrfObject.h:1222
Used to know whether the DtVrfObject you&#39;re tracking has been deleted.
Definition: vrfObject.h:127
DtRwString & operator=(const DtRwString &orig)
Assign to DtString. Assigns value only.
DtString myMutableObjectIdStringCache
Definition: vrfObject.h:1186
class DtIfCreateVrfObject:
Definition: ifCreateVrfObject.h:84
DtRwBoolean myPublishObject
Definition: vrfObject.h:1204
const DtVrfObject * object
Definition: vrfObject.h:95
tbb::spin_mutex myPredicateCallbackListMutex
Definition: vrfObject.h:1252
DtRwString myObjectLabel
Definition: vrfObject.h:1192

Document ID: Generated on Tue Sep 21 17:42:52 EDT 2021 from SVN revision 234861
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)