VR-Forces 4.1.1 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 class DtAsyncJobToken;
25 class DtVrfObjectMessage;
26 
45 {
46 public:
49  DtConvoyTaskController(const DtString& name,
50  DtVrfObject* owner,
51  DtSimManager* simManager,
52  DtComponentDescriptor* desc = 0,
53  DtReaderWriterRegistry* parentRegistry = 0);
54 
56  virtual ~DtConvoyTaskController();
57 
59  virtual bool init();
60 
63  virtual DtString type() const;
64 
66  virtual void clearTask();
67 
69  virtual void registerTaskMsgCallbacks();
70 
75  static void convoyTaskCallback(DtSimMessage * msg, void * usr);
76 
80  static void taskCompleteReportCallback(const DtVrfObjectMessage* msg, void * usr);
81 
83  static void destinationChangedCallback(DtVrfObject* obj, void* usr);
84 
86  static void objectAboutToBeRemovedCallback(DtVrfObject* obj, void* usr);
87 
91  static DtSimComponent * creator(const DtString& name,
92  DtVrfObject* owner,
93  DtSimManager* simManager,
94  DtComponentDescriptor* desc = 0,
95  DtReaderWriterRegistry* parentRegistry = 0);
96 
97  virtual void tick();
98 
99  virtual bool createPSR();
100 
101 protected:
105  void onObjectAboutToBeRemoved(DtVrfObject* obj);
106 
110  virtual void onModifyVrfObject(DtVrfObject* obj);
111 
116  virtual void onConvoyTask(DtSimMessage * msg);
117 
120  virtual void onTaskComplete(const DtVrfObjectMessage* msg);
121 
126  virtual void sendTaskToSubordinate(const DtSimTask& task,
127  const DtString& subordinateObjectName);
128 
133  virtual void sendSetToSubordinate(DtSetDataRequest& request,
134  const DtString& subordinateObjectName);
135 
141  virtual bool setupTask(const DtVrfObject* aggregate, const DtVrfObject* destination,
142  bool pathPlan);
143 
151  virtual DtVector findAssemblyPoint(const DtVrfObject* aggregate, const DtVector& destination,
152  bool haveRails, const Coordinate_System* coordSys);
153 
160  virtual DtRwRailSegment* createEntrySegment(const DtVrfObject* entity,
161  const DtVector& assemblyPoint, const Coordinate_System* coordSys) const;
162 
169  virtual bool setupSubordinates(const DtVrfObject* aggregate, bool clearSubs, bool leaderSet = false);
170 
175  virtual void setupLeadOnDistance(int numberOfEntities, float distanceBetween);
176 
182  virtual bool createDirectRailPath(const DtVrfObject* leadEntity, const DtVrfObject* destination);
183 
191  virtual bool areSeparationDistancesWithinRange(const DtConvoyPSR::DtRwSubordinateList& subordinates,
192  const float distance, const float tolerance, const Coordinate_System* coordSys);
193 
197  virtual void setLeaderSpeed(const float speed);
198 
202  virtual void resettingPhaseTick(bool retask = true);
203 
206  virtual void startingPhaseTick();
207 
211  virtual void assemblingPhaseTick();
212 
215  virtual void convoyingPhaseTick();
216 
220  virtual void finishingPhaseTick();
221 
228  virtual DtVector findIntersectionOfLineAndCircle(const DtVector& centerPoint,
229  const DtVector& endPoint, double radius, const Coordinate_System* coordSys) const;
230 
238  virtual bool getEntityToPathEntry(const DtVrfObject* entity, const DtVector& assemblyPoint,
239  const Coordinate_System* coordSys);
240 
250  virtual DtRailSegment* findClosestEntryRail(const DtVrfObject* aggregate,
251  const double& radius,
252  DtRailSegmentList* rails,
253  int& railNumber,
254  const Coordinate_System* coordSys) const;
255 
263  virtual bool isPointWithinRadius(const DtVector& center, double radius,
264  const DtVector& point, const Coordinate_System* coordSys) const;
265 
273  virtual bool findPointOnRailOutsideSphere(const DtVector& center, const double& radius,
274  const DtRailSegment* segment, DtVector& resultPoint, const Coordinate_System* coordSys) const;
275 
277  virtual void registerDestinationChangedCallback();
278 
280  virtual void unregisterDestinationChangedCallback();
281 
290  virtual bool updateConvoySubordinates(DtVrfObject* aggregate,
291  std::vector<DtString>& tempList,
292  bool recursive = false);
293 
295  virtual bool isEntityPartOfConvoy(const DtString& name) const;
296 
297  virtual bool isEntityIndependentlyTasked(const DtVrfObject* entity) const;
298 
299  virtual void setConvoyFollowing();
300 
301  virtual void destroyedPhaseTick();
302 
303  double maxSearchRadius(const DtPoint& start, const DtPoint& end);
304 
310  virtual bool startPathPlan(const DtVrfObject* leadEntity,
311  const DtVrfObject* destination);
312 
315  virtual bool pathPlanFinished();
316 
322  virtual DtVector groundClamp(const DtVector& point, DtGeodeticCoord& lastPoint) const;
323 
324 private:
325 
328 
331 
334 
338 };

Document ID: Generated on Mon Apr 8 19:24:01 EDT 2013 from SVN revision 125877
Copyright © 2005-2013 VT MÄK. All Rights Reserved (www.mak.com)