VR-Forces 4.1.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 void setTasked(const DtString& componentName, int taskID, bool tasked);
201  virtual bool tasked(const DtString& componentName) const;
203 
206  virtual bool isTasked() const;
207 
209  virtual void clearCurrentTaskMsg(const DtString& componentName);
210 
212  virtual void clearCurrentTaskMsg(const DtString& componentName, int taskId);
213 
215 
216  virtual void setCurrentTaskMsg(const DtString& componentName,
217  const DtTaskMessage & taskMsg);
218 
219  virtual void setCurrentTaskMsg(const DtString& componentName,
220  const DtTaskMessage & taskMsg, int taskId);
222 
224  virtual const DtTaskStatusList* taskStatusList() const;
225 
228  virtual DtTaskMessage* currentTaskMsg(const DtString& componentName) const;
229 
231  virtual DtTaskMessage* currentTaskMsg(const DtString& componentName, int taskId) const;
232 
234  virtual std::list<DtTaskMessage*> allCurrentTaskMsg(const DtString& componentName) const;
235 
236  virtual void putSelf(FILE* fp,
237  int indentLevel = 0,
238  bool writeUnspecified = false,
239  const DtFilename& path = DtReaderWriter::appPath());
240 
253  virtual bool placePoints(DtAttachedTerrain& attachedTerrain,
254  std::vector<DtGroundInteractionPt*> groundInteractionPts,
255  bool* terrainDataAvailable = 0);
256 
260  virtual void updateSupportPoints(const DtVector& newPosition,
261  const DtReal newHeading);
262 
265 
266  virtual void setIndependentlyTasked(bool value);
267  virtual bool independentlyTasked() const;
269 
272 
273  static void objectAddedCallback(DtVrfObject * vrfObject, void * usr);
274  virtual void processObjectAddedCallback(DtVrfObject * vrfObject);
275  static void objectAboutToBeRemovedCallback(DtVrfObject * vrfObject, void * usr);
276  virtual void processObjectAboutToBeRemovedCallback(DtVrfObject * vrfObject);
278 
280  static DtVrfObjectStateRepository* createRepository(const DtString & name,
281  const DtString & type, DtVrfObject* simObject,
282  const DtObjectType & objectType, DtVrfObjectParameters* parameters,
283  DtReaderWriterRegistry* parentRegistry = 0);
284 
285  static void addSimObjectStateRepositoryCreatorFcn(const DtString & type,
287 
292 
294  static void setFactory(DtSimObjectStateRepositoryFactory* factory);
296 
299 
300  virtual const DtVrfObjectParameters* parameterEntry() const;
301  virtual void setParameterEntry(DtVrfObjectParameters* parameterEntry);
303 
305  virtual const DtVrfObjectParameters* parameters() const;
306 
308  virtual DtVrfObjectParameters* modifiableParameters();
311  virtual void setupParameterInheritance();
312 
315 
316  virtual DtForceType forceType() const;
317  virtual void setForceType(DtForceType force);
319 
321  virtual bool createAttachments();
322 
324  void addPart(DtArticulatedPartStateRepository * part);
325  void removePart(DtArticulatedPartStateRepository * part);
326  DtArticulatedPartStateRepository * part(DtArtPartType partType);
327 
328  DtArticulatedPartStateRepository * findDescendantByType(
329  DtArtPartType childType);
330 
334 
335  virtual bool createAppearance();
336  virtual const DtAppearance* appearance() const;
337  virtual DtAppearance* appearance();
339 
343 
344  virtual void setCapabilities(int cap);
345  virtual int capabilities() const;
347 
350 
351  void setDestroyed(bool isDestroyed);
352  bool isDestroyed() const;
354 
362 
363  DtReal healthPct() const;
364  void setHealthPct(DtReal pct);
366 
369 
370  bool firePowerKilled() const;
371  void setFirePowerKilled(const bool firePowerKilled);
372 
373  bool mobilityKilled() const;
374  void setMobilityKilled(const bool mobilityKilled);
375 
376  bool flaming() const;
377  void setFlaming(const bool flaming);
378 
379  bool smoking() const;
380  void setSmoking(const bool smoking);
382 
386  bool isEntity() const;
387 
392  bool isLocal() const;
393 
398  bool isAggregate() const;
399 
402 
403  virtual DtVrfSubordinateManager* subordinates();
404  virtual const DtVrfSubordinateManager* subordinates() const;
406 
412  void addSubordinate(DtVrfObject* subordinateEntity);
413 
415  void removeSubordinate(DtVrfObject* subordinateEntity);
416 
418  virtual DtVrfObject* leadEntity() const;
419 
421  virtual const DtString& firstSubordinate() const;
422 
424  virtual const DtString& lastSubordinate() const;
425 
427  virtual const DtString& firstHealthySubordinate() const;
428 
431 
432  virtual DtSimManager* simManager();
433  virtual const DtSimManager* simManager() const;
435 
438 
439  virtual DtPhysicalWorld* physicalWorld();
440  virtual const DtPhysicalWorld* physicalWorld() const;
442 
445  virtual void tick();
446 
451  virtual void timedTick();
452 
455  virtual void setMinTickPeriod(double minTickPeriod);
456 
458  virtual double minTickPeriod() const;
459 
461  virtual void setMinTickPeriodVariance(double minTickPeriodVariance);
462 
464  virtual double minTickPeriodVariance() const;
465 
469  virtual void setNextTickTime(double nextTickTime);
470 
472  virtual double nextTickTime() const;
473 
479  virtual double calculateNextTickTime() const;
480 
481  virtual bool createSubordinates();
482  virtual DtVrfSubordinateManager* vrfSubordinates();
483  virtual const DtVrfSubordinateManager* vrfSubordinates() const;
484 
485  virtual bool createProcessStateRepositoryManager();
490 
491  virtual const DtVrfProcessStateRepositoryManager*
492  systemProcessStateRepositoryManager() const;
493  virtual DtVrfProcessStateRepositoryManager* systemProcessStateRepositoryManager();
495 
498  virtual const DtTaitBryan& localOrientationWrtDatabase() const;
499  virtual void setLocalOrientationWrtDatabase(
500  const DtTaitBryan& localOrientation);
501 
506  virtual DtVrfWeaponPSR* firstWeaponPSR() const;
507 
512  virtual void processObjectGeometry(const DtList& vertices);
513  virtual void processObjectGeometry(const DtLocalVertexList& vertices);
514 
521  virtual void processObjectGeometry();
522 
523  virtual const DtVrfObjectParameters* vrfBaseParameters() const;
524 
525  virtual DtGroundInteractionPt* groundCenter();
526  virtual const DtGroundInteractionPt* groundCenter() const;
527 
528  virtual const DtVector& getPartAttachPoint(const int partType) const;
529 
544  virtual void place(const DtVector& location, bool* dataAvailable = 0,
545  bool requireAllData = false);
546 
561  virtual void place(const DtReal heading, bool* dataAvailable = 0,
562  bool requireAllData = false);
563 
576  virtual void place(const DtVector& location, const DtReal heading,
577  bool clampToGroundFlag = true, bool* dataAvailable = 0,
578  bool requireAllData = false);
579 
582  virtual void updatePositionFromModelVertices();
583  virtual void updateBVolFromModelVertices();
584 
585 
586  virtual DtReal mass() const;
587  virtual void setMass(const DtReal mass);
588 
590  virtual const DtArticulatedPartCollection* artPartList() const;
591 
595  virtual void createParts();
596 
597  virtual DtTime lastTimeFiredUpon() const;
598  virtual void setLastTimeFiredUpon(const DtTime time);
599 
600  virtual bool underFire() const;
601  virtual void setUnderFire(bool underFire);
602 
603  virtual DtDeadReckonTypes deadReckoningAlgorithm() const;
604  virtual void setDeadReckoningAlgorithm(
605  DtDeadReckonTypes deadReckoningAlgorithm);
606 
608 
609  virtual const DtThresholder& deadReckoningThresholder() const;
610  virtual void setDeadReckoningThresholder(
611  const DtThresholder& thresholder);
613 
616 
617  virtual const DtEntityIdentifier & occupyingObjectId() const;
618  virtual void setOccupyingObjectId(const DtEntityIdentifier & objId);
620 
623 
624  virtual void setEchelonId(const DtEchelonId& echelonId);
625  virtual DtEchelonId& echelonId();
626  virtual const DtEchelonId& echelonId() const;
628 
630 
631  virtual void setIsSubordinateOfForceLevel(bool yesNo);
632  virtual bool isSubordinateOfForceLevel() const;
634 
637  virtual void putData(FILE *fp, int indentLevel = 0);
638 
643  virtual void getSelf(DtlObjPtr args, const DtFilename& searchPath,
644  const DtVariableBindingsList& variableBindings);
645 
647  virtual int nextTaskId();
648 
654 
655  virtual void addPendingSubtaskId(const DtString& componentName, int subtaskId);
656  virtual void addPendingSubtaskId(const DtString& componentName, int taskId, int subtaskId);
657  virtual bool findPendingSubtaskId(const DtString& componentName, int subtaskId);
658  virtual bool findPendingSubtaskId(const DtString& componentName, int taskId, int subtaskId);
659  virtual void removePendingSubtaskId(const DtString& componentName, int subtaskId);
660  virtual void removePendingSubtaskId(const DtString& componentName, int taskId, int subtaskId);
661  virtual void removeAllPendingSubtaskIds(const DtString& componentName);
662  virtual void removeAllPendingSubtaskIds(const DtString& componentName, int taskId);
663  virtual void printPendingSubtaskIds(const DtString& componentName) const;
664  virtual std::vector<int> currentPendingSubstaskIds(const DtString& componentName) const;
665  virtual std::vector<int> currentPendingSubstaskIds(const DtString& componentName, int taskId) const;
666  virtual DtSubtaskStatusEntry* pendingSubtaskStatus(const DtString& componentName, int subtaskId);
667  virtual DtSubtaskStatusEntry* pendingSubtaskStatus(const DtString& componentName, int taskId, int subtaskId);
669 
672  virtual DtTaskMessage* pendingSubtask(int subtaskId, DtString& controller) const;
673 
677  virtual bool taskedBySuperiorUponTaskComplete() const;
678 
679  virtual void setParentWasDestroyedWhenEmbarked(bool);
680  virtual bool parentWasDestroyedWhenEmbarked() const;
681 
682  virtual void detachFromParent();
683  virtual void attachToParent(DtSimObjectStateRepository* parent);
684  virtual void attachToParent(DtString parent);
685 
693  virtual void addAttachedTerrain(const DtString& parent);
694 
697  virtual void removeAttachedTerrain(const DtString& parent);
698 
701  Dt3dBoundingVolume* boundingVolume() const;
702 
707 
708  DtReal currentSpeed() const;
710 
715  DtReal forwardSpeed() const;
716 
718 
719  DtReal currentHeading() const;
720  void setCurrentHeading(const DtReal heading);
722 
725 
726  virtual void addPostInitFromParamsCallback(DtPostInitializeFromParametersCallbackFcn fcn,
727  void* usr);
728  virtual void removePostInitFromParamsCallback(DtPostInitializeFromParametersCallbackFcn fcn,
729  void* usr);
731 
732 protected:
733 
736  virtual void initializeNextTaskId();
737 
739  virtual void setOrientationRelativeToParent();
740 
741  virtual DtAttachedTerrain* createAttachedTerrain();
742 
746  virtual DtArticulatedPartStateRepository* createArtPartStateRepository(
747  DtVrfObject* vrfObject, const DtObjectType& objectType,
748  const DtString& rwName = DtString::nullString());
749 
750 public:
751 
753  //{@
754  virtual void addRangeItem(const DtRangeItem&);
755  virtual void removeRangeItem(int index);
756  virtual void setRangeItems(const DtRangeItems&);
757  const DtRangeItems& rangeItems() const;
758  DtRangeItems& rangeItems();
759  virtual void clearRangeItems();
761 
762  DtAttachedTerrain* terrainAttachedTo() const;
763 
768  virtual double sensorSignature(const DtSymbolString& sensorDomain) const;
769 
772  virtual std::list<DtSymbolString> sensorSignatureDomains() const;
773 
780 
781  virtual DtSensorContactInfoList& objectContactList();
782  virtual const DtSensorContactInfoList& objectContactList() const;
784 
785 protected:
788  virtual double baseSensorSignature(const DtSymbolString& sensorDomain) const;
789 
793  virtual double modifySensorSignature(const DtSymbolString& sensorDomain,
794  double baseSignature) const;
795 
798  virtual bool initSignatureEvaluators();
799 
802  void clearSignatureEvaluators();
803 
805  virtual bool createObjectResourceManager();
806 
808  virtual void invokePostInitFromParamsCallbacks();
809 
810 public:
812 
813  static void taskCompleteCallback(const DtVrfObjectMessage* msg, void* usr);
814  virtual void processTaskComplete(const DtVrfObjectMessage* msg);
816 
817  static DtVrfObjectStateRepository * creator(const DtString& name,
818  DtVrfObject* simObject, const DtObjectType& objectType,
819  DtVrfObjectParameters * parameters,
820  DtReaderWriterRegistry * parentRegistry);
821 
822  static DtVrfObjectStateRepository* isVrfObjectStateRepository(
823  DtSimObjectStateRepository* repository);
824 
825  static const DtVrfObjectStateRepository* isVrfObjectStateRepository(
826  const DtSimObjectStateRepository* repository);
827 
830 
831 protected:
832 
834  static bool visibilityFilter(const DtVrfObject * object, void * usr);
835 
836 protected:
837 
839 
842 
844 
847 
851 
855 
857 
859 
863 
864  DtReal myMass;
865  DtDeadReckonTypes myDeadReckoningAlgorithm;
867 
868  DtEntityIdentifier myOccupyingObjectId;
869 
872  DtArticulatedPartCollection myArtPartList;
873 
876 
882 
885 
890 
892 
894 
899 
901 
903 
907 
910 
915 
918 
923 
924 protected:
925  //***** Important API change note
927  //*****
955 
960 
964 
970 
972 
973  typedef std::list<DtSignatureModifierEvaluator*> DtSignatureModifierEvalList;
974  typedef std::map<DtSymbolString, DtSignatureModifierEvalList*> DtSignatureModifierEvalMap;
978 
979  typedef std::map<DtSymbolString, double> DtSensorSignatureCacheMap;
984 
988 
989  typedef std::pair<DtPostInitializeFromParametersCallbackFcn, void*> DtPostInitializeFromParametersInfo;
990  typedef std::list<DtPostInitializeFromParametersInfo> DtPostInitializeFromParametersCallbackList;
991 
993 
997 };

Document ID: Generated on Mon Apr 8 19:24:01 EDT 2013 from SVN revision 125877
Copyright © 2005-2013 VT MÄK. All Rights Reserved (www.mak.com)