VR-Forces Development_Version 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;
54 class DtRwAppearance;
55 class DtVrfObject;
57 class DtSimManager;
58 class DtTaskMessage;
67 class DtVrfObjectMessage;
68 
69 const int DtEntityVisibilityTest = 1;
72 
73 typedef bool (*DtVisibilityTest)(double rangeSquared, const DtEntityIdentifier& eyeKey,
74  const DtVector& localEyePoint, const DtVector& localEndPoint, const DtVrfObjectStateRepository* sr);
75 
79  void* usr);
80 
87 {
88 protected:
91 
92 public:
93  typedef std::map<DtString, DtString> ExtendedData;
94  typedef std::map<int, DtString> ExtendedLabels;
95 
97  typedef std::map<DtString, std::map<DtString, DtRwJoystickControl> > JoystickControls;
98 
101  const DtObjectType& objectType, DtVrfObjectParameters* parameters,
102  const DtString& rwName = DtString::nullString(),
103  DtReaderWriterRegistry* parentRegistry = 0);
104 
107  const DtString& rwName = DtString::nullString(),
108  DtReaderWriterRegistry* parentRegistry = 0);
109 
112  const DtVrfObjectStateRepository& orig);
113 
115  virtual ~DtVrfObjectStateRepository();
116 
119  const DtString& rwName = DtString::nullString(),
120  DtReaderWriterRegistry* parentRegistry = 0) const;
121 
122  virtual DtString type() const;
123 
125  virtual const int objectStateRepositorySubType() const;
126 
128  virtual const int vrfObjectStateRepositorySubType() const;
129 
130  virtual bool init();
131 
132  virtual bool createParameters();
133  virtual void initializeFromParameters();
134  virtual const DtVrfObjectParameters* vrfParameters() const;
135 
137  virtual void setJoystickMovementControlled(bool);
138  virtual bool joystickMovementControlled() const;
139 
144  virtual DtVrfStateRepositoryUserExtension* userExtension() const;
145 
148  virtual void restoreEntity();
149 
154  virtual void setExtendedData(const DtString& key, const DtString& value);
155  virtual void clearExtendedData();
156  virtual void removeExtendedData(const DtString& key);
157  virtual DtString extendedData(const DtString& key) const;
158  const ExtendedData& extendedDataMap() const
159  {
160  return myExtendedData;
161  }
162  virtual void setExtendedDataMap(const ExtendedData&);
163  virtual void setExtendedDataMap(const std::map<std::string, std::string>&);
164 
166  virtual void setupExtendedDataFromParameterData();
168 
172  virtual void setExtendedLabel(int, const DtString& value);
173  virtual void clearExtendedLabels();
174  virtual DtString extendedLabel(int index) const;
175  virtual ExtendedLabels extendedLabels() const;
176  virtual void setExtendedLabels(const ExtendedLabels&);
178 
181  virtual void addJoystickControls(const DtRwJoystickControls&);
182  virtual const JoystickControls& joystickControls() const;
184 
187  virtual void setActivity(const DtString&);
188  virtual DtString activity() const;
189 
200 
201  virtual const DtObjectResourceManager* objectResourceManager() const;
202  virtual DtObjectResourceManager* objectResourceManager();
204 
213 
214  virtual const DtSimResourceManager& oldResourceManager() const;
215  virtual DtSimResourceManager& oldResourceManager();
216 
218  virtual DtSimResource* oldLookupResource(const DtString & resourceName);
219  virtual const DtSimResource* oldLookupResource(const DtString & resourceName) const;
220 
223  virtual void oldAddResource(DtSimResource* resource);
224 
226  virtual void oldRemoveResource(DtSimResource* resource);
228 
229  virtual void restoreResourcesFromParameters();
230 
233 
234  virtual void setSOR(DtReal center, DtReal size);
235 
236  virtual DtReal SORSize() const;
237  virtual DtReal SORCenter() const;
238 
239  virtual const DtSimSector& SOR() const;
241 
244  virtual bool inSOR(const DtVrfObject* entity) const;
245 
246  virtual const DtString& engagementRules() const;
247  virtual void setEngagementRules(const DtString& engagementRules);
248 
250 
251  virtual void setRequestTaskNeeded(bool value);
252  virtual bool requestTaskNeeded() const;
254 
256 
257  virtual void setTasked(const DtSymbolString& componentName, bool tasked);
258  virtual void setTasked(const DtSymbolString& componentName, int taskID, bool tasked);
259  virtual bool tasked(const DtSymbolString& componentName) const;
261 
264  virtual bool isTasked() const;
265 
267  virtual void clearCurrentTaskMsg(const DtSymbolString& componentName);
268 
270  virtual void clearCurrentTaskMsg(const DtSymbolString& componentName, int taskId);
271 
273 
274  virtual void setCurrentTaskMsg(const DtSymbolString& componentName,
275  const DtTaskMessage & taskMsg);
276 
277  virtual void setCurrentTaskMsg(const DtSymbolString& componentName,
278  const DtTaskMessage & taskMsg, int taskId);
280 
282  virtual const DtTaskStatusList* taskStatusList() const;
283  virtual DtTaskStatusList* taskStatusList();
284  virtual DtSuspendedTaskStatusList* suspendedTaskStatusList();
285 
288  virtual DtTaskMessage* currentTaskMsg(const DtSymbolString& componentName) const;
289 
291  virtual DtTaskMessage* currentTaskMsg(const DtSymbolString& componentName, int taskId) const;
292 
294  virtual std::list<DtTaskMessage*> allCurrentTaskMsg(const DtSymbolString& componentName) const;
295 
296  virtual void putSelf(std::string& fp,
297  int indentLevel = 0,
298  bool writeUnspecified = false,
299  const DtFilename& path = DtReaderWriter::appPath());
300 
313  virtual bool placePoints(DtAttachedTerrain& attachedTerrain,
314  std::vector<DtGroundInteractionPt*> groundInteractionPts,
315  bool* terrainDataAvailable = 0);
316 
320  virtual void updateSupportPoints(const DtVector& newPosition,
321  const DtReal newHeading);
322 
325 
326  virtual void setIndependentlyTasked(bool value);
327  virtual bool independentlyTasked() const;
329 
332 
333  virtual bool processCompleteAttachment(DtVrfObject*);
334  static void objectAboutToBeRemovedCallback(DtVrfObject * vrfObject, void * usr);
335  virtual void processObjectAboutToBeRemovedCallback(DtVrfObject * vrfObject);
337 
339  static DtVrfObjectStateRepository* createRepository(const DtString & name,
340  const DtString & type, DtVrfObject* simObject,
341  const DtObjectType & objectType, DtVrfObjectParameters* parameters,
342  DtReaderWriterRegistry* parentRegistry = 0);
343 
344  static void addSimObjectStateRepositoryCreatorFcn(const DtString & type,
346 
351 
353  static void setFactory(DtSimObjectStateRepositoryFactory* factory);
355 
358 
359  virtual const DtVrfObjectParameters* parameterEntry() const;
360  virtual void setParameterEntry(DtVrfObjectParameters* parameterEntry);
362 
364  virtual const DtVrfObjectParameters* parameters() const;
365 
367  virtual DtVrfObjectParameters* modifiableParameters();
370  virtual void setupParameterInheritance();
371 
374 
375  virtual DtForceType forceType() const;
376  virtual void setForceType(DtForceType force);
378 
380  virtual bool createAttachments();
381 
383  void addPart(DtArticulatedPartStateRepository * part);
384  void removePart(DtArticulatedPartStateRepository * part);
385  DtArticulatedPartStateRepository * part(DtArtPartType partType);
386 
387  DtArticulatedPartStateRepository * findDescendantByType(
388  DtArtPartType childType);
389 
393 
394  virtual bool createAppearance();
395  virtual const DtAppearance* appearance() const;
396  virtual DtAppearance* appearance();
398 
402 
403  virtual void setCapabilities(int cap);
404  virtual int capabilities() const;
406 
409 
410  void setDestroyed(bool isDestroyed);
411  bool isDestroyed() const;
413 
421 
422  DtReal healthPct() const;
423  void setHealthPct(DtReal pct);
425 
428 
429  bool firePowerKilled() const;
430  void setFirePowerKilled(const bool firePowerKilled);
431 
432  bool mobilityKilled() const;
433  void setMobilityKilled(const bool mobilityKilled);
434 
435  bool flaming() const;
436  void setFlaming(const bool flaming);
437 
438  bool smoking() const;
439  void setSmoking(const bool smoking);
441 
445  bool isEntity() const;
446 
451  bool isLocal() const;
452 
457  bool isAggregate() const;
458 
461 
462  virtual DtVrfSubordinateManager* subordinates();
463  virtual const DtVrfSubordinateManager* subordinates() const;
465 
471  void addSubordinate(DtVrfObject* subordinateEntity);
472 
474  void removeSubordinate(DtVrfObject* subordinateEntity);
475 
477  virtual DtSharedVrfObjectReference leadEntity() const;
478 
480  virtual DtSharedVrfObjectReference firstSubordinate() const;
481 
483  virtual DtSharedVrfObjectReference lastSubordinate() const;
484 
486  virtual DtSharedVrfObjectReference firstHealthySubordinate() const;
487 
490 
491  virtual DtSimManager* simManager();
492  virtual const DtSimManager* simManager() const;
494 
497 
498  virtual DtPhysicalWorld* physicalWorld();
499  virtual const DtPhysicalWorld* physicalWorld() const;
501 
504  virtual void tick();
505 
510  virtual void timedTick();
511 
514  virtual void setMinTickPeriod(double minTickPeriod);
515 
517  virtual double minTickPeriod() const;
518 
520  virtual void setMinTickPeriodVariance(double minTickPeriodVariance);
521 
523  virtual double minTickPeriodVariance() const;
524 
528  virtual void setNextTickTime(double nextTickTime);
529 
531  virtual double nextTickTime() const;
532 
538  virtual double calculateNextTickTime() const;
539 
540  virtual bool createSubordinates();
541  virtual DtVrfSubordinateManager* vrfSubordinates();
542  virtual const DtVrfSubordinateManager* vrfSubordinates() const;
543 
544  virtual bool createProcessStateRepositoryManager();
549 
550  virtual const DtVrfProcessStateRepositoryManager*
551  systemProcessStateRepositoryManager() const;
552  virtual DtVrfProcessStateRepositoryManager* systemProcessStateRepositoryManager();
554 
557  virtual const DtTaitBryan& localOrientationWrtDatabase() const;
558  virtual void setLocalOrientationWrtDatabase(
559  const DtTaitBryan& localOrientation);
560 
565  virtual DtVrfWeaponPSR* firstWeaponPSR() const;
566 
571  virtual void processObjectGeometry(const DtList& vertices);
572  virtual void processObjectGeometry(const DtLocalVertexList& vertices);
573 
580  virtual void processObjectGeometry();
581 
582  virtual const DtVrfObjectParameters* vrfBaseParameters() const;
583 
584  virtual DtGroundInteractionPt* groundCenter();
585  virtual const DtGroundInteractionPt* groundCenter() const;
586 
587  virtual const DtVector& getPartAttachPoint(const int partType) const;
588 
603  virtual void place(const DtVector& location, bool* dataAvailable = 0,
604  bool requireAllData = false);
605 
620  virtual void place(const DtReal heading, bool* dataAvailable = 0,
621  bool requireAllData = false);
622 
635  virtual void place(const DtVector& location, const DtReal heading,
636  bool clampToGroundFlag = true, bool* dataAvailable = 0,
637  bool requireAllData = false);
638 
641  virtual void updatePositionFromModelVertices();
642  virtual void updateBVolFromModelVertices();
643 
644 
645  virtual DtReal mass() const;
646  virtual void setMass(const DtReal mass);
647 
649  virtual const DtArticulatedPartCollection* artPartList() const;
650 
654  virtual void createParts();
655 
656  virtual DtTime lastTimeFiredUpon() const;
657  virtual void setLastTimeFiredUpon(const DtTime time);
658 
659  virtual bool underFire() const;
660  virtual void setUnderFire(bool underFire);
661 
667  DtNoSuppression = 0,
668  DtSuppressed1 = 1,
669  DtSuppressed2 = 2,
670  DtSuppressed3 = 3
671  };
672  virtual suppressionLevels suppressionLevel() const;
673  virtual void setSuppressionLevel(const suppressionLevels l);
674  virtual bool isSuppressed() const;
676 
677  virtual DtDeadReckonTypes deadReckoningAlgorithm() const;
678  virtual void setDeadReckoningAlgorithm(
679  DtDeadReckonTypes deadReckoningAlgorithm);
680 
682 
683  virtual const DtThresholder& deadReckoningThresholder() const;
684  virtual void setDeadReckoningThresholder(
685  const DtThresholder& thresholder);
687 
690 
691  virtual const DtEntityIdentifier & occupyingObjectId() const;
692  virtual void setOccupyingObjectId(const DtEntityIdentifier & objId);
694 
697 
698  virtual void setEchelonId(const DtEchelonId& echelonId);
699  virtual DtEchelonId& echelonId();
700  virtual const DtEchelonId& echelonId() const;
702 
704 
705  virtual void setIsSubordinateOfForceLevel(bool yesNo);
706  virtual bool isSubordinateOfForceLevel() const;
708 
711  virtual void putData(std::string& fp, int indentLevel = 0);
712 
717  virtual void getSelf(DtlObjPtr args, const DtReaderWriter::SearchPaths& searchPaths,
718  const DtVariableBindingsList& variableBindings);
719 
721  virtual int nextTaskId();
722 
724  virtual int nextSuspendId();
725 
731 
732 
735  virtual int spawningTaskId(int subtaskId) const;
736 
737  virtual void addPendingSubtaskId(const DtSymbolString& componentName, int subtaskId);
738  virtual void addPendingSubtaskId(const DtSymbolString& componentName, int taskId, int subtaskId);
739  virtual bool findPendingSubtaskId(const DtSymbolString& componentName, int subtaskId);
740  virtual bool isSubtasked(const DtSymbolString& componentName) const;
741  virtual bool findPendingSubtaskId(const DtSymbolString& componentName, int taskId, int subtaskId);
742  virtual void removePendingSubtaskId(const DtSymbolString& componentName, int subtaskId);
743  virtual void removePendingSubtaskId(const DtSymbolString& componentName, int taskId, int subtaskId);
744  virtual void removeAllPendingSubtaskIds(const DtSymbolString& componentName);
745  virtual void removeAllPendingSubtaskIds(const DtSymbolString& componentName, int taskId);
746  virtual void printPendingSubtaskIds(const DtSymbolString& componentName) const;
747  virtual std::vector<int> currentPendingSubstaskIds(const DtSymbolString& componentName) const;
748  virtual std::vector<int> currentPendingSubstaskIds(const DtSymbolString& componentName, int taskId) const;
749  virtual DtSubtaskStatusEntry* pendingSubtaskStatus(const DtSymbolString& componentName, int subtaskId);
750  virtual DtSubtaskStatusEntry* pendingSubtaskStatus(const DtSymbolString& componentName, int taskId, int subtaskId);
752 
755  virtual DtTaskMessage* pendingSubtask(int subtaskId, DtString& controller) const;
756 
760  virtual bool taskedBySuperiorUponTaskComplete() const;
761 
762  virtual void setParentWasDestroyedWhenEmbarked(bool);
763  virtual bool parentWasDestroyedWhenEmbarked() const;
764 
765  virtual void detachFromParent();
766  virtual void attachToParent(DtSimObjectStateRepository* parent);
767  virtual void attachToParent(const DtUUID& parent);
768 
776  virtual void addAttachedTerrain(const DtUUID& parent);
777 
780  virtual void removeAttachedTerrain(const DtUUID& parent);
781 
784  Dt3dBoundingVolume* boundingVolume() const;
785 
789  DtVector localBoundingVolumeCenterPosition() const;
790 
795 
796  DtReal currentSpeed() const;
798 
803  DtReal forwardSpeed() const;
804 
806 
807  DtReal currentHeading() const;
808  void setCurrentHeading(const DtReal heading);
810 
813 
814  virtual void addPostInitFromParamsCallback(DtPostInitializeFromParametersCallbackFcn fcn,
815  void* usr);
816  virtual void removePostInitFromParamsCallback(DtPostInitializeFromParametersCallbackFcn fcn,
817  void* usr);
819 
821  virtual void restoreStateProperties();
822 
824  virtual void initStatePropertiesNotToBeRestored();
825 
827 
828  virtual DtRwProperties& stateProperties();
829  virtual const DtRwProperties& stateProperties() const;
831 
833 
834  virtual DtRwProperties& parameterProperties();
835  virtual const DtRwProperties& parameterProperties() const;
837 
838 protected:
839 
842  virtual void initializeNextTaskId();
843 
845  virtual void setOrientationRelativeToParent();
846 
847  virtual DtAttachedTerrain* createAttachedTerrain();
848 
852  virtual DtArticulatedPartStateRepository* createArtPartStateRepository(
853  DtVrfObject* vrfObject, const DtObjectType& objectType,
854  const DtString& rwName = DtString::nullString());
855 
856 public:
857 
859  //{@
860  virtual void addRangeItem(const DtRangeItem&);
861  virtual void removeRangeItem(int index);
862  virtual void setRangeItems(const DtRangeItems&);
863  const DtRangeItems& rangeItems() const;
864  DtRangeItems& rangeItems();
865  virtual void clearRangeItems();
867 
868  DtAttachedTerrain* terrainAttachedTo() const;
869 
870  virtual boost::tribool onTerrainSurface() const;
871 
876  virtual double sensorSignature(const DtSymbolString& sensorDomain) const;
877 
880  virtual std::list<DtSymbolString> sensorSignatureDomains() const;
881 
888 
889  virtual DtSensorContactInfoList& objectContactList();
890  virtual const DtSensorContactInfoList& objectContactList() const;
892 
895  virtual DtString stringFromExtendedData(const DtString&) const;
896 
897 protected:
900  virtual double baseSensorSignature(const DtSymbolString& sensorDomain) const;
901 
905  virtual double modifySensorSignature(const DtSymbolString& sensorDomain,
906  double baseSignature) const;
907 
910  virtual bool initSignatureEvaluators();
911 
914  void clearSignatureEvaluators();
915 
917  virtual bool createObjectResourceManager();
918 
920  virtual void invokePostInitFromParamsCallbacks();
921 
922 public:
924 
925  static void taskCompleteCallback(const DtVrfObjectMessage* msg, void* usr);
926  virtual void processTaskComplete(const DtVrfObjectMessage* msg);
928 
929  static DtVrfObjectStateRepository * creator(const DtString& name,
930  DtVrfObject* simObject, const DtObjectType& objectType,
931  DtVrfObjectParameters * parameters,
932  DtReaderWriterRegistry * parentRegistry);
933 
934  static DtVrfObjectStateRepository* isVrfObjectStateRepository(
935  DtSimObjectStateRepository* repository);
936 
937  static const DtVrfObjectStateRepository* isVrfObjectStateRepository(
938  const DtSimObjectStateRepository* repository);
939 
942 
943 protected:
944 
946  static bool visibilityFilter(const DtVrfObject * object, void * usr);
947 
948 protected:
949 
951 
954 
956 
959 
963 
967 
969 
971 
975 
979 
980  DtReal myMass;
981  DtDeadReckonTypes myDeadReckoningAlgorithm;
983 
984  DtEntityIdentifier myOccupyingObjectId;
985 
988  DtArticulatedPartCollection myArtPartList;
989 
992 
998 
1001 
1006 
1008 
1010 
1015 
1017 
1019 
1023 
1026 
1031 
1033 
1037 
1042 
1043 protected:
1044  //***** Important API change note
1046  //*****
1074 
1079 
1083 
1089 
1091 
1092  typedef std::list<DtSignatureModifierEvaluator*> DtSignatureModifierEvalList;
1093  typedef std::map<DtSymbolString, DtSignatureModifierEvalList*> DtSignatureModifierEvalMap;
1097 
1098  typedef tbb::concurrent_hash_map<unsigned int, double> DtSensorSignatureCacheMap;
1103 
1107 
1108  typedef std::pair<DtPostInitializeFromParametersCallbackFcn, void*> DtPostInitializeFromParametersInfo;
1109  typedef std::list<DtPostInitializeFromParametersInfo> DtPostInitializeFromParametersCallbackList;
1110 
1112 
1116  std::vector<DtRangeItem> myFixedRangeItems;
1117 
1124 
1126  std::vector<DtString> myStatePropertiesNotToBeRestored;
1127 
1129 
1132 
1135 
1136  std::set<DtArticulatedPartStateRepository*> myArtParts;
1137 };

Document ID: Generated on Mon Jul 4 01:00:18 EDT 2016 from SVN revision 166489
Copyright © 2005-2015 VT MÄK. All Rights Reserved (www.mak.com)