![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2010 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: railPathController.h,v $ $Revision: 1.1 $ $State: Exp $ 00007 ** Created: 4/8/10 MEM 00008 *******************************************************************************/ 00009 00012 00015 00016 00017 #pragma once 00018 00019 #include "vrfobjcore/singleTaskControllerComponent.h" 00020 #include <matrix/vlVector.h> 00021 #include "vrftasks/setDataReq.h" 00022 #include "vrfutil/railSegment.h" 00023 00024 class DtRailPathPlanner; 00025 class DtPathMetric; 00026 class DtRailPathMetric; 00027 class DtRailPathControllerPSR; 00028 class DtRailPathControllerDescriptor; 00029 class DtSettingsObject; 00030 class DtBoolSetting; 00031 00065 #include "vrfmodel/vrfmodelDefines.h" 00066 class DT_DLL_vrfmodel DtRailPathController : public DtSingleTaskControllerComponent 00067 { 00068 private: 00070 DtRailPathController(); 00072 DtRailPathController(const DtRailPathController& orig); 00074 DtRailPathController& operator=(const DtRailPathController& orig); 00075 00076 public: 00077 00080 DtRailPathController(const DtString& name, 00081 DtVrfObject* owner, 00082 DtSimManager* simManager, 00083 DtComponentDescriptor* desc = NULL, 00084 DtReaderWriterRegistry* parentRegistry = NULL); 00085 00086 virtual ~DtRailPathController(); 00087 00089 virtual bool init(); 00090 00096 virtual bool createPSR(); 00097 00100 virtual DtString type() const; 00101 00103 virtual void registerTaskMsgCallbacks(); 00104 00106 static void settingConsumerCallback( const DtSettingsObject* settingsObject, void* usr); 00107 00108 static void plannedMoveToCallback(DtSimMessage * msg, void * usr); 00109 00110 virtual void processPlannedMoveToTask(DtSimMessage * msg); 00111 00114 static void taskCompleteReportCallback(DtSimMessage* msg, void* usr); 00115 00116 virtual void processTaskCompleteReport(DtSimMessage* msg); 00117 00118 static void destinationChangedCallback(DtVrfObject* obj, void* usrData); 00119 00124 virtual void processDestinationChanged(); 00125 00128 00129 static void objectAboutToBeRemovedCallback(DtVrfObject* obj, void* usr); 00130 virtual void processObjectAboutToBeRemoved(DtVrfObject* obj); 00132 00134 static void setLocationCallback(DtSimMessage* msg, void* usr); 00135 00140 virtual void processSetLocation(DtSimMessage* msg); 00141 00143 virtual void tick(); 00144 00145 protected: 00147 virtual void processSetting( const DtBoolSetting* setting); 00148 00149 virtual bool drivingOnLeftEnabled() const; 00150 00153 virtual void startPlannedMoveTo(const DtString& objectName); 00154 00157 virtual void startPlannedMoveTo(const DtVector& localDestination); 00158 00159 virtual void moveToRailEntry(DtRailSegmentList* rails,const DtVector& entryPt); 00160 00162 virtual void directMove(); 00163 00167 virtual void registerDestinationChangedCallback(); 00168 00171 virtual void unregisterDestinationChangedCallback(); 00172 00176 virtual DtVrfObject* publishDebugPath(); 00177 00180 virtual void removeDebugPath(); 00181 00183 virtual bool makePath(const DtVector& start, const DtVector& end); 00184 00187 virtual bool destinationValid(DtVector& localDest); 00188 00192 virtual void clearTask(); 00193 00195 virtual DtPathMetric* createPathMetric(); 00196 00197 public: 00198 00202 static DtSimComponent * creator(const DtString& name, 00203 DtVrfObject* owner, 00204 DtSimManager* simManager, 00205 DtComponentDescriptor* desc = 0, 00206 DtReaderWriterRegistry* parentRegistry = 0); 00207 00208 protected: 00211 DtRailPathPlanner* myPathPlanner; 00212 00215 DtRailPathControllerPSR* myProcessState; 00216 //Keep track of which subtask we're responsible for 00217 int mySubTaskId; 00218 00219 const DtRailPathControllerDescriptor* myPathDescriptor; 00220 bool myDestinationChangedCallbackRegistered; 00221 00223 DtVector myStartPoint; 00225 DtVector myEndPoint; 00226 DtRailPathMetric* myPathMetric; 00227 bool myDrivingOnLeftEnabled; 00228 bool myFirstTick; 00229 }; 00230