VR-Forces 4.7 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties 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 <readerWriter/rwReal.h>
22 #include "terrainCS/coordSystem.h"
23 
24 #include <boost/shared_ptr.hpp>
25 
29 #define CONVOY_CONTROLLER_MAKE_FIRST_SEGMENT 0
30 
31 
32 class DtAsyncJobMapEntry;
33 class DtVrfObjectMessage;
34 class DtBoolSetting;
35 
54 {
55 public:
58  DtConvoyTaskController(const DtString& name,
59  DtVrfObject* owner,
60  DtSimManager* simManager,
61  DtComponentDescriptor* desc = 0,
62  DtReaderWriterRegistry* parentRegistry = 0);
63 
65  virtual ~DtConvoyTaskController();
66 
68  virtual bool init();
69 
72  virtual const char* type() const;
73 
75  virtual void clearTask();
76 
78  virtual void resetTask();
79 
81  virtual void registerTaskMsgCallbacks();
82 
87  static void convoyTaskCallback(DtSimMessage * msg, void * usr);
88 
92  static void taskCompleteReportCallback(const DtVrfObjectMessage* msg, void * usr);
93 
95  static void destinationChangedCallback(DtVrfObject* obj, void* usr);
96 
98  static void objectAboutToBeRemovedCallback(DtVrfObject* obj, void* usr);
99 
103  static DtSimComponent * creator(const DtString& name,
104  DtVrfObject* owner,
105  DtSimManager* simManager,
106  DtComponentDescriptor* desc = 0,
107  DtReaderWriterRegistry* parentRegistry = 0);
108 
110  virtual void preFirstTickInit();
111 
112  virtual void tick();
113 
114  virtual bool createPSR();
115 
116  static void settingConsumerCallback(const DtSettingsObject* settingsObject,
117  void* usr);
118 
119  virtual void updateTaskVisualizations();
120 
121 protected:
125  void onObjectAboutToBeRemoved(DtVrfObject* obj);
126 
130  virtual void onModifyVrfObject(DtVrfObject* obj);
131 
136  virtual void onConvoyTask(DtSimMessage * msg);
137 
140  virtual void onTaskComplete(const DtVrfObjectMessage* msg);
141 
146  virtual void sendTaskToSubordinate(const DtSimTask& task,
147  const DtUUID& subordinate);
148 
153  virtual void sendSetToSubordinate(DtSetDataRequest& request,
154  const DtUUID& subordinate);
155 
161  virtual bool setupTask(const DtVrfObject* aggregate, DtVrfObject* destination,
162  bool pathPlan);
163 
171  virtual DtVector findAssemblyPoint(const DtVrfObject* aggregate, const DtVector& destination,
172  bool haveRails, const Coordinate_System* coordSys);
173 
174 #if CONVOY_CONTROLLER_MAKE_FIRST_SEGMENT
175 
176 
177 
178 
179 
180 
181  virtual DtRwRailSegment* createEntrySegment(const DtVrfObject* entity,
182  const DtVector& assemblyPoint, const Coordinate_System* coordSys) const;
183 #endif
184 
191  virtual bool setupSubordinates(const DtVrfObject* aggregate, bool clearSubs, bool& leaderSet);
192 
197  virtual void setupLeadOnDistance(int numberOfEntities, float distanceBetween);
198 
204  virtual bool createDirectRailPath(const DtVrfObject* leadEntity, const DtVrfObject* destination);
205 
213  virtual bool areSeparationDistancesWithinRange(const DtConvoyPSR::DtRwSubordinateList& subordinates,
214  const float distance, const float tolerance, const Coordinate_System* coordSys);
215 
219  virtual void setLeaderSpeed(const float speed);
220 
224  virtual void resettingPhaseTick(bool retask = true);
225 
228  virtual void startingPhaseTick();
229 
233  virtual void assemblingPhaseTick();
234 
237  virtual void convoyingPhaseTick();
238 
242  virtual void finishingPhaseTick();
243 
250  virtual DtVector findIntersectionOfLineAndCircle(const DtVector& centerPoint,
251  const DtVector& endPoint, double radius, const Coordinate_System* coordSys) const;
252 
261  virtual bool taskEntityToMoveToAssemblyPt(const DtVrfObject* entity, const DtVector& assemblyPoint,
262  const Coordinate_System* coordSys);
263 
265  virtual bool getEntityPathToEntry(const DtVrfObject* entity, const DtVector& assemblyPoint,
266  const Coordinate_System* coordSys);
267 
277  virtual DtRailSegment* findClosestEntryRail(const DtVrfObject* aggregate,
278  const double& radius,
279  DtRailSegmentList* rails,
280  int& railNumber,
281  const Coordinate_System* coordSys) const;
282 
290  virtual bool isPointWithinRadius(const DtVector& center, double radius,
291  const DtVector& point, const Coordinate_System* coordSys) const;
292 
300  virtual bool findPointOnRailOutsideSphere(const DtVector& center, const double& radius,
301  const DtRailSegment* segment, DtVector& resultPoint, const Coordinate_System* coordSys) const;
302 
304  virtual void registerDestinationChangedCallback();
305 
307  virtual void unregisterDestinationChangedCallback();
308 
317  virtual bool updateConvoySubordinates(DtVrfObject* aggregate,
318  std::vector<DtUUID>& tempList,
319  bool recursive = false);
320 
322  virtual bool isEntityPartOfConvoy(const DtUUID& entity) const;
323 
324  virtual bool isEntityIndependentlyTasked(const DtVrfObject* entity) const;
325 
326  virtual void setConvoyFollowing();
327 
328  virtual void destroyedPhaseTick();
329 
331  virtual void sendClearTask(const DtUUID& recipientName,
332  const DtSimTaskMessageType& taskType);
333 
334  double maxSearchRadius(const DtPoint& start, const DtPoint& end);
335 
341  virtual bool startPathPlan(const DtVrfObject* leadEntity,
342  const DtVrfObject* destination);
343 
346  virtual bool pathPlanFinished();
347 
353  virtual DtVector groundClamp(const DtVector& point, DtGeodeticCoord& lastPoint) const;
354 
356  virtual void processSetting( const DtBoolSetting* setting);
357 
358 protected:
359 
361  boost::shared_ptr<DtAsyncJobMapEntry> myPathJobEntry;
362 
367 
368 private:
371 
374 };

Document ID: Generated on Fri Apr 26 21:53:14 EDT 2019 from SVN revision 197883
Copyright © 2005-2019 VT MAK. All Rights Reserved (www.mak.com)