VR-Forces Development_Version Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
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 const char* 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  virtual void updateTaskVisualizations();
184 
185 protected:
186 
189 
192  const DtRailMovementController& orig);
193 
196  const DtRailMovementController& orig);
197 
198  virtual bool createPSR();
199 
201  virtual void processSetting( const DtBoolSetting* setting);
202 
203  virtual void processSetConvoyFollowCallback(DtSimMessage * msg);
204 
207  virtual bool initializeCurrentState(DtRailMoveAlongTask * task);
208 
210  virtual bool setUpRoute(const DtRwRailSegmentList& path);
211 
215  virtual int entryLanePosition(double heading,unsigned int numLanes);
216 
217  virtual void checkMovementState(const int passingLane);
218 
221  virtual void clearTask();
222 
223  virtual bool decideToGiveUpTask() const;
224 
227  virtual int findObstructionsAndAdjust(DtRailObstructionFinder* obsFinder,
228  const DtRailMovementDriver* railDriver, const DtVrfObject* entity, const DtVrfObject* convoyTgt,
229  const int drivingLane, const int passingLane, double &drivingSpeed);
230 
232  virtual void testObstructionFinder(const int drivingLane,const double drivingSpeed);
233 
235  virtual void clearPath();
236 
238  virtual bool findPointOnTerrain(const DtVector& worldLocation, DtVector& worldLocationOnTerrain);
239 
240 protected:
241 
244  //This points to the upcoming segment, not the one we are currently on.
247 
251 
255 
263 
265 
267 
269 
272  std::list<DtUUID> myTurnBugNameList;
273 
275  std::vector<DtVector> myTaskVisPath;
276 
278 };

Document ID: Generated on Tue Mar 8 22:13:38 EST 2016 from SVN revision 162938
Copyright © 2005-2015 VT MÄK. All Rights Reserved (www.mak.com)