VR-Forces 4.5 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"
17 #include "vrfutil/echelonId.h"
18 #include "vrfutil/rwInt.h"
26 #include "vrfutil/rwProperties.h"
29 #include "tbb/concurrent_hash_map.h"
30 #include "tbb/mutex.h"
31 #include <vrfutil/rwUUID.h>
32 
34 #include <vlpi/appearance.h>
35 #include <vlpi/artPartSpec.h>
36 #include <vlutil/vlString.h>
37 #include <vlpi/thresholder.h>
38 
40 #include <vlutil/vlConfig.h>
41 #include <map>
42 #include <list>
43 
44 #include "boost/logic/tribool.hpp"
45 
47 class DtVrfObject;
50 class DtSimManager;
52 class DtVrfWeaponPSR;
53 class DtRwAppearance;
54 class DtVrfObject;
55 class DtSimManager;
56 class DtTaskMessage;
65 class DtVrfObjectMessage;
66 
67 const int DtEntityVisibilityTest = 1;
70 
71 typedef bool (*DtVisibilityTest)(double rangeSquared, const DtEntityIdentifier& eyeKey,
72  const DtVector& localEyePoint, const DtVector& localEndPoint, const DtVrfObjectStateRepository* sr);
73 
77  void* usr);
78 
85 {
86 protected:
89 
90 public:
91  typedef std::map<DtString, DtString> ExtendedData;
92  typedef std::map<int, DtString> ExtendedLabels;
93 
95  typedef std::map<DtString, std::map<DtString, DtRwJoystickControl> > JoystickControls;
96 
99  const DtObjectType& objectType, DtVrfObjectParameters* parameters,
100  const DtString& rwName = DtString::nullString(),
101  DtReaderWriterRegistry* parentRegistry = 0);
102 
105  const DtString& rwName = DtString::nullString(),
106  DtReaderWriterRegistry* parentRegistry = 0);
107 
110  const DtVrfObjectStateRepository& orig);
111 
113  virtual ~DtVrfObjectStateRepository();
114 
117  const DtString& rwName = DtString::nullString(),
118  DtReaderWriterRegistry* parentRegistry = 0) const;
119 
120  virtual DtString type() const;
121 
123  virtual const int objectStateRepositorySubType() const;
124 
126  virtual const int vrfObjectStateRepositorySubType() const;
127 
128  virtual bool init();
129 
130  virtual bool createParameters();
131  virtual void initializeFromParameters();
132  virtual const DtVrfObjectParameters* vrfParameters() const;
133 
136  virtual void setConcealed(bool);
137 
139  virtual void setJoystickMovementControlled(bool);
140  virtual bool joystickMovementControlled() const;
141 
146  virtual DtVrfStateRepositoryUserExtension* userExtension() const;
147 
150  virtual void restoreEntity();
151 
156  virtual void setExtendedData(const DtString& key, const DtString& value);
157  virtual void clearExtendedData();
158  virtual void removeExtendedData(const DtString& key);
159  virtual DtString extendedData(const DtString& key) const;
160  const ExtendedData& extendedDataMap() const
161  {
162  return myExtendedData;
163  }
164  virtual void setExtendedDataMap(const ExtendedData&);
165  virtual void setExtendedDataMap(const std::map<std::string, std::string>&);
166 
168  virtual void setupExtendedDataFromParameterData();
170 
174  virtual void setExtendedLabel(int, const DtString& value);
175  virtual void clearExtendedLabels();
176  virtual DtString extendedLabel(int index) const;
177  virtual ExtendedLabels extendedLabels() const;
178  virtual void setExtendedLabels(const ExtendedLabels&);
180 
183  virtual void addJoystickControls(const DtRwJoystickControls&);
184  virtual const JoystickControls& joystickControls() const;
186 
189  virtual void setActivity(const DtString&);
190  virtual DtString activity() const;
191 
202 
203  virtual const DtObjectResourceManager* objectResourceManager() const;
204  virtual DtObjectResourceManager* objectResourceManager();
206 
215 
216  virtual const DtSimResourceManager& oldResourceManager() const;
217  virtual DtSimResourceManager& oldResourceManager();
218 
220  virtual DtSimResource* oldLookupResource(const DtString & resourceName);
221  virtual const DtSimResource* oldLookupResource(const DtString & resourceName) const;
222 
225  virtual void oldAddResource(DtSimResource* resource);
226 
228  virtual void oldRemoveResource(DtSimResource* resource);
230 
231  virtual void restoreResourcesFromParameters();
232 
235 
236  virtual void setSOR(DtReal center, DtReal size);
237 
238  virtual DtReal SORSize() const;
239  virtual DtReal SORCenter() const;
240 
241  virtual const DtSimSector& SOR() const;
243 
246  virtual bool inSOR(const DtVrfObject* entity) const;
247 
248  virtual const DtString& engagementRules() const;
249  virtual void setEngagementRules(const DtString& engagementRules);
250 
252 
253  virtual void setRequestTaskNeeded(bool value);
254  virtual bool requestTaskNeeded() const;
256 
258 
259  virtual void setTasked(const DtSymbolString& componentName, bool tasked);
260  virtual void setTasked(const DtSymbolString& componentName, int taskID, bool tasked);
261  virtual bool tasked(const DtSymbolString& componentName) const;
263 
266  virtual bool isTasked() const;
267 
269  virtual void clearCurrentTaskMsg(const DtSymbolString& componentName);
270 
272  virtual void clearCurrentTaskMsg(const DtSymbolString& componentName, int taskId);
273 
275 
276  virtual void setCurrentTaskMsg(const DtSymbolString& componentName,
277  const DtTaskMessage & taskMsg);
278 
279  virtual void setCurrentTaskMsg(const DtSymbolString& componentName,
280  const DtTaskMessage & taskMsg, int taskId);
282 
284  virtual const DtTaskStatusList* taskStatusList() const;
285  virtual DtTaskStatusList* taskStatusList();
286  virtual DtSuspendedTaskStatusList* suspendedTaskStatusList();
287 
290  virtual DtTaskMessage* currentTaskMsg(const DtSymbolString& componentName) const;
291 
293  virtual DtTaskMessage* currentTaskMsg(const DtSymbolString& componentName, int taskId) const;
294 
296  virtual std::list<DtTaskMessage*> allCurrentTaskMsg(const DtSymbolString& componentName) const;
297 
299  static bool shouldArchiveExtendedAttribute(const DtString&);
300  static void doNotArchiveAttribute(const DtString&, bool);
301 
302  virtual void putSelf(std::string& fp,
303  int indentLevel = 0,
304  bool writeUnspecified = false,
305  const DtFilename& path = DtReaderWriter::appPath());
306 
319  virtual bool placePoints(DtAttachedTerrain& attachedTerrain,
320  std::vector<DtGroundInteractionPt*> groundInteractionPts,
321  bool* terrainDataAvailable = 0);
322 
326  virtual void updateSupportPoints(const DtVector& newPosition,
327  const DtReal newHeading);
328 
331 
332  virtual void setIndependentlyTasked(bool value);
333  virtual bool independentlyTasked() const;
335 
338 
339  virtual bool processCompleteAttachment(DtVrfObject*);
340  static void objectAboutToBeRemovedCallback(DtVrfObject * vrfObject, void * usr);
341  virtual void processObjectAboutToBeRemovedCallback(DtVrfObject * vrfObject);
343 
345  static DtVrfObjectStateRepository* createRepository(const DtString & name,
346  const DtString & type, DtVrfObject* simObject,
347  const DtObjectType & objectType, DtVrfObjectParameters* parameters,
348  DtReaderWriterRegistry* parentRegistry = 0);
349 
350  static void addSimObjectStateRepositoryCreatorFcn(const DtString & type,
352 
357 
359  static void setFactory(DtSimObjectStateRepositoryFactory* factory);
361 
364 
365  virtual const DtVrfObjectParameters* parameterEntry() const;
366  virtual void setParameterEntry(DtVrfObjectParameters* parameterEntry);
368 
370  virtual const DtVrfObjectParameters* parameters() const;
371 
373  virtual DtVrfObjectParameters* modifiableParameters();
376  virtual void setupParameterInheritance();
377 
380 
381  virtual DtForceType forceType() const;
382  virtual void setForceType(DtForceType force);
384 
386  virtual bool createAttachments();
387 
389  void addPart(DtArticulatedPartStateRepository * part);
390  void removePart(DtArticulatedPartStateRepository * part);
391  DtArticulatedPartStateRepository * part(DtArtPartType partType);
392 
393  DtArticulatedPartStateRepository * findDescendantByType(
394  DtArtPartType childType);
395 
399 
400  virtual bool createAppearance();
401  virtual const DtAppearance* appearance() const;
402  virtual DtAppearance* appearance();
404 
408 
409  virtual void setCapabilities(int cap);
410  virtual int capabilities() const;
412 
415 
416  void setDestroyed(bool isDestroyed);
417  bool isDestroyed() const;
419 
422  virtual void setInvisible(bool);
423  virtual bool invisible() const;
424 
426  virtual void setInvulnerable(bool);
427  virtual bool invulnerable() const;
428 
431  virtual void setInvisibleSetByUser(bool);
432  virtual bool invisibleSetByUser() const;
433 
441 
442  DtReal healthPct() const;
443  void setHealthPct(DtReal pct);
445 
448 
449  bool firePowerKilled() const;
450  void setFirePowerKilled(const bool firePowerKilled);
451 
452  bool mobilityKilled() const;
453  void setMobilityKilled(const bool mobilityKilled);
454 
455  bool flaming() const;
456  void setFlaming(const bool flaming);
457 
458  bool smoking() const;
459  void setSmoking(const bool smoking);
461 
465  bool isEntity() const;
466 
471  bool isLocal() const;
472 
477  bool isAggregate() const;
478 
481 
482  virtual DtVrfSubordinateManager* subordinates();
483  virtual const DtVrfSubordinateManager* subordinates() const;
485 
491  void addSubordinate(DtVrfObject* subordinateEntity);
492 
494  void removeSubordinate(DtVrfObject* subordinateEntity);
495 
497  virtual DtSharedVrfObjectReference leadEntity() const;
498 
500  virtual DtSharedVrfObjectReference firstSubordinate() const;
501 
503  virtual DtSharedVrfObjectReference lastSubordinate() const;
504 
506  virtual DtSharedVrfObjectReference firstHealthySubordinate() const;
507 
510 
511  virtual DtSimManager* simManager();
512  virtual const DtSimManager* simManager() const;
514 
517 
518  virtual DtPhysicalWorld* physicalWorld();
519  virtual const DtPhysicalWorld* physicalWorld() const;
521 
524  virtual void tick();
525 
530  virtual void timedTick();
531 
534  virtual void setMinTickPeriod(double minTickPeriod);
535 
537  virtual double minTickPeriod() const;
538 
540  virtual void setMinTickPeriodVariance(double minTickPeriodVariance);
541 
543  virtual double minTickPeriodVariance() const;
544 
548  virtual void setNextTickTime(double nextTickTime);
549 
551  virtual double nextTickTime() const;
552 
558  virtual double calculateNextTickTime() const;
559 
560  virtual bool createSubordinates();
561  virtual DtVrfSubordinateManager* vrfSubordinates();
562  virtual const DtVrfSubordinateManager* vrfSubordinates() const;
563 
564  virtual bool createProcessStateRepositoryManager();
569 
570  virtual const DtVrfProcessStateRepositoryManager*
571  systemProcessStateRepositoryManager() const;
572  virtual DtVrfProcessStateRepositoryManager* systemProcessStateRepositoryManager();
574 
577  virtual const DtTaitBryan& localOrientationWrtDatabase() const;
578  virtual void setLocalOrientationWrtDatabase(
579  const DtTaitBryan& localOrientation);
580 
585  virtual DtVrfWeaponPSR* firstWeaponPSR() const;
586 
591  virtual void processObjectGeometry(const DtList& vertices);
592  virtual void processObjectGeometry(const DtLocalVertexList& vertices);
593 
600  virtual void processObjectGeometry();
601 
602  virtual const DtVrfObjectParameters* vrfBaseParameters() const;
603 
604  virtual DtGroundInteractionPt* groundCenter();
605  virtual const DtGroundInteractionPt* groundCenter() const;
606 
607  virtual const DtVector& getPartAttachPoint(const int partType) const;
608 
623  virtual void place(const DtVector& location, bool* dataAvailable = 0,
624  bool requireAllData = false);
625 
640  virtual void place(const DtReal heading, bool* dataAvailable = 0,
641  bool requireAllData = false);
642 
655  virtual void place(const DtVector& location, const DtReal heading,
656  bool clampToGroundFlag = true, bool* dataAvailable = 0,
657  bool requireAllData = false);
658 
661  virtual void updatePositionFromModelVertices();
662  virtual void updateBVolFromModelVertices();
663 
664 
665  virtual DtReal mass() const;
666  virtual void setMass(const DtReal mass);
667 
669  virtual const DtArticulatedPartCollection* artPartList() const;
670 
674  virtual void createParts();
675 
676  virtual DtTime lastTimeFiredUpon() const;
677  virtual void setLastTimeFiredUpon(const DtTime time);
678 
679  virtual bool underFire() const;
680  virtual void setUnderFire(bool underFire);
681 
687  DtNoSuppression = 0,
688  DtSuppressed1 = 1,
689  DtSuppressed2 = 2,
690  DtSuppressed3 = 3
691  };
692  virtual suppressionLevels suppressionLevel() const;
693  virtual void setSuppressionLevel(const suppressionLevels l);
694  virtual bool isSuppressed() const;
696 
697  virtual DtDeadReckonTypes deadReckoningAlgorithm() const;
698  virtual void setDeadReckoningAlgorithm(
699  DtDeadReckonTypes deadReckoningAlgorithm);
700 
702 
703  virtual const DtThresholder& deadReckoningThresholder() const;
704  virtual void setDeadReckoningThresholder(
705  const DtThresholder& thresholder);
707 
710 
711  virtual const DtEntityIdentifier & occupyingObjectId() const;
712  virtual void setOccupyingObjectId(const DtEntityIdentifier & objId);
714 
717 
718  virtual void setEchelonId(const DtEchelonId& echelonId);
719  virtual DtEchelonId& echelonId();
720  virtual const DtEchelonId& echelonId() const;
722 
724 
725  virtual void setIsSubordinateOfForceLevel(bool yesNo);
726  virtual bool isSubordinateOfForceLevel() const;
728 
731  virtual void putData(std::string& fp, int indentLevel = 0);
732 
737  virtual void getSelf(DtlObjPtr args, const DtReaderWriter::SearchPaths& searchPaths,
738  const DtVariableBindingsList& variableBindings);
739 
741  virtual int nextTaskId();
742 
744  virtual int nextSuspendId();
745 
751 
752 
755  virtual int spawningTaskId(int subtaskId) const;
756 
757  virtual void addPendingSubtaskId(const DtSymbolString& componentName, int subtaskId);
758  virtual void addPendingSubtaskId(const DtSymbolString& componentName, int taskId, int subtaskId);
759  virtual bool findPendingSubtaskId(const DtSymbolString& componentName, int subtaskId);
760  virtual bool isSubtasked(const DtSymbolString& componentName) const;
761  virtual bool findPendingSubtaskId(const DtSymbolString& componentName, int taskId, int subtaskId);
762  virtual void removePendingSubtaskId(const DtSymbolString& componentName, int subtaskId);
763  virtual void removePendingSubtaskId(const DtSymbolString& componentName, int taskId, int subtaskId);
764  virtual void removeAllPendingSubtaskIds(const DtSymbolString& componentName);
765  virtual void removeAllPendingSubtaskIds(const DtSymbolString& componentName, int taskId);
766  virtual void removeInactiveSubtaskStatus(const DtSymbolString& componentName);
767  virtual void removeInactiveSubtaskStatus(const DtSymbolString& componentName, int taskId);
768  virtual void printPendingSubtaskIds(const DtSymbolString& componentName) const;
769  virtual std::vector<int> currentPendingSubstaskIds(const DtSymbolString& componentName) const;
770  virtual std::vector<int> currentPendingSubstaskIds(const DtSymbolString& componentName, int taskId) const;
771  virtual DtSubtaskStatusEntry* pendingSubtaskStatus(const DtSymbolString& componentName, int subtaskId);
772  virtual DtSubtaskStatusEntry* pendingSubtaskStatus(const DtSymbolString& componentName, int taskId, int subtaskId);
774 
777  virtual DtTaskMessage* pendingSubtask(int subtaskId, DtString& controller) const;
778 
782  virtual bool taskedBySuperiorUponTaskComplete() const;
783 
784  virtual void setParentWasDestroyedWhenEmbarked(bool);
785  virtual bool parentWasDestroyedWhenEmbarked() const;
786 
787  virtual void detachFromParent();
788  virtual void attachToParent(DtSimObjectStateRepository* parent);
789  virtual void attachToParent(const DtUUID& parent);
790 
798  virtual void addAttachedTerrain(const DtUUID& parent);
799 
802  virtual void removeAttachedTerrain(const DtUUID& parent);
803 
806  Dt3dBoundingVolume* boundingVolume() const;
807 
811  DtVector localBoundingVolumeCenterPosition() const;
812 
817 
818  DtReal currentSpeed() const;
820 
825  DtReal forwardSpeed() const;
826 
828 
829  DtReal currentHeading() const;
830  void setCurrentHeading(const DtReal heading);
832 
835 
836  virtual void addPostInitFromParamsCallback(DtPostInitializeFromParametersCallbackFcn fcn,
837  void* usr);
838  virtual void removePostInitFromParamsCallback(DtPostInitializeFromParametersCallbackFcn fcn,
839  void* usr);
841 
843  virtual void restoreStateProperties();
844 
846  virtual void initStatePropertiesNotToBeRestored();
847 
849 
850  virtual DtRwProperties& stateProperties();
851  virtual const DtRwProperties& stateProperties() const;
853 
855 
856  virtual DtRwProperties& parameterProperties();
857  virtual const DtRwProperties& parameterProperties() const;
859 
860 protected:
861 
864  virtual void initializeNextTaskId();
865 
867  virtual void setOrientationRelativeToParent();
868 
869  virtual DtAttachedTerrain* createAttachedTerrain();
870 
874  virtual DtArticulatedPartStateRepository* createArtPartStateRepository(
875  DtVrfObject* vrfObject, const DtObjectType& objectType,
876  const DtString& rwName = DtString::nullString());
877 
878 public:
879 
881  //{@
882  virtual void addRangeItem(const DtRangeItem&);
883  virtual void removeRangeItem(int index);
884  virtual void setRangeItems(const DtRangeItems&);
885  const DtRangeItems& rangeItems() const;
886  DtRangeItems& rangeItems();
887  virtual void clearRangeItems();
889 
890  DtAttachedTerrain* terrainAttachedTo() const;
891 
892  virtual boost::tribool onTerrainSurface() const;
893 
898  virtual double sensorSignature(const DtSymbolString& sensorDomain) const;
899 
902  virtual std::list<DtSymbolString> sensorSignatureDomains() const;
903 
910 
911  virtual DtSensorContactInfoList& objectContactList();
912  virtual const DtSensorContactInfoList& objectContactList() const;
914 
917  virtual DtString stringFromExtendedData(const DtString&) const;
918 
920  virtual std::map<DtString, DtString> unarchivedData() const;
921 
923  virtual void appendExtendedData(const std::map<DtString, DtString>&);
924 
925 protected:
928  virtual double baseSensorSignature(const DtSymbolString& sensorDomain) const;
929 
933  virtual double modifySensorSignature(const DtSymbolString& sensorDomain,
934  double baseSignature) const;
935 
938  virtual bool initSignatureEvaluators();
939 
942  void clearSignatureEvaluators();
943 
945  virtual bool createObjectResourceManager();
946 
948  virtual void invokePostInitFromParamsCallbacks();
949 
950 public:
952 
953  static void taskCompleteCallback(const DtVrfObjectMessage* msg, void* usr);
954  virtual void processTaskComplete(const DtVrfObjectMessage* msg);
956 
957  static DtVrfObjectStateRepository * creator(const DtString& name,
958  DtVrfObject* simObject, const DtObjectType& objectType,
959  DtVrfObjectParameters * parameters,
960  DtReaderWriterRegistry * parentRegistry);
961 
962  static DtVrfObjectStateRepository* isVrfObjectStateRepository(
963  DtSimObjectStateRepository* repository);
964 
965  static const DtVrfObjectStateRepository* isVrfObjectStateRepository(
966  const DtSimObjectStateRepository* repository);
967 
970 
971 protected:
972 
974  static bool visibilityFilter(const DtVrfObject * object, void * usr);
975 
976 protected:
977 
979 
982 
984 
987 
991 
995 
997 
999 
1003 
1007 
1008  DtReal myMass;
1009  DtDeadReckonTypes myDeadReckoningAlgorithm;
1011 
1012  DtEntityIdentifier myOccupyingObjectId;
1013 
1016  DtArticulatedPartCollection myArtPartList;
1017 
1020 
1026 
1029 
1034 
1036 
1038 
1043 
1045 
1047 
1051 
1054 
1059 
1061 
1065 
1070 
1071 protected:
1072  //***** Important API change note
1074  //*****
1102 
1107 
1111 
1117 
1119 
1120  typedef std::list<DtSignatureModifierEvaluator*> DtSignatureModifierEvalList;
1121  typedef std::map<DtSymbolString, DtSignatureModifierEvalList*> DtSignatureModifierEvalMap;
1125 
1126  typedef tbb::concurrent_hash_map<unsigned int, double> DtSensorSignatureCacheMap;
1131 
1135 
1136  typedef std::pair<DtPostInitializeFromParametersCallbackFcn, void*> DtPostInitializeFromParametersInfo;
1137  typedef std::list<DtPostInitializeFromParametersInfo> DtPostInitializeFromParametersCallbackList;
1138 
1140 
1144  std::vector<DtRangeItem> myFixedRangeItems;
1145 
1152 
1154  std::vector<DtString> myStatePropertiesNotToBeRestored;
1155 
1157 
1160 
1163 
1164  std::set<DtArticulatedPartStateRepository*> myArtParts;
1165 
1166  static std::set<DtString> theDoNotArchiveAttributes;
1167 };

Document ID: Generated on Thu Mar 23 18:54:12 EDT 2017 from SVN revision 174804
Copyright © 2005-2017 VT MÄK. All Rights Reserved (www.mak.com)