VR-Forces 4.8 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) 2015 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  , public DtObjectDebugger<DtVrfObject>
217 {
218 public:
220  {
221  MarkingText = 1,
226  SubordinateOfForceLevel
227  };
228 
232  typedef std::pair<DtVrfObjectCallbackFunction, void*> DtVrfObjectCallbackDataPair;
233  typedef std::pair<const DtVrfObject*, DtVrfObjectCallbackDataPair> DtVrfObjectCallbackDataPair2;
235 
236  typedef std::list<DtLuaScriptInterfaceExtension::CreatorUserPair> ScriptInterfaceExtensions;
237 
238 protected:
239 
241  DtVrfObject();
242 
243 public:
244 
245  DtVrfObject(
246  const DtObjectType & objectType,
247  DtVrfObjectManager* vrfObjectManager,
248  bool createLocalObject = true,
249  bool publishLocalObject = true,
250  const DtEntityIdentifier& objectIdentifier = DtEntityIdentifier::nullId(),
251  const DtGlobalObjectDesignator* globalId = 0,
252  DtReflectedObject* reflectedObject = 0,
253  const DtString & objectName = DtString::nullString(),
254  const DtString & objectLabel = DtString::nullString(),
255  DtForceType forceType = DtForceOther,
256  const DtList* vertices = 0,
257  const DtTaitBryan* orientation = 0,
258  bool projection = false,
259  bool closedFigure = false,
260  const DtAppearance& appearance = DtAppearance::nullAppearance(),
261  const DtString & readerWriterName = "vrf-object",
262  DtReaderWriterRegistry* parentRegistry = 0,
263  const DtUUID& uuid = DtUUID::nullUUID(),
264  bool connectToRadioNetowrk = true);
265 
267  virtual ~DtVrfObject();
268 
271  static void enableSingleObjectMode();
273  static bool singleObjectModeActive();
274 
279  virtual bool create(bool createNetworkInterface = true);
280 
283  virtual bool finalizeObjectCreation();
284 
286  virtual void finalizeObjectRead();
287 
290  virtual void setSimulationCapable(bool);
291  virtual bool simulationCapable() const;
292 
296  virtual void prepareForReinitialization();
297 
299  virtual void canBeHandedOff();
300 
303  virtual void createCommunicationsInterface();
304 
307  virtual void createCommunicationsInterface(const DtRadioDescriptorList& descList);
308 
311  virtual void createSetDataManager();
312 
315  virtual int vrfSessionId() const;
316 
319  virtual bool init();
320 
322 
326  virtual void tick();
327 
328  virtual void startTick();
329  virtual void tickComponents();
330  virtual void endTick();
331 
333  virtual void tickPublisherOnly();
334 
336  virtual bool hasGuiKeyword(const DtString&) const;
337 
342  virtual bool createRepository(DtVrfObjectParameters* parameterEntry);
343  virtual bool createTaskManager();
344  virtual bool createScriptInterfaceHandler();
345  virtual bool createComponentManager();
348  virtual bool createVrfObjectPlanManager();
349  virtual bool createRadio();
350  virtual bool createNavigationInterfaceManager();
351 
353  virtual bool initializeComponentManager();
354 
357  virtual void setNavigationEnabled(bool);
358  virtual bool navigationEnabled() const;
359 
363  virtual void addToPotentialLuaScripts(int);
364  virtual int potentialLuaScripts() const;
365 
367  virtual int scenarioRunId() const;
368 
370  virtual double timeOfDay() const;
371 
373  virtual double dateAndTimeOfDay() const;
374 
376  virtual DtSharedVrfObjectReference sharedReference();
377  virtual DtSharedVrfObjectReference sharedReference() const;
378 
381  virtual double illumination() const;
382 
385  virtual double expectedIllumination(double dateAndTimeOfDay) const;
386 
388  virtual DtSharedVrfObjectReference weather() const;
389 
391  virtual MAKVRinTerra::DtFeatureGeometry featureGeometry() const;
392 
394  virtual void updateIllumination() const;
395 
397  virtual void updateWeather();
398 
400  virtual void setRangeRingsParametersPublisherTickRange(double d);
401 
403  virtual void createAndInitializeRangeRingsParameterPublisher();
404 
407  virtual bool needsIlluminationUpdate() const;
408 
412  virtual bool isOnTopOf(const DtVrfObject*, bool checkSupportPoints = false) const;
413  virtual bool isOnTopOf(const DtVrfObject*, double d, bool checkSupportPoints = false) const;
414 
416  virtual bool isSimulationObject() const;
417  virtual bool isEntity() const;
418  virtual bool isUnit() const;
419 
421  virtual bool intersect(const DtChord&, DtVrfChordIntersectionRecord* record = 0) const;
422 
424  virtual bool checkAndDisembarkIfEmbarked(const DtVector& localPosition);
425 
428  virtual bool checkIfMoveOntoEmbarked(const DtVector& localPosition, DtVrfObject*& hit, const std::list<DtUUID>& additionalIgnore = std::list<DtUUID>());
429 
431  virtual bool hasHighFidelityObjectGeometryModel() const;
432 
434  virtual bool isEmbeddedInTerrain() const;
435 
439  virtual bool needsWeatherAreaUpdate() const;
440 
442  virtual bool isGlobalPlan() const;
443 
445  virtual const DtSimManager* simManager() const;
446  virtual DtSimManager* simManager();
447 
449  virtual DtSimTaskManager* taskManager() const;
450  virtual DtScriptInterfaceHandler* scriptInterfaceHandler() const;
451  virtual DtSimComponentManager* componentManager();
452  virtual const DtSimComponentManager* componentManager() const;
453  virtual DtVrfObjectPlanManager* vrfObjectPlanManager() const;
454  virtual DtSimRadio* radio() const;
455 
456  virtual DtVrfObjectStateRepository* vrfState() const;
457 
468  virtual DtExtent extent() const;
469 
474  virtual DtExtent roughExtent() const;
475 
477  const DtVrfObjectParameters* parameterEntry() const;
478 
481  const DtMovingObjectParameters* movingObjectParameterEntry() const;
482 
487  virtual void expandExtent(DtExtent& extent) const;
488 
492  virtual void sendVrfObjectCreated(unsigned long requestId = 0, bool requestCreated = true);
493 
495  virtual void setupFromMessageContent(DtIfModifyVrfObject* ifModVrfObject);
496 
499  virtual void setIsVrfSimulatedObject(bool b);
500 
501  virtual bool isVrfSimulatedObject() const;
502  virtual bool isVrfSimulated() const
503  {
504  return isVrfSimulatedObject();
505  }
506 
514  virtual bool isSimulatingComponents() const;
515 
517  virtual void save(std::string&);
518 
520  virtual void putSelf(std::string& fp, int indentLevel = 0, bool writeUnspecified = true,
521  const DtFilename& path = DtReaderWriter::appPath());
522 
524  virtual void getSelf(DtlObjPtr args, const DtReaderWriter::SearchPaths& searchPaths,
525  const DtVariableBindingsList& variableBindings);
526 
527  virtual bool validNameLength(const DtString& name) const;
528 
536  virtual bool setMarkingText(const DtString & name, bool rename = true);
537 
551  virtual void addVrfObjectChangedCallback(
552  DtVrfObjectCallbackFunction function, void* userData) const;
553  virtual void removeVrfObjectChangedCallback(
554  DtVrfObjectCallbackFunction function, void* userData) const;
555 
557  virtual void addNavigationInterfaceChangedCallback(
558  DtVrfObjectCallbackFunction function, void* userData) const;
559  virtual void removeNavigationInterfaceChangedCallback(
560  DtVrfObjectCallbackFunction function, void* userData) const;
561 
568  virtual void addVerticesChangedCallback(
569  DtVrfObjectCallbackFunction function, void* userData) const;
570  virtual void removeVerticesChangedCallback(
571  DtVrfObjectCallbackFunction function, void* userData) const;
573 
577  virtual void addObjectDataChangedCallback(DtVrfObjectDataChangeCallbackList::DtCallbackFunctionType, void*) const;
578  virtual void removeObjectDataChangedCallback(DtVrfObjectDataChangeCallbackList::DtCallbackFunctionType, void*) const;
579  virtual void invokeObjectDataChangedCallbacks(ChangeFlag);
581 
587  virtual void addRelativeVerticesChangedCallback(
588  DtVrfObjectCallbackFunction function, void* userData) const;
589  virtual void removeRelativeVerticesChangedCallback(
590  DtVrfObjectCallbackFunction function, void* userData) const;
592 
595  virtual void addVrfObjectPredicateCallback(
597  const DtVrfObjectPredicate& predicate, DtTime evaluationPeriod = 0,
598  void* userData = 0) const;
599  virtual void removeVrfObjectPredicateCallback(
601  const DtVrfObjectPredicate& predicate, DtTime evaluationPeriod = 0,
602  void* userData = 0) const;
603 
606  virtual int predicateCallbackCount() const;
607 
612  virtual void invokeVrfObjectPredicateCallbacks();
613 
616  virtual void setCoordinateSystem(const Coordinate_System* coordinateSystem);
617 
618  virtual const DtVrfObjectManager* simObjectManager() const;
619  virtual DtVrfObjectManager* simObjectManager();
620  virtual void setSimObjectManager(DtVrfObjectManager* simObjectManager);
621 
622  virtual bool createNetInterface();
623 
628  virtual void setGlobalId(const DtGlobalObjectDesignator & id);
629  virtual const DtGlobalObjectDesignator & globalId() const;
630 
633  virtual const DtString & globalIdString() const;
634 
639  virtual bool baseSetMarkingText(const DtString & name);
640  virtual const DtString& markingText() const;
641 
646  virtual const DtString& objectName() const;
647 
650  virtual void addNameAlias(const DtString& name);
651 
654  virtual void unregisterAliases();
655 
657  virtual void setUUID(const DtUUID&);
658 
660  virtual const DtUUID& uuid() const;
661 
663  virtual const DtString & objectLabel() const;
664  virtual void setObjectLabel(const DtString & objectLabel);
665 
667  virtual DtForceType forceType() const;
668  virtual void setForceType(DtForceType f);
669 
671  virtual void setIsSubordinateOfForceLevel(bool);
672  virtual bool isSubordinateOfForceLevel() const;
673 
675  virtual const DtString & overlayParent() const;
676  virtual void setOverlayParent(const DtString & overlayParent);
677 
679  virtual DtStateRepository* netState();
680  virtual const DtStateRepository* netState() const;
681 
683  virtual DtSimObjectNetInterface* netInterface();
684  virtual const DtSimObjectNetInterface* netInterface() const;
685  virtual void setNetInterface(DtSimObjectNetInterface* netInterface);
686 
688  virtual void setObjectIdentifier(const DtEntityIdentifier & objectId);
689  virtual const DtEntityIdentifier & objectIdentifier() const;
690 
693  virtual const DtString & objectIdentifierString() const;
694 
697  virtual bool isLocal() const;
698 
702 
703  virtual void setPublishObject(bool publishObject);
704  virtual bool publishObject() const;
706 
708  virtual DtString type() const;
709 
710  virtual DtString objectClassType() const;
711  virtual void setObjectClassType(const DtString & objectClassType);
712 
715  virtual void clearVerticesChangedCallbacks();
716 
719  virtual void clearRelativeVerticesChangedCallbacks();
720 
723  virtual void clearPredicateCallbacks();
724 
725  static void addSimObjectCreatorFcn(const DtString & type,
727 
732  static DtSimObjectFactory* factory();
733  static void setFactory(DtSimObjectFactory* factory);
734 
735  virtual DtSimObjectStateRepository* simState();
736  virtual const DtSimObjectStateRepository* simState() const;
737  virtual void setSimState(DtVrfObjectStateRepository* simState);
738 
739  void setEntityType(const DtEntityType & entityType);
740  const DtEntityType & entityType() const;
741 
742  void setDestroyed(bool destroyed);
743  bool isDestroyed() const;
744 
756  virtual void place(const DtVector& location, bool* dataAvailable = 0,
757  bool requireAllData = false);
758 
770  virtual void place(const DtReal heading, bool* dataAvailable = 0,
771  bool requireAllData = false);
772 
785  virtual void place(const DtVector& location, const DtReal heading,
786  bool* dataAvailable = 0, bool requireAllData = false);
787 
788  const DtString & echelonIdString() const;
789 
790  virtual DtSharedVrfObjectReference leadEntity() const;
791 
792  virtual DtSharedVrfObjectReference firstSubordinate() const;
793 
794  virtual DtSharedVrfObjectReference lastSubordinate() const;
795 
797  virtual DtSharedVrfObjectReference firstHealthySubordinate() const;
798 
799  virtual void echelonIdChanged() {}
800 
801  virtual const DtObjectId & objectId() const;
802  virtual const DtObjectType& objectType() const;
803 
805  virtual bool isEmbarked() const;
806 
809  virtual DtVector locationRelativeTo(const DtVector&, const DtVrfObject* relativeTo) const;
810 
813  virtual DtVector velocityRelativeTo(const DtVector&, const DtVrfObject* relativeTo) const;
814 
817  virtual DtVector accelerationRelativeTo(const DtVector&, const DtVrfObject* relativeTo) const;
818 
821  virtual DtTaitBryan orientationRelativeTo(const DtTaitBryan&, const DtVrfObject* relativeTo) const;
822 
824  virtual DtSharedVrfObjectReference embarkedOn() const;
825 
828  virtual bool isEmbarkedOn(const DtUUID& parent) const;
829 
830  DtAttachedTerrain* terrainAttachedTo();
831  const DtAttachedTerrain* terrainAttachedTo() const;
832 
833  virtual const DtPhysicalWorld* physicalWorld() const;
834  virtual DtPhysicalWorld* physicalWorld();
835 
837  void setAboutToBeRemoved(bool);
838  bool aboutToBeRemoved() const;
839 
842  virtual DtOutputStream& objectConsoleDebug(const DtString& channel = "") const;
843  virtual DtOutputStream& objectConsoleVerbose(const DtString& channel = "") const;
844  virtual DtOutputStream& objectConsoleInfo(const DtString& channel = "") const;
845  virtual DtOutputStream& objectConsoleWarn(const DtString& channel = "") const;
846  virtual DtOutputStream& objectConsoleError(const DtString& channel = "") const;
848 
851  virtual DtObjectConsole* objectConsole();
852  virtual const DtObjectConsole* objectConsole() const;
854 
859  virtual DtSetDataManager* setDataManager();
860  virtual const DtSetDataManager* setDataManager() const;
861 
866  virtual DtVrfObjectCommunicationInterface* communicationInterface();
867  virtual const DtVrfObjectCommunicationInterface* communicationInterface() const;
868 
872  const DtVrfObjectNavInterface* navInterface() const;
873  DtVrfObjectNavInterface* navInterface();
874 
878  virtual DtVrfObjectTerrainPreloadManager* terrainPreloadManager();
879 
882  DtVrfObjectSubComponentTypes* vrfSubComponentTypes() const;
883 
886  virtual void duplicateVrfSubComponentTypes();
887 
889  virtual void restoreDuplicatedVrfSubComponentTypes();
890 
893  virtual bool hasPlan() const;
894 
896  virtual bool executingPlan() const;
897 
899  virtual bool isCurrentlyTasked() const;
900 
902  virtual bool isEllipsoid() const;
903 
909  virtual void addPostInitFromParamsCallback(DtVrfObjectCallbackFunction fcn,
910  void* usr) const;
911  virtual void removePostInitFromParamsCallback(DtVrfObjectCallbackFunction fcn,
912  void* usr) const;
914 
919  virtual DtU8 getNextEmitterSystemId();
920 
922  static void setDefaultNotifyLevel(DtNotifyLevelType level);
924  static DtNotifyLevelType defaultNotifyLevel();
925 
929  virtual void addScriptExtension(DtLuaScriptInterfaceExtension::CreatorFcn extension, void* usr);
931  virtual void removeScriptExtension(DtLuaScriptInterfaceExtension::CreatorFcn extension, void* usr);
933  virtual const ScriptInterfaceExtensions& scriptExtensions() const;
934 
937  virtual void regenerateUUIDForImport();
938 
940  virtual std::string archiveState();
941 
947 
951  virtual bool convertToRemoteObject(DtString& error);
952 
956  virtual bool convertToLocalObject(DtString& error, const std::string& archivedState = "");
958 
963  bool awaitingHandoffCompletion() const;
964 
967  virtual void completeHandoff(DtReflectedObject*);
969 
974  virtual bool prepareForHandoff();
975 
976  virtual void addHandoffCallbackFunction(DtVrfObjectHandoffCallbackList::DtCallbackFunctionType, void*) const;
977  virtual void removeHandoffCallbackFunction(DtVrfObjectHandoffCallbackList::DtCallbackFunctionType, void*) const;
978  virtual void invokeObjectHandoffCallbacks(DtVrfObjectHandoffData::HandoffFlag);
980 
981 public:
982 
985  static DtVrfObject* creator(
986  const DtObjectType& objectType,
987  DtVrfObjectManager* simObjectManager,
988  bool createLocalObject = true,
989  bool publishLocalObject = true,
990  const DtEntityIdentifier& objectIdentifier = DtEntityIdentifier::nullId(),
991  const DtGlobalObjectDesignator* globalId = 0,
992  DtReflectedObject* reflectedObject = 0,
993  const DtString & objectName = DtString::nullString(),
994  const DtString & objectLabel = DtString::nullString(),
995  DtForceType forceType = DtForceOther,
996  const DtList* vertices = 0,
997  const DtTaitBryan* orientation = 0,
998  bool projection = false,
999  bool closedFigure = false,
1000  const DtAppearance& appearance = DtAppearance::nullAppearance(),
1001  const DtString & readerWriterName = DtString::nullString(),
1002  DtReaderWriterRegistry* parentRegistry = 0,
1003  const DtUUID& uuid = DtUUID::nullUUID(),
1004  bool connectToRadioNetowrk = true);
1005 
1007  static DtVrfObject* createObject(
1008  const DtObjectType& objectType,
1009  DtVrfObjectManager* vrfObjectManager,
1010  const DtString & classType,
1011  bool createLocalObject = true,
1012  bool publishLocalObject = true,
1013  const DtEntityIdentifier& objectIdentifier = DtEntityIdentifier::nullId(),
1014  const DtGlobalObjectDesignator* globalId = 0,
1015  DtReflectedObject* reflectedObject = 0,
1016  const DtString & objectName = DtString::nullString(),
1017  const DtString & objectLabel = DtString::nullString(),
1018  DtForceType forceType = DtForceOther,
1019  const DtList* vertices = 0,
1020  const DtTaitBryan* orientation = 0,
1021  bool projection = false,
1022  bool closedFigure = false,
1023  const DtAppearance& appearance = DtAppearance::nullAppearance(),
1024  const DtString & readerWriterName = DtString::nullString(),
1025  DtReaderWriterRegistry* parentRegistry = 0,
1026  const DtUUID& initialUUID = DtUUID::nullUUID(),
1027  bool connectToRadioNetowrk = true);
1028 
1030  static DtVrfObject* createObject(
1031  const DtObjectType & objectType,
1032  DtVrfObjectManager* vrfObjectManager,
1033  const DtString & classType,
1034  bool createLocalObject = true,
1035  bool publishLocalObject = true,
1036  const DtEntityIdentifier& objectIdentifier = DtEntityIdentifier::nullId(),
1037  const DtGlobalObjectDesignator* globalId = 0,
1038  DtReflectedObject* reflectedObject = 0,
1039  const DtString & objectName = DtString::nullString(),
1040  const DtString & objectLabel = DtString::nullString(),
1041  DtForceType forceType = DtForceOther,
1042  const DtVector& location = DtVector::zero(),
1043  const DtTaitBryan* orientation = 0,
1044  bool projection = false,
1045  bool closedFigure = false,
1046  const DtAppearance& appearance = DtAppearance::nullAppearance(),
1047  const DtString & readerWriterName = DtString::nullString(),
1048  DtReaderWriterRegistry* parentRegistry = 0,
1049  const DtUUID& uuid = DtUUID::nullUUID(),
1050  bool connectToRadioNetowrk = true);
1051 
1053  static DtVrfObject* createAndInit(
1054  DtVrfObjectManager* vrfObjectManager, DtlObjPtr mtlStream);
1055 
1059  static DtVrfObject* createAndInitForSimulationObjectGroup(
1060  DtVrfObjectManager* vrfObjectManager, DtlObjPtr mtlStream, int flags, int force, const DtVector& geocentricOffsetLocation,
1061  double offsetRotation = 0.);
1062 
1066  static void verticesChangedCallback(const DtVrfObject* obj,
1067  DtVrfObjectPredicateEvaluator* predicateEval, void* userData);
1068 
1070  static void relativeVerticesChangedCallback(const DtVrfObject* obj,
1071  DtVrfObjectPredicateEvaluator* predicateEval, void* userData);
1072 
1076  static void postInitFromParamsCallback(DtVrfObjectStateRepository& stateRepository, void* usr);
1077 
1080 
1081  static void readDRThresholdSettingsCallback(
1082  const DtSettingsObject* settings, void* usr);
1083  virtual void processReadDRThresholdSettings(const DtSettingsObject* settings);
1085 
1087  virtual void addedToObjectManager();
1088 
1090 
1091  virtual void addObjectAboutToBeRemovedCallback(
1093  virtual void removeObjectAboutToBeRemovedCallback(
1095  virtual void invokeVrfObjectAboutToBeRemovedCallbacks();
1097 
1099 
1100  virtual void addObjectModifiedViaMessageCallback(
1102  virtual void removeObjectModifiedViaMessageCallback(
1104  virtual void invokeObjectModifiedViaMessageCallback();
1106 
1109 
1110  virtual void addNewSensorContactCallback(
1112  virtual void removeNewSensorContactCallback(
1114  virtual void invokeNewSensorContactCallbacks();
1116 
1118 
1119  virtual void addSetLocationCompleteCallback(
1121  virtual void removeSetLocationCompleteCallback(
1123  virtual void invokeSetLocationCompleteCallbacks();
1125 
1127  virtual DtVrfUnderwaterAcoustics* underwaterAcoustics();
1128 
1129  virtual DtVrfObjectDeletionHandle objectDeletionHandle() const;
1130 
1132  virtual void updateTerrainEmbeddedGeometry(bool force = false);
1133 
1134 protected:
1135 
1137  DtVrfObject(const DtVrfObject& orig);
1138 
1140  DtVrfObject& operator=(const DtVrfObject& orig);
1141 
1143  virtual bool initializeNetInterface();
1144 
1146  virtual void setupStateRepository();
1147 
1149  virtual bool setupNetInterface();
1150 
1152  void emptyVertexList();
1153 
1155  void copyVertexList(const DtList& orig);
1156 
1159  virtual void validateObjectType();
1160 
1162  virtual void processPostInitFromParamsCallback(DtVrfObjectCallbackFunction fcn, void* usr) const;
1163 
1166  virtual void initializeCommunicationInterfaceCallbacks();
1167  static void setOverlayLayerTaskCallback(const DtVrfObjectMessage* msg, void* usr);
1168  virtual void processSetOverlayLayerTask(const DtVrfObjectMessage* msg);
1169 
1172  virtual void updateBoundingVolumeBasedOnPosture();
1173 
1175  virtual DtExtent computeExtent() const;
1176 
1178  virtual void initializeObjectGeometryModel();
1179 
1181  virtual void cleanupItemsNeededForHandoff();
1182 
1184  virtual bool recreateItemsNeededForHandoff();
1185 
1186 protected:
1187  mutable DtExtent myExtent;
1188  mutable bool myExtentInvalid;
1189 
1191 
1193 
1196 
1199 
1203 
1206 
1208 
1210 
1212 
1214 
1219 
1223 
1227  DtForceType myForceType;
1228  DtList myVertices;
1229  DtTaitBryan myOrientation;
1232  DtAppearance myAppearance;
1233 
1236 
1238 
1244 
1254 
1260  mutable std::list< boost::shared_ptr<DtVrfObjectPredicateCallbackInfo> > myPredicateCallbackList;
1261  mutable tbb::spin_mutex myPredicateCallbackListMutex;
1262 
1266 
1269 
1271 
1275 
1278 
1281 
1286 
1288 
1291 
1293 
1295 
1297 
1299 
1301 
1303 
1305 
1310 
1312 
1314 
1315  mutable double myIlluminationValue;
1321  mutable tbb::spin_rw_mutex myIlluminationMutex;
1322 
1326  mutable bool myWeatherIsGlobal;
1328  mutable tbb::spin_rw_mutex myWeatherMutex;
1329 
1332 
1334  std::set<DtString> myNameAliasList;
1336  mutable bool myWarnedObjectName;
1339 
1343 
1347 
1351 };
1352 
1354 {
1355  myAboutToBeRemoved = b;
1356 }
1357 
1359 {
1360  return myAboutToBeRemoved;
1361 }
1362 
UUID is a unique ID wrapper class.
Definition: rwUUID.h:222
bool myAwaitingHandoffCompletion
Definition: vrfObject.h:1350
DtReflectedObject * myReflectedObject
Passed into constructor - held only to pass into create() function for virtual construction.
Definition: vrfObject.h:1226
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:1287
DtRwString myOverlayParent
Definition: vrfObject.h:1202
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:1320
Definition: vrfObjectNavInterface.h:18
std::pair< const DtVrfObject *, DtVrfObjectCallbackDataPair > DtVrfObjectCallbackDataPair2
Definition: vrfObject.h:233
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:1268
Definition: symbolString.h:20
static DtSimObjectFactory * theFactory
Definition: vrfObject.h:1192
DtRwObjectType myObjectType
passed in to constructor, held for SR construction
Definition: vrfObject.h:1198
Definition: navInterfaceManager.h:18
DtVrfObjectUUID myUUID
Definition: vrfObject.h:1333
DtVrfObjectCallbackList myObjectModifiedViaMessage
Definition: vrfObject.h:1285
virtual bool isVrfSimulated() const
Definition: vrfObject.h:502
DtRwEntityIdentifier myObjectIdentifier
Definition: vrfObject.h:1194
virtual bool objectValid()
Definition: vrfObject.h:138
ChangeFlag
Definition: vrfObject.h:219
DtRwVector myOvlTargetLocation
Definition: vrfObject.h:1249
Definition: reflectedExtAggregate.h:35
class DtSimRadio:
Definition: simRadio.h:25
DtSimObjectNetInterface * myNetInterface
Definition: vrfObject.h:1211
class DtRwObjectType:
Definition: rwObjectType.h:18
DtVrfObjectParameters * myParameterEntry
Definition: vrfObject.h:1308
DtTime myLastTerrainEmbeddedGeometryUpdateTime
Definition: vrfObject.h:1346
class DtObstacleAreaCompatilibility:
Definition: obstacleAreaCompatilibility.h:21
tbb::spin_rw_mutex myWeatherMutex
Definition: vrfObject.h:1328
tbb::spin_rw_mutex myIlluminationMutex
Definition: vrfObject.h:1321
Definition: vrfObject.h:223
DtRwVrfObjectName myMarkingText
Definition: vrfObject.h:1200
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:1334
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:139
Definition: vrfObject.h:225
DtScriptInterfaceHandler * myScriptInterfaceHandler
Definition: vrfObject.h:1240
Contains the DtLclVerticesNotEqualPredicate class declaration.
Definition: lclVerticesNotEqualPredicate.h:24
DtCallbackList< DtVrfObjectHandoffData & > DtVrfObjectHandoffCallbackList
Definition: vrfObject.h:120
DtU8 myNextEmitterSystemId
Definition: vrfObject.h:1300
DtExtent myExtent
Definition: vrfObject.h:1187
int changedFlag
Definition: vrfObject.h:96
DtRwVector myOvlStartPoint
Definition: vrfObject.h:1250
DtRwBoolean myOvlObstacleIsBreached
Definition: vrfObject.h:1253
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:134
DtVrfObjectCallbackList myRelativeVerticesChangedCallbackList
List of functions to call when some object data has changed.
Definition: vrfObject.h:1274
DtGeodeticCoord myLastIlluminationPosition
Definition: vrfObject.h:1318
Definition: readerWriterRegistry.h:39
DtVrfObjectCallbackList myAboutToBeRemovedCallbackList
Definition: vrfObject.h:1282
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:1237
std::list< DtLuaScriptInterfaceExtension::CreatorUserPair > ScriptInterfaceExtensions
Definition: vrfObject.h:236
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:224
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:1229
bool myMutableWeatherObjectUpdatedThisTick
Definition: vrfObject.h:1327
DtRangeRingsParametersPublisher * myRangeRingsParametersPublisher
This object will manage range rings from state and parameter data.
Definition: vrfObject.h:1307
DtSimRadio * myRadio
Definition: vrfObject.h:1241
DtVrfObjectCommunicationInterface * myCommunicationInterface
Definition: vrfObject.h:1296
File: rwEntityIdentifier.h.
Definition: rwEntityIdentifier.h:23
DtNavInterfaceManager * myNavInterfaceManager
Definition: vrfObject.h:1298
DtSharedVrfObjectReference mySharedReference
Definition: vrfObject.h:1335
Definition: settingsObject.h:27
DtAppearance myAppearance
Definition: vrfObject.h:1232
DtSharedVrfObjectReference class will allocate an empty DtVrfObjectReference if one is not assigned s...
Definition: vrfObjectReference.h:102
Definition: vrfObject.h:222
const bool myConnectToRadioNetwork
Definition: vrfObject.h:1338
Description: Readable, Writable uuid string.
Definition: rwUUID.h:419
bool aboutToBeRemoved() const
Definition: vrfObject.h:1358
class DtIfModifyVrfObject:
Definition: ifModifyVrfObject.h:50
Definition: objectType.h:27
virtual void echelonIdChanged()
Definition: vrfObject.h:799
bool myIsVrfSimulatedObject
Returns true if this is a vrf simulated object.
Definition: vrfObject.h:1222
List of DtRadioDescriptor subclasses that can be read from a RW type file.
Definition: radioDescriptorList.h:27
DtMovingObjectParameters * myMovingObject
Definition: vrfObject.h:1309
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:1204
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:1265
DtRwVector myOvlEndPoint
Definition: vrfObject.h:1251
bool myExtentInvalid
lazy per-tick cache of extent
Definition: vrfObject.h:1188
bool myAboutToBeRemoved
Set to true if this object is about to be removed from the object manager list.
Definition: vrfObject.h:1290
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:87
virtual void invalidateObject()
Definition: vrfObject.h:139
Definition: coordSystem.h:54
double myLastTimeWeatherAreaCalculated
Definition: vrfObject.h:1317
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:1248
#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:1336
DtVrfObjectDeletionTracker(const DtVrfObject *simObject)
Definition: vrfObject.h:131
DtVrfObjectDeletionHandle myObjectDeletionHandle
Definition: vrfObject.h:1330
double myLastTimeIlluminationCalculated
Definition: vrfObject.h:1316
std::vector< DtFilename > SearchPaths
Definition: readerWriter.h:92
DtObstacleAreaCompatilibility myOvlObstacleArea
Definition: vrfObject.h:1252
bool myDuplicatedSubComponents
Definition: vrfObject.h:1349
DtVrfObjectHandoffCallbackList myObjectHandoffCallbackList
List of callbacks that will be invoked at points during object handoff.
Definition: vrfObject.h:1280
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:1218
DtObjectConsole * myObjectConsole
Definition: vrfObject.h:1292
bool myProjection
Definition: vrfObject.h:1230
boost::shared_ptr< DtVrfObjectDeletionTracker > DtVrfObjectDeletionHandle
Definition: vrfObject.h:146
DtSetDataManager * mySetDataManager
Definition: vrfObject.h:1294
Definition: vrfObject.h:93
DtTerrainGeometryHandle * myTerrainEmbeddedGeometry
If the geometry for this object is embedded in the terrain this handle allows control.
Definition: vrfObject.h:1345
DtList myVertices
Definition: vrfObject.h:1228
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:1348
bool myWeatherIsGlobal
Definition: vrfObject.h:1326
bool mySimulationCapable
Definition: vrfObject.h:1337
DtString myMutableGlobalIdStringCache
Definition: vrfObject.h:1205
class DtVrfObjectManager:
Definition: vrfObjectManager.h:201
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:1235
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:1283
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:1315
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:1209
DtCallbackList< const DtVrfObjectCallbackData & > DtVrfObjectDataChangeCallbackList
Definition: vrfObject.h:99
DtVrfObjectPlanManager * myVrfObjectPlanManager
Definition: vrfObject.h:1243
Contains the declaration of the DtExtent class.
DtSimTaskManager * myTaskManager
Definition: vrfObject.h:1239
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:1190
DtSimComponentManager * myComponentManager
Definition: vrfObject.h:1242
The simulation engine is controlled by a single,top-level class called the Simulation Manager...
Definition: simManager.h:102
std::list< boost::shared_ptr< DtVrfObjectPredicateCallbackInfo > > myPredicateCallbackList
List of predicate function callbacks.
Definition: vrfObject.h:1260
DtVrfObjectManager * mySimObjectManager
Definition: vrfObject.h:1207
ScriptInterfaceExtensions myScriptInterfaceExtensions
Definition: vrfObject.h:1304
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:1227
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:1353
DtVrfObjectDataChangeCallbackList myObjectDataChangedCallbackList
List of callback functions to call when object data has changed.
Definition: vrfObject.h:1277
DtSharedVrfObjectReference myWeatherObject
The weather object retrieved the last time illumination was calculated.
Definition: vrfObject.h:1325
static int theDefaultNotifyLevel
Definition: vrfObject.h:1311
std::pair< DtVrfObjectCallbackFunction, void * > DtVrfObjectCallbackDataPair
Definitions of container types used in the postInitFromParameters callback mechanism.
Definition: vrfObject.h:232
DtVrfObjectTerrainPreloadManager * myTerrainPreloadManager
Definition: vrfObject.h:1302
Specialized version of DtRwString.
Definition: vrfObject.h:152
class DtLocalVertexList:
Definition: localVertexList.h:20
int myPotentialLuaScripts
Definition: vrfObject.h:1313
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:1284
Definition: vrfObject.h:112
Definition: vrfObject.h:101
class DtSimObjectFactory:
Definition: simObjectFactory.h:68
Represents a feature geometry.
Definition: featureGeometry.h:35
bool myUseDayNightIlluminationModel
Definition: vrfObject.h:1331
DtAttachedTerrain myObjectGeometryModel
The object geometry that this object can use to see if it intersects with a higher level fidelity mod...
Definition: vrfObject.h:1342
File: rwVector.h.
static const DtFilename & appPath()
Gets the current working directory.
bool myClosedFigure
Definition: vrfObject.h:1231
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:1195
class DtIfCreateVrfObject:
Definition: ifCreateVrfObject.h:84
DtRwBoolean myPublishObject
Definition: vrfObject.h:1213
const DtVrfObject * object
Definition: vrfObject.h:95
tbb::spin_mutex myPredicateCallbackListMutex
Definition: vrfObject.h:1261
DtRwString myObjectLabel
Definition: vrfObject.h:1201

Document ID: Generated on Thu Aug 27 10:56:05 EDT 2020 from SVN revision 217100
Copyright © 2005-2020 MAK Technologies. All Rights Reserved (www.mak.com)