VR-Forces 4.1 Class Documentation
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 
22 
24 class DtFormationState;
25 class DtMoveAlongTask;
26 class DtSimMessage;
29 class DtSetDataRequest;
30 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 
134  static void moveAlongTaskCallback(DtSimMessage * msg, void * usr, DtSimTaskStatePtr taskState);
135 
142  static void taskCompleteReportCallback(DtSimMessage * msg, void * usr);
143 
151  static void formationChangedCallback(const DtFormationState& formationState,
152  void* usr);
153 
160  static void routeChangedCallback(DtVrfObject* obj, void * usr);
161 
168  static void objectAddedCb(DtVrfObject * vrfObject, void * usr);
169 
175  static void objectAboutToBeRemovedCb(DtVrfObject * vrfObject, void * usr);
176 
184  static void objectManagerRemoveAndDeleteAllCallback(
185  const DtVrfObjectManager& objectManager, void* usr);
186 
190  static DtSimComponent * creator(const DtString& name,
191  DtVrfObject* owner,
192  DtSimManager* simManager,
193  DtComponentDescriptor* desc = 0,
194  DtReaderWriterRegistry* parentRegistry = 0);
195 
196 protected:
197 
212  virtual void initializeMoveAlongTask(DtVrfObject& route, DtIteratorDirection traversalDirection,
213  bool startAtClosestPoint, DtSimTaskStatePtr taskState);
214 
220  virtual void processFormationChanged(const DtFormationState& formationState);
221 
225  virtual void processMoveAlongTask(DtSimMessage * msg, DtSimTaskStatePtr taskState);
226 
232  virtual void processTaskComplete(DtSimMessage * msg);
233 
237  virtual void processRouteChanged(const DtVrfObject& obj);
238 
245  virtual void processObjectAdded(DtVrfObject * vrfObject);
246 
253  virtual void processObjectAboutToBeRemoved(DtVrfObject * vrfObject);
254 
260  virtual void moveTo(const DtString& routeName,
261  bool traverseForward);
262 
273  virtual void moveAlong(const DtString& route, bool traverseForward, bool startAtClosestPoint);
274 
281  virtual void generateFormationRoutes(const DtVrfObject& route,
282  bool reverseDirection);
283 
289  virtual void buildEntityRouteFollowingMap(
290  std::map<DtVrfObject*, DtEntityRouteFollowingData>& map);
291 
298  virtual void sendTaskToSubordinate(const DtSimTask& task,
299  const DtString& subordinateObjectName) const;
300 
307  virtual void sendSetDataToSubordinate(const DtSetDataRequest& setData,
308  const DtString& subordinateObjectName) const;
309 
311  virtual void deleteFormationRoutes();
312 
319  virtual void onObjectManagerRemoveAndDeleteAll(const DtVrfObjectManager& objectManager);
320 
333  virtual bool calculateInitialPositionAndHeadingAlongRoute(const DtVrfObject& route,
334  bool traverseForward, DtVector& initialPosition, double& initialHeading);
335 
342  virtual void sendVrfObjectModifyMsg(const DtEntityIdentifier& id, DtList* vertices) const;
343 
346  virtual void initializeNextRouteIndex();
347 
349  virtual unsigned int nextRouteIndex();
350 
370  virtual bool buildOffsetRoute(const DtList& localRouteVertexList,
371  const DtVector& bodyOffset,
372  bool reverseDirection,
373  bool generateRoutesWithRoundedCorners,
374  double vertexSpacingAlongRoundedCorners,
375  DtList& geocentricOffsetRouteVertexList);
376 
384  virtual void registerRouteCallbacksIfNeeded();
385 
391  virtual void initializeMemberDataFromDescriptor(
392  const DtAggregateMoveAlongDescriptor& desc);
393 
399  virtual void maintainMovementInFormation();
400 
406  virtual void reevaluateMoveAlongAssignments();
407 
414  virtual void sendClearTask(const DtString& recipientName, const DtSimTaskMessageType& taskType) const;
415 
422  virtual bool adjustOffsetRouteStart(std::vector<DtVector>& route) const;
423 
430  virtual bool adjustOffsetRouteEnd(std::vector<DtVector>& route) const;
431 
437  virtual bool extendRouteStart(std::vector<DtVector>& route,
438  double distance) const;
439 
446  virtual bool clipRouteEnd(std::vector<DtVector>& route, double distance) const;
447 
452  virtual DtMaintainFormationMonitor* createFormationMonitor(DtVrfObject* entity) const;
453 
456  virtual bool publishFormationRoutes() const;
457 
460  virtual bool shouldGroundClamp() const;
461 
462 private:
463 
466 
469 
472 
473 protected:
474 
476  std::map<int, DtString> myPromotionIndexRouteNameMap;
477 
483 
487 
490 
492  std::map<DtVrfObject*, DtEntityRouteFollowingData> myEntityRouteFollowingMap;
493 
495  std::map<DtVrfObject*, DtEntityRouteTraversalState> myEntityRouteTraversalStateMap;
496 
500 
504 
509 
513 
517 
521 
524 
528 
533 
536 
539  unsigned int myNextRouteIndex;
540 
542 };
543 

Document ID: Generated on Tue Jan 29 18:21:16 EST 2013 from SVN revision 123193
Copyright © 2005-2013 VT MÄK Inc. All Rights Reserved (www.mak.com)