VR-Forces 4.2 Class Documentation
convoyTaskController.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2010 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
11 
12 #pragma once
13 
15 #include "vrfobjcore/convoyPSR.h"
18 #include "vrftasks/setDataReq.h"
19 #include "vrfutil/rwRailSegment.h"
20 #include "vrfutil/rwReal.h"
22 #include "terrainCS/coordSystem.h"
23 
24 #include <boost/shared_ptr.hpp>
25 
26 class DtAsyncJobMapEntry;
27 class DtVrfObjectMessage;
28 
47 {
48 public:
51  DtConvoyTaskController(const DtString& name,
52  DtVrfObject* owner,
53  DtSimManager* simManager,
54  DtComponentDescriptor* desc = 0,
55  DtReaderWriterRegistry* parentRegistry = 0);
56 
58  virtual ~DtConvoyTaskController();
59 
61  virtual bool init();
62 
65  virtual DtString type() const;
66 
68  virtual void clearTask();
69 
71  virtual void registerTaskMsgCallbacks();
72 
77  static void convoyTaskCallback(DtSimMessage * msg, void * usr);
78 
82  static void taskCompleteReportCallback(const DtVrfObjectMessage* msg, void * usr);
83 
85  static void destinationChangedCallback(DtVrfObject* obj, void* usr);
86 
88  static void objectAboutToBeRemovedCallback(DtVrfObject* obj, void* usr);
89 
93  static DtSimComponent * creator(const DtString& name,
94  DtVrfObject* owner,
95  DtSimManager* simManager,
96  DtComponentDescriptor* desc = 0,
97  DtReaderWriterRegistry* parentRegistry = 0);
98 
99  virtual void tick();
100 
101  virtual bool createPSR();
102 
103 protected:
107  void onObjectAboutToBeRemoved(DtVrfObject* obj);
108 
112  virtual void onModifyVrfObject(DtVrfObject* obj);
113 
118  virtual void onConvoyTask(DtSimMessage * msg);
119 
122  virtual void onTaskComplete(const DtVrfObjectMessage* msg);
123 
128  virtual void sendTaskToSubordinate(const DtSimTask& task,
129  const DtString& subordinateObjectName);
130 
135  virtual void sendSetToSubordinate(DtSetDataRequest& request,
136  const DtString& subordinateObjectName);
137 
143  virtual bool setupTask(const DtVrfObject* aggregate, const DtVrfObject* destination,
144  bool pathPlan);
145 
153  virtual DtVector findAssemblyPoint(const DtVrfObject* aggregate, const DtVector& destination,
154  bool haveRails, const Coordinate_System* coordSys);
155 
162  virtual DtRwRailSegment* createEntrySegment(const DtVrfObject* entity,
163  const DtVector& assemblyPoint, const Coordinate_System* coordSys) const;
164 
171  virtual bool setupSubordinates(const DtVrfObject* aggregate, bool clearSubs, bool leaderSet = false);
172 
177  virtual void setupLeadOnDistance(int numberOfEntities, float distanceBetween);
178 
184  virtual bool createDirectRailPath(const DtVrfObject* leadEntity, const DtVrfObject* destination);
185 
193  virtual bool areSeparationDistancesWithinRange(const DtConvoyPSR::DtRwSubordinateList& subordinates,
194  const float distance, const float tolerance, const Coordinate_System* coordSys);
195 
199  virtual void setLeaderSpeed(const float speed);
200 
204  virtual void resettingPhaseTick(bool retask = true);
205 
208  virtual void startingPhaseTick();
209 
213  virtual void assemblingPhaseTick();
214 
217  virtual void convoyingPhaseTick();
218 
222  virtual void finishingPhaseTick();
223 
230  virtual DtVector findIntersectionOfLineAndCircle(const DtVector& centerPoint,
231  const DtVector& endPoint, double radius, const Coordinate_System* coordSys) const;
232 
241  virtual bool taskEntityToMoveToAssemblyPt(const DtVrfObject* entity, const DtVector& assemblyPoint,
242  const Coordinate_System* coordSys);
243 
245  virtual bool getEntityPathToEntry(const DtVrfObject* entity, const DtVector& assemblyPoint,
246  const Coordinate_System* coordSys);
247 
257  virtual DtRailSegment* findClosestEntryRail(const DtVrfObject* aggregate,
258  const double& radius,
259  DtRailSegmentList* rails,
260  int& railNumber,
261  const Coordinate_System* coordSys) const;
262 
270  virtual bool isPointWithinRadius(const DtVector& center, double radius,
271  const DtVector& point, const Coordinate_System* coordSys) const;
272 
280  virtual bool findPointOnRailOutsideSphere(const DtVector& center, const double& radius,
281  const DtRailSegment* segment, DtVector& resultPoint, const Coordinate_System* coordSys) const;
282 
284  virtual void registerDestinationChangedCallback();
285 
287  virtual void unregisterDestinationChangedCallback();
288 
297  virtual bool updateConvoySubordinates(DtVrfObject* aggregate,
298  std::vector<DtString>& tempList,
299  bool recursive = false);
300 
302  virtual bool isEntityPartOfConvoy(const DtString& name) const;
303 
304  virtual bool isEntityIndependentlyTasked(const DtVrfObject* entity) const;
305 
306  virtual void setConvoyFollowing();
307 
308  virtual void destroyedPhaseTick();
309 
310  double maxSearchRadius(const DtPoint& start, const DtPoint& end);
311 
317  virtual bool startPathPlan(const DtVrfObject* leadEntity,
318  const DtVrfObject* destination);
319 
322  virtual bool pathPlanFinished();
323 
329  virtual DtVector groundClamp(const DtVector& point, DtGeodeticCoord& lastPoint) const;
330 
331 private:
332 
334  boost::shared_ptr<DtAsyncJobMapEntry> myPathJobEntry;
335 
338 
341 
345 };

Document ID: Generated on Sun Nov 24 19:49:21 EST 2013 from SVN revision 133924
Copyright © 2005-2013 VT MÄK. All Rights Reserved (www.mak.com)