VR-Forces 4.3 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
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"
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 class DtBoolSetting;
29 
48 {
49 public:
52  DtConvoyTaskController(const DtString& name,
53  DtVrfObject* owner,
54  DtSimManager* simManager,
55  DtComponentDescriptor* desc = 0,
56  DtReaderWriterRegistry* parentRegistry = 0);
57 
59  virtual ~DtConvoyTaskController();
60 
62  virtual bool init();
63 
66  virtual DtString type() const;
67 
69  virtual void clearTask();
70 
72  virtual void resetTask();
73 
75  virtual void registerTaskMsgCallbacks();
76 
81  static void convoyTaskCallback(DtSimMessage * msg, void * usr);
82 
86  static void taskCompleteReportCallback(const DtVrfObjectMessage* msg, void * usr);
87 
89  static void destinationChangedCallback(DtVrfObject* obj, void* usr);
90 
92  static void objectAboutToBeRemovedCallback(DtVrfObject* obj, void* usr);
93 
97  static DtSimComponent * creator(const DtString& name,
98  DtVrfObject* owner,
99  DtSimManager* simManager,
100  DtComponentDescriptor* desc = 0,
101  DtReaderWriterRegistry* parentRegistry = 0);
102 
104  virtual void preFirstTickInit();
105 
106  virtual void tick();
107 
108  virtual bool createPSR();
109 
110  static void settingConsumerCallback(const DtSettingsObject* settingsObject,
111  void* usr);
112 
113 protected:
117  void onObjectAboutToBeRemoved(DtVrfObject* obj);
118 
122  virtual void onModifyVrfObject(DtVrfObject* obj);
123 
128  virtual void onConvoyTask(DtSimMessage * msg);
129 
132  virtual void onTaskComplete(const DtVrfObjectMessage* msg);
133 
138  virtual void sendTaskToSubordinate(const DtSimTask& task,
139  const DtString& subordinateObjectName);
140 
145  virtual void sendSetToSubordinate(DtSetDataRequest& request,
146  const DtString& subordinateObjectName);
147 
153  virtual bool setupTask(const DtVrfObject* aggregate, const DtVrfObject* destination,
154  bool pathPlan);
155 
163  virtual DtVector findAssemblyPoint(const DtVrfObject* aggregate, const DtVector& destination,
164  bool haveRails, const Coordinate_System* coordSys);
165 
172  virtual DtRwRailSegment* createEntrySegment(const DtVrfObject* entity,
173  const DtVector& assemblyPoint, const Coordinate_System* coordSys) const;
174 
181  virtual bool setupSubordinates(const DtVrfObject* aggregate, bool clearSubs, bool& leaderSet);
182 
187  virtual void setupLeadOnDistance(int numberOfEntities, float distanceBetween);
188 
194  virtual bool createDirectRailPath(const DtVrfObject* leadEntity, const DtVrfObject* destination);
195 
203  virtual bool areSeparationDistancesWithinRange(const DtConvoyPSR::DtRwSubordinateList& subordinates,
204  const float distance, const float tolerance, const Coordinate_System* coordSys);
205 
209  virtual void setLeaderSpeed(const float speed);
210 
214  virtual void resettingPhaseTick(bool retask = true);
215 
218  virtual void startingPhaseTick();
219 
223  virtual void assemblingPhaseTick();
224 
227  virtual void convoyingPhaseTick();
228 
232  virtual void finishingPhaseTick();
233 
240  virtual DtVector findIntersectionOfLineAndCircle(const DtVector& centerPoint,
241  const DtVector& endPoint, double radius, const Coordinate_System* coordSys) const;
242 
251  virtual bool taskEntityToMoveToAssemblyPt(const DtVrfObject* entity, const DtVector& assemblyPoint,
252  const Coordinate_System* coordSys);
253 
255  virtual bool getEntityPathToEntry(const DtVrfObject* entity, const DtVector& assemblyPoint,
256  const Coordinate_System* coordSys);
257 
267  virtual DtRailSegment* findClosestEntryRail(const DtVrfObject* aggregate,
268  const double& radius,
269  DtRailSegmentList* rails,
270  int& railNumber,
271  const Coordinate_System* coordSys) const;
272 
280  virtual bool isPointWithinRadius(const DtVector& center, double radius,
281  const DtVector& point, const Coordinate_System* coordSys) const;
282 
290  virtual bool findPointOnRailOutsideSphere(const DtVector& center, const double& radius,
291  const DtRailSegment* segment, DtVector& resultPoint, const Coordinate_System* coordSys) const;
292 
294  virtual void registerDestinationChangedCallback();
295 
297  virtual void unregisterDestinationChangedCallback();
298 
307  virtual bool updateConvoySubordinates(DtVrfObject* aggregate,
308  std::vector<DtString>& tempList,
309  bool recursive = false);
310 
312  virtual bool isEntityPartOfConvoy(const DtString& name) const;
313 
314  virtual bool isEntityIndependentlyTasked(const DtVrfObject* entity) const;
315 
316  virtual void setConvoyFollowing();
317 
318  virtual void destroyedPhaseTick();
319 
320  double maxSearchRadius(const DtPoint& start, const DtPoint& end);
321 
327  virtual bool startPathPlan(const DtVrfObject* leadEntity,
328  const DtVrfObject* destination);
329 
332  virtual bool pathPlanFinished();
333 
339  virtual DtVector groundClamp(const DtVector& point, DtGeodeticCoord& lastPoint) const;
340 
342  virtual void processSetting( const DtBoolSetting* setting);
343 
344 protected:
345 
347  boost::shared_ptr<DtAsyncJobMapEntry> myPathJobEntry;
348 
353 
354 private:
357 
360 };

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)