30 #include "tbb/concurrent_hash_map.h"
31 #include "tbb/mutex.h"
35 #include <vlpi/appearance.h>
36 #include <vlpi/artPartSpec.h>
37 #include <vlutil/vlString.h>
38 #include <vlpi/thresholder.h>
41 #include <vlutil/vlConfig.h>
45 #include "boost/logic/tribool.hpp"
101 const DtString& rwName = DtString::nullString(),
106 const DtString& rwName = DtString::nullString(),
118 const DtString& rwName = DtString::nullString(),
127 virtual const int vrfObjectStateRepositorySubType()
const;
131 virtual bool createParameters();
132 virtual void initializeFromParameters();
137 virtual void setConcealed(
bool);
140 virtual void setJoystickMovementControlled(
bool);
141 virtual bool joystickMovementControlled()
const;
151 virtual void restoreEntity();
155 virtual void addRestoredCallback(
157 virtual void removeRestoredCallback(
159 virtual void invokeRestoredCallbacks();
167 virtual void clearExtendedData();
168 virtual void removeExtendedData(
const DtString& key);
172 return myExtendedData;
174 virtual void setExtendedDataMap(
const ExtendedData&);
175 virtual void setExtendedDataMap(
const std::map<std::string, std::string>&);
178 virtual void setupExtendedDataFromParameterData();
184 virtual void setExtendedLabel(
int,
const DtString& value);
185 virtual void clearExtendedLabels();
186 virtual DtString extendedLabel(
int index)
const;
187 virtual ExtendedLabels extendedLabels()
const;
188 virtual void setExtendedLabels(
const ExtendedLabels&);
194 virtual const JoystickControls& joystickControls()
const;
199 virtual void setActivity(
const DtString&);
243 virtual void setNavigationEnabled(
bool);
244 virtual bool navigationEnabled()
const;
250 virtual void restoreResourcesFromParameters();
255 virtual void setSOR(DtReal center, DtReal
size);
257 virtual DtReal SORSize()
const;
258 virtual DtReal SORCenter()
const;
265 virtual bool inSOR(
const DtVrfObject* entity)
const;
267 virtual const DtString& engagementRules()
const;
268 virtual void setEngagementRules(
const DtString& engagementRules);
272 virtual void setRequestTaskNeeded(
bool value);
273 virtual bool requestTaskNeeded()
const;
278 virtual void setTasked(
const DtSymbolString& componentName,
bool tasked);
279 virtual void setTasked(
const DtSymbolString& componentName,
int taskID,
bool tasked);
285 virtual bool isTasked()
const;
288 virtual void clearCurrentTaskMsg(
const DtSymbolString& componentName);
291 virtual void clearCurrentTaskMsg(
const DtSymbolString& componentName,
int taskId);
295 virtual void setCurrentTaskMsg(
const DtSymbolString& componentName,
298 virtual void setCurrentTaskMsg(
const DtSymbolString& componentName,
315 virtual std::list<DtTaskMessage*> allCurrentTaskMsg(
const DtSymbolString& componentName)
const;
318 static bool shouldArchiveExtendedAttribute(
const DtString&);
319 static void doNotArchiveAttribute(
const DtString&,
bool);
321 virtual void putSelf(std::string& fp,
323 bool writeUnspecified =
false,
339 std::vector<DtGroundInteractionPt*> groundInteractionPts,
340 bool* terrainDataAvailable = 0);
345 virtual void updateSupportPoints(
const DtVector& newPosition,
346 const DtReal newHeading);
351 virtual void setIndependentlyTasked(
bool value);
352 virtual bool independentlyTasked()
const;
369 static void addSimObjectStateRepositoryCreatorFcn(
const DtString & type,
395 virtual void setupParameterInheritance();
400 virtual DtForceType forceType()
const;
401 virtual void setForceType(DtForceType force);
413 DtArtPartType childType);
419 virtual bool createAppearance();
420 virtual const DtAppearance* appearance()
const;
421 virtual DtAppearance* appearance();
428 virtual void setCapabilities(
int cap);
429 virtual int capabilities()
const;
435 void setDestroyed(
bool isDestroyed);
436 bool isDestroyed()
const;
441 virtual void setInvisible(
bool);
442 virtual bool invisible()
const;
445 virtual void setInvulnerable(
bool);
446 virtual bool invulnerable()
const;
450 virtual void setInvisibleSetByUser(
bool);
451 virtual bool invisibleSetByUser()
const;
461 DtReal healthPct()
const;
462 void setHealthPct(DtReal pct);
468 bool firePowerKilled()
const;
469 void setFirePowerKilled(
const bool firePowerKilled);
471 bool mobilityKilled()
const;
472 void setMobilityKilled(
const bool mobilityKilled);
474 bool flaming()
const;
475 void setFlaming(
const bool flaming);
477 bool smoking()
const;
478 void setSmoking(
const bool smoking);
484 bool isEntity()
const;
490 bool isLocal()
const;
496 bool isAggregate()
const;
510 void addSubordinate(
DtVrfObject* subordinateEntity);
513 void removeSubordinate(
DtVrfObject* subordinateEntity);
549 virtual void timedTick();
553 virtual void setMinTickPeriod(
double minTickPeriod);
556 virtual double minTickPeriod()
const;
559 virtual void setMinTickPeriodVariance(
double minTickPeriodVariance);
562 virtual double minTickPeriodVariance()
const;
567 virtual void setNextTickTime(
double nextTickTime);
570 virtual double nextTickTime()
const;
577 virtual double calculateNextTickTime()
const;
579 virtual bool createSubordinates();
583 virtual bool createProcessStateRepositoryManager();
590 systemProcessStateRepositoryManager()
const;
596 virtual const DtTaitBryan& localOrientationWrtDatabase()
const;
597 virtual void setLocalOrientationWrtDatabase(
598 const DtTaitBryan& localOrientation);
610 virtual void processObjectGeometry(
const DtList& vertices);
619 virtual void processObjectGeometry();
626 virtual const DtVector& getPartAttachPoint(
const int partType)
const;
642 virtual void place(
const DtVector& location,
bool* dataAvailable = 0,
643 bool requireAllData =
false);
659 virtual void place(
const DtReal heading,
bool* dataAvailable = 0,
660 bool requireAllData =
false);
674 virtual void place(
const DtVector& location,
const DtReal heading,
675 bool clampToGroundFlag =
true,
bool* dataAvailable = 0,
676 bool requireAllData =
false);
682 virtual DtReal mass()
const;
683 virtual void setMass(
const DtReal mass);
686 virtual const DtArticulatedPartCollection* artPartList()
const;
691 virtual void createParts();
693 virtual DtTime lastTimeFiredUpon()
const;
694 virtual void setLastTimeFiredUpon(
const DtTime time);
696 virtual bool underFire()
const;
697 virtual void setUnderFire(
bool underFire);
709 virtual suppressionLevels suppressionLevel()
const;
710 virtual void setSuppressionLevel(
const suppressionLevels l);
711 virtual bool isSuppressed()
const;
714 virtual DtDeadReckonTypes deadReckoningAlgorithm()
const;
715 virtual void setDeadReckoningAlgorithm(
716 DtDeadReckonTypes deadReckoningAlgorithm);
720 virtual const DtThresholder& deadReckoningThresholder()
const;
721 virtual void setDeadReckoningThresholder(
722 const DtThresholder& thresholder);
728 virtual const DtEntityIdentifier & occupyingObjectId()
const;
729 virtual void setOccupyingObjectId(
const DtEntityIdentifier & objId);
735 virtual void setEchelonId(
const DtEchelonId& echelonId);
742 virtual void setIsSubordinateOfForceLevel(
bool yesNo);
743 virtual bool isSubordinateOfForceLevel()
const;
748 virtual void putData(std::string& fp,
int indentLevel = 0);
758 virtual int nextTaskId();
761 virtual int nextSuspendId();
772 virtual int spawningTaskId(
int subtaskId)
const;
774 virtual void addPendingSubtaskId(
const DtSymbolString& componentName,
int subtaskId);
775 virtual void addPendingSubtaskId(
const DtSymbolString& componentName,
int taskId,
int subtaskId);
776 virtual bool findPendingSubtaskId(
const DtSymbolString& componentName,
int subtaskId);
777 virtual bool isSubtasked(
const DtSymbolString& componentName)
const;
778 virtual bool findPendingSubtaskId(
const DtSymbolString& componentName,
int taskId,
int subtaskId);
779 virtual void removePendingSubtaskId(
const DtSymbolString& componentName,
int subtaskId);
780 virtual void removePendingSubtaskId(
const DtSymbolString& componentName,
int taskId,
int subtaskId);
781 virtual void removeAllPendingSubtaskIds(
const DtSymbolString& componentName);
782 virtual void removeAllPendingSubtaskIds(
const DtSymbolString& componentName,
int taskId);
783 virtual void removeInactiveSubtaskStatus(
const DtSymbolString& componentName);
784 virtual void removeInactiveSubtaskStatus(
const DtSymbolString& componentName,
int taskId);
785 virtual void printPendingSubtaskIds(
const DtSymbolString& componentName)
const;
786 virtual std::vector<int> currentPendingSubstaskIds(
const DtSymbolString& componentName)
const;
787 virtual std::vector<int> currentPendingSubstaskIds(
const DtSymbolString& componentName,
int taskId)
const;
799 virtual bool taskedBySuperiorUponTaskComplete()
const;
801 virtual void setParentWasDestroyedWhenEmbarked(
bool);
802 virtual bool parentWasDestroyedWhenEmbarked()
const;
815 virtual void addAttachedTerrain(
const DtUUID& parent);
819 virtual void removeAttachedTerrain(
const DtUUID& parent);
823 Dt3dBoundingVolume* boundingVolume()
const;
828 DtVector localBoundingVolumeCenterPosition()
const;
835 DtReal currentSpeed()
const;
842 DtReal forwardSpeed()
const;
846 DtReal currentHeading()
const;
847 void setCurrentHeading(
const DtReal heading);
860 virtual void restoreStateProperties();
863 virtual void initStatePropertiesNotToBeRestored();
881 virtual void initializeNextTaskId();
893 const DtString& rwName = DtString::nullString());
900 virtual void removeRangeItem(
int index);
904 virtual void clearRangeItems();
909 virtual boost::tribool onTerrainSurface()
const;
915 virtual double sensorSignature(
const DtSymbolString& sensorDomain)
const;
919 virtual std::list<DtSymbolString> sensorSignatureDomains()
const;
937 virtual std::map<DtString, DtString> unarchivedData()
const;
940 virtual void appendExtendedData(
const std::map<DtString, DtString>&);
945 virtual double baseSensorSignature(
const DtSymbolString& sensorDomain)
const;
950 virtual double modifySensorSignature(
const DtSymbolString& sensorDomain,
951 double baseSignature)
const;
955 virtual bool initSignatureEvaluators();
959 void clearSignatureEvaluators();
962 virtual bool createObjectResourceManager();
965 virtual void invokePostInitFromParamsCallbacks();
991 static bool visibilityFilter(
const DtVrfObject *
object,
void * usr);