17 #include "geometry/extent.h"
30 #include <vl/hostStructs.h>
31 #include <vlpi/appearance.h>
32 #include <vlutil/vlList.h>
33 #include <matrix/geodeticCoord.h>
35 #include <boost/smart_ptr/shared_ptr.hpp>
41 class DtStateRepository;
56 class DtReflectedEntity;
57 class DtReflectedExtAggregate;
58 class DtReflectedEnvironmentProcess;
62 class Coordinate_System;
90 : mySimObject(simObject)
142 const DtObjectType & objectType,
144 bool createLocalObject =
true,
145 bool publishLocalObject =
true,
146 const DtEntityIdentifier& objectIdentifier = DtEntityIdentifier::nullId(),
147 const DtGlobalObjectDesignator* globalId = 0,
148 DtReflectedObject* reflectedObject = 0,
149 const DtString & objectName = DtString::nullString(),
150 const DtString & objectLabel = DtString::nullString(),
151 DtForceType forceType = DtForceOther,
152 const DtList* vertices = 0,
153 const DtTaitBryan* orientation = 0,
154 bool projection =
false,
155 bool closedFigure =
false,
156 const DtAppearance& appearance = DtAppearance::nullAppearance(),
157 const DtString & readerWriterName =
"vrf-object",
165 virtual bool create();
168 virtual void createCommunicationsInterface();
176 virtual void createSetDataManager();
180 virtual int vrfSessionId()
const;
200 virtual bool createTaskManager();
201 virtual bool createScriptInterfaceHandler();
202 virtual bool createComponentManager();
205 virtual bool createVrfObjectPlanManager();
206 virtual bool createRadio();
210 virtual double illumination()
const;
219 virtual void updateIllumination();
222 virtual void updateWeather();
225 virtual void setRangeRingsParametersPublisherTickRange(
double d);
228 virtual void createAndInitializeRangeRingsParameterPublisher();
232 virtual bool needsIlluminationUpdate();
237 virtual bool needsWeatherAreaUpdate();
260 virtual DtExtent extent()
const;
266 virtual void expandExtent(DtExtent& extent)
const;
271 virtual void sendVrfObjectCreated(
unsigned long requestId = 0,
bool requestCreated =
true);
278 virtual bool isVrfSimulatedObject();
279 virtual void setIsVrfSimulatedObject(
bool b);
288 virtual bool isSimulatingComponents()
const;
291 virtual void putSelf(FILE* fp,
int indentLevel = 0,
bool writeUnspecified =
true,
305 virtual bool setObjectName(
const DtString & name,
bool rename =
true);
309 virtual void addNameAlias(
const DtString& name);
313 virtual void unregisterAliases();
328 virtual void addVrfObjectChangedCallback(
330 virtual void removeVrfObjectChangedCallback(
339 virtual void addVerticesChangedCallback(
341 virtual void removeVerticesChangedCallback(
350 virtual void addRelativeVerticesChangedCallback(
352 virtual void removeRelativeVerticesChangedCallback(
358 virtual void addVrfObjectPredicateCallback(
362 virtual void removeVrfObjectPredicateCallback(
369 virtual int predicateCallbackCount()
const;
375 virtual void invokeVrfObjectPredicateCallbacks();
379 virtual void setCoordinateSystem(
const Coordinate_System* coordinateSystem);
385 virtual bool createNetInterface();
391 virtual void setGlobalId(
const DtGlobalObjectDesignator &
id);
392 virtual const DtGlobalObjectDesignator & globalId()
const;
398 virtual bool baseSetObjectName(
const DtString & name);
399 virtual const DtString & objectName()
const;
402 virtual const DtString & objectLabel()
const;
403 virtual void setObjectLabel(
const DtString & objectLabel);
406 virtual const DtString & overlayParent()
const;
407 virtual void setOverlayParent(
const DtString & overlayParent);
410 virtual DtStateRepository* netState();
411 virtual const DtStateRepository* netState()
const;
419 virtual void setObjectIdentifier(
const DtEntityIdentifier & objectId);
420 virtual const DtEntityIdentifier & objectIdentifier()
const;
424 virtual bool isLocal()
const;
430 virtual void setPublishObject(
bool publishObject);
431 virtual bool publishObject()
const;
437 virtual DtString objectClassType()
const;
438 virtual void setObjectClassType(
const DtString & objectClassType);
442 virtual void clearVerticesChangedCallbacks();
446 virtual void clearRelativeVerticesChangedCallbacks();
450 virtual void clearPredicateCallbacks();
452 static void addSimObjectCreatorFcn(
const DtString & type,
455 static void objectAboutToBeRemoved(
DtVrfObject * msg,
void * usr);
456 virtual void processObjectAboutToBeRemoved(
DtVrfObject*);
469 void setEntityType(
const DtEntityType & entityType);
470 const DtEntityType & entityType()
const;
472 void setDestroyed(
bool destroyed);
473 bool isDestroyed()
const;
486 virtual void place(
const DtVector& location,
bool* dataAvailable = 0,
487 bool requireAllData =
false);
500 virtual void place(
const DtReal heading,
bool* dataAvailable = 0,
501 bool requireAllData =
false);
515 virtual void place(
const DtVector& location,
const DtReal heading,
516 bool* dataAvailable = 0,
bool requireAllData =
false);
518 const DtString & echelonIdString()
const;
522 virtual const DtString& firstSubordinate()
const;
524 virtual const DtString& lastSubordinate()
const;
527 virtual const DtString& firstHealthySubordinate()
const;
531 virtual const DtObjectId & objectId()
const;
532 virtual const DtObjectType& objectType()
const;
535 virtual bool isEmbarked()
const;
539 virtual bool isEmbarkedOn(
const DtString& parent)
const;
548 void setAboutToBeRemoved(
bool);
549 bool aboutToBeRemoved()
const;
590 virtual bool hasPlan()
const;
593 virtual bool executingPlan()
const;
596 virtual bool isCurrentlyTasked()
const;
613 virtual DtU8 getNextEmitterSystemId();
616 static void setDefaultNotifyLevel(DtNotifyLevelType
level);
618 static DtNotifyLevelType defaultNotifyLevel();
627 virtual const ScriptInterfaceExtensions& scriptExtensions()
const;
634 const DtObjectType& objectType,
636 bool createLocalObject =
true,
637 bool publishLocalObject =
true,
638 const DtEntityIdentifier& objectIdentifier = DtEntityIdentifier::nullId(),
639 const DtGlobalObjectDesignator* globalId = 0,
640 DtReflectedObject* reflectedObject = 0,
641 const DtString & objectName = DtString::nullString(),
642 const DtString & objectLabel = DtString::nullString(),
643 DtForceType forceType = DtForceOther,
644 const DtList* vertices = 0,
645 const DtTaitBryan* orientation = 0,
646 bool projection =
false,
647 bool closedFigure =
false,
648 const DtAppearance& appearance = DtAppearance::nullAppearance(),
649 const DtString & readerWriterName = DtString::nullString(),
654 const DtObjectType& objectType,
657 bool createLocalObject =
true,
658 bool publishLocalObject =
true,
659 const DtEntityIdentifier& objectIdentifier = DtEntityIdentifier::nullId(),
660 const DtGlobalObjectDesignator* globalId = 0,
661 DtReflectedObject* reflectedObject = 0,
662 const DtString & objectName = DtString::nullString(),
663 const DtString & objectLabel = DtString::nullString(),
664 DtForceType forceType = DtForceOther,
665 const DtList* vertices = 0,
666 const DtTaitBryan* orientation = 0,
667 bool projection =
false,
668 bool closedFigure =
false,
669 const DtAppearance& appearance = DtAppearance::nullAppearance(),
670 const DtString & readerWriterName = DtString::nullString(),
675 const DtObjectType & objectType,
678 bool createLocalObject =
true,
679 bool publishLocalObject =
true,
680 const DtEntityIdentifier& objectIdentifier = DtEntityIdentifier::nullId(),
681 const DtGlobalObjectDesignator* globalId = 0,
682 DtReflectedObject* reflectedObject = 0,
683 const DtString & objectName = DtString::nullString(),
684 const DtString & objectLabel = DtString::nullString(),
685 DtForceType forceType = DtForceOther,
686 const DtVector& location = DtVector::zero(),
687 const DtTaitBryan* orientation = 0,
688 bool projection =
false,
689 bool closedFigure =
false,
690 const DtAppearance& appearance = DtAppearance::nullAppearance(),
691 const DtString & readerWriterName = DtString::nullString(),
701 static void verticesChangedCallback(
DtVrfObject* obj,
705 static void relativeVerticesChangedCallback(
DtVrfObject* obj,
716 static void readDRThresholdSettingsCallback(
718 virtual void processReadDRThresholdSettings(
const DtSettingsObject* settings);
723 virtual void addObjectAboutToBeRemovedCallback(
725 virtual void removeObjectAboutToBeRemovedCallback(
727 virtual void invokeVrfObjectAboutToBeRemovedCallbacks();
733 virtual void addNewSensorContactCallback(
735 virtual void removeNewSensorContactCallback(
737 virtual void invokeNewSensorContactCallbacks();
742 virtual void addSetLocationCompleteCallback(
744 virtual void removeSetLocationCompleteCallback(
746 virtual void invokeSetLocationCompleteCallbacks();
768 virtual void setupStateRepository();
771 virtual void setupNetInterface();
774 void emptyVertexList();
777 void copyVertexList(
const DtList& orig);
781 virtual void validateObjectType();
788 virtual void initializeCommunicationInterfaceCallbacks();
794 virtual void updateBoundingVolumeBasedOnPosture();
797 virtual DtExtent computeExtent()
const;