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"
25 #include "vrfutil/rwProperties.h"
28 #include "tbb/concurrent_hash_map.h"
29 #include "tbb/mutex.h"
30 #include <vrfutil/rwUUID.h>
31 
33 #include <vlpi/appearance.h>
34 #include <vlpi/artPartSpec.h>
35 #include <vlutil/vlString.h>
36 #include <vlpi/thresholder.h>
37 
39 #include <vlutil/vlConfig.h>
40 #include <map>
41 #include <list>
42 
43 #include "boost/logic/tribool.hpp"
44 
46 class DtVrfObject;
49 class DtSimManager;
51 class DtVrfWeaponPSR;
53 class DtRwAppearance;
54 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 
136  virtual void setJoystickMovementControlled(bool);
137  virtual bool joystickMovementControlled() const;
138 
143  virtual DtVrfStateRepositoryUserExtension* userExtension() const;
144 
147  virtual void restoreEntity();
148 
153  virtual void setExtendedData(const DtString& key, const DtString& value);
154  virtual void clearExtendedData();
155  virtual void removeExtendedData(const DtString& key);
156  virtual DtString extendedData(const DtString& key) const;
157  const ExtendedData& extendedDataMap() const
158  {
159  return myExtendedData;
160  }
161  virtual void setExtendedDataMap(const ExtendedData&);
162  virtual void setExtendedDataMap(const std::map<std::string, std::string>&);
163 
165  virtual void setupExtendedDataFromParameterData();
167 
171  virtual void setExtendedLabel(int, const DtString& value);
172  virtual void clearExtendedLabels();
173  virtual DtString extendedLabel(int index) const;
174  virtual ExtendedLabels extendedLabels() const;
175  virtual void setExtendedLabels(const ExtendedLabels&);
177 
180  virtual void addJoystickControls(const DtRwJoystickControls&);
181  virtual const JoystickControls& joystickControls() const;
183 
186  virtual void setActivity(const DtString&);
187  virtual DtString activity() const;
188 
199 
200  virtual const DtObjectResourceManager* objectResourceManager() const;
201  virtual DtObjectResourceManager* objectResourceManager();
203 
212 
213  virtual const DtSimResourceManager& oldResourceManager() const;
214  virtual DtSimResourceManager& oldResourceManager();
215 
217  virtual DtSimResource* oldLookupResource(const DtString & resourceName);
218  virtual const DtSimResource* oldLookupResource(const DtString & resourceName) const;
219 
222  virtual void oldAddResource(DtSimResource* resource);
223 
225  virtual void oldRemoveResource(DtSimResource* resource);
227 
228  virtual void restoreResourcesFromParameters();
229 
232 
233  virtual void setSOR(DtReal center, DtReal size);
234 
235  virtual DtReal SORSize() const;
236  virtual DtReal SORCenter() const;
237 
238  virtual const DtSimSector& SOR() const;
240 
243  virtual bool inSOR(const DtVrfObject* entity) const;
244 
245  virtual const DtString& engagementRules() const;
246  virtual void setEngagementRules(const DtString& engagementRules);
247 
249 
250  virtual void setRequestTaskNeeded(bool value);
251  virtual bool requestTaskNeeded() const;
253 
255 
256  virtual void setTasked(const DtSymbolString& componentName, bool tasked);
257  virtual void setTasked(const DtSymbolString& componentName, int taskID, bool tasked);
258  virtual bool tasked(const DtSymbolString& componentName) const;
260 
263  virtual bool isTasked() const;
264 
266  virtual void clearCurrentTaskMsg(const DtSymbolString& componentName);
267 
269  virtual void clearCurrentTaskMsg(const DtSymbolString& componentName, int taskId);
270 
272 
273  virtual void setCurrentTaskMsg(const DtSymbolString& componentName,
274  const DtTaskMessage & taskMsg);
275 
276  virtual void setCurrentTaskMsg(const DtSymbolString& componentName,
277  const DtTaskMessage & taskMsg, int taskId);
279 
281  virtual const DtTaskStatusList* taskStatusList() const;
282  virtual DtTaskStatusList* taskStatusList();
283  virtual DtSuspendedTaskStatusList* suspendedTaskStatusList();
284 
287  virtual DtTaskMessage* currentTaskMsg(const DtSymbolString& componentName) const;
288 
290  virtual DtTaskMessage* currentTaskMsg(const DtSymbolString& componentName, int taskId) const;
291 
293  virtual std::list<DtTaskMessage*> allCurrentTaskMsg(const DtSymbolString& componentName) const;
294 
295  virtual void putSelf(FILE* fp,
296  int indentLevel = 0,
297  bool writeUnspecified = false,
298  const DtFilename& path = DtReaderWriter::appPath());
299 
312  virtual bool placePoints(DtAttachedTerrain& attachedTerrain,
313  std::vector<DtGroundInteractionPt*> groundInteractionPts,
314  bool* terrainDataAvailable = 0);
315 
319  virtual void updateSupportPoints(const DtVector& newPosition,
320  const DtReal newHeading);
321 
324 
325  virtual void setIndependentlyTasked(bool value);
326  virtual bool independentlyTasked() const;
328 
331 
332  virtual bool processCompleteAttachment(DtVrfObject*);
333  static void objectAboutToBeRemovedCallback(DtVrfObject * vrfObject, void * usr);
334  virtual void processObjectAboutToBeRemovedCallback(DtVrfObject * vrfObject);
336 
338  static DtVrfObjectStateRepository* createRepository(const DtString & name,
339  const DtString & type, DtVrfObject* simObject,
340  const DtObjectType & objectType, DtVrfObjectParameters* parameters,
341  DtReaderWriterRegistry* parentRegistry = 0);
342 
343  static void addSimObjectStateRepositoryCreatorFcn(const DtString & type,
345 
350 
352  static void setFactory(DtSimObjectStateRepositoryFactory* factory);
354 
357 
358  virtual const DtVrfObjectParameters* parameterEntry() const;
359  virtual void setParameterEntry(DtVrfObjectParameters* parameterEntry);
361 
363  virtual const DtVrfObjectParameters* parameters() const;
364 
366  virtual DtVrfObjectParameters* modifiableParameters();
369  virtual void setupParameterInheritance();
370 
373 
374  virtual DtForceType forceType() const;
375  virtual void setForceType(DtForceType force);
377 
379  virtual bool createAttachments();
380 
382  void addPart(DtArticulatedPartStateRepository * part);
383  void removePart(DtArticulatedPartStateRepository * part);
384  DtArticulatedPartStateRepository * part(DtArtPartType partType);
385 
386  DtArticulatedPartStateRepository * findDescendantByType(
387  DtArtPartType childType);
388 
392 
393  virtual bool createAppearance();
394  virtual const DtAppearance* appearance() const;
395  virtual DtAppearance* appearance();
397 
401 
402  virtual void setCapabilities(int cap);
403  virtual int capabilities() const;
405 
408 
409  void setDestroyed(bool isDestroyed);
410  bool isDestroyed() const;
412 
420 
421  DtReal healthPct() const;
422  void setHealthPct(DtReal pct);
424 
427 
428  bool firePowerKilled() const;
429  void setFirePowerKilled(const bool firePowerKilled);
430 
431  bool mobilityKilled() const;
432  void setMobilityKilled(const bool mobilityKilled);
433 
434  bool flaming() const;
435  void setFlaming(const bool flaming);
436 
437  bool smoking() const;
438  void setSmoking(const bool smoking);
440 
444  bool isEntity() const;
445 
450  bool isLocal() const;
451 
456  bool isAggregate() const;
457 
460 
461  virtual DtVrfSubordinateManager* subordinates();
462  virtual const DtVrfSubordinateManager* subordinates() const;
464 
470  void addSubordinate(DtVrfObject* subordinateEntity);
471 
473  void removeSubordinate(DtVrfObject* subordinateEntity);
474 
476  virtual DtSharedVrfObjectReference leadEntity() const;
477 
479  virtual DtSharedVrfObjectReference firstSubordinate() const;
480 
482  virtual DtSharedVrfObjectReference lastSubordinate() const;
483 
485  virtual DtSharedVrfObjectReference firstHealthySubordinate() const;
486 
489 
490  virtual DtSimManager* simManager();
491  virtual const DtSimManager* simManager() const;
493 
496 
497  virtual DtPhysicalWorld* physicalWorld();
498  virtual const DtPhysicalWorld* physicalWorld() const;
500 
503  virtual void tick();
504 
509  virtual void timedTick();
510 
513  virtual void setMinTickPeriod(double minTickPeriod);
514 
516  virtual double minTickPeriod() const;
517 
519  virtual void setMinTickPeriodVariance(double minTickPeriodVariance);
520 
522  virtual double minTickPeriodVariance() const;
523 
527  virtual void setNextTickTime(double nextTickTime);
528 
530  virtual double nextTickTime() const;
531 
537  virtual double calculateNextTickTime() const;
538 
539  virtual bool createSubordinates();
540  virtual DtVrfSubordinateManager* vrfSubordinates();
541  virtual const DtVrfSubordinateManager* vrfSubordinates() const;
542 
543  virtual bool createProcessStateRepositoryManager();
548 
549  virtual const DtVrfProcessStateRepositoryManager*
550  systemProcessStateRepositoryManager() const;
551  virtual DtVrfProcessStateRepositoryManager* systemProcessStateRepositoryManager();
553 
556  virtual const DtTaitBryan& localOrientationWrtDatabase() const;
557  virtual void setLocalOrientationWrtDatabase(
558  const DtTaitBryan& localOrientation);
559 
564  virtual DtVrfWeaponPSR* firstWeaponPSR() const;
565 
570  virtual void processObjectGeometry(const DtList& vertices);
571  virtual void processObjectGeometry(const DtLocalVertexList& vertices);
572 
579  virtual void processObjectGeometry();
580 
581  virtual const DtVrfObjectParameters* vrfBaseParameters() const;
582 
583  virtual DtGroundInteractionPt* groundCenter();
584  virtual const DtGroundInteractionPt* groundCenter() const;
585 
586  virtual const DtVector& getPartAttachPoint(const int partType) const;
587 
602  virtual void place(const DtVector& location, bool* dataAvailable = 0,
603  bool requireAllData = false);
604 
619  virtual void place(const DtReal heading, bool* dataAvailable = 0,
620  bool requireAllData = false);
621 
634  virtual void place(const DtVector& location, const DtReal heading,
635  bool clampToGroundFlag = true, bool* dataAvailable = 0,
636  bool requireAllData = false);
637 
640  virtual void updatePositionFromModelVertices();
641  virtual void updateBVolFromModelVertices();
642 
643 
644  virtual DtReal mass() const;
645  virtual void setMass(const DtReal mass);
646 
648  virtual const DtArticulatedPartCollection* artPartList() const;
649 
653  virtual void createParts();
654 
655  virtual DtTime lastTimeFiredUpon() const;
656  virtual void setLastTimeFiredUpon(const DtTime time);
657 
658  virtual bool underFire() const;
659  virtual void setUnderFire(bool underFire);
660 
666  DtNoSuppression = 0,
667  DtSuppressed1 = 1,
668  DtSuppressed2 = 2,
669  DtSuppressed3 = 3
670  };
671  virtual suppressionLevels suppressionLevel() const;
672  virtual void setSuppressionLevel(const suppressionLevels l);
673  virtual bool isSuppressed() const;
675 
676  virtual DtDeadReckonTypes deadReckoningAlgorithm() const;
677  virtual void setDeadReckoningAlgorithm(
678  DtDeadReckonTypes deadReckoningAlgorithm);
679 
681 
682  virtual const DtThresholder& deadReckoningThresholder() const;
683  virtual void setDeadReckoningThresholder(
684  const DtThresholder& thresholder);
686 
689 
690  virtual const DtEntityIdentifier & occupyingObjectId() const;
691  virtual void setOccupyingObjectId(const DtEntityIdentifier & objId);
693 
696 
697  virtual void setEchelonId(const DtEchelonId& echelonId);
698  virtual DtEchelonId& echelonId();
699  virtual const DtEchelonId& echelonId() const;
701 
703 
704  virtual void setIsSubordinateOfForceLevel(bool yesNo);
705  virtual bool isSubordinateOfForceLevel() const;
707 
710  virtual void putData(FILE *fp, int indentLevel = 0);
711 
716  virtual void getSelf(DtlObjPtr args, const DtReaderWriter::SearchPaths& searchPaths,
717  const DtVariableBindingsList& variableBindings);
718 
720  virtual int nextTaskId();
721 
723  virtual int nextSuspendId();
724 
730 
731 
734  virtual int spawningTaskId(int subtaskId) const;
735 
736  virtual void addPendingSubtaskId(const DtSymbolString& componentName, int subtaskId);
737  virtual void addPendingSubtaskId(const DtSymbolString& componentName, int taskId, int subtaskId);
738  virtual bool findPendingSubtaskId(const DtSymbolString& componentName, int subtaskId);
739  virtual bool isSubtasked(const DtSymbolString& componentName) const;
740  virtual bool findPendingSubtaskId(const DtSymbolString& componentName, int taskId, int subtaskId);
741  virtual void removePendingSubtaskId(const DtSymbolString& componentName, int subtaskId);
742  virtual void removePendingSubtaskId(const DtSymbolString& componentName, int taskId, int subtaskId);
743  virtual void removeAllPendingSubtaskIds(const DtSymbolString& componentName);
744  virtual void removeAllPendingSubtaskIds(const DtSymbolString& componentName, int taskId);
745  virtual void printPendingSubtaskIds(const DtSymbolString& componentName) const;
746  virtual std::vector<int> currentPendingSubstaskIds(const DtSymbolString& componentName) const;
747  virtual std::vector<int> currentPendingSubstaskIds(const DtSymbolString& componentName, int taskId) const;
748  virtual DtSubtaskStatusEntry* pendingSubtaskStatus(const DtSymbolString& componentName, int subtaskId);
749  virtual DtSubtaskStatusEntry* pendingSubtaskStatus(const DtSymbolString& componentName, int taskId, int subtaskId);
751 
754  virtual DtTaskMessage* pendingSubtask(int subtaskId, DtString& controller) const;
755 
759  virtual bool taskedBySuperiorUponTaskComplete() const;
760 
761  virtual void setParentWasDestroyedWhenEmbarked(bool);
762  virtual bool parentWasDestroyedWhenEmbarked() const;
763 
764  virtual void detachFromParent();
765  virtual void attachToParent(DtSimObjectStateRepository* parent);
766  virtual void attachToParent(const DtUUID& parent);
767 
775  virtual void addAttachedTerrain(const DtUUID& parent);
776 
779  virtual void removeAttachedTerrain(const DtUUID& parent);
780 
783  Dt3dBoundingVolume* boundingVolume() const;
784 
788  DtVector localBoundingVolumeCenterPosition() const;
789 
794 
795  DtReal currentSpeed() const;
797 
802  DtReal forwardSpeed() const;
803 
805 
806  DtReal currentHeading() const;
807  void setCurrentHeading(const DtReal heading);
809 
812 
813  virtual void addPostInitFromParamsCallback(DtPostInitializeFromParametersCallbackFcn fcn,
814  void* usr);
815  virtual void removePostInitFromParamsCallback(DtPostInitializeFromParametersCallbackFcn fcn,
816  void* usr);
818 
820  virtual void restoreStateProperties();
821 
823  virtual void initStatePropertiesNotToBeRestored();
824 
826 
827  virtual DtRwProperties& stateProperties();
828  virtual const DtRwProperties& stateProperties() const;
830 
832 
833  virtual DtRwProperties& parameterProperties();
834  virtual const DtRwProperties& parameterProperties() const;
836 
837 protected:
838 
841  virtual void initializeNextTaskId();
842 
844  virtual void setOrientationRelativeToParent();
845 
846  virtual DtAttachedTerrain* createAttachedTerrain();
847 
851  virtual DtArticulatedPartStateRepository* createArtPartStateRepository(
852  DtVrfObject* vrfObject, const DtObjectType& objectType,
853  const DtString& rwName = DtString::nullString());
854 
855 public:
856 
858  //{@
859  virtual void addRangeItem(const DtRangeItem&);
860  virtual void removeRangeItem(int index);
861  virtual void setRangeItems(const DtRangeItems&);
862  const DtRangeItems& rangeItems() const;
863  DtRangeItems& rangeItems();
864  virtual void clearRangeItems();
866 
867  DtAttachedTerrain* terrainAttachedTo() const;
868 
869  virtual boost::tribool onTerrainSurface() const;
870 
875  virtual double sensorSignature(const DtSymbolString& sensorDomain) const;
876 
879  virtual std::list<DtSymbolString> sensorSignatureDomains() const;
880 
887 
888  virtual DtSensorContactInfoList& objectContactList();
889  virtual const DtSensorContactInfoList& objectContactList() const;
891 
892 protected:
895  virtual double baseSensorSignature(const DtSymbolString& sensorDomain) const;
896 
900  virtual double modifySensorSignature(const DtSymbolString& sensorDomain,
901  double baseSignature) const;
902 
905  virtual bool initSignatureEvaluators();
906 
909  void clearSignatureEvaluators();
910 
912  virtual bool createObjectResourceManager();
913 
915  virtual void invokePostInitFromParamsCallbacks();
916 
917 public:
919 
920  static void taskCompleteCallback(const DtVrfObjectMessage* msg, void* usr);
921  virtual void processTaskComplete(const DtVrfObjectMessage* msg);
923 
924  static DtVrfObjectStateRepository * creator(const DtString& name,
925  DtVrfObject* simObject, const DtObjectType& objectType,
926  DtVrfObjectParameters * parameters,
927  DtReaderWriterRegistry * parentRegistry);
928 
929  static DtVrfObjectStateRepository* isVrfObjectStateRepository(
930  DtSimObjectStateRepository* repository);
931 
932  static const DtVrfObjectStateRepository* isVrfObjectStateRepository(
933  const DtSimObjectStateRepository* repository);
934 
937 
938 protected:
939 
941  static bool visibilityFilter(const DtVrfObject * object, void * usr);
942 
943 protected:
944 
946 
949 
951 
954 
958 
962 
964 
966 
970 
974 
975  DtReal myMass;
976  DtDeadReckonTypes myDeadReckoningAlgorithm;
978 
979  DtEntityIdentifier myOccupyingObjectId;
980 
983  DtArticulatedPartCollection myArtPartList;
984 
987 
993 
996 
1001 
1003 
1005 
1010 
1012 
1014 
1018 
1021 
1026 
1028 
1032 
1037 
1038 protected:
1039  //***** Important API change note
1041  //*****
1069 
1074 
1078 
1084 
1086 
1087  typedef std::list<DtSignatureModifierEvaluator*> DtSignatureModifierEvalList;
1088  typedef std::map<DtSymbolString, DtSignatureModifierEvalList*> DtSignatureModifierEvalMap;
1092 
1093  typedef tbb::concurrent_hash_map<unsigned int, double> DtSensorSignatureCacheMap;
1098 
1102 
1103  typedef std::pair<DtPostInitializeFromParametersCallbackFcn, void*> DtPostInitializeFromParametersInfo;
1104  typedef std::list<DtPostInitializeFromParametersInfo> DtPostInitializeFromParametersCallbackList;
1105 
1107 
1111  std::vector<DtRangeItem> myFixedRangeItems;
1112 
1118 
1120  std::vector<DtString> myStatePropertiesNotToBeRestored;
1121 
1123 
1126 
1129 };

Document ID: Generated on Tue Mar 8 22:13:38 EST 2016 from SVN revision 162938
Copyright © 2005-2015 VT MÄK. All Rights Reserved (www.mak.com)