![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2010 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: railMovementControllerPSR.h,v $ $Revision: 1.1 $ $State: Exp $ 00007 ** Created: 4/28/10 MEM 00008 *******************************************************************************/ 00009 00012 00014 00015 #pragma once 00016 00017 #include "vrfobjcore/vrfobjcoreDefines.h" 00018 #include "vrfobjcore/processSR.h" 00019 #include "vrfutil/rwReal.h" 00020 #include "vrfutil/rwInt.h" 00021 #include "vrfutil/rwBoolean.h" 00022 #include "vrfutil/rwString.h" 00023 #include "vrfutil/rwVector.h" 00024 00025 00026 enum DtRailMovementState 00027 { 00028 DtNoMovement = 0, 00029 DtMovementAlongSegment, 00030 DtMovementApproachingTurn, 00031 DtMovementTurning, 00032 DtMovementApproachingSwitchLanes, 00033 DtMovementSwitchLanes, 00034 DtMovementPassing, 00035 DtMovementRerouteToNextSegment, 00036 DtMovementApproachingDestination, 00037 DtMovementStop 00038 }; 00041 class DT_DLL_vrfobjcore DtRailMovementControllerPSR : public DtVrfProcessStateRepository 00042 { 00043 public: 00044 00046 DtRailMovementControllerPSR(DtVrfObject* vrfObject, 00047 const DtString& rwName = DtString::nullString(), 00048 DtReaderWriterRegistry* parentRegistry = 0); 00049 00051 DtRailMovementControllerPSR(const DtRailMovementControllerPSR& orig, 00052 const DtString& rwName = DtString::nullString(), 00053 DtReaderWriterRegistry* parentRegistry = 0); 00054 00056 virtual ~DtRailMovementControllerPSR(); 00057 00059 DtRailMovementControllerPSR& operator=(const DtRailMovementControllerPSR& orig); 00060 00062 virtual DtVrfProcessStateRepository* clone( 00063 const DtString& rwName = DtString::nullString(), 00064 DtReaderWriterRegistry* parentRegistry = 0) const; 00065 00068 virtual DtString type() const; 00069 00070 virtual void setCurrentMovementState(DtRailMovementState state); 00071 virtual DtRailMovementState currentMovementState(); 00072 00083 virtual void setUseHighFidelityGroundClamping(bool yesOrNo); 00084 virtual bool useHighFidelityGroundClamping() const; 00086 00088 virtual void setSegmentIndex(); 00089 virtual const int segmentIndex() const; 00091 00094 virtual void setCurrentLanePosition(const int lane); 00095 virtual const int currentLanePosition() const; 00097 00101 virtual void setPassingLanePosition(const int lane); 00102 virtual const int passingLanePosition() const; 00104 00106 virtual void setTurning(bool turn); 00107 virtual bool turning() const; 00109 00111 virtual void setAllowPassing(bool canPass); 00112 virtual bool allowPassing() const; 00114 00116 virtual void setPassing(bool pass); 00117 virtual bool passing() const; 00119 00121 virtual void setAvoidingCollision(bool avoid); 00122 virtual bool avoidingCollisiong() const; 00124 00126 virtual void setNeedSwitchLanes(bool switchLane); 00127 virtual bool needSwitchLanes() const; 00129 00131 virtual void setConvoyTargetSpecified(bool following); 00132 virtual bool convoyTargetSpecified() const; 00134 00136 virtual void setConvoyFollowTargetName(const DtString & name); 00137 virtual const DtString & convoyFollowTargetName() const; 00139 00141 virtual void setConvoyFollowDistance(const double dist); 00142 virtual const double convoyFollowDistance() const; 00144 00145 void setConvoyUseCatchUpSpeed(const bool useCatchUpSpeed); 00146 const bool convoyUseCatchUpSpeed() const; 00147 00148 00150 virtual const double maxFollowThreshold() const; 00151 virtual void setMaxFollowThreshold(const double threshold); 00153 00154 00155 public: 00156 00158 static DtVrfProcessStateRepository* creator (const DtString& rwName, 00159 DtVrfObject* vrfObject, DtReaderWriterRegistry* parentRegistry); 00160 00161 protected: 00162 00163 DtRwInt myCurrentMovementState; 00164 00167 DtRwBoolean myUseHighFidelityGroundClamping; 00168 00171 DtRwInt mySegmentIndex; 00173 00176 DtRwInt myCurrentLanePosition; 00178 00181 DtRwInt myPassingLanePosition; 00183 00186 DtRwBoolean myTurning; 00188 00191 DtRwBoolean myAllowPassing; 00193 00196 DtRwBoolean myPassing; 00198 00201 DtRwBoolean myAvoidingCollision; 00203 00207 DtRwBoolean myNeedToSwitchLanes; 00209 00212 DtRwBoolean myConvoyTargetSpecified; 00214 00217 DtRwString myConvoyFollowTargetName; 00219 00222 DtRwReal myConvoyFollowDistance; 00223 00224 DtRwBoolean myConvoyUseCatchUpSpeed; 00226 00232 DtRwReal myMaxFollowThreshold; 00234 }; 00235 00236