VR-Forces 4.6 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties 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"
17 #include "vrfutil/echelonId.h"
18 #include "vrfutil/rwInt.h"
25 #include "vrfobjcore/vrfObject.h"
27 #include "vrfutil/rwProperties.h"
30 #include "tbb/concurrent_hash_map.h"
31 #include "tbb/mutex.h"
32 #include <vrfutil/rwUUID.h>
33 
35 #include <vlpi/appearance.h>
36 #include <vlpi/artPartSpec.h>
37 #include <vlutil/vlString.h>
38 #include <vlpi/thresholder.h>
39 
41 #include <vlutil/vlConfig.h>
42 #include <map>
43 #include <list>
44 
45 #include "boost/logic/tribool.hpp"
46 
48 class DtVrfObject;
51 class DtSimManager;
53 class DtVrfWeaponPSR;
54 class DtRwAppearance;
55 class DtVrfObject;
56 class DtSimManager;
57 class DtTaskMessage;
66 class DtVrfObjectMessage;
67 
68 const int DtEntityVisibilityTest = 1;
71 
72 typedef bool (*DtVisibilityTest)(double rangeSquared, const DtEntityIdentifier& eyeKey,
73  const DtVector& localEyePoint, const DtVector& localEndPoint, const DtVrfObjectStateRepository* sr);
74 
78  void* usr);
79 
86 {
87 protected:
90 
91 public:
92  typedef std::map<DtString, DtString> ExtendedData;
93  typedef std::map<int, DtString> ExtendedLabels;
94 
96  typedef std::map<DtString, std::map<DtString, DtRwJoystickControl> > JoystickControls;
97 
100  const DtObjectType& objectType, DtVrfObjectParameters* parameters,
101  const DtString& rwName = DtString::nullString(),
102  DtReaderWriterRegistry* parentRegistry = 0);
103 
106  const DtString& rwName = DtString::nullString(),
107  DtReaderWriterRegistry* parentRegistry = 0);
108 
111  const DtVrfObjectStateRepository& orig);
112 
114  virtual ~DtVrfObjectStateRepository();
115 
118  const DtString& rwName = DtString::nullString(),
119  DtReaderWriterRegistry* parentRegistry = 0) const;
120 
121  virtual DtString type() const;
122 
124  virtual const int objectStateRepositorySubType() const;
125 
127  virtual const int vrfObjectStateRepositorySubType() const;
128 
129  virtual bool init();
130 
131  virtual bool createParameters();
132  virtual void initializeFromParameters();
133  virtual const DtVrfObjectParameters* vrfParameters() const;
134 
137  virtual void setConcealed(bool);
138 
140  virtual void setJoystickMovementControlled(bool);
141  virtual bool joystickMovementControlled() const;
142 
147  virtual DtVrfStateRepositoryUserExtension* userExtension() const;
148 
151  virtual void restoreEntity();
152 
154 
155  virtual void addRestoredCallback(
157  virtual void removeRestoredCallback(
159  virtual void invokeRestoredCallbacks();
161 
166  virtual void setExtendedData(const DtString& key, const DtString& value);
167  virtual void clearExtendedData();
168  virtual void removeExtendedData(const DtString& key);
169  virtual DtString extendedData(const DtString& key) const;
170  const ExtendedData& extendedDataMap() const
171  {
172  return myExtendedData;
173  }
174  virtual void setExtendedDataMap(const ExtendedData&);
175  virtual void setExtendedDataMap(const std::map<std::string, std::string>&);
176 
178  virtual void setupExtendedDataFromParameterData();
180 
184  virtual void setExtendedLabel(int, const DtString& value);
185  virtual void clearExtendedLabels();
186  virtual DtString extendedLabel(int index) const;
187  virtual ExtendedLabels extendedLabels() const;
188  virtual void setExtendedLabels(const ExtendedLabels&);
190 
193  virtual void addJoystickControls(const DtRwJoystickControls&);
194  virtual const JoystickControls& joystickControls() const;
196 
199  virtual void setActivity(const DtString&);
200  virtual DtString activity() const;
201 
212 
213  virtual const DtObjectResourceManager* objectResourceManager() const;
214  virtual DtObjectResourceManager* objectResourceManager();
216 
225 
226  virtual const DtSimResourceManager& oldResourceManager() const;
227  virtual DtSimResourceManager& oldResourceManager();
228 
230  virtual DtSimResource* oldLookupResource(const DtString & resourceName);
231  virtual const DtSimResource* oldLookupResource(const DtString & resourceName) const;
232 
235  virtual void oldAddResource(DtSimResource* resource);
236 
238  virtual void oldRemoveResource(DtSimResource* resource);
240 
243  virtual void setNavigationEnabled(bool);
244  virtual bool navigationEnabled() const;
246 
248  virtual bool wouldBeRecursiveAttach(DtSimObjectStateRepository* parent) const;
249 
250  virtual void restoreResourcesFromParameters();
251 
254 
255  virtual void setSOR(DtReal center, DtReal size);
256 
257  virtual DtReal SORSize() const;
258  virtual DtReal SORCenter() const;
259 
260  virtual const DtSimSector& SOR() const;
262 
265  virtual bool inSOR(const DtVrfObject* entity) const;
266 
267  virtual const DtString& engagementRules() const;
268  virtual void setEngagementRules(const DtString& engagementRules);
269 
271 
272  virtual void setRequestTaskNeeded(bool value);
273  virtual bool requestTaskNeeded() const;
275 
277 
278  virtual void setTasked(const DtSymbolString& componentName, bool tasked);
279  virtual void setTasked(const DtSymbolString& componentName, int taskID, bool tasked);
280  virtual bool tasked(const DtSymbolString& componentName) const;
282 
285  virtual bool isTasked() const;
286 
288  virtual void clearCurrentTaskMsg(const DtSymbolString& componentName);
289 
291  virtual void clearCurrentTaskMsg(const DtSymbolString& componentName, int taskId);
292 
294 
295  virtual void setCurrentTaskMsg(const DtSymbolString& componentName,
296  const DtTaskMessage & taskMsg);
297 
298  virtual void setCurrentTaskMsg(const DtSymbolString& componentName,
299  const DtTaskMessage & taskMsg, int taskId);
301 
303  virtual const DtTaskStatusList* taskStatusList() const;
304  virtual DtTaskStatusList* taskStatusList();
305  virtual DtSuspendedTaskStatusList* suspendedTaskStatusList();
306 
309  virtual DtTaskMessage* currentTaskMsg(const DtSymbolString& componentName) const;
310 
312  virtual DtTaskMessage* currentTaskMsg(const DtSymbolString& componentName, int taskId) const;
313 
315  virtual std::list<DtTaskMessage*> allCurrentTaskMsg(const DtSymbolString& componentName) const;
316 
318  static bool shouldArchiveExtendedAttribute(const DtString&);
319  static void doNotArchiveAttribute(const DtString&, bool);
320 
321  virtual void putSelf(std::string& fp,
322  int indentLevel = 0,
323  bool writeUnspecified = false,
324  const DtFilename& path = DtReaderWriter::appPath());
325 
338  virtual bool placePoints(DtAttachedTerrain& attachedTerrain,
339  std::vector<DtGroundInteractionPt*> groundInteractionPts,
340  bool* terrainDataAvailable = 0);
341 
345  virtual void updateSupportPoints(const DtVector& newPosition,
346  const DtReal newHeading);
347 
350 
351  virtual void setIndependentlyTasked(bool value);
352  virtual bool independentlyTasked() const;
354 
357 
358  virtual bool processCompleteAttachment(DtVrfObject*);
359  static void objectAboutToBeRemovedCallback(DtVrfObject * vrfObject, void * usr);
360  virtual void processObjectAboutToBeRemovedCallback(DtVrfObject * vrfObject);
362 
364  static DtVrfObjectStateRepository* createRepository(const DtString & name,
365  const DtString & type, DtVrfObject* simObject,
366  const DtObjectType & objectType, DtVrfObjectParameters* parameters,
367  DtReaderWriterRegistry* parentRegistry = 0);
368 
369  static void addSimObjectStateRepositoryCreatorFcn(const DtString & type,
371 
376 
378  static void setFactory(DtSimObjectStateRepositoryFactory* factory);
380 
383 
384  virtual const DtVrfObjectParameters* parameterEntry() const;
385  virtual void setParameterEntry(DtVrfObjectParameters* parameterEntry);
387 
389  virtual const DtVrfObjectParameters* parameters() const;
390 
392  virtual DtVrfObjectParameters* modifiableParameters();
395  virtual void setupParameterInheritance();
396 
399 
400  virtual DtForceType forceType() const;
401  virtual void setForceType(DtForceType force);
403 
405  virtual bool createAttachments();
406 
408  void addPart(DtArticulatedPartStateRepository * part);
409  void removePart(DtArticulatedPartStateRepository * part);
410  DtArticulatedPartStateRepository * part(DtArtPartType partType);
411 
412  DtArticulatedPartStateRepository * findDescendantByType(
413  DtArtPartType childType);
414 
418 
419  virtual bool createAppearance();
420  virtual const DtAppearance* appearance() const;
421  virtual DtAppearance* appearance();
423 
427 
428  virtual void setCapabilities(int cap);
429  virtual int capabilities() const;
431 
434 
435  void setDestroyed(bool isDestroyed);
436  bool isDestroyed() const;
438 
441  virtual void setInvisible(bool);
442  virtual bool invisible() const;
443 
445  virtual void setInvulnerable(bool);
446  virtual bool invulnerable() const;
447 
450  virtual void setInvisibleSetByUser(bool);
451  virtual bool invisibleSetByUser() const;
452 
460 
461  DtReal healthPct() const;
462  void setHealthPct(DtReal pct);
464 
467 
468  bool firePowerKilled() const;
469  void setFirePowerKilled(const bool firePowerKilled);
470 
471  bool mobilityKilled() const;
472  void setMobilityKilled(const bool mobilityKilled);
473 
474  bool flaming() const;
475  void setFlaming(const bool flaming);
476 
477  bool smoking() const;
478  void setSmoking(const bool smoking);
480 
484  bool isEntity() const;
485 
490  bool isLocal() const;
491 
496  bool isAggregate() const;
497 
500 
501  virtual DtVrfSubordinateManager* subordinates();
502  virtual const DtVrfSubordinateManager* subordinates() const;
504 
510  void addSubordinate(DtVrfObject* subordinateEntity);
511 
513  void removeSubordinate(DtVrfObject* subordinateEntity);
514 
516  virtual DtSharedVrfObjectReference leadEntity() const;
517 
519  virtual DtSharedVrfObjectReference firstSubordinate() const;
520 
522  virtual DtSharedVrfObjectReference lastSubordinate() const;
523 
525  virtual DtSharedVrfObjectReference firstHealthySubordinate() const;
526 
529 
530  virtual DtSimManager* simManager();
531  virtual const DtSimManager* simManager() const;
533 
536 
537  virtual DtPhysicalWorld* physicalWorld();
538  virtual const DtPhysicalWorld* physicalWorld() const;
540 
543  virtual void tick();
544 
549  virtual void timedTick();
550 
553  virtual void setMinTickPeriod(double minTickPeriod);
554 
556  virtual double minTickPeriod() const;
557 
559  virtual void setMinTickPeriodVariance(double minTickPeriodVariance);
560 
562  virtual double minTickPeriodVariance() const;
563 
567  virtual void setNextTickTime(double nextTickTime);
568 
570  virtual double nextTickTime() const;
571 
577  virtual double calculateNextTickTime() const;
578 
579  virtual bool createSubordinates();
580  virtual DtVrfSubordinateManager* vrfSubordinates();
581  virtual const DtVrfSubordinateManager* vrfSubordinates() const;
582 
583  virtual bool createProcessStateRepositoryManager();
588 
589  virtual const DtVrfProcessStateRepositoryManager*
590  systemProcessStateRepositoryManager() const;
591  virtual DtVrfProcessStateRepositoryManager* systemProcessStateRepositoryManager();
593 
596  virtual const DtTaitBryan& localOrientationWrtDatabase() const;
597  virtual void setLocalOrientationWrtDatabase(
598  const DtTaitBryan& localOrientation);
599 
604  virtual DtVrfWeaponPSR* firstWeaponPSR() const;
605 
610  virtual void processObjectGeometry(const DtList& vertices);
611  virtual void processObjectGeometry(const DtLocalVertexList& vertices);
612 
619  virtual void processObjectGeometry();
620 
621  virtual const DtVrfObjectParameters* vrfBaseParameters() const;
622 
623  virtual DtGroundInteractionPt* groundCenter();
624  virtual const DtGroundInteractionPt* groundCenter() const;
625 
626  virtual const DtVector& getPartAttachPoint(const int partType) const;
627 
642  virtual void place(const DtVector& location, bool* dataAvailable = 0,
643  bool requireAllData = false);
644 
659  virtual void place(const DtReal heading, bool* dataAvailable = 0,
660  bool requireAllData = false);
661 
674  virtual void place(const DtVector& location, const DtReal heading,
675  bool clampToGroundFlag = true, bool* dataAvailable = 0,
676  bool requireAllData = false);
677 
680  virtual void updatePositionFromModelVertices();
681 
682  virtual DtReal mass() const;
683  virtual void setMass(const DtReal mass);
684 
686  virtual const DtArticulatedPartCollection* artPartList() const;
687 
691  virtual void createParts();
692 
693  virtual DtTime lastTimeFiredUpon() const;
694  virtual void setLastTimeFiredUpon(const DtTime time);
695 
696  virtual bool underFire() const;
697  virtual void setUnderFire(bool underFire);
698 
704  DtNoSuppression = 0,
705  DtSuppressed1 = 1,
706  DtSuppressed2 = 2,
707  DtSuppressed3 = 3
708  };
709  virtual suppressionLevels suppressionLevel() const;
710  virtual void setSuppressionLevel(const suppressionLevels l);
711  virtual bool isSuppressed() const;
713 
714  virtual DtDeadReckonTypes deadReckoningAlgorithm() const;
715  virtual void setDeadReckoningAlgorithm(
716  DtDeadReckonTypes deadReckoningAlgorithm);
717 
719 
720  virtual const DtThresholder& deadReckoningThresholder() const;
721  virtual void setDeadReckoningThresholder(
722  const DtThresholder& thresholder);
724 
727 
728  virtual const DtEntityIdentifier & occupyingObjectId() const;
729  virtual void setOccupyingObjectId(const DtEntityIdentifier & objId);
731 
734 
735  virtual void setEchelonId(const DtEchelonId& echelonId);
736  virtual DtEchelonId& echelonId();
737  virtual const DtEchelonId& echelonId() const;
739 
741 
742  virtual void setIsSubordinateOfForceLevel(bool yesNo);
743  virtual bool isSubordinateOfForceLevel() const;
745 
748  virtual void putData(std::string& fp, int indentLevel = 0);
749 
754  virtual void getSelf(DtlObjPtr args, const DtReaderWriter::SearchPaths& searchPaths,
755  const DtVariableBindingsList& variableBindings);
756 
758  virtual int nextTaskId();
759 
761  virtual int nextSuspendId();
762 
768 
769 
772  virtual int spawningTaskId(int subtaskId) const;
773 
774  virtual void addPendingSubtaskId(const DtSymbolString& componentName, int subtaskId);
775  virtual void addPendingSubtaskId(const DtSymbolString& componentName, int taskId, int subtaskId);
776  virtual bool findPendingSubtaskId(const DtSymbolString& componentName, int subtaskId);
777  virtual bool isSubtasked(const DtSymbolString& componentName) const;
778  virtual bool findPendingSubtaskId(const DtSymbolString& componentName, int taskId, int subtaskId);
779  virtual void removePendingSubtaskId(const DtSymbolString& componentName, int subtaskId);
780  virtual void removePendingSubtaskId(const DtSymbolString& componentName, int taskId, int subtaskId);
781  virtual void removeAllPendingSubtaskIds(const DtSymbolString& componentName);
782  virtual void removeAllPendingSubtaskIds(const DtSymbolString& componentName, int taskId);
783  virtual void removeInactiveSubtaskStatus(const DtSymbolString& componentName);
784  virtual void removeInactiveSubtaskStatus(const DtSymbolString& componentName, int taskId);
785  virtual void printPendingSubtaskIds(const DtSymbolString& componentName) const;
786  virtual std::vector<int> currentPendingSubstaskIds(const DtSymbolString& componentName) const;
787  virtual std::vector<int> currentPendingSubstaskIds(const DtSymbolString& componentName, int taskId) const;
788  virtual DtSubtaskStatusEntry* pendingSubtaskStatus(const DtSymbolString& componentName, int subtaskId);
789  virtual DtSubtaskStatusEntry* pendingSubtaskStatus(const DtSymbolString& componentName, int taskId, int subtaskId);
791 
794  virtual DtTaskMessage* pendingSubtask(int subtaskId, DtString& controller) const;
795 
799  virtual bool taskedBySuperiorUponTaskComplete() const;
800 
801  virtual void setParentWasDestroyedWhenEmbarked(bool);
802  virtual bool parentWasDestroyedWhenEmbarked() const;
803 
804  virtual void detachFromParent();
805  virtual void attachToParent(DtSimObjectStateRepository* parent);
806  virtual void attachToParent(const DtUUID& parent);
807 
815  virtual void addAttachedTerrain(const DtUUID& parent);
816 
819  virtual void removeAttachedTerrain(const DtUUID& parent);
820 
823  Dt3dBoundingVolume* boundingVolume() const;
824 
828  DtVector localBoundingVolumeCenterPosition() const;
829 
834 
835  DtReal currentSpeed() const;
837 
842  DtReal forwardSpeed() const;
843 
845 
846  DtReal currentHeading() const;
847  void setCurrentHeading(const DtReal heading);
849 
852 
853  virtual void addPostInitFromParamsCallback(DtPostInitializeFromParametersCallbackFcn fcn,
854  void* usr);
855  virtual void removePostInitFromParamsCallback(DtPostInitializeFromParametersCallbackFcn fcn,
856  void* usr);
858 
860  virtual void restoreStateProperties();
861 
863  virtual void initStatePropertiesNotToBeRestored();
864 
866 
867  virtual DtRwProperties& stateProperties();
868  virtual const DtRwProperties& stateProperties() const;
870 
872 
873  virtual DtRwProperties& parameterProperties();
874  virtual const DtRwProperties& parameterProperties() const;
876 
877 protected:
878 
881  virtual void initializeNextTaskId();
882 
884  virtual void setOrientationRelativeToParent();
885 
886  virtual DtAttachedTerrain* createAttachedTerrain();
887 
891  virtual DtArticulatedPartStateRepository* createArtPartStateRepository(
892  DtVrfObject* vrfObject, const DtObjectType& objectType,
893  const DtString& rwName = DtString::nullString());
894 
895 public:
896 
898  //{@
899  virtual void addRangeItem(const DtRangeItem&);
900  virtual void removeRangeItem(int index);
901  virtual void setRangeItems(const DtRangeItems&);
902  const DtRangeItems& rangeItems() const;
903  DtRangeItems& rangeItems();
904  virtual void clearRangeItems();
906 
907  DtAttachedTerrain* terrainAttachedTo() const;
908 
909  virtual boost::tribool onTerrainSurface() const;
910 
915  virtual double sensorSignature(const DtSymbolString& sensorDomain) const;
916 
919  virtual std::list<DtSymbolString> sensorSignatureDomains() const;
920 
927 
928  virtual DtSensorContactInfoList& objectContactList();
929  virtual const DtSensorContactInfoList& objectContactList() const;
931 
934  virtual DtString stringFromExtendedData(const DtString&) const;
935 
937  virtual std::map<DtString, DtString> unarchivedData() const;
938 
940  virtual void appendExtendedData(const std::map<DtString, DtString>&);
941 
942 protected:
945  virtual double baseSensorSignature(const DtSymbolString& sensorDomain) const;
946 
950  virtual double modifySensorSignature(const DtSymbolString& sensorDomain,
951  double baseSignature) const;
952 
955  virtual bool initSignatureEvaluators();
956 
959  void clearSignatureEvaluators();
960 
962  virtual bool createObjectResourceManager();
963 
965  virtual void invokePostInitFromParamsCallbacks();
966 
967 public:
969 
970  static void taskCompleteCallback(const DtVrfObjectMessage* msg, void* usr);
971  virtual void processTaskComplete(const DtVrfObjectMessage* msg);
973 
974  static DtVrfObjectStateRepository * creator(const DtString& name,
975  DtVrfObject* simObject, const DtObjectType& objectType,
976  DtVrfObjectParameters * parameters,
977  DtReaderWriterRegistry * parentRegistry);
978 
979  static DtVrfObjectStateRepository* isVrfObjectStateRepository(
980  DtSimObjectStateRepository* repository);
981 
982  static const DtVrfObjectStateRepository* isVrfObjectStateRepository(
983  const DtSimObjectStateRepository* repository);
984 
987 
988 protected:
989 
991  static bool visibilityFilter(const DtVrfObject * object, void * usr);
992 
993 protected:
994 
996 
999 
1001 
1004 
1008 
1012 
1014 
1016 
1020 
1024 
1025  DtReal myMass;
1026  DtDeadReckonTypes myDeadReckoningAlgorithm;
1028 
1029  DtEntityIdentifier myOccupyingObjectId;
1030 
1033  DtArticulatedPartCollection myArtPartList;
1034 
1037 
1043 
1046 
1051 
1053 
1055 
1060 
1062 
1064 
1068 
1071 
1076 
1078 
1082 
1087 
1090 
1091 protected:
1092  //***** Important API change note
1094  //*****
1122 
1127 
1131 
1137 
1139 
1140  typedef std::list<DtSignatureModifierEvaluator*> DtSignatureModifierEvalList;
1141  typedef std::map<DtSymbolString, DtSignatureModifierEvalList*> DtSignatureModifierEvalMap;
1145 
1146  typedef tbb::concurrent_hash_map<unsigned int, double> DtSensorSignatureCacheMap;
1151 
1155 
1156  typedef std::pair<DtPostInitializeFromParametersCallbackFcn, void*> DtPostInitializeFromParametersInfo;
1157  typedef std::list<DtPostInitializeFromParametersInfo> DtPostInitializeFromParametersCallbackList;
1158 
1160 
1164  std::vector<DtRangeItem> myFixedRangeItems;
1165 
1172 
1175 
1177  std::vector<DtString> myStatePropertiesNotToBeRestored;
1178 
1180 
1183 
1186 
1187  std::set<DtArticulatedPartStateRepository*> myArtParts;
1188 
1189  static std::set<DtString> theDoNotArchiveAttributes;
1190 
1193 };

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