VR-Forces 4.3 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
vrfObject.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2014 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
6 #pragma once
7 
11 
17 #include "geometry/extent.h"
19 
20 #include "vrfutil/readerWriter.h"
21 #include "vrfutil/rwString.h"
22 #include "vrfutil/rwObjectType.h"
23 #include "vrfutil/rwBoolean.h"
25 #include "vrfutil/rwVector.h"
28 
30 #include <vl/hostStructs.h>
31 #include <vlpi/appearance.h>
32 #include <vlutil/vlList.h>
33 #include <matrix/geodeticCoord.h>
34 
35 #include <boost/smart_ptr/shared_ptr.hpp>
36 
41 class DtStateRepository;
45 class DtVrfObjectMessage;
46 class DtVrfObjectManager;
47 class DtSimManager;
49 class DtSimTaskManager;
50 class DtSimRadio;
56 class DtReflectedEntity;
57 class DtReflectedExtAggregate;
58 class DtReflectedEnvironmentProcess;
59 class DtVrfObject;
62 class Coordinate_System;
63 class DtAttachedTerrain;
64 class DtPhysicalWorld;
65 class DtObjectConsole;
66 class DtSetDataManager;
69 class DtSettingsObject;
74 
77 typedef void (*DtVrfObjectCallbackFunction)(DtVrfObject* obj, void* userData);
78 
80 
81 class DtVrfObject;
82 
86 {
87 public:
88 
90  : mySimObject(simObject)
91  {
92 
93  }
94 
95  virtual DtVrfObject* object() { return mySimObject; }
96  virtual bool objectValid() { return mySimObject != NULL; }
97  virtual void invalidateObject() { mySimObject = NULL; }
98 
99 protected:
100 
102 };
103 
104 typedef boost::shared_ptr<DtVrfObjectDeletionTracker> DtVrfObjectDeletionHandle;
105 
122  , public DtObjectDebugger<DtVrfObject>
123 {
124 public:
125 
129  typedef std::pair<DtVrfObjectCallbackFunction, void*> DtVrfObjectCallbackDataPair;
130  typedef std::pair<DtVrfObject*, DtVrfObjectCallbackDataPair> DtVrfObjectCallbackDataPair2;
132  typedef std::list<DtLuaScriptInterfaceExtension::CreatorUserPair> ScriptInterfaceExtensions;
133 
134 protected:
135 
137  DtVrfObject();
138 
139 public:
140 
141  DtVrfObject(
142  const DtObjectType & objectType,
143  DtVrfObjectManager* vrfObjectManager,
144  bool createLocalObject = true,
145  bool publishLocalObject = true,
146  const DtEntityIdentifier& objectIdentifier = DtEntityIdentifier::nullId(),
147  const DtGlobalObjectDesignator* globalId = 0,
148  DtReflectedObject* reflectedObject = 0,
149  const DtString & objectName = DtString::nullString(),
150  const DtString & objectLabel = DtString::nullString(),
151  DtForceType forceType = DtForceOther,
152  const DtList* vertices = 0,
153  const DtTaitBryan* orientation = 0,
154  bool projection = false,
155  bool closedFigure = false,
156  const DtAppearance& appearance = DtAppearance::nullAppearance(),
157  const DtString & readerWriterName = "vrf-object",
158  DtReaderWriterRegistry* parentRegistry = 0);
159 
161  virtual ~DtVrfObject();
162 
165  virtual bool create();
168  virtual void createCommunicationsInterface();
169 
172  virtual void createCommunicationsInterface(const DtRadioDescriptorList& descList);
173 
176  virtual void createSetDataManager();
177 
180  virtual int vrfSessionId() const;
181 
184  virtual bool init();
185 
187 
189  virtual void preprocess();
190 
194  virtual void tick();
199  virtual bool createRepository(DtVrfObjectParameters* parameterEntry);
200  virtual bool createTaskManager();
201  virtual bool createScriptInterfaceHandler();
202  virtual bool createComponentManager();
205  virtual bool createVrfObjectPlanManager();
206  virtual bool createRadio();
207 
210  virtual double illumination() const;
211 
213  virtual DtVrfObject* weather() const;
214 
216  virtual MAKVRinTerra::DtFeatureGeometry featureGeometry() const;
217 
219  virtual void updateIllumination();
220 
222  virtual void updateWeather();
223 
225  virtual void setRangeRingsParametersPublisherTickRange(double d);
226 
228  virtual void createAndInitializeRangeRingsParameterPublisher();
229 
232  virtual bool needsIlluminationUpdate();
233 
237  virtual bool needsWeatherAreaUpdate();
238 
240  virtual const DtSimManager* simManager() const;
241  virtual DtSimManager* simManager();
242 
244  virtual DtSimTaskManager* taskManager() const;
245  virtual DtScriptInterfaceHandler* scriptInterfaceHandler() const;
246  virtual DtSimComponentManager* componentManager() const;
247  virtual DtVrfObjectPlanManager* vrfObjectPlanManager() const;
248  virtual DtSimRadio* radio() const;
249 
250  virtual DtVrfObjectStateRepository* vrfState() const;
251 
260  virtual DtExtent extent() const;
261 
266  virtual void expandExtent(DtExtent& extent) const;
267 
271  virtual void sendVrfObjectCreated(unsigned long requestId = 0, bool requestCreated = true);
272 
274  virtual void setupFromMessageContent(DtIfModifyVrfObject* ifModVrfObject);
275 
278  virtual bool isVrfSimulatedObject();
279  virtual void setIsVrfSimulatedObject(bool b);
280 
288  virtual bool isSimulatingComponents() const;
289 
291  virtual void putSelf(FILE* fp, int indentLevel = 0, bool writeUnspecified = true,
292  const DtFilename& path = DtReaderWriter::appPath());
293 
295  virtual void getSelf(DtlObjPtr args, const DtReaderWriter::SearchPaths& searchPaths,
296  const DtVariableBindingsList& variableBindings);
297 
305  virtual bool setObjectName(const DtString & name, bool rename = true);
306 
309  virtual void addNameAlias(const DtString& name);
310 
313  virtual void unregisterAliases();
314 
328  virtual void addVrfObjectChangedCallback(
329  DtVrfObjectCallbackFunction function, void* userData);
330  virtual void removeVrfObjectChangedCallback(
331  DtVrfObjectCallbackFunction function, void* userData);
332 
339  virtual void addVerticesChangedCallback(
340  DtVrfObjectCallbackFunction function, void* userData);
341  virtual void removeVerticesChangedCallback(
342  DtVrfObjectCallbackFunction function, void* userData);
344 
350  virtual void addRelativeVerticesChangedCallback(
351  DtVrfObjectCallbackFunction function, void* userData);
352  virtual void removeRelativeVerticesChangedCallback(
353  DtVrfObjectCallbackFunction function, void* userData);
355 
358  virtual void addVrfObjectPredicateCallback(
360  const DtVrfObjectPredicate& predicate, DtTime evaluationPeriod = 0,
361  void* userData = 0);
362  virtual void removeVrfObjectPredicateCallback(
364  const DtVrfObjectPredicate& predicate, DtTime evaluationPeriod = 0,
365  void* userData = 0);
366 
369  virtual int predicateCallbackCount() const;
370 
375  virtual void invokeVrfObjectPredicateCallbacks();
376 
379  virtual void setCoordinateSystem(const Coordinate_System* coordinateSystem);
380 
381  virtual const DtVrfObjectManager* simObjectManager() const;
382  virtual DtVrfObjectManager* simObjectManager();
383  virtual void setSimObjectManager(DtVrfObjectManager* simObjectManager);
384 
385  virtual bool createNetInterface();
386 
391  virtual void setGlobalId(const DtGlobalObjectDesignator & id);
392  virtual const DtGlobalObjectDesignator & globalId() const;
393 
398  virtual bool baseSetObjectName(const DtString & name);
399  virtual const DtString & objectName() const;
400 
402  virtual const DtString & objectLabel() const;
403  virtual void setObjectLabel(const DtString & objectLabel);
404 
406  virtual const DtString & overlayParent() const;
407  virtual void setOverlayParent(const DtString & overlayParent);
408 
410  virtual DtStateRepository* netState();
411  virtual const DtStateRepository* netState() const;
412 
414  virtual DtSimObjectNetInterface* netInterface();
415  virtual const DtSimObjectNetInterface* netInterface() const;
416  virtual void setNetInterface(DtSimObjectNetInterface* netInterface);
417 
419  virtual void setObjectIdentifier(const DtEntityIdentifier & objectId);
420  virtual const DtEntityIdentifier & objectIdentifier() const;
421 
424  virtual bool isLocal() const;
425 
429 
430  virtual void setPublishObject(bool publishObject);
431  virtual bool publishObject() const;
433 
435  virtual DtString type() const;
436 
437  virtual DtString objectClassType() const;
438  virtual void setObjectClassType(const DtString & objectClassType);
439 
442  virtual void clearVerticesChangedCallbacks();
443 
446  virtual void clearRelativeVerticesChangedCallbacks();
447 
450  virtual void clearPredicateCallbacks();
451 
452  static void addSimObjectCreatorFcn(const DtString & type,
454 
455  static void objectAboutToBeRemoved(DtVrfObject * msg, void * usr);
456  virtual void processObjectAboutToBeRemoved(DtVrfObject*);
457 
462  static DtSimObjectFactory* factory();
463  static void setFactory(DtSimObjectFactory* factory);
464 
465  virtual DtSimObjectStateRepository* simState();
466  virtual const DtSimObjectStateRepository* simState() const;
467  virtual void setSimState(DtVrfObjectStateRepository* simState);
468 
469  void setEntityType(const DtEntityType & entityType);
470  const DtEntityType & entityType() const;
471 
472  void setDestroyed(bool destroyed);
473  bool isDestroyed() const;
474 
486  virtual void place(const DtVector& location, bool* dataAvailable = 0,
487  bool requireAllData = false);
488 
500  virtual void place(const DtReal heading, bool* dataAvailable = 0,
501  bool requireAllData = false);
502 
515  virtual void place(const DtVector& location, const DtReal heading,
516  bool* dataAvailable = 0, bool requireAllData = false);
517 
518  const DtString & echelonIdString() const;
519 
520  virtual DtVrfObject* leadEntity() const;
521 
522  virtual const DtString& firstSubordinate() const;
523 
524  virtual const DtString& lastSubordinate() const;
525 
527  virtual const DtString& firstHealthySubordinate() const;
528 
529  virtual void echelonIdChanged() {}
530 
531  virtual const DtObjectId & objectId() const;
532  virtual const DtObjectType& objectType() const;
533 
535  virtual bool isEmbarked() const;
536 
539  virtual bool isEmbarkedOn(const DtString& parent) const;
540 
541  DtAttachedTerrain* terrainAttachedTo();
542  const DtAttachedTerrain* terrainAttachedTo() const;
543 
544  virtual const DtPhysicalWorld* physicalWorld() const;
545  virtual DtPhysicalWorld* physicalWorld();
546 
548  void setAboutToBeRemoved(bool);
549  bool aboutToBeRemoved() const;
550 
553  virtual DtOutputStream& objectConsoleDebug() const;
554  virtual DtOutputStream& objectConsoleVerbose() const;
555  virtual DtOutputStream& objectConsoleInfo() const;
556  virtual DtOutputStream& objectConsoleWarn() const;
557  virtual DtOutputStream& objectConsoleError() const;
559 
562  virtual DtObjectConsole* objectConsole();
563  virtual const DtObjectConsole* objectConsole() const;
565 
570  virtual DtSetDataManager* setDataManager();
571  virtual const DtSetDataManager* setDataManager() const;
572 
577  virtual DtVrfObjectCommunicationInterface* communicationInterface();
578 
582  virtual DtVrfObjectTerrainPreloadManager* terrainPreloadManager();
583 
586  DtVrfObjectSubComponentTypes* vrfSubComponentTypes() const;
587 
590  virtual bool hasPlan() const;
591 
593  virtual bool executingPlan() const;
594 
596  virtual bool isCurrentlyTasked() const;
597 
603  virtual void addPostInitFromParamsCallback(DtVrfObjectCallbackFunction fcn,
604  void* usr);
605  virtual void removePostInitFromParamsCallback(DtVrfObjectCallbackFunction fcn,
606  void* usr);
608 
613  virtual DtU8 getNextEmitterSystemId();
614 
616  static void setDefaultNotifyLevel(DtNotifyLevelType level);
618  static DtNotifyLevelType defaultNotifyLevel();
619 
623  virtual void addScriptExtension(DtLuaScriptInterfaceExtension::CreatorFcn extension, void* usr);
625  virtual void removeScriptExtension(DtLuaScriptInterfaceExtension::CreatorFcn extension, void* usr);
627  virtual const ScriptInterfaceExtensions& scriptExtensions() const;
628 
629 public:
630 
633  static DtVrfObject* creator(
634  const DtObjectType& objectType,
635  DtVrfObjectManager* simObjectManager,
636  bool createLocalObject = true,
637  bool publishLocalObject = true,
638  const DtEntityIdentifier& objectIdentifier = DtEntityIdentifier::nullId(),
639  const DtGlobalObjectDesignator* globalId = 0,
640  DtReflectedObject* reflectedObject = 0,
641  const DtString & objectName = DtString::nullString(),
642  const DtString & objectLabel = DtString::nullString(),
643  DtForceType forceType = DtForceOther,
644  const DtList* vertices = 0,
645  const DtTaitBryan* orientation = 0,
646  bool projection = false,
647  bool closedFigure = false,
648  const DtAppearance& appearance = DtAppearance::nullAppearance(),
649  const DtString & readerWriterName = DtString::nullString(),
650  DtReaderWriterRegistry* parentRegistry = 0);
651 
653  static DtVrfObject* createObject(
654  const DtObjectType& objectType,
655  DtVrfObjectManager* vrfObjectManager,
656  const DtString & classType,
657  bool createLocalObject = true,
658  bool publishLocalObject = true,
659  const DtEntityIdentifier& objectIdentifier = DtEntityIdentifier::nullId(),
660  const DtGlobalObjectDesignator* globalId = 0,
661  DtReflectedObject* reflectedObject = 0,
662  const DtString & objectName = DtString::nullString(),
663  const DtString & objectLabel = DtString::nullString(),
664  DtForceType forceType = DtForceOther,
665  const DtList* vertices = 0,
666  const DtTaitBryan* orientation = 0,
667  bool projection = false,
668  bool closedFigure = false,
669  const DtAppearance& appearance = DtAppearance::nullAppearance(),
670  const DtString & readerWriterName = DtString::nullString(),
671  DtReaderWriterRegistry* parentRegistry = 0);
672 
674  static DtVrfObject* createObject(
675  const DtObjectType & objectType,
676  DtVrfObjectManager* vrfObjectManager,
677  const DtString & classType,
678  bool createLocalObject = true,
679  bool publishLocalObject = true,
680  const DtEntityIdentifier& objectIdentifier = DtEntityIdentifier::nullId(),
681  const DtGlobalObjectDesignator* globalId = 0,
682  DtReflectedObject* reflectedObject = 0,
683  const DtString & objectName = DtString::nullString(),
684  const DtString & objectLabel = DtString::nullString(),
685  DtForceType forceType = DtForceOther,
686  const DtVector& location = DtVector::zero(),
687  const DtTaitBryan* orientation = 0,
688  bool projection = false,
689  bool closedFigure = false,
690  const DtAppearance& appearance = DtAppearance::nullAppearance(),
691  const DtString & readerWriterName = DtString::nullString(),
692  DtReaderWriterRegistry* parentRegistry = 0);
693 
695  static DtVrfObject* createAndInit(
696  DtVrfObjectManager* vrfObjectManager, DtlObjPtr mtlStream);
697 
701  static void verticesChangedCallback(DtVrfObject* obj,
702  DtVrfObjectPredicateEvaluator* predicateEval, void* userData);
703 
705  static void relativeVerticesChangedCallback(DtVrfObject* obj,
706  DtVrfObjectPredicateEvaluator* predicateEval, void* userData);
707 
711  static void postInitFromParamsCallback(DtVrfObjectStateRepository& stateRepository, void* usr);
712 
715 
716  static void readDRThresholdSettingsCallback(
717  const DtSettingsObject* settings, void* usr);
718  virtual void processReadDRThresholdSettings(const DtSettingsObject* settings);
720 
722 
723  virtual void addObjectAboutToBeRemovedCallback(
725  virtual void removeObjectAboutToBeRemovedCallback(
727  virtual void invokeVrfObjectAboutToBeRemovedCallbacks();
729 
732 
733  virtual void addNewSensorContactCallback(
735  virtual void removeNewSensorContactCallback(
737  virtual void invokeNewSensorContactCallbacks();
739 
741 
742  virtual void addSetLocationCompleteCallback(
744  virtual void removeSetLocationCompleteCallback(
746  virtual void invokeSetLocationCompleteCallbacks();
748 
750  virtual DtVrfUnderwaterAcoustics* underwaterAcoustics();
751 
752  virtual DtVrfObjectDeletionHandle objectDeletionHandle();
753 
755  virtual void addPreprocessor(DtPreprocessor* simObject);
756  virtual void removePreprocessor(DtPreprocessor* simObject);
757 
758 protected:
759 
761  DtVrfObject(const DtVrfObject& orig);
762 
764  DtVrfObject& operator=(const DtVrfObject& orig);
765 
766 
768  virtual void setupStateRepository();
769 
771  virtual void setupNetInterface();
772 
774  void emptyVertexList();
775 
777  void copyVertexList(const DtList& orig);
778 
781  virtual void validateObjectType();
782 
784  virtual void processPostInitFromParamsCallback(DtVrfObjectCallbackFunction fcn, void* usr);
785 
788  virtual void initializeCommunicationInterfaceCallbacks();
789  static void setOverlayLayerTaskCallback(const DtVrfObjectMessage* msg, void* usr);
790  virtual void processSetOverlayLayerTask(const DtVrfObjectMessage* msg);
791 
794  virtual void updateBoundingVolumeBasedOnPosture();
795 
797  virtual DtExtent computeExtent() const;
798 
799 protected:
800 
807 
808  mutable DtExtent myExtent;
809  mutable bool myExtentInvalid;
810 
812 
814 
815  DtEntityIdentifier myObjectIdentifier;
816 
819 
823 
824  DtGlobalObjectDesignator myGlobalId;
825 
827 
829 
831 
833 
838 
842 
845  DtReflectedObject* myReflectedObject;
846  DtForceType myForceType;
847  DtList myVertices;
848  DtTaitBryan myOrientation;
851  DtAppearance myAppearance;
852 
855 
857 
863 
873 
880 
884 
888 
892 
894 
896 
899 
901 
903 
905 
907 
909 
911 
916 
918 
922  DtGeodeticCoord myLastIlluminationPosition;
923 
927 
930 };
931 
933 {
934  myAboutToBeRemoved = b;
935 }
936 
937 inline bool DtVrfObject::aboutToBeRemoved() const
938 {
939  return myAboutToBeRemoved;
940 }
941 

Document ID: Generated on Wed Mar 11 21:20:57 EDT 2015 from SVN revision 150940
Copyright © 2005-2014 VT MÄK. All Rights Reserved (www.mak.com)