31 #include "vl/globalObjectDesignator.h"
32 #include <vlpi/entityIdentifier.h>
35 #include <vl/hostStructs.h>
36 #include <vlpi/appearance.h>
37 #include <vlutil/vlList.h>
38 #include <matrix/geodeticCoord.h>
40 #include <boost/smart_ptr/shared_ptr.hpp>
41 #include <tbb/spin_mutex.h>
42 #include <tbb/spin_rw_mutex.h>
105 : mySimObject(simObject)
156 virtual void setRecreateUUIDOnLoad(
bool);
159 virtual void setResolved(
bool);
199 SubordinateOfForceLevel
221 bool createLocalObject =
true,
222 bool publishLocalObject =
true,
223 const DtEntityIdentifier& objectIdentifier = DtEntityIdentifier::nullId(),
226 const DtString & objectName = DtString::nullString(),
227 const DtString & objectLabel = DtString::nullString(),
228 DtForceType forceType = DtForceOther,
229 const DtList* vertices = 0,
230 const DtTaitBryan* orientation = 0,
231 bool projection =
false,
232 bool closedFigure =
false,
233 const DtAppearance& appearance = DtAppearance::nullAppearance(),
234 const DtString & readerWriterName =
"vrf-object",
237 bool connectToRadioNetowrk =
true);
244 static void enableSingleObjectMode();
246 static bool singleObjectModeActive();
252 virtual bool create(
bool createNetworkInterface =
true);
256 virtual bool finalizeObjectCreation();
259 virtual void finalizeObjectRead();
263 virtual void setSimulationCapable(
bool);
264 virtual bool simulationCapable()
const;
269 virtual void prepareForReinitialization();
273 virtual void createCommunicationsInterface();
281 virtual void createSetDataManager();
285 virtual int vrfSessionId()
const;
298 virtual void startTick();
299 virtual void tickComponents();
300 virtual void endTick();
303 virtual void tickPublisherOnly();
310 virtual bool createTaskManager();
311 virtual bool createScriptInterfaceHandler();
312 virtual bool createComponentManager();
315 virtual bool createVrfObjectPlanManager();
316 virtual bool createRadio();
317 virtual bool createNavigationInterfaceManager();
321 virtual void setNavigationEnabled(
bool);
322 virtual bool navigationEnabled()
const;
327 virtual void addToPotentialLuaScripts(
int);
328 virtual int potentialLuaScripts()
const;
331 virtual int scenarioRunId()
const;
334 virtual double timeOfDay()
const;
337 virtual double dateAndTimeOfDay()
const;
345 virtual double illumination()
const;
349 virtual double expectedIllumination(
double dateAndTimeOfDay)
const;
358 virtual void updateIllumination()
const;
361 virtual void updateWeather();
364 virtual void setRangeRingsParametersPublisherTickRange(
double d);
367 virtual void createAndInitializeRangeRingsParameterPublisher();
371 virtual bool needsIlluminationUpdate()
const;
376 virtual bool isOnTopOf(
const DtVrfObject*,
bool checkSupportPoints =
false)
const;
377 virtual bool isOnTopOf(
const DtVrfObject*,
double d,
bool checkSupportPoints =
false)
const;
380 virtual bool isSimulationObject()
const;
381 virtual bool isEntity()
const;
382 virtual bool isUnit()
const;
388 virtual bool checkAndDisembarkIfEmbarked(
const DtVector& localPosition);
392 virtual bool checkIfMoveOntoEmbarked(
const DtVector& localPosition,
DtVrfObject*& hit,
const std::list<DtUUID>& additionalIgnore = std::list<DtUUID>());
395 virtual bool hasHighFidelityObjectGeometryModel()
const;
398 virtual bool isEmbeddedInTerrain()
const;
403 virtual bool needsWeatherAreaUpdate()
const;
406 virtual bool isGlobalPlan()
const;
437 virtual DtExtent roughExtent()
const;
450 virtual void expandExtent(
DtExtent& extent)
const;
455 virtual void sendVrfObjectCreated(
unsigned long requestId = 0,
bool requestCreated =
true);
462 virtual void setIsVrfSimulatedObject(
bool b);
464 virtual bool isVrfSimulatedObject()
const;
465 virtual bool isVrfSimulated()
const
467 return isVrfSimulatedObject();
477 virtual bool isSimulatingComponents()
const;
480 virtual void save(std::string&);
483 virtual void putSelf(std::string& fp,
int indentLevel = 0,
bool writeUnspecified =
true,
490 virtual bool validNameLength(
const DtString& name)
const;
499 virtual bool setMarkingText(
const DtString & name,
bool rename =
true);
514 virtual void addVrfObjectChangedCallback(
516 virtual void removeVrfObjectChangedCallback(
520 virtual void addNavigationInterfaceChangedCallback(
522 virtual void removeNavigationInterfaceChangedCallback(
531 virtual void addVerticesChangedCallback(
533 virtual void removeVerticesChangedCallback(
542 virtual void invokeObjectDataChangedCallbacks(ChangeFlag);
550 virtual void addRelativeVerticesChangedCallback(
552 virtual void removeRelativeVerticesChangedCallback(
558 virtual void addVrfObjectPredicateCallback(
562 virtual void removeVrfObjectPredicateCallback(
569 virtual int predicateCallbackCount()
const;
575 virtual void invokeVrfObjectPredicateCallbacks();
585 virtual bool createNetInterface();
596 virtual const DtString & globalIdString()
const;
602 virtual bool baseSetMarkingText(
const DtString & name);
603 virtual const DtString& markingText()
const;
609 virtual const DtString& objectName()
const;
613 virtual void addNameAlias(
const DtString& name);
617 virtual void unregisterAliases();
620 virtual void setUUID(
const DtUUID&);
623 virtual const DtUUID& uuid()
const;
626 virtual const DtString & objectLabel()
const;
627 virtual void setObjectLabel(
const DtString & objectLabel);
630 virtual DtForceType forceType()
const;
631 virtual void setForceType(DtForceType f);
634 virtual void setIsSubordinateOfForceLevel(
bool);
635 virtual bool isSubordinateOfForceLevel()
const;
638 virtual const DtString & overlayParent()
const;
639 virtual void setOverlayParent(
const DtString & overlayParent);
651 virtual void setObjectIdentifier(
const DtEntityIdentifier & objectId);
652 virtual const DtEntityIdentifier & objectIdentifier()
const;
656 virtual const DtString & objectIdentifierString()
const;
660 virtual bool isLocal()
const;
666 virtual void setPublishObject(
bool publishObject);
667 virtual bool publishObject()
const;
673 virtual DtString objectClassType()
const;
674 virtual void setObjectClassType(
const DtString & objectClassType);
678 virtual void clearVerticesChangedCallbacks();
682 virtual void clearRelativeVerticesChangedCallbacks();
686 virtual void clearPredicateCallbacks();
688 static void addSimObjectCreatorFcn(
const DtString & type,
691 static void objectAboutToBeRemoved(
DtVrfObject * msg,
void * usr);
692 virtual void processObjectAboutToBeRemoved(
DtVrfObject*);
705 void setEntityType(
const DtEntityType & entityType);
706 const DtEntityType & entityType()
const;
708 void setDestroyed(
bool destroyed);
709 bool isDestroyed()
const;
722 virtual void place(
const DtVector& location,
bool* dataAvailable = 0,
723 bool requireAllData =
false);
736 virtual void place(
const DtReal heading,
bool* dataAvailable = 0,
737 bool requireAllData =
false);
751 virtual void place(
const DtVector& location,
const DtReal heading,
752 bool* dataAvailable = 0,
bool requireAllData =
false);
754 const DtString & echelonIdString()
const;
767 virtual const DtObjectId & objectId()
const;
771 virtual bool isEmbarked()
const;
787 virtual DtTaitBryan orientationRelativeTo(
const DtTaitBryan&,
DtVrfObject* relativeTo)
const;
794 virtual bool isEmbarkedOn(
const DtUUID& parent)
const;
803 void setAboutToBeRemoved(
bool);
804 bool aboutToBeRemoved()
const;
808 virtual DtOutputStream& objectConsoleDebug(
const DtString& channel =
"")
const;
809 virtual DtOutputStream& objectConsoleVerbose(
const DtString& channel =
"")
const;
810 virtual DtOutputStream& objectConsoleInfo(
const DtString& channel =
"")
const;
811 virtual DtOutputStream& objectConsoleWarn(
const DtString& channel =
"")
const;
812 virtual DtOutputStream& objectConsoleError(
const DtString& channel =
"")
const;
850 virtual void duplicateVrfSubComponentTypes();
853 virtual void restoreDuplicatedVrfSubComponentTypes();
857 virtual bool hasPlan()
const;
860 virtual bool executingPlan()
const;
863 virtual bool isCurrentlyTasked()
const;
866 virtual bool isEllipsoid()
const;
883 virtual DtU8 getNextEmitterSystemId();
886 static void setDefaultNotifyLevel(DtNotifyLevelType
level);
888 static DtNotifyLevelType defaultNotifyLevel();
897 virtual const ScriptInterfaceExtensions& scriptExtensions()
const;
901 virtual void regenerateUUIDForImport();
910 bool createLocalObject =
true,
911 bool publishLocalObject =
true,
912 const DtEntityIdentifier& objectIdentifier = DtEntityIdentifier::nullId(),
915 const DtString & objectName = DtString::nullString(),
916 const DtString & objectLabel = DtString::nullString(),
917 DtForceType forceType = DtForceOther,
918 const DtList* vertices = 0,
919 const DtTaitBryan* orientation = 0,
920 bool projection =
false,
921 bool closedFigure =
false,
922 const DtAppearance& appearance = DtAppearance::nullAppearance(),
923 const DtString & readerWriterName = DtString::nullString(),
926 bool connectToRadioNetowrk =
true);
933 bool createLocalObject =
true,
934 bool publishLocalObject =
true,
935 const DtEntityIdentifier& objectIdentifier = DtEntityIdentifier::nullId(),
938 const DtString & objectName = DtString::nullString(),
939 const DtString & objectLabel = DtString::nullString(),
940 DtForceType forceType = DtForceOther,
941 const DtList* vertices = 0,
942 const DtTaitBryan* orientation = 0,
943 bool projection =
false,
944 bool closedFigure =
false,
945 const DtAppearance& appearance = DtAppearance::nullAppearance(),
946 const DtString & readerWriterName = DtString::nullString(),
949 bool connectToRadioNetowrk =
true);
956 bool createLocalObject =
true,
957 bool publishLocalObject =
true,
958 const DtEntityIdentifier& objectIdentifier = DtEntityIdentifier::nullId(),
961 const DtString & objectName = DtString::nullString(),
962 const DtString & objectLabel = DtString::nullString(),
963 DtForceType forceType = DtForceOther,
964 const DtVector& location = DtVector::zero(),
965 const DtTaitBryan* orientation = 0,
966 bool projection =
false,
967 bool closedFigure =
false,
968 const DtAppearance& appearance = DtAppearance::nullAppearance(),
969 const DtString & readerWriterName = DtString::nullString(),
972 bool connectToRadioNetowrk =
true);
981 static DtVrfObject* createAndInitForSimulationObjectGroup(
983 double offsetRotation = 0.);
988 static void verticesChangedCallback(
DtVrfObject* obj,
992 static void relativeVerticesChangedCallback(
DtVrfObject* obj,
1003 static void readDRThresholdSettingsCallback(
1005 virtual void processReadDRThresholdSettings(
const DtSettingsObject* settings);
1009 virtual void addedToObjectManager();
1013 virtual void addObjectAboutToBeRemovedCallback(
1015 virtual void removeObjectAboutToBeRemovedCallback(
1017 virtual void invokeVrfObjectAboutToBeRemovedCallbacks();
1022 virtual void addObjectModifiedViaMessageCallback(
1024 virtual void removeObjectModifiedViaMessageCallback(
1026 virtual void invokeObjectModifiedViaMessageCallback();
1032 virtual void addNewSensorContactCallback(
1034 virtual void removeNewSensorContactCallback(
1036 virtual void invokeNewSensorContactCallbacks();
1041 virtual void addSetLocationCompleteCallback(
1043 virtual void removeSetLocationCompleteCallback(
1045 virtual void invokeSetLocationCompleteCallbacks();
1054 virtual void updateTerrainEmbeddedGeometry(
bool force =
false);
1065 virtual bool initializeNetInterface();
1068 virtual void setupStateRepository();
1071 virtual bool setupNetInterface();
1074 void emptyVertexList();
1077 void copyVertexList(
const DtList& orig);
1081 virtual void validateObjectType();
1088 virtual void initializeCommunicationInterfaceCallbacks();
1094 virtual void updateBoundingVolumeBasedOnPosture();
1097 virtual DtExtent computeExtent()
const;
1100 virtual void initializeObjectGeometryModel();