VR-Forces 4.10 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 beginMoveAlong(const DtUUID& route, bool traverseForward, bool startAtClosestPoint);
264 
272  virtual bool generateFormationRoutes(const DtVrfObject& route,
273  bool reverseDirection);
274 
280  virtual void buildEntityRouteFollowingMap(std::map<const DtVrfObject*, DtEntityRouteFollowingData>& map);
281 
288  virtual void sendTaskToSubordinate(const DtSimTask& task,
289  const DtUUID& subordinate) const;
290 
297  virtual void sendSetDataToSubordinate(const DtSetDataRequest& setData,
298  const DtUUID& subordinate) const;
299 
301  virtual void deleteFormationRoutes();
302 
309  virtual void onObjectManagerRemoveAndDeleteAll(const DtVrfObjectManager& objectManager);
310 
323  virtual bool calculateInitialPositionAndHeadingAlongRoute(const DtVrfObject& route,
324  bool traverseForward, DtVector& initialPosition, double& initialHeading);
325 
332  virtual void sendVrfObjectModifyMsg(const DtUUID& object, DtList* vertices) const;
333 
336  virtual void initializeNextRouteIndex();
337 
339  virtual unsigned int nextRouteIndex();
340 
361  virtual bool buildOffsetRoute(const DtList& localRouteVertexList,
362  const DtVector& bodyOffset,
363  bool reverseDirection,
364  bool generateRoutesWithRoundedCorners,
365  double vertexSpacingAlongRoundedCorners,
366  DtList& geocentricOffsetRouteVertexList,
367  bool& dataAvailable);
368 
376  virtual void registerRouteCallbacksIfNeeded();
377 
383  virtual void initializeMemberDataFromDescriptor(
384  const DtAggregateMoveAlongDescriptor& desc);
385 
391  virtual void maintainMovementInFormation();
392 
398  virtual void reevaluateMoveAlongAssignments();
399 
401  virtual void reevaluateFormationMoveAlongAssignments();
402 
409  virtual void sendClearTask(const DtUUID& recipient, const DtSimTaskMessageType& taskType) const;
410 
417  virtual bool adjustOffsetRouteStart(std::vector<DtVector>& route,
418  bool& dataAvailable) const;
419 
426  virtual bool adjustOffsetRouteEnd(std::vector<DtVector>& route,
427  bool& dataAvailable) const;
428 
434  virtual bool extendRouteStart(std::vector<DtVector>& route,
435  double distance) const;
436 
443  virtual bool clipRouteEnd(std::vector<DtVector>& route, double distance) const;
444 
449  virtual DtMaintainFormationMonitor* createFormationMonitor(const DtVrfObject* entity) const;
450 
453  virtual bool publishFormationRoutes() const;
454 
457  virtual bool shouldGroundClamp() const;
458 
459 private:
460 
463 
466 
469 
470 protected:
471 
473  std::map<int, DtString> myPromotionIndexRouteNameMap;
474 
480 
484 
487 
489  std::map<const DtVrfObject*, DtEntityRouteFollowingData> myEntityRouteFollowingMap;
490 
492  std::map<const DtVrfObject*, DtEntityRouteTraversalState> myEntityRouteTraversalStateMap;
493 
497 
501 
506 
510 
514 
518 
521 
525 
530 
533 
536  unsigned int myNextRouteIndex;
537 
539 };
540 
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:496
#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:500
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:483
virtual void registerTaskMsgCallbacks()
DtAggregateMoveAlongPSR * myProcessState
Container for state data associated with this component.
Definition: disaggregatedMoveAlongController.h:517
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:505
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:492
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:479
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:489
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:536
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:524
const DtAggregateMoveAlongDescriptor * myAggregateMoveAlongDescriptor
Pointer to descriptor used to configure this object.
Definition: disaggregatedMoveAlongController.h:520
DtSimTaskStatePtr myCachedTaskState
Definition: disaggregatedMoveAlongController.h:538
virtual DtSimTaskStatePtr currentTaskState() const
double myVertexSpacingAlongRoundedCorners
Spacing in meters between extra vertices inserted in generated routes to form rounded turns...
Definition: disaggregatedMoveAlongController.h:513
class DtVrfObjectManager:
Definition: vrfObjectManager.h:202
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:509
std::map< int, DtString > myPromotionIndexRouteNameMap
Map of formation positions to generated route object names.
Definition: disaggregatedMoveAlongController.h:473
const DtTaskControllerComponent & operator=(const DtTaskControllerComponent &orig)
assignment operator
bool myFirstTick
Flag used to indicate first non-zero dT() tick.
Definition: disaggregatedMoveAlongController.h:532
class DtMaintainFormationMonitor:
Definition: maintainFormationMonitor.h:29
DtSimTask is an abstract base class from which real tasks can derive.
Definition: simTask.h:31
bool myRegisteredObjectCallbacks
Flag used to indicate whether route added/changed/removed callbacks have yet been registered...
Definition: disaggregatedMoveAlongController.h:529
The simulation engine is controlled by a single,top-level class called the Simulation Manager...
Definition: simManager.h:103
double myTimeToNextMaintainFormationTick
Simulation time for next tick of myMaintainFormationMonitor.
Definition: disaggregatedMoveAlongController.h:486
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 Tue Sep 21 17:42:52 EDT 2021 from SVN revision 234861
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)