VR-Forces 4.1 Class Documentation
vrfObjSR.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2003 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
9 #pragma once
10 
12 #include "vrfobjcore/simObjSR.h"
13 #include "vrfobjcore/groundInter.h"
14 #include "vrfobjparam/simSector.h"
15 #include "vrfutil/rsrcMgr.h"
16 #include <vrfExtProtocol/objType.h>
17 #include "vrfutil/echelonId.h"
18 #include "vrfutil/rwInt.h"
25 
27 #include <vlpi/appearance.h>
28 #include <vlpi/apSpec.h>
29 #include <vlutil/vlString.h>
30 #include <vlpi/thresholder.h>
31 
33 #include <vlutil/vlConfig.h>
34 #include <map>
35 #include <list>
36 
38 class DtVrfObject;
41 class DtSimManager;
43 class DtVrfWeaponPSR;
45 class DtRwAppearance;
46 class DtVrfObject;
48 class DtSimManager;
49 class DtTaskMessage;
58 class DtVrfObjectMessage;
59 
60 const int DtEntityVisibilityTest = 1;
63 
64 typedef bool (*DtVisibilityTest)(double rangeSquared, const DtEntityIdentifier& eyeKey,
65  const DtVector& localEyePoint, const DtVector& localEndPoint, const DtVrfObjectStateRepository* sr);
66 
70  void* usr);
71 
78 {
79 protected:
82 
83 public:
84 
87  const DtObjectType& objectType, DtVrfObjectParameters* parameters,
88  const DtString& rwName = DtString::nullString(),
89  DtReaderWriterRegistry* parentRegistry = 0);
90 
93  const DtString& rwName = DtString::nullString(),
94  DtReaderWriterRegistry* parentRegistry = 0);
95 
98  const DtVrfObjectStateRepository& orig);
99 
101  virtual ~DtVrfObjectStateRepository();
102 
105  const DtString& rwName = DtString::nullString(),
106  DtReaderWriterRegistry* parentRegistry = 0) const;
107 
108  virtual DtString type() const;
109 
111  virtual const int objectStateRepositorySubType() const;
112 
114  virtual const int vrfObjectStateRepositorySubType() const;
115 
116  virtual bool init();
117 
118  virtual bool createParameters();
119  virtual void initializeFromParameters();
120  virtual const DtVrfObjectParameters* vrfParameters() const;
121 
126  virtual DtVrfStateRepositoryUserExtension* userExtension() const;
127 
130  virtual void restoreEntity();
131 
142 
143  virtual const DtObjectResourceManager* objectResourceManager() const;
144  virtual DtObjectResourceManager* objectResourceManager();
146 
155 
156  virtual const DtSimResourceManager& oldResourceManager() const;
157  virtual DtSimResourceManager& oldResourceManager();
158 
160  virtual DtSimResource* oldLookupResource(const DtString & resourceName);
161  virtual const DtSimResource* oldLookupResource(const DtString & resourceName) const;
162 
165  virtual void oldAddResource(DtSimResource* resource);
166 
168  virtual void oldRemoveResource(DtSimResource* resource);
170 
171  virtual void restoreResourcesFromParameters();
172 
175 
176  virtual void setSOR(DtReal center, DtReal size);
177 
178  virtual DtReal SORSize() const;
179  virtual DtReal SORCenter() const;
180 
181  virtual const DtSimSector& SOR() const;
183 
186  virtual bool inSOR(const DtVrfObject* entity) const;
187 
188  virtual const DtString& engagementRules() const;
189  virtual void setEngagementRules(const DtString& engagementRules);
190 
192 
193  virtual void setRequestTaskNeeded(bool value);
194  virtual bool requestTaskNeeded() const;
196 
198 
199  virtual void setTasked(const DtString& componentName, bool tasked);
200  virtual bool tasked(const DtString& componentName) const;
202 
205  virtual bool isTasked() const;
206 
208  virtual void clearCurrentTaskMsg(const DtString& componentName);
209 
211  virtual void clearCurrentTaskMsg(const DtString& componentName, int taskId);
212 
214 
215  virtual void setCurrentTaskMsg(const DtString& componentName,
216  const DtTaskMessage & taskMsg);
217 
218  virtual void setCurrentTaskMsg(const DtString& componentName,
219  const DtTaskMessage & taskMsg, int taskId);
221 
223  virtual const DtTaskStatusList* taskStatusList() const;
224 
227  virtual DtTaskMessage* currentTaskMsg(const DtString& componentName) const;
228 
230  virtual DtTaskMessage* currentTaskMsg(const DtString& componentName, int taskId) const;
231 
233  virtual std::list<DtTaskMessage*> allCurrentTaskMsg(const DtString& componentName) const;
234 
235  virtual void putSelf(FILE* fp,
236  int indentLevel = 0,
237  bool writeUnspecified = false,
238  const DtFilename& path = DtReaderWriter::appPath());
239 
252  virtual bool placePoints(DtAttachedTerrain& attachedTerrain,
253  std::vector<DtGroundInteractionPt*> groundInteractionPts,
254  bool* terrainDataAvailable = 0);
255 
259  virtual void updateSupportPoints(const DtVector& newPosition,
260  const DtReal newHeading);
261 
264 
265  virtual void setIndependentlyTasked(bool value);
266  virtual bool independentlyTasked() const;
268 
271 
272  static void objectAddedCallback(DtVrfObject * vrfObject, void * usr);
273  virtual void processObjectAddedCallback(DtVrfObject * vrfObject);
274  static void objectAboutToBeRemovedCallback(DtVrfObject * vrfObject, void * usr);
275  virtual void processObjectAboutToBeRemovedCallback(DtVrfObject * vrfObject);
277 
279  static DtVrfObjectStateRepository* createRepository(const DtString & name,
280  const DtString & type, DtVrfObject* simObject,
281  const DtObjectType & objectType, DtVrfObjectParameters* parameters,
282  DtReaderWriterRegistry* parentRegistry = 0);
283 
284  static void addSimObjectStateRepositoryCreatorFcn(const DtString & type,
286 
291 
293  static void setFactory(DtSimObjectStateRepositoryFactory* factory);
295 
298 
299  virtual const DtVrfObjectParameters* parameterEntry() const;
300  virtual void setParameterEntry(DtVrfObjectParameters* parameterEntry);
302 
304  virtual const DtVrfObjectParameters* parameters() const;
305 
307  virtual DtVrfObjectParameters* modifiableParameters();
310  virtual void setupParameterInheritance();
311 
314 
315  virtual DtForceType forceType() const;
316  virtual void setForceType(DtForceType force);
318 
320  virtual bool createAttachments();
321 
323  void addPart(DtArticulatedPartStateRepository * part);
324  void removePart(DtArticulatedPartStateRepository * part);
325  DtArticulatedPartStateRepository * part(DtArtPartType partType);
326 
327  DtArticulatedPartStateRepository * findDescendantByType(
328  DtArtPartType childType);
329 
333 
334  virtual bool createAppearance();
335  virtual const DtAppearance* appearance() const;
336  virtual DtAppearance* appearance();
338 
342 
343  virtual void setCapabilities(int cap);
344  virtual int capabilities() const;
346 
349 
350  void setDestroyed(bool isDestroyed);
351  bool isDestroyed() const;
353 
361 
362  DtReal healthPct() const;
363  void setHealthPct(DtReal pct);
365 
368 
369  bool firePowerKilled() const;
370  void setFirePowerKilled(const bool firePowerKilled);
371 
372  bool mobilityKilled() const;
373  void setMobilityKilled(const bool mobilityKilled);
374 
375  bool flaming() const;
376  void setFlaming(const bool flaming);
377 
378  bool smoking() const;
379  void setSmoking(const bool smoking);
381 
385  bool isEntity() const;
386 
390  bool isLocal() const;
391 
396  bool isAggregate() const;
397 
400 
401  virtual DtVrfSubordinateManager* subordinates();
402  virtual const DtVrfSubordinateManager* subordinates() const;
404 
410  void addSubordinate(DtVrfObject* subordinateEntity);
411 
413  void removeSubordinate(DtVrfObject* subordinateEntity);
414 
416  virtual DtVrfObject* leadEntity() const;
417 
419  virtual const DtString& firstSubordinate() const;
420 
422  virtual const DtString& lastSubordinate() const;
423 
425  virtual const DtString& firstHealthySubordinate() const;
426 
429 
430  virtual DtSimManager* simManager();
431  virtual const DtSimManager* simManager() const;
433 
436 
437  virtual DtPhysicalWorld* physicalWorld();
438  virtual const DtPhysicalWorld* physicalWorld() const;
440 
443  virtual void tick();
444 
449  virtual void timedTick();
450 
453  virtual void setMinTickPeriod(double minTickPeriod);
454 
456  virtual double minTickPeriod() const;
457 
459  virtual void setMinTickPeriodVariance(double minTickPeriodVariance);
460 
462  virtual double minTickPeriodVariance() const;
463 
467  virtual void setNextTickTime(double nextTickTime);
468 
470  virtual double nextTickTime() const;
471 
477  virtual double calculateNextTickTime() const;
478 
479  virtual bool createSubordinates();
480  virtual DtVrfSubordinateManager* vrfSubordinates();
481  virtual const DtVrfSubordinateManager* vrfSubordinates() const;
482 
483  virtual bool createProcessStateRepositoryManager();
488 
489  virtual const DtVrfProcessStateRepositoryManager*
490  systemProcessStateRepositoryManager() const;
491  virtual DtVrfProcessStateRepositoryManager* systemProcessStateRepositoryManager();
493 
496  virtual const DtTaitBryan& localOrientationWrtDatabase() const;
497  virtual void setLocalOrientationWrtDatabase(
498  const DtTaitBryan& localOrientation);
499 
504  virtual DtVrfWeaponPSR* firstWeaponPSR() const;
505 
510  virtual void processObjectGeometry(const DtList& vertices);
511  virtual void processObjectGeometry(const DtLocalVertexList& vertices);
512 
519  virtual void processObjectGeometry();
520 
521  virtual const DtVrfObjectParameters* vrfBaseParameters() const;
522 
523  virtual DtGroundInteractionPt* groundCenter();
524  virtual const DtGroundInteractionPt* groundCenter() const;
525 
526  virtual const DtVector& getPartAttachPoint(const int partType) const;
527 
542  virtual void place(const DtVector& location, bool* dataAvailable = 0,
543  bool requireAllData = false);
544 
559  virtual void place(const DtReal heading, bool* dataAvailable = 0,
560  bool requireAllData = false);
561 
574  virtual void place(const DtVector& location, const DtReal heading,
575  bool clampToGroundFlag = true, bool* dataAvailable = 0,
576  bool requireAllData = false);
577 
580  virtual void updatePositionFromModelVertices();
581  virtual void updateBVolFromModelVertices();
582 
583 
584  virtual DtReal mass() const;
585  virtual void setMass(const DtReal mass);
586 
588  virtual const DtArticulatedPartCollection* artPartList() const;
589 
593  virtual void createParts();
594 
595  virtual DtTime lastTimeFiredUpon() const;
596  virtual void setLastTimeFiredUpon(const DtTime time);
597 
598  virtual bool underFire() const;
599  virtual void setUnderFire(bool underFire);
600 
601  virtual DtDeadReckonTypes deadReckoningAlgorithm() const;
602  virtual void setDeadReckoningAlgorithm(
603  DtDeadReckonTypes deadReckoningAlgorithm);
604 
606 
607  virtual const DtThresholder& deadReckoningThresholder() const;
608  virtual void setDeadReckoningThresholder(
609  const DtThresholder& thresholder);
611 
614 
615  virtual const DtEntityIdentifier & occupyingObjectId() const;
616  virtual void setOccupyingObjectId(const DtEntityIdentifier & objId);
618 
621 
622  virtual void setEchelonId(const DtEchelonId& echelonId);
623  virtual DtEchelonId& echelonId();
624  virtual const DtEchelonId& echelonId() const;
626 
628 
629  virtual void setIsSubordinateOfForceLevel(bool yesNo);
630  virtual bool isSubordinateOfForceLevel() const;
632 
635  virtual void putData(FILE *fp, int indentLevel = 0);
636 
641  virtual void getSelf(DtlObjPtr args, const DtFilename& searchPath,
642  const DtVariableBindingsList& variableBindings);
643 
645  virtual int nextTaskId();
646 
652 
653  virtual void addPendingSubtaskId(const DtString& componentName, int subtaskId);
654  virtual void addPendingSubtaskId(const DtString& componentName, int taskId, int subtaskId);
655  virtual bool findPendingSubtaskId(const DtString& componentName, int subtaskId);
656  virtual bool findPendingSubtaskId(const DtString& componentName, int taskId, int subtaskId);
657  virtual void removePendingSubtaskId(const DtString& componentName, int subtaskId);
658  virtual void removePendingSubtaskId(const DtString& componentName, int taskId, int subtaskId);
659  virtual void removeAllPendingSubtaskIds(const DtString& componentName);
660  virtual void removeAllPendingSubtaskIds(const DtString& componentName, int taskId);
661  virtual void printPendingSubtaskIds(const DtString& componentName) const;
662  virtual std::vector<int> currentPendingSubstaskIds(const DtString& componentName) const;
663  virtual std::vector<int> currentPendingSubstaskIds(const DtString& componentName, int taskId) const;
664  virtual DtSubtaskStatusEntry* pendingSubtaskStatus(const DtString& componentName, int subtaskId);
665  virtual DtSubtaskStatusEntry* pendingSubtaskStatus(const DtString& componentName, int taskId, int subtaskId);
667 
670  virtual DtTaskMessage* pendingSubtask(int subtaskId, DtString& controller) const;
671 
675  virtual bool taskedBySuperiorUponTaskComplete() const;
676 
677  virtual void setParentWasDestroyedWhenEmbarked(bool);
678  virtual bool parentWasDestroyedWhenEmbarked() const;
679 
680  virtual void detachFromParent();
681  virtual void attachToParent(DtSimObjectStateRepository* parent);
682  virtual void attachToParent(DtString parent);
683 
691  virtual void addAttachedTerrain(const DtString& parent);
692 
695  virtual void removeAttachedTerrain(const DtString& parent);
696 
699  Dt3dBoundingVolume* boundingVolume() const;
700 
705 
706  DtReal currentSpeed() const;
708 
713  DtReal forwardSpeed() const;
714 
716 
717  DtReal currentHeading() const;
718  void setCurrentHeading(const DtReal heading);
720 
723 
724  virtual void addPostInitFromParamsCallback(DtPostInitializeFromParametersCallbackFcn fcn,
725  void* usr);
726  virtual void removePostInitFromParamsCallback(DtPostInitializeFromParametersCallbackFcn fcn,
727  void* usr);
729 
730 protected:
731 
734  virtual void initializeNextTaskId();
735 
737  virtual void setOrientationRelativeToParent();
738 
739  virtual DtAttachedTerrain* createAttachedTerrain();
740 
744  virtual DtArticulatedPartStateRepository* createArtPartStateRepository(
745  DtVrfObject* vrfObject, const DtObjectType& objectType,
746  const DtString& rwName = DtString::nullString());
747 
748 public:
749 
751  //{@
752  virtual void addRangeItem(const DtRangeItem&);
753  virtual void removeRangeItem(int index);
754  virtual void setRangeItems(const DtRangeItems&);
755  const DtRangeItems& rangeItems() const;
756  DtRangeItems& rangeItems();
757  virtual void clearRangeItems();
759 
760  DtAttachedTerrain* terrainAttachedTo() const;
761 
766  virtual double sensorSignature(const DtSymbolString& sensorDomain) const;
767 
770  virtual std::list<DtSymbolString> sensorSignatureDomains() const;
771 
778 
779  virtual DtSensorContactInfoList& objectContactList();
780  virtual const DtSensorContactInfoList& objectContactList() const;
782 
783 protected:
786  virtual double baseSensorSignature(const DtSymbolString& sensorDomain) const;
787 
791  virtual double modifySensorSignature(const DtSymbolString& sensorDomain,
792  double baseSignature) const;
793 
796  virtual bool initSignatureEvaluators();
797 
800  void clearSignatureEvaluators();
801 
803  virtual bool createObjectResourceManager();
804 
806  virtual void invokePostInitFromParamsCallbacks();
807 
808 public:
810 
811  static void taskCompleteCallback(const DtVrfObjectMessage* msg, void* usr);
812  virtual void processTaskComplete(const DtVrfObjectMessage* msg);
814 
815  static DtVrfObjectStateRepository * creator(const DtString& name,
816  DtVrfObject* simObject, const DtObjectType& objectType,
817  DtVrfObjectParameters * parameters,
818  DtReaderWriterRegistry * parentRegistry);
819 
820  static DtVrfObjectStateRepository* isVrfObjectStateRepository(
821  DtSimObjectStateRepository* repository);
822 
823  static const DtVrfObjectStateRepository* isVrfObjectStateRepository(
824  const DtSimObjectStateRepository* repository);
825 
828 
829 protected:
830 
832  static bool visibilityFilter(const DtVrfObject * object, void * usr);
833 
834 protected:
835 
837 
840 
842 
845 
849 
853 
855 
857 
861 
862  DtReal myMass;
863  DtDeadReckonTypes myDeadReckoningAlgorithm;
865 
866  DtEntityIdentifier myOccupyingObjectId;
867 
870  DtArticulatedPartCollection myArtPartList;
871 
874 
880 
883 
888 
890 
892 
897 
899 
901 
905 
908 
913 
916 
921 
922 protected:
923  //***** Important API change note
925  //*****
953 
958 
962 
968 
970 
971  typedef std::list<DtSignatureModifierEvaluator*> DtSignatureModifierEvalList;
972  typedef std::map<DtSymbolString, DtSignatureModifierEvalList*> DtSignatureModifierEvalMap;
976 
977  typedef std::map<DtSymbolString, double> DtSensorSignatureCacheMap;
982 
986 
987  typedef std::pair<DtPostInitializeFromParametersCallbackFcn, void*> DtPostInitializeFromParametersInfo;
988  typedef std::list<DtPostInitializeFromParametersInfo> DtPostInitializeFromParametersCallbackList;
989 
991 
995 };

Document ID: Generated on Tue Jan 29 18:21:16 EST 2013 from SVN revision 123193
Copyright © 2005-2013 VT MÄK Inc. All Rights Reserved (www.mak.com)