VR-Forces 4.6.1 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
roadMovementController.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2016 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
9 
10 
11 #pragma once
12 
15 #include <matrix/vlVector.h>
16 #include <list>
17 #include "vrfutil/rwRailSegment.h"
21 #include "vrfmodel/roadSegment.h"
22 
23 class DtRailSegment;
33 class DtRoadConstants;
34 class DtRoadDrivingLogic;
35 class DtBoolSetting;
36 
37 
43 #define DT_RAIL_SEGMENT_MERGE_ERROR_BOUND 0.3
44 
45 
47 
71 {
72 public:
76  DtVrfObject* owner,
77  DtSimManager* simManager,
78  DtComponentDescriptor* desc = 0,
79  DtReaderWriterRegistry* parentRegistry = 0);
80 
82  virtual ~DtRoadMovementController();
83 
86 
89  virtual const char* type() const;
90 
95  virtual bool init();
96 
99  virtual void preFirstTickInit();
100 
106  virtual void tick();
107 
108  virtual void clear();
109 
112  virtual bool tickWhileDestroyed() const;
113 
115  virtual void registerTaskMsgCallbacks();
117 
121  static DtSimComponent * creator(const DtString& name,
122  DtVrfObject* owner,
123  DtSimManager* simManager,
124  DtComponentDescriptor* desc = 0,
125  DtReaderWriterRegistry* parentRegistry = 0);
126 
129 
133  static void moveAlongCallback(DtSimMessage * msg, void * usr);
134 
135  static void setConvoyFollowCallback(DtSimMessage * msg, void * usrData);
136 
138  static void settingsObjectConsumerCallback(const DtSettingsObject* settingsObject, void* usr);
139 
141 
142  //-------------------------------------------------------------------
147 
148  virtual const DtRoadConstants* roadConstants(){ return myRoadConstants; }
149 
153  virtual void setRoadConstants(const DtRoadConstants* rc)
154  {
155  myRoadConstants = rc;
156  }
157 
158  virtual DtRoadPathFunctions* pathFunctions(){ return myRoadPathFunctions; }
159  virtual void setPathFunctions(DtRoadPathFunctions* pf)
160  {
161  myRoadPathFunctions = pf;
162  }
163 
164  virtual DtRoadDrivingLogic* drivingLogic(){ return myDrivingLogic; }
165  virtual void setDrivingLogic(DtRoadDrivingLogic* dl)
166  {
167  myDrivingLogic = dl;
168  }
169 
170  virtual DtRoadObstructionFinder* obstructionFinder()
171  {
172  return myRoadObstructionFinder;
173  }
175  virtual void setObstructionFinder(DtRoadObstructionFinder* of)
176  {
177  myRoadObstructionFinder = of;
178  }
179 
180  virtual DtRoadMovementUpdater* movementUpdater(){ return myRoadUpdater; }
181 
184  virtual void setMovementUpdater(DtRoadMovementUpdater* u)
185  {
186  myRoadUpdater = u;
187  }
189  //------------------------------------------------------------------
190 
193 
195  { return myProcessState; }
196  virtual const DtMovingObjectParameters* objectParameters()
197  { return myObjectParams; }
198  virtual const DtRoadMovementDescriptor* descriptor() const;
200 
203  virtual bool drivingOnLeftEnabled() const;
204 
205  virtual void setCurrentMovementState(DtRailMovementState state);
206  virtual DtRailMovementState currentMovementState() const;
207 
208  virtual DtRoadSegment* currentRoadSegment()const;
209  virtual void setCurrentRoadSegment(DtRoadSegment* seg);
210 
212  virtual double frontOffset() const;
213  virtual void setFrontOffset(const double o);
214 
218  virtual double rearAxleOffset() const;
219  virtual void setRearAxleOffset(const double o);
220 
222  virtual DtRailSegmentList * pathList();
223  virtual const DtRailSegmentList * pathList() const;
224 
227  virtual DtRoadSegmentPart roadSegmentPart()const;
228  virtual void setRoadSegmentPart(const DtRoadSegmentPart s);
230 
233 
239  virtual void updateTaskVisualizations();
240 
243  virtual bool findPointOnTerrain(const DtVector& worldLocation, DtVector& worldLocationOnTerrain);
244 
246  virtual std::vector<DtVector>& debugPoints()
247  {
248  return myObstacleLocations;
249  }
252  virtual std::vector<std::vector<DtVector> >& debugBoxes()
253  {
254  return myObstacleBoxes;
255  }
257 
260  virtual const double followSpeedFactor() const;
261 
262  double getDistanceBehindConvoyTarget(DtVrfObject * convoyTgt);
263 
264  virtual DtVrfObject* getObjectFromObstruction(DtRailObstructionPtr &obs);
266 
268 
269 
270 protected:
271 
274 
277  const DtRoadMovementController& orig);
278 
281  const DtRoadMovementController& orig);
282 
287  virtual bool createPSR();
288 
290  virtual bool createUpdater();
291  virtual bool createPathFunctions();
292 
294  virtual bool createRoadObstructionFinder();
295 
296  virtual bool createDrivingLogic();
298 
301 
303  virtual void processSetting( const DtBoolSetting* setting);
304 
305  virtual void processSetConvoyFollowCallback(DtSimMessage * msg);
306 
309  virtual void processMoveAlongTask(DtSimMessage * msg);
311 
315  virtual bool initializeCurrentState(DtRailMoveAlongTask * task);
316 
318  virtual bool setUpRoute(const DtRwRailSegmentList& path);
319 
323  virtual int entryLanePosition(double heading,unsigned int numLanes);
324 
327  virtual void clearTask();
328 
330  virtual void clearPath();
331 
335  virtual void initiateLaneChange(const int newLaneNum);
336 
339  virtual void checkPathEnd();
340 
341 protected:
342 
347 
352 
357 
363 
366 
370 
377 
384 
389 
394 
405 
409 
414  std::vector<DtVector> myTaskVisPath;
415 
419  std::vector<DtVector> myCurrentTaskVisPath;
420 
423  std::map<DtRoadSegment*, unsigned> myRoadSegmentTaskVisMap;
424 
427 
433 
436 
438  std::vector<DtVector> myOriginalPath;
439 
441 
446  std::vector<DtVector> myObstacleLocations;
447 
450 
454  std::vector<std::vector<DtVector> > myObstacleBoxes;
455 
459 
461 };

Document ID: Generated on Wed Jul 25 16:57:45 EDT 2018 from SVN revision 190790
Copyright © 2005-2018 VT MÄK. All Rights Reserved (www.mak.com)