VR-Forces 4.2 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"
24 #include "vrfExtProtocol/rangeItem.h"
26 
28 #include <vlpi/appearance.h>
29 #include <vlpi/apSpec.h>
30 #include <vlutil/vlString.h>
31 #include <vlpi/thresholder.h>
32 
34 #include <vlutil/vlConfig.h>
35 #include <map>
36 #include <list>
37 
39 class DtVrfObject;
42 class DtSimManager;
44 class DtVrfWeaponPSR;
46 class DtRwAppearance;
47 class DtVrfObject;
49 class DtSimManager;
50 class DtTaskMessage;
59 class DtVrfObjectMessage;
60 
61 const int DtEntityVisibilityTest = 1;
64 
65 typedef bool (*DtVisibilityTest)(double rangeSquared, const DtEntityIdentifier& eyeKey,
66  const DtVector& localEyePoint, const DtVector& localEndPoint, const DtVrfObjectStateRepository* sr);
67 
71  void* usr);
72 
79 {
80 protected:
83 
84 public:
85 
88  const DtObjectType& objectType, DtVrfObjectParameters* parameters,
89  const DtString& rwName = DtString::nullString(),
90  DtReaderWriterRegistry* parentRegistry = 0);
91 
94  const DtString& rwName = DtString::nullString(),
95  DtReaderWriterRegistry* parentRegistry = 0);
96 
99  const DtVrfObjectStateRepository& orig);
100 
102  virtual ~DtVrfObjectStateRepository();
103 
106  const DtString& rwName = DtString::nullString(),
107  DtReaderWriterRegistry* parentRegistry = 0) const;
108 
109  virtual DtString type() const;
110 
112  virtual const int objectStateRepositorySubType() const;
113 
115  virtual const int vrfObjectStateRepositorySubType() const;
116 
117  virtual bool init();
118 
119  virtual bool createParameters();
120  virtual void initializeFromParameters();
121  virtual const DtVrfObjectParameters* vrfParameters() const;
122 
127  virtual DtVrfStateRepositoryUserExtension* userExtension() const;
128 
131  virtual void restoreEntity();
132 
143 
144  virtual const DtObjectResourceManager* objectResourceManager() const;
145  virtual DtObjectResourceManager* objectResourceManager();
147 
156 
157  virtual const DtSimResourceManager& oldResourceManager() const;
158  virtual DtSimResourceManager& oldResourceManager();
159 
161  virtual DtSimResource* oldLookupResource(const DtString & resourceName);
162  virtual const DtSimResource* oldLookupResource(const DtString & resourceName) const;
163 
166  virtual void oldAddResource(DtSimResource* resource);
167 
169  virtual void oldRemoveResource(DtSimResource* resource);
171 
172  virtual void restoreResourcesFromParameters();
173 
176 
177  virtual void setSOR(DtReal center, DtReal size);
178 
179  virtual DtReal SORSize() const;
180  virtual DtReal SORCenter() const;
181 
182  virtual const DtSimSector& SOR() const;
184 
187  virtual bool inSOR(const DtVrfObject* entity) const;
188 
189  virtual const DtString& engagementRules() const;
190  virtual void setEngagementRules(const DtString& engagementRules);
191 
193 
194  virtual void setRequestTaskNeeded(bool value);
195  virtual bool requestTaskNeeded() const;
197 
199 
200  virtual void setTasked(const DtString& componentName, bool tasked);
201  virtual void setTasked(const DtString& componentName, int taskID, bool tasked);
202  virtual bool tasked(const DtString& componentName) const;
204 
207  virtual bool isTasked() const;
208 
210  virtual void clearCurrentTaskMsg(const DtString& componentName);
211 
213  virtual void clearCurrentTaskMsg(const DtString& componentName, int taskId);
214 
216 
217  virtual void setCurrentTaskMsg(const DtString& componentName,
218  const DtTaskMessage & taskMsg);
219 
220  virtual void setCurrentTaskMsg(const DtString& componentName,
221  const DtTaskMessage & taskMsg, int taskId);
223 
225  virtual const DtTaskStatusList* taskStatusList() const;
226  virtual DtTaskStatusList* taskStatusList();
227  virtual DtSuspendedTaskStatusList* suspendedTaskStatusList();
228 
231  virtual DtTaskMessage* currentTaskMsg(const DtString& componentName) const;
232 
234  virtual DtTaskMessage* currentTaskMsg(const DtString& componentName, int taskId) const;
235 
237  virtual std::list<DtTaskMessage*> allCurrentTaskMsg(const DtString& componentName) const;
238 
239  virtual void putSelf(FILE* fp,
240  int indentLevel = 0,
241  bool writeUnspecified = false,
242  const DtFilename& path = DtReaderWriter::appPath());
243 
256  virtual bool placePoints(DtAttachedTerrain& attachedTerrain,
257  std::vector<DtGroundInteractionPt*> groundInteractionPts,
258  bool* terrainDataAvailable = 0);
259 
263  virtual void updateSupportPoints(const DtVector& newPosition,
264  const DtReal newHeading);
265 
268 
269  virtual void setIndependentlyTasked(bool value);
270  virtual bool independentlyTasked() const;
272 
275 
276  static void objectAddedCallback(DtVrfObject * vrfObject, void * usr);
277  virtual void processObjectAddedCallback(DtVrfObject * vrfObject);
278  static void objectAboutToBeRemovedCallback(DtVrfObject * vrfObject, void * usr);
279  virtual void processObjectAboutToBeRemovedCallback(DtVrfObject * vrfObject);
281 
283  static DtVrfObjectStateRepository* createRepository(const DtString & name,
284  const DtString & type, DtVrfObject* simObject,
285  const DtObjectType & objectType, DtVrfObjectParameters* parameters,
286  DtReaderWriterRegistry* parentRegistry = 0);
287 
288  static void addSimObjectStateRepositoryCreatorFcn(const DtString & type,
290 
295 
297  static void setFactory(DtSimObjectStateRepositoryFactory* factory);
299 
302 
303  virtual const DtVrfObjectParameters* parameterEntry() const;
304  virtual void setParameterEntry(DtVrfObjectParameters* parameterEntry);
306 
308  virtual const DtVrfObjectParameters* parameters() const;
309 
311  virtual DtVrfObjectParameters* modifiableParameters();
314  virtual void setupParameterInheritance();
315 
318 
319  virtual DtForceType forceType() const;
320  virtual void setForceType(DtForceType force);
322 
324  virtual bool createAttachments();
325 
327  void addPart(DtArticulatedPartStateRepository * part);
328  void removePart(DtArticulatedPartStateRepository * part);
329  DtArticulatedPartStateRepository * part(DtArtPartType partType);
330 
331  DtArticulatedPartStateRepository * findDescendantByType(
332  DtArtPartType childType);
333 
337 
338  virtual bool createAppearance();
339  virtual const DtAppearance* appearance() const;
340  virtual DtAppearance* appearance();
342 
346 
347  virtual void setCapabilities(int cap);
348  virtual int capabilities() const;
350 
353 
354  void setDestroyed(bool isDestroyed);
355  bool isDestroyed() const;
357 
365 
366  DtReal healthPct() const;
367  void setHealthPct(DtReal pct);
369 
372 
373  bool firePowerKilled() const;
374  void setFirePowerKilled(const bool firePowerKilled);
375 
376  bool mobilityKilled() const;
377  void setMobilityKilled(const bool mobilityKilled);
378 
379  bool flaming() const;
380  void setFlaming(const bool flaming);
381 
382  bool smoking() const;
383  void setSmoking(const bool smoking);
385 
389  bool isEntity() const;
390 
395  bool isLocal() const;
396 
401  bool isAggregate() const;
402 
405 
406  virtual DtVrfSubordinateManager* subordinates();
407  virtual const DtVrfSubordinateManager* subordinates() const;
409 
415  void addSubordinate(DtVrfObject* subordinateEntity);
416 
418  void removeSubordinate(DtVrfObject* subordinateEntity);
419 
421  virtual DtVrfObject* leadEntity() const;
422 
424  virtual const DtString& firstSubordinate() const;
425 
427  virtual const DtString& lastSubordinate() const;
428 
430  virtual const DtString& firstHealthySubordinate() const;
431 
434 
435  virtual DtSimManager* simManager();
436  virtual const DtSimManager* simManager() const;
438 
441 
442  virtual DtPhysicalWorld* physicalWorld();
443  virtual const DtPhysicalWorld* physicalWorld() const;
445 
448  virtual void tick();
449 
454  virtual void timedTick();
455 
458  virtual void setMinTickPeriod(double minTickPeriod);
459 
461  virtual double minTickPeriod() const;
462 
464  virtual void setMinTickPeriodVariance(double minTickPeriodVariance);
465 
467  virtual double minTickPeriodVariance() const;
468 
472  virtual void setNextTickTime(double nextTickTime);
473 
475  virtual double nextTickTime() const;
476 
482  virtual double calculateNextTickTime() const;
483 
484  virtual bool createSubordinates();
485  virtual DtVrfSubordinateManager* vrfSubordinates();
486  virtual const DtVrfSubordinateManager* vrfSubordinates() const;
487 
488  virtual bool createProcessStateRepositoryManager();
493 
494  virtual const DtVrfProcessStateRepositoryManager*
495  systemProcessStateRepositoryManager() const;
496  virtual DtVrfProcessStateRepositoryManager* systemProcessStateRepositoryManager();
498 
501  virtual const DtTaitBryan& localOrientationWrtDatabase() const;
502  virtual void setLocalOrientationWrtDatabase(
503  const DtTaitBryan& localOrientation);
504 
509  virtual DtVrfWeaponPSR* firstWeaponPSR() const;
510 
515  virtual void processObjectGeometry(const DtList& vertices);
516  virtual void processObjectGeometry(const DtLocalVertexList& vertices);
517 
524  virtual void processObjectGeometry();
525 
526  virtual const DtVrfObjectParameters* vrfBaseParameters() const;
527 
528  virtual DtGroundInteractionPt* groundCenter();
529  virtual const DtGroundInteractionPt* groundCenter() const;
530 
531  virtual const DtVector& getPartAttachPoint(const int partType) const;
532 
547  virtual void place(const DtVector& location, bool* dataAvailable = 0,
548  bool requireAllData = false);
549 
564  virtual void place(const DtReal heading, bool* dataAvailable = 0,
565  bool requireAllData = false);
566 
579  virtual void place(const DtVector& location, const DtReal heading,
580  bool clampToGroundFlag = true, bool* dataAvailable = 0,
581  bool requireAllData = false);
582 
585  virtual void updatePositionFromModelVertices();
586  virtual void updateBVolFromModelVertices();
587 
588 
589  virtual DtReal mass() const;
590  virtual void setMass(const DtReal mass);
591 
593  virtual const DtArticulatedPartCollection* artPartList() const;
594 
598  virtual void createParts();
599 
600  virtual DtTime lastTimeFiredUpon() const;
601  virtual void setLastTimeFiredUpon(const DtTime time);
602 
603  virtual bool underFire() const;
604  virtual void setUnderFire(bool underFire);
605 
606  virtual DtDeadReckonTypes deadReckoningAlgorithm() const;
607  virtual void setDeadReckoningAlgorithm(
608  DtDeadReckonTypes deadReckoningAlgorithm);
609 
611 
612  virtual const DtThresholder& deadReckoningThresholder() const;
613  virtual void setDeadReckoningThresholder(
614  const DtThresholder& thresholder);
616 
619 
620  virtual const DtEntityIdentifier & occupyingObjectId() const;
621  virtual void setOccupyingObjectId(const DtEntityIdentifier & objId);
623 
626 
627  virtual void setEchelonId(const DtEchelonId& echelonId);
628  virtual DtEchelonId& echelonId();
629  virtual const DtEchelonId& echelonId() const;
631 
633 
634  virtual void setIsSubordinateOfForceLevel(bool yesNo);
635  virtual bool isSubordinateOfForceLevel() const;
637 
640  virtual void putData(FILE *fp, int indentLevel = 0);
641 
646  virtual void getSelf(DtlObjPtr args, const DtFilename& searchPath,
647  const DtVariableBindingsList& variableBindings);
648 
650  virtual int nextTaskId();
651 
653  virtual int nextSuspendId();
654 
660 
661 
664  virtual int spawningTaskId(int subtaskId) const;
665 
666  virtual void addPendingSubtaskId(const DtString& componentName, int subtaskId);
667  virtual void addPendingSubtaskId(const DtString& componentName, int taskId, int subtaskId);
668  virtual bool findPendingSubtaskId(const DtString& componentName, int subtaskId);
669  virtual bool findPendingSubtaskId(const DtString& componentName, int taskId, int subtaskId);
670  virtual void removePendingSubtaskId(const DtString& componentName, int subtaskId);
671  virtual void removePendingSubtaskId(const DtString& componentName, int taskId, int subtaskId);
672  virtual void removeAllPendingSubtaskIds(const DtString& componentName);
673  virtual void removeAllPendingSubtaskIds(const DtString& componentName, int taskId);
674  virtual void printPendingSubtaskIds(const DtString& componentName) const;
675  virtual std::vector<int> currentPendingSubstaskIds(const DtString& componentName) const;
676  virtual std::vector<int> currentPendingSubstaskIds(const DtString& componentName, int taskId) const;
677  virtual DtSubtaskStatusEntry* pendingSubtaskStatus(const DtString& componentName, int subtaskId);
678  virtual DtSubtaskStatusEntry* pendingSubtaskStatus(const DtString& componentName, int taskId, int subtaskId);
680 
683  virtual DtTaskMessage* pendingSubtask(int subtaskId, DtString& controller) const;
684 
688  virtual bool taskedBySuperiorUponTaskComplete() const;
689 
690  virtual void setParentWasDestroyedWhenEmbarked(bool);
691  virtual bool parentWasDestroyedWhenEmbarked() const;
692 
693  virtual void detachFromParent();
694  virtual void attachToParent(DtSimObjectStateRepository* parent);
695  virtual void attachToParent(DtString parent);
696 
704  virtual void addAttachedTerrain(const DtString& parent);
705 
708  virtual void removeAttachedTerrain(const DtString& parent);
709 
712  Dt3dBoundingVolume* boundingVolume() const;
713 
718 
719  DtReal currentSpeed() const;
721 
726  DtReal forwardSpeed() const;
727 
729 
730  DtReal currentHeading() const;
731  void setCurrentHeading(const DtReal heading);
733 
736 
737  virtual void addPostInitFromParamsCallback(DtPostInitializeFromParametersCallbackFcn fcn,
738  void* usr);
739  virtual void removePostInitFromParamsCallback(DtPostInitializeFromParametersCallbackFcn fcn,
740  void* usr);
742 
743 protected:
744 
747  virtual void initializeNextTaskId();
748 
750  virtual void setOrientationRelativeToParent();
751 
752  virtual DtAttachedTerrain* createAttachedTerrain();
753 
757  virtual DtArticulatedPartStateRepository* createArtPartStateRepository(
758  DtVrfObject* vrfObject, const DtObjectType& objectType,
759  const DtString& rwName = DtString::nullString());
760 
761 public:
762 
764  //{@
765  virtual void addRangeItem(const DtRangeItem&);
766  virtual void removeRangeItem(int index);
767  virtual void setRangeItems(const DtRangeItems&);
768  const DtRangeItems& rangeItems() const;
769  DtRangeItems& rangeItems();
770  virtual void clearRangeItems();
772 
773  DtAttachedTerrain* terrainAttachedTo() const;
774 
779  virtual double sensorSignature(const DtSymbolString& sensorDomain) const;
780 
783  virtual std::list<DtSymbolString> sensorSignatureDomains() const;
784 
791 
792  virtual DtSensorContactInfoList& objectContactList();
793  virtual const DtSensorContactInfoList& objectContactList() const;
795 
796 protected:
799  virtual double baseSensorSignature(const DtSymbolString& sensorDomain) const;
800 
804  virtual double modifySensorSignature(const DtSymbolString& sensorDomain,
805  double baseSignature) const;
806 
809  virtual bool initSignatureEvaluators();
810 
813  void clearSignatureEvaluators();
814 
816  virtual bool createObjectResourceManager();
817 
819  virtual void invokePostInitFromParamsCallbacks();
820 
821 public:
823 
824  static void taskCompleteCallback(const DtVrfObjectMessage* msg, void* usr);
825  virtual void processTaskComplete(const DtVrfObjectMessage* msg);
827 
828  static DtVrfObjectStateRepository * creator(const DtString& name,
829  DtVrfObject* simObject, const DtObjectType& objectType,
830  DtVrfObjectParameters * parameters,
831  DtReaderWriterRegistry * parentRegistry);
832 
833  static DtVrfObjectStateRepository* isVrfObjectStateRepository(
834  DtSimObjectStateRepository* repository);
835 
836  static const DtVrfObjectStateRepository* isVrfObjectStateRepository(
837  const DtSimObjectStateRepository* repository);
838 
841 
842 protected:
843 
845  static bool visibilityFilter(const DtVrfObject * object, void * usr);
846 
847 protected:
848 
850 
853 
855 
858 
862 
866 
868 
870 
874 
875  DtReal myMass;
876  DtDeadReckonTypes myDeadReckoningAlgorithm;
878 
879  DtEntityIdentifier myOccupyingObjectId;
880 
883  DtArticulatedPartCollection myArtPartList;
884 
887 
893 
896 
901 
903 
905 
910 
912 
914 
918 
921 
926 
928 
932 
937 
938 protected:
939  //***** Important API change note
941  //*****
969 
974 
978 
984 
986 
987  typedef std::list<DtSignatureModifierEvaluator*> DtSignatureModifierEvalList;
988  typedef std::map<DtSymbolString, DtSignatureModifierEvalList*> DtSignatureModifierEvalMap;
992 
993  typedef std::map<DtSymbolString, double> DtSensorSignatureCacheMap;
998 
1002 
1003  typedef std::pair<DtPostInitializeFromParametersCallbackFcn, void*> DtPostInitializeFromParametersInfo;
1004  typedef std::list<DtPostInitializeFromParametersInfo> DtPostInitializeFromParametersCallbackList;
1005 
1007 
1010  DtRangeItems myRangeItems;
1011 };

Document ID: Generated on Sun Nov 24 19:49:21 EST 2013 from SVN revision 133924
Copyright © 2005-2013 VT MÄK. All Rights Reserved (www.mak.com)