16 #include <vrfExtProtocol/objectType.h>
25 #include "vrfExtProtocol/rangeItem.h"
27 #include "tbb/concurrent_hash_map.h"
28 #include "tbb/mutex.h"
31 #include <vlpi/appearance.h>
32 #include <vlpi/artPartSpec.h>
33 #include <vlutil/vlString.h>
34 #include <vlpi/thresholder.h>
37 #include <vlutil/vlConfig.h>
41 #include "boost/logic/tribool.hpp"
96 const DtString& rwName = DtString::nullString(),
101 const DtString& rwName = DtString::nullString(),
113 const DtString& rwName = DtString::nullString(),
122 virtual const int vrfObjectStateRepositorySubType()
const;
126 virtual bool createParameters();
127 virtual void initializeFromParameters();
138 virtual void restoreEntity();
145 virtual void clearExtendedData();
146 virtual void removeExtendedData(
const DtString& key);
150 return myExtendedData;
152 virtual void setExtendedDataMap(
const ExtendedData&);
153 virtual void setExtendedDataMap(
const std::map<std::string, std::string>&);
156 virtual void setupExtendedDataFromParameterData();
162 virtual void setExtendedLabel(
int,
const DtString& value);
163 virtual void clearExtendedLabels();
164 virtual DtString extendedLabel(
int index)
const;
165 virtual ExtendedLabels extendedLabels()
const;
166 virtual void setExtendedLabels(
const ExtendedLabels&);
171 virtual void setActivity(
const DtString&);
213 virtual void restoreResourcesFromParameters();
218 virtual void setSOR(DtReal center, DtReal size);
220 virtual DtReal SORSize()
const;
221 virtual DtReal SORCenter()
const;
228 virtual bool inSOR(
const DtVrfObject* entity)
const;
230 virtual const DtString& engagementRules()
const;
231 virtual void setEngagementRules(
const DtString& engagementRules);
235 virtual void setRequestTaskNeeded(
bool value);
236 virtual bool requestTaskNeeded()
const;
241 virtual void setTasked(
const DtString& componentName,
bool tasked);
242 virtual void setTasked(
const DtString& componentName,
int taskID,
bool tasked);
243 virtual bool tasked(
const DtString& componentName)
const;
248 virtual bool isTasked()
const;
251 virtual void clearCurrentTaskMsg(
const DtString& componentName);
254 virtual void clearCurrentTaskMsg(
const DtString& componentName,
int taskId);
258 virtual void setCurrentTaskMsg(
const DtString& componentName,
261 virtual void setCurrentTaskMsg(
const DtString& componentName,
278 virtual std::list<DtTaskMessage*> allCurrentTaskMsg(
const DtString& componentName)
const;
282 bool writeUnspecified =
false,
298 std::vector<DtGroundInteractionPt*> groundInteractionPts,
299 bool* terrainDataAvailable = 0);
304 virtual void updateSupportPoints(
const DtVector& newPosition,
305 const DtReal newHeading);
310 virtual void setIndependentlyTasked(
bool value);
311 virtual bool independentlyTasked()
const;
328 static void addSimObjectStateRepositoryCreatorFcn(
const DtString & type,
354 virtual void setupParameterInheritance();
359 virtual DtForceType forceType()
const;
360 virtual void setForceType(DtForceType force);
372 DtArtPartType childType);
378 virtual bool createAppearance();
379 virtual const DtAppearance* appearance()
const;
380 virtual DtAppearance* appearance();
387 virtual void setCapabilities(
int cap);
388 virtual int capabilities()
const;
394 void setDestroyed(
bool isDestroyed);
395 bool isDestroyed()
const;
406 DtReal healthPct()
const;
407 void setHealthPct(DtReal pct);
413 bool firePowerKilled()
const;
414 void setFirePowerKilled(
const bool firePowerKilled);
416 bool mobilityKilled()
const;
417 void setMobilityKilled(
const bool mobilityKilled);
419 bool flaming()
const;
420 void setFlaming(
const bool flaming);
422 bool smoking()
const;
423 void setSmoking(
const bool smoking);
429 bool isEntity()
const;
435 bool isLocal()
const;
441 bool isAggregate()
const;
455 void addSubordinate(
DtVrfObject* subordinateEntity);
458 void removeSubordinate(
DtVrfObject* subordinateEntity);
464 virtual const DtString& firstSubordinate()
const;
467 virtual const DtString& lastSubordinate()
const;
470 virtual const DtString& firstHealthySubordinate()
const;
494 virtual void timedTick();
498 virtual void setMinTickPeriod(
double minTickPeriod);
501 virtual double minTickPeriod()
const;
504 virtual void setMinTickPeriodVariance(
double minTickPeriodVariance);
507 virtual double minTickPeriodVariance()
const;
512 virtual void setNextTickTime(
double nextTickTime);
515 virtual double nextTickTime()
const;
522 virtual double calculateNextTickTime()
const;
524 virtual bool createSubordinates();
528 virtual bool createProcessStateRepositoryManager();
535 systemProcessStateRepositoryManager()
const;
541 virtual const DtTaitBryan& localOrientationWrtDatabase()
const;
542 virtual void setLocalOrientationWrtDatabase(
543 const DtTaitBryan& localOrientation);
555 virtual void processObjectGeometry(
const DtList& vertices);
564 virtual void processObjectGeometry();
571 virtual const DtVector& getPartAttachPoint(
const int partType)
const;
587 virtual void place(
const DtVector& location,
bool* dataAvailable = 0,
588 bool requireAllData =
false);
604 virtual void place(
const DtReal heading,
bool* dataAvailable = 0,
605 bool requireAllData =
false);
619 virtual void place(
const DtVector& location,
const DtReal heading,
620 bool clampToGroundFlag =
true,
bool* dataAvailable = 0,
621 bool requireAllData =
false);
629 virtual DtReal mass()
const;
630 virtual void setMass(
const DtReal mass);
633 virtual const DtArticulatedPartCollection* artPartList()
const;
638 virtual void createParts();
640 virtual DtTime lastTimeFiredUpon()
const;
641 virtual void setLastTimeFiredUpon(
const DtTime time);
643 virtual bool underFire()
const;
644 virtual void setUnderFire(
bool underFire);
646 virtual DtDeadReckonTypes deadReckoningAlgorithm()
const;
647 virtual void setDeadReckoningAlgorithm(
648 DtDeadReckonTypes deadReckoningAlgorithm);
652 virtual const DtThresholder& deadReckoningThresholder()
const;
653 virtual void setDeadReckoningThresholder(
654 const DtThresholder& thresholder);
660 virtual const DtEntityIdentifier & occupyingObjectId()
const;
661 virtual void setOccupyingObjectId(
const DtEntityIdentifier & objId);
667 virtual void setEchelonId(
const DtEchelonId& echelonId);
674 virtual void setIsSubordinateOfForceLevel(
bool yesNo);
675 virtual bool isSubordinateOfForceLevel()
const;
680 virtual void putData(FILE *fp,
int indentLevel = 0);
690 virtual int nextTaskId();
693 virtual int nextSuspendId();
704 virtual int spawningTaskId(
int subtaskId)
const;
706 virtual void addPendingSubtaskId(
const DtString& componentName,
int subtaskId);
707 virtual void addPendingSubtaskId(
const DtString& componentName,
int taskId,
int subtaskId);
708 virtual bool findPendingSubtaskId(
const DtString& componentName,
int subtaskId);
709 virtual bool findPendingSubtaskId(
const DtString& componentName,
int taskId,
int subtaskId);
710 virtual void removePendingSubtaskId(
const DtString& componentName,
int subtaskId);
711 virtual void removePendingSubtaskId(
const DtString& componentName,
int taskId,
int subtaskId);
712 virtual void removeAllPendingSubtaskIds(
const DtString& componentName);
713 virtual void removeAllPendingSubtaskIds(
const DtString& componentName,
int taskId);
714 virtual void printPendingSubtaskIds(
const DtString& componentName)
const;
715 virtual std::vector<int> currentPendingSubstaskIds(
const DtString& componentName)
const;
716 virtual std::vector<int> currentPendingSubstaskIds(
const DtString& componentName,
int taskId)
const;
728 virtual bool taskedBySuperiorUponTaskComplete()
const;
730 virtual void setParentWasDestroyedWhenEmbarked(
bool);
731 virtual bool parentWasDestroyedWhenEmbarked()
const;
744 virtual void addAttachedTerrain(
const DtString& parent);
748 virtual void removeAttachedTerrain(
const DtString& parent);
752 Dt3dBoundingVolume* boundingVolume()
const;
757 DtVector localBoundingVolumeCenterPosition()
const;
764 DtReal currentSpeed()
const;
771 DtReal forwardSpeed()
const;
775 DtReal currentHeading()
const;
776 void setCurrentHeading(
const DtReal heading);
789 virtual void restoreStateProperties();
792 virtual void initStatePropertiesNotToBeRestored();
810 virtual void initializeNextTaskId();
821 DtVrfObject* vrfObject,
const DtObjectType& objectType,
822 const DtString& rwName = DtString::nullString());
828 virtual void addRangeItem(
const DtRangeItem&);
829 virtual void removeRangeItem(
int index);
830 virtual void setRangeItems(
const DtRangeItems&);
831 const DtRangeItems& rangeItems()
const;
832 DtRangeItems& rangeItems();
833 virtual void clearRangeItems();
838 virtual boost::tribool onTerrainSurface()
const;
844 virtual double sensorSignature(
const DtSymbolString& sensorDomain)
const;
848 virtual std::list<DtSymbolString> sensorSignatureDomains()
const;
864 virtual double baseSensorSignature(
const DtSymbolString& sensorDomain)
const;
869 virtual double modifySensorSignature(
const DtSymbolString& sensorDomain,
870 double baseSignature)
const;
874 virtual bool initSignatureEvaluators();
878 void clearSignatureEvaluators();
881 virtual bool createObjectResourceManager();
884 virtual void invokePostInitFromParamsCallbacks();
894 DtVrfObject* simObject,
const DtObjectType& objectType,
910 static bool visibilityFilter(
const DtVrfObject *
object,
void * usr);