32 #include "vl/globalObjectDesignator.h"
33 #include <vlpi/entityIdentifier.h>
36 #include <vl/hostStructs.h>
37 #include <vlpi/appearance.h>
38 #include <vlutil/vlList.h>
39 #include <matrix/geodeticCoord.h>
41 #include <boost/smart_ptr/shared_ptr.hpp>
42 #include <tbb/spin_rw_mutex.h>
64 class DtReflectedEntity;
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;
268 virtual void createCommunicationsInterface();
276 virtual void createSetDataManager();
280 virtual int vrfSessionId()
const;
293 virtual void startTick();
294 virtual void tickComponents();
295 virtual void endTick();
298 virtual void tickPublisherOnly();
305 virtual bool createTaskManager();
306 virtual bool createScriptInterfaceHandler();
307 virtual bool createComponentManager();
310 virtual bool createVrfObjectPlanManager();
311 virtual bool createRadio();
312 virtual bool createNavigationInterfaceManager();
316 virtual void setNavigationEnabled(
bool);
317 virtual bool navigationEnabled()
const;
322 virtual void addToPotentialLuaScripts(
int);
323 virtual int potentialLuaScripts()
const;
326 virtual int scenarioRunId()
const;
329 virtual double timeOfDay()
const;
332 virtual double dateAndTimeOfDay()
const;
340 virtual double illumination()
const;
349 virtual void updateIllumination()
const;
352 virtual void updateWeather();
355 virtual void setRangeRingsParametersPublisherTickRange(
double d);
358 virtual void createAndInitializeRangeRingsParameterPublisher();
362 virtual bool needsIlluminationUpdate()
const;
367 virtual bool isOnTopOf(
const DtVrfObject*,
double d)
const;
370 virtual bool isSimulationObject()
const;
371 virtual bool isEntity()
const;
372 virtual bool isUnit()
const;
378 virtual bool checkAndDisembarkIfEmbarked(
const DtVector& localPosition);
382 virtual bool checkIfMoveOntoEmbarked(
const DtVector& localPosition,
DtVrfObject*& hit,
const std::list<DtUUID>& additionalIgnore = std::list<DtUUID>());
385 virtual bool hasHighFidelityObjectGeometryModel()
const;
388 virtual bool isEmbeddedInTerrain()
const;
393 virtual bool needsWeatherAreaUpdate()
const;
396 virtual bool isGlobalPlan()
const;
427 virtual DtExtent roughExtent()
const;
440 virtual void expandExtent(
DtExtent& extent)
const;
445 virtual void sendVrfObjectCreated(
unsigned long requestId = 0,
bool requestCreated =
true);
452 virtual void setIsVrfSimulatedObject(
bool b);
454 virtual bool isVrfSimulatedObject()
const;
455 virtual bool isVrfSimulated()
const
457 return isVrfSimulatedObject();
467 virtual bool isSimulatingComponents()
const;
470 virtual void save(std::string&);
473 virtual void putSelf(std::string& fp,
int indentLevel = 0,
bool writeUnspecified =
true,
480 virtual bool validNameLength(
const DtString& name)
const;
489 virtual bool setMarkingText(
const DtString & name,
bool rename =
true);
504 virtual void addVrfObjectChangedCallback(
506 virtual void removeVrfObjectChangedCallback(
510 virtual void addNavigationInterfaceChangedCallback(
512 virtual void removeNavigationInterfaceChangedCallback(
521 virtual void addVerticesChangedCallback(
523 virtual void removeVerticesChangedCallback(
532 virtual void invokeObjectDataChangedCallbacks(ChangeFlag);
540 virtual void addRelativeVerticesChangedCallback(
542 virtual void removeRelativeVerticesChangedCallback(
548 virtual void addVrfObjectPredicateCallback(
552 virtual void removeVrfObjectPredicateCallback(
559 virtual int predicateCallbackCount()
const;
565 virtual void invokeVrfObjectPredicateCallbacks();
575 virtual bool createNetInterface();
586 virtual const DtString & globalIdString()
const;
592 virtual bool baseSetMarkingText(
const DtString & name);
593 virtual const DtString& markingText()
const;
599 virtual const DtString& objectName()
const;
603 virtual void addNameAlias(
const DtString& name);
607 virtual void unregisterAliases();
610 virtual void setUUID(
const DtUUID&);
613 virtual const DtUUID& uuid()
const;
616 virtual const DtString & objectLabel()
const;
617 virtual void setObjectLabel(
const DtString & objectLabel);
620 virtual DtForceType forceType()
const;
621 virtual void setForceType(DtForceType f);
624 virtual void setIsSubordinateOfForceLevel(
bool);
625 virtual bool isSubordinateOfForceLevel()
const;
628 virtual const DtString & overlayParent()
const;
629 virtual void setOverlayParent(
const DtString & overlayParent);
641 virtual void setObjectIdentifier(
const DtEntityIdentifier & objectId);
642 virtual const DtEntityIdentifier & objectIdentifier()
const;
646 virtual const DtString & objectIdentifierString()
const;
650 virtual bool isLocal()
const;
656 virtual void setPublishObject(
bool publishObject);
657 virtual bool publishObject()
const;
663 virtual DtString objectClassType()
const;
664 virtual void setObjectClassType(
const DtString & objectClassType);
668 virtual void clearVerticesChangedCallbacks();
672 virtual void clearRelativeVerticesChangedCallbacks();
676 virtual void clearPredicateCallbacks();
678 static void addSimObjectCreatorFcn(
const DtString & type,
681 static void objectAboutToBeRemoved(
DtVrfObject * msg,
void * usr);
682 virtual void processObjectAboutToBeRemoved(
DtVrfObject*);
695 void setEntityType(
const DtEntityType & entityType);
696 const DtEntityType & entityType()
const;
698 void setDestroyed(
bool destroyed);
699 bool isDestroyed()
const;
712 virtual void place(
const DtVector& location,
bool* dataAvailable = 0,
713 bool requireAllData =
false);
726 virtual void place(
const DtReal heading,
bool* dataAvailable = 0,
727 bool requireAllData =
false);
741 virtual void place(
const DtVector& location,
const DtReal heading,
742 bool* dataAvailable = 0,
bool requireAllData =
false);
744 const DtString & echelonIdString()
const;
757 virtual const DtObjectId & objectId()
const;
761 virtual bool isEmbarked()
const;
777 virtual DtTaitBryan orientationRelativeTo(
const DtTaitBryan&,
DtVrfObject* relativeTo)
const;
784 virtual bool isEmbarkedOn(
const DtUUID& parent)
const;
793 void setAboutToBeRemoved(
bool);
794 bool aboutToBeRemoved()
const;
798 virtual DtOutputStream& objectConsoleDebug(
const DtString& channel =
"")
const;
799 virtual DtOutputStream& objectConsoleVerbose(
const DtString& channel =
"")
const;
800 virtual DtOutputStream& objectConsoleInfo(
const DtString& channel =
"")
const;
801 virtual DtOutputStream& objectConsoleWarn(
const DtString& channel =
"")
const;
802 virtual DtOutputStream& objectConsoleError(
const DtString& channel =
"")
const;
840 virtual void duplicateVrfSubComponentTypes();
843 virtual void restoreDuplicatedVrfSubComponentTypes();
847 virtual bool hasPlan()
const;
850 virtual bool executingPlan()
const;
853 virtual bool isCurrentlyTasked()
const;
856 virtual bool isEllipsoid()
const;
873 virtual DtU8 getNextEmitterSystemId();
876 static void setDefaultNotifyLevel(DtNotifyLevelType
level);
878 static DtNotifyLevelType defaultNotifyLevel();
887 virtual const ScriptInterfaceExtensions& scriptExtensions()
const;
891 virtual void regenerateUUIDForImport();
900 bool createLocalObject =
true,
901 bool publishLocalObject =
true,
902 const DtEntityIdentifier& objectIdentifier = DtEntityIdentifier::nullId(),
905 const DtString & objectName = DtString::nullString(),
906 const DtString & objectLabel = DtString::nullString(),
907 DtForceType forceType = DtForceOther,
908 const DtList* vertices = 0,
909 const DtTaitBryan* orientation = 0,
910 bool projection =
false,
911 bool closedFigure =
false,
912 const DtAppearance& appearance = DtAppearance::nullAppearance(),
913 const DtString & readerWriterName = DtString::nullString(),
916 bool connectToRadioNetowrk =
true);
923 bool createLocalObject =
true,
924 bool publishLocalObject =
true,
925 const DtEntityIdentifier& objectIdentifier = DtEntityIdentifier::nullId(),
928 const DtString & objectName = DtString::nullString(),
929 const DtString & objectLabel = DtString::nullString(),
930 DtForceType forceType = DtForceOther,
931 const DtList* vertices = 0,
932 const DtTaitBryan* orientation = 0,
933 bool projection =
false,
934 bool closedFigure =
false,
935 const DtAppearance& appearance = DtAppearance::nullAppearance(),
936 const DtString & readerWriterName = DtString::nullString(),
939 bool connectToRadioNetowrk =
true);
946 bool createLocalObject =
true,
947 bool publishLocalObject =
true,
948 const DtEntityIdentifier& objectIdentifier = DtEntityIdentifier::nullId(),
951 const DtString & objectName = DtString::nullString(),
952 const DtString & objectLabel = DtString::nullString(),
953 DtForceType forceType = DtForceOther,
954 const DtVector& location = DtVector::zero(),
955 const DtTaitBryan* orientation = 0,
956 bool projection =
false,
957 bool closedFigure =
false,
958 const DtAppearance& appearance = DtAppearance::nullAppearance(),
959 const DtString & readerWriterName = DtString::nullString(),
962 bool connectToRadioNetowrk =
true);
971 static DtVrfObject* createAndInitForSimulationObjectGroup(
973 double offsetRotation = 0.);
978 static void verticesChangedCallback(
DtVrfObject* obj,
982 static void relativeVerticesChangedCallback(
DtVrfObject* obj,
993 static void readDRThresholdSettingsCallback(
995 virtual void processReadDRThresholdSettings(
const DtSettingsObject* settings);
999 virtual void addedToObjectManager();
1003 virtual void addObjectAboutToBeRemovedCallback(
1005 virtual void removeObjectAboutToBeRemovedCallback(
1007 virtual void invokeVrfObjectAboutToBeRemovedCallbacks();
1012 virtual void addObjectModifiedViaMessageCallback(
1014 virtual void removeObjectModifiedViaMessageCallback(
1016 virtual void invokeObjectModifiedViaMessageCallback();
1022 virtual void addNewSensorContactCallback(
1024 virtual void removeNewSensorContactCallback(
1026 virtual void invokeNewSensorContactCallbacks();
1031 virtual void addSetLocationCompleteCallback(
1033 virtual void removeSetLocationCompleteCallback(
1035 virtual void invokeSetLocationCompleteCallbacks();
1044 virtual void updateTerrainEmbeddedGeometry(
bool force =
false);
1055 virtual bool initializeNetInterface();
1058 virtual void setupStateRepository();
1061 virtual void setupNetInterface();
1064 void emptyVertexList();
1067 void copyVertexList(
const DtList& orig);
1071 virtual void validateObjectType();
1078 virtual void initializeCommunicationInterfaceCallbacks();
1084 virtual void updateBoundingVolumeBasedOnPosture();
1087 virtual DtExtent computeExtent()
const;
1090 virtual void initializeObjectGeometryModel();