VR-Forces 4.8 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
disaggregatedMoveAlongController.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2004 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
12 
13 #pragma once
14 
15 #include <vlutil/vlConfig.h>
16 #include <vector>
17 
21 
23 class DtFormationState;
24 class DtMoveAlongTask;
25 class DtSimMessage;
28 class DtSetDataRequest;
29 class DtVrfObjectManager;
32 
66 {
67 public:
68 
72  DtVrfObject* owner,
73  DtSimManager* simManager,
74  DtComponentDescriptor* desc = 0,
75  DtReaderWriterRegistry* parentRegistry = 0);
76 
77 
80 
83  virtual const char* type() const;
84 
90  virtual bool init();
91 
97  virtual void registerTaskMsgCallbacks();
98 
108  virtual void tick();
109 
115  virtual void clearTask();
116 
122  virtual bool createPSR();
123 
126  virtual DtSimTaskStatePtr currentTaskState() const;
127 
128  static void moveAlongCallback(DtSimMessage* msg, void* usr, DtSimTaskStatePtr taskStatePtr);
129 
136  static void taskCompleteReportCallback(DtSimMessage * msg, void * usr);
137 
145  static void formationChangedCallback(const DtFormationState& formationState,
146  void* usr);
147 
154  static void routeChangedCallback(const DtVrfObject* obj, void * usr);
155 
162  static void objectAddedCb(const DtVrfObject* vrfObject, void * usr);
163 
169  static void objectAboutToBeRemovedCb(const DtVrfObject* vrfObject, void * usr);
170 
178  static void objectManagerRemoveAndDeleteAllCallback(
179  const DtVrfObjectManager& objectManager, void* usr);
180 
184  static DtSimComponent * creator(const DtString& name,
185  DtVrfObject* owner,
186  DtSimManager* simManager,
187  DtComponentDescriptor* desc = 0,
188  DtReaderWriterRegistry* parentRegistry = 0);
189 
190 protected:
191  virtual void processMoveAlong(const DtTaskMessage& msg, DtSimTaskStatePtr taskStatePtr);
192 
207  virtual void initializeMoveAlongTask(const DtVrfObject& route, DtIteratorDirection traversalDirection,
208  bool startAtClosestPoint, DtSimTaskStatePtr taskState);
209 
215  virtual void processFormationChanged(const DtFormationState& formationState);
216 
222  virtual void processTaskComplete(DtSimMessage * msg);
223 
227  virtual void processRouteChanged(const DtVrfObject& obj);
228 
235  virtual void processObjectAdded(const DtVrfObject* vrfObject);
236 
243  virtual void processObjectAboutToBeRemoved(const DtVrfObject* vrfObject);
244 
250  virtual void moveTo(const DtUUID& route,
251  bool traverseForward);
252 
263  virtual void moveAlong(const DtUUID& route, bool traverseForward, bool startAtClosestPoint);
264 
271  virtual void generateFormationRoutes(const DtVrfObject& route,
272  bool reverseDirection);
273 
279  virtual void buildEntityRouteFollowingMap(std::map<const DtVrfObject*, DtEntityRouteFollowingData>& map);
280 
287  virtual void sendTaskToSubordinate(const DtSimTask& task,
288  const DtUUID& subordinate) const;
289 
296  virtual void sendSetDataToSubordinate(const DtSetDataRequest& setData,
297  const DtUUID& subordinate) const;
298 
300  virtual void deleteFormationRoutes();
301 
308  virtual void onObjectManagerRemoveAndDeleteAll(const DtVrfObjectManager& objectManager);
309 
322  virtual bool calculateInitialPositionAndHeadingAlongRoute(const DtVrfObject& route,
323  bool traverseForward, DtVector& initialPosition, double& initialHeading);
324 
331  virtual void sendVrfObjectModifyMsg(const DtUUID& object, DtList* vertices) const;
332 
335  virtual void initializeNextRouteIndex();
336 
338  virtual unsigned int nextRouteIndex();
339 
359  virtual bool buildOffsetRoute(const DtList& localRouteVertexList,
360  const DtVector& bodyOffset,
361  bool reverseDirection,
362  bool generateRoutesWithRoundedCorners,
363  double vertexSpacingAlongRoundedCorners,
364  DtList& geocentricOffsetRouteVertexList);
365 
373  virtual void registerRouteCallbacksIfNeeded();
374 
380  virtual void initializeMemberDataFromDescriptor(
381  const DtAggregateMoveAlongDescriptor& desc);
382 
388  virtual void maintainMovementInFormation();
389 
395  virtual void reevaluateMoveAlongAssignments();
396 
403  virtual void sendClearTask(const DtUUID& recipient, const DtSimTaskMessageType& taskType) const;
404 
411  virtual bool adjustOffsetRouteStart(std::vector<DtVector>& route) const;
412 
419  virtual bool adjustOffsetRouteEnd(std::vector<DtVector>& route) const;
420 
426  virtual bool extendRouteStart(std::vector<DtVector>& route,
427  double distance) const;
428 
435  virtual bool clipRouteEnd(std::vector<DtVector>& route, double distance) const;
436 
441  virtual DtMaintainFormationMonitor* createFormationMonitor(const DtVrfObject* entity) const;
442 
445  virtual bool publishFormationRoutes() const;
446 
449  virtual bool shouldGroundClamp() const;
450 
451 private:
452 
455 
458 
461 
462 protected:
463 
465  std::map<int, DtString> myPromotionIndexRouteNameMap;
466 
472 
476 
479 
481  std::map<const DtVrfObject*, DtEntityRouteFollowingData> myEntityRouteFollowingMap;
482 
484  std::map<const DtVrfObject*, DtEntityRouteTraversalState> myEntityRouteTraversalStateMap;
485 
489 
493 
498 
502 
506 
510 
513 
517 
522 
525 
528  unsigned int myNextRouteIndex;
529 
531 };
532 
UUID is a unique ID wrapper class.
Definition: rwUUID.h:222
DtVrfAggregateStateRepository * myAggregateStateRepository
Pointer to aggregate&#39;s state repository, cached in this class for convenience.
Definition: disaggregatedMoveAlongController.h:488
#define DT_DLL_vrfmodel
This file is used to determine how to build.
Definition: vrfmodelDefines.h:24
DtFormationState * myFormationState
Pointer to aggregate&#39;s formation state object, cached in this class for convenience.
Definition: disaggregatedMoveAlongController.h:492
DtVrfObject is used to represent any type of simulated object (entities, aggregate, control objects) in a VR-Forces application.
Definition: vrfObject.h:215
Definition: formationState.h:38
double myMaintainFormationTickInterval
Simulation time interval at which myMaintainFormationMonitor should be ticked.
Definition: disaggregatedMoveAlongController.h:475
virtual void registerTaskMsgCallbacks()
DtAggregateMoveAlongPSR * myProcessState
Container for state data associated with this component.
Definition: disaggregatedMoveAlongController.h:509
This class provides a base class for all controllers that are capable of executing a DtSimTask...
Definition: singleTaskControllerComponent.h:20
DtCompatibilityRadio * myCommandRadio
Pointer to aggregate&#39;s command radio, cached in this class for convenience.
Definition: disaggregatedMoveAlongController.h:497
A readable, writable type whose name is the name of a component and that has a list of component name...
Definition: componentDescriptor.h:42
Definition: readerWriterRegistry.h:39
Class DtDisaggregatedMoveAlongController is a task controller that models aggregate entity move-along...
Definition: disaggregatedMoveAlongController.h:65
virtual const char * type() const =0
Returns a string identifies the class type of component.
Class DtAggregateMoveAlongDescriptor holds all of the readable/writeable parameters used to configure...
Definition: aggregateMoveAlongDescriptor.h:30
virtual bool init()
Calls setRadio()
std::map< const DtVrfObject *, DtEntityRouteTraversalState > myEntityRouteTraversalStateMap
Map of subordinate and current route traversal state.
Definition: disaggregatedMoveAlongController.h:484
virtual void clearTask()
If component is currently tasked, calls clearPendingSubtasks(), sets the tasked flag to false...
DtBoost::shared_ptr< DtSimTaskState > DtSimTaskStatePtr
Definition: taskAndTaskStateDefines.h:18
DtMaintainFormationMonitor * myMaintainFormationMonitor
Object that monitors current subordinate positions and adjusts them if necessary to maintain correct ...
Definition: disaggregatedMoveAlongController.h:471
DtIteratorDirection
Definition: iteratorBase.h:23
DtSetDataRequest is an abstract base class from which real setDataRequests can derive.
Definition: setDataRequest.h:40
std::map< const DtVrfObject *, DtEntityRouteFollowingData > myEntityRouteFollowingMap
Map of subordinates and route following data.
Definition: disaggregatedMoveAlongController.h:481
DT_DLL_VRVCORE double distance(const makVrv::DtCoordinateSystem &, const DtVector &from, const DtVector &to)
Returns the distance from the two points.
unsigned int myNextRouteIndex
Counter used in naming generated routes.
Definition: disaggregatedMoveAlongController.h:528
File: simMsg.h.
Definition: simMessage.h:35
DtMoveAlongTask represents a Move Along Route task for an entity to perform.
Definition: moveAlongTasks.h:46
virtual void tick()
This gives the thread of control to the component.
bool myRegisteredFormationChangedCallback
Flag used to indicate whether formation changed callback has been registered yet. ...
Definition: disaggregatedMoveAlongController.h:516
const DtAggregateMoveAlongDescriptor * myAggregateMoveAlongDescriptor
Pointer to descriptor used to configure this object.
Definition: disaggregatedMoveAlongController.h:512
DtSimTaskStatePtr myCachedTaskState
Definition: disaggregatedMoveAlongController.h:530
virtual DtSimTaskStatePtr currentTaskState() const
double myVertexSpacingAlongRoundedCorners
Spacing in meters between extra vertices inserted in generated routes to form rounded turns...
Definition: disaggregatedMoveAlongController.h:505
class DtVrfObjectManager:
Definition: vrfObjectManager.h:201
The DtSimComponent class is the base class for the entire simulation model component hierarchy...
Definition: simComponent.h:67
bool myGenerateRoutesWithRoundedCorners
Flag indicating all generated route should have rounded turns.
Definition: disaggregatedMoveAlongController.h:501
std::map< int, DtString > myPromotionIndexRouteNameMap
Map of formation positions to generated route object names.
Definition: disaggregatedMoveAlongController.h:465
const DtTaskControllerComponent & operator=(const DtTaskControllerComponent &orig)
assignment operator
bool myFirstTick
Flag used to indicate first non-zero dT() tick.
Definition: disaggregatedMoveAlongController.h:524
class DtMaintainFormationMonitor:
Definition: maintainFormationMonitor.h:29
DtSimTask is an abstract base class from which real tasks can derive.
Definition: simTask.h:33
bool myRegisteredObjectCallbacks
Flag used to indcate whether route added/changed/removed callbacks have yet been registered.
Definition: disaggregatedMoveAlongController.h:521
The simulation engine is controlled by a single,top-level class called the Simulation Manager...
Definition: simManager.h:102
double myTimeToNextMaintainFormationTick
Simulation time for next tick of myMaintainFormationMonitor.
Definition: disaggregatedMoveAlongController.h:478
file aggregateMoveAlongPSR.h
Definition: aggregateMoveAlongPSR.h:31
Definition: vrfAggregateStateRepository.h:22
DtCompatibilityRadio.
Definition: compatibilityRadio.h:30
A DtTaskMsg is a DtRadioMsg with a pointer to a task.
Definition: taskMessage.h:19

Document ID: Generated on Thu Aug 27 10:56:05 EDT 2020 from SVN revision 217100
Copyright © 2005-2020 MAK Technologies. All Rights Reserved (www.mak.com)