VR-Forces 4.3 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
vrfObjectStateRepository.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2013 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
9 #pragma once
10 
14 #include "vrfobjparam/simSector.h"
16 #include <vrfExtProtocol/objectType.h>
17 #include "vrfutil/echelonId.h"
18 #include "vrfutil/rwInt.h"
24 #include "vrfutil/rwProperties.h"
25 #include "vrfExtProtocol/rangeItem.h"
27 #include "tbb/concurrent_hash_map.h"
28 #include "tbb/mutex.h"
29 
31 #include <vlpi/appearance.h>
32 #include <vlpi/artPartSpec.h>
33 #include <vlutil/vlString.h>
34 #include <vlpi/thresholder.h>
35 
37 #include <vlutil/vlConfig.h>
38 #include <map>
39 #include <list>
40 
41 #include "boost/logic/tribool.hpp"
42 
44 class DtVrfObject;
47 class DtSimManager;
49 class DtVrfWeaponPSR;
51 class DtRwAppearance;
52 class DtVrfObject;
54 class DtSimManager;
55 class DtTaskMessage;
64 class DtVrfObjectMessage;
65 
66 const int DtEntityVisibilityTest = 1;
69 
70 typedef bool (*DtVisibilityTest)(double rangeSquared, const DtEntityIdentifier& eyeKey,
71  const DtVector& localEyePoint, const DtVector& localEndPoint, const DtVrfObjectStateRepository* sr);
72 
76  void* usr);
77 
84 {
85 protected:
88 
89 public:
90  typedef std::map<DtString, DtString> ExtendedData;
91  typedef std::map<int, DtString> ExtendedLabels;
92 
95  const DtObjectType& objectType, DtVrfObjectParameters* parameters,
96  const DtString& rwName = DtString::nullString(),
97  DtReaderWriterRegistry* parentRegistry = 0);
98 
101  const DtString& rwName = DtString::nullString(),
102  DtReaderWriterRegistry* parentRegistry = 0);
103 
106  const DtVrfObjectStateRepository& orig);
107 
109  virtual ~DtVrfObjectStateRepository();
110 
113  const DtString& rwName = DtString::nullString(),
114  DtReaderWriterRegistry* parentRegistry = 0) const;
115 
116  virtual DtString type() const;
117 
119  virtual const int objectStateRepositorySubType() const;
120 
122  virtual const int vrfObjectStateRepositorySubType() const;
123 
124  virtual bool init();
125 
126  virtual bool createParameters();
127  virtual void initializeFromParameters();
128  virtual const DtVrfObjectParameters* vrfParameters() const;
129 
134  virtual DtVrfStateRepositoryUserExtension* userExtension() const;
135 
138  virtual void restoreEntity();
139 
144  virtual void setExtendedData(const DtString& key, const DtString& value);
145  virtual void clearExtendedData();
146  virtual void removeExtendedData(const DtString& key);
147  virtual DtString extendedData(const DtString& key) const;
148  const ExtendedData& extendedDataMap() const
149  {
150  return myExtendedData;
151  }
152  virtual void setExtendedDataMap(const ExtendedData&);
153  virtual void setExtendedDataMap(const std::map<std::string, std::string>&);
154 
156  virtual void setupExtendedDataFromParameterData();
158 
162  virtual void setExtendedLabel(int, const DtString& value);
163  virtual void clearExtendedLabels();
164  virtual DtString extendedLabel(int index) const;
165  virtual ExtendedLabels extendedLabels() const;
166  virtual void setExtendedLabels(const ExtendedLabels&);
168 
171  virtual void setActivity(const DtString&);
172  virtual DtString activity() const;
173 
184 
185  virtual const DtObjectResourceManager* objectResourceManager() const;
186  virtual DtObjectResourceManager* objectResourceManager();
188 
197 
198  virtual const DtSimResourceManager& oldResourceManager() const;
199  virtual DtSimResourceManager& oldResourceManager();
200 
202  virtual DtSimResource* oldLookupResource(const DtString & resourceName);
203  virtual const DtSimResource* oldLookupResource(const DtString & resourceName) const;
204 
207  virtual void oldAddResource(DtSimResource* resource);
208 
210  virtual void oldRemoveResource(DtSimResource* resource);
212 
213  virtual void restoreResourcesFromParameters();
214 
217 
218  virtual void setSOR(DtReal center, DtReal size);
219 
220  virtual DtReal SORSize() const;
221  virtual DtReal SORCenter() const;
222 
223  virtual const DtSimSector& SOR() const;
225 
228  virtual bool inSOR(const DtVrfObject* entity) const;
229 
230  virtual const DtString& engagementRules() const;
231  virtual void setEngagementRules(const DtString& engagementRules);
232 
234 
235  virtual void setRequestTaskNeeded(bool value);
236  virtual bool requestTaskNeeded() const;
238 
240 
241  virtual void setTasked(const DtString& componentName, bool tasked);
242  virtual void setTasked(const DtString& componentName, int taskID, bool tasked);
243  virtual bool tasked(const DtString& componentName) const;
245 
248  virtual bool isTasked() const;
249 
251  virtual void clearCurrentTaskMsg(const DtString& componentName);
252 
254  virtual void clearCurrentTaskMsg(const DtString& componentName, int taskId);
255 
257 
258  virtual void setCurrentTaskMsg(const DtString& componentName,
259  const DtTaskMessage & taskMsg);
260 
261  virtual void setCurrentTaskMsg(const DtString& componentName,
262  const DtTaskMessage & taskMsg, int taskId);
264 
266  virtual const DtTaskStatusList* taskStatusList() const;
267  virtual DtTaskStatusList* taskStatusList();
268  virtual DtSuspendedTaskStatusList* suspendedTaskStatusList();
269 
272  virtual DtTaskMessage* currentTaskMsg(const DtString& componentName) const;
273 
275  virtual DtTaskMessage* currentTaskMsg(const DtString& componentName, int taskId) const;
276 
278  virtual std::list<DtTaskMessage*> allCurrentTaskMsg(const DtString& componentName) const;
279 
280  virtual void putSelf(FILE* fp,
281  int indentLevel = 0,
282  bool writeUnspecified = false,
283  const DtFilename& path = DtReaderWriter::appPath());
284 
297  virtual bool placePoints(DtAttachedTerrain& attachedTerrain,
298  std::vector<DtGroundInteractionPt*> groundInteractionPts,
299  bool* terrainDataAvailable = 0);
300 
304  virtual void updateSupportPoints(const DtVector& newPosition,
305  const DtReal newHeading);
306 
309 
310  virtual void setIndependentlyTasked(bool value);
311  virtual bool independentlyTasked() const;
313 
316 
317  virtual bool processCompleteAttachment(DtVrfObject * vrfObject);
318  static void objectAboutToBeRemovedCallback(DtVrfObject * vrfObject, void * usr);
319  virtual void processObjectAboutToBeRemovedCallback(DtVrfObject * vrfObject);
321 
323  static DtVrfObjectStateRepository* createRepository(const DtString & name,
324  const DtString & type, DtVrfObject* simObject,
325  const DtObjectType & objectType, DtVrfObjectParameters* parameters,
326  DtReaderWriterRegistry* parentRegistry = 0);
327 
328  static void addSimObjectStateRepositoryCreatorFcn(const DtString & type,
330 
335 
337  static void setFactory(DtSimObjectStateRepositoryFactory* factory);
339 
342 
343  virtual const DtVrfObjectParameters* parameterEntry() const;
344  virtual void setParameterEntry(DtVrfObjectParameters* parameterEntry);
346 
348  virtual const DtVrfObjectParameters* parameters() const;
349 
351  virtual DtVrfObjectParameters* modifiableParameters();
354  virtual void setupParameterInheritance();
355 
358 
359  virtual DtForceType forceType() const;
360  virtual void setForceType(DtForceType force);
362 
364  virtual bool createAttachments();
365 
367  void addPart(DtArticulatedPartStateRepository * part);
368  void removePart(DtArticulatedPartStateRepository * part);
369  DtArticulatedPartStateRepository * part(DtArtPartType partType);
370 
371  DtArticulatedPartStateRepository * findDescendantByType(
372  DtArtPartType childType);
373 
377 
378  virtual bool createAppearance();
379  virtual const DtAppearance* appearance() const;
380  virtual DtAppearance* appearance();
382 
386 
387  virtual void setCapabilities(int cap);
388  virtual int capabilities() const;
390 
393 
394  void setDestroyed(bool isDestroyed);
395  bool isDestroyed() const;
397 
405 
406  DtReal healthPct() const;
407  void setHealthPct(DtReal pct);
409 
412 
413  bool firePowerKilled() const;
414  void setFirePowerKilled(const bool firePowerKilled);
415 
416  bool mobilityKilled() const;
417  void setMobilityKilled(const bool mobilityKilled);
418 
419  bool flaming() const;
420  void setFlaming(const bool flaming);
421 
422  bool smoking() const;
423  void setSmoking(const bool smoking);
425 
429  bool isEntity() const;
430 
435  bool isLocal() const;
436 
441  bool isAggregate() const;
442 
445 
446  virtual DtVrfSubordinateManager* subordinates();
447  virtual const DtVrfSubordinateManager* subordinates() const;
449 
455  void addSubordinate(DtVrfObject* subordinateEntity);
456 
458  void removeSubordinate(DtVrfObject* subordinateEntity);
459 
461  virtual DtVrfObject* leadEntity() const;
462 
464  virtual const DtString& firstSubordinate() const;
465 
467  virtual const DtString& lastSubordinate() const;
468 
470  virtual const DtString& firstHealthySubordinate() const;
471 
474 
475  virtual DtSimManager* simManager();
476  virtual const DtSimManager* simManager() const;
478 
481 
482  virtual DtPhysicalWorld* physicalWorld();
483  virtual const DtPhysicalWorld* physicalWorld() const;
485 
488  virtual void tick();
489 
494  virtual void timedTick();
495 
498  virtual void setMinTickPeriod(double minTickPeriod);
499 
501  virtual double minTickPeriod() const;
502 
504  virtual void setMinTickPeriodVariance(double minTickPeriodVariance);
505 
507  virtual double minTickPeriodVariance() const;
508 
512  virtual void setNextTickTime(double nextTickTime);
513 
515  virtual double nextTickTime() const;
516 
522  virtual double calculateNextTickTime() const;
523 
524  virtual bool createSubordinates();
525  virtual DtVrfSubordinateManager* vrfSubordinates();
526  virtual const DtVrfSubordinateManager* vrfSubordinates() const;
527 
528  virtual bool createProcessStateRepositoryManager();
533 
534  virtual const DtVrfProcessStateRepositoryManager*
535  systemProcessStateRepositoryManager() const;
536  virtual DtVrfProcessStateRepositoryManager* systemProcessStateRepositoryManager();
538 
541  virtual const DtTaitBryan& localOrientationWrtDatabase() const;
542  virtual void setLocalOrientationWrtDatabase(
543  const DtTaitBryan& localOrientation);
544 
549  virtual DtVrfWeaponPSR* firstWeaponPSR() const;
550 
555  virtual void processObjectGeometry(const DtList& vertices);
556  virtual void processObjectGeometry(const DtLocalVertexList& vertices);
557 
564  virtual void processObjectGeometry();
565 
566  virtual const DtVrfObjectParameters* vrfBaseParameters() const;
567 
568  virtual DtGroundInteractionPt* groundCenter();
569  virtual const DtGroundInteractionPt* groundCenter() const;
570 
571  virtual const DtVector& getPartAttachPoint(const int partType) const;
572 
587  virtual void place(const DtVector& location, bool* dataAvailable = 0,
588  bool requireAllData = false);
589 
604  virtual void place(const DtReal heading, bool* dataAvailable = 0,
605  bool requireAllData = false);
606 
619  virtual void place(const DtVector& location, const DtReal heading,
620  bool clampToGroundFlag = true, bool* dataAvailable = 0,
621  bool requireAllData = false);
622 
625  virtual void updatePositionFromModelVertices();
626  virtual void updateBVolFromModelVertices();
627 
628 
629  virtual DtReal mass() const;
630  virtual void setMass(const DtReal mass);
631 
633  virtual const DtArticulatedPartCollection* artPartList() const;
634 
638  virtual void createParts();
639 
640  virtual DtTime lastTimeFiredUpon() const;
641  virtual void setLastTimeFiredUpon(const DtTime time);
642 
643  virtual bool underFire() const;
644  virtual void setUnderFire(bool underFire);
645 
646  virtual DtDeadReckonTypes deadReckoningAlgorithm() const;
647  virtual void setDeadReckoningAlgorithm(
648  DtDeadReckonTypes deadReckoningAlgorithm);
649 
651 
652  virtual const DtThresholder& deadReckoningThresholder() const;
653  virtual void setDeadReckoningThresholder(
654  const DtThresholder& thresholder);
656 
659 
660  virtual const DtEntityIdentifier & occupyingObjectId() const;
661  virtual void setOccupyingObjectId(const DtEntityIdentifier & objId);
663 
666 
667  virtual void setEchelonId(const DtEchelonId& echelonId);
668  virtual DtEchelonId& echelonId();
669  virtual const DtEchelonId& echelonId() const;
671 
673 
674  virtual void setIsSubordinateOfForceLevel(bool yesNo);
675  virtual bool isSubordinateOfForceLevel() const;
677 
680  virtual void putData(FILE *fp, int indentLevel = 0);
681 
686  virtual void getSelf(DtlObjPtr args, const DtReaderWriter::SearchPaths& searchPaths,
687  const DtVariableBindingsList& variableBindings);
688 
690  virtual int nextTaskId();
691 
693  virtual int nextSuspendId();
694 
700 
701 
704  virtual int spawningTaskId(int subtaskId) const;
705 
706  virtual void addPendingSubtaskId(const DtString& componentName, int subtaskId);
707  virtual void addPendingSubtaskId(const DtString& componentName, int taskId, int subtaskId);
708  virtual bool findPendingSubtaskId(const DtString& componentName, int subtaskId);
709  virtual bool findPendingSubtaskId(const DtString& componentName, int taskId, int subtaskId);
710  virtual void removePendingSubtaskId(const DtString& componentName, int subtaskId);
711  virtual void removePendingSubtaskId(const DtString& componentName, int taskId, int subtaskId);
712  virtual void removeAllPendingSubtaskIds(const DtString& componentName);
713  virtual void removeAllPendingSubtaskIds(const DtString& componentName, int taskId);
714  virtual void printPendingSubtaskIds(const DtString& componentName) const;
715  virtual std::vector<int> currentPendingSubstaskIds(const DtString& componentName) const;
716  virtual std::vector<int> currentPendingSubstaskIds(const DtString& componentName, int taskId) const;
717  virtual DtSubtaskStatusEntry* pendingSubtaskStatus(const DtString& componentName, int subtaskId);
718  virtual DtSubtaskStatusEntry* pendingSubtaskStatus(const DtString& componentName, int taskId, int subtaskId);
720 
723  virtual DtTaskMessage* pendingSubtask(int subtaskId, DtString& controller) const;
724 
728  virtual bool taskedBySuperiorUponTaskComplete() const;
729 
730  virtual void setParentWasDestroyedWhenEmbarked(bool);
731  virtual bool parentWasDestroyedWhenEmbarked() const;
732 
733  virtual void detachFromParent();
734  virtual void attachToParent(DtSimObjectStateRepository* parent);
735  virtual void attachToParent(DtString parent);
736 
744  virtual void addAttachedTerrain(const DtString& parent);
745 
748  virtual void removeAttachedTerrain(const DtString& parent);
749 
752  Dt3dBoundingVolume* boundingVolume() const;
753 
757  DtVector localBoundingVolumeCenterPosition() const;
758 
763 
764  DtReal currentSpeed() const;
766 
771  DtReal forwardSpeed() const;
772 
774 
775  DtReal currentHeading() const;
776  void setCurrentHeading(const DtReal heading);
778 
781 
782  virtual void addPostInitFromParamsCallback(DtPostInitializeFromParametersCallbackFcn fcn,
783  void* usr);
784  virtual void removePostInitFromParamsCallback(DtPostInitializeFromParametersCallbackFcn fcn,
785  void* usr);
787 
789  virtual void restoreStateProperties();
790 
792  virtual void initStatePropertiesNotToBeRestored();
793 
795 
796  virtual DtRwProperties& stateProperties();
797  virtual const DtRwProperties& stateProperties() const;
799 
801 
802  virtual DtRwProperties& parameterProperties();
803  virtual const DtRwProperties& parameterProperties() const;
805 
806 protected:
807 
810  virtual void initializeNextTaskId();
811 
813  virtual void setOrientationRelativeToParent();
814 
815  virtual DtAttachedTerrain* createAttachedTerrain();
816 
820  virtual DtArticulatedPartStateRepository* createArtPartStateRepository(
821  DtVrfObject* vrfObject, const DtObjectType& objectType,
822  const DtString& rwName = DtString::nullString());
823 
824 public:
825 
827  //{@
828  virtual void addRangeItem(const DtRangeItem&);
829  virtual void removeRangeItem(int index);
830  virtual void setRangeItems(const DtRangeItems&);
831  const DtRangeItems& rangeItems() const;
832  DtRangeItems& rangeItems();
833  virtual void clearRangeItems();
835 
836  DtAttachedTerrain* terrainAttachedTo() const;
837 
838  virtual boost::tribool onTerrainSurface() const;
839 
844  virtual double sensorSignature(const DtSymbolString& sensorDomain) const;
845 
848  virtual std::list<DtSymbolString> sensorSignatureDomains() const;
849 
856 
857  virtual DtSensorContactInfoList& objectContactList();
858  virtual const DtSensorContactInfoList& objectContactList() const;
860 
861 protected:
864  virtual double baseSensorSignature(const DtSymbolString& sensorDomain) const;
865 
869  virtual double modifySensorSignature(const DtSymbolString& sensorDomain,
870  double baseSignature) const;
871 
874  virtual bool initSignatureEvaluators();
875 
878  void clearSignatureEvaluators();
879 
881  virtual bool createObjectResourceManager();
882 
884  virtual void invokePostInitFromParamsCallbacks();
885 
886 public:
888 
889  static void taskCompleteCallback(const DtVrfObjectMessage* msg, void* usr);
890  virtual void processTaskComplete(const DtVrfObjectMessage* msg);
892 
893  static DtVrfObjectStateRepository * creator(const DtString& name,
894  DtVrfObject* simObject, const DtObjectType& objectType,
895  DtVrfObjectParameters * parameters,
896  DtReaderWriterRegistry * parentRegistry);
897 
898  static DtVrfObjectStateRepository* isVrfObjectStateRepository(
899  DtSimObjectStateRepository* repository);
900 
901  static const DtVrfObjectStateRepository* isVrfObjectStateRepository(
902  const DtSimObjectStateRepository* repository);
903 
906 
907 protected:
908 
910  static bool visibilityFilter(const DtVrfObject * object, void * usr);
911 
912 protected:
913 
915 
918 
920 
923 
927 
931 
933 
935 
939 
940  DtReal myMass;
941  DtDeadReckonTypes myDeadReckoningAlgorithm;
943 
944  DtEntityIdentifier myOccupyingObjectId;
945 
948  DtArticulatedPartCollection myArtPartList;
949 
952 
958 
961 
966 
968 
970 
975 
977 
979 
983 
986 
991 
993 
997 
1002 
1003 protected:
1004  //***** Important API change note
1006  //*****
1034 
1039 
1043 
1049 
1051 
1052  typedef std::list<DtSignatureModifierEvaluator*> DtSignatureModifierEvalList;
1053  typedef std::map<DtSymbolString, DtSignatureModifierEvalList*> DtSignatureModifierEvalMap;
1057 
1058  typedef tbb::concurrent_hash_map<unsigned int, double> DtSensorSignatureCacheMap;
1063 
1067 
1068  typedef std::pair<DtPostInitializeFromParametersCallbackFcn, void*> DtPostInitializeFromParametersInfo;
1069  typedef std::list<DtPostInitializeFromParametersInfo> DtPostInitializeFromParametersCallbackList;
1070 
1072 
1075  DtRangeItems myRangeItems;
1076  std::vector<DtRangeItem> myFixedRangeItems;
1077 
1083 
1085  std::vector<DtString> myStatePropertiesNotToBeRestored;
1086 
1088 };

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)