VR-Forces 4.3 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator 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 DtString 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(DtVrfObject* obj, void * usr);
155 
162  static void objectAddedCb(DtVrfObject * vrfObject, void * usr);
163 
169  static void objectAboutToBeRemovedCb(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(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(DtVrfObject * vrfObject);
236 
243  virtual void processObjectAboutToBeRemoved(DtVrfObject * vrfObject);
244 
250  virtual void moveTo(const DtString& routeName,
251  bool traverseForward);
252 
263  virtual void moveAlong(const DtString& route, bool traverseForward, bool startAtClosestPoint);
264 
271  virtual void generateFormationRoutes(const DtVrfObject& route,
272  bool reverseDirection);
273 
279  virtual void buildEntityRouteFollowingMap(
280  std::map<DtVrfObject*, DtEntityRouteFollowingData>& map);
281 
288  virtual void sendTaskToSubordinate(const DtSimTask& task,
289  const DtString& subordinateObjectName) const;
290 
297  virtual void sendSetDataToSubordinate(const DtSetDataRequest& setData,
298  const DtString& subordinateObjectName) 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 DtEntityIdentifier& id, DtList* vertices) const;
333 
336  virtual void initializeNextRouteIndex();
337 
339  virtual unsigned int nextRouteIndex();
340 
360  virtual bool buildOffsetRoute(const DtList& localRouteVertexList,
361  const DtVector& bodyOffset,
362  bool reverseDirection,
363  bool generateRoutesWithRoundedCorners,
364  double vertexSpacingAlongRoundedCorners,
365  DtList& geocentricOffsetRouteVertexList);
366 
374  virtual void registerRouteCallbacksIfNeeded();
375 
381  virtual void initializeMemberDataFromDescriptor(
382  const DtAggregateMoveAlongDescriptor& desc);
383 
389  virtual void maintainMovementInFormation();
390 
396  virtual void reevaluateMoveAlongAssignments();
397 
404  virtual void sendClearTask(const DtString& recipientName, const DtSimTaskMessageType& taskType) const;
405 
412  virtual bool adjustOffsetRouteStart(std::vector<DtVector>& route) const;
413 
420  virtual bool adjustOffsetRouteEnd(std::vector<DtVector>& route) const;
421 
427  virtual bool extendRouteStart(std::vector<DtVector>& route,
428  double distance) const;
429 
436  virtual bool clipRouteEnd(std::vector<DtVector>& route, double distance) const;
437 
442  virtual DtMaintainFormationMonitor* createFormationMonitor(DtVrfObject* entity) const;
443 
446  virtual bool publishFormationRoutes() const;
447 
450  virtual bool shouldGroundClamp() const;
451 
452 private:
453 
456 
459 
462 
463 protected:
464 
466  std::map<int, DtString> myPromotionIndexRouteNameMap;
467 
473 
477 
480 
482  std::map<DtVrfObject*, DtEntityRouteFollowingData> myEntityRouteFollowingMap;
483 
485  std::map<DtVrfObject*, DtEntityRouteTraversalState> myEntityRouteTraversalStateMap;
486 
490 
494 
499 
503 
507 
511 
514 
518 
523 
526 
529  unsigned int myNextRouteIndex;
530 
532 };
533 

Document ID: Generated on Wed Mar 11 21:20:57 EDT 2015 from SVN revision 150940
Copyright © 2005-2014 VT MÄK. All Rights Reserved (www.mak.com)