VR-Forces 4.1 Class Documentation
railMovementController.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2012 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
11 
12 #pragma once
13 
15 #include <matrix/vlVector.h>
16 #include <list>
17 #include "vrfutil/rwRailSegment.h"
21 
22 class DtRailSegment;
30 class DtBoolSetting;
31 
43 {
44 public:
48  DtVrfObject* owner,
49  DtSimManager* simManager,
50  DtComponentDescriptor* desc = 0,
51  DtReaderWriterRegistry* parentRegistry = 0);
52 
54  virtual ~DtRailMovementController();
55 
58  virtual DtString type() const;
59 
61  virtual bool init();
62 
65  virtual void preFirstTickInit();
66 
72  virtual void tick();
73 
74  virtual void clear();
75 
76  virtual bool tickWhileDestroyed() const;
77 
79  static void settingConsumerCallback( const DtSettingsObject* settingsObject, void* usr);
80 
84  static void moveAlongCallback(DtSimMessage * msg, void * usr);
85 
88  virtual void processMoveAlongTask(DtSimMessage * msg);
89 
91  virtual void registerTaskMsgCallbacks();
92 
93  static void setConvoyFollowCallback(DtSimMessage * msg, void * usrData);
94 
95  virtual void setCurrentMovementState(DtRailMovementState state);
96  virtual DtRailMovementState currentMovementState() const;
97 
102  virtual DtRailSegment * nextSegment();
103 
107  virtual DtRailSegment * peekNextSegment() const;
108 
109  virtual bool drivingOnLeftEnabled() const;
110 
112  virtual const int turnDirection() const;
113  virtual void setTurnDirection(const int turn);
114 
115  virtual bool turning() const;
116  virtual void setTurning(bool turn);
117 
119  virtual const int currentLane() const;
120  virtual void setCurrentLane(const int lane);
121 
123  virtual const int passingLane() const;
124  virtual void setPassingLane(const int lane);
125 
128  virtual void setFollowThreshold(const double);
129  virtual const double followThreshold() const;
130 
133  virtual const double followSpeedFactor() const;
134 
136  virtual DtRailSegmentList * pathList();
137  virtual const DtRailSegmentList * pathList() const;
138 
145  virtual bool setUpDestination(DtRailSegment * seg,bool incrementSegmentIndex = true,
146  bool useCurrentPos = false,DtVector pos = DtVector::zero());
147 
155  double getDistanceSqAlongSeg(const DtRailSegment* seg,
156  const DtVector & point);
157 
159  double getDistanceBehindConvoyTarget(DtVrfObject * convoyTgt);
160 
163  virtual double travelDistanceSq();
164 
168  virtual bool ifDrawDebugRoutes() const;
169  virtual void drawDebugSplineTurnRoute(const DtVector & ee,const DtVector & md,const DtVector & ex);
170  virtual void drawDebugSplineTurnRoute(DtRailSplineCalculator &spline);
171 
172  virtual DtVrfObject* getObjectFromObstruction(DtRailObstructionPtr &obs);
173 
177  static DtSimComponent * creator(const DtString& name,
178  DtVrfObject* owner,
179  DtSimManager* simManager,
180  DtComponentDescriptor* desc = 0,
181  DtReaderWriterRegistry* parentRegistry = 0);
182 
183 protected:
184 
187 
190  const DtRailMovementController& orig);
191 
194  const DtRailMovementController& orig);
195 
196  virtual bool createPSR();
197 
199  virtual void processSetting( const DtBoolSetting* setting);
200 
201  virtual void processSetConvoyFollowCallback(DtSimMessage * msg);
202 
205  virtual bool initializeCurrentState(DtRailMoveAlongTask * task);
206 
208  virtual bool setUpRoute(const DtRwTemplatedListPtr<DtRwRailSegment>& path);
209 
213  virtual int entryLanePosition(double heading,unsigned int numLanes);
214 
215  virtual void checkMovementState(const int passingLane);
216 
219  virtual void clearTask();
220 
221  virtual bool decideToGiveUpTask() const;
222 
225  virtual int findObstructionsAndAdjust(DtRailObstructionFinder* obsFinder,
226  const DtRailMovementDriver* railDriver, const DtVrfObject* entity, const DtVrfObject* convoyTgt,
227  const int drivingLane, const int passingLane, double &drivingSpeed);
228 
230  virtual void testObstructionFinder(const int drivingLane,const double drivingSpeed);
231 
232 
233 protected:
234 
237  //This points to the upcoming segment, not the one we are currently on.
240 
244 
248 
256 
258 
260 
262 
265  std::list<DtString> myTurnBugNameList;
266 };

Document ID: Generated on Tue Jan 29 18:21:16 EST 2013 from SVN revision 123193
Copyright © 2005-2013 VT MÄK Inc. All Rights Reserved (www.mak.com)