![]() |
VR-Forces 4.2 Class Documentation
|
Class DtAggregateFormationController is a controller that manages the formation state for an aggregate entity. More...

Public Member Functions | |
| DtDisaggregatedFormationController (const DtString &name, DtVrfObject *owner, DtSimManager *simManager, DtComponentDescriptor *desc=0, DtReaderWriterRegistry *parentRegistry=0) | |
| (const DtString&,DtVrfObject*,DtSimManager*, | |
| virtual | ~DtDisaggregatedFormationController () |
| virtual bool | init () |
| Initializes myCommandRadio and myAggregateStateRepository members. | |
| virtual void | tick () |
| Calls formationUpdateIsNeeded(). | |
| virtual DtString | type () const |
| Returns a string identifies the class type of component. | |
| virtual void | setRadio (DtSimBaseRadio *radio) |
| Overridden to register for following radio messages: DtSetFormationType DtSetLocationRequestType DtSnapIntoFormationRequestType. | |
| virtual void | processNodeAddedCallback (DtEntityIdentifier eid) |
| virtual void | enable () |
| Override to (re)add set data request callbacks. | |
| virtual void | disable () |
| Override to remove set data request callbacks. | |
Public Member Functions inherited from DtControllerComponent | |
| DtControllerComponent (const DtString &name, DtVrfObject *owner, DtSimManager *simManager, DtComponentDescriptor *desc=0, DtReaderWriterRegistry *parentRegistry=0) | |
| (const DtString& name, | |
| virtual | ~DtControllerComponent () |
| destructor | |
| virtual DtSimBaseRadio * | radio () |
| The radio this component is listening to. | |
| virtual void | taskNotify (const DtSimTask &task) |
| This is used by the entity to notify all controllers that a new task has been received. | |
| virtual void | clearTask () |
| Called when you want to clear out this component's task state. | |
Public Member Functions inherited from DtSimComponent | |
| DtSimComponent (const DtString &name, DtVrfObject *owner, DtSimManager *simManager, DtComponentDescriptor *desc=0, DtReaderWriterRegistry *parentRegistry=0) | |
| virtual | ~DtSimComponent () |
| destructor | |
| void | setParentSystem (DtComponentSystem *system) |
| Sets the parent system of this component. | |
| virtual bool | postAddComponentsInit () |
| Called after all components have been created, initialized and added to the component manager. | |
| virtual void | registerAttributeFunctions () |
| Called to register functions that provide system attribute values. | |
| virtual void | preFirstTickInit () |
| This function can be overridden to initialize a component before it is ticked for the first time. | |
| virtual void | postTick () |
| This function is called immediately after tick() is called. | |
| virtual void | timedTick () |
| This version of tick checks to see if the time to tick has arrived. | |
| virtual void | setMinTickPeriod (double minTickPeriod) |
| specifies a minimum tick period (which can also be thought of as | |
| virtual double | minTickPeriod () const |
| access the minimum tick period | |
| virtual void | setMinTickPeriodVariance (double minTickPeriodVariance) |
| set the variance in the minimum tick time | |
| virtual double | minTickPeriodVariance () const |
| access the variance in the minimum tick period | |
| virtual void | setNextTickTime (double nextTickTime) |
| The next tick time is normally calculated internally. | |
| virtual double | nextTickTime () const |
| access the next tick time | |
| virtual double | calculateNextTickTime () const |
| The next tick time is equal to mySimManager->exerciseClock()-> approximateElapsedRealTime() + myMinTickPeriod + a random # between -myMinTickPeriodVariance/2. | |
| virtual double | calculateFirstTickTime () const |
| Returns the first time value that the component should tick at. | |
| virtual void | setEntity (DtVrfObject *entity) |
| The entity's state repository is the place that actuator components make updates and other components look to see our current state. | |
| virtual DtSimComponent * | nextComponent () |
| List management functions. | |
| virtual DtSimComponent * | prevComponent () |
| virtual void | setListItem (DtListItem *item) |
| Used by DtComponentList. | |
| virtual DtListItem * | listItem () |
| virtual void | putData (FILE *fp, int indentLevel=0) |
| putData writes our type, which is provided by the virtual type accessor of the deriving class. | |
| virtual DtlObjPtr | getData (DtlObjPtr args, const DtFilename &searchPath, const DtVariableBindingsList &variableBindings) |
| getData is just used to get us past the type in the data stream, since it's not actual stored. | |
| virtual void | addInputPort (DtInputPort *port) |
| Adds this input port to the components input port list so that other components can look it up and attach to it. | |
| virtual void | removeInputPort (DtInputPort *port) |
| virtual DtInputPort * | lookupInputPort (const DtString &portName) |
| Returns a pointer to the input port registered on this component with the specified name. | |
| virtual DtList | inputPortList () const |
| Returns the list of DtInputPorts registered on this component. | |
| virtual void | addOutputPort (DtOutputPort *port) |
| Adds this output port to the components output port list so that other components can look it up and attach to it. | |
| virtual void | removeOutputPort (DtOutputPort *port) |
| virtual DtOutputPort * | lookupOutputPort (const DtString &portName) |
| Returns a pointer to the output port registered on this component with the specified name. | |
| virtual DtList | outputPortList () const |
| Returns the list of DtOutputPorts registered on this component. | |
| virtual void | addInputPortGroup (DtInputPortGroup *group) |
| Adds this input port to the components input port list so that other components can look it up and attach to it. | |
| virtual void | removeInputPortGroup (DtInputPortGroup *group) |
| virtual DtInputPortGroup * | lookupInputPortGroup (const DtString &groupName) |
| Returns a pointer the input port group registered on this component with the specified name. | |
| virtual DtList | inputPortGroupList () const |
| Returns the list of DtInputPortGroups registered on this component. | |
| virtual void | addOutputPortGroup (DtOutputPortGroup *group) |
| Adds this output port group to the components output port group list so that other components can look it up and attach to it. | |
| virtual void | removeOutputPortGroup (DtOutputPortGroup *group) |
| virtual DtOutputPortGroup * | lookupOutputPortGroup (const DtString &groupName) |
| Returns a pointer the output port group registered on this component with the specified name. | |
| virtual DtList | outputPortGroupList () const |
| Returns the list of DtOutputPortGroups registered on this component. | |
| virtual int | priority () const |
| Return the current connection priority for this component. | |
| virtual void | setPriority (int priority) |
| Sets a new connection priority for this component, and changes all current outgoing connections from this component to the new value. | |
| double | dT () const |
| This is the delta-t for this component, which may or may not be the same as the exerciseClock dT. | |
| virtual void | setDT (double deltaT) |
| Note that while dT is calculated internally, this makes it possible to 'lie' to the component about dT if necessary. | |
| virtual void | setComponentDescriptor (DtComponentDescriptor *componentDescriptor) |
| The component descriptor specified in the order of battle file or parameter file that was used to create this component. | |
| virtual const DtComponentDescriptor * | componentDescriptor () const |
| virtual bool | tickWhileDestroyed () const |
| If the component returns true here, it will be ticked regardless of the destroyed state of the host entity. | |
| DtVrfProcessStateRepositoryManager * | psrManager () |
| virtual DtString | componentFullName () const |
| virtual DtPhysicalWorld * | physicalWorld () |
| Gets the physical world that this component's entity exists in. | |
| virtual const DtPhysicalWorld * | physicalWorld () const |
| virtual DtAttachedTerrain * | terrainAttachedTo () |
| Gets the terrain that this component's entity is attached to, if any. | |
| virtual const DtAttachedTerrain * | terrainAttachedTo () const |
| virtual DtVrfObject * | entity () |
| Gets the entity. | |
| virtual const DtVrfObject * | entity () const |
| virtual DtSimManager * | simManager () |
| Gets the sim manager. | |
| virtual const DtSimManager * | simManager () const |
| virtual const Coordinate_System * | coordinateSystem () const |
| Gets the coordinate system, as it should always exist if the physical world is in a valid state! | |
| virtual Coordinate_System * | coordinateSystem () |
| virtual DtVrfObjectStateRepository * | localStateRepository () |
| Gets the local state repository. | |
| virtual const DtVrfObjectStateRepository * | localStateRepository () const |
| virtual bool | isEnabled () |
| Is this component enabled or not. | |
| virtual void | setIsEnabled (bool yesNo) |
| Is this component enabled or not. | |
| virtual DtOutputStream & | objectConsoleDebug () const |
| virtual DtOutputStream & | objectConsoleVerbose () const |
| virtual DtOutputStream & | objectConsoleInfo () const |
| virtual DtOutputStream & | objectConsoleWarn () const |
| virtual DtOutputStream & | objectConsoleError () const |
| virtual DtSimResourceManager & | resourceManager () |
| virtual const DtSimResourceManager & | resourceManager () const |
Public Member Functions inherited from DtReaderWriter | |
| DtReaderWriter () | |
| default constructor | |
| DtReaderWriter (const DtString &name, DtReaderWriterRegistry *parentRegistry=NULL, bool readonly=false) | |
| real constructor Setting the readonly flag prevents object from writing itself to the stream. | |
| DtReaderWriter (const DtSymbolString &name, DtReaderWriterRegistry *parentRegistry=NULL, bool readonly=false) | |
| DtReaderWriter (const DtString &name, const DtReaderWriter &orig, DtReaderWriterRegistry *parentRegistry=NULL) | |
| copy constructor | |
| DtReaderWriter (const DtSymbolString &name, const DtReaderWriter &orig, DtReaderWriterRegistry *parentRegistry=NULL) | |
| const DtReaderWriter & | operator= (const DtReaderWriter &orig) |
| assignment operator | |
| bool | operator== (const DtReaderWriter &) const |
| Equivalence operator. | |
| bool | operator!= (const DtReaderWriter &rhs) |
| virtual | ~DtReaderWriter () |
| destructor | |
| virtual void | putSelf (FILE *fp, int indentLevel=0, bool writeUnspecified=false, const DtFilename &path=DtFilename::nullFilename()) |
| Top level call to write itself to file. | |
| virtual void | getSelf (DtlObjPtr args, const DtFilename &searchPath=DtFilename::nullFilename(), const DtVariableBindingsList &variableBindings=nullVariableReference()) |
| Top level to read itself from an input stream. | |
| virtual void | writeSelf (FILE *fp, int indentLevel=0, bool writeUnspecified=false, const DtFilename &path=DtFilename::nullFilename()) |
| Called from putSelf, calls myRegistry.putSelf which in turn calls putSelf on each reader/writer in the registry. | |
| virtual DtSymbolString | name () const |
| Accessor for name of this readable/writable object. | |
| virtual void | addAlias (const DtSymbolString &alias) |
| Add an alias as an alternative name for this object. | |
| virtual bool | hasAlias (const DtSymbolString &alias) |
| virtual const aliasContainer & | aliases () const |
| virtual void | setReadonly (bool flag) |
| Set read-only flag. | |
| virtual bool | isReadonly () const |
| virtual bool | variableIsBound () const |
| virtual void | unbindVariable () |
| Sets the myVariableIsBound flag to false. | |
| virtual void | setName (const DtString &) |
| Set the name of the object. | |
| virtual const char * | readerWriterType () const |
| Used to supply a string type that this reader writer type is. | |
| virtual DtString | prettyPrint () const |
| Routine to return a human readable form of the reader/writer variable. | |
| virtual void | bindVariables (DtVariableBindingsList variableBindings) |
| Runs a variable binding pass on this reader writer and any of its children. | |
| virtual std::list < DtVariableNameType > | unboundVariables () const |
| bool | invalid () const |
| virtual bool | hasChild (const DtReaderWriter *p) const |
| Returns true if this variable has a child p in it's chain. | |
| virtual void | setValueSpecified (bool specified, bool recurse=false) |
| The specified flags are used for optional values. | |
| virtual bool | valueSpecified () const |
| The specified flags are used for optional values. | |
| virtual bool | isVariableReference () const |
| Specifies whether or not this reader writer is really a variable that is specified elsewhere. | |
| virtual void | setIsVariableReference (bool value) |
| virtual void | clearAllVariableReferenceFlags () |
| Clears out all variable reference flags from all readerwriter items in registry recursively. | |
| virtual DtSymbolString | variableName () const |
| The variable name, if this object is a variable reference. | |
| virtual void | setVariableName (const DtSymbolString variableName) |
| The variable name, if this object is a variable reference. | |
| const DtReaderWriterRegistry & | registry () const |
| Collection of child DtReaderWriter nodes owned by this object. | |
| DtReaderWriterRegistry & | registry () |
| Collection of child DtReaderWriter nodes owned by this object. | |
Static Public Member Functions | |
| static void | setFormationCallback (DtSimMessage *msg, void *usr) |
| Callback for DtSetFormationRequest set data requests. | |
| static void | setFormationTypeCallback (DtSimMessage *msg, void *usr) |
| Callback for DtSetFormationTyeRequest set data requests. | |
| static void | setHeadingCallback (DtSimMessage *msg, void *usr) |
| Callback for DtSetFormationRequest set data requests. | |
| static void | setLocationCallback (DtSimMessage *msg, void *usr) |
| Callback for DtSetLocationRequest set data requests. | |
| static void | snapIntoFormationCallback (DtSimMessage *msg, void *usr) |
| Callback for DtSnapIntoFormationRequest set data requests. | |
| static void | subordinatesChangedCallback (DtEntityIdentifier entId, void *usr) |
| Callback registered with DtVrfSubordinateManager invoked when contents of subordinate manager changes. | |
| static void | nodeAddedCallback (DtEntityIdentifier eid, void *userData) |
| Callback registered with DtVrfSubordinateManager invoked when an org manager node is added. | |
| static void | onTaskNotifyCallback (const DtSimTask &task, const DtSimComponent ¬ifier, void *usr) |
| Callback to be invoked when onNotify() is called in the local task manager to indicate entity is about to start a new task. | |
| static DtSimComponent * | creator (const DtString &name, DtVrfObject *owner, DtSimManager *simManager, DtComponentDescriptor *desc=0, DtReaderWriterRegistry *parentRegistry=0) |
| (const DtString&,DtVrfObject*,DtSimManager*, | |
Protected Member Functions | |
| virtual bool | formationUpdateIsNeeded () const |
| Walks list of subordinates in formation state. | |
| virtual void | processSetFormation (DtSimMessage *msg) |
| Handler for setFormationCallback(). | |
| virtual void | processSetFormationType (DtSimMessage *msg) |
| Handler for setFormationCallbackType(). | |
| virtual void | processSetHeading (DtSimMessage *msg) |
| Handler for setHeadingCallback(). | |
| virtual void | processSetLocation (DtSimMessage *msg) |
| Handler for setLocationCallback(). | |
| virtual void | processSnapIntoFormation (DtSimMessage *msg) |
| Handler for snapIntoFormationCallback(). | |
| virtual void | processSubordinatesChanged (DtEntityIdentifier entId) |
| Handler for subordinates changed callback. | |
| virtual void | snapIntoFormation (const DtString &formation, const DtVector &location, double heading, bool applyHeading) |
| Puts the aggregate into the given formation, at the given location and heading. | |
| virtual void | getCurrentFormation (DtFormation &formation) |
| Get current formation position and formation type. | |
| virtual DtOrgViewManagedObjectListConstPtr | generateListOfSubordinatesEligibleForFormation () |
| Generates the subset of subordinates available to participate in formation. | |
| virtual std::list< int > | generateFormationPositions (DtOrgViewManagedObjectListConstPtr &entityInFormation) |
| Generates a list of formation positions for each entity in the formation. | |
| virtual int | findPositionInVector (const std::vector< DtEntityIdentifier > subordinateList, const DtEntityIdentifier &entityId) const |
| Helper function for generateFormationPositions(). | |
| virtual void | generateFormationAtPositionAndOrientation (const DtVector &geocentricOrigin, const DtTaitBryan &geocentricOrientation, std::vector< DtVector > geocentricPositions, DtFormation &formation) |
| Constructs an ad hoc formation (set of positional offsets of participants) based on current relative positioning of subordinates, at given location and orientation. | |
| virtual void | generateWorkingFormation (DtFormation &formation) |
| Creates an ad hoc formation from the current eligible subordinates current positions relative to one another. | |
| virtual void | updateFormationState () |
| Recomputes and updates current working formation in process state repository, and updates subordinate list and formation positional data. | |
| virtual void | registerWithOrgManager () |
| Register subordinateOrderChangedCallback with the DtOrganizationManager. | |
| virtual void | unregisterWithOrgManager () |
| Unregister subordinateOrderChangedCallback with the DtOrganizationManager. | |
| virtual void | sendRequestToSelf (const DtSetDataRequest &request) const |
| Send given request to ourself. | |
| virtual void | sendRequestToSubordinate (const DtSetDataRequest &request, const DtString &subordinateObjectName) const |
| Send given request to one of our subordinates. | |
| virtual bool | createPSR () |
| Creates myProcessState data member, and adds it to our process state repository manager. | |
| virtual void | processOnTaskNotifyCallback (const DtSimTask &task, const DtSimComponent ¬ifier) |
| Called when the entity is about to start a new task. | |
| virtual void | processRequestAvailableFormations (const DtVrfObjectMessage *msg) |
| virtual void | addSetDataCallbacks () |
| Add set data request callbacks. | |
| void | removeSetDataCallbacks () |
| Callbacks are removed when component is disabled or destroyed. | |
Protected Member Functions inherited from DtControllerComponent | |
| DtControllerComponent () | |
| default constructor | |
| DtControllerComponent (const DtControllerComponent &orig) | |
| copy constructor | |
| const DtControllerComponent & | operator= (const DtControllerComponent &orig) |
| assignment operator | |
Protected Member Functions inherited from DtSimComponent | |
| bool | testInvariant () const |
| virtual bool | createPortGroups () |
| Called by init. | |
| virtual bool | createPorts () |
| Called by init. | |
Protected Member Functions inherited from DtReaderWriter | |
| virtual void | bindToRwAsVariable (const DtReaderWriter *rw) |
| Copies values from the specified DtReaderWriter. | |
| virtual void | bindLocalVariables (const DtVariableBindingsList &variableBindings) |
| Checks to see if this RW object is a variable reference that can be bound using the provided bindings. | |
| virtual DtlObjPtr | getData (DtlObjPtr args, const DtFilename &searchPath, const DtVariableBindingsList &variableBindings) |
| Deriving class overrides these to get/put class specific data. | |
Static Protected Member Functions | |
| static void | requestAvailableFormationsCallback (const DtVrfObjectMessage *msg, void *usr) |
Protected Attributes | |
| const DtFormationControllerDescriptor * | myFormationControllerDescriptor |
| Descriptor used to configure this component. | |
| DtVrfAggregateStateRepository * | myAggregateStateRepository |
| Pointer to aggregate's state repository, cached in this class for convenience. | |
| DtFormationState * | myFormationState |
| Pointer to aggregate's formation state repository, cached in this for convenience. | |
| bool | myRegisteredWithOrgManager |
| Flag used to indicate if the subordinateOrderChangedCallback() has been registered with the aggregate's organization manager. | |
| DtCommandChannelRadio * | myCommandChannelRadio |
| Pointer to aggregate's command radio, cached in this class for convenience. | |
| DtSetDataManager * | mySetDataManager |
| Pointer to aggregate's DtSetDataManager, cached in this class for convenience. | |
| DtFormationPSR * | myProcessState |
| Container for state data associated with this component. | |
| bool | myFormationCallbacksAreDisabled |
| Flag used to indicate if formation-related callbacks are disabled (not registered). | |
| bool | myFirstTick |
| Flag used to indicate first non-zero dT() tick. | |
| bool | myRegisteredForAddNodeCallback |
| const DtAggregateObjectParameters * | myAggregateParameters |
| Convenience pointer to the aggregate parameters for this entity. | |
Protected Attributes inherited from DtControllerComponent | |
| DtSimBaseRadio * | myRadio |
| Controller components can send messages. | |
Protected Attributes inherited from DtSimComponent | |
| DtVrfObject * | myEntity |
| DtVrfObjectStateRepository * | myLocalStateRepository |
| DtSimManager * | mySimManager |
| DtComponentSystem * | mySystem |
| Pointer to the DtComponentSystem that this component belongs. | |
| DtListItem * | myListItem |
| DtInputPortMap | myInputPortList |
| DtOutputPortMap | myOutputPortList |
| DtInputPortGroupMap | myInputPortGroupList |
| DtOutputPortGroupMap | myOutputPortGroupList |
| int | myPriority |
| double | myMinTickPeriod |
| double | myMinTickPeriodVariance |
| double | myNextTickTime |
| double | myLastTickSimTime |
| double | myDT |
| bool | myIsEnabled |
| Indicates whether this component should be enabled for ticking or not. | |
| bool | myFirstTick |
| Initialized to true in the constructor, set to false by the first call to postTick. | |
| const DtComponentDescriptor * | myComponentDescriptor |
Protected Attributes inherited from DtReaderWriter | |
| const DtSymbolString | myName |
| DtReaderWriterRegistry | myRegistry |
| bool | myValueSpecified |
| bool | myReadOnlyFlag |
| bool | myIsVariableReference |
| DtSymbolString | myVariableName |
| bool | myVariableIsBound |
| aliasContainer | myAliases |
| Container for the aliases which represent alternative names for the object. | |
| bool | myInvalid |
| Set to true if there is a problem reading this item. | |
Private Member Functions | |
| DtDisaggregatedFormationController () | |
| Default constructor - not implemented. | |
| DtDisaggregatedFormationController (const DtDisaggregatedFormationController &orig) | |
| copy constructor - not implemented | |
| DtDisaggregatedFormationController & | operator= (const DtDisaggregatedFormationController &orig) |
| assignment operator - not implemented | |
Additional Inherited Members | |
Public Types inherited from DtReaderWriter | |
| typedef std::vector < DtSymbolString > | aliasContainer |
| typedef std::vector < DtSymbolString >::iterator | aliasIter |
| typedef std::vector < DtSymbolString > ::const_iterator | aliasConstIter |
| typedef std::pair < DtSymbolString, DtString > | DtVariableNameType |
| typedef DtReaderWriterFactory *(* | DtReaderWriterFactoryCreatorFcn )() |
Protected Types inherited from DtSimComponent | |
| typedef std::map< DtString, DtInputPort * > | DtInputPortMap |
| typedef std::map< DtString, DtOutputPort * > | DtOutputPortMap |
| typedef std::map< DtString, DtInputPortGroup * > | DtInputPortGroupMap |
| typedef std::map< DtString, DtOutputPortGroup * > | DtOutputPortGroupMap |
Static Protected Attributes inherited from DtSimComponent | |
| static DtSimComponentFactory * | myFactory |
Class DtAggregateFormationController is a controller that manages the formation state for an aggregate entity.
End User Description: The DtAggregateFormationController manages the state associated with an aggregate entity's formation. This includes determining who is eligible to participate in the formation, and who should be positioned relative to whom when participating in the formation.
It is intended to work in conjunction with the aggregate controllers that model the various movement behaviors (e.g. DtAggregateMoveAlongController, DtAggregatePatrolBetweenController). The DtAggregateFormationController sets formation state (keeping it up to date), and the movement controllers examine the formation state and use that information to execute movement in formation.
This controller may only be configured as a part of an entity that has a vrf-aggregate-state-repository.
Developer Description: The DtAggregateFormationController class handles all DtSetDataRequests that affect formation, including DtSetLocationRequests, DtSetHeadingRequests, and DtSnapIntoFormationRequests. It sets the state in the aggregate entity's DtFormationState object (owned by the DtVrfAggregateStateRepository class). Therefore it should only be configured as part of an aggregate entity that has a DtVrfAggregateStateRepository.
Uses Descriptor Type: DtFormationControllerDescriptor
|
private |
Default constructor - not implemented.
|
private |
copy constructor - not implemented
| DtDisaggregatedFormationController::DtDisaggregatedFormationController | ( | const DtString & | name, |
| DtVrfObject * | owner, | ||
| DtSimManager * | simManager, | ||
| DtComponentDescriptor * | desc = 0, |
||
| DtReaderWriterRegistry * | parentRegistry = 0 |
||
| ) |
(const DtString&,DtVrfObject*,DtSimManager*,
| name | Reader writer name of this component. |
| owner | The DtVrfObject that owns this component |
| simManager | The simulation manager (provides access to terrain, message interface, simulation clock). |
| desc | The component descriptor used to initialize this component. |
| parentRegistry | Pointer to the parent reader writer registry (the containing object that reads/writes this object). |
|
virtual |
|
private |
assignment operator - not implemented
|
virtual |
Initializes myCommandRadio and myAggregateStateRepository members.
Must be called before any other member functions are called. Disables callbacks in formation state object (will be enabled after first nonzero tick).
Reimplemented from DtControllerComponent.
|
virtual |
Calls formationUpdateIsNeeded().
If this returns true, calls updateFormation(). Enables callbacks in formation state object after first non-zero tick.
Reimplemented from DtSimComponent.
|
virtual |
Returns a string identifies the class type of component.
Type values are defined in compTypes.h. DtSimComponent creation functions are registered with the DtSimComponentFactory using the type values as the key.
Reimplemented from DtControllerComponent.
Reimplemented in DtDisaggregatedConvoyFormationController.
|
virtual |
Overridden to register for following radio messages: DtSetFormationType DtSetLocationRequestType DtSnapIntoFormationRequestType.
| radio | Caches a pointer to the aggregate's radio in myCommandChannelRadio. Dynamically casts it to type DtCommandChannelRadio. Aggregates must be configured with radios of this type in order to be able to issue tasks/set data requests to subordinates. |
Reimplemented from DtControllerComponent.
|
static |
Callback for DtSetFormationRequest set data requests.
Calls processSetFormation().
| msg | Message containing a DtSetFormationRequest. |
| usr | Pointer to an instance of this class. |
|
static |
Callback for DtSetFormationTyeRequest set data requests.
Calls processSetFormationType().
| msg | Message containing a DtSetFormationTypeRequest. |
| usr | Pointer to an instance of this class. |
|
static |
Callback for DtSetFormationRequest set data requests.
Calls processSetHeading().
| msg | Message containing a DtSetHeadingRequest. |
| usr | Pointer to an instance of this class. |
|
static |
Callback for DtSetLocationRequest set data requests.
Calls processSetLocation().
| msg | Message containing a DtSetLocationRequest. |
| usr | Pointer to an instance of this class. |
|
static |
Callback for DtSnapIntoFormationRequest set data requests.
Calls snapIntoFormationCallback().
| msg | Message containing a DtSnapIntoFormationRequest. |
| usr | Pointer to an instance of this class. |
|
static |
Callback registered with DtVrfSubordinateManager invoked when contents of subordinate manager changes.
Calls processSubordinatesChanged().
| entId | The aggregate's entity Id. |
| usr | Pointer to an instance of this class. |
|
static |
Callback registered with DtVrfSubordinateManager invoked when an org manager node is added.
This will be set when trying to register with the org manager and cannot
| entId | The aggregate's entity Id. |
| usr | Pointer to an instance of this class. |
|
virtual |
|
virtual |
Override to (re)add set data request callbacks.
Reimplemented from DtSimComponent.
|
virtual |
Override to remove set data request callbacks.
Reimplemented from DtSimComponent.
|
static |
Callback to be invoked when onNotify() is called in the local task manager to indicate entity is about to start a new task.
Calls processOnTaskNotify().
| task | Task the aggregate is about to start. |
| notifier | The component that is responsible for executing the task. |
| usr | Pointer to an instance of this class. |
|
static |
(const DtString&,DtVrfObject*,DtSimManager*,
| name | Reader writer name of this component. |
| owner | The DtVrfObject that owns this component |
| simManager | The simulation manager (provides access to terrain, message interface, simulation clock). |
| desc | The component descriptor used to initialize this component. |
| parentRegistry | Pointer to the parent reader writer registry (the containing object that reads/writes this object). |
Reimplemented in DtDisaggregatedConvoyFormationController.
|
protectedvirtual |
Walks list of subordinates in formation state.
Calls DtFormationState::isAvailableForFormation() for each subordinate. If any subordinate fails this test, returns true, otherwise returns false.
|
protectedvirtual |
Handler for setFormationCallback().
If aggregate is currently tasked, calls updateFormationState(). Issues a DtSnapIntoFormationRequest to itself at the formation given in the incoming message.
| msg | Message containing a DtSetFormationRequest. |
|
protectedvirtual |
Handler for setFormationCallbackType().
If aggregate is currently tasked, calls updateFormationState(). Will only set the formation name. Usually used in conjunction with a task that will move the aggregate into the requested formation (as opposed to snapping it into formation).
| msg | Message containing a DtSetFormationRequest. |
|
protectedvirtual |
Handler for setHeadingCallback().
If aggregate is currently tasked, calls updateFormationState(). Issues a DtSnapIntoFormationRequest to itself at the heading given in the incoming message.
| msg | Message containing a DtSetHeadingRequest. |
|
protectedvirtual |
Handler for setLocationCallback().
If aggregate is currently tasked, calls updateFormationState(). Issues a DtSnapIntoFormationRequest to itself at the heading given in the incoming message.
| msg | Message containing a DtSetHeadingRequest. |
|
protectedvirtual |
Handler for snapIntoFormationCallback().
If aggregate is currently tasked, calls updateFormationState(). Then calls snapIntoFormation().
| msg | Message containing a DtSnapIntoFromationRequest. |
|
protectedvirtual |
Handler for subordinates changed callback.
If formation is of type DtOtherAggregateFormation, changes it to DtWorkingFormation. Next, if formation is of type DtWorkingFormation, calls generateWorkingFormation() to create a formation given the current aggregate location, orientation, and subordinate positions. Finally, calls updateFormationState().
| entId | The ID of the entity whose subordinates have changed (ID of the aggregate). |
|
protectedvirtual |
Puts the aggregate into the given formation, at the given location and heading.
Issues set data request messages to each subordinate in the aggregate. Computes the position for each subordinate needed to construct the formation at the given location and heading. For individual subordinates, issues DtSetLocationRequests and DtSetHeadingRequests at the computed location and given heading. If applyFormationToSubaggregates is true (recurse), then for aggregate subordinates, issues DtSnapIntoFormationRequests at the computed location and given heading, thereby recursively snapping the aggregate into formation. Otherwise (applyFormationToSubordinates is false, no recursion) issues DtSetLocationRequest and DtSetHeadingReuqest to aggregate subordinates in the same way as for individuals. This allows for mixed formation (don't recursively apply given formation to subordinate aggregates).
| formation | Type of formation to snap into. |
| location | Local position aggregate where aggregate should position itself in formation. |
| heading | Heading in radians at which aggregate should position itself in formation. |
|
protectedvirtual |
Get current formation position and formation type.
If aggregate has a working formation, returns the current ad hoc formation positions from the process state repository. Otherwise, looks up known type of formation (e.g. column, line, wedge), return the formation from the formation descriptor.
| formation | Type of formation (see extendedAggregateEnums.h for list of available types). |
|
protectedvirtual |
Generates the subset of subordinates available to participate in formation.
Only subordinates that are alive and not independently tasked are included in the result.
|
protectedvirtual |
Generates a list of formation positions for each entity in the formation.
If auto-promote-in-formation is false, positions are skipped in the formation for any entities that that have left the formation or are destroyed. Otherwise, the first n positions in the formation are used, based on the number of entities to be placed into formation.
|
protectedvirtual |
Helper function for generateFormationPositions().
|
protectedvirtual |
Constructs an ad hoc formation (set of positional offsets of participants) based on current relative positioning of subordinates, at given location and orientation.
| geocentricOrigin | Origin of coordinate system in geocentric coordinates, in which relative formation positions are computed from geocentric subordinate positions. |
| geocentricOrientation | Orientation of coordinate system in geocentric coordinates, to be used to compute formation positions from subordinate positions. |
| formation | constructed from relative subordinate positions. |
|
protectedvirtual |
Creates an ad hoc formation from the current eligible subordinates current positions relative to one another.
| formation | The generated formation. |
|
protectedvirtual |
Recomputes and updates current working formation in process state repository, and updates subordinate list and formation positional data.
|
protectedvirtual |
Register subordinateOrderChangedCallback with the DtOrganizationManager.
|
protectedvirtual |
Unregister subordinateOrderChangedCallback with the DtOrganizationManager.
|
protectedvirtual |
Send given request to ourself.
Fills out data request message and sends it through the aggregate's radio.
| request | A set data request to be issued to ourself. |
|
protectedvirtual |
Send given request to one of our subordinates.
Fills out data request message and sends it to subordinate through our entity's radio.
| request | The data request to send to the given subordinate. |
| subordinateObjectName | The object name of the subordinate to be given the set data request. |
|
protectedvirtual |
Creates myProcessState data member, and adds it to our process state repository manager.
Passes in the name and type specified in the component descriptor (if they exist) to the DtVrfProcessStateRepository::createRepository factory method. If name and/or type is not specified, uses the appropriate default strings defined in procSRTypes.h.
|
protectedvirtual |
Called when the entity is about to start a new task.
Checks to see if any subordinates need to be re-added into the formation This can occur when a subordinate is independently tasked, but is later set to be tasked by superior again. 'Rediscover' these subordinates and bring them back into the formation.
| task | Task aggregate is about to start. |
| notifier | Component responsible for executing task. |
|
staticprotected |
|
protectedvirtual |
|
protectedvirtual |
Add set data request callbacks.
Set data request callbacks are added when component is first created, and whenever component is enabled.
Reimplemented in DtDisaggregatedConvoyFormationController.
|
protected |
Callbacks are removed when component is disabled or destroyed.
Non-virtual because it is called from the destructor.
Reimplemented in DtDisaggregatedConvoyFormationController.
|
protected |
Descriptor used to configure this component.
|
protected |
Pointer to aggregate's state repository, cached in this class for convenience.
|
protected |
Pointer to aggregate's formation state repository, cached in this for convenience.
|
protected |
Flag used to indicate if the subordinateOrderChangedCallback() has been registered with the aggregate's organization manager.
This registration cannot occur until the first tick of the entity. This flag is initially false, and gets set to true in the first non-zero dT() tick..
|
protected |
Pointer to aggregate's command radio, cached in this class for convenience.
|
protected |
Pointer to aggregate's DtSetDataManager, cached in this class for convenience.
|
protected |
Container for state data associated with this component.
This state is saved and restored as part of a scenario (or checkpoint).
|
protected |
Flag used to indicate if formation-related callbacks are disabled (not registered).
These callbacks are disabled until the first tick. Flag is initially false, and then set to true in the first non-zero dt() tick.
|
protected |
Flag used to indicate first non-zero dT() tick.
|
protected |
|
protected |
Convenience pointer to the aggregate parameters for this entity.